基于springboot的家政服务平台的设计与实现

news2024/11/19 11:24:55

背景

现代社会,由于经济不断发展,家政服务的数量也在不断的增加,随着家政服务的数量增多,人们对家政服务信息的需求也越来越高。

以往的家政服务管理平台的管理,一般都是纸质文件来管理家政服务信息,传统的管理方式已经无法满足现代人们的需求;使用家政服务管理平台, 首先可以大幅提高家政服务信息检索,只需输入家政服务相关信息就能在数秒内反馈想要的结果;其次可存储大量的家政服务信息,同时家政服务信息安全性有更高的保障;这些优点大大提高运营效率并节省运营成本。因此,开发家政服务管理平台对家政服务信息进行有效的管理是很必要的,不仅提高了家政服务管理效率,增加了用户信息安全性,方便用户及时反馈信息给管理员,增加了用户与管理员之间的互动交流,更能提高用户的体验强度。

本系统为了数据库结构的灵活性所以打算采用MySQL来设计数据库,而java技术,B/S架构则保证了较高的平台适应性。本文主要介绍了本系统的开发背景,所要完成的功能和开发的过程,主要说明了系统设计的重点、设计思想。

主要技术

2.1 SpringBoot

SpringBoot是一个全新开源的轻量级框架。基于Spring4.0设计,其不仅继承了Spring框架原来有的优秀特性,而且还通过简化配置文件来进一步简化了Spring应用的整个搭建以及开发过程。另外在原本的Spring中由于随着项目的扩大导入的jar包数量越来越大,随之出现了jar包版本之间的兼容性问题,而此时SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性问题得到了很好的解决。

SpringBoot可以看做是Spring的加强版本,但实质上都是Spring的相关技术,有了这些优秀的开源框架,程序员在开发过程中将事半功倍。

2.2 vue

  • 无需构建步骤,渐进式增强静态的 HTML
  • 在任何页面中作为 Web Components 嵌入
  • 单页应用 (SPA)
  • 全栈 / 服务端渲染 (SSR)
  • Jamstack / 静态站点生成 (SSG)
  • 开发桌面端、移动端、WebGL,甚至是命令行终端中的界面

系统架构

家政服务管理的工作量随着信息的不断发展和人们的自动化办公意识的不断增强变得越来越复杂,原有的系统已经满足不了相关工作人员的使用需求。为了解决这一问题,并且方便信息行业实施家政服务管理的工作,提高工作的效率,有必要利用现有家政服务行业的资源,开发出更好、更方便的家政服务管理平台。
本家政服务管理平台是把IT技术用到家政服务信息的管理中,它具有标准家政服务管理平台所具备的现实生活中完整的家政服务管理过程,完全的实现了虚拟现实。它可以收集和保存用户的信息,真正的实现了节约资源、提高使用效率、处理业务的同时实现了家政服务管理平台的功能。
家政服务管理平台的主要功能的结构如图。
在这里插入图片描述

数据库设计

由于数据库表较多,此处只展示部分的数据表设计。
在这里插入图片描述
在这里插入图片描述

系统详细设计

前台模块设计

系统首页的主要功能展示了首页、服务信息、公告信息、留言反馈、个人中心、后台管理等,用户可根据权限进行相应操作。
在这里插入图片描述

服务信息,在服务信息页面可以查看服务名称、 服务价格、服务简介、发布日期、合同信息等内容进行预约、详情或收藏等操作
在这里插入图片描述

管理员功能模块

管理员登录系统后,可以对首页、个人中心、用户管理、服务人员管理、服务信息管理、服务类型管理、服务预约管理、服务取消管理、服务分配管理、服务进度管理、评价信息管理、留言反馈、系统管理等功能进行相应的操作管理。
在这里插入图片描述
服务预约管理,在服务预约管理页面可以对索引、服务名称、服务类型、服务价格、预约时间、账号、姓名、手机号码、地址、下单时间、是否支付、审核回复、审核状态、审核等内容进行详情、取消、修改或删除等操作。
在这里插入图片描述

系统源码

由于代码较多,此处只展示部分代码。

服务预约入口代码

