2016-07-21
起底InnoDB锁子系统-事务锁细节解析

当前大多数材料介绍InnoDB锁机制基本都是从锁分析的层面,对于InnoDB加锁的细节并没有过多的披露。比如材料会介绍某个场景InnoDB会对哪些记录加锁、加何种锁;但是没有介绍是如何InnoDB完成的加锁、锁结构是如何的。本文的内容将深入介绍InnoDB的事务锁子系统,将解读InnoDB行级锁为什么性能损耗不是很大、锁实例维护的对象如何组织、加锁过程是如何完成的、锁对象是如何维护的。

Read More
 2016-06-21
SublimeText自定义代码片段

写文章或者写代码时常常要输入一些模板型的代码片段。模块代码片段有的已经在IDE中内嵌,但是像下面这种自定义的规则就需要自己定制了。比如下面这个语句就是我自定义的在文章中插入图片的片段;我没有使用固定的路径;我与自己约定,文章的图片存放在/{media_repos}/文章文件名/图片文件位置上。

Read More
 2016-02-29
Java工程师要懂的硬件知识-CPU-3-Java与分支预测

本文将按照从整体到局部的顺序一步步深入介绍现代CPU的结构组成;然后再在CPU简化结构的基础上,根据指令执行的过程一步步的分析CPU的执行阶段,并着重介绍指令流水线、乱序执行和分支预测这些广泛应用的优化技术及这些优化造成的冒险(Hazards);最后再通过一段Java代码去印证所介绍的内容,去体会Java中的Mechanical Sympathy

Read More
 2016-02-26
Java工程师要懂的硬件知识-CPU-2-指令执行

本文将按照从整体到局部的顺序一步步深入介绍现代CPU的结构组成;然后再在CPU简化结构的基础上,根据指令执行的过程一步步的分析CPU的执行阶段,并着重介绍指令流水线、乱序执行和分支预测这些广泛应用的优化技术及这些优化造成的冒险(Hazards);最后再通过一段Java代码去印证所介绍的内容,去体会Java中的Mechanical Sympathy

Read More
 2016-02-24
解决GitHub Pages屏蔽百度爬虫的方法

Github屏蔽百度爬虫导致在Github Pages上托管的博客、网站都无法被百度索引到,但对于国内的小伙伴尤其是还在上学的未来的程序员们百度还是一个重要的检索渠道。已经有小伙伴在这方面做了尝试并且进行了全面的分析,这里我仅仅介绍一下个人的做法。这个博客也托管在Github Pages上,个人没有虚拟主机、域名也懒得备案,主要就是通过SAE的免费主机加智能DNS解决的。

Read More
 2016-02-20
Java工程师要懂的硬件知识-CPU-1-基础

本文将按照从整体到局部的顺序一步步深入介绍现代CPU的结构组成;然后再在CPU简化结构的基础上,根据指令执行的过程一步步的分析CPU的执行阶段,并着重介绍指令流水线、乱序执行和分支预测这些广泛应用的优化技术及这些优化造成的冒险(Hazards);最后再通过一段Java代码去印证所介绍的内容,去体会Java中的Mechanical Sympathy

Read More
 2016-01-14
Java工程师要懂的硬件知识-前言

Mechanical Sympathy这个短语描述了一种车手对汽车天生的感觉,也是Martin Thompson大牛的博客标题。从并发编程网Disruptor的介绍中注意到这个短语,再去品位Martin对它的简短阐述’Hardware and software working together in harmony’的确很有道理。在对任何语言的深入学习研究中,总逃不过对底层硬件的了解与学习,很多语言的特性、行为在硬件的角度去观察就很容易解释了;同时在追求语言的更高性能的过程中,也要更多去了解硬件的知识,让软件更加匹配硬件的特性、更好利用硬件的优化才能获得更高的优化效果。

Read More
 2016-01-03
[工具]如何访问Google-戏说VPN及路由VPN分流

