前言

The Google File System (GFS 或 GoogleFS) 一种专有分布式文件系统,由 Google 公司开发,运行于 Linux 平台上。
这篇论文发表在 2003 年,虽然时过多年,但是非常经典,在分布式存储领域具有非常重大的影响力。本篇文章对此篇论文进行一个翻译阅读和理解。

Read more »

作为一个被广泛应用的数据结构,我们必须了解红黑树的前世今生。红黑树是一种特殊平衡二叉树,其特殊的定义可以保证比较高效的查找效率。看了很多相关的博客,但是目前还没有完全理解其中删除后的调整策略。而且特别容易遗忘,所以在这里做个笔记,以便以后的学习和复习。

Read more »

好几次遇到关于 KMP 匹配算法的使用,但是每次看到以后都忘了,所以这里做个记录。

Read more »

AbstractQueuedSynchroizer 简称 AQS,是一个抽象的队列式同步框架,提供了阻塞锁和 FIFO 队列实现同步操作,用来构建锁和同步器。JUC 包中的同步类基本都是基于 AQS 同步器来实现的,如 ReentrantLock,Semaphore 等。

AQS 采用了模板方法设计模式,支持通过子类重写相应的方法实现不同的同步器。在 AQS 中,有一个 state 变量,表示同步状态 (同步状态可以看作是一种资源,对同步状态的获取可以看作是对同步资源的竞争),AQS 提供了多种获取同步状态的方式,包括独占式获取、共享式获取以及超时获取等。

Read more »

1 简介

ArrayList 是一种以数组实现的 List,与数组相比,它具有动态扩展的能力,因此也可称之为动态数组。

在添加大量元素前,应用程序可以使用 ensureCapacity 操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。

Read more »

Git 几乎是现在版本管理的标配。用了好几年的 Git,但是有一些功能还是用的比较少,发现 Github 上有个叫 githug 的小游戏,对 Git 入门和复习有很大的帮助。这里附上通关的笔记。

Githug 地址:https://github.com/Gazler/githug

Read more »

1 什么是泛型?

泛型,即 “参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用 / 调用时传入具体的类型(类型实参)。
泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法

Read more »

1 为什么要用枚举

一般情况下,我们可以用常量来进行一些类型的定义。以开发流程的状态为列,开发流程一般分为:design, develop,test,release 几个阶段,可以使用几个静态常量来定义:

1
2
3
4
5
6
public class Development {
public static final int DESIGN = 0;
public static final int DEVELOP = 1;
public static final int TEST = 2;
public static final int RELEASE = 3;
}
Read more »