@RestController
@RequestMapping("/fuwuyuyue")
public class FuwuyuyueController {
    @Autowired
    private FuwuyuyueService fuwuyuyueService;


    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,FuwuyuyueEntity fuwuyuyue,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			fuwuyuyue.setZhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<FuwuyuyueEntity> ew = new EntityWrapper<FuwuyuyueEntity>();
		PageUtils page = fuwuyuyueService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fuwuyuyue), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,FuwuyuyueEntity fuwuyuyue, 
		HttpServletRequest request){
        EntityWrapper<FuwuyuyueEntity> ew = new EntityWrapper<FuwuyuyueEntity>();
		PageUtils page = fuwuyuyueService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fuwuyuyue), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(FuwuyuyueEntity fuwuyuyue){
        EntityWrapper< FuwuyuyueEntity> ew = new EntityWrapper< FuwuyuyueEntity>();
 		ew.allEq(MPUtil.allEQMapPre( fuwuyuyue, "fuwuyuyue")); 
		FuwuyuyueView fuwuyuyueView =  fuwuyuyueService.selectView(ew);
		return R.ok("查询服务预约成功").put("data", fuwuyuyueView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        FuwuyuyueEntity fuwuyuyue = fuwuyuyueService.selectById(id);
        return R.ok().put("data", fuwuyuyue);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        FuwuyuyueEntity fuwuyuyue = fuwuyuyueService.selectById(id);
        return R.ok().put("data", fuwuyuyue);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody FuwuyuyueEntity fuwuyuyue, HttpServletRequest request){
    	fuwuyuyue.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(fuwuyuyue);
        fuwuyuyueService.insert(fuwuyuyue);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody FuwuyuyueEntity fuwuyuyue, HttpServletRequest request){
    	fuwuyuyue.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(fuwuyuyue);
        fuwuyuyueService.insert(fuwuyuyue);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody FuwuyuyueEntity fuwuyuyue, HttpServletRequest request){
        //ValidatorUtils.validateEntity(fuwuyuyue);
        fuwuyuyueService.updateById(fuwuyuyue);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        fuwuyuyueService.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<FuwuyuyueEntity> wrapper = new EntityWrapper<FuwuyuyueEntity>();
		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("yonghu")) {
			wrapper.eq("zhanghao", (String)request.getSession().getAttribute("username"));
		}

		int count = fuwuyuyueService.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<FuwuyuyueEntity> ew = new EntityWrapper<FuwuyuyueEntity>();
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
            ew.eq("zhanghao", (String)request.getSession().getAttribute("username"));
		}
        List<Map<String, Object>> result = fuwuyuyueService.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<FuwuyuyueEntity> ew = new EntityWrapper<FuwuyuyueEntity>();
        String tableName = request.getSession().getAttribute("tableName").toString();
        if(tableName.equals("yonghu")) {
            ew.eq("zhanghao", (String)request.getSession().getAttribute("username"));
        }
        List<Map<String, Object>> result = fuwuyuyueService.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<FuwuyuyueEntity> ew = new EntityWrapper<FuwuyuyueEntity>();
        String tableName = request.getSession().getAttribute("tableName").toString();
        if(tableName.equals("yonghu")) {
            ew.eq("zhanghao", (String)request.getSession().getAttribute("username"));
        }
        List<Map<String, Object>> result = fuwuyuyueService.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);
    }

}

服务分配代码

@RestController
@RequestMapping("/fuwufenpei")
public class FuwufenpeiController {
    @Autowired
    private FuwufenpeiService fuwufenpeiService;


    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,FuwufenpeiEntity fuwufenpei,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			fuwufenpei.setZhanghao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("fuwurenyuan")) {
			fuwufenpei.setGonghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<FuwufenpeiEntity> ew = new EntityWrapper<FuwufenpeiEntity>();
		PageUtils page = fuwufenpeiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fuwufenpei), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,FuwufenpeiEntity fuwufenpei, 
		HttpServletRequest request){
        EntityWrapper<FuwufenpeiEntity> ew = new EntityWrapper<FuwufenpeiEntity>();
		PageUtils page = fuwufenpeiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fuwufenpei), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(FuwufenpeiEntity fuwufenpei){
        EntityWrapper< FuwufenpeiEntity> ew = new EntityWrapper< FuwufenpeiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( fuwufenpei, "fuwufenpei")); 
		FuwufenpeiView fuwufenpeiView =  fuwufenpeiService.selectView(ew);
		return R.ok("查询服务分配成功").put("data", fuwufenpeiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        FuwufenpeiEntity fuwufenpei = fuwufenpeiService.selectById(id);
        return R.ok().put("data", fuwufenpei);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        FuwufenpeiEntity fuwufenpei = fuwufenpeiService.selectById(id);
        return R.ok().put("data", fuwufenpei);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody FuwufenpeiEntity fuwufenpei, HttpServletRequest request){
    	fuwufenpei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(fuwufenpei);
        fuwufenpeiService.insert(fuwufenpei);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody FuwufenpeiEntity fuwufenpei, HttpServletRequest request){
    	fuwufenpei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(fuwufenpei);
        fuwufenpeiService.insert(fuwufenpei);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody FuwufenpeiEntity fuwufenpei, HttpServletRequest request){
        //ValidatorUtils.validateEntity(fuwufenpei);
        fuwufenpeiService.updateById(fuwufenpei);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        fuwufenpeiService.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<FuwufenpeiEntity> wrapper = new EntityWrapper<FuwufenpeiEntity>();
		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("yonghu")) {
			wrapper.eq("zhanghao", (String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("fuwurenyuan")) {
			wrapper.eq("gonghao", (String)request.getSession().getAttribute("username"));
		}

		int count = fuwufenpeiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}


}

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

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