估计大多数老外觉着这个命题就如“怎么吸气?”一样无从回答吧!但在咱这儿,这是门手艺! 不让访问,不让访问非死不可都无所谓了;虽然不让用Gmail有点别扭咱也忍啦!但实在受不了熊厂搜索L1 Cache冒出来的结果都是CPU多少钱啊!接着折腾白话一下这个东西是什么,主要是面向完全不懂的小白童靴,已经不纯的请直接跳过。

Read More
 2015-01-08
[实践]使用JarJar优雅的发布依赖包

作为服务需求方每次在项目中添加一个依赖都提心吊胆,怕新依赖会引入Jar包冲突、ClassNotFound问题。甚至有时新依赖使用的第三方包与项目中已有的版本完全不兼容,这就迫使需求方或冲突方不得不重新修改项目。因此如何为使用者发布一个第三方依赖尽可能少的包,体现了一个服务提供者的友好态度。

Read More
 2015-01-08
[算法]检查元素存在于集合-Bloom Filter/Counting Bloom Filter算法简介

判断某个元素是否在集合中是开发中常见的一个问题。如果数据集合比较小常用的查找、遍历,数据库查询等方式还可用,但是在缓存是否命中这种效率敏感的高频调用或者爬虫目标URL判重、大流量活动参与者判重等海量元素或高度并发场景(对误判有一定容忍)这种方式也许就不再可接受。

Read More
 2015-01-06
[JVM]深入Java对象内存布局-01-基础工具Unsafe

IDEA

Java平台屏蔽了内存管理的细节,为开发人员提供了一个安全便捷的企业级应用的开发基础。但是在深入学习和应用Java的过程中,我们由于种种的特殊应用场景的需求又希望了解Java底层内存管理某些细节;这其中有一个问题就是Java的对象在内存到底是怎么一种存在形式。已经有很多文章从Java/JVM Specification的角度阐述了这个问题,但很少有文章从一个个实例展示这些规范的落地,从而使得很多朋友读的云里雾里。这次本文就以一个个运行于JVM中真实的Java对象实例为切入点,展示这一个个规范的落地与Hotspot虚拟机对象内存布局。

Read More
 2016-06-21
SublimeText自定义代码片段

写文章或者写代码时常常要输入一些模板型的代码片段。模块代码片段有的已经在IDE中内嵌,但是像下面这种自定义的规则就需要自己定制了。比如下面这个语句就是我自定义的在文章中插入图片的片段;我没有使用固定的路径;我与自己约定,文章的图片存放在/{media_repos}/文章文件名/图片文件位置上。

Read More
 2016-01-03
[工具]如何访问Google-戏说VPN及路由VPN分流

估计大多数老外觉着这个命题就如“怎么吸气?”一样无从回答吧!但在咱这儿,这是门手艺! 不让访问,不让访问非死不可都无所谓了;虽然不让用Gmail有点别扭咱也忍啦!但实在受不了熊厂搜索L1 Cache冒出来的结果都是CPU多少钱啊!接着折腾白话一下这个东西是什么,主要是面向完全不懂的小白童靴,已经不纯的请直接跳过。

Read More
 2015-01-08
[实践]使用JarJar优雅的发布依赖包

作为服务需求方每次在项目中添加一个依赖都提心吊胆,怕新依赖会引入Jar包冲突、ClassNotFound问题。甚至有时新依赖使用的第三方包与项目中已有的版本完全不兼容,这就迫使需求方或冲突方不得不重新修改项目。因此如何为使用者发布一个第三方依赖尽可能少的包,体现了一个服务提供者的友好态度。

Read More
 2015-01-06
[JVM]深入Java对象内存布局-01-基础工具Unsafe

IDEA

Java平台屏蔽了内存管理的细节,为开发人员提供了一个安全便捷的企业级应用的开发基础。但是在深入学习和应用Java的过程中,我们由于种种的特殊应用场景的需求又希望了解Java底层内存管理某些细节;这其中有一个问题就是Java的对象在内存到底是怎么一种存在形式。已经有很多文章从Java/JVM Specification的角度阐述了这个问题,但很少有文章从一个个实例展示这些规范的落地,从而使得很多朋友读的云里雾里。这次本文就以一个个运行于JVM中真实的Java对象实例为切入点,展示这一个个规范的落地与Hotspot虚拟机对象内存布局。

