基于SSM医院病历管理系统

news2024/11/25 13:28:15

基于SSM医院病历管理系统的设计与实现

摘要

病历管理系统是医院管理系统的重要组成,在计算机技术快速发展之前,病人或者医生如果想记录并查看自己的健康信息是非常麻烦的,因为在以往病人的健康信息通常只保存在自己的病历卡或者就诊报告中,如果在就诊时想进行查看只能通过观看纸质报告这种方式。但这种方式首先效率很低,因为每位医生或护士的精力是有限的,而且每个病人的病历或就诊报告很容易丢失或者出现破损,从而造成信息的丢失或信息出现错误。所以提高信息的记录及查询效率是很重要的,这样一方面可以保证病人的体验,另一方面医生或者护士也可以避免因为浪费时间造成的效率低下。

进入二十一世纪以来,计算机技术蓬勃发展,人们的生活发生了许多变化。很多时候人们不需要亲力亲为的做一些事情,通过网络即可完成以往需要花费很多时间的操作,这可以提升人们的生活质量。计算机及移动互联技术对人们生活的改变不仅仅包含衣食住行等方面,它在各种领域都对现代生活作出了贡献。本系统前台使用的是HTML技术,后台使用JSP语言和MySQL数据库开发,为各位病人及医务工作者提供了医院公告查询、医生信息查看、患者病情管理等多种功能,让人们不需要再通过拿着自己的纸质病历前往医院就可以进行了历史就诊信息的查看,在极大地满足病人们进行在线健康管理的需求的同时,还在首页中添加了X光片子的查看等功能,让病人用户们可以自行进行X光片子的查看。

关键词:病历管理;JSP;HTML;MYSQL

病历管理系统的实现

前台首界面

用户注册登录

 

医生信息查看

 

医生后台首页

 

医院公告管理 

系统架构选择 

在确定了项目的主题和研究背景之后,就要确定本系统的架构了。主流的架构有两种,一种是B/S架构,一种是C/S架构。C/S的全称是Client/Server,Client是客户端的意思,Server是服务器的意思,所以C/S架构就是客户端-服务器的模式,我们常用的电脑上的软件比如QQ、微信都是C/S架构的程序。B/S架构的全称是Browser/Server,含义是浏览器-服务器,我们常用的一些网站系统就是属于B/S架构。

本系统的开发框架为B/S架构,与传统的C/S架构相比,它不需要繁琐的安装,并且运行时只需要打开浏览器即可,对电脑的硬件要求和对操作者的要求较低。以往的很多系统使用的都是C/S架构,C/S架构虽然在某些方面表现非常好,但是逐渐被B/S架构取代了,因为C/S架构必须进行安装或者升级之后才可以使用,而B/S架构只需要电脑有浏览器即可使用,所以本系统采用了B/S架构。

系统开发环境

通过本节来介绍本系统的开发环境,开发的环境为个人笔记本电脑,处理器为I5十代,内存为8GB,硬盘为500G固态硬盘,浏览器为谷歌浏览器。用来编程的工具为MyEclipse,它是功能强大的编辑工具,在市面上进行Java和JSP编程时非常流行,具备代码提示、代码自动缩进和换行等基本功能,还能用来对程序进行部署和测试等。用来进行MYSQL编辑的工具为Navicat for MySQL,它非常直观,可以对数据进行导入和导出。

可行性的分析

系统的技术可行性主要是在开发开始前对本系统所使用的开发环境、开发技术等进行分析,对所有可能遇到的问题进行预估等。本系统的开发环境为自己的个人电脑,所有使用的工具都是平时学习时用过的,所用的开发技术大多数都是大学期间学习过的,如果遇到没有涉及的领域可以通过在CSDN、博客园等技术论坛寻找答案,也可以咨询指导老师。所以从技术层面分析,本系统是可行的。

