基于SpringBoot+Vue大学生兼职管理系统的设计与实现

news2024/11/23 5:16:51
目录

一、前言介绍 

二、功能需求

三、功能结构设计

四、管理员功能实现

招聘单位管理

用户管理

论坛管理

公告信息管理

五、招聘单位功能实现

职位招聘管理

职位留言管理

简历投递管理

六、用户功能实现

在线论坛

职位招聘信息

简历投递

简历

七、部分核心代码

职位招聘代码

一、前言介绍 

互联网社会的到来,让各行各业通过互联网实现了浴火重生的可能,每个行业都发现了完全可以使用互联网技术用来提高信息在内部的传递效率,提高管理水准。通过对大学生兼职管理系统的设计和开发,不仅能巩固已经学到的知识,还能学习更多的专业知识,提升专业素养,熟悉设计流程,掌握编程知识。不管是从程序的设计分析以及编码,都有了很多的感悟。

大学生兼职管理系统采用当前最流行的IDEA工具进行开发,使用Java语言,框架使用Spring Boot框架。能实现公告管理,职位招聘管理,论坛管理,招聘单位管理,简历投递管理等功能。

大学生兼职管理系统不仅在操作上面符合常规操作,在信息处理环节更加的符合设计需求,符合生产需求,提高了 

二、功能需求

大学生兼职管理系统将使用人员划分为三类,分别是管理员,招聘单位,用户。这些使用者中,管理员的操作权限最大,拥有所有功能的操作权限,其他使用者都是根据工作需要合理的安排部分功能。

(1)管理员功能分析

图3.1展示了管理员用例图。针对管理员角色,系统允许其操作所有的功能,其主要包括增删改查用户信息,招聘单位信息,公告信息等,参与论坛的帖子内容和帖子回复信息的查看和管理,对职位招聘信息,简历投递信息进行管理等。

(2)招聘单位功能分析

图3.2展示了招聘单位用例图。针对招聘单位角色,系统允许其登录系统之后,可以参与论坛交流,以及可以发布职位招聘信息,回复职位招聘的留言,查看职位招聘的收藏,审核用户的简历投递信息等。

(3)用户功能分析

图3.3展示了用户用例图。针对用户角色,系统允许其登录系统之后,可以参与论坛交流,以及可以对职位招聘投递简历或者发布职位招聘的留言,查看招聘单位信息,管理个人简历信息等。

三、功能结构设计

前面对大学生兼职管理系统的功能需求的分析只是大致的划分功能模块,接下来的工作就是对这些大致的功能进行细分。让大学生兼职管理系统的内容变得更具体,更丰富。

(1)管理员功能结构设计

图4.1展示的是管理员功能结构。系统将管理员的个人中心模块划分为个人信息管理与修改密码子模块,将基础数据管理功能划分为招聘单位类型管理,求职意向管理,招聘类型管理,公告类型管理,招聘岗位管理子模块。

(2)招聘单位功能结构设计

图4.2展示的是招聘单位功能结构。系统将招聘单位的职位招聘管理模块划分为职位招聘管理,职位留言管理,职位收藏管理子模块。

(3)用户功能结构设计

图4.3展示的是用户功能结构。系统将用户的个人中心模块划分为更改个人信息,简历,简历投递,职位收藏子模块。

四、管理员功能实现

招聘单位管理

 图5.1展示的是招聘单位管理界面。

此界面展示了招聘单位名称,联系方式,招聘单位封面等信息。每条招聘单位信息的右侧区域都展示了可供管理员选择的操作,包括修改招聘单位信息,为招聘单位的账户进行密码重置,删除招聘单位信息等。 

用户管理

 图5.2展示的是用户管理界面。

此界面展示了注册的用户信息以及管理员自己新增的用户信息等,其中包括用户姓名,用户手机号,账户,性别等信息。每条用户信息的右侧区域都展示了可供管理员选择的操作,包括修改,删除,用户账户的密码重置。

