August 2016

You are browsing the site archives for August 2016.

我们前面的博客中仔细阐述了ext2_allocate_branch()的实现原理,其主要作用是分配写所需的直接和间接块,并建立映射关系,但仔细分析后,我们可以发现,这种映射关系建立的不是很彻底,即有些该做的还未做,那么这些未做的留到哪了呢?就在本文所要分析的ext2_splice_branch()函数中来实现。

Continue reading ext2_splice_branch解析

在之前的多篇博客中我们都比较详细地阐述了ext2_get_block()路径中各个函数的实现原理,今天我们来关注下ext2_allocate_branch()的实现细节,这个函数是非常重要的,而且理解起来也没那么简单,虽然说函数的功能一句话就可能说完:为数据块建立映射路径。

Continue reading ext2_allocate_branch()解析

说明 在服务端编程时,有时候需要一个很重要的功能便是客户身份验证,而一种通常的验证方法是白名单:只有在白名单列表中的客户端才可以被允许访问。 因为服务端提供的API很多,因此,必须在每个API实现中都需要去检查客户端权限,这种实现方法有以下问题: 违背了DRY原则,所有的白名单检查代码其实都是一模一样; 将身份认证和业务逻辑耦合的比较紧密了,如果我们需要将白名单变成另外一种实现,修改的地方会很多

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

概述 在Golang HTTP编程中,最核心的逻辑在于编写每个URI相应的Handler。在Handler中完成请求解析、业务逻辑处理、日志打印以及响应的发送等。 但是随着代码数量的激增,一些通用的方法如果单独写在每个Handler的话,会使得代码阅读和重构起来会比较麻烦,如上面提到的日志打印以及响应发送。

Continue reading NSQ使用Decorator对HTTP Handler修饰

ext2文件系统在为一次写分配数据块之前,一般会在处理过程中为块分配器提供一个参考意见(即最好选择哪个磁盘块分配),其选择的标准是尽量将文件的数据块连续,并且将文件的inode所在块和数据块尽量分配在一起,以加速文件读写过程。有了这一原则作为指导思想,我们在理解其逻辑时就简单了很多。

Continue reading ext2_find_goal详解