分类: 程序

极简的多数据源动态切换配置
By: Date: 2021年2月4日 Categories: 程序 标签:

项目上常常需要多个数据源来存取数据,最近项目上试用了Tidb,因为兼容MySql协议,我们可以直接像Mysql一样在项目中进行配置。那么如何快速的将单一的数据源改成多数据源,并能够在项目中动态的切换就是本次要说的事情。下面精简并省略了无关代码,主要使用`AbstractRoutingDataSource`实现,使用AOP切换,在此记录配置过程以便查阅,分分钟解决问题。... 阅读详情

Read More →
大数据量写入Excel,试试EasyExcel
By: Date: 2020年11月5日 Categories: 程序 标签:

一直认为大数据量,如几百万上千万的数据写入到Excel是一个极度不合理的需求。对于一个企业来说这么大的数据存在极易泄露的风险,同时也无法对转储的文件及使用环节进行安全管控。而通过线上各个业务系统的打通,形成线上的完整闭环,才能使数据的流转以及使用得到有效的监管和监控。但是在实际的项目中,这样的需求屡屡皆是,尤其出现在与第三方客户业务对接过程中。... 阅读详情

Read More →
想自由配置并动态获取日期区间?那就用一个表达式搞定
By: Date: 2020年9月29日 Categories: 程序

给定这样一个场景,现在我们要在特定的某一天里,来汇总业务系统中某一段时间内的数据。在这基础上再加上一个要求,那就是不同的业务类型数据,汇总时间及区间也不同。这样的需求场景看起来是很合理,那么在这样的背景要求下,汇总数据很简单,但是如何拿到动态的时间区间,并且我们的汇总时间能够动态的配置,怎么能够方便快速的满足需求呢?... 阅读详情

Read More →
使用Sharding-JDBC加密数据
By: Date: 2020年8月31日 Categories: 程序 标签:

项目在运行过程中,难免会存储一些敏感的信息,如用户手机号,住址,身份证号,银行卡号等等,这些以明文的方式存储在DB中是极其不安全的,尤其当我们的研发,运维都对数据库表拥有权限时,用户敏感信息泄露就可能会在不经意间发生。因此对于安全责任感重于泰山的公司来说,数据加密至关重要。... 阅读详情

Read More →
开源前后端分离快速开发基础框架
By: Date: 2020年6月26日 Categories: 程序,案例 标签:

最近才发现,之前在github上上传的jwt的示例项目竟也有125个星星,虽不多,但是作为首次上传的项目还是有点儿激动的。所以趁着端午有空,就又完善了下,升级了一些有漏洞的依赖到较新的版本,也对代码做了一些优化。将前端的vue-cli也更新到了3.*,没有添加太多的功能,主要包含的是用户及基础的权限控制,集成了单点的定时任务等,对于学习或者接一些小的项目还是可以的。... 阅读详情

Read More →
新家已搬,欢迎光临!
By: Date: 2020年6月22日 Categories: 程序 标签:,

前几天,使用已久的windows服务器已然到期,于是打算把blog迁出去。考虑到已经用习惯了的wordpress比较顺手,就不再打算更换其他的系统。那面临的一个重要问题就是迁移。尝试了导出插件,但在导入的时候遇到问题,又因为没配置发邮件功能,也不想去用他的debug功能。同时还考虑到之前安装的插件对原有数据库的侵入,因为一部分插件已经不需要安装。好吧,爱干净的我就选择了重新安装,再单独迁移数据和已上传的文件资源。一阵操作猛如虎之后,blog又回来了。选择一个清爽的模板,少了很多插件,一切又回到了从前。这里就记下搬家的过程好了。... 阅读详情

Read More →
快速开发一个简单的Chrome插件
By: Date: 2020年6月20日 Categories: 程序 标签:

假设有这样一个场景,在一个订票的网站里,我们要为一起出游的20多个人订票,那么我们需要将这些人的姓名及证件号码分别在网页上录入。如果我们只一次性的订票,那么还是可以忍受,但是如果你是旅行社或者是从事这方面的工作,每天都是如此,仿佛就变成了一种负担,倘若再加上一个限制条件,每天的票量是有限的,那么在需要抢票的情况下,当然谁的操作越迅速,买票成功率就会越大。这个时候,有一个帮我们自动填写的浏览器插件,效率便会大大提高。Chrome的插件还是很方便的,它可以帮助我们在需要的页面上执行自己的一些代码,根据需求完成一些繁琐的操作,这时使用Chrome插件就是一个快捷的选择。... 阅读详情

Read More →
Springboot集成Quartz实现动态定时任务
By: Date: 2019年8月30日 Categories: 程序 标签:,

Quartz是一个强大的作业调度框架,在这之前我们已经使用Quartz实现了很多自定义的定时任务,如数据库备份,定时发送消息等,并且很多分布式作业调度中心系统均以它为基础实现此类功能。这篇是在单体的Springboot 2.*应用下集成quartz框架,实现动态更改任务执行状态及触发时间等。... 阅读详情

Read More →
采用JWT有效期内刷新Token方案,解决并发请求问题
By: Date: 2019年4月17日 Categories: 程序 标签:

继前面在Shiro整合JWT+Token过期刷新一文中,已经集成了shiro以及JWT,并且玩儿的开心觉得一切都很自然。然而有一天当看到日志中,同一时间报出了十多条AuthenticationException时,才发现有些东西被忽略了。回顾下我们之前的思路,当服务端在检查到请求的令牌过期之后,会刷新Token重新颁发令牌,并且再次做登录操作,看似平静友好无感知,但试想一下,在页面加载后倘若同一个页面中有多个请求几乎同一时间发起,每一个请求都携带原始令牌,在这样的设计下,就有可能出现在第一个请求到达后刷新了Token,并更改了缓存中的refreshToken的时间戳,以至于剩余请求校验时发现时间戳不一致导致验证失败而在日志中多次打印出当前Token已经失效的log。同时发起的请求越多,log中的异常也就会越多。虽然第一个请求已经刷新了Token,但是其余的请求是失败的,页面中的数据并不完整,显然这是不正常的,那该如何解决呢?... 阅读详情

Read More →