新的配置文件格式

程序中大都需要定义各种配置,诸如数据库连接之类的,最近也需要开发Web框架,于是也想找个比较好用的配置文件格式。搞来搞去,发现都不是很喜欢。先来看一下几种常见的配置文件格式吧: [阅读更多...]

关于代码注释

在一个“敏捷”的团队,写注释被认作是一个不好的习惯,因为他们认为,

Good programming is self-explanatory. Bad Programming requires explanation

总结一下,认为程序中不需要写注释的原因主要有如下的几点: * 需要写注释的程序说明代码不够清晰啊,可以可以通过重构的方式,让代码变得“可读” * 维护注释是一件工作量很大的事情,改完代码之后,时常会忘记修改注释 * 注释如果解释的不清楚,那就需要“注释的注释”... * …… [阅读更多...]

Why I don't use lombok

很多人,如同我的同事,似乎觉得lombok这玩意就像神一样的存在,“极大”的方便了项目的开发。我个人是不喜欢这玩意的,很简单的理由:

  • 生成getter/setter不是多么困难的事情,IDE很简单就能帮你搞定
  • 我不喜欢为自己的IDE装一大堆插件,还要为项目手动开启一下Annotation Processing
  • 代码不可见,意味着生成的getters/setter方法,以及@AllArgConstructor生成的方法无法维护 [阅读更多...]
关于 Java泛型

泛型是Java1.5之后一个比较有用的特性,有点类似于C++的模板。最简单的一个例子:

class Wrapper<T> {
    final T data;

    Wrapper(T data) {
        this.data = data;
    }
}

有一些可能不是特别常用的Generics,我们来简单看一下。 [阅读更多...]

分布式系统 ID 生成

ID生成一直是一个老生常谈的问题,个人不习惯使用ID自增的方式,从0开始...每次递增,原因是因为low...最近研究了一下ID生成的算法,主要用来给我们的订单系统用。首先说一下背景:我们的系统提供给很多经销商使用,每个经销商登录到我们的系统,发生业务、产生订单。 [阅读更多...]

使用Spring Cloud Contract进行契约测试

研究了一下契约测试,这个概念听着很高端,其实解决的是一个很古老的问题:系统间的接口定义。以前我们做系统同其他系统对接的时候需要定义接口,需要去设计,去确认;尤其是当下微服务比较盛行的时候,我们自己的系统之间也增加了接口,伴随着敏捷开发的流程,很多时候接口在一开始根本都不会去设计,想到哪改到哪.....于是就出现了所谓的契约测试的东西。 [阅读更多...]