springBoot能发布成桌面应用吗?

在之前的文章中,我们提到了很多Spring Boot的技巧,那么当我们创建好了Spring Boot应用程序之后,怎么在生成环境中运行呢?如果只是以原始的java -jar 的方式来运行的话,不能保证程序的健壮性和稳定性,最好的办法是将程序注册成为服务来使用。

首先我们需要将应用程序打包成为一个可执行的jar包,我们需要添加如下依赖:

写好了应用程序,我们可以执行:

注册成为liunx服务

为了安全起见,我们需要创建一个运行用户,并给jar包赋予相应的权限:

创建一个文件链接到init.d目录,如下:

接下来我们就可以启动应用程序了:

Upstart是一个事件驱动的服务管理器,如果你使用Ubuntu,将会被默认安装。

在windows中,我们也有很多方式,如下:

Java Service Wrapper 提供了非常强大的配置,他可以让你的应用程序在windows和Linux下面使用。有兴趣的同学可以自行去学习。

}

Java智慧校园系统源码 智慧学校源码 小程序+电子班牌

近几年智慧校园的建设逐渐被师生、家长认可接受,智慧校园通过对在校师生、教务等所有人员的信息以及各种信息搜集与储存,进行数据优化与管理,为师生们提供更加智能化的校园服务。未来智慧校园将不再是一个陌生词,而会真正地应用在更多的校园管理中,让我们的校园生活变得更加美好。

小程序:小程序原生开发

源码有演示,可正常上线运营+可授权。

一、统一数据中心:统一数据中心平台是对智慧校园全局数据进行集中录入、管理和存储的平台,为全局数据的消费和应用提供标准的、权威的、一致的、准确的数据来源。

学校信息:学校信息自定义格式展示,可上传学校相册,自定义学校基础信息栏。支持管理员或教师对学校对基本学校信息进行编辑并浏览,通过编辑提交后全校可查看

学科设置:学校学科展示,添加学科,双击修改学科、删除学科。

组织架构:支持管理员单个创建以及批量创建部门,部门层级最少不低于四级架构;组织架构支持可视展示。

教师数据:支持教师多部门多角色,支持粘贴复制简易化批量导入,批量导入支持字段错误检索,支持一键重置密码。

学生数据:支持单个学生信息录入、修改、删除,支持粘贴复制简易化批量导入,支持一键重置密码

教室管理:班级绑定教室,教室绑定设备,通过教室切换班级即可实现设备一键切换班级,支持添加、删除、修改教室信息。

权限管理:数据权限、功能权限、角色管理、应用权限。

课表管理:支持支持管理员课表模板设置,支持复制粘贴简易化批量导入,批量导入支持支持学科及任课教师错误检索。

通过设备管理对智慧电子班牌以及智慧屏校牌进行统一集中管理,支持浏览所有设备的基本信息以及在离线状态,支持一键重启、一键关机、节假日自动开关机、日常自动开关机、远程升级、远程截屏、远程控制设备音量、远程查看在离线状态、扫一扫快捷绑定设备。

班级考勤:web端自由设置考勤班次、考勤组,家长小程序端实时接收学生考勤推送,教师小程序端查看考勤状态。

值日管理:web端一键设置值日信息,智慧班牌展示值日信息。

通知管理:web端/小程序发布通知,web端/班牌查看通知。

视频管理:支持多班发送视频,实现推送至智慧班牌,班牌可查看视频。

请假管理:班牌、家长端小程序申请请假,web端/教师端小程序审批请假,智慧屏查看请假信息并放行。

图片管理:web端/小程序发布图片,web端/班牌查看图片。

考场管理:教师web端录入考场信息,班牌启动考场模式,可批量设置考场,班牌自动切换考场模式。

成绩管理:教师web端分学科录入成绩,支持成绩的计分规则自主选择,一键推送成绩至家长端,支持学生在班牌上查询自己的成绩单。

评价管理:web端/教师小程序端编辑点评,评价信息实时推送至家长,家长端查看孩子在校表现,班牌展示评价光荣榜,激发学生进取心。

家长留言:家长小程序端给孩子留言,智慧班牌通知提醒学生查看家长留言。

进离校管理:支持孩子通过闸机人脸识别、刷卡进出校,实时推送给家长小程序孩子已进离校的信息。

通知管理、图片管理、班级考期、综合素质评价、视频管理、请假管理、成绩管理、个人信息、进离校管理、教师通讯录、家长留言、课堂点名、家长会签到、活动报名、放学管理、学生评价。

设备管理、通知管理、图片管理、班级考勤、综合素质评价、视频管理、请假管理、成绩管理、个人信息、进离校管理、家长通讯录、教师通讯录、教师课表、AI智能分析、课堂点名、课堂授课、家长会签到、活动报名、积分商城、倒计时、班级德育、体温检测、放学管理、学生评价。

