ext2_splice_branch解析

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

ext2_allocate_branch()解析

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

Golang一种白名单封装方法

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

Setup NFS on RHEL/Fedora and Debian/Ubuntu

Preface NFS (Network File System) is basically developed for sharing of files and folders between Linux/Unix systems by Sun Microsystems in 1980. It allows you to mount your local file systems over a network and remote hosts to interact with them as they are mounted locally on the same system. With the help of NFS, we can set up file sharing between Unix to Linux system and Linux to Unix system.

NSQ使用Decorator对HTTP Handler修饰

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