一个系统的经济可行性主要是指网站去除成本后还是否可以盈利,该系统为计算机专业大学生的毕业设计,主要目的是为了使用大学四年所学的知识开发出一个有价值的系统,证明自己可以达到毕业的要求。该项目几乎没有任何成本,因为所有的设备及开发软件都为电脑上已安装的免费版本,该项目为非商业项目,所以从经济可行性上分析,本系统是可行的。

系统的操作可行性也可以被称为运行可行性,主要对系统运行或操作进行分析。在当前这个电脑和手机走入寻常百姓家的时代,不管是成年人还是小朋友都多多少少对电脑和手机操作略知一二,本系统只要有简单的微信操作常识就可以熟练使用,所以说从系统的操作方面是可行的。

部分代码

package com.controller;

import java.io.File;
import java.io.IOException;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.PrintWriter;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import com.entity.Yisheng;
import com.server.YishengServer;
import com.util.PageBean;
import net.sf.json.JSONObject;
import com.util.db;
import java.sql.SQLException;
import java.sql.*;
@Controller
public class YishengController {
	@Resource
	private YishengServer yishengService;

	@RequestMapping("addYisheng.do")
	public String addYisheng(HttpServletRequest request,Yisheng yisheng,HttpSession session) throws SQLException{
		Timestamp time=new Timestamp(System.currentTimeMillis());
		
		yisheng.setAddtime(time.toString().substring(0, 19));
		yishengService.add(yisheng);
		db dbo = new db();
		
		//kuabiaogaizhi
		return "redirect:yisheng_add.jsp?ok=1";
		
	}
	@RequestMapping("addYishengqt.do")
	public String addYishengqt(HttpServletRequest request,Yisheng yisheng,HttpSession session) throws SQLException{
		Timestamp time=new Timestamp(System.currentTimeMillis());
		
		yisheng.setAddtime(time.toString().substring(0, 19));
		yishengService.add(yisheng);
		db dbo = new db();
		
		//kuabiaogaizhi
		session.setAttribute("backxx", "添加成功");
		session.setAttribute("backurl", request.getHeader("Referer"));
		return "redirect:postback.jsp";
	}
 
//	处理编辑
	@RequestMapping("doUpdateYisheng.do")
	public String doUpdateYisheng(int id,ModelMap map,Yisheng yisheng){
		yisheng=yishengService.getById(id);
		map.put("yisheng", yisheng);
		return "yisheng_updt";
	}
	
