- 博客(102)
- 资源 (4)
- 收藏
- 关注
原创 架构风格与基于网络的软件架构设计
如今许多服务都采用了 RESTful API, 而 REST 这一架构风格,最早即来源于 Roy Thomas Fielding 的博士论文 Architectural Styles andthe Design of Network-based Software Architectures, 本文重点介绍了前三章,基于网络的软件设计架构时,应该考虑哪些因素,不同的因素会会导致哪些结果,并给出大量实例。
2017-03-04 22:30:49 9076 1
原创 生产环境 JDK6 升级 JDK8
由于 Oracle 已经不对 JDK6 和 JDK7 进行支持,同时为了利用 G1 收集器。所以我们在生产环境中,将项目从 JDK6 升级至 JDK8,并将垃圾收集器由 CMS 换成了 G1。下面对这次升级作一个总结,并且给出一些大家可能需要用到的资源。
2016-02-11 13:03:36 8737
原创 JDK8 中的类型推断与重载解析
通过一个例子,从 javac 源代码的角度解析了 JDK6 与 JDK8 在类型推断与重载解析方面的不同。
2016-02-10 17:32:17 4162 2
原创 Jinja2 源代码分析
介绍了 Jinja 2.0 的源代码结构,以及 Jinja 2.0 要解决的核心问题,并举例说明了如何将 HTML 模板转化为 Python 代码的过程。
2015-04-24 22:36:57 7192 2
原创 JVMTI 中的JNI系列函数,线程安全及调试技巧
主要写了使用 JVMTI 中需要的几个关键问题,包括 jni functions 的使用,线程安全,调试技巧。
2015-03-15 11:34:54 4037
原创 Java IO机制
介绍了Java的IO机制,包括基于流的字节IO,字符IO中各种类的作用; 同时介绍了新IO中的重要概念,包含Buffer原理,Channel与Buffer如何配合使用,Selector与Channel如何配合使用,以及内存映射文件,文件锁。
2014-09-25 20:21:50 4688 1
原创 Java 虚拟机内部类静态字段的初始化与访问
从 HotSpot 源代码的角度,阐述了虚拟机内部是如何创建,表示一个 Java 类的,静态变量存储在哪里,如何初始化,虚拟机如何访问到这些静态变量。并给出实验佐证。
2014-09-04 17:14:03 4570
原创 Java 中的垃圾回收策略
介绍了 Java 虚拟机中,如何判断一个对象是否存活,各种垃圾回收算法的原理,以及HotSpot中的各种垃圾回收器的特点。
2014-08-28 17:01:15 6175 1
原创 在Ubuntu 12.04 上编译调试 OpenJDK8
介绍如何在 ubuntu 12.04 上下载 openjdk8 代码,并编译,调试。
2014-08-22 20:34:08 11785 2
原创 Data Race Free 的前世今生
Data Race Free 概念诞生的背景,基本思想,及其对 Java 与 C++ 内存模型的影响。
2014-08-17 21:39:51 7300
原创 对 Data Race Free 的理解
阐述了对 Data Race Free 的理解,包含其基本思想与设计理念,有助于对 Java 内存模型的理解。
2014-08-17 21:36:37 6391
原创 对 Java 内存模型的理解
阐述了自己对 Java 语言规范中内存模型的理解,介绍了之前较少被提及的 Causality Requirements.
2014-08-17 21:24:30 2914
原创 OpenJDK 源码阅读之 Java 字节流输出类的实现
通过阅读 OpenJDK 源代码,描述了 Java IO 中,字节输出系列6个类的实现方式,并简单介绍了与压缩解压缩相关的几个类。
2014-07-12 20:00:27 2784
原创 OpenJDK 源码阅读之 Java 字节流输入类的实现
简要分析了 OpenJDK 的Java IO 中,字节流输入系列的8个类的源代码实现,给出了Java IO的基本设计思路。
2014-07-11 20:07:50 3220
原创 OpenJDK 源代码阅读之 TimSort
概要这个类在 Oracle 的官方文档里是查不到的,但是确实在 OpenJDK 的源代码里出现了,Arrays 中的 sort 函数用到了这个用于排序的类。它将归并排序(merge sort) 与插入排序(insertion sort) 结合,并进行了一些优化。对于已经部分排序的数组,时间复杂度远低于 O(n log(n)),最好可达 O(n),对于随机排序的数组,时间复杂度为 O(n
2014-06-11 21:32:39 10116 7
原创 OpenJDK 源代码阅读之 Collections
概要代码路径为: jdk/src/share/classes/java/util/Collections.java类继承关系java.lang.Object java.util.Collections定义public class Collectionsextends Object实现sortpublic stati
2014-06-08 19:44:40 2201
原创 OpenJDK 源代码阅读之 BitSet
概要类继承关系java.lang.Object java.util.BitSet定义public class BitSetextends Objectimplements Cloneable, Serializable要点BitSet 类用来支持位操作,给它一个 size ,就会返回一个对象,代表 size 个位。可以完成“与
2014-06-07 19:42:51 1442
原创 OpenJDK 源代码阅读之 Arrays
概要类继承关系java.lang.Objectjava.util.Arrays定义public class Arraysextends Object要点此类主要是提供了一些操作数组的方法,比如排序啊,搜索啊。也提供一个工厂,用于将数组当成一个 List。实现quick sortpublic static voi
2014-06-05 20:44:58 1572
原创 OpenJDK 源代阅读之 ArrayDeque
概要类继承关系java.lang.Object java.util.AbstractCollectionE> java.util.ArrayDequeE>定义public class ArrayDequeE>extends AbstractCollectionE>implements DequeE>, Cloneable, Seri
2014-06-04 19:26:20 1490
原创 OpenJDK 源代码阅读之 LinkedList
概要类继承关系java.lang.Object java.util.AbstractCollection java.util.AbstractList java.util.AbstractSequentialList java.util.LinkedList定义public class L
2014-05-30 17:35:31 2100 5
原创 OpenJDK 源代码阅读之 ArrayList
概要类继承关系java.lang.Object java.util.AbstractCollection java.util.AbstractList java.util.ArrayList定义public class ArrayListE> extends AbstractListE> implemen
2014-05-28 17:03:23 1932
原创 OpenJDK 源代码阅读之 String
概要类继承关系java.lang.Object java.lang.String定义public final class Stringextends Objectimplements Serializable, ComparableString>, CharSequence要点一旦创建就不可改变实现storage
2014-05-28 17:01:11 3164 2
原创 OpenJDK 源代码阅读之 HashMap
概要类继承关系java.lang.Object java.util.AbstractMap java.util.HashMap定义public class TreeMapextends AbstractMapimplements NavigableMap, Cloneable, Serializable要点1) 与 Hasht
2014-05-27 20:50:05 1975
原创 OpenJDK 源代码阅读之 TreeMap
概要类继承关系java.lang.Object java.util.AbstractMap java.util.HashMap定义public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, java.io.Serializable
2014-05-27 20:46:49 2542
原创 开始OpenJDK源代码阅读
开始OpenJDK源代码阅读在阅读了一周的 OpenJDK 源代码后,我才写这篇文章。因为除非你已经开始阅读,否则是不知道自己是不是应该读下去的。所以,不要贸然说自己要干嘛,先做一段时间,觉得感觉还好,再决定做下去。这一周,主要是看 java.util 中和容器相关的几个文件,虽然还没看太多,但是已经有一些收获了。看到了以前学过的数据结构在Java的标准库中是如何被实现的。也明
2014-05-27 20:42:03 7499 2
原创 使用JVMTI获取Java多线程程序指令执行次序
在Java多线程程序中,由于线程调度,指令间的次序在每次运行时都可能不相同,有时候,我们需要得到指令次序,用来分析程序的行为。这样细粒度的底层行为用一般方法很难完成,我们需要借助 JVM Tool Interface,即JVMTI,来帮助我们获取Java虚拟机执行时的信息。本文先介绍编写JVMTI程序的基本框架,然后介绍如何使用JVMTI来获取多线程程序中指令之间的次序。
2014-04-28 18:13:48 3658
原创 控制台,终端,虚拟终端,tty,shell等概念的区别
从历史的角度介绍了,控制台,终端,虚拟终端,tty,shell, bash , sh, csh等概念的区别
2014-03-01 10:09:28 16301 3
原创 使用 GitHub, Jekyll 打造自己的免费独立博客
讲述了使用 GitHub 和 Jekyll 搭建免费独立博客的过程,包括入门指引,工作机制,网站源代码介绍,以及分类,归档,评论,分页的实现。
2014-02-15 23:07:41 77429 45
原创 wsgiref 源代码分析
介绍了Python Web 开发标准 WSGI 的官方参考实现 wsgiref 的源代码,对源代码结构,层次关系,最重要代码进行了介绍。
2014-01-27 18:20:43 8948 15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人