基于Java+Springboot+vue在线版权登记管理系统设计实现

news2024/11/19 0:50:52

基于Java+Springboot+vue在线版权登记管理系统设计实现

博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域
作者主页 超级帅帅吴
Java项目精品实战案例《500套》
欢迎点赞 收藏 ⭐留言
文末获取源码联系方式

文章目录

  • 基于Java+Springboot+vue在线版权登记管理系统设计实现
  • 一、前言介绍:
    • 1.1 课题背景
    • 1.2 研究内容:
  • 二、主要技术:
    • 2.1 Spring Boot框架:
    • 2.2 MYSQL数据库:
    • 2.3 IDEA开发工具
  • 三、系统设计:
    • 3.1 系统功能设计:
    • 3.2 登录流程设计:
    • 3.3 登录时序图设计:
  • 四、功能截图:
    • 4.1 系统前台
      • 4.1.1 用户个人中心:
      • 4.1.2 上传版权信息:
      • 4.1.3 版权信息查看:
      • 4.1.4 版权信息查看:
      • 4.1.5 版权信息详情:
      • 4.1.6 系统公告信息:
      • 4.1.7 论坛信息模块:
    • 4.2 系统后台:
      • 4.2.1 用户管理:
      • 4.2.2 基础数据管理:
      • 4.2.3 版权信息管理:
      • 4.2.4 系统信息管理
  • 五、部分数据设计:
  • 六、代码参考
  • 七、项目总结:
  • 获取源码:

一、前言介绍:

1.1 课题背景

信息化管理模式是将行业中的工作流程由人工服务,逐渐转换为使用计算机技术的信息化管理服务。这种管理模式发展迅速,使用起来非常简单容易,用户甚至不用掌握相关的专业知识,根据教程指导即可正常使用相关的系统,因而被越来越多的用户所使用。由于相关行业管理信息化,这就使得管理工作不在受到时间和区域的限制,随时随地即可完成相关的工作任务和结果[1]。就目前而言,管理信息化在现代社会中非常流行,使用比较广泛。早在20世纪70年代末,就出现了早期的电子商务,相关的公司企业使用计算机建立专用的内部网络,通过内部网络完成相应的采购、销售等活动,加快相关的企业之间的交易速度,提高了工作效率[2]。
当下,许多行业采用互联网技术将工作流程信息化、数字化,提高了相关人员的服务质量和效率,节约了相关行业的人力、财力、物力等资源,与此同时,人们获取外界的相关信息主要依赖于主流的信息化技术和工具。人们对生活的需求也在不断的发生着变化,为了应对用户的多样化需求,许多相关的第三产业应运而生,管理信息化也逐渐的流行起来,比如电子商务行业。本人通过查询大量学习资料,了解基本的开发系统的基本背景和关键任务,学习与掌握Java语言、web技术、AJAX技术、HTML语言等开发技术,设计系统功能模块,以及MySQL数据库的相关语法和工具,创建和存储数据表格,反映和关联表格之间相互存在的关系,由此对在线版权登记系统进行研发和实现。

1.2 研究内容:

现今,互联网在我们的日常生活占据着日益重要的地位,我们也越来越离不开对移动设备、电脑等上网设备的使用。传统的在线版权登记系统模式主要依靠管理人员纯手工记录的相关信息,比较繁琐,不方便查找,也非常容易出现错误。如今,如果再通过手工记录版权,将大大不利于在线版权登记系统行业管理相关的在线版权登记系统信息,严重影响在线版权登记系统行业的发展。因此,本人结合传统的在线版权登记系统业务模式和先进的电子信息管理模式,使用Java语言编程设计功能模块,AJAX实现前台和后台之间的交互,MySQL数据库创建和存储数据表格,对在线版权登记系统进行设计和开发。本系统的设计有利于相关行业实现最大化的资源管理与共享,促进相关行业的信息交流、分工合作,提高相关工作人员的工作效率,最终实现整个在线版权登记系统行业服务的信息化管理。

二、主要技术:

2.1 Spring Boot框架:

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

2.2 MYSQL数据库:

