Java、python、php版的企业单位考勤打卡管理系统的设计与实现(源码、调试、LW、开题、PPT)
💕💕作者:计算机源码社
💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流!
💕💕学习资料、程序开发、技术解答、文档报告
💕💕如需要源码,可以扫取文章下方二维码联系咨询
💕💕Java项目
💕💕微信小程序项目
💕💕Android项目
💕💕Python项目
💕💕PHP项目
💕💕ASP.NET项目
💕💕Node.js项目
💕💕选题推荐
项目实战|基于springboot企业单位考勤打卡管理系统
文章目录
- 1、选题背景
- 2、研究目的和意义
- 3、系统功能设计
- 4、系统页面设计
- 5、参考文献
- 6、核心代码
1、选题背景
在当今这个企业众多,员工众多的时代,那么保障企业基础的员工信息的考勤管理问题就显得尤为重要。有条有序的人力管理模式能提供企业最稳定的保障,是企业体现生产力的核心后援之一。随着现在网络时代的到来,互联网的冲击是所有当代人都无法避免的存在,因此,本文想设计的就是一个基于SpringBoot+Vue的企业单位考勤打卡管理系统,使得企业的考勤管理模式能更符合时代潮流的发展。基于SpringBoot Vue的企业单位考勤打卡管理系统是为了方便企业或领导人员对企业员工的管理能更加简单,提高企业对员工管理的业务效率,减轻工作量。以IDEA为开发平台,采用B/S架构。经过细心的调研和衡量,以Java技术为核心实现业务接口,以JSP进行数据的展示和操作。为了编程便捷性采用Spring框架进行项目架构管理和MySQL关系型数据库进行数据存储管理。由于基于SpringBoot Vue的企业单位考勤打卡管理系统是一个管理系统,涉及了员工的考勤、请假等信息的处理,这就触及到了大量数据信息存储的问题。因此本系统后期会对数据安全存储这一模块进行重点研究和优化,确保各个模块的信息准确性和安全性。
2、研究目的和意义
如今互联网信息技术的飞速进步,彻彻底底改变了人们的生活方式,各行各业都受到了冲击,众多企业的管理模式和方式也基本离不开网络。再加上在现在这个看重人才的时代,以人才为第一核心竞争力,大部分企业的人才储备会越来越多,就导致假如一个企业没有好的合理的企业管理模式,就会产生大量的繁琐工作,在一定程度上浪费企业成本和消耗企业人才,并且在企业组织架构重组或者大量人员变动时,那更是一大绞尽脑汁的工作。
所以假如企业拥有了一套完整合理的企业单位考勤打卡管理系统的话,可以很快解决繁琐的人员变动问题,同时企业的领导也可以根据管理系统中的信息进行工作上的安排和调整,例如系统中的考勤功能可以详细的看出员工的上班出勤情况,是否存在迟到早退甚至缺到的人员。也可以查看员工具体信息和薪资信息,进一步的对整个部门或者某个团队的生产能力有一定的把控,同时还有通讯录可以快速查看指定员工的通讯信息,增加工作效率。
总的来说,在这样的企业单位考勤打卡管理系统的帮助下,可以对员工信息管理工作以及考勤工作进行信息化管理,加强上下级之间的联系,有效地记录并查询员工信息、考勤等情况,使企业对员工的管理更加高效,大大地增加了一个企业的生产效率,给企业在这个竞争激烈的行业市场中,提高了很强的竞争力。
3、系统功能设计
员工关键功能包含员工登陆、个人信息修改、加班申请管理、打卡信息管理、工作汇报管理、请假信息管理、考勤信息管理、工资信息管理等有关功能。员工用例如下
管理员的权限是最高的,可以对系统所在功能进行查看,修改和删除等,管理员用例如下
4、系统页面设计
如需要源码,可以扫取文章下方二维码联系咨询
5、参考文献
[1]谭钊,齐杨,陈浩然,等.智慧考勤系统设计与应用[J].信息技术与标准化,2024,(Z1):93-97.
[2]汪涛.基于SpringBoot和人脸识别的企业考勤管理系统设计与实现[D].阜阳师范大学,2023. DOI:10.27846/d.cnki.gfysf.2023.000144.
[3]苏荣聪,董玉霞.基于Android技术的企业考勤信息系统的设计与实现[J].成都工业学院学报,2021,24(03):43-47.DOI:10.13542/j.cnki.51-1747/tn.2021.03.009.
[4]刘欣,王竹宁,葛妍娇,等.基于企业微信的移动考勤系统设计[J].电脑知识与技术,2021,17(26):65-68.DOI:10.14004/j.cnki.ckt.2021.2597.
[5]肖航,杨智,余茜.一种基于WEB技术的企业考勤管理系统[J].中国科技信息,2021,(15):52-54.
[6]张嘉涛,赵传超,王力华.基于企业微信平台医院健康系统的快速设计与实现[J].中国医学装备,2021,18(07):130-134.
[7]靳尹,骆文杰,江朝晖.基于人脸识别的企业考勤系统设计与实现[J].智能计算机与应用,2021,11(05):152-154+159.
[8]靳尹.基于人脸识别的企业移动考勤系统设计与实现[D].合肥工业大学,2021. DOI:10.27101/d.cnki.ghfgu.2021.001097.
[9]王鑫,乐晋昆.基于人脸识别的企业考勤系统分析与设计[J].电子世界,2021,(03):158-159.DOI:10.19353/j.cnki.dzsj.2021.03.067.
[10]范伟村.基于无线AP网络日志的考勤系统的设计与实现[D].哈尔滨工业大学,2020. DOI:10.27061/d.cnki.ghgdu.2020.006704.
[11]赵振华.智能化在企业管理中的应用[J].大众投资指南,2020,(12):81-82.
[12]欧阳志东.大型集团企业考勤自动结算系统的设计与实现[J].信息与电脑(理论版),2020,32(08):53-55.
[13]李铭钧.人脸识别技术在石化企业考勤系统的应用[J].工业控制计算机,2020,33(01):87-88.
[14]段修亮,赵霞.小型企业人事管理系统的设计与实现[J].科技风,2020,(01):76.DOI:10.19392/j.cnki.1671-7341.202001066.
[15]冯汝君.基于MIS的RS公司考勤系统设计及实施研究[D].天津大学,2019. DOI:10.27356/d.cnki.gtjdu.2019.003370.
[16]曹智.基于SSM框架的企业人事管理考勤系统的设计与实现[D].电子科技大学,2019. DOI:10.27005/d.cnki.gdzku.2019.000414.
[17]宫大伟.基于SAP HCM模块与OA系统搭建企业考勤管理框架[C]//天津市电子工业协会.天津市电子工业协会2019年年会论文集.中远海运(天津)有限公司;,2019:3.
[18]张春悦,韩飞.人脸识别系统设计[J].湖北农机化,2019,(12):85.
[19]李宇翔.企业外勤人员考勤系统的研究与实现[D].西安科技大学,2019.
[20]李雅琴.钢铁企业考勤信息系统的开发[J].数字技术与应用,2019,37(02):182-183.DOI:10.19695/j.cnki.cn12-1369.2019.02.99.
6、核心代码
/*** 打卡信息* 后端接口* @author * @email */
@RestController
@RequestMapping("/dakaxinxi")
public class DakaxinxiController {@Autowiredprivate DakaxinxiService dakaxinxiService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,DakaxinxiEntity dakaxinxi,HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yuangong")) {dakaxinxi.setGonghao((String)request.getSession().getAttribute("username"));}EntityWrapper<DakaxinxiEntity> ew = new EntityWrapper<DakaxinxiEntity>();PageUtils page = dakaxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, dakaxinxi), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,DakaxinxiEntity dakaxinxi, HttpServletRequest request){EntityWrapper<DakaxinxiEntity> ew = new EntityWrapper<DakaxinxiEntity>();PageUtils page = dakaxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, dakaxinxi), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( DakaxinxiEntity dakaxinxi){EntityWrapper<DakaxinxiEntity> ew = new EntityWrapper<DakaxinxiEntity>();ew.allEq(MPUtil.allEQMapPre( dakaxinxi, "dakaxinxi")); return R.ok().put("data", dakaxinxiService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(DakaxinxiEntity dakaxinxi){EntityWrapper< DakaxinxiEntity> ew = new EntityWrapper< DakaxinxiEntity>();ew.allEq(MPUtil.allEQMapPre( dakaxinxi, "dakaxinxi")); DakaxinxiView dakaxinxiView = dakaxinxiService.selectView(ew);return R.ok("查询打卡信息成功").put("data", dakaxinxiView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){DakaxinxiEntity dakaxinxi = dakaxinxiService.selectById(id);return R.ok().put("data", dakaxinxi);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){DakaxinxiEntity dakaxinxi = dakaxinxiService.selectById(id);return R.ok().put("data", dakaxinxi);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody DakaxinxiEntity dakaxinxi, HttpServletRequest request){dakaxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(dakaxinxi);dakaxinxiService.insert(dakaxinxi);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody DakaxinxiEntity dakaxinxi, HttpServletRequest request){dakaxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(dakaxinxi);dakaxinxiService.insert(dakaxinxi);return R.ok();}/*** 修改*/@RequestMapping("/update")@Transactionalpublic R update(@RequestBody DakaxinxiEntity dakaxinxi, HttpServletRequest request){//ValidatorUtils.validateEntity(dakaxinxi);dakaxinxiService.updateById(dakaxinxi);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){dakaxinxiService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<DakaxinxiEntity> wrapper = new EntityWrapper<DakaxinxiEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yuangong")) {wrapper.eq("gonghao", (String)request.getSession().getAttribute("username"));}int count = dakaxinxiService.selectCount(wrapper);return R.ok().put("count", count);}/*** (按值统计)*/@RequestMapping("/value/{xColumnName}/{yColumnName}")public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) {Map<String, Object> params = new HashMap<String, Object>();params.put("xColumn", xColumnName);params.put("yColumn", yColumnName);EntityWrapper<DakaxinxiEntity> ew = new EntityWrapper<DakaxinxiEntity>();String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yuangong")) {ew.eq("gonghao", (String)request.getSession().getAttribute("username"));}List<Map<String, Object>> result = dakaxinxiService.selectValue(params, ew);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");for(Map<String, Object> m : result) {for(String k : m.keySet()) {if(m.get(k) instanceof Date) {m.put(k, sdf.format((Date)m.get(k)));}}}return R.ok().put("data", result);}/*** (按值统计)时间统计类型*/@RequestMapping("/value/{xColumnName}/{yColumnName}/{timeStatType}")public R valueDay(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType,HttpServletRequest request) {Map<String, Object> params = new HashMap<String, Object>();params.put("xColumn", xColumnName);params.put("yColumn", yColumnName);params.put("timeStatType", timeStatType);EntityWrapper<DakaxinxiEntity> ew = new EntityWrapper<DakaxinxiEntity>();String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yuangong")) {ew.eq("gonghao", (String)request.getSession().getAttribute("username"));}List<Map<String, Object>> result = dakaxinxiService.selectTimeStatValue(params, ew);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");for(Map<String, Object> m : result) {for(String k : m.keySet()) {if(m.get(k) instanceof Date) {m.put(k, sdf.format((Date)m.get(k)));}}}return R.ok().put("data", result);}/*** 分组统计*/@RequestMapping("/group/{columnName}")public R group(@PathVariable("columnName") String columnName,HttpServletRequest request) {Map<String, Object> params = new HashMap<String, Object>();params.put("column", columnName);EntityWrapper<DakaxinxiEntity> ew = new EntityWrapper<DakaxinxiEntity>();String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yuangong")) {ew.eq("gonghao", (String)request.getSession().getAttribute("username"));}List<Map<String, Object>> result = dakaxinxiService.selectGroup(params, ew);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");for(Map<String, Object> m : result) {for(String k : m.keySet()) {if(m.get(k) instanceof Date) {m.put(k, sdf.format((Date)m.get(k)));}}}return R.ok().put("data", result);}}
💕💕作者:计算机源码社
💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流!
💕💕学习资料、程序开发、技术解答、文档报告
💕💕如需要源码,可以扫取文章下方二维码联系咨询
相关文章:

