防止重复提交是一个系统必须要做的一个事情。在客户端页面,我们可以通过点击按钮后设置disabled等方式来进行处理,在这里我们不做讨论。但真正的重复提交,是后端服务必须要校验住的,我们不希望用户连续点击了两次按钮,就在我们的系统中产生了两条重复的记录,这是无意义的,也是用户不希望发生的,因此对于一个健壮的系统,我们就要考虑这样的场景。... 阅读详情
Read More →标签: SpringBoot
两年的疫情肆虐对于旅游行业产生了巨大的冲击,从国家发布的旅游行业统计数据来看,从2016年开始,旅游总人数及消费总金额呈逐年递增的趋势,但到了2020年之后,均出现了几近减半的情况。同时2020年的全年客运总量也从之前的递增水平变成了骤减,可以想象从疫情不断被控制又不断的死灰复燃这样跌宕起伏的情景当中,人们对于出行计划的考虑也是变得慎之又慎。... 阅读详情
Read More →做项目经常要写的,不只是代码,也不是寂寞,而是文档。项目文档,设计文档,接口文档等等。那接口文档怎么写,大家都知道用Swagger。但一说到Swagger,就不得不提一下OpenAPI。简单来说,OpenAPI简称OAS,即OpenAPI Specification,是一个用于定义和描述API的语言规范,可以通过这套规范,在向第三方的开发者提供对外暴露的接口服务时,大家达成统一的标准。... 阅读详情
Read More →线程池的优点自不必说,重用已有的线程,可以有效减少线程创建及销毁对性能造成的损失。并且通过有效控制线程数量,可以避免资源拥堵,或提高系统资源的使用率。但如何用好线程池才是重点,本篇就通过一个简单的例子,重温线程池相关的知识点。... 阅读详情
Read More →项目上常常需要多个数据源来存取数据,最近项目上试用了Tidb,因为兼容MySql协议,我们可以直接像Mysql一样在项目中进行配置。那么如何快速的将单一的数据源改成多数据源,并能够在项目中动态的切换就是本次要说的事情。下面精简并省略了无关代码,主要使用`AbstractRoutingDataSource`实现,使用AOP切换,在此记录配置过程以便查阅,分分钟解决问题。... 阅读详情
Read More →项目在运行过程中,难免会存储一些敏感的信息,如用户手机号,住址,身份证号,银行卡号等等,这些以明文的方式存储在DB中是极其不安全的,尤其当我们的研发,运维都对数据库表拥有权限时,用户敏感信息泄露就可能会在不经意间发生。因此对于安全责任感重于泰山的公司来说,数据加密至关重要。... 阅读详情
Read More →最近才发现,之前在github上上传的jwt的示例项目竟也有125个星星,虽不多,但是作为首次上传的项目还是有点儿激动的。所以趁着端午有空,就又完善了下,升级了一些有漏洞的依赖到较新的版本,也对代码做了一些优化。将前端的vue-cli也更新到了3.*,没有添加太多的功能,主要包含的是用户及基础的权限控制,集成了单点的定时任务等,对于学习或者接一些小的项目还是可以的。... 阅读详情
Read More →Quartz是一个强大的作业调度框架,在这之前我们已经使用Quartz实现了很多自定义的定时任务,如数据库备份,定时发送消息等,并且很多分布式作业调度中心系统均以它为基础实现此类功能。这篇是在单体的Springboot 2.*应用下集成quartz框架,实现动态更改任务执行状态及触发时间等。... 阅读详情
Read More →自去年1月旅行社接送机系统上线到现在已经稳定运行1年多的时间,在这期间对系统的功能做了很多优化,并也新增了一些重要功能,截止目前已有两家在使用接送机系统进行每日排班,正是因为信息系统的支撑使得平时需要花费几个小时所进行的排班工作变得简单高效。... 阅读详情
Read More →最近使用SpringBoot集成Shiro,JWT快速搭建了一个后台系统,Shiro前面已经使用过,JWT(JSON Web Tokens)是一种用于安全的传递信息而采用的一种标准。Web系统中,我们使用加密的Json来生成Token在服务端与客户端无状态传输,代替了之前常用的Session。
系统采用Redis作为缓存,解决Token过期更新的问题,同时集成SSO登录,完整过程这里来总结一下。... 阅读详情