使用 Google AutoValue 自动生成代码

转载请注明出处:http://tedyin.me/2016/04/11/auto-value/

Java中通常定义一个模型类时,需要定义一堆不同类型的成员变量,而且为了满足面向对象的基本特征,又要定义一堆相应的GetterSetter等方法,这个过程是非常枯燥的要写一堆样板代码。虽然现在 IDE 可以很好的帮我们生成这些样板代码,但是如果看到一个模型类里面有这么一堆的方法,总觉是会觉得不够清晰。

我只想知道这个模型有哪些属性,以及特殊的方法,并不想知道大家都有的东西,你却非要让我看。。。

好了,现在有办法可以解决这个问题了,使用 Google 开源的 AutoValue 就可以解决上述烦恼,而且最近AutoValue项目支持了大家期待已久的Extension API,使得AutoValue更加灵活,至于这个Extension API是干啥的后面会讲到,现在暂时不用去关心他。

适配器模式

转载请注明出处:http://tedyin.me/2016/03/20/adapter-pattern/

这次跟大家分享一下我对适配器模式的理解。

适配器模式的定义:

将一个类的接口转换成用户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的类,可以一起工作了。

举个我们日常生活中的例子:

有一部移动电源,有一部iphone一部android手机,需要充电使用普通的Usb线就可以给android手机充电,而在给iphone充电的时候必须使用适配iphone的万能转接头才能充电。

iphone和android就相当于两个不兼容的接口,转接头就相当于一个适配器,他使得iphone和android手机都能充电了。

你真的会用单例模式吗

转载请注明出处:http://tedyin.me/2016/03/13/singlton-pattern/

今天给大家介绍一下单例模式,就是这个出场率特别高的模式,是个程序员基本都用过他,没用过至少也都知道他。可是我们真的了解他吗?

单例模式通常的实现方式分为以下两种:

饿汉式

1
2
3
4
5
6
7
8
9
10
public class Singleton{
private static Singleton instance = new Singleton();
private Singleton(){}
public static Singleton newInstance(){
return instance;
}
public void doSomething(){
// Do something ...
}
}

让你的Rails应用更加健壮的5种姿势『译』

原文链接: Five Practices for Robust Ruby on Rails Applications
转载请注明出处:http://tedyin.me/2016/03/06/five-practices-for-robust-ruby-on-rails-applications/

无论什么时候,当我发现项目里面存在 bug 或者数据不一致,但却又很难找到是哪里出了问题时,我总是会感叹:“他们(the developer)只需要再多敲几下键盘,这些事情就不会发生了。”

Brewhouse的工作中,我们会应用下面5种最佳实践,让我们的 Rails 应用更加健壮。因为这些方法可以让代码在遇到问题时,可以尽早地、明确地、快速地的抛出问题,告诉我们哪里出错了。我们可以通过捕捉这些错误信息来确保我们所有的数据和操作都是正确有效的。

Elasticsearch 的批处理

前面已经介绍了如何使用ES提供的REST API去做CRUD操作,但是这些操作都是单一的.今天来介绍一下ES中的批处理,可以批量CUD索引和文档

1
curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary "@accounts.json"

@accounts.json是存在当前目录下的一个json文件,里面存储了一个josn数组,你可以让她存储任何结构相同的数组.

所有的批量操作都是使用_bluk API来完成,上面的操作就是为accounts.json里面的数据建立索引.

Elasticsearch CRUD

有了对ES的基本概念后,下面要做的就是了解如何与ES进行交流,ES非常贴心的提供了一套REST API让大家与他进行交流.这些API能做的事情包括以下几点

  • 检查你的集群,节点以及索引的状态信息
  • 管理你的集群,节点以及索引等的数据
  • 执行高级的搜索操作等
    总之有了这套REST API你几乎可以让ES干它所能干的所有事.