Code Life

boris1993的个人博客

在前后端分离的架构下,后端通常是一个 RESTFul 的接口,而因为 HTTP 的响应码数量有限,无法灵活的反映出接口执行的各种结果,在这种情况下,就需要通过自定义的结构来表达接口最终的状态和返回的信息。而我正好最近在一个项目中实现了一个基于 ControllerAdvice 的统一请求响应的功能,在这里记录一下实现的方式。

阅读全文 »

application.yml 中添加如下配置,即可在 Spring Boot 项目中开启 HTTPS。

1
2
3
4
5
6
7
8
9
10
11
12
13
server:
# 如果有需要的话,配置应用监听HTTPS的默认端口
port: 443
ssl:
# 我把证书放在了 resources/cert/certificate.pfx下
# 使用时需要按照实际情况修改下面的路径
key-store: classpath:cert/certificate.pfx
key-store-password: pA55w0Rd
# 证书类型需要按照实际类型填写
# 本例使用PKCS12格式,所以写PKCS12。如果是JKS格式,那么需要填写JKS
# 因为PKCS12比JKS有更好的通用型,所以个人建议使用PKCS12格式
key-store-type: PKCS12
enabled: true
阅读全文 »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 业务异常基类
*/
public abstract class BaseBizException extends RuntimeException {
public BaseBizException(String message) {
super(message);
}

/**
* 覆盖fillInStackTrace()方法,抹掉异常中的堆栈跟踪信息
*/
@Override
public synchronized Throwable fillInStackTrace() {
return this;
}
}

  • PK: 主键 (Primary Key)
  • NN: 非空 (Not Null)
  • UQ: 唯一索引 (Unique Index)
  • BIN: 二进制 (Binary) 将数据储存为二进制字符串
  • UN: 无符号的 (Unsigned)
  • ZF: 零填充的 (Zero Fill) 如:INT (5) 的列中,12 会被填充为 00012
  • AI: 自增长的 (Auto Increment)
  • G: 生成出来的 (Generated) 如:根据公式从其它列中生成的数据
阅读全文 »

在我们开发过程中,最常见到的三种校对规则 (collation) 就是 utf8mb4_general_ciutf8mb4_unicode_ci,和 utf8mb4_bin。那么这三种排序规则之间有什么区别,在开发过程中又该怎么选择?这里就简单说一下我所了解到的知识,和我的理解。

阅读全文 »

前些天在开发过程中,发现 IDEA 在一个 @Autowired 注解上打了一个警告,内容是 Field injection is not recommended。多年面向 Spring 开发的经验告诉我,使用 @Autowired 注解进行依赖注入,肯定是没有问题的。但是我的代码洁癖不允许我这么不明不白的留一个警告在这里。所以,带着我的洁癖,和我的好奇心,我开始研究起了这个警告。

阅读全文 »

有的小伙伴,在公司需要使用公司的 Git 来干活,同时自己也有些托管在 GitHub 等其他仓库的代码,在这种情况下会有一个烦恼,就是怎么样在多个仓库之间使用不同的配置。比如在公司仓库和个人仓库之间使用不同的身份信息,或者在公司仓库和个人仓库之间,使用不同的 GPG 签名。

2.13 版本之前,大概你就只能单独为每一个仓库单独设定这些信息了,但是,在 2.13 这个版本中,Git 引入了一个名为 “按条件引入”(Conditional includes) 的功能。这个功能允许用户通过指定一定的条件,来使 Git 从不同的配置文件中取得配置项。

阅读全文 »

在使用 MyBatis 查询数据库时,偶尔会出现短时间高频查询的情况。或者,会被短时间高频率查询的数据需要通过另一个微服务的接口来获取。显而易见,高频率的查询数据库,或者高频率的调用微服务的接口,是会对性能产生一定影响的。

在这种情况下,或许可以考虑将相关的数据一次性全部查询出来,然后根据某一列作为 key,将其存放在一个 Map 中,把这个 Map 当成一个临时的缓存。

阅读全文 »
0%