论坛管理

 图5.3展示的是论坛管理界面。

此界面展示了前台用户在论坛模块的发帖与评论帖子的信息。每条帖子信息都有身份,姓名,帖子标题,发帖时间等信息。每条帖子信息的右侧区域都展示了可供管理员选择的操作,包括查看该帖子的回复信息,删除帖子信息,对该帖子进行修改等。

公告信息管理

 图5.4展示的是公告信息管理界面。

此界面展示了公告信息的标题,公告信息的图片以及发布公告的时间等信息。每条公告信息的右侧区域都展示了可供管理员选择的操作,包括删除,修改。

五、招聘单位功能实现

职位招聘管理

 图5.5展示的是职位招聘管理界面。

此界面主要用于展示招聘单位自行发布的职位招聘信息,包括薪资待遇,招聘岗位,招聘电话,招聘人数等信息。每条职位招聘信息的右侧区域都展示了可供招聘单位选择的操作,包括下架已经发布的职位招聘信息,对发布的职位招聘信息进行修改,删除职位招聘信息等。

职位留言管理

 图5.6展示的是职位留言管理界面。

此界面主要用于展示用户在查看招聘单位发布的职位招聘信息之后,提交的留言内容,作为招聘单位,其需要对每条用户的职位招聘的留言信息进行认真查看,然后点击职位留言信息右侧的回复按钮发布回复信息。

简历投递管理

 图5.7展示的是简历投递管理界面。

此界面展示了用户对招聘单位发布的职位招聘信息进行查看之后,投递的简历信息,该信息需要招聘单位进行审核,招聘单位审核用户的简历投递信息时,不管是同意还是拒绝用户的简历投递请求,招聘单位可以回复相应的拒绝或者同意的理由。

六、用户功能实现

在线论坛

 图5.8展示的是在线论坛界面。

此界面展示了所有用户的发帖信息,作为用户,其点击任意一条帖子标题就能查看其详细的帖子内容,同时,每条帖子内容查看完毕之后,在帖子内容的正下方都提供了评论功能让用户发布关于该帖子内容的评论信息。

职位招聘信息

 图5.9展示的是职位招聘信息界面。

此界面展示了职位招聘信息的详细内容,包括招聘人数,招聘岗位,点赞数,踩数等信息。用户在查看了招聘单位发布的职位招聘信息之后,如果觉得与自己的求职意向相匹配,可以点击“投递简历”按钮提交个人简历文件,如果用户对该职位招聘信息存在许多不理解的方面,可以在界面的下方编辑留言内容然后提交,待该职位招聘信息的招聘单位发布方,在查看完该留言之后,会回答用户的疑问。

简历投递

 图5.10展示的是简历投递界面。

此界面展示了所有的用户对职位招聘投递的简历信息,用户在该界面查看招聘单位的审核以及答复信息。

简历

 图5.11展示的是简历界面。

此界面展示了所有的用户自行新增的简历信息,作为用户,其新增简历信息时,也能上传简历文件。

七、部分核心代码