	@RequestMapping("doUpdateYisheng2.do")
	public String doUpdateYisheng2(ModelMap map,Yisheng yisheng,HttpServletRequest request){
		yisheng=yishengService.getById(Integer.parseInt((String)request.getSession().getAttribute("uid")));
		map.put("yisheng", yisheng);
		return "yisheng_updt2";
	}
	
@RequestMapping("updateYisheng2.do")
	public String updateYisheng2(int id,ModelMap map,Yisheng yisheng,HttpServletRequest request,HttpSession session){
		yishengService.update(yisheng);
		session.setAttribute("backxx", "修改成功");session.setAttribute("backurl", request.getHeader("Referer"));return "redirect:postback.jsp";
	}
	
	
//	后台详细
	@RequestMapping("yishengDetail.do")
	public String yishengDetail(int id,ModelMap map,Yisheng yisheng){
		yisheng=yishengService.getById(id);
		map.put("yisheng", yisheng);
		return "yisheng_detail";
	}
//	前台详细
	@RequestMapping("ysDetail.do")
	public String ysDetail(int id,ModelMap map,Yisheng yisheng){
		yisheng=yishengService.getById(id);
		map.put("yisheng", yisheng);
		return "yishengdetail";
	}
//	
	@RequestMapping("updateYisheng.do")
	public String updateYisheng(int id,ModelMap map,Yisheng yisheng,HttpServletRequest request,HttpSession session){
		yishengService.update(yisheng);
		
		return "redirect:"+request.getHeader("Referer")+"&ok=1";
	}

//	分页查询
	@RequestMapping("yishengList.do")
	public String yishengList(@RequestParam(value="page",required=false)String page,
			ModelMap map,HttpSession session,Yisheng yisheng, String yishenggonghao, String yishengxingming, String mima, String xingbie, String zhicheng, String suozaikeshi, String zhuzhizhengzhuang, String zhaopian, String lianxidianhua, String shenfenzheng, String beizhu, String issh){
		if(page==null||page.equals("")){
			page="1";
		}
		PageBean pageBean=new PageBean(Integer.parseInt(page), 5);
		Map<String, Object> pmap=new HashMap<String,Object>();
		pmap.put("pageno", pageBean.getStart());
		pmap.put("pageSize", 5);
		
		
		if(yishenggonghao==null||yishenggonghao.equals("")){pmap.put("yishenggonghao", null);}else{pmap.put("yishenggonghao", yishenggonghao);}
		if(yishengxingming==null||yishengxingming.equals("")){pmap.put("yishengxingming", null);}else{pmap.put("yishengxingming", yishengxingming);}
		if(mima==null||mima.equals("")){pmap.put("mima", null);}else{pmap.put("mima", mima);}
		if(xingbie==null||xingbie.equals("")){pmap.put("xingbie", null);}else{pmap.put("xingbie", xingbie);}
		if(zhicheng==null||zhicheng.equals("")){pmap.put("zhicheng", null);}else{pmap.put("zhicheng", zhicheng);}
		if(suozaikeshi==null||suozaikeshi.equals("")){pmap.put("suozaikeshi", null);}else{pmap.put("suozaikeshi", suozaikeshi);}
		if(zhuzhizhengzhuang==null||zhuzhizhengzhuang.equals("")){pmap.put("zhuzhizhengzhuang", null);}else{pmap.put("zhuzhizhengzhuang", zhuzhizhengzhuang);}
		if(zhaopian==null||zhaopian.equals("")){pmap.put("zhaopian", null);}else{pmap.put("zhaopian", zhaopian);}
		if(lianxidianhua==null||lianxidianhua.equals("")){pmap.put("lianxidianhua", null);}else{pmap.put("lianxidianhua", lianxidianhua);}
		if(shenfenzheng==null||shenfenzheng.equals("")){pmap.put("shenfenzheng", null);}else{pmap.put("shenfenzheng", shenfenzheng);}
		if(beizhu==null||beizhu.equals("")){pmap.put("beizhu", null);}else{pmap.put("beizhu", beizhu);}
		
		int total=yishengService.getCount(pmap);
		pageBean.setTotal(total);
		List<Yisheng> list=yishengService.getByPage(pmap);
		map.put("page", pageBean);
		map.put("list", list);
		session.setAttribute("p", 1);
		return "yisheng_list";
	}
	
	
	@RequestMapping("ysList.do")
	public String ysList(@RequestParam(value="page",required=false)String page,
			ModelMap map,HttpSession session,Yisheng yisheng, String yishenggonghao, String yishengxingming, String mima, String xingbie, String zhicheng, String suozaikeshi, String zhuzhizhengzhuang, String zhaopian, String lianxidianhua, String shenfenzheng, String beizhu, String issh){
		if(page==null||page.equals("")){
			page="1";
		}
		PageBean pageBean=new PageBean(Integer.parseInt(page), 5);
		Map<String, Object> pmap=new HashMap<String,Object>();
		pmap.put("pageno", pageBean.getStart());
		pmap.put("pageSize", 5);
		if(yishenggonghao==null||yishenggonghao.equals("")){pmap.put("yishenggonghao", null);}else{pmap.put("yishenggonghao", yishenggonghao);}
		if(yishengxingming==null||yishengxingming.equals("")){pmap.put("yishengxingming", null);}else{pmap.put("yishengxingming", yishengxingming);}
		if(mima==null||mima.equals("")){pmap.put("mima", null);}else{pmap.put("mima", mima);}
		if(xingbie==null||xingbie.equals("")){pmap.put("xingbie", null);}else{pmap.put("xingbie", xingbie);}
		if(zhicheng==null||zhicheng.equals("")){pmap.put("zhicheng", null);}else{pmap.put("zhicheng", zhicheng);}
		if(suozaikeshi==null||suozaikeshi.equals("")){pmap.put("suozaikeshi", null);}else{pmap.put("suozaikeshi", suozaikeshi);}
		if(zhuzhizhengzhuang==null||zhuzhizhengzhuang.equals("")){pmap.put("zhuzhizhengzhuang", null);}else{pmap.put("zhuzhizhengzhuang", zhuzhizhengzhuang);}
		if(zhaopian==null||zhaopian.equals("")){pmap.put("zhaopian", null);}else{pmap.put("zhaopian", zhaopian);}
		if(lianxidianhua==null||lianxidianhua.equals("")){pmap.put("lianxidianhua", null);}else{pmap.put("lianxidianhua", lianxidianhua);}
		if(shenfenzheng==null||shenfenzheng.equals("")){pmap.put("shenfenzheng", null);}else{pmap.put("shenfenzheng", shenfenzheng);}
		if(beizhu==null||beizhu.equals("")){pmap.put("beizhu", null);}else{pmap.put("beizhu", beizhu);}
		
		int total=yishengService.getCount(pmap);
		pageBean.setTotal(total);
		List<Yisheng> list=yishengService.getByPage(pmap);
		map.put("page", pageBean);
		map.put("list", list);
		session.setAttribute("p", 1);
		return "yishenglist";
	}
	@RequestMapping("ysListtp.do")
	public String ysListtp(@RequestParam(value="page",required=false)String page,
			ModelMap map,HttpSession session,Yisheng yisheng, String yishenggonghao, String yishengxingming, String mima, String xingbie, String zhicheng, String suozaikeshi, String zhuzhizhengzhuang, String zhaopian, String lianxidianhua, String shenfenzheng, String beizhu, String issh){
		if(page==null||page.equals("")){
			page="1";
		}
		PageBean pageBean=new PageBean(Integer.parseInt(page), 8);
		Map<String, Object> pmap=new HashMap<String,Object>();
		pmap.put("pageno", pageBean.getStart());
		pmap.put("pageSize", 8);
		if(yishenggonghao==null||yishenggonghao.equals("")){pmap.put("yishenggonghao", null);}else{pmap.put("yishenggonghao", yishenggonghao);}
		if(yishengxingming==null||yishengxingming.equals("")){pmap.put("yishengxingming", null);}else{pmap.put("yishengxingming", yishengxingming);}
		if(mima==null||mima.equals("")){pmap.put("mima", null);}else{pmap.put("mima", mima);}
		if(xingbie==null||xingbie.equals("")){pmap.put("xingbie", null);}else{pmap.put("xingbie", xingbie);}
		if(zhicheng==null||zhicheng.equals("")){pmap.put("zhicheng", null);}else{pmap.put("zhicheng", zhicheng);}
		if(suozaikeshi==null||suozaikeshi.equals("")){pmap.put("suozaikeshi", null);}else{pmap.put("suozaikeshi", suozaikeshi);}
		if(zhuzhizhengzhuang==null||zhuzhizhengzhuang.equals("")){pmap.put("zhuzhizhengzhuang", null);}else{pmap.put("zhuzhizhengzhuang", zhuzhizhengzhuang);}
		if(zhaopian==null||zhaopian.equals("")){pmap.put("zhaopian", null);}else{pmap.put("zhaopian", zhaopian);}
		if(lianxidianhua==null||lianxidianhua.equals("")){pmap.put("lianxidianhua", null);}else{pmap.put("lianxidianhua", lianxidianhua);}
		if(shenfenzheng==null||shenfenzheng.equals("")){pmap.put("shenfenzheng", null);}else{pmap.put("shenfenzheng", shenfenzheng);}
		if(beizhu==null||beizhu.equals("")){pmap.put("beizhu", null);}else{pmap.put("beizhu", beizhu);}
		
		int total=yishengService.getCount(pmap);
		pageBean.setTotal(total);
		List<Yisheng> list=yishengService.getByPage(pmap);
		map.put("page", pageBean);
		map.put("list", list);
		session.setAttribute("p", 1);
		return "yishenglisttp";
	}
	
