这里简单说一个springboot生态下基于redis实现的分布式锁方案。预期实现的效果是在要加锁的方法上添加一个注解,然后就能根据请求参数得到并加上锁,方法执行完后,也会自动释放锁。这样在实现方法时,开发者就可以只关注业务逻辑,不用考虑加
[阅读更多...]-
使用Spring AOP实现注解式的分布式锁
-
MapStruct属性多转一实现
在项目里遇到了需要使用mapstruct将source对象的多个属性转为target对象的一个属性的场景。针对这个问题研究了一段时间,发现想要解决得好一些还是挺让人头疼的。 先说结论吧:MapStruct支持将多个对象转为一个对象,但是不支
[阅读更多...] -
springboot入门16 – 包装Controller返回值2
之前有整理过一次怎样包装SpringBoot Controller的做法。 最近在原有方案的基础上又升级了下,可以通过引入 spring-boot-starter 的形式对接口返回值进行封装。 具体做法如下: 1. 引入 zhy-sprin
[阅读更多...] -
springboot入门15 – profile设置
配置方式 命令行方式 命令行方式是一种外部配置的方式,在执行java -jar命令时可以通过 –spring.profiles.active=test的方式进行激活指定的profiles列表。 使用方式如下所示: 系统变量方式 需要添加一
[阅读更多...] -
基于redis实现分布式bloomfilter
如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。不过世界上还
[阅读更多...] -
springboot入门14 – Kafka应用
简述 这几天优化了一下之前写的一个springboot kafka组件。比较起原生的spring-kafka来,我希望能够简化kafka的使用,可以更聚焦于具体的消息处理逻辑。 接下来的内容是这个组件的用法。 使用方法 添加依赖 这个组件已
[阅读更多...] -
springboot入门13 – 多CacheManager应用
概述 之前有写过springboot缓存应用的说明(《springboot入门01 – 缓存的使用》)。不过实际的场景有时候会比较复杂一些,比如:需要同时使用redis和caffine来做多级缓存,或者需要在通用配置外应用一些个性化的配置。
[阅读更多...] -
springboot入门12 – SpringBoot MyBatis读写分离
概述 随业务量增长,数据库读写分离是迟早要面临的问题。另外,公司在上规模后一般也会要求统一采用主从分布式数据库。 我习惯的处理方案是在应用层进行隔离:即将以写为主的业务放在一个应用上,以读为主的业务放在其他应用上。这应该算是最简单粗暴的解决
[阅读更多...] -
Excel导出超过65535行报异常
工程中在使用POI导出Excel数据,某次因为导出的数据量比较大就报了下面的错误: 查了下资料,了解到问题在于使用了HSSFWorkbook。HSSFWorkbook用来操作Excel2003以前(包括2003)的版本,限制了每个Sheet
[阅读更多...] -
SpringBoot读写xml上传到S3
最近的工作涉及到了生成xml文件并上传到AWS存储服务S3这样的处理。期间遇到了两个问题,简单记录下: springboot读取xml模板异常 将生成的xml上传到S3的问题 springboot的版本是2.1.9.RELEASE,读写xm
[阅读更多...]