摘要:maven 依赖包 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.9</version> </dependency> <dependency>
阅读全文
摘要:base64转换为字符串 /** * base64转字符串 * @param base64 * @return */ public static String base64ToStr(String base64) { if (StringUtils.isBlank(base64)) { return
阅读全文
摘要:在开发中,有时需要对 app的新版本和旧版本,做不同的处理。可以根据版本号判断。 新版本app交互有变化时,同一个接口在 不同版本可能要返回不同的数据。 如果不区分新旧版本,有可能会导致旧版本app 不可用。 比如 旧版本1.2.1有一个功能是跳转 微信,到了新版本修改了 app的交互,变成跳转 微
阅读全文
摘要:AES AES是 对称加密。 对称加密是指加密和解密使用相同的密钥的加密算法。 非对称加密是指加密和解密使用不同的密钥的加密算法。 AES加密解密 加密模式,有 ECB模式 和 CBC 模式等等,ECB 不需要 iv偏移量,而CBC需要。 密钥,可以自定义。 填充方式,有 PKCS5 、PKCS7、
阅读全文
摘要:一、定义 策略模式,针对每一个不同的类型,调用具有共同接口的不同实现类,从而使得它们可以相互替换。 策略模式 ,针对实现同一接口的不同的类,采用不同的策略。比如,面对高级会员、初级会员会采用不同的折扣。 策略模式,可以避免大量的if和else。 二、角色 策略模式涉及到三个角色: ● 环境(Cont
阅读全文
摘要:一、异常处理 有异常就必须处理,通常会在方法后面throws异常,或者是在方法内部进行try catch处理。 直接throws Exception 直接throws Exception,抛的异常太过宽泛,最好能抛出准确的异常,比如throws IOException之类。 User getUser
阅读全文
摘要:Spring/SpringBoot 拦截器 拦截器的作用: 拦截器,可以进行请求过滤、权限管理、打印日志、数据校验等。 拦截器,可以在请求前、请求后进行处理。 代码示例: 拦截器 MyInterceptor: Spring的拦截器,需要实现 HandlerInterceptor 接口。 public
阅读全文
摘要:使用场景 在java开发中,有时需要使用excel读取和写入数据。 可以使用 poi来处理。 引入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version
阅读全文
摘要:安装kafka: Windows安装kafka, 详情见:https://blog.csdn.net/sinat_32502451/article/details/133067851 Linux 安装kafka,详情见:https://blog.csdn.net/sinat_32502451/art
阅读全文
摘要:延时队列 在开发中,有时需要使用延时队列。 比如,订单15分钟内未支付自动取消。 jdk延时队列 如果使用 jdk自带的延时队列,那么服务器挂了或者重启时,延时队列里的数据就会失效,可用性比较差。 Redisson延时队列 可以使用Redisson的延时队列。 Redisson的配置 详情见: ht
阅读全文
摘要:SpringBoot中使用@Retryable注解进行重试 有功能需要重试时,可以使用Spring的 @Retryable 注解. 参数含义: value:抛出指定异常才会重试 exclude:指定不处理的异常 maxAttempts:最大重试次数,默认3次 backoff:重试等待策略,默认使用@
阅读全文
摘要:### 分库分表 之前试过了分表不分库,详情见:https://www.cnblogs.com/expiator/p/17524493.html 这次再试下分库分表。 ### 依赖包 SpringBoot 用的是 2.6.13 版本。 ``` org.apache.shardingsphere sh
阅读全文
摘要:### shardingsphere-jdbc 5.0 有什么优点? 5.0之前的版本,不支持CASE WHEN、HAVING、UNION(ALL),有限支持子查询。 5.0支持这些特性,开发起来会更方便些。 ### 依赖包 SpringBoot 用的是 2.6.13 版本。 ``` org.apa
阅读全文
摘要:### 一、依赖包 SpringBoot 用的是 2.0.6.RELEASE 版本。 ``` io.shardingsphere sharding-jdbc-spring-boot-starter 3.0.0.M4 org.springframework.boot spring-boot-start
阅读全文
摘要:### 配置表 通过配置表,灵活的配置。 开发中某些经常变更的参数值,加上配置。比如 订单30分钟后失效,需求变更,要改为15分钟,那么直接改配置表就行了,不用发版。 某些关键的容易出错的逻辑,加上一个开关,也就是 config_value 为 0或1,为1表示打开,为0表示关掉。 不需要的逻辑,可
阅读全文
摘要:### 开关 某些关键的容易变更的逻辑,加上一个开关。 需要的时候,打开开关。 不需要的逻辑,可以及时用开关关掉。 或者是逻辑复杂,开发环境造数据麻烦时,也可以配置开关,把前置条件关掉,方便验证数据,也方便测试。 ### 示例: ``` @Service public class SwitchSer
阅读全文
摘要:### @PostConstruct 以Post为前缀的单词,指 在...之后。比如 postgraduate 就有大学毕业后的意思。 Construct 是构造方法。 @PostConstruct 是指在构造方法之后运行的意思。 ### 执行顺序: Constructor(构造方法) -> @Po
阅读全文
摘要:### @Configuration 和 @Bean * @Configuration 用于定义配置类,作用在类上。 * @Bean 用于定义 Bean对象,作用在方法上。 @Configration 注解类中可以声明一个或多个 @Bean 方法 ### User 类 ``` public clas
阅读全文
摘要:Spring/SpringBoot自定义线程池 在 Spring/SpringBoot 中,可以使用 @Configuration 和 @Bean 去设置线程池,用 @Value 去做线程池的参数配置。 依赖包: 引用 google 的 guava包。 <dependency> <groupId>c
阅读全文
摘要:依赖包: 不要使用太低的 版本,低版本有内存泄露的问题。可以使用 3.18 及以上的版本。 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.18.1</version>
阅读全文