	@RequestMapping("deleteYisheng.do")
	public String deleteYisheng(int id,HttpServletRequest request,HttpSession session){
		yishengService.delete(id);
		return "redirect:"+request.getHeader("Referer")+"?ok=2";
	}
	
	@RequestMapping("quchongYisheng.do")
	public void quchongYisheng(Yisheng yisheng,HttpServletResponse response){
		   Map<String,Object> map=new HashMap<String,Object>();
		   map.put("yishenggonghao", yisheng.getYishenggonghao());
		   System.out.println("yishenggonghao==="+yisheng.getYishenggonghao());
		   System.out.println("yishenggonghao222==="+yishengService.quchongYisheng(map));
		   JSONObject obj=new JSONObject();
		   if(yishengService.quchongYisheng(map)!=null){
				 obj.put("info", "ng");
			   }else{
				   obj.put("info", "医生工号可以用!");
				  
			   }
		   response.setContentType("text/html;charset=utf-8");
		   PrintWriter out=null;
		   try {
			out=response.getWriter();
			out.print(obj);
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			out.close();
		}
	}
}

测试 

本系统在进行测试的时候选择的主要是自己的电脑,为了保证测试的严谨性也借用了同学的电脑进行测试。性能在整个软件测试阶段是非常重要的,我选择了LoadRunner作为性能测试的工具。LoadRunner的使用非常简单,首先需要在LoadRunner中录入自己要操作的功能脚本,然后输入测试次数就可以进行重复的性能测试了。除了使用自动化测试工具之外,大部分的性能测试都是通过多打开几个浏览器窗口进行的,比如测试多人同时访问网站、多人同时进行下单的操作。接下来以用户注册模块为例对本系统的单元测试进行讲解,以下为用户注册模块的测试用例及测试结果:

