在写DAO层的单元测试时,用mock的写法意义不大,因为基本上测不出什么东西,但如果采用真实的数据库又会有一些问题:

  1. 测试可能会干扰到真实的数据。
  2. 即使使用不同的库来解决上述问题,也要求测试环境预先配置好数据库,不方便CI/CD。

所以相比使用和生产环境相同的数据库,可以采用H2数据库来写单元测试。

阅读更多

关于线程安全,有这么一段描述:

A class is thread-safe if it behaves correctly when accessed from multiple threads, regardless of the scheduling or interleaving of the execution of those threads by the runtime environment, and with no additional synchronization or other coordination on the part of the calling code.

即在多线程的环境下,无论线程如何被调度,线程间有怎样的交错,程序都能表现出正确的行为。

但仔细研究ArrayList的源码就会发现,它并不满足这一描述。

阅读更多

在实现单例模式时,如果未考虑多线程的情况,就容易写出下面的错误代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Singleton {
private static Singleton uniqueSingleton;

private Singleton() {
}

public Singleton getInstance() {
if (null == uniqueSingleton) {
uniqueSingleton = new Singleton();
}
return uniqueSingleton;
}
}

阅读更多

因为想自己搭建博客又不想自己托管(不稳定,数据易丢,需自己处理扩容),所以这段时间研究了一下平台托管的博客,大概有两类方案:

  • WordPress.com(不是WordPress.org)
  • 静态博客生成器+托管平台

阅读更多

JWT(JSON Web Token)是一个开放标准(RFC 7519),它定义了一种紧凑且独立的方式,可以在各个系统之间用JSON作为对象安全地传输信息,并且可以保证所传输的信息不会被篡改。

阅读更多

API开发中经常会遇到一些对请求数据进行验证的情况,这时候如果使用注解就有两个好处,一是验证逻辑和业务逻辑分离,代码清晰,二是验证逻辑可以轻松复用,只需要在要验证的地方加上注解就可以。

Java提供了一些基本的验证注解,比如@NotNull@Size,但是更多情况下需要自定义验证逻辑,这时候就可以自己实现一个验证注解,方法很简单,仅需要两个东西:

阅读更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×