计算机毕业设计选题推荐-宠物管理系统-Java/Python项目实战

news2024/11/16 1:28:32

作者主页:IT研究室✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

文章目录

  • 一、前言
  • 二、开发环境
  • 三、系统界面展示
  • 四、代码参考
  • 五、论文参考
  • 六、系统视频
  • 结语

一、前言

随着技术的快速发展,特别是云计算、大数据等技术的应用,宠物行业也迎来了数字化转型的机遇。据统计,国内宠物店管理系统市场正处于快速发展阶段,但多数宠物店对此类系统的认识和了解有限,许多宠物店还在采用传统的纸质管理方式,存在效率低下、信息不透明等问题。

现有的宠物店管理系统普遍存在一些问题,如功能单一、用户体验不佳、数据化和智能化水平不高等。这些问题制约了宠物店管理系统在提升宠物店运营效率和服务质量方面的潜力。

本课题旨在设计并实现一个基于Spring Boot和Vue的宠物店管理系统,该系统将集成宠物信息管理、库存管理、订单处理、用户管理等多个模块,提供全面的宠物店管理解决方案。系统将采用现代化的信息技术,如Spring Boot框架和Vue.js前端框架,实现宠物店管理的数字化、智能化和移动化。

在宠物管理系统中,管理员负责系统用户账户的创建与维护、宠物信息的录入与更新、库存管理、订单处理、用户管理、以及系统公告的发布与更新;医生或兽医可以记录宠物的诊疗信息、管理宠物健康档案、跟踪宠物的健康状况;用户则能够浏览宠物信息、预约诊疗服务、购买宠物用品、接收健康提示和通知。系统通过这些功能模块的整合,旨在为宠物主人、兽医和管理员提供一个全面、互动的宠物健康管理平台。

本课题的研究具有重要的理论意义和实际意义。从理论角度来看,它为宠物店管理领域提供了新的研究思路,即如何利用信息技术提升宠物店的管理效率和服务质量。从实际角度来看,该系统的应用将有助于宠物店实现规范化、标准化管理,提高服务质量,吸引更多客户,促进宠物店的发展。同时,系统的推广应用也将推动宠物行业的数字化转型,为宠物店提供更便捷、高效的管理工具。

二、开发环境

  • 开发语言:Java/Python
  • 数据库:MySQL
  • 系统架构:B/S
  • 后端:SpringBoot/SSM/Django/Flask
  • 前端:Vue

三、系统界面展示

  • 宠物管理系统界面展示:
    用户-就诊预约:
    用户-就诊预约
    医生-产看预约信息:
    医生-产看预约信息
    医生-病例登记:
    医生-病例登记

四、代码参考

  • 项目实战代码参考:
@RestController
@Controller
@RequestMapping("/chongwurenling")
public class ChongwurenlingController {
    private static final Logger logger = LoggerFactory.getLogger(ChongwurenlingController.class);

    @Autowired
    private ChongwurenlingService chongwurenlingService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;

    //级联表service
    @Autowired
    private YonghuService yonghuService;



    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("用户".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }
        PageUtils page = chongwurenlingService.queryPage(params);