1. 用户名:123456 密码123456 确认密码123456

第一条测试数据预期的结果为注册失败,预期的错误提示为用户名必须由六位及以上的字符组成且第一位不能是数字。经过使用LoadRunner的多次自动化测试,最终结果均在预期的结果之中。

2. 用户名:zhangsan密码123 确认密码123

对于本系统的注册功能来说,密码必须由六位以上的字符组成,但测试数据中的密码长度为三位。所以,第二条测试数据的预期测试结果为失败,提示信息为密码长度不能少于六位。经过多次测试,本条测试用例所属的模块不存在缺陷。

3. 用户名:zhangsan 密码123456 确认密码12345

本系统的注册功能使用的表单验证为JavaScript验证,在密码和确认密码这两个密码框中使用了比较验证,JavaScript会比较用户输入的这两个值,如果两者不一致,在浏览器端就无法通过验证,预期的结果为注册失败,错误提示信息为密码与确认密码不一致。经过测试,本模块所对应的代码不存在缺陷。

4. 用户名:zhangsan密码123456 确认密码123456

本条测试数据符合本系统对账号的格式要求,预期的测试结果为注册成功,并跳转到用户首页,而最终的测试结果也与之相符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1559181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TikTok直播专线:解决出海网络问题痛点,提升商业效率

近年来&#xff0c;TikTok作为全球最受欢迎的社交媒体平台之一&#xff0c;成为商家获取商机与市场的重要平台。然而&#xff0c;尽管商家纷纷进入TikTok&#xff0c;试图借助其强大的社交网络进行产品推广和销售&#xff0c;但在TikTok平台进行直播时&#xff0c;往往会遇到网…

