springboot入门12 – SpringBoot MyBatis读写分离

概述

随业务量增长,数据库读写分离是迟早要面临的问题。另外,公司在上规模后一般也会要求统一采用主从分布式数据库。

我习惯的处理方案是在应用层进行隔离:即将以写为主的业务放在一个应用上,以读为主的业务放在其他应用上。这应该算是最简单粗暴的解决方案了,却也能帮我应对90%需要读写分离的场景。不过总还有10%的特殊场景需要思考下怎样在应用内实现读写分离。

在应用内做读写…

Excel导出超过65535行报异常

工程中在使用POI导出Excel数据,某次因为导出的数据量比较大就报了下面的错误:

SpringBoot读写xml上传到S3

最近的工作涉及到了生成xml文件并上传到AWS存储服务S3这样的处理。期间遇到了两个问题,简单记录下:

  1. springboot读取xml模板异常
  2. 将生成的xml上传到S3的问题

springboot的版本是2.1.9.RELEASE,读写xml文件使用的是Dom4J,版本是2.1.3。逐个说明下遇到的这几个问题。

1.springboot读取xml模板异常

现阶段是将x

Jackson处理json中的反斜杠

在使用jackson处理json时遇到了反斜杠相关的问题。比如我们从数据库或文件中读到了这样的一个json字符串:

可以看到在World前面有一个反斜杠。因为这个反斜杠,JetBrains IDEA会提示这是一个错误的字符串,使用jakcson处理这个json字符串时也会报错,错误信息如下:

java唯一字符串ID生成方案

工作中经常会有生成唯一字符串的需求。通常最容易想到的是UUID。UUID的唯一性毋庸置疑,但是32位的长度也容易让人退避三舍。也曾经想过参考《短网址生成方案》来生成一串ID,但是试验了一下发现唯一性不太好。

最终采用的方案是时钟方案,简单来说就是用当前时间戳做唯一ID。

采用时间戳做ID,秒或毫秒都容易产生重复,换成纳秒在单节点上就没问题了。参考百度百科关于纳秒…

Java 抽象工具类

在SpringBoot的源码中有看到使用abstract关键字定义的工具类,如:

Java AES加密

做360广告的对接需要对密码进行AES加密,下面是点睛平台文档的描述:

(AES模式为CBC,加密算法MCRYPT_RIJNDAEL_128)对MD5加密后的密码实现对称加密。秘钥是apiSecret 的前16位,向量是后16位,加密结果为64位数字和小写字母。

用Java实现AES需要依赖Java加密扩展(The Java Cryptography Extension…

springboot入门10 – 修改banner

这个内容有点儿水了。但是将springboot启动时的banner修改一下是个蛮好玩的事情。比如,不知道什么时候,我们组的springboot应用的banner就被改成了这个样子: