Java求职招聘网站开发实践
一、项目介绍
本文将介绍如何使用Java技术栈开发一个求职招聘网站。该网站主要实现求职者和招聘方的双向选择功能,包含用户管理、职位发布、简历投递等核心功能。
二、技术选型
- 后端框架:Spring Boot 2.7.0
- 数据库:MySQL 8.0
- 前端框架:Vue.js 3
- 权限管理:Spring Security
- ORM框架:MyBatis-Plus
- 缓存:Redis
- 搜索引擎:Elasticsearch
三、核心功能模块
1. 用户管理模块
@Entity
@Table(name = "user")
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String username;private String password;private Integer userType; // 0-求职者,1-招聘方private Date createTime;// getter和setter方法
}
2. 职位管理模块
@RestController
@RequestMapping("/api/job")
public class JobController {@Autowiredprivate JobService jobService;@PostMapping("/publish")public Result publishJob(@RequestBody JobDTO jobDTO) {return jobService.publishJob(jobDTO);}@GetMapping("/list")public PageResult<JobVO> listJobs(JobQueryParam param) {return jobService.listJobs(param);}
}
3. 简历投递模块
@Service
public class ResumeServiceImpl implements ResumeService {@Autowiredprivate ResumeMapper resumeMapper;@Overridepublic Result submitResume(ResumeDTO resumeDTO) {// 校验简历信息validateResume(resumeDTO);// 保存简历Resume resume = convertToEntity(resumeDTO);resumeMapper.insert(resume);// 发送简历投递通知sendNotification(resume);return Result.success();}
}
四、数据库设计
主要数据表
- 用户表(user)
- 职位表(job)
- 简历表(resume)
- 投递记录表(delivery_record)
CREATE TABLE `job` (`id` bigint NOT NULL AUTO_INCREMENT,`title` varchar(100) NOT NULL COMMENT '职位标题',`company_id` bigint NOT NULL COMMENT '公司ID',`salary_range` varchar(50) COMMENT '薪资范围',`description` text COMMENT '职位描述',`requirements` text COMMENT '任职要求',`status` tinyint DEFAULT 1 COMMENT '状态:0-关闭 1-开启',`create_time` datetime DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
五、关键技术实现
1. 职位搜索功能
@Service
public class JobSearchService {@Autowiredprivate ElasticsearchClient esClient;public List<JobVO> searchJobs(String keyword) {SearchRequest request = new SearchRequest.Builder().index("jobs").query(q -> q.multiMatch(m -> m.fields("title", "description", "requirements").query(keyword))).build();return parseSearchResult(esClient.search(request));}
}
2. 简历投递流程
@Service
public class DeliveryService {@Transactionalpublic Result deliverResume(DeliveryDTO dto) {// 检查是否重复投递if(checkDuplicate(dto)) {return Result.fail("请勿重复投递");}// 保存投递记录DeliveryRecord record = new DeliveryRecord();record.setJobId(dto.getJobId());record.setResumeId(dto.getResumeId());record.setStatus(DeliveryStatus.PENDING.getCode());deliveryMapper.insert(record);// 异步发送通知notificationService.sendDeliveryNotification(record);return Result.success();}
}
六、性能优化
- 使用Redis缓存热门职位信息
- 使用Elasticsearch优化职位搜索
- 实现分布式Session管理
- 引入消息队列处理异步任务
七、安全性考虑
- 实现基于JWT的身份认证
- 防止SQL注入攻击
- XSS防护
- 敏感数据加密
八、部署方案
- 使用Docker容器化部署
- Nginx反向代理
- 实现服务器集群
- 配置CDN加速
总结
本文介绍了一个求职招聘网站的主要开发内容,包括技术选型、核心功能实现、数据库设计等方面。在实际开发中,还需要考虑更多的细节问题,如并发处理、数据安全、用户体验等。希望本文能为想要开发类似系统的开发者提供参考。
附:简历管理功能详细设计
一、简历数据模型设计
1. 简历基本信息表
CREATE TABLE `resume` (`id` bigint NOT NULL AUTO_INCREMENT,`user_id` bigint NOT NULL COMMENT '用户ID',`name` varchar(50) NOT NULL COMMENT '姓名',`gender` tinyint COMMENT '性别:0-女 1-男',`birth_date` date COMMENT '出生日期',`phone` varchar(20) NOT NULL COMMENT '手机号',`email` varchar(100) COMMENT '邮箱',`highest_education` varchar(20) COMMENT '最高学历',`work_years` int COMMENT '工作年限',`current_status` tinyint COMMENT '当前状态:0-在职 1-离职 2-应届生',`job_intention` varchar(100) COMMENT '求职意向',`expected_salary` varchar(50) COMMENT '期望薪资',`self_evaluation` text COMMENT '自我评价',`status` tinyint DEFAULT 1 COMMENT '状态:0-隐藏 1-公开',`create_time` datetime DEFAULT CURRENT_TIMESTAMP,`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`),KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2. 教育经历表
CREATE TABLE `resume_education` (`id` bigint NOT NULL AUTO_INCREMENT,`resume_id` bigint NOT NULL COMMENT '简历ID',`school_name` varchar(100) NOT NULL COMMENT '学校名称',`major` varchar(100) COMMENT '专业',`degree` varchar(50) COMMENT '学位',`start_date` date COMMENT '开始时间',`end_date` date COMMENT '结束时间',`description` text COMMENT '在校经历',PRIMARY KEY (`id`),KEY `idx_resume_id` (`resume_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3. 工作经历表
CREATE TABLE `resume_work_exp` (`id` bigint NOT NULL AUTO_INCREMENT,`resume_id` bigint NOT NULL COMMENT '简历ID',`company_name` varchar(100) NOT NULL COMMENT '公司名称',`position` varchar(100) COMMENT '职位',`start_date` date COMMENT '开始时间',`end_date` date COMMENT '结束时间',`work_description` text COMMENT '工作描述',PRIMARY KEY (`id`),KEY `idx_resume_id` (`resume_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
二、核心功能实现
1. 简历实体类
@Data
@Entity
@Table(name = "resume")
public class Resume {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private Long userId;private String name;private Integer gender;private LocalDate birthDate;private String phone;private String email;private String highestEducation;private Integer workYears;private Integer currentStatus;private String jobIntention;private String expectedSalary;private String selfEvaluation;private Integer status;@OneToMany(mappedBy = "resume", cascade = CascadeType.ALL)private List<ResumeEducation> educationList;@OneToMany(mappedBy = "resume", cascade = CascadeType.ALL)private List<ResumeWorkExp> workExpList;
}
2. 简历服务接口
public interface ResumeService {// 创建/更新简历Result<Long> saveResume(ResumeDTO resumeDTO);// 获取简历详情ResumeVO getResumeDetail(Long resumeId);// 删除简历Result deleteResume(Long resumeId);// 更新简历状态Result updateResumeStatus(Long resumeId, Integer status);// 获取用户的简历列表List<ResumeVO> getUserResumes(Long userId);// 导出简历PDFbyte[] exportResumePDF(Long resumeId);
}
3. 简历服务实现
@Service
@Slf4j
public class ResumeServiceImpl implements ResumeService {@Autowiredprivate ResumeMapper resumeMapper;@Autowiredprivate ResumeEducationMapper educationMapper;@Autowiredprivate ResumeWorkExpMapper workExpMapper;@Override@Transactionalpublic Result<Long> saveResume(ResumeDTO resumeDTO) {try {// 保存基本信息Resume resume = convertToEntity(resumeDTO);if (resume.getId() == null) {resumeMapper.insert(resume);} else {resumeMapper.updateById(resume);// 删除旧的教育和工作经历educationMapper.deleteByResumeId(resume.getId());workExpMapper.deleteByResumeId(resume.getId());}// 保存教育经历saveEducationList(resumeDTO.getEducationList(), resume.getId());// 保存工作经历saveWorkExpList(resumeDTO.getWorkExpList(), resume.getId());return Result.success(resume.getId());} catch (Exception e) {log.error("保存简历失败", e);throw new BusinessException("保存简历失败");}}@Overridepublic ResumeVO getResumeDetail(Long resumeId) {Resume resume = resumeMapper.selectById(resumeId);if (resume == null) {throw new BusinessException("简历不存在");}// 查询教育经历List<ResumeEducation> educationList = educationMapper.selectByResumeId(resumeId);// 查询工作经历List<ResumeWorkExp> workExpList = workExpMapper.selectByResumeId(resumeId);return buildResumeVO(resume, educationList, workExpList);}
}
4. 简历导出功能
@Service
public class ResumeExportService {@Autowiredprivate ResumeService resumeService;public byte[] exportPDF(Long resumeId) {// 获取简历数据ResumeVO resume = resumeService.getResumeDetail(resumeId);// 使用iText或其他PDF库生成PDFDocument document = new Document();ByteArrayOutputStream baos = new ByteArrayOutputStream();PdfWriter.getInstance(document, baos);document.open();// 添加简历内容addBasicInfo(document, resume);addEducation(document, resume.getEducationList());addWorkExp(document, resume.getWorkExpList());document.close();return baos.toByteArray();}private void addBasicInfo(Document document, ResumeVO resume) {// 添加基本信息到PDF}
}
三、简历附件功能
1. 附件表设计
CREATE TABLE `resume_attachment` (`id` bigint NOT NULL AUTO_INCREMENT,`resume_id` bigint NOT NULL COMMENT '简历ID',`file_name` varchar(200) NOT NULL COMMENT '文件名',`file_path` varchar(500) NOT NULL COMMENT '文件路径',`file_size` bigint COMMENT '文件大小(字节)',`file_type` varchar(50) COMMENT '文件类型',`upload_time` datetime DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`id`),KEY `idx_resume_id` (`resume_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2. 附件上传服务
@Service
public class ResumeAttachmentService {@Value("${resume.attachment.path}")private String attachmentPath;@Autowiredprivate ResumeAttachmentMapper attachmentMapper;public Result uploadAttachment(MultipartFile file, Long resumeId) {// 校验文件大小和类型validateFile(file);// 生成文件存储路径String fileName = generateFileName(file);String filePath = attachmentPath + "/" + fileName;// 保存文件try {file.transferTo(new File(filePath));// 保存附件记录ResumeAttachment attachment = new ResumeAttachment();attachment.setResumeId(resumeId);attachment.setFileName(file.getOriginalFilename());attachment.setFilePath(filePath);attachment.setFileSize(file.getSize());attachment.setFileType(file.getContentType());attachmentMapper.insert(attachment);return Result.success();} catch (IOException e) {log.error("上传附件失败", e);throw new BusinessException("上传附件失败");}}
}
四、简历模板功能
1. 模板表设计
CREATE TABLE `resume_template` (`id` bigint NOT NULL AUTO_INCREMENT,`template_name` varchar(100) NOT NULL COMMENT '模板名称',`template_type` tinyint COMMENT '模板类型:0-系统模板 1-用户模板',`template_content` text COMMENT '模板内容(JSON格式)',`preview_image` varchar(500) COMMENT '预览图',`status` tinyint DEFAULT 1 COMMENT '状态:0-禁用 1-启用',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2. 模板应用服务
@Service
public class ResumeTemplateService {@Autowiredprivate ResumeTemplateMapper templateMapper;@Autowiredprivate ResumeService resumeService;public Result applyTemplate(Long resumeId, Long templateId) {// 获取模板ResumeTemplate template = templateMapper.selectById(templateId);if (template == null || template.getStatus() != 1) {throw new BusinessException("模板不存在或已禁用");}// 获取当前简历ResumeVO currentResume = resumeService.getResumeDetail(resumeId);// 应用模板样式ResumeDTO updatedResume = applyTemplateStyle(currentResume, template);// 保存更新后的简历return resumeService.saveResume(updatedResume);}
}
五、简历隐私设置
1. 隐私配置表
CREATE TABLE `resume_privacy` (`resume_id` bigint NOT NULL COMMENT '简历ID',`phone_visible` tinyint DEFAULT 1 COMMENT '手机号可见:0-否 1-是',`email_visible` tinyint DEFAULT 1 COMMENT '邮箱可见:0-否 1-是',`birth_date_visible` tinyint DEFAULT 1 COMMENT '生日可见:0-否 1-是',`current_salary_visible` tinyint DEFAULT 0 COMMENT '当前薪资可见:0-否 1-是',PRIMARY KEY (`resume_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2. 隐私控制服务
@Service
public class ResumePrivacyService {@Autowiredprivate ResumePrivacyMapper privacyMapper;public ResumeVO applyPrivacyControl(ResumeVO resume, Long viewerId) {// 获取隐私设置ResumePrivacy privacy = privacyMapper.selectByResumeId(resume.getId());// 如果是简历所有者,显示完整信息if (resume.getUserId().equals(viewerId)) {return resume;}// 根据隐私设置处理敏感信息if (privacy != null) {if (!privacy.getPhoneVisible()) {resume.setPhone(maskPhoneNumber(resume.getPhone()));}if (!privacy.getEmailVisible()) {resume.setEmail(maskEmail(resume.getEmail()));}// ... 处理其他隐私字段}return resume;}private String maskPhoneNumber(String phone) {if (StringUtils.isEmpty(phone)) return phone;return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");}
}
六、简历推荐功能
@Service
public class ResumeRecommendService {@Autowiredprivate ElasticsearchClient esClient;public List<JobVO> recommendJobs(Long resumeId) {// 获取简历关键信息ResumeVO resume = resumeService.getResumeDetail(resumeId);// 构建搜索条件SearchRequest request = new SearchRequest.Builder().index("jobs").query(q -> q.bool(b -> b.should(s -> s.match(m -> m.field("job_requirements").query(resume.getJobIntention()))).should(s -> s.match(m -> m.field("required_education").query(resume.getHighestEducation()))).should(s -> s.range(r -> r.field("required_work_years").lte(resume.getWorkYears()))))).sort(s -> s.field(f -> f.field("_score").order(SortOrder.Desc))).size(10).build();return parseSearchResult(esClient.search(request));}
}
以上是简历管理功能的详细设计,包含了基本的CRUD操作、简历导出、附件管理、模板功能、隐私控制以及推荐功能等核心模块。在实际开发中,还需要注意:
- 数据验证和安全性控制
- 文件上传的安全处理
- 大文件处理优化
- 简历内容的版本控制
- 简历查看记录追踪
- 敏感信息加密存储
- 简历导出格式的多样化支持
相关文章:
Java求职招聘网站开发实践
一、项目介绍 本文将介绍如何使用Java技术栈开发一个求职招聘网站。该网站主要实现求职者和招聘方的双向选择功能,包含用户管理、职位发布、简历投递等核心功能。 二、技术选型 后端框架:Spring Boot 2.7.0数据库:MySQL 8.0前端框架&#…...
一文详细了解websocket应用以及连接断开的解决方案
文章目录 websocketvite 热启动探索websocket -心跳websocket 事件监听应用过程中问题总结 websocket Websocket简介 定义和工作原理 Websocket是一种在单个TCP连接上进行全双工通信的协议。与传统的HTTP请求 - 响应模式不同,它允许服务器主动向客户端推送数据。例…...
如何做含有identify抓信号的fpga版本(image或者Bit)
在数字的FPGA debug中除了ila就是identify了,identify是synopsys公司的RTL级的调试工具。要用起来idetify,第一步就是要做出含有identify的信号的FPGA版本,quartus的是image,Ximlinx的是Bit或者Bin文件。具体有以下几步࿱…...
AIGC实践-使用Amazon Bedrock的SDXL模型进行文生图
一、Bedrock 简介 Amazon Bedrock 是 Amazon Web Services (AWS) 提供的一种生成式 AI 服务。通过 Bedrock,用户可以方便地使用多种基础模型(Foundation Models),包括 OpenAI 的 GPT、Anthropic 的 Claude 等。这些模型可以用于各…...
【源码】Sharding-JDBC源码分析之SQL中分片键路由ShardingSQLRouter的原理
Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 4、SpringBoot集成Sharding-JDBC-5.3.0分库分表 5、SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表 6、【…...
初学 flutter 环境变量配置
一、jdk(jdk11) 1)配置环境变量 新增:JAVA_HOMEC:\Program Files\Java\jdk-11 //你的jdk目录 在path新增:%JAVA_HOME%\bin2)验证是否配置成功(cmd运行命令) java java -version …...
蓝牙 AVRCP 协议详解
前言 随着无线音频设备的普及,蓝牙已经成为智能设备间通信的主流方式之一。除了传输音频流的 A2DP 协议外,AVRCP(Audio/Video Remote Control Profile,音频/视频远程控制协议)为用户提供了对蓝牙音频设备的控制能力&am…...
在 Ubuntu 18.04 上安装 MySQL 5.7和MySQL 8
1.Ubuntu安装MySQL 5.72.Ubuntu安装MySQL 8 在 Ubuntu 18.04 上安装 MySQL 5.7,可以按照以下步骤操作: 1. 更新系统包列表 运行以下命令以确保系统包列表是最新的: sudo apt update2. 检查默认 MySQL 版本 Ubuntu 18.04 默认提供 MySQL 5.…...
第4章 Spring Boot自动配置
自动配置概述 SpringBoot的两大核心 Spring Boot 框架的两大核心特性可以概括为“启动器”(Starter)和“自动配置”(Auto-configuration)。 启动器(Starter): Spring Boot 提供了一系列的 Star…...
显存:存储,GPU:计算;Pipeline Parallelism(管道并行)
目录 显存:存储,GPU:计算 流水线切分策略:(数据并并,多头并行,单头MLP切片) 存储(显存)和计算(GPU)负载不均衡的问题 1,2,3,4,5指的计算任务(数据切分) 大方块代表GPU计算 黄色代表显存 解决办法:重计算和流水线切分策略 重计算策略: 流水线切分策略:…...
费曼路径积分简单示例
费曼路径积分简单示例 费曼路径积分是量子力学中的一种计算方法,它通过对所有可能路径的贡献进行积分,来计算粒子从一个点到另一个点的概率幅。与经典力学不同,经典力学中粒子沿着使作用量最小的路径运动,而在量子力学中…...
40分钟学 Go 语言高并发:【实战】并发安全的配置管理器(功能扩展)
【实战】并发安全的配置管理器(功能扩展) 一、扩展思考 分布式配置中心 实现配置的集中管理支持多节点配置同步实现配置的版本一致性 配置加密 敏感配置的加密存储配置的安全传输访问权限控制 配置格式支持 支持YAML、TOML等多种格式配置格式自动…...
麒麟安全增强-kysec
DAC: 自主访问控制是linux下默认的接入控制机制,通过对资源读、写、执行操作,保证系统安全 MAC:安全接入控制机制,由操作系统约束的访问控制,默认情况下,MAC不允许任何访问,用户可以自定义策略规则制定允许什么 ,从而避免很多攻击。 MAC强制访问控制常见的实现方式:…...
shell编程(8)
目录 一、until循环 示例 until 和 while 的区别 二、case语句 基本语法 示例 1. 简单的 case 语句 2. 使用通配符 3. 处理多个匹配 case 和 if 的比较 case 语句: if 语句: 三、基本函数 基本函数定义和调用 1. 定义一个简单的函数 2. …...
高级java每日一道面试题-2024年11月24日-JVM篇-说说对象分配规则?
如果有遗漏,评论区告诉我进行补充 面试官: 说说对象分配规则? 我回答: 在Java高级面试中,对象分配规则是一个核心考点,它涉及到JVM的内存管理、对象的创建和初始化等多个方面。以下是对Java对象分配规则的详细解释: 一、内存分配区域 J…...
进程间通信5:信号
引入 我们之前学习了信号量,信号量和信号可不是一个东西,不能混淆。 信号是什么以及一些基础概念 信号是一种让进程给其他进程发送异步消息的方式 信号是随时产生的,无法预测信号可以临时保存下来,之后再处理信号是异步发送的…...
性能测试及调优
一、性能测试介绍 1、什么叫做性能测试? (1)通过某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试 (2)指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指…...
实战基于LangChain和ChatGLM私有化部署聊天机器人
本文主要阐述了如何使用第二代6B模型进行对话训练,以及如何通过微调来提高大模型的性能。文中提到了在8501端口上启动第二代6B模型,并使用极简模板进行请求。与第一代模型相比,第二代6B模型具有更强的对话能力,并且可以通过微调来…...
利用adb工具安装卸载安卓平板(手机)软件
参考链接: 1、ADB 操作命令详解及用法大全 2、全面掌握Android调试工具箱:ADB与实用程序实战 平时使用小米手机没有感觉,miui系统做的确实好。最近买了个水货学习系统平板(主要看重硬件配置,性价比很高,但…...
基于docker进行任意项目灵活发布
引言 不管是java还是python程序等,使用docker发布的优势有以下几点: 易于维护。直接docker命令进行管理,如docker stop、docker start等,快速方便无需各种进程查询关闭。环境隔离。项目代码任何依赖或设置都可以基本独立&#x…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