在动态网站的兴起之初,作为高级编程语言的Java自然不会放弃这个领域的蛋糕。Sun公司推出了Servlet作为输出动态网站的一种技术标准,虽然不怎么受当时程序员的喜爱,但是当初也没有太多的选择,随后几个月java语言问世,不考虑性能和效率如何,起码在书写网页所需要的动态代码块和静态代码块方面进行了区分,让书写效率和可读效率大大的提升,所以很多Java程序员以及刚入行的初级程序员都选择了java语言作为自己职业的发展方向,Sun公司为了维护Java语言在高级编程语言上的江湖地位,防止java继续抢走市场份额占有率,Sun公司联合Apache基金会研发了一个关于Java动态网页的一个新型的技术标准,这就是vue技术。

2.3 IDEA开发工具

软件开发使用的编程语言有许多种,而每种编程语言需要通过与其相对应的开发平台进行编译和运行。IDEA平台都是目前比较常用的开发环境。IDEA平台是开源的,具有功能强大、可扩展性强等特点,可以应用于C/S模式软件的开发,但是它所占据的内存容量比较大,运行较慢,并且其并未提供Tomcat服务器,运行过程中需要将代码发布到Tomcat服务器中,测试使用的时间较长,故而不太适用于B/S模式软件的开发。
IDEA平台是建立在IDEA平台的基础之上,增加了许多的应用插件,比如Tomcat插件、mail组件等。IDEA平台增加了Tomcat插件,代码编写完成或者更新完成时,程序员无需将代码发布到Tomcat服务器中,可以直接通过调试实现程序的运行。IDEA平台增加了Mail组件,该组件可以为本程序提供标准的邮件方法,便于开发人员完成与邮件功能相关的编译工作。IDEA平台占据的内存空间较小,同时其也具有较高的可扩展性,编程人员可以根据需要添加和使用相关的插件。可以支持主流的开源产品和相关的开发框架,被广泛运用到相关的移动系统、web应用系统等开发中。相比于IDEA平台,本系统比较适合使用IDEA平台进行编程和开发

三、系统设计:

3.1 系统功能设计:

在线版权登记系统主要功能设计:
用户登录、注册、修改密码、首页信息展示、系统轮播图 、模糊搜索、收藏、版权热度点击数量统计、版权文件下载、评论、收藏、富文本图文上传、文件上传、下载、视频上传下载、版权资料、视频资料、公告信息、加上一些基本业务功能的添加修改删除操作等
在这里插入图片描述

3.2 登录流程设计:

在这里插入图片描述

3.3 登录时序图设计:

在这里插入图片描述

四、功能截图:

4.1 系统前台

在这里插入图片描述

4.1.1 用户个人中心:

在这里插入图片描述

4.1.2 上传版权信息:

在这里插入图片描述

4.1.3 版权信息查看:

在这里插入图片描述

4.1.4 版权信息查看:

在这里插入图片描述

4.1.5 版权信息详情:

在这里插入图片描述

4.1.6 系统公告信息:

在这里插入图片描述

4.1.7 论坛信息模块:

在这里插入图片描述

4.2 系统后台:

4.2.1 用户管理:

在这里插入图片描述

4.2.2 基础数据管理:

在这里插入图片描述

4.2.3 版权信息管理:

在这里插入图片描述

4.2.4 系统信息管理

在这里插入图片描述

五、部分数据设计:

在数据库设计过程中,概念设计阶段是逻辑设计阶段得以实现的基础,也是根据用户参与情况确定对数据的处理要求,从而使得数据库设计成功的关键。概念设计的主要任务是将现实世界的所收集到的使用需求转化为抽象的信息世界结构的过程,能够真实的反映现实生活中实体与实体之间的联系,数据库的相关语法和代码比较容易理解和修改,方便相关人员将相关的数据信息存储到数据库中,并对其进行修改和使用。
通过将现实世界中的实体、属性、联系等内容进行概念设计,建立比较抽象的概念数据模型,即E-R图。通过E-R图可将现实世界抽象到的概念设计转变成数据库的实体设计,并且能够明显的看见各个实体之间,数据的流动情况,具体较强的表达能力,更加方便于开发人员寻找与发现用户具体的需求[19]。因此,E-R的建立,在整个数据库的设计过程中,起着至关重要的作用。本系统主要的实体有管理员、用户、留言等。在E-R图中,矩形表示实体集,椭圆形表示属性,菱形表示联系。其中,联系的类型包括1:1(一对一)、1:n(一对多)、n:m(多对多)关系。
下图是版权实体和其具备的属性:
在这里插入图片描述
版权收藏实体和其具备的属性:
在这里插入图片描述
下图是资料实体和其具备的属性
在这里插入图片描述