何时应用 RAG 与微调

充分发挥 LLM 的潜力需要在检索增强生成&#xff08;RAG&#xff09;和微调之间选择正确的技术。 让我们来看看何时对 LLM、较小的模型和预训练模型使用 RAG 与微调。我们将介绍&#xff1a; LLM 和 RAG 的简要背景RAG 相对于微调 LLM 的优势何时针对不同模型大小对 RAG 进行…

WebGIS 之 vue3+vite+ceisum

1.项目搭建node版本在16以上 1.1创建项目 npm create vite 项目名 1.2选择框架 vuejavaScript 1.3进入项目安装依赖 cd 项目名 npm install 1.4安装cesium依赖 pnpm i cesium vite-plugin-cesium 1.5修改vite.config.js文件 import { defineConfig } from vite import vue fr…

labelme AI 模型运用

一、lebelme 1、界面介绍 点击上图位置&#xff0c;选择对应的模型。这里我每个模型都测试了一下&#xff0c;EfficientSam这个模型最好用&#xff0c;准确率和速度都ok。 2、使用方法 目标框标注方法&#xff1a;点左上角【编辑】-> 【Create Ai-Mask】就可以标志了&…

在 Three.js 中,OBJExporter 是一个用于将 Three.js 中的场景导出为 OBJ 格式的类。

demo案例 在 Three.js 中&#xff0c;OBJExporter 是一个用于将 Three.js 中的场景导出为 OBJ 格式的类。下面是关于它的入参、出参、属性和方法的解释&#xff1a; 类名&#xff1a;OBJExporter 构造函数&#xff1a; THREE.OBJExporter()说明&#xff1a; 创建一个 OBJE…

2d导入人物素材进行分割后设置图层

1、设置分辨率大小 2、相机调整大小&#xff0c;要符合场景 3、选择2D sprite 编辑器 或者 点击这个也行 4、分割图像 5、设置过滤模式 6、图层设置

CQI-17:2021 V2 英文 、中文版。特殊过程:电子组装制造-锡焊系统评审标准

锡焊作为一个特殊的工艺过程&#xff0c;由于其材料特性的差异性、工艺参数的复杂性和过程控制的不确定性&#xff0c;长期以来一直视为汽车零部件制造业的薄弱环节&#xff0c;并将很大程度上直接导致整车产品质量的下降和召回风险的上升。 美国汽车工业行动集团AIAG的特别工…

MySQL 之 数据库操作 及 表操作

&#x1f389;欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ &#x1f389;感谢各位读者在百忙之中抽出时间来垂阅我的文章&#xff0c;我会尽我所能向的大家分享我的知识和经验&#x1f4d6; &#x1f389;希望我们在一篇篇的文章中能够共同进步&#xff01;&#xff01;&…

共享办公室行业面临的最大挑战是什么,未来有哪些可能的发展方向

共享办公室行业虽然发展迅速&#xff0c;但也面临着一些挑战和需要解决的问题。咱们来聊聊这行业的最大挑战和未来可能的发展方向。 面临的最大挑战&#xff1a; 市场竞争加剧&#xff1a;随着共享办公室的火热&#xff0c;越来越多的玩家进入市场&#xff0c;竞争变得异常激烈…

CatalyzeCDN-发现真实IP

简介 CatalyzeCDN用与调用Fofa接口&#xff0c;将查询结果进行整理发现其真实IP 使用说明 在同目录下的config.ini配置好Fofa key ./CatalyzeCDN -h # 查看帮助信息 从根域发现真实IP并列出相应资产 ./CatalyzeCDN -r baidu.com 从IP查询相应资产 ./CatalyzeCDN -i 项目…

VS Code常用前端开发插件和基础配置

