基于SSM医院病历管理系统

基于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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】vector的介绍及使用说明(类模版的实现方式,顺序存储与动态数组,迭代器iterator的运用,vector的增删查改)

目录 00.引言 01.vector的介绍 类模版 动态分配内存 顺序存储 02.vector的使用 构造函数 迭代器iterator 1.分类&#xff1a; 2.运用&#xff1a; 扩容 1.resize() 2.reverse() 增删查改 1.增加 2.删除 3.查找 4.修改 00.引言 以前我们讲过string类&#xff0…

如何系统的自学python?

系统地自学Python是一个循序渐进的过程&#xff0c;以下是一份详细的指南&#xff0c;帮助你从零开始逐步掌握这门语言&#xff1a; 1、了解Python及其应用场景&#xff1a; 阅读关于Python的简介&#xff0c;理解它为何流行&#xff0c;以及在哪些领域&#xff08;如Web开发…

stream流中的坑,peek/map/filter

起因 所在系统为一个对账系统&#xff0c;涉及的业务为发布账单&#xff0c;数据结构定的是供应商账单发布&#xff0c;生成企业账单和个人账单。发布账单处理完本系统业务后&#xff0c;需要生成站内通知和调用外部接口生成短信通知。后来增加需求&#xff0c;需要在发布完成…

【Qt 学习笔记】Day1 | Qt 开发环境的搭建

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Day1 | Qt 开发环境的搭建 文章编号&#xff1a;Qt 学习笔记 / 02 文…

C++初学者:优雅创建第一个窗口

我想学习C做一些实用的程序&#xff0c;但是我不想在软件界面上花太多的时间&#xff0c;可是每每就是界面影响我的思绪。 今天学习C类的包装知识&#xff0c;终于整出了一个我的界面类&#xff0c;虽然封装水平很弱&#xff0c; 这次就用这个类&#xff0c;写了自己工作上常用…

Node.js中Router的使用

文章目录 介绍router的优点1.导入Express和创建Router&#xff1a;2. 定义路由&#xff1a;3.将router暴露到模块外&#xff1a;4. 将Router挂载到Express应用中&#xff1a;4.1.引入router4.2.使用中间件让router在Express应用中生效(三种写法) 5. 完整示例&#xff1a;5.1.编…

Vue3+Vite Nginx部署 跨域

打包项目 webstorm打开项目之后&#xff0c;在Terminal执行打包命令 pnpm run build:prod 复制到Nginx 打包完成之后,生成的包在根目录dist&#xff0c;把dist目录拷贝到Nginx放网站目录下&#xff1a;\nginx-1.25.2\html\divided &#xff0c;dist改名了divided 修改配置…

【JavaSE】内部类

目录 前言 内部类 内部类的种类 1. 实例内部类 2 静态内部类 3 匿名内部类 4 局部内部类 结语 前言 内部类是我们前面学习遗留下来的知识点&#xff0c;在学完接口后才能更好的理解它&#xff0c;因此等到现在才讲 内部类 在Java中&#xff0c;我们可以将A类定义在B…

短视频素材哪里去找?五大网站助你轻松解决素材难题!

你好&#xff0c;短视频小能手们&#xff0c;是不是经常在为找不到好看的视频素材而烦恼&#xff1f;不用怕&#xff0c;今天我要为你们揭秘五个超赞的视频素材网站&#xff0c;让你的视频素材&#xff0c;制作事半功倍&#xff0c;轻松赢得点赞和关注&#xff01;瞬间成为热门…

关于Windows中AppData的相关知识,看这篇文章就可以了

如果AppData文件夹占用了你电脑上的太多空间,则需要清理AppData文件夹。下面是一些帮助你在Windows计算机上进行AppData清理的方法。 什么是AppData文件夹 AppData文件夹是保存应用程序数据和设置的位置。每个Windows计算机在C驱动器上都有一个AppData文件夹。AppData文件夹…