六、代码参考

 
/**
 * 版权
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/banquan")
public class BanquanController {
    private static final Logger logger = LoggerFactory.getLogger(BanquanController.class);
 
    private static final String TABLE_NAME = "banquan";
 
    @Autowired
    private BanquanService banquanService;
 
    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;
 
    //级联表非注册的service
    //注册表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(false)
            return R.error(511,"永不会进入");
        else if("用户".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        CommonUtil.checkMap(params);
        PageUtils page = banquanService.queryPage(params);
 
        //字典表数据转换
        List<BanquanView> list =(List<BanquanView>)page.getList();
        for(BanquanView 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);
        BanquanEntity banquan = banquanService.selectById(id);
        if(banquan !=null){
            //entity转view
            BanquanView view = new BanquanView();
            BeanUtils.copyProperties( banquan , view );//把实体数据重构到view中
            //级联表 用户
            //级联表
            YonghuEntity yonghu = yonghuService.selectById(banquan.getYonghuId());
            if(yonghu != null){
            BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到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 BanquanEntity banquan, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,banquan:{}",this.getClass().getName(),banquan.toString());
 
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("用户".equals(role))
            banquan.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
 
        Wrapper<BanquanEntity> queryWrapper = new EntityWrapper<BanquanEntity>()
            .eq("yonghu_id", banquan.getYonghuId())
            .eq("banquan_name", banquan.getBanquanName())
            .eq("banquan_types", banquan.getBanquanTypes())
            .eq("banquan_clicknum", banquan.getBanquanClicknum())
            ;
 
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        BanquanEntity banquanEntity = banquanService.selectOne(queryWrapper);
        if(banquanEntity==null){
            banquan.setBanquanClicknum(1);
            banquan.setInsertTime(new Date());
            banquan.setBanquanYesnoTypes(1);
            banquan.setCreateTime(new Date());
            banquanService.insert(banquan);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }
 
    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody BanquanEntity banquan, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
        logger.debug("update方法:,,Controller:{},,banquan:{}",this.getClass().getName(),banquan.toString());
        BanquanEntity oldBanquanEntity = banquanService.selectById(banquan.getId());//查询原先数据
 
        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            banquan.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        //根据字段查询是否有相同数据
        Wrapper<BanquanEntity> queryWrapper = new EntityWrapper<BanquanEntity>()
            .notIn("id",banquan.getId())
            .andNew()
            .eq("yonghu_id", banquan.getYonghuId())
            .eq("banquan_name", banquan.getBanquanName())
            .eq("banquan_types", banquan.getBanquanTypes())
            .eq("banquan_clicknum", banquan.getBanquanClicknum())
            .eq("insert_time", banquan.getInsertTime())
            .eq("banquan_shenhe_time", banquan.getBanquanShenheTime())
            ;
 
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        BanquanEntity banquanEntity = banquanService.selectOne(queryWrapper);
        if("".equals(banquan.getBanquanPhoto()) || "null".equals(banquan.getBanquanPhoto())){
                banquan.setBanquanPhoto(null);
        }
        if("".equals(banquan.getBanquanFile()) || "null".equals(banquan.getBanquanFile())){
                banquan.setBanquanFile(null);
        }
        if(banquanEntity==null){
            banquanService.updateById(banquan);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }
 
 
    /**
    * 审核
    */
    @RequestMapping("/shenhe")
    public R shenhe(@RequestBody BanquanEntity banquanEntity, HttpServletRequest request){
        logger.debug("shenhe方法:,,Controller:{},,banquanEntity:{}",this.getClass().getName(),banquanEntity.toString());
 
        BanquanEntity oldBanquan = banquanService.selectById(banquanEntity.getId());//查询原先数据
 
//        if(banquanEntity.getBanquanYesnoTypes() == 2){//通过
//            banquanEntity.setBanquanTypes();
//        }else if(banquanEntity.getBanquanYesnoTypes() == 3){//拒绝
//            banquanEntity.setBanquanTypes();
//        }
        banquanEntity.setBanquanShenheTime(new Date());//审核时间
        banquanService.updateById(banquanEntity);//审核
 
        return R.ok();
    }
 
    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        List<BanquanEntity> oldBanquanList =banquanService.selectBatchIds(Arrays.asList(ids));//要删除的数据
        banquanService.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");
        try {
            List<BanquanEntity> banquanList = 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){
                            //循环
                            BanquanEntity banquanEntity = new BanquanEntity();
//                            banquanEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            banquanEntity.setBanquanName(data.get(0));                    //版权名称 要改的
//                            banquanEntity.setBanquanUuidNumber(data.get(0));                    //版权编号 要改的
//                            banquanEntity.setBanquanPhoto("");//详情和图片
//                            banquanEntity.setBanquanTypes(Integer.valueOf(data.get(0)));   //版权类型 要改的
//                            banquanEntity.setBanquanFile(data.get(0));                    //版权文件 要改的
//                            banquanEntity.setBanquanClicknum(Integer.valueOf(data.get(0)));   //版权热度 要改的
//                            banquanEntity.setBanquanContent("");//详情和图片
//                            banquanEntity.setInsertTime(date);//时间
//                            banquanEntity.setBanquanYesnoTypes(Integer.valueOf(data.get(0)));   //申请状态 要改的
//                            banquanEntity.setBanquanYesnoText(data.get(0));                    //审核意见 要改的
//                            banquanEntity.setBanquanShenheTime(sdf.parse(data.get(0)));          //审核时间 要改的
//                            banquanEntity.setCreateTime(date);//时间
                            banquanList.add(banquanEntity);
 
 
                            //把要查询是否重复的字段放入map中
                                //版权编号
                                if(seachFields.containsKey("banquanUuidNumber")){
                                    List<String> banquanUuidNumber = seachFields.get("banquanUuidNumber");
                                    banquanUuidNumber.add(data.get(0));//要改的
                                }else{
                                    List<String> banquanUuidNumber = new ArrayList<>();
                                    banquanUuidNumber.add(data.get(0));//要改的
                                    seachFields.put("banquanUuidNumber",banquanUuidNumber);
                                }
                        }
 
                        //查询是否重复
                         //版权编号
                        List<BanquanEntity> banquanEntities_banquanUuidNumber = banquanService.selectList(new EntityWrapper<BanquanEntity>().in("banquan_uuid_number", seachFields.get("banquanUuidNumber")));
                        if(banquanEntities_banquanUuidNumber.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(BanquanEntity s:banquanEntities_banquanUuidNumber){
                                repeatFields.add(s.getBanquanUuidNumber());
                            }
                            return R.error(511,"数据库的该表中的 [版权编号] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                        banquanService.insertBatch(banquanList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }
 
   
}

七、项目总结:

本文从用户对在线版权登记系统的实际需求出发,设计本系统总体功能,然后结合使用Java语言、MySQL数据库、AJAX技术等相关技术,详细的编码实现本系统,最后通过功能测试,测试和完善系统功能。
本系统是以B/S模式为网络结构模式,在IDEA开发环境中,首先使用Java语言设计系统功能,使用MySQL数据库存储数据信息,然后使用连接语言实现前端Java语言与后台MySQL数据库的交互,再通过平台提供的Tomcat插件,将系统发布到Tomcat服务器上,最后用户可以选择浏览器打开网址使用本系统。本系统使用性能稳定可靠,在功能设计上,基本上达到预期的设计目标,并且根据系统测试结果可以得知,本系统现在是可以正常的被投入使用。
如今是信息化的社会,随着大数据技术、人工智能、深度学习等新一代科学技术力量的出现,大大加快了各行业信息化建设的进程。我们应该努力学习新一代科学技术以及相关知识,不断提高自己的专业能力水平,设计和实现出一款能够顺应时代变化的,功能强大的信息管理系统。
由于本人的专业能力和时间有限,本系统可能存在一定的局限性,比如系统处理能力、用户信息安全等方面可能存在不足。本人将通过学习目前比较主流的计算机技术和新型科技知识,并且将其积极的应用到系统的设计过程中,增强系统的可维护性,提高系统安全性,提升系统的实用性,让系统更加人性化、智能化,在用户使用本系统时,使得系统能够更快的响应用户,更好的服务用户。

获取源码:

大家点赞、收藏、关注、评论啦
🍅查看下方微信号获取联系方式 📝
🚀🚀🚀精彩系列推荐
Java毕设项目精品实战案例《500套》
精彩专栏推荐订阅:在下方专栏

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

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

相关文章

亚马逊云科技在上云旅程中不断调整和优化成本管理计划

亚马逊云科技的云财务管理旨在帮助企业建立一个成功的CFM战略&#xff1a;通过4个云财务管理CFM原则或步骤作为路线图&#xff1a;SEE-查看、SAVE-保存、PLAN-计划和RUN-运行。 对现有工作负载的预测和规划 1、 优化计算资源与架构&#xff1a; 与技术业务相关部门合作&…

Notion打不开

如果Notion打不开&#xff0c;可以尝试以下方法&#xff1a;1. 尝试Ping一下Notion的服务器&#xff0c;如果是正常的&#xff0c;但访问502了&#xff0c;那么很可能是DNS污染了。建议将DNS修改为114.114.114.114&#xff0c;再加个8.8.8.8&#xff0c;修改完成后再度访问Noti…

doccano使用记录

参考文章&#xff1a;https://github.com/PaddlePaddle/PaddleNLP/blob/develop/model_zoo/uie/doccano.md 参考文章&#xff1a;https://github.com/doccano/doccano 参考文章&#xff1a;https://doccano.github.io/doccano/ 参考文章&#xff1a;https://zhuanlan.zhihu.com…

06 | 立迈胜电机使用问题汇总

1 前提 使用STM2832B-485-MA-0FS等 2 常见问题 2.1 操作相关 问题1&#xff1a;怎么识别到电机设备 解决方法&#xff1a; 1、电机上电&#xff0c;在通讯处&#xff0c;点击【打开】 2、设备类型选择【串口】 3、选择串口选择【对应的COM】 4、选择对应的波特率 问题2…

python 的 object 与type的关系

python 的 object 与type的关系 是并列关系&#xff0c;两种是相互依赖的 查询父类 type.__bases__ object.__bases__(<class ‘object’>,) () 查询类型 type(type) type(object)<class ‘type’> <class ‘type’> 在python中&#xff0c;type用于描述…

Docker之Docker网络

Docker网络 1. 理解Docker01.1 测试1.2 原理1.3 小结 2. -link3. 自定义网络3.1 网络模式3.2 测试3.3 自定义网络 4. 网络连通5. 实战&#xff1a;部署Redis集群6. 总结 1. 理解Docker0 清空所有环境 docker rm -f $(docker ps -aq) docker rmi -f $(docker images -aq)1.1 测…

51.现有移动端开源框架及其特点—PocketFlow-1

51.1 简介 全球首个自动模型压缩框架一款面向移动端AI开发者的自动模型压缩框架,集成了当前主流的模型压缩与训练算法,结合自研超参数优化组件实现了全程自动化托管式的模型压缩与加速。 开发者无需了解具体算法细节,即可快速地将AI技术部署到移动端产品上,实现了自动托管式…

Java项目打包exe运行文件

Java项目打包exe运行文件 JavaSE打包成exe运行文件的方法有很多种&#xff0c;此处我们主要讲解我常用的一种exe4j&#xff0c;打包前我们需要先安装exe4j这个工具。 注意&#xff1a;exe4j仅支持最低JDK1.8最高JDK11&#xff0c;所以在安装之前一定要查看自己的JDK版本&#…

银行数字化转型导师坚鹏:数字化时代普惠金融模式和产品创新

数字化时代普惠金融模式和产品创新 课程背景&#xff1a; 很多银行存在以下问题&#xff1a; 不清楚普惠金融的机遇与挑战&#xff1f; 不知道普惠金融模式和产品如何创新&#xff1f; 不知道普惠金融产品创新的成功案例&#xff1f; 课程特色&#xff1a; 用实战案例…

使用Docker安装Zookpeer集群

1&#xff09;需要提前安装python和docker-compose 注&#xff1a;sudo权限看自己机器的权限 安装python-pip&#xff1a;sudo yum -y install epel-releasesudo yum -y install python-pip安装docker-compose&#xff1a;sudo pip install docker-compose 注意在安装过程中很…

FileZilla密钥登录

使用密码登录非常的方便&#xff0c;但是有的客户的云服务器上是限定只能通过密钥登录。我一般使用命令行的scp命令就可以正常上传&#xff0c;但是对于我一些同事来说&#xff0c;就很不方便。 生成密钥 这个不难&#xff0c;可以参考我之前的文章。 《Mac使用ssh连接远程服…

实验07:子集和问题

1.实验目的&#xff1a; 深刻理解回溯法的基本思想&#xff0c;掌握回溯法解决问题的一般步骤&#xff0c;学会使用回溯法解决实际问题.运用所熟悉的编程工具&#xff0c;借助回溯法的思想求解子集和数的问题。 2.实验内容&#xff1a; 给定 n n n 个正整数 { x 1 , x 2 ,…

springboot 接口防刷(根据IP与路径限制)

接口防刷 一、全局接口防刷&#xff08;通过拦截器方式&#xff09;1、原理 代码示例 二、个别接口防刷&#xff08;接口注解方式)1、代码示例 一、全局接口防刷&#xff08;通过拦截器方式&#xff09; 1、原理 代码示例 通过ip地址uri拼接用以作为访问者访问接口区分通过…

NX状态检测

输入 sudo -H pip install jetson-stats 如果提示没有pip&#xff0c;那么就输入 sudo apt-get install python-pip 之后输入 sudo jtop进行监测 用这个方法可以看到当前Jetpack的版本

记录 Vite 报错 process is not defined 报错问题

由于导入别人开发好的插件&#xff0c;在开发的时候报了process is not defined的错误&#xff0c;记录一下解决方式&#xff0c;方便后续使用。 1.查看里面具体的报错信息是找不到process这个问题。 原因&#xff1a; process.env 已经被遗弃&#xff08;我个人查询百度&…

lwip - 链路层收发以太网数据帧

1、以太网帧结构 数据包在以太网物理介质上传播之前必须封装头部和尾部信息。封装后的数据包称为数据帧&#xff0c;数据帧的封装的信息决定了数据如何传输。   以太网中传输的帧有两种格式&#xff0c;IEEE 802.3 和 Ethernet II&#xff0c;选择哪种格式由TCP/IP协议簇中的…

光伏太阳能直流浪涌保护器应用方案

由于用于光伏装置的直流电涌保护设备必须设计为完全暴露在阳光下&#xff0c;因此它们极易受到雷电的影响。光伏阵列的容量与其暴露的表面积直接相关&#xff0c;因此闪电事件的潜在影响随着系统规模的增加而增加。在照明频繁发生的情况下&#xff0c;未受保护的光伏系统可能会…

pytorch中BatchNorm2d的实验验证

BatchNorm2d 对二维矩阵进行批量归一化&#xff0c;mean为当前batch的均值&#xff0c;std为当前batch的标准差&#xff0c;使用批量归一化能够将取值范围不同的数据映射到标准正态分布的区间中&#xff0c;减少数据之间的差距&#xff0c;方便模型快速收敛。批量归一化本质上…

Vivado增量编译:加速FPGA设计实现的利器

随着FPGA设计的复杂度不断提高&#xff0c;设计人员需要选择更为高效的设计流程来保证开发效率和减少开发成本。其中&#xff0c;Vivado增量编译是一种非常重要的设计流程。本文将介绍Vivado增量编译的基本概念、优点、使用方法以及注意事项。 通过阅读本文可以了解&#xff1…

大多数开发人员都不知道的JSON.stringify 秘密

作为前端开发工程师&#xff0c;你一定用过JSON.stringify&#xff0c;但你知道它的全部秘密吗&#xff1f; 基本上&#xff0c;JSON.stringify 将对象转换为 JSON 字符串。同时&#xff0c;JSON.stringify 有如下规则&#xff1a; JSON.stringify({name: Tom, age: 18}) {&q…