实习公司内部OA系统项目经验
文章目录
- 前言
- 一、请介绍一下你实习所做的项目?
- 二、你觉得你项目的难点有哪些?
- 三、你这个考勤打卡功能可以详细介绍一下吗
- 1. 功能需求分析
- 2. 系统设计与架构
- 3. 数据库设计
- 4. 具体实现
- 5. 测试与优化
- 四、Redis缓存技术用到哪里了请详细介绍一下
- 1.应用场景
- 2.缓存设计
- 3.具体实现
- 4.测试与优化
- 五、能说一下你的索引是怎么做的吗?
- 1.数据库表设计
- 2.索引设计
- 2.1 打卡记录表的索引设计
- 2.2 请假记录表的索引设计
- 2.3 考勤状态表的索引设计
- 3. 索引优化策略
- 3.1 索引覆盖
- 3.2 索引选择性
- 3.3 索引维护
- 4. 索引的实际应用
- 4.1 查询特定员工的打卡记录
- 4.2 查询特定员工的请假记录
- 4.3 查询特定员工的考勤状态
- 六、薪资计算模块需要根据员工的基本工资、考勤记录、绩效评估等多种因素进行复杂的计算,如何确保计算的准确性和效率。
- 1. 模块设计
- 1.1 基本工资计算模块
- 1.2 考勤影响计算模块
- 1.3 绩效评估计算模块
- 1.4 综合薪资计算模块
- 2. 数据获取与预处理
- 3. 计算逻辑
- 3.1 基本工资计算
- 3.2 考勤影响计算
- 3.3 绩效评估计算
- 3.4 综合薪资计算
- 4.优化策略
- 4.1 缓存
- 4.2 并行计算
- 七、还可以介绍一下人事管理的一些其他功能吗?
- 1. 招聘管理
- 1.1 职位发布与管理
- 1.2 候选人管理
- 1.3 面试安排与反馈
- 2. 员工入职管理
- 2.1 入职手续办理
- 2.2 培训与指导
- 3. 员工信息管理
- 3.1 员工档案管理
- 4. 考勤管理
- 4.1 打卡与请假管理
- 4.2 考勤统计与分析
- 5. 绩效管理
- 5.1 绩效评估
- 5.2 目标设定与跟踪
- 6. 培训与发展
- 6.1 培训计划与课程
- 6.2 职业发展规划
- 7. 员工关系管理
- 7.1 员工满意度调查
- 7.2 员工活动与福利
- 8. 离职管理
- 8.1 离职申请与审批
- 8.2 离职面谈与反馈
- 9. 报表与分析
- 9.1 各类报表生成
- 八、这个项目中哪些地方用到消息队列(MQ系列)?
- 1. 招聘管理
- 1.1 面试通知
- 2. 员工入职管理
- 2.1 入职手续提醒
- 3. 考勤管理
- 3.1 考勤异常提醒
- 4. 绩效管理
- 4.1 绩效评估结果通知
- 5. 培训与发展
- 5.1 培训课程通知
- 6. 员工关系管理
- 6.1 员工活动通知
- 7. 离职管理
- 7.1 离职手续办理通知
- 8. 报表与分析
- 8.1 数据同步与处理
- 消息队列的实现
- 发送消息
- 接收消息
- 十、OA系统你还负责过哪些功能?
- 1. 文档管理
- 1.1 文档存储与分类
- 1.2 文档权限控制
- 2. 流程管理
- 2.1 流程定义与设计
- 3. 会议管理
- 3.1 会议室预定
- 3.2 会议通知与提醒
- 4. 项目管理
- 4.1 项目计划与任务分配
- 4.2 项目进度跟踪与报告
- 5. 通讯管理
- 5.1 即时消息与群聊
- 5.2 邮件与公告
- 6. 资产管理
- 6.1 资产登记与维护
- 6.2 资产分配与调拨
- 7. 知识管理
前言
关于自己实习的项目也得能输出个一二三来,所以今天围绕OA的人事管理模块进行介绍。
一、请介绍一下你实习所做的项目?
在我公司实习期间,我参与了公司的内部OA系统开发,具体负责的是人事管理模块。这个模块的主要目的是为了提高公司人事管理的效率,减少人工操作的错误,并且能够更好地管理员工的信息,招聘管理的模块也有涉及。在这个项目中,我主要负责了 1.参与需求的分析,因为公司是以敏捷开发为主,每天早上参与小组例会,明确需求和任务,完成今天的开发。2. 参与系统设计 3. 完成功能开发 4.完成接口测试,基本上是属于自己的接口自己测试 5.完成接口文档的编写。通过这个项目的实践,我不仅增强了自己的编程能力和项目管理能力,还学会了如何与团队成员有效沟通和协作。同时,我对企业人事管理的流程有了更深入的了解,这对我未来的职业发展也有很大的帮助。
二、你觉得你项目的难点有哪些?
-
需求分析和变更:
- 难点:需求分析是项目初期的一个重要环节。人事管理涉及到多种复杂的业务逻辑,包括员工信息管理、考勤管理、薪资计算、绩效评估等。每个功能模块都有其特定的需求和细节。此外,需求在开发过程中可能会发生变更,需要及时调整和响应。
- 应对策略:为了准确理解需求,我与人事部门进行了多次深入的沟通,组织了需求确认会议,确保每一个需求点都被准确记录和理解。我们采用了敏捷开发方法,每两周进行一次迭代,定期与人事部门进行需求评审和反馈,确保项目进展符合他们的期望。举个例子,在考勤管理模块中,最初的需求是简单的打卡记录,但在沟通过程中,我们发现需要增加迟到、早退、请假等多种状态的记录和处理。通过频繁的沟通和需求确认,我们及时调整了开发计划,确保功能的完整性。
-
系统设计和架构:
- 设计一个高效、可扩展的系统架构是另一个挑战。人事管理模块需要处理大量的数据,并且需要保证系统的高可用性和稳定性。例如,考勤数据每天都会产生大量的记录,如何高效地存储和查询这些数据是一个难题。
- 应对策略:针对大量数据的存储和查询问题,我采用了使用了索引和缓存技术来优化查询性能。例如,在考勤管理模块中,我们使用了Redis缓存来存储常用的查询结果,大大提高了查询速度。
-
技术实现:
- 难点:在开发过程中,遇到了一些技术难题,比如复杂的业务逻辑实现、数据处理和存储等。例如,薪资计算模块需要根据员工的基本工资、考勤记录、绩效评估等多种因素进行复杂的计算,如何确保计算的准确性和效率是一个难点。
- 应对策略:我深入研究了相关技术,采用了面向对象的设计思想,将复杂的业务逻辑拆分为多个独立的模块,便于维护和扩展。在薪资计算模块中,我设计了一个灵活的计算引擎,能够根据不同的规则和条件进行动态计算。为了确保计算的准确性,我编写了详细的单元测试和集成测试用例,覆盖了各种可能的场景和边界条件。同时,我还进行了性能优化,通过多线程和异步处理技术,提高了计算的效率。
-
团队协作和沟通:
- 难点:在团队协作过程中,如何有效地沟通和协调工作也是一个挑战。特别是当团队成员分工明确,但又需要紧密合作时,信息传递和任务衔接显得尤为重要。例如,在开发过程中,前端和后端的开发需要紧密配合,确保接口的设计和实现一致。
- 应对策略:我积极参与团队会议,使用项目管理工具(如JIRA)来跟踪任务进度和问题。每天我们都会进行一次团队会议,讨论项目进展和遇到的问题,及时调整计划和任务分配。同时,我保持与团队成员的密切沟通,特别是与前端开发人员的沟通,确保接口的设计和实现一致。例如,在员工信息管理模块中,我们使用APIFOX接口管理软件,明确了每个接口的输入输出参数和业务逻辑,确保前后端的开发能够无缝衔接。
三、你这个考勤打卡功能可以详细介绍一下吗
考勤打卡功能是人事管理系统中的一个核心模块,涉及到员工的出勤记录、迟到早退、请假等多种状态的管理。以下是我参与开发的考勤打卡功能的详细介绍:
1. 功能需求分析
在需求分析阶段,我们与人事部门进行了多次沟通,确定了考勤打卡功能的具体需求,包括:
- 打卡记录:员工每天上下班需要进行打卡,系统需要记录打卡的时间和地点。
- 状态管理:系统需要识别并记录员工的迟到、早退、旷工等状态。
- 请假管理:员工请假时,需要记录请假的类型、开始时间和结束时间。
- 统计报表:系统需要生成月度和年度的考勤统计报表,供人事部门进行考核和管理。
2. 系统设计与架构
为了实现上述功能,我们采用了微服务架构,将考勤打卡功能独立为一个服务模块。该模块主要包括以下几个子模块:
- 打卡记录接口:负责记录员工的打卡时间和地点。
- 状态管理接口:负责计算和记录员工的考勤状态。
- 请假管理接口:负责处理员工的请假申请和记录。
- 统计报表接口:负责生成考勤统计报表。
3. 数据库设计
我们使用MySQL作为数据库,设计了以下几个主要的数据表:
- 打卡记录表(attendance_records):
- id:主键
- employee_id:员工ID
- clock_in_time:上班打卡时间
- clock_out_time:下班打卡时间
- location:打卡地点
- 请假记录表(leave_records):
- id:主键
- employee_id:员工ID
- leave_type:请假类型(如年假、病假等)
- start_time:请假开始时间
- end_time:请假结束时间
- 考勤状态表(attendance_status):
- id:主键
- employee_id:员工ID
- date:日期
- status:考勤状态(如正常、迟到、早退、旷工等)
4. 具体实现
- 打卡记录
员工通过移动端应用或Web端进行打卡,打卡时会记录当前的时间和地点。我们使用了前端的地理定位API获取打卡地点,并通过后端接口将打卡信息存储到数据库中。
@PostMapping("/clockIn")
public ResponseEntity<?> clockIn(@RequestBody ClockInRequest request) {// 获取当前时间和地点LocalDateTime clockInTime = LocalDateTime.now();String location = request.getLocation();// 创建打卡记录AttendanceRecord record = new AttendanceRecord();record.setEmployeeId(request.getEmployeeId());record.setClockInTime(clockInTime);record.setLocation(location);// 保存到数据库attendanceRecordRepository.save(record);return ResponseEntity.ok("打卡成功");
}
- 状态管理
每天定时任务会扫描打卡记录表,计算每个员工的考勤状态,并更新到考勤状态表中。我们使用Spring的定时任务调度机制来实现这一功能。
@Scheduled(cron = "0 0 1 * * ?")
public void calculateAttendanceStatus() {List<AttendanceRecord> records = attendanceRecordRepository.findAllByDate(LocalDate.now().minusDays(1));for (AttendanceRecord record : records) {AttendanceStatus status = new AttendanceStatus();status.setEmployeeId(record.getEmployeeId());status.setDate(record.getClockInTime().toLocalDate());// 计算考勤状态if (record.getClockInTime().isAfter(LocalTime.of(9, 0))) {status.setStatus("迟到");} else if (record.getClockOutTime().isBefore(LocalTime.of(18, 0))) {status.setStatus("早退");} else {status.setStatus("正常");}// 保存到数据库attendanceStatusRepository.save(status);}
}
- 请假管理
员工通过系统提交请假申请,审批通过后,系统会记录请假的类型和时间段,并在考勤状态计算时排除请假的时间段。
@PostMapping("/applyLeave")
public ResponseEntity<?> applyLeave(@RequestBody LeaveRequest request) {// 创建请假记录LeaveRecord record = new LeaveRecord();record.setEmployeeId(request.getEmployeeId());record.setLeaveType(request.getLeaveType());record.setStartTime(request.getStartTime());record.setEndTime(request.getEndTime());// 保存到数据库leaveRecordRepository.save(record);return ResponseEntity.ok("请假申请提交成功");
}
5. 测试与优化
为了确保系统的稳定性和性能,我们编写了详细的单元测试和集成测试用例,覆盖了各种可能的场景和边界条件。同时,我们进行了性能优化,通过索引、缓存和异步处理等技术,提高了系统的响应速度和处理能力。
通过以上的设计和实现,我们成功地开发了一个高效、稳定的考勤打卡功能,满足了公司人事管理的需求。这不仅提升了员工的考勤管理效率,也为人事部门提供了可靠的数据支持。
四、Redis缓存技术用到哪里了请详细介绍一下
好的,Redis缓存技术在我们的考勤打卡功能中主要用于提升数据查询的性能,特别是在处理大量数据和高频查询的场景下。以下是Redis缓存技术在考勤打卡功能中的具体应用和详细介绍:
1.应用场景
在考勤打卡功能中,Redis缓存技术主要应用于以下几个场景:
- 打卡记录查询:员工和管理人员经常需要查询特定时间段内的打卡记录。
- 考勤状态查询:人事部门需要频繁查询员工的考勤状态,以便进行绩效考核和管理。
- 统计报表生成:系统需要定期生成考勤统计报表,这涉及到大量数据的查询和处理。
2.缓存设计
为了提升查询性能,我们在系统中引入了Redis缓存。具体的缓存设计如下:
- 缓存键设计:我们为每个查询场景设计了唯一的缓存键,以确保缓存数据的准确性和有效性。例如,打卡记录查询的缓存键可以设计为attendance:records:{employeeId}:{date},考勤状态查询的缓存键可以设计为attendance:status:{employeeId}:{date}。
- 缓存策略:我们采用了LRU(Least Recently Used)缓存策略,确保缓存中存储的是最近最常用的数据。同时,我们设置了合理的缓存过期时间,以防止缓存数据过期和不一致。
3.具体实现
- 打卡记录查询缓存
当员工或管理人员查询打卡记录时,我们首先检查Redis缓存中是否存在对应的数据。如果存在,则直接返回缓存数据;如果不存在,则从数据库中查询,并将结果存储到Redis缓存中。
@Service
public class AttendanceService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;@Autowiredprivate AttendanceRecordRepository attendanceRecordRepository;public List<AttendanceRecord> getAttendanceRecords(Long employeeId, LocalDate date) {String cacheKey = "attendance:records:" + employeeId + ":" + date;List<AttendanceRecord> records = (List<AttendanceRecord>) redisTemplate.opsForValue().get(cacheKey);if (records == null) {records = attendanceRecordRepository.findByEmployeeIdAndDate(employeeId, date);redisTemplate.opsForValue().set(cacheKey, records, 1, TimeUnit.HOURS);}return records;}
}
- 考勤状态查询缓存
类似地,当人事部门查询员工的考勤状态时,我们也采用了Redis缓存技术。通过缓存考勤状态数据,可以显著提升查询性能,减少数据库的压力。
@Service
public class AttendanceStatusService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;@Autowiredprivate AttendanceStatusRepository attendanceStatusRepository;public AttendanceStatus getAttendanceStatus(Long employeeId, LocalDate date) {String cacheKey = "attendance:status:" + employeeId + ":" + date;AttendanceStatus status = (AttendanceStatus) redisTemplate.opsForValue().get(cacheKey);if (status == null) {status = attendanceStatusRepository.findByEmployeeIdAndDate(employeeId, date);redisTemplate.opsForValue().set(cacheKey, status, 1, TimeUnit.HOURS);}return status;}
}
- 统计报表生成缓存
在生成考勤统计报表时,我们也使用了Redis缓存技术。通过缓存统计数据,可以显著减少重复计算的开销,提高报表生成的效率。
@Service
public class AttendanceReportService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;@Autowiredprivate AttendanceStatusRepository attendanceStatusRepository;public byte[] generateAttendanceReport(String month) {String cacheKey = "attendance:report:" + month;byte[] reportBytes = (byte[]) redisTemplate.opsForValue().get(cacheKey);if (reportBytes == null) {List<AttendanceStatus> statuses = attendanceStatusRepository.findAllByMonth(month);相关文章:
实习公司内部OA系统项目经验
文章目录 前言一、请介绍一下你实习所做的项目?二、你觉得你项目的难点有哪些?三、你这个考勤打卡功能可以详细介绍一下吗1. 功能需求分析2. 系统设计与架构3. 数据库设计4. 具体实现5. 测试与优化四、Redis缓存技术用到哪里了请详细介绍一下1.应用场景2.缓存设计3.具体实现4…...
Ansys Zemax|在设计抬头显示器(HUD)时需要使用哪些工具?
附件下载 联系工作人员获取附件 汽车抬头显示器或汽车平视显示器,也被称为HUD,是在汽车中显示数据的透明显示器,不需要用户低头就能看到他们需要的重要资讯。这个名字的由来是由于该技术能够让飞行员在头部“向上”并向前看的情况下查看信息…...
Linux系统移动光标类命令
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
Vitis Accelerated Libraries 学习笔记--Vision 库的组织结构
1. 简介 Vision 库的组织结构如下: ├── L1/ │ ├── README.md │ ├── examples/ │ ├── include/ │ ├── lib/ │ └── tests/ ├── L2/ │ ├── README.md │ ├── examples/ │ └── tests/ ├── L3/ │ ├── R…...
HTML+CSS 彩色浮雕按钮
效果演示 实现了一个彩色按钮特效,包括一个按钮(button)和一个前景色(::before)。按钮具有四种不同的颜色,当鼠标悬停在按钮上时,前景色会出现渐变效果,并且按钮的颜色、文本阴影和边…...
ChatBI开源实现: 基于SuperSonic的AI+BI的产品设计
产品起源 为什么要做这样的产品?文章《ChatBI开源实现: AIBI的产品设计》中有介绍 为什么要自己做这样的产品?1、低成本试错;2、未来数据生态入口; 为什么要基于Supersonic做? 开源协议友好:可魔改商用 社区…...
【嵌入式Linux】i.MX6ULL 外部中断服务函数的初始化
文章目录 1. Cortex-A7 中断系统1.1 分析1.2 具体处理流程 2. 外部中断服务函数的初始化2.1 基本流程分析2.2 具体代码分析2.2.1. 定义中断处理类型和结构体2.2.2. 初始化中断系统2.2.3. 注册中断处理函数2.2.4. 具体的中断处理逻辑2.2.5. 默认的中断处理函数 3. 完整代码 本文…...
线性代数、矩阵计算
一、线性代数 1、对于向量,若a是标量,为a的绝对值乘以b的向量长度。 2、点乘 3、范数:向量或者矩阵的长度 L1范数:(对向量)每个元素的绝对值求和 L2范数:(对向量)torch.…...
PostgreSQL 高级功能(五)
1. 存储过程与函数 1.1 创建存储过程 存储过程是一组预编译的SQL语句,可以简化复杂的操作。以下是一个简单的存储过程示例: CREATE OR REPLACE FUNCTION add_user(username VARCHAR, email VARCHAR) RETURNS VOID AS $$ BEGININSERT INTO users (use…...
食品企业仓储式批发零售一体化解决方案
食品企业需要有效应对日益复杂的市场挑战和消费者需求的快速变化的挑战并提升市场竞争力,仓储式类的批发零售一体化需求应运而生。这一全新的商业模式不仅整合了传统的批发和零售模式,还优化了供应链管理和客户体验,成为食品行业发展的新引擎…...
chrome插件,修改对应URL的http请求的header头,包括ajax请求
要创建一个可以灵活修改HTTP请求头的Chrome扩展,包括一个用户界面来动态设置头部名称和值,可以按照以下步骤进行。我们会用到 chrome.storage API 来保存用户的设置,并在后台脚本中使用这些设置来修改请求头。 文件结构 my_chrome_extensio…...
C语言 | Leetcode C语言题解之第191题位1的个数
题目: 题解: int hammingWeight(uint32_t n) {int ret 0;while (n) {n & n - 1;ret;}return ret; }...
【C++11(二)】lambda表达式和可变参数模板
一、可变参数模板 C11的新特性可变参数模板 能够让您创建可以接受 可变参数的函数模板和类模板 // Args是一个模板参数包,args是一个函数形参参数包 // 声明一个参数包Args...args,这个参数包中可以包含0到任意个模板参数。 template <class ...Arg…...
昇思25天学习打卡营第2天|张量Tensor
张量Tensor 创建张量张量的属性张量索引张量运算 稀疏张量 总结 简单讲讲张量,数学和物理学界以一种方式定义张量,机器学习上则是以另一种方式定义张量,这里的张量也与神经网络联系紧密,神经网络需要进行大量的数学计算࿰…...
[leetcode]valid-triangle-number. 有效三角形的个数
. - 力扣(LeetCode) class Solution { public:int triangleNumber(vector<int>& nums) {int n nums.size();sort(nums.begin(), nums.end());int ans 0;for (int i 0; i < n; i) {for (int j i 1; j < n; j) {int left j 1, righ…...
java SQL server 多实例的情况
而对于java,对付多个数据库实例就有些要注意的了: 首先,同样连接字符串上加上“\实例名”: jdbc:sqlserver://127.0.0.1\\mssqlserver2008;DatabaseNameLPT; 此处应去掉端口1433。因为连接数据库自命名实例的url中没有端口号1433…...
html--404页面
<!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"> <title>404 错误页面不存在&…...
[word] Word如何删除所有的空行? #职场发展#学习方法
Word如何删除所有的空行? 很多网友从网页复制文字粘贴到word文档后发现段落之间有空行,如果文字不多,手动删除这些空行也没有多少工作量,但是如果文字的字数达到成千上万,一个个手动删除这些空行还是很繁琐的。那么&a…...
【CSS】深入探讨 CSS 的 `calc()` 函数
深入探讨 CSS 的 calc() 函数 calc() 是一个 CSS 函数,用于在样式表中进行数学计算,从而动态地设置 CSS 属性值。它允许开发者在指定长度、百分比、数值等时,进行加减乘除运算。通过 calc() 函数,我们可以实现更灵活和响应式的设…...
MongoDB异地备份数据文件脚本(带日志打印,便于排查)
此脚本是以文件夹的形式备份,非压缩包形式 如需备份成加密压缩包,可用此脚本:MongoDB定时异地备份所有数据库为加密压缩包-CSDN博客 1.可以直接下载本文件使用,将其放到mongo安装目录的bin目录下(可手动执行…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