Read More
 2015-01-08
[算法]检查元素存在于集合-Bloom Filter/Counting Bloom Filter算法简介

判断某个元素是否在集合中是开发中常见的一个问题。如果数据集合比较小常用的查找、遍历,数据库查询等方式还可用,但是在缓存是否命中这种效率敏感的高频调用或者爬虫目标URL判重、大流量活动参与者判重等海量元素或高度并发场景(对误判有一定容忍)这种方式也许就不再可接受。

Read More
 2016-02-29
Java工程师要懂的硬件知识-CPU-3-Java与分支预测

本文将按照从整体到局部的顺序一步步深入介绍现代CPU的结构组成;然后再在CPU简化结构的基础上,根据指令执行的过程一步步的分析CPU的执行阶段,并着重介绍指令流水线、乱序执行和分支预测这些广泛应用的优化技术及这些优化造成的冒险(Hazards);最后再通过一段Java代码去印证所介绍的内容,去体会Java中的Mechanical Sympathy

Read More
 2016-02-26
Java工程师要懂的硬件知识-CPU-2-指令执行

本文将按照从整体到局部的顺序一步步深入介绍现代CPU的结构组成;然后再在CPU简化结构的基础上,根据指令执行的过程一步步的分析CPU的执行阶段,并着重介绍指令流水线、乱序执行和分支预测这些广泛应用的优化技术及这些优化造成的冒险(Hazards);最后再通过一段Java代码去印证所介绍的内容,去体会Java中的Mechanical Sympathy

Read More
 2016-02-20
Java工程师要懂的硬件知识-CPU-1-基础

本文将按照从整体到局部的顺序一步步深入介绍现代CPU的结构组成;然后再在CPU简化结构的基础上,根据指令执行的过程一步步的分析CPU的执行阶段,并着重介绍指令流水线、乱序执行和分支预测这些广泛应用的优化技术及这些优化造成的冒险(Hazards);最后再通过一段Java代码去印证所介绍的内容,去体会Java中的Mechanical Sympathy

Read More
 2016-01-14
Java工程师要懂的硬件知识-前言

Mechanical Sympathy这个短语描述了一种车手对汽车天生的感觉,也是Martin Thompson大牛的博客标题。从并发编程网Disruptor的介绍中注意到这个短语,再去品位Martin对它的简短阐述’Hardware and software working together in harmony’的确很有道理。在对任何语言的深入学习研究中,总逃不过对底层硬件的了解与学习,很多语言的特性、行为在硬件的角度去观察就很容易解释了;同时在追求语言的更高性能的过程中,也要更多去了解硬件的知识,让软件更加匹配硬件的特性、更好利用硬件的优化才能获得更高的优化效果。

Read More
 2016-02-24
解决GitHub Pages屏蔽百度爬虫的方法

Github屏蔽百度爬虫导致在Github Pages上托管的博客、网站都无法被百度索引到,但对于国内的小伙伴尤其是还在上学的未来的程序员们百度还是一个重要的检索渠道。已经有小伙伴在这方面做了尝试并且进行了全面的分析,这里我仅仅介绍一下个人的做法。这个博客也托管在Github Pages上,个人没有虚拟主机、域名也懒得备案,主要就是通过SAE的免费主机加智能DNS解决的。

Read More
 2016-07-21
起底InnoDB锁子系统-事务锁细节解析

当前大多数材料介绍InnoDB锁机制基本都是从锁分析的层面,对于InnoDB加锁的细节并没有过多的披露。比如材料会介绍某个场景InnoDB会对哪些记录加锁、加何种锁;但是没有介绍是如何InnoDB完成的加锁、锁结构是如何的。本文的内容将深入介绍InnoDB的事务锁子系统,将解读InnoDB行级锁为什么性能损耗不是很大、锁实例维护的对象如何组织、加锁过程是如何完成的、锁对象是如何维护的。

Read More