自己动手用ESP32手搓一个智能机器人:ESP32-CAM AI Robot

目录 介绍 硬件需求 软件需求 步骤 总结 源码下载 介绍 ESP32-CAM是一款集成了Wi-Fi和蓝牙功能的微控制器模块&#xff0c;同时还集成了摄像头接口&#xff0c;使其成为一个非常适合构建智能机器人的选择。在本项目中&#xff0c;我将向您展示如何使用ESP32-CAM模块构建…

C# winform校验文件版本差异及版本号

界面 代码 using System.Diagnostics;namespace VersionTool {public partial class Form1 : Form{List<string> fileNmaes new List<string>() { "PhotoMes.Base.dll", "PhotoMes.App.exe", "PhotoMes.Cameras.dll" };public F…

JavaScript高级 —— 学习(二)

一、深入对象 &#xff08;一&#xff09;创建对象三种方式 1.利用对象字面量创建 <body><script>const obj {}</script> </body> 2.利用 new Object() 创建 <body><script>const obj new Object({uname: 一个人})console.log(obj)…

AcWing刷题(每日一题)-区间合并

挤牛奶 区间合并&#xff1a; &#xff08;写的有丢丢乱T_T&#xff09; from typing import List def merge(intervals: List[List[int]]) -> List[List[int]]:# 按照第一个元素从小到大进行排序intervals.sort(keylambda x: x[0])# 初始化一个新的数组new_list list()f…

《操作系统导论》第14章读书笔记:插叙:内存操作API

《操作系统导论》第14章读书笔记&#xff1a;插叙&#xff1a;内存操作API —— 杭州 2024-03-30 夜 文章目录 《操作系统导论》第14章读书笔记&#xff1a;插叙&#xff1a;内存操作API1.内存类型1.1.栈内存&#xff1a;它的申请和释放操作是编译器来隐式管理的&#xff0c;所…

Yolo 自制数据集dect训练改进

上一文请看 Yolo自制detect训练-CSDN博客 简介 如下图&#xff1a; 首先看一下每个图的含义 loss loss分为cls_loss, box_loss, obj_loss三部分。 cls_loss用于监督类别分类&#xff0c;计算锚框与对应的标定分类是否正确。 box_loss用于监督检测框的回归&#xff0c;预测框…

鸿蒙OS开发实战:【打造自己的搜索入口】

背景 几乎每家应用中都带有搜索功能&#xff0c;关于这个功能的页面不是特别复杂&#xff0c;但如果要追究其背后的一系列逻辑&#xff0c;可能是整个应用中最复杂的一个功能。今天主要实践目标&#xff0c;会抛开复杂的逻辑&#xff0c;尝试纯粹实现一个“搜索主页”&#xf…

STM32CubeIDE基础学习-USART串口通信实验(中断方式)

STM32CubeIDE基础学习-USART串口通信实验&#xff08;中断方式&#xff09; 文章目录 STM32CubeIDE基础学习-USART串口通信实验&#xff08;中断方式&#xff09;前言第1章 硬件介绍第2章 工程配置2.1 工程外设配置部分2.2 生成工程代码部分 第3章 代码编写第4章 实验现象总结 …

3D数据格式导出工具HOOPS Publish如何生成高质量3D PDF?

在当今数字化时代&#xff0c;从建筑设计到制造业&#xff0c;从医学领域到电子游戏开发&#xff0c;3D技术已经成为了不可或缺的一部分。在这个进程中&#xff0c;将3D模型导出为3D PDF格式具有重要的意义。同时&#xff0c;HOOPS Publish作为一个领先的解决方案&#xff0c;为…

Python算法学习

一、排序 排序算法是指将一组数据按照某种规则重新排列&#xff0c;使得数据呈现出递增或递减的顺序。常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。 1.冒泡排序 解释&#xff1a; 冒泡排序通过不断交换相邻两个元素的位置&#xff0c;使…