相关文章

Python基本数据类型 — 列表

一、列表基本操作 1、创建列表 &#xff08;1&#xff09;使用 [] 创建列表 创建一个空列表&#xff0c;可以使用以下代码&#xff1a; my_list []创建一个包含元素的列表&#xff0c;可以在方括号中使用逗号分隔值&#xff0c;如下所示&#xff1a; my_list [1, 2, 3, …

Qt编写视频监控系统72-通过onvif增删改查OSD

一、前言 之前监控系统中原创的onvif协议解析机制&#xff0c;已经能够满足绝大部分用户的需要&#xff0c;比如搜索设备、获取视频流地址并播放、云台控制、预置位管理、图片亮度色彩饱和度等参数设置等&#xff0c;近期又多了一个需求&#xff0c;那就是通过onvif国际标准协…

平台使用篇 | RflySim平台飞控固件上传教程

导读 本教程共介绍了4种飞控固件的上传方式&#xff0c;重点介绍了Simulink模型生成自定义固件上传的两种方法&#xff0c;其中固件上传步骤主要分为三步&#xff1a;下载源码、编译生成固件及最后上传固件。 01 PX4官方上传方式 详见PX4官方固件烧录教程&#xff1a;https:…

基于spring boot + maven + opencv 实现的图像深度学习

写在前面的话 这是一个基于spring boot maven opencv 实现的Demo教程项目贯穿样本处理、模型训练、图像处理、对象检测、对象识别等技术点以学习交流为目的&#xff0c;代码注释超多&#xff0c;文档也在逐步完善java语言的深度学习项目&#xff0c;在整个开源社区来说都相对…

RflySim平台使用篇 | Rflysim3D软件使用系列教程(二)

导读: RflySim3D&#xff08;支持体验版&#xff09;和RflySimUE5&#xff08;支持完整版&#xff09;为本平台核心三维显示软件&#xff0c; 分别基于UE4 和UE5 引擎开发&#xff0c;具备高逼真虚拟现实显示效果。本视频主要讲解了如何将自定义的三维场景如何加载到RflySim3D…

Linux驱动开发笔记(三):基于ubuntu的helloworld驱动源码编写、makefile编写以及驱动编译加载流程测试

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/130542981 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

将远程服务器linux上的jupyter notebook映射到本地浏览器中

前提&#xff1a;mobaXterm可以连接远程服务器了 &#xff01;&#xff01;&#xff01;注意端口变化&#xff01;&#xff01;&#xff01; * 用从cmd中ssh -L 。。。去链接&#xff0c;报错perssion denied&#xff0c;所以还是选择mobaXterm方便。 1、mobaXterm的SSHTunnel配…

一般纳税人如何解决增值税、企业所得税高等问题?

业务是流程&#xff0c;财税是结果&#xff0c;税收问题千千万&#xff0c;关注《税算盘》来帮你找答案。 一般纳税人需要缴纳的增值税比小规模纳税人相比&#xff0c;需要缴纳更多。增值税作为我国第一大税种&#xff0c;能够筹划的空间并没有企业所得税那么多。 但是也是有…

软考A计划-真题-分类精讲汇总-第二章(操作系统)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

最近大火的ChatGpt,到底给我们带来了哪些改变?

我相信最近大家都有听说这个ChatGpt了吧&#xff01; 即使没有听说过也没有关系&#xff0c;我来给大家掰扯掰扯。 OpenAI公司推出了一款名为ChatGPT的人工智能聊天机器人&#xff0c;该技术通过利用大量训练数据&#xff0c;实现了人类般的自然语言处理能力&#xff0c;并能…