Java、python、php版的企业单位考勤打卡管理系统的设计与实现(源码、调试、LW、开题、PPT)
💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…...

在IntelliJ IDEA中使用Git推送项目
去gitee网站注册用户 gitee网站地址:https://gitee.com/ github网站地址:https://github.com/ 一、创建仓库 以下以gitee为例进行介绍,github操作雷同。 1、创建仓库 点击页面右上方的"“并选择"创建仓库” 2、设置仓库相关信息 首先输入仓库名&…...

CNN代码实战
CNN的原理 从 DNN 到 CNN (1)卷积层与汇聚 ⚫ 深度神经网络 DNN 中,相邻层的所有神经元之间都有连接,这叫全连接;卷积神经网络 CNN 中,新增了卷积层(Convolution)与汇聚(…...

迁移学习代码复现
一、前言 说来可能令人难以置信,迁移学习技术在实践中是非常简单的,我们仅需要保留训练好的神经网络整体或者部分网络,再在使用迁移学习的情况下把保留的模型重新加载到内存中,就完成了迁移的过程。之后,我们就可以像训练普通神经网络那样训练迁移过来的神经网络了。 我们…...
Elasticsearch(ES)常用命令
常用运维命令 一、基本命令1.1、查看集群的健康状态1.2、查看节点信息1.3、查看索引列表1.4、创建索引1.5、删除索引1.6、关闭索引1.7、打开索引1.8、查看集群资源使用情况(各个节点的状态,包括磁盘,heap,ram的使用情况࿰…...

C/C++ 不定参函数
C语言不定参函数 函数用法总结 Va_list 作用:类型定义,生命一个变量,该变量被用来访问传递给不定参函数的可变参数列表用法:供后续函数进调用,通过该变量访问参数列表 typedefchar* va_list; va_start 作用ÿ…...

C语言——函数专题
1.概念 在C语言中引入函数的概念,有些翻译为子程序。C语言中的函数就是一个完成某项特定任务的一小段代码,这个代码是有特殊的写法和调用方法的。一般我们可以分为两种函数:库函数和自定义函数。 2.库函数 C语言国际标准ANSIC规定了一些常…...
springboot打可执行jar包
1. pom文件如下 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><m…...

【SQL】科目种类
目录 题目 分析 代码 题目 表: Teacher ------------------- | Column Name | Type | ------------------- | teacher_id | int | | subject_id | int | | dept_id | int | ------------------- 在 SQL 中,(subject_id, dept_id) 是该表的主键。 该表…...

【深度学习】【语音】TTS,最新TTS模型概览,扩散模型TTS,MeloTTS、StyleTTS2、Matcha-TTS
文章目录 基础介绍对比基础介绍 MeloTTS: MeloTTS 是 MyShell.ai 开发的一个多语言语音合成模型,支持包括英语、西班牙语、法语、中文、日语和韩语等多种语言。它以高质量的语音合成为特色,尤其擅长处理中英混合内容。该模型优化了在 CPU 上的实时推理能力,使其在多种应用场…...

【论文笔记】LION: Linear Group RNN for 3D Object Detection in Point Clouds
原文链接:https://arxiv.org/abs/2407.18232 简介:Transformer在3D点云感知任务中有二次复杂度,难以进行长距离关系建模。线性RNN则计算复杂度较低,适合进行长距离关系建模。本文提出基于窗口的网络线性组RNN(即对分组…...

打造高可用集群的基石:深度解析Keepalived实践与优化
高可用集群 集群类型 集群类型主要分为负载均衡集群(LB)、高可用集群(HA)和高性能计算集群(HPC)三大类。每种集群类型都有其特定的应用场景和优势。 1. 负载均衡集群(LB) 负载均衡集…...

Web大学生网页作业成品——环保主题介绍网页网站设计与实现(HTML+CSS)(5个页面)
🎉🎉🎉 常见网页设计作业题材有**汽车、环保、明星、文化、国家、抗疫、景点、人物、体育、植物、公益、图书、节日、游戏、商城、旅游、家乡、学校、电影、动漫、非遗、动物、个人、企业、美食、婚纱、其他**等网页设计题目, 可满足大学生网…...

Qt登录窗口设计
widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QIcon> //图标类 #include <QPushButton> #include <QLineEdit> //行编辑 #include <QLabel> #include <QTextEdit> #include <QMovie>class Widge…...

探索数据矿藏:我的AI大模型与数据挖掘实战经验分享
🚀 探索数据矿藏:我的AI大模型与数据挖掘实战经验分享 💖 前言:数据的金矿,AI的翅膀 在人工智能的浪潮中,我有幸作为项目负责人,带领团队深入挖掘数据的潜力,利用AI大模型的力量&am…...
linux C语言strcat函数及相关函数
讯飞星火 strcat函数是C语言中的一个字符串处理函数,用于将一个字符串追加到另一个字符串的末尾。它的原型如下: char *strcat(char *dest, const char *src);参数说明: dest:目标字符串,即要将src字符串追加到这个字符串的末尾。src:源字符串,即要追加到dest字符串末…...
使用 sort 进行文本文件处理
sort 使用经验笔记 一、简介 sort 是一个命令行工具,用于对文本文件中的行进行排序。它广泛应用于 Unix/Linux 系统中,可以用来对文件的内容进行简单的排序操作,也可以与其他命令结合使用来完成更复杂的任务。 二、基本用法 排序文件: sor…...

HarmonyOS笔记4:从云数据库获取数据
移动应用获取数据的方式主要有: 1.从网络中获取数据接口API。 2.从华为云数据库获取云数据库的资源。 3.从移动终端直接获取本地的数据 在HarmonyOS笔记3中已经完成了方式一从网络中获取数据接口API的方式。在本篇笔记中,将讨论从云数据库中获取数据。 因…...

QT5生成独立运行的exe文件
目录 1 生成独立运行的exe文件1.1 设置工程Release版本可执行文件存储路径1.2 将工程编译成Release版本 2 使用QT5自带的windeployqt拷贝软件运行依赖项3 将程序打包成一个独立的可执行软件exe4 解决QT5 This application failed to start because no Qt platform plugin could…...

LabVIEW光纤水听器闭环系统
开发了一种利用LabVIEW软件开发的干涉型光纤水听器闭环工作点控制系统。该系统通过调节光源频率和非平衡干涉仪的光程差,实现了工作点的精确控制,从而提高系统的稳定性和检测精度,避免了使用压电陶瓷,使操作更加简便。 项目背景 …...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...
stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)
这是系统中断服务程序的默认处理汇编函数,如果我们没有定义实现某个中断函数,那么当stm32产生了该中断时,就会默认跑这里来了,所以我们打开了什么中断,一定要记得实现对应的系统中断函数,否则会进来一直循环…...