本内容为PUDN经合法授权发布,文章内容为作者独立观点,不代表PUDN立场,未经允许不得转载。

}
    注意:这个路由规则,一定要放置到最后,否则会优先进行Host匹配,导致其他路由规则失效。
    原因分析:Nginx代理给网关的时候,会丢失请求头的很多信息,如HOST信息,Cookie等。
    
    
    配置配置=新 配置(); //1、锁的自动续期,如果业务超长,运行期间自动给锁续上新的30s,不用担心业务时间长,锁自动过期后被删掉//2、加锁的业务只要运行完成,就不会给当前锁续期,即使不手动解锁,锁默认会在30s以后自动删除// 1、如果我们传递了锁的超时时间,就发送给 redis 执行脚本,进行占锁,默认超时就是我们指定的时间 //只要占锁成功,就会启动一个定时任务,【重新给锁设置过期时间,新的过期时间就是看门狗的默认时间】,每隔10s就自动续期

    1、进入 Lock 的实现 发现 他调用的也是 lock 方法参数 时间为 -1

    这个变量在构造的时候就赋初始值

     
     
    
    
    
     
    


    两个线程写 最终只有一个线程写成功,后写成功的会把之前写的数据给覆盖,这就会造成脏数据。

    一号连接写数据库然后删缓存二号连接写数据库时网络连接慢,还没有写入成功三号链接直接读取数据,读到的是一号连接写入的数据,此时二号链接写入数据成功并删除了缓存,三号开始更新缓存发现更新的是二号的缓存

    缓存数据一致性解决方案

    无论是双写模式还是失效模式,都会到这缓存不一致的问题,即多个实力同时更新会出事,怎么办?
    1、如果是用户纯度数据(订单数据、用户数据),这并发几率很小,几乎不用考虑这个问题,缓存数据加上过期时间,每隔一段时间触发读的主动更新即可
    2、如果是菜单,商品介绍等基础数据,也可以去使用 canal 订阅,binlog 的方式
    3、缓存数据 + 过期时间也足够解决大部分业务对缓存的要求
    4、通过加锁保证并发读写,写写的时候按照顺序排好队,读读无所谓,所以适合读写锁,(业务不关心脏数据,允许临时脏数据可忽略)
    
    我们能放入缓存的数据本来就不应该是实时性、一致性要求超高的。所以缓存数据的时候加上过期时间,保证每天拿到当前的最新值即可
    我们不应该过度设计,增加系统的复杂性
    遇到实时性、一致性要求高的数据,就应该查数据库,即使慢点
    
    每次调用需要缓存功能的方法时,spring会检查检查指定参数的指定的目标方法 是否已经被调用过;如果有就直接从缓存中获取方法调用后的结果,如果没有就 调用方法并缓存结果后返回给用户。下次调用直接从缓存中获取。


    使用Spring缓存抽象时我们需要关注以下两点:

    1、确定方法需要缓存以及他们的缓存策略
    2、从缓存中读取之前缓存存储的数据
    
    #指定缓存类型为redis
    
    指定缓存类型并在主配置类上加上注解:@EnableCaching
    

    默认使用jdk进行序列化(可读性差),默认ttl为-1永不过期,自定义序列化方式需要编写配置类。

    6.3、将数据保存成JSON格式

    @Cacheble注解表示这个方法有了缓存的功能,方法的返回值会被缓存下来,下一次调用该方法前,会去检查是否缓存中已经有值,如果有就直接返回,不调用方法。如果没有,就调用方法,然后把结果缓存起来。这个注解一般用在查询方法上。 加了@CachePut注解的方法,会把方法的返回值put到缓存里面缓存起来,供其它地方使用。它通常用在新增方法上。 使用了CacheEvict注解的方法,会清空指定缓存。一般用在更新或者删除的方法上。 Java注解的机制决定了,一个方法上只能有一个相同的注解生效。那有时候可能一个方法会操作多个缓存(这个在删除缓存操作中比较常见,在添加操作中不太常见)。 Spring Cache当然也考虑到了这种情况,@Caching注解就是用来解决这类情况的,大家一看它的源码就明白了。 前面提到的四个注解,都是Spring Cache常用的注解。每个注解都有很多可以配置的属性,这个我们在下一节再详细解释。但这几个注解通常都是作用在方法上的,而有些配置可能又是一个类通用的,这种情况就可以使用@CacheConfig了,它是一个类级别的注解,可以在类级别上配置cacheNames、keyGenerator、cacheManager、cacheResolver等。
     
     
     
     
    

    修改分类后删除redis中的缓存

    # 如果制定了前缀就是用指定的,如果没有指定前缀就使用缓存名字作为前缀
    
    缓存击穿:大量并发进来同时查询一个正好过期的数据。解决方案:加锁?默认是无加锁的;使用sync=true来解决击穿问题

    2)写模式:(缓存与数据库一致)

    读多写多,直接去数据库查询就行
    常规数据(读多写少,即时性,一致性要求不高的数据,完全可以使用Spring-Cache)
    写模式(只要缓存的数据有过期时间就足够了)
    

    上一章:day06-仓库系统
    下一章:day08-检索服务

}

我要回帖

更多关于 华为主题开发怎么上传作品 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信