堆的实现,画图和代码分析建堆,堆排序,时间复杂度以及TOP-K问题

堆的实现 堆的概念及结构堆的实现初始化销毁返回堆顶元素判空有效数据个数堆的插入&#xff08;向上调整算法&#xff09;删除堆顶元素&#xff0c;仍然保持堆的形态&#xff08;向下调整算法&#xff09; 堆的创建向上调整法建堆向下调整建堆两种建堆方法时间复杂度向下调整法…

Go并发情况下debug调试无法进入所需调试goroutine,附带并发测试代码

大部分情况 问题&#xff1a; 在使用go语法的时候&#xff0c;由于并发情况&#xff0c;只能调试一个goroutine&#xff0c;但存在随机性&#xff0c;难指定 找到你所需的线程直接切换即可跳转。没有找到同时调试多个的办法&#xff0c;理论上是不行的&#xff0c;不然就不叫并…

美颜sdk的商业价值分析:如何利用美颜技术赢得市场?

当下&#xff0c;从自拍软件到直播平台&#xff0c;从手机相机到电商平台&#xff0c;美颜技术都有着广泛的应用。而美颜sdk作为美颜技术的重要组成部分&#xff0c;其商业价值也越来越受到关注。 一、美颜sdk有哪些商业价值&#xff1f; 随着美颜技术的不断发展&#xff0c…

历年系统架构师下午真题详解

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 试题一是必答题 阅读以下关于软件架构设计与评估的叙述&#xff0c;在答题纸上回答问题1和问题2。 【说明】 某电子商务公司拟升级其会员与促销管理系统&#…

LinkedList 的作者:我写了 LinkedList,但我自己都不用

Joshua Bloch&#xff1a;我写了 LinkedList&#xff0c;但我自己都不用&#xff01; 对&#xff0c;Joshua Bloch 就是 LinkedList 的作者&#xff01; 如果你真信了作者的话&#xff0c;那就真的大错特错了&#xff0c;LinkedList 虽然用的没有 ArrayList 多&#xff0c;但使…

FISCO BCOS(三十六)———Python Sdk window环境部署及应用开发

1、环境要求 Python环境:python 3.6.3, 3.7.3(最好是3.7.3,因为我是) FISCO BCOS节点:可以直接建链,可以是节点前置,也可以是一键部署2、安装python 2.1、python下载地址 https://www.python.org/downloads/release/python-373/2.2、环境变量配置 3、下载pip 3.1、pip下…

【企业信息化】第1集 世界排名第一的免费开源ERP: Odoo 16 CRM客户关系管理系统

文章目录 前言一、概览二、使用功能1.加快销售速度2.销售线索3.机会4.客户5.高效沟通6.报告7.集成 三、总结 前言 世界排名第一的免费开源ERP: Odoo 16 CRM客户关系管理系统。真正以客户为中心的CRM。 一、概览 获得准确预测 使用可操作数据&#xff0c;以做出更好的决定。 获…

BUUFCTF—[极客大挑战 2019]Upload 1

考点&#xff1a; 文件上传黑名单绕过内容绕过目录浏览 文件上传 1. 测试是黑名单还是白名单 上传图片1.png成功&#xff0c;上传1.php失败&#xff0c;1.pngs成功&#xff0c;说明是黑名单过滤。 所以要寻找黑名单外的php文件&#xff1a;php, php3, php5, php7, phtml都能…

Linux基础学习---4、文件权限类、搜索查找类、压缩和解压类

1、文件权限类 1.1 文件属性 Linux系统是一种典型的多用户系统&#xff0c;不同的系统处于不同的地位&#xff0c;拥有不同的权限。为了保护系统的安全性&#xff0c;Linux系统对不同的用户访问访问同一文件&#xff08;包括目录文件&#xff09;的权限做了不同的规定。在Lin…

港联证券|北交所行情活跃 近九成个股5月以来录得上涨

北交所A股昨日表现活跃&#xff0c;北证50指数上涨1.92%。数字人30cm涨停&#xff0c;云创数据涨18.38%&#xff0c;流金科技涨16.61%&#xff0c;广道数字、艾融软件、惠丰钻石等涨幅居前。 数字人昨日录得近16个月以来最大涨幅。近3个交易日&#xff0c;数字人累计获得融资净…