Golang一种白名单封装方法

说明

在服务端编程时,有时候需要一个很重要的功能便是客户身份验证,而一种通常的验证方法是白名单:只有在白名单列表中的客户端才可以被允许访问。

因为服务端提供的API很多,因此,必须在每个API实现中都需要去检查客户端权限,这种实现方法有以下问题:

  • 违背了DRY原则,所有的白名单检查代码其实都是一模一样;
  • 将身份认证和业务逻辑耦合的比较紧密了,如果我们需要将白名单变成另外一种实现,修改的地方会很多

Continue reading Golang一种白名单封装方法

NSQ使用Decorator对HTTP Handler修饰

概述

在Golang HTTP编程中,最核心的逻辑在于编写每个URI相应的Handler。在Handler中完成请求解析、业务逻辑处理、日志打印以及响应的发送等。

但是随着代码数量的激增,一些通用的方法如果单独写在每个Handler的话,会使得代码阅读和重构起来会比较麻烦,如上面提到的日志打印以及响应发送。

Continue reading NSQ使用Decorator对HTTP Handler修饰

Effective Java读书笔记(2)

遇到多个参数时考虑使用构建器

这里主要介绍了在类具有多个构造参数时如何写构造的问题。书中使用了一个具有众多营养成分标签的包装食品为例作说明。

这些标签中有部分元素是必须的,如每份的含量,每罐的含量以及每份的卡路里等。但同时也包含20多种可选元素,如总脂肪量、饱和脂肪量等。

Continue reading Effective Java读书笔记(2)