        //字典表数据转换
        List<ChongwurenlingView> list =(List<ChongwurenlingView>)page.getList();
        for(ChongwurenlingView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        ChongwurenlingEntity chongwurenling = chongwurenlingService.selectById(id);
        if(chongwurenling !=null){
            //entity转view
            ChongwurenlingView view = new ChongwurenlingView();
            BeanUtils.copyProperties( chongwurenling , view );//把实体数据重构到view中

                //级联表
                YonghuEntity yonghu = yonghuService.selectById(chongwurenling.getYonghuId());
                if(yonghu != null){
                    BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setYonghuId(yonghu.getId());
                }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody ChongwurenlingEntity chongwurenling, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,chongwurenling:{}",this.getClass().getName(),chongwurenling.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("用户".equals(role))
            chongwurenling.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        Wrapper<ChongwurenlingEntity> queryWrapper = new EntityWrapper<ChongwurenlingEntity>()
            .eq("chongwurenling_name", chongwurenling.getChongwurenlingName())
            .eq("chongwulingyang_types", chongwurenling.getChongwulingyangTypes())
            .eq("yonghu_id", chongwurenling.getYonghuId())
            .eq("jieshu_types", chongwurenling.getJieshuTypes())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        ChongwurenlingEntity chongwurenlingEntity = chongwurenlingService.selectOne(queryWrapper);
        if(chongwurenlingEntity==null){
            chongwurenling.setCreateTime(new Date());
            chongwurenlingService.insert(chongwurenling);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody ChongwurenlingEntity chongwurenling, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,chongwurenling:{}",this.getClass().getName(),chongwurenling.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("用户".equals(role))
            chongwurenling.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        //根据字段查询是否有相同数据
        Wrapper<ChongwurenlingEntity> queryWrapper = new EntityWrapper<ChongwurenlingEntity>()
            .notIn("id",chongwurenling.getId())
            .andNew()
            .eq("chongwurenling_name", chongwurenling.getChongwurenlingName())
            .eq("chongwulingyang_types", chongwurenling.getChongwulingyangTypes())
            .eq("yonghu_id", chongwurenling.getYonghuId())
            .eq("jieshu_types", chongwurenling.getJieshuTypes())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        ChongwurenlingEntity chongwurenlingEntity = chongwurenlingService.selectOne(queryWrapper);
        if("".equals(chongwurenling.getChongwurenlingPhoto()) || "null".equals(chongwurenling.getChongwurenlingPhoto())){
                chongwurenling.setChongwurenlingPhoto(null);
        }
        if(chongwurenlingEntity==null){
            //  String role = String.valueOf(request.getSession().getAttribute("role"));
            //  if("".equals(role)){
            //      chongwurenling.set
            //  }
            chongwurenlingService.updateById(chongwurenling);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        chongwurenlingService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }

    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        try {
            List<ChongwurenlingEntity> chongwurenlingList = new ArrayList<>();//上传的东西
            Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
            Date date = new Date();
            int lastIndexOf = fileName.lastIndexOf(".");
            if(lastIndexOf == -1){
                return R.error(511,"该文件没有后缀");
            }else{
                String suffix = fileName.substring(lastIndexOf);
                if(!".xls".equals(suffix)){
                    return R.error(511,"只支持后缀为xls的excel文件");
                }else{
                    URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
                    File file = new File(resource.getFile());
                    if(!file.exists()){
                        return R.error(511,"找不到上传文件,请联系管理员");
                    }else{
                        List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
                        dataList.remove(0);//删除第一行,因为第一行是提示
                        for(List<String> data:dataList){
                            //循环
                            ChongwurenlingEntity chongwurenlingEntity = new ChongwurenlingEntity();
//                            chongwurenlingEntity.setChongwurenlingName(data.get(0));                    //标题 要改的
//                            chongwurenlingEntity.setChongwulingyangTypes(Integer.valueOf(data.get(0)));   //类型 要改的
//                            chongwurenlingEntity.setChongwurenlingPhoto("");//照片
//                            chongwurenlingEntity.setYonghuId(Integer.valueOf(data.get(0)));   //发布用户 要改的
//                            chongwurenlingEntity.setJieshuTypes(Integer.valueOf(data.get(0)));   //是否找到主人 要改的
//                            chongwurenlingEntity.setChongwurenlingContent("");//照片
//                            chongwurenlingEntity.setCreateTime(date);//时间
                            chongwurenlingList.add(chongwurenlingEntity);


                            //把要查询是否重复的字段放入map中
                        }

                        //查询是否重复
                        chongwurenlingService.insertBatch(chongwurenlingList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }




    /**
    * 前端列表
    */
    @IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));

        // 没有指定排序字段就默认id倒序
        if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){
            params.put("orderBy","id");
        }
        PageUtils page = chongwurenlingService.queryPage(params);

        //字典表数据转换
        List<ChongwurenlingView> list =(List<ChongwurenlingView>)page.getList();
        for(ChongwurenlingView c:list)
            dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段
        return R.ok().put("data", page);
    }

    /**
    * 前端详情
    */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        ChongwurenlingEntity chongwurenling = chongwurenlingService.selectById(id);
            if(chongwurenling !=null){


                //entity转view
                ChongwurenlingView view = new ChongwurenlingView();
                BeanUtils.copyProperties( chongwurenling , view );//把实体数据重构到view中

                //级联表
                    YonghuEntity yonghu = yonghuService.selectById(chongwurenling.getYonghuId());
                if(yonghu != null){
                    BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setYonghuId(yonghu.getId());
                }
                //修改对应字典表字段
                dictionaryService.dictionaryConvert(view, request);
                return R.ok().put("data", view);
            }else {
                return R.error(511,"查不到数据");
            }
    }


    /**
    * 前端保存
    */
    @RequestMapping("/add")
    public R add(@RequestBody ChongwurenlingEntity chongwurenling, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,chongwurenling:{}",this.getClass().getName(),chongwurenling.toString());
        Wrapper<ChongwurenlingEntity> queryWrapper = new EntityWrapper<ChongwurenlingEntity>()
            .eq("chongwurenling_name", chongwurenling.getChongwurenlingName())
            .eq("chongwulingyang_types", chongwurenling.getChongwulingyangTypes())
            .eq("yonghu_id", chongwurenling.getYonghuId())
            .eq("jieshu_types", chongwurenling.getJieshuTypes())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        ChongwurenlingEntity chongwurenlingEntity = chongwurenlingService.selectOne(queryWrapper);
        if(chongwurenlingEntity==null){
            chongwurenling.setCreateTime(new Date());
        //  String role = String.valueOf(request.getSession().getAttribute("role"));
        //  if("".equals(role)){
        //      chongwurenling.set
        //  }
        chongwurenlingService.insert(chongwurenling);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


}

@RequestMapping("users")
@RestController
public class UsersController {
	
	@Autowired
	private UsersService usersService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		R r = R.ok();
		r.put("token", token);
		r.put("role",user.getRole());
		r.put("userId",user.getId());
		return r;
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UsersEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        usersService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        usersService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UsersEntity user){
        EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
    	PageUtils page = usersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UsersEntity user){
       	EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", usersService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UsersEntity user = usersService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Integer id = (Integer)request.getSession().getAttribute("userId");
        UsersEntity user = usersService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UsersEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
    	user.setPassword("123456");
        usersService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UsersEntity user){
//        ValidatorUtils.validateEntity(user);
        usersService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        usersService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

五、论文参考

  • 计算机毕业设计选题推荐-宠物管理系统论文参考:
    计算机毕业设计选题推荐-宠物管理系统论文参考

六、系统视频

宠物管理系统项目视频:

计算机毕业设计选题推荐-宠物管理系统-Java/Python

结语

计算机毕业设计选题推荐-宠物管理系统-Java/Python项目实战
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:⬇⬇⬇

精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

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

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

相关文章

【彻底关闭win10 or 11系统自动更新】

直接上干货 win10或者win11自动更新后系统有bug&#xff0c;太闹心了&#xff0c;是时候选择一个稳定版本彻底关闭更新了 第一步&#xff1a; 在win11左下方搜索框输入&#xff1a;powershell&#xff0c; 选择「Windows PowerShell (管理员)」 第二步&#xff1a; 在 Wind…

FreeSWITCH

1概述 FreeSWITCH https://signalwire.com/freeswitch是一个开源的电话交换平台。官方给它的定义是–世界上第一个跨平台的、伸缩性极好的、免费的、多协议的电话软交换平台。由这个定义我们可以得出以下几点: FreeSWITCH是跨平台的。它能原生地运行于Windows、MaxOSX、Linux、…

智启万象 | Web 开发智能升级、简单易用

AI 的融入使 Web 的功能更加强大 同时也更加简单易用 一起回顾 2024 Google 开发者大会 了解 Web 开发 UI 功能和 OS 集成的最新创新 以及如何通过这些创新来打造卓越的应用体验 Web 不断的革新与发展&#xff0c;不仅为全球数十亿用户提供了丰富多样的在线体验&#xff0c;也为…

HCIP | 重发布实验

要求&#xff1a; 1.如图搭建网络拓扑&#xff0c;所有路由器各自创建一个环回接口&#xff0c;合理规划IP地址 2.R1-R2-R3-R4-R6之间使用OSPF协议&#xff0c;R4-R5-R6之间使用RIP协议 3.R1环回重发布方式引入OSPF网络 4.R4/R6上进行双点双向重发布 5.分析网络中出现路由…

人工智能在肿瘤亚型分类领域的研究进展|顶刊速递·24-08-13

小罗碎碎念 文献日推主题&#xff1a;人工智能在肿瘤亚型分类领域的研究进展 昨天晚上在研究鼻咽癌的病理学诊断指南&#xff0c;看到了下面这段话的时候&#xff0c;我问了自己一个问题——通过AI识别出肿瘤亚型的根本目的是什么&#xff1f;可以衔接哪些具体的下游任务&#…

「栈」实现LIFO栈(先进后出栈|堆栈|stack)的功能 / 手撕数据结构(C++)

概述 栈&#xff0c;是一种基本的数据结构&#xff0c;也是一种数据适配器。它在底层上以链表方法或动态数组方法实现。 队列的显著特点是他的添加元素与删除元素操作&#xff1a;先加入的元素总是被先弹出。 一个队列应该应该是这样的&#xff1a; --------------STACK----…

UE网络同步(一) —— 一个项目入门UE网络同步之概念解释

最近在学习UE网络同步&#xff0c;发现了一个非常好的教程&#xff0c;并且附带了项目文件&#xff0c;这里从这个小项目入手&#xff0c;理解UE的网络同步 教程链接&#xff1a;https://www.youtube.com/watch?vJOJP0CvpB8w 项目链接&#xff1a;https://github.com/awforsyt…

单片机内存映射

在一些桌面程序中&#xff0c;整个内存映射是通过虚拟内存来进行管理的&#xff0c;使用一种称为内存管理单元(MMU)的硬件结构来将程序的内存映射到物理RAM。在对于 RAM 紧缺的嵌入式系统中&#xff0c;是缺少 MMU 内存管理单元的。 因此在一些嵌入式系统中&#xff0c;比如常用…

Python 设计模式之适配者模式

文章目录 从电源适配器谈起实现适配器模式的两种方式object adapterclass adapter 从电源适配器谈起 适配者模式属于结构型设计模式&#xff0c;它的目的是使不兼容的两个对象能够相互工作。 常见的生活例子&#xff1a;去欧美国家旅游时&#xff0c;由于插口和电压不一样&am…

2024年【四川省安全员B证】新版试题及四川省安全员B证模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 四川省安全员B证新版试题是安全生产模拟考试一点通总题库中生成的一套四川省安全员B证模拟考试&#xff0c;安全生产模拟考试一点通上四川省安全员B证作业手机同步练习。2024年【四川省安全员B证】新版试题及四川省安…

苍穹外卖项目DAY01

苍穹外卖项目Day01 1、软件开发整体介绍 1.1、软件开发流程 1.2、角色分工 项目经理&#xff1a;对整个项目负责&#xff0c;任务分配、把控进度产品经理&#xff1a;进行需求调研&#xff0c;输出需求调研文档、产品原型等UI设计师&#xff1a;根据产品原型输出界面效果图架…

第130天:内网安全-横向移动PTH哈希PTT 票据PTK密匙Kerberos密码喷射

环境搭建 这里这个环境继续上一篇文章搭建的环境 案例一&#xff1a;域横向移动-PTH-Mimikatz&NTLM 什么是pth&#xff1f; PTH Pass The Hash &#xff0c;通过密码散列值 ( 通常是 NTLM Hash) 来进行攻击。在域环境中&#xff0c;用户登录计算机时使用的域账号&…

Linux_Shell判断循环,函数实例,状态码-07

一&#xff1a;分支语句 结束语句等于开始语句得单词反着写 1.1 if语句 if 表达式 then逻辑处理 elif 表达式 then逻辑处理 else逻辑处理 fi 1.1.1 单支语句 1.1.2 双分支语句 1.1.3 多分支语句 1.2 case条件结构语句 1.2.1 case语法结构 case 表达式 in 值) ;; esac 1.2…

Redis14-缓存同步

目录 缓存同步策略 安装Canal 监听Canal 缓存同步策略 缓存数据同步的常见方式有三种&#xff1a; 1.设置有效期&#xff1a;给缓存设置有效期&#xff0c;到期后自动删除&#xff0c;再次查询时更新 优势&#xff1a;简单、方便缺点&#xff1a;时效性差&#xff0c;缓存…

【CPP】CPP的STL(前篇)

目录 12 STL(前篇)12.1 什么是STL12.2 string类12.2.1 什么是string12.2.2 string类的构造函数12.2.3 string类的析构函数12.2.4 string类的[]重载12.2.5 string类的迭代器的简单了解12.2.6 auto关键字12.2.7 范围for12.2.8 反向迭代器 -- reverse12.2.9 const迭代器12.2.10 CP…

superset定制化配置修改总结

1.需要想用iframe引入dashboard时&#xff0c; URL 参数可用于修改仪表板的呈现方式&#xff0c;standalone0 属性枚举描述standalone0仪表盘正常显示1顶部导航已隐藏2顶部导航 标题被隐藏3顶部导航 标题 顶级标签被隐藏show_filters0渲染没有过滤栏的仪表板1&#xff08;默…

深度学习 —— 个人学习笔记16(目标检测和边界框、目标检测数据集)

声明 本文章为个人学习使用&#xff0c;版面观感若有不适请谅解&#xff0c;文中知识仅代表个人观点&#xff0c;若出现错误&#xff0c;欢迎各位批评指正。 三十二、目标检测和边界框 import torch import matplotlib.pyplot as plt from matplotlib_inline import backend_…

Python爬虫开发:BeautifulSoup、Scrapy入门

在现代网络开发中&#xff0c;网络爬虫是一个非常重要的工具。它可以自动化地从网页中提取数据&#xff0c;并且可以用于各种用途&#xff0c;如数据收集、信息聚合和内容监控等。在Python中&#xff0c;有多个库可以用于爬虫开发&#xff0c;其中BeautifulSoup和Scrapy是两个非…

CVE-2024-38077:Windows远程桌面授权服务的‘隐形杀手’——深度剖析与紧急防护策略

文章目录 CVE-2024-38077&#xff1a;Windows远程桌面授权服务的‘隐形杀手’——深度剖析与紧急防护策略1 漏洞描述2 漏洞影响2.1 处置优先级&#xff1a;高2.2 影响版本 3 漏洞检测3.1 漏洞检测工具3.2 漏洞检测工具使用介绍3.2.1 漏洞检测工具当前支持三种方式检测3.2.2 漏洞…

常见的三个事务问题(脏读/幻读/不可重复读)

常见的三个事务问题&#xff08;脏读/幻读/不可重复读&#xff09; 脏读 脏读&#xff08;Dirty Read&#xff09;是指在一个事务中&#xff0c;读取了另一个未提交事务的数据。 具体来说&#xff0c;脏读的过程如下&#xff1a; 1. 事务A开始&#xff0c;对某一行数据进行…