Recent Posts

Java集合框架源码解析(四) - HashMap(jdk 1.8)

HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。和HashTable一样,HashMap也实现了Map接口,这意味着两个类的接口、用法是几乎一样的。以至于一些面试题很喜欢提问HashMap和HashTable的区别。对于这类问题,与其死记硬背一些答案,不如深入到两者的实现层面里,看看...

Java集合框架源码解析(二) - LinkedList

LinkedList是非线程安全的List实现,只在单线程下适合使用。LinkedList是一个用双向链表实现的一个List(通过源码很容易看出),它除了可以当做链表来操作外,它还可以当做栈、队列和双端队列来使用。

深入Java Classloader(二) - Classloader工作机制

在上一节中,已经说明了Java的类加载机制和Classloader的职责。实际上,类加载器虽然只用于实现类的加载动作,但它在Java程序里起到的作用远远不限于类加载阶段。每个Classloader,都有独立的类名称空间。所以,一个class文件被不同的classloader加载,这两个类是不相等的。JVM在判定两...

Ruby并发与线程

在计算机的世界里,并发的概念是:把多个任务同时进行,以节省时间/空间资源。并发是操作系统级别的概念,本文会在更高的层次讨论,所以会省略一些底层实现细节,如果你对多进程模型,多线程等相关概念不了解,先去看看Linux进程模型吧。:)

一致性哈希(Consistent Hashing)原理

看一些分布式相关的技术文章或书籍时,经常看到一个词,一致性哈希。对于这个技术一直似懂非懂。今天花了半天的时间好好研究了它的原理和实现,发现一点都不复杂。于是写篇文章分享一下。

ActiveRecord如何拼出一句Sql?—— (一)ActiveRecord、Relation与Arel

在上一篇中我们学习了基本的关系代数知识,以及Arel和关系代数的关系。上集讲到,ActiveRecord在幕后使用Arel拼出SQL语句。现在,我们先跳过Arel,说说幕前:从ActiveRecord讲起,说说AR的query接口(如:where,select,order)的设计思路和实现,这部分会主要涉及Act...

在markdown使用mathjax

mathjax 是一个允许用结构化语言写数据公式的插件。几个简单的步骤就可以在markdown里使用它了。

利用Graphviz看ActiveRecod源码

我们都知道ActiveRecod借助Arel管理Sql的生成,而Arel使用ast和visitor pattern生成Sql。但是当你想看这颗语法树时,可能会很郁闷:

Minitest和Rspec的比较(译)

本文是译文,原文可见tenderlove的blog(tenderlove@github)。我和作者的经历相反,我有较多的Rspec经验,在最近接触Minitest,读完这篇文章之后,有一些地方很有同感,作者对Minitest的观点也对我很有启发。以下是译文(有部分删改):