VS Code插件安装 VS Code提供了非常丰富的插件功能&#xff0c;根据你的需要&#xff0c;安装对应的插件可以大大提高开发效率。 完成前端开发&#xff0c;常见插件介绍&#xff1a; 1、Chinese (Simplified) Language Pack 适用于 VS Code 的中文&#xff08;简体&#xff…

Kubernetes(K8S)学习(二):K8S常用组件

K8S常用组件 一、 Controllers1、ReplicationController(RC)2、ReplicaSet(RS)3、Deployment 二、Labels and Selectors三、Namespace&#xff08;命名空间&#xff09;1、简介2、测试2.1、创建namespace2.2、创建pod 四、Network1、集群内&#xff1a;同一个Pod中的容器通信2、…

【C++入门】输入输出、命名空间、缺省参数、函数重载、引用、内联函数、auto、基于范围的for循环

目录 命名空间 命名空间的定义 命名空间的使用 输入输出 缺省参数 函数重载 引用 常引用 引用的使用场景 内联函数 auto 基于范围的for循环 命名空间 请看一段C语言的代码&#xff1a; #include <stdio.h> #include <stdlib.h>int rand 10;int main…

StringBuffer与StringBuilder

1.区别 (1). String : 不可变字符序列. (2). StringBuffer : 可变字符序列.线程安全&#xff0c;但效率低. (3). StringBuilder : 可变字符序列.线程不安全&#xff0c;但效率高. 既然StringBuffer与StringBuilder都是可变字符序列&#xff0c;但二者咋区分开呢&#xff1f…

【git】git使用手册

目录 一 初始化 1.1 账号配置 1.2 ssh生成 1.2.1 配置ssh 1.2.2 测试SSH 1.3 初始化本地仓库并关联远程仓库 二 使用 2.1 上传 2.2 拉取 三 问题 3.1 关联失败 一 初始化 git的安装很简单,下载后大部分进行下一步完成即可----->地址: git工具下载 1.1 账号配置…

(1)半导体设备之sorter机(上)

01、什么是sorter 其实sorter 就是分选机&#xff0c;大家日常生活买的土豆&#xff0c;苹果&#xff0c;会用到这个&#xff0c; 大家日常用的硬币&#xff0c;游戏币&#xff0c;都是用sorter来进行挑选的&#xff0c;否则人工数硬币又累又苦逼&#xff0c;钱再对不上号&…

【Entity Framework】创建并配置模型

【Entity Framework】创建并配置模型 文章目录 【Entity Framework】创建并配置模型一、概述二、使用fluent API配置模型三、分组配置四、对实体类型使用EntityTypeConfigurationAttribute四、使用数据注释来配置模型五、实体类型5.1 在模型中包含类型5.2 从模型中排除类型5.3 …

手写简易操作系统(十七)--编写键盘驱动

前情提要 上一节我们实现了锁与信号量&#xff0c;这一节我们就可以实现键盘驱动了&#xff0c;访问键盘输入的数据也属于临界区资源&#xff0c;所以需要锁的存在。 一、键盘简介 之前的 ps/2 键盘使用的是中断驱动的&#xff0c;在当时&#xff0c;按下键盘就会触发中断&a…

【STM32嵌入式系统设计与开发】——12IWDG(独立看门狗应用)

这里写目录标题 一、任务描述二、任务实施1、ActiveBeep工程文件夹创建2、函数编辑&#xff08;1&#xff09;主函数编辑&#xff08;2&#xff09;USART1初始化函数(usart1_init())&#xff08;3&#xff09;USART数据发送函数&#xff08; USART1_Send_Data&#xff08;&…

【C++】递归快速幂

class Solution { public:double myPow(double x, int n) {if(n<0){long long a -(long long)n;double temp dfs(x,a);return 1.0/temp;}else{double temp dfs(x,n);return temp;}}double dfs(double x,int n)//给一个数&#xff0c;给一个n&#xff0c;求出x的n次幂{//递…