职位招聘代码
/**
 * 职位招聘
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/zhaopin")
public class ZhaopinController {
    private static final Logger logger = LoggerFactory.getLogger(ZhaopinController.class);
 
    private static final String TABLE_NAME = "zhaopin";
 
    @Autowired
    private ZhaopinService zhaopinService;
 
 
    @Autowired
    private TokenService tokenService;
 
    @Autowired
    private DictionaryService dictionaryService;//字典表
    @Autowired
    private ForumService forumService;//论坛
    @Autowired
    private GongsiService gongsiService;//招聘单位
    @Autowired
    private JianliService jianliService;//简历
    @Autowired
    private NewsService newsService;//公告信息
    @Autowired
    private ToudiService toudiService;//简历投递
    @Autowired
    private YonghuService yonghuService;//用户
    @Autowired
    private ZhaopinCollectionService zhaopinCollectionService;//职位收藏
    @Autowired
    private ZhaopinLiuyanService zhaopinLiuyanService;//职位留言
    @Autowired
    private UsersService usersService;//管理员
 
 
    /**
    * 后端列表
    */
    @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(false)
            return R.error(511,"永不会进入");
        else if("用户".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        else if("招聘单位".equals(role))
            params.put("gongsiId",request.getSession().getAttribute("userId"));
        CommonUtil.checkMap(params);
        PageUtils page = zhaopinService.queryPage(params);
 
        //字典表数据转换
        List<ZhaopinView> list =(List<ZhaopinView>)page.getList();
        for(ZhaopinView 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);
        ZhaopinEntity zhaopin = zhaopinService.selectById(id);
        if(zhaopin !=null){
            //entity转view
            ZhaopinView view = new ZhaopinView();
            BeanUtils.copyProperties( zhaopin , view );//把实体数据重构到view中
            //级联表 招聘单位
            //级联表
            GongsiEntity gongsi = gongsiService.selectById(zhaopin.getGongsiId());
            if(gongsi != null){
            BeanUtils.copyProperties( gongsi , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "gongsiId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
            view.setGongsiId(gongsi.getId());
            }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }
 
    }
 
    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody ZhaopinEntity zhaopin, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,zhaopin:{}",this.getClass().getName(),zhaopin.toString());
 
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("招聘单位".equals(role))
            zhaopin.setGongsiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
 
        Wrapper<ZhaopinEntity> queryWrapper = new EntityWrapper<ZhaopinEntity>()
            .eq("gongsi_id", zhaopin.getGongsiId())
            .eq("zhaopin_name", zhaopin.getZhaopinName())
            .eq("zhaopin_daiyu", zhaopin.getZhaopinDaiyu())
            .eq("zhaopin_address", zhaopin.getZhaopinAddress())
            .eq("lianxiren_name", zhaopin.getLianxirenName())
            .eq("zhaopin_phone", zhaopin.getZhaopinPhone())
            .eq("zan_number", zhaopin.getZanNumber())
            .eq("cai_number", zhaopin.getCaiNumber())
            .eq("zhaopin_types", zhaopin.getZhaopinTypes())
            .eq("leixing_types", zhaopin.getLeixingTypes())
            .eq("zhaopin_renshu_number", zhaopin.getZhaopinRenshuNumber())
            .eq("shangxia_types", zhaopin.getShangxiaTypes())
            ;
 
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        ZhaopinEntity zhaopinEntity = zhaopinService.selectOne(queryWrapper);
        if(zhaopinEntity==null){
            zhaopin.setShangxiaTypes(1);
            zhaopin.setCreateTime(new Date());
            zhaopinService.insert(zhaopin);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }
 
    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody ZhaopinEntity zhaopin, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
        logger.debug("update方法:,,Controller:{},,zhaopin:{}",this.getClass().getName(),zhaopin.toString());
        ZhaopinEntity oldZhaopinEntity = zhaopinService.selectById(zhaopin.getId());//查询原先数据
 
        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("招聘单位".equals(role))
//            zhaopin.setGongsiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        if("".equals(zhaopin.getZhaopinPhoto()) || "null".equals(zhaopin.getZhaopinPhoto())){
                zhaopin.setZhaopinPhoto(null);
        }
 
            zhaopinService.updateById(zhaopin);//根据id更新
            return R.ok();
    }
 
 
 
    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        List<ZhaopinEntity> oldZhaopinList =zhaopinService.selectBatchIds(Arrays.asList(ids));//要删除的数据
        zhaopinService.deleteBatchIds(Arrays.asList(ids));
 
        return R.ok();
    }
 
 
    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName, HttpServletRequest request){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))
        try {
            List<ZhaopinEntity> zhaopinList = 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){
                            //循环
                            ZhaopinEntity zhaopinEntity = new ZhaopinEntity();
//                            zhaopinEntity.setGongsiId(Integer.valueOf(data.get(0)));   //招聘单位 要改的
//                            zhaopinEntity.setZhaopinName(data.get(0));                    //招聘信息名称 要改的
//                            zhaopinEntity.setZhaopinPhoto("");//详情和图片
//                            zhaopinEntity.setZhaopinDaiyu(data.get(0));                    //薪资待遇 要改的
//                            zhaopinEntity.setZhaopinAddress(data.get(0));                    //上班地点 要改的
//                            zhaopinEntity.setLianxirenName(data.get(0));                    //联系人 要改的
//                            zhaopinEntity.setZhaopinPhone(data.get(0));                    //招聘电话 要改的
//                            zhaopinEntity.setZanNumber(Integer.valueOf(data.get(0)));   //赞 要改的
//                            zhaopinEntity.setCaiNumber(Integer.valueOf(data.get(0)));   //踩 要改的
//                            zhaopinEntity.setZhaopinTypes(Integer.valueOf(data.get(0)));   //招聘岗位 要改的
//                            zhaopinEntity.setLeixingTypes(Integer.valueOf(data.get(0)));   //招聘类型 要改的
//                            zhaopinEntity.setZhaopinRenshuNumber(Integer.valueOf(data.get(0)));   //招聘人数 要改的
//                            zhaopinEntity.setShangxiaTypes(Integer.valueOf(data.get(0)));   //是否上架 要改的
//                            zhaopinEntity.setZhaopinContent("");//详情和图片
//                            zhaopinEntity.setCreateTime(date);//时间
                            zhaopinList.add(zhaopinEntity);
 
 
                            //把要查询是否重复的字段放入map中
                                //招聘电话
                                if(seachFields.containsKey("zhaopinPhone")){
                                    List<String> zhaopinPhone = seachFields.get("zhaopinPhone");
                                    zhaopinPhone.add(data.get(0));//要改的
                                }else{
                                    List<String> zhaopinPhone = new ArrayList<>();
                                    zhaopinPhone.add(data.get(0));//要改的
                                    seachFields.put("zhaopinPhone",zhaopinPhone);
                                }
                        }
 
                        //查询是否重复
                         //招聘电话
                        List<ZhaopinEntity> zhaopinEntities_zhaopinPhone = zhaopinService.selectList(new EntityWrapper<ZhaopinEntity>().in("zhaopin_phone", seachFields.get("zhaopinPhone")));
                        if(zhaopinEntities_zhaopinPhone.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(ZhaopinEntity s:zhaopinEntities_zhaopinPhone){
                                repeatFields.add(s.getZhaopinPhone());
                            }
                            return R.error(511,"数据库的该表中的 [招聘电话] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                        zhaopinService.insertBatch(zhaopinList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }
 
 
 
    /**
    * 个性推荐
    */
    @IgnoreAuth
    @RequestMapping("/gexingtuijian")
    public R gexingtuijian(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("gexingtuijian方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        CommonUtil.checkMap(params);
        List<ZhaopinView> returnZhaopinViewList = new ArrayList<>();
 
        //查看收藏
        Map<String, Object> params1 = new HashMap<>(params);params1.put("sort","id");params1.put("yonghuId",request.getSession().getAttribute("userId"));
        PageUtils pageUtils = zhaopinCollectionService.queryPage(params1);
        List<ZhaopinCollectionView> collectionViewsList =(List<ZhaopinCollectionView>)pageUtils.getList();
        Map<Integer,Integer> typeMap=new HashMap<>();//购买的类型list
        for(ZhaopinCollectionView collectionView:collectionViewsList){
            Integer zhaopinTypes = collectionView.getZhaopinTypes();
            if(typeMap.containsKey(zhaopinTypes)){
                typeMap.put(zhaopinTypes,typeMap.get(zhaopinTypes)+1);
            }else{
                typeMap.put(zhaopinTypes,1);
            }
        }
        List<Integer> typeList = new ArrayList<>();//排序后的有序的类型 按最多到最少
        typeMap.entrySet().stream().sorted((o1, o2) -> o2.getValue() - o1.getValue()).forEach(e -> typeList.add(e.getKey()));//排序
        Integer limit = Integer.valueOf(String.valueOf(params.get("limit")));
        for(Integer type:typeList){
            Map<String, Object> params2 = new HashMap<>(params);params2.put("zhaopinTypes",type);
            PageUtils pageUtils1 = zhaopinService.queryPage(params2);
            List<ZhaopinView> zhaopinViewList =(List<ZhaopinView>)pageUtils1.getList();
            returnZhaopinViewList.addAll(zhaopinViewList);
            if(returnZhaopinViewList.size()>= limit) break;//返回的推荐数量大于要的数量 跳出循环
        }
        //正常查询出来商品,用于补全推荐缺少的数据
        PageUtils page = zhaopinService.queryPage(params);
        if(returnZhaopinViewList.size()<limit){//返回数量还是小于要求数量
            int toAddNum = limit - returnZhaopinViewList.size();//要添加的数量
            List<ZhaopinView> zhaopinViewList =(List<ZhaopinView>)page.getList();
            for(ZhaopinView zhaopinView:zhaopinViewList){
                Boolean addFlag = true;
                for(ZhaopinView returnZhaopinView:returnZhaopinViewList){
                    if(returnZhaopinView.getId().intValue() ==zhaopinView.getId().intValue()) addFlag=false;//返回的数据中已存在此商品
                }
                if(addFlag){
                    toAddNum=toAddNum-1;
                    returnZhaopinViewList.add(zhaopinView);
                    if(toAddNum==0) break;//够数量了
                }
            }
        }else {
            returnZhaopinViewList = returnZhaopinViewList.subList(0, limit);
        }
 
        for(ZhaopinView c:returnZhaopinViewList)
            dictionaryService.dictionaryConvert(c, request);
        page.setList(returnZhaopinViewList);
        return R.ok().put("data", page);
    }
 
    /**
    * 前端列表
    */
    @IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
 
        CommonUtil.checkMap(params);
        PageUtils page = zhaopinService.queryPage(params);
 
        //字典表数据转换
        List<ZhaopinView> list =(List<ZhaopinView>)page.getList();
        for(ZhaopinView 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);
        ZhaopinEntity zhaopin = zhaopinService.selectById(id);
            if(zhaopin !=null){
 
 
                //entity转view
                ZhaopinView view = new ZhaopinView();
                BeanUtils.copyProperties( zhaopin , view );//把实体数据重构到view中
 
                //级联表
                    GongsiEntity gongsi = gongsiService.selectById(zhaopin.getGongsiId());
                if(gongsi != null){
                    BeanUtils.copyProperties( gongsi , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setGongsiId(gongsi.getId());
                }
                //修改对应字典表字段
                dictionaryService.dictionaryConvert(view, request);
                return R.ok().put("data", view);
            }else {
                return R.error(511,"查不到数据");
            }
    }
 
 
    /**
    * 前端保存
    */
    @RequestMapping("/add")
    public R add(@RequestBody ZhaopinEntity zhaopin, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,zhaopin:{}",this.getClass().getName(),zhaopin.toString());
        Wrapper<ZhaopinEntity> queryWrapper = new EntityWrapper<ZhaopinEntity>()
            .eq("gongsi_id", zhaopin.getGongsiId())
            .eq("zhaopin_name", zhaopin.getZhaopinName())
            .eq("zhaopin_daiyu", zhaopin.getZhaopinDaiyu())
            .eq("zhaopin_address", zhaopin.getZhaopinAddress())
            .eq("lianxiren_name", zhaopin.getLianxirenName())
            .eq("zhaopin_phone", zhaopin.getZhaopinPhone())
            .eq("zan_number", zhaopin.getZanNumber())
            .eq("cai_number", zhaopin.getCaiNumber())
            .eq("zhaopin_types", zhaopin.getZhaopinTypes())
            .eq("leixing_types", zhaopin.getLeixingTypes())
            .eq("zhaopin_renshu_number", zhaopin.getZhaopinRenshuNumber())
            .eq("shangxia_types", zhaopin.getShangxiaTypes())
//            .notIn("zhaopin_types", new Integer[]{102})
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        ZhaopinEntity zhaopinEntity = zhaopinService.selectOne(queryWrapper);
        if(zhaopinEntity==null){
                zhaopin.setZanNumber(1);
                zhaopin.setCaiNumber(1);
            zhaopin.setCreateTime(new Date());
        zhaopinService.insert(zhaopin);
 
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }
 
}
 

 

 此源码非开源,若需要此源码可扫码添加微信或者qq:2214904953进行咨询!

2600多套项目欢迎咨询

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

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

相关文章

深入Rust标准库:必备的Rust语言高级指南

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

windows rabbitMq安装

一、Erlang 环境准备 下载安装包 跟我们跑java项目&#xff0c;要装jdk类似。rabbitMQ是基于Erlang开发的&#xff0c;因此安装rabbitMQ服务器之前&#xff0c;需要先安装Erlang环境。 官网直接下载windows直装版本&#xff1a;https://www.erlang.org/downloads 无脑安装&a…

用自然语言来编程GitHub Copilot;提高代码质量开源工具GPTLint;LLMs开源医学Meditron

✨ 1: GitHub Copilot Workspace 以Copilot 为中心的创新开发者环境&#xff0c;让开发者能用自然语言从构思到编码再到软件开发。 GitHub Copilot Workspace是一个以Copilot为中心的开发者环境&#xff0c;旨在使用自然语言从构思、编码到软件开发的全过程中提供帮助。它标志…

一、OSPF基础

目录 1.路由协议的优先级 2.转发原则&#xff1a;最长匹配原则 3.负载分担 4.路由备份&#xff08;浮动路由&#xff09; 5.路由协议的分类 6.动态路由 7.距离矢量路由协议&#xff08;BGP&#xff0c;RIP&#xff09; 8.链路状态路由协议&#xff08;OSPF&#xff0c;I…

指纹浏览器:网络安全与隐私的新工具

在互联网时代&#xff0c;隐私和网络安全成为人们越来越关注的话题。随着数字化的发展&#xff0c;个人信息的泄露和在线追踪的问题愈发严峻。在这个背景下&#xff0c;"指纹浏览器"作为一种新型工具&#xff0c;开始受到关注。撸空投需要了解指纹浏览器。本文将深入…

计算机丢失d3dx9_42.dll怎么解决,最新的5种修复教程来了

在我们日常频繁地使用电脑进行工作或是享受电子游戏带来的乐趣时&#xff0c;偶尔会遇到一个令人稍感困扰的问题&#xff0c;其中之一就是“d3dx942.dll丢失”。这个错误通常出现在运行某些游戏或应用程序时&#xff0c;它会导致程序无法正常运行。为了解决这个问题&#xff0c…

【无标题】场外个股期权多少钱才能做?个人能做吗?

场外个股期权的交易门槛相对较高&#xff0c;主要面向符合特定条件的机构投资者。一般来说&#xff0c;法人或合伙企业等组织参与的&#xff0c;需要满足最近1年末净资产不低于5000万元人民币、金融资产不低于2000万元人民币的条件&#xff0c;并具备3年以上证券、基金、期货、…

《欢乐钓鱼大师》攻略:新手小白如何快速上手?

欢迎来到《钓乐乐》世界&#xff01;这是一个充满乐趣和挑战的钓鱼游戏&#xff0c;本指南将为您提供一系列宝贵的技巧和建议&#xff0c;帮助您成为一名优秀的钓手。无论您是初次尝试还是已经有一定经验&#xff0c;都将从中获益匪浅。 一、精打细算金币 刚开始时金币总是紧缺…

关闭powertoy自启动

Other methods like task manager, start up program folder, they do not work because you can not even find powertoy at these places

【c++】优先级队列与仿函数:C++编程的强大组合

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本篇文章我们来讲解优先级队列priority_queue 目录 1.priority_queue的介绍和使用函数使用仿函数的使用与介绍greater和less 2.priority_queue的模拟实现基本框架…

arthas如何排除CPU使用率过高问题

1、首先启动arthas java -jar arthas-boot.jar 2、使用thread查看各线程CPU使用率 thread 可以看到CPU使用率最高的有2个线程&#xff0c;以线程ID为19的为例子&#xff1a; 输入thread 19查看线程19的堆栈信息&#xff1a; thread 19 可以看到是(CpuController.java:78行…

Git Tag:为你的代码版本打上优雅的标签

为你的代码版本打上优雅的标签 在软件开发过程中&#xff0c;版本控制是项目管理的重要一环。Git 作为最流行的版本控制系统之一&#xff0c;为我们提供了强大的工具来管理代码版本。其中&#xff0c;git tag 命令允许我们为代码仓库中的特定提交打上标签&#xff0c;这些标签…

【面试经典 150 | 数组】找出字符串中第一个匹配项的下标

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;find方法二&#xff1a;暴力匹配方法三&#xff1a;KMP 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;…

Python | Leetcode Python题解之第59题螺旋矩阵II

题目&#xff1a; 题解&#xff1a; class Solution:def generateMatrix(self, n: int) -> List[List[int]]:matrix [[0] * n for _ in range(n)]num 1left, right, top, bottom 0, n - 1, 0, n - 1while left < right and top < bottom:for col in range(left, r…

Flink checkpoint 源码分析- Flink Checkpoint 触发流程分析

序言 最近因为工作需要在阅读flink checkpoint处理机制&#xff0c;学习的过程中记录下来&#xff0c;并分享给大家。也算是学习并记录。 目前公司使用的flink版本为1.11。因此以下的分析都是基于1.11版本来的。 在分享前可以简单对flink checkpoint机制做一个大致的了解。 …

Qt:Qt框架的初步认识和基本使用

文章目录 Qt是什么Qt的优点Qt开发环境的基本使用对象树其他控件输入框按钮 本篇总结的是对于Qt框架的基本认识 Qt是什么 Qt框架是一个跨平台的C图形用户界面应用程序框架&#xff0c;框架是一群大佬发明出来的&#xff0c;帮助新手使用的一个内容&#xff0c;如果没有框架的存…

KUKA机器人如何给IO信号或寄存器添加中文注释信息?

KUKA机器人如何给IO信号或寄存器添加中文注释信息? 如下图所示,首先,我们需要登录专家以上用户权限(默认密码KUKA), 如下图所示,点击“投入运行”—“网络配置”, 如下图所示,此时机器人的IP地址为192.168.1.10, 如下图所示,用一根网线连接机器人控制柜到笔记…

使用ClassFinal实现springboot项目jar包加密

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

高级IO|从封装epoll服务器到实现reactor服务器|Part2

项目复习&#xff1a;从封装epoll_server到实现reactor服务器(part2) 项目复习&#xff1a;从封装epoll_server到实现reactor服务器(part2) 基本结构搭建好为什么上面我们写的epoll的recv是不正确的&#xff1f;sock要封装了&#xff0c;要维护缓冲区封装epoll(1)继续先写tcp_…

【算法刷题 | 贪心算法07】4.29(用最少数量的箭引爆气球、无重叠区间)

文章目录 12.用最少数量的箭引爆气球12.1题目12.2解法&#xff1a;贪心12.2.1贪心思路12.2.2代码实现 13.无重叠区间13.1题目13.2解法&#xff1a;贪心13.2.1贪心思路13.2.2代码实现 12.用最少数量的箭引爆气球 12.1题目 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面…