自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(90)
  • 收藏
  • 关注

转载 Java虚拟机的启动与程序的运行

这篇文章是从 OpenJDK 源代码的角度讲当我们运行了java -classpath . hello之后,java.exe 如何从 main 函数开始执行,启动虚拟机,并执行字节码中的代码。实验环境要了解一个系统是如何运行的,光看是不行的,要实际地运行,调试,修改才能对系统的动作方式有所了解。起初我是按照 GitHub 上的一个项目O...

2014-08-22 20:37:00 438

转载 在Ubuntu 12.04 上编译调试 OpenJDK8

前言现在看的资料都是编译 openjdk7 的,openjdk8好像已经 openjdk7 编译方式大一样,按照前辈的文章使用make sanity会提示找不到 sanity 规则,然后编译过程其实基本就直接./configuremake all官方的 README 写的很清楚。下面记录下过程下载代码hg cl...

2014-08-22 20:34:00 286

转载 Data Race Free 的前世今生

Data Race Free 是多线程程序是非常重要的概念,因为Java 和 C++的内存模型都是基于 Data Race Free 的,这篇文章将介绍这个概念的由来,另一篇文章《对Data Race Free的理解》介绍它的主要思想。事情要追溯到遥远的1979年, Lamport 在他的著名论文How to make a multiprocessor comput...

2014-08-17 21:39:00 274

转载 对 Data Race Free 的理解

Data Race Free 的动机Data Race Free 是对多线程程序同步程度的一种描述,假如你的多线程程序的同步程度满足 DRF 的要求,那么,你的程序会有这样一个好处:程序在弱一致性模型下执行,执行的结果与在SC模型下执行一样这意味着,程序员在写程序时,可以按SC模型来推断程序的执行。而程序在底层运行时,可以享受弱一致性模型带来的种种优...

2014-08-17 21:36:00 220

转载 对 Java 内存模型的理解

Java 内存模型Java内存模型规定了在多线程程序中,什么样的行为是允许出现的,什么样的行为是禁止出现的。这样说可能有点抽象,我们换一个角度。将程序行为抽象成读操作和写操作,每个线程有自己的局部变量,同时线程之间还存在共享变量。那么一个多线程程序执行结束后,所有变量会有一个最终值。Java内存模型来决定什么样的值合法,什么样的值不合法。内存模型不能要求的太严...

2014-08-17 21:24:00 127

转载 单例模式

定义单例模式确保一个类只有一个实例,并提供一个全局访问点解释从定义可以看出,特点是这个类只有一个实例。那么,为什么要这么做呢?原因在于,有些时候,这个类只有一个实例会节约资源,或者只有一个实例才能保证整个程序运行正确,一致。例如:线程池,缓存,对话框,日志对象等等 。示例class Singleton { private sta...

2014-07-31 21:33:00 61

转载 外观模式

定义外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统的更容易使用。解释我有一个多功能的盒子,盒子让提供了100个接口,每个都有不同的功能。现在我要把这个盒子给别人用了,我只想让别人用到其中5个接口,或者别人只需要其中5个接口。那么,我可以再做一个盒子,这个盒子套在原来的盒子外面,并且只提供5个接口。这样,用的人...

2014-07-31 21:30:00 61

转载 观察者模式

定义观察者模式定义了对象之间的一对多依赖,当一个对象改变时,所以依赖于它的对象都会得到通知。示例interface Observer { void update(int data);}class NewsPaper { private LinkedList<Observer> observers; publi...

2014-07-31 21:28:00 71

转载 OpenJDK 源码阅读之 Java 字节流输出类的实现

Java 的输入输出总是给人一种很混乱的感觉,要想把这个问题搞清楚,必须对各种与输入输出相关的类之间的关系有所了解。只有你了解了他们之间的关系,知道设计这个类的目的是什么,才能更从容的使用他们。这是这个系列的第二篇,描述字节输出类的实现,第一篇见:OpenJDK 源码阅读之 Java 字节流输入类的实现字节流输出图1 J...

2014-07-12 20:00:00 118

转载 OpenJDK 源码阅读之 Java 字节流输入类的实现

Java 的输入输出总是给人一种很混乱的感觉,要想把这个问题搞清楚,必须对各种与输入输出相关的类之间的关系有所了解。只有你了解了他们之间的关系,知道设计这个类的目的是什么,才能更从容的使用他们。我们先对 Java I/O 的总体结构进行一个总结,再通过分析源代码,给出把每个类的关键功能是如何实现的。Java I/O 的主要结构Java 的输入输出,...

2014-07-11 20:07:00 113

转载 OpenJDK 源代码阅读之 TimSort

概要这个类在 Oracle 的官方文档里是查不到的,但是确实在OpenJDK的源代码里出现了,Arrays中的sort函数用到了这个用于排序的类。它将归并排序(merge sort) 与插入排序(insertion sort) 结合,并进行了一些优化。对于已经部分排序的数组,时间复杂度远低于O(n log(n)),最好可达O(n),对于随机排序的数组...

2014-06-11 21:32:00 195

转载 OpenJDK 源代码阅读之 Collections

概要类继承关系java.lang.Object java.util.Collections定义public class Collectionsextends Object实现sortpublic static <T extends Comparable<? super T>>...

2014-06-08 19:44:00 121

转载 OpenJDK 源代码阅读之 BitSet

概要类继承关系java.lang.Object java.util.BitSet定义public class BitSetextends Objectimplements Cloneable, Serializable要点BitSet类用来支持位操作,给它一个size,就会返回一个对象,代表siz...

2014-06-07 19:42:00 80

转载 OpenJDK 源代码阅读之 Arrays

概要类继承关系java.lang.Objectjava.util.Arrays定义public class Arraysextends Object要点此类主要是提供了一些操作数组的方法,比如排序啊,搜索啊。也提供一个工厂,用于将数组当成一个List。实现quick sortpublic...

2014-06-05 20:44:00 131

转载 OpenJDK 源代阅读之 ArrayDeque

概要类继承关系java.lang.Object java.util.AbstractCollection<E> java.util.ArrayDeque<E>定义public class ArrayDeque<E>extends AbstractCollection<E&...

2014-06-04 19:26:00 86

转载 OpenJDK 源代码阅读之 LinkedList

概要类继承关系java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E> java.util.AbstractSequentialList<E> java.ut...

2014-05-30 17:35:00 101

转载 OpenJDK 源代码阅读之 ArrayList

概要类继承关系java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E> java.util.ArrayList<E>定义public class ArrayList<...

2014-05-28 17:03:00 111

转载 OpenJDK 源代码阅读之 String

概要类继承关系java.lang.Object java.lang.String定义public final class Stringextends Objectimplements Serializable, Comparable<String>, CharSequence要点一旦创建就不可改变...

2014-05-28 17:01:00 293

转载 OpenJDK 源代码阅读之 HashMap

概要类继承关系java.lang.Object java.util.AbstractMap<K,V> java.util.TreeMap<K,V>定义public class TreeMap<K,V>extends AbstractMap<K,V>implements Nav...

2014-05-27 20:50:00 101

转载 OpenJDK 源代码阅读之 TreeMap

概要类继承关系java.lang.Object java.util.AbstractMap<K,V> java.util.HashMap<K,V>定义public class TreeMap<K,V> extends AbstractMap<K,V> implem...

2014-05-27 20:46:00 94

转载 开始OpenJDK源代码阅读

开始OpenJDK源代码阅读在阅读了一周的 OpenJDK 源代码后,我才写这篇文章。因为除非你已经开始阅读,否则是不知道自己是不是应该读下去的。所以,不要贸然说自己要干嘛,先做一段时间,觉得感觉还好,再决定做下去。这一周,主要是看java.util中和容器相关的几个文件,虽然还没看太多,但是已经有一些收获了。看到了以前学过的数据结构在Java的标准库...

2014-05-27 20:42:00 268

转载 使用JVMTI获取Java多线程程序指令执行次序

使用JVMTI获取Java多线程程序指令执行次序在Java多线程程序中,由于线程调度,指令间的次序在每次运行时都可能不相同,有时候,我们需要得到指令次序,用来分析程序的行为。这样细粒度的底层行为用一般方法很难完成,我们需要借助JVM Tool Interface,即JVMTI,来帮助我们获取Java虚拟机执行时的信息。本文先介绍编写JVMTI程序的基本框架,然后...

2014-04-28 18:13:00 143

转载 对C语言中的static关键字的深入理解

对C语言中的static关键字的深入理解在阅读一些项目源代码时,我发现很多时候,会把函数和变量声明为static,所以,很好奇为什么要这样做,于是有了下面这篇文章。基本概念使用static有三种情况:函数内部static变量函数外部static变量static函数函数内部的static变量,关键在于生命周期持久,他的值不会随着函数调用的...

2014-04-22 09:53:00 697

转载 C语言中的int类型的范围是由什么决定的

C语言中的int类型的范围是由什么决定的在 K&R 经典教材The C Programming Language的2.2节中,对 int 类型是这样描述的an integer, typically reflecting the natural size of integers on the host machine意思是反映了机器整数类...

2014-03-06 22:49:00 365

转载 控制台,终端,虚拟终端,tty,shell等概念的区别

控制台,终端,tty,shell等概念的区别使用linux已经有一段时间,却一直弄不明白这几个概念之间的区别。虽然一直在用,但是很多概念都感觉模糊不清,这样不上不下的状态实在令人不爽。下面就澄清一下这些概念。这些概念本身有着非常浓厚的历史气息,随着时代的发展,他们的含义也在发生改变,它们有些已经失去了最初的含义,但是它们的名字却被保留了下来。控制台(C...

2014-03-01 10:09:00 479

转载 GCC 简介

GCC 的基本使用GCC是一款非常著名的编译器,支持诸如 C, C++, Java在内的多种程序设计语言,并且提供了许多选项,以支持用户不同程度的需求,例如查看编译中间结果,指定语言标准,指定优化程度等等 ,下面的内容就介绍这些最重要的功能。首先查看一下 GCC 的版本,有时候可能版本不同,编译的功能和结果就不同。这里有不同版本的手册。查看版本...

2014-02-22 14:20:00 180

转载 使用 GitHub, Jekyll 打造自己的免费独立博客

使用 GitHub, Jekyll 打造自己的免费独立博客GitHub是一个代码托管网站,现在很多开源项目都放在GitHub上。 利用GitHub,可以让全球各地的程序员们一起协作开发。GitHub 提供了一种功能,叫GitHub Pages, 利用这个功能,我 们可以为项目建立网站,当然,这也意味着我们可以通过 GitHub Pages 建立自己的网站。...

2014-02-15 23:07:00 84

转载 wsgiref 源代码分析

wsgiref 源代码分析wsgirefwsgiref是Python标准库给出的WSGI的参考实现。WSGI是Python Web 开发中为服务器程序和应用程序设定的标准,满足这一标准的服务器程序和应用程序可以配合使用。我在上一篇博文《WSGI简介》中对此有详细的介绍。在阅读wsgiref源代码之前,一定要对WSGI有一定了解。WSGI ...

2014-01-27 18:20:00 175

转载 WSGI 简介

WSGI 简介背景Python Web 开发中,服务端程序可以分为两个部分,一是服务器程序,二是应用程序。前者负责把客户端请求接收,整理,后者负责具体的逻辑处理。为了方便应用程序的开发,我们把常用的功能封装起来,成为各种Web开发框架,例如 Django, Flask, Tornado。不同的框架有不同的开发方式,但是无论如何,开发出的应用程序都要和服务器程序...

2014-01-26 23:13:00 458

转载 如何编写高质量的程序

如何编写高质量的程序学习任何编程语言都会有一个基本的过程,开始的时候学习基本的语法,然后学习各种库,框架,开始做各种项目。在做项目的过程中,随着代码量的增加,我们会渐渐感到失去对程序的掌控能力,bug开始增加,牵一发而动全身,顾此失彼。这充分说明了编写高质量程序的重要性,这里的“高质量”主要指程序的正确性,可读性,可维护性。什么是高质量的程序正确性...

2014-01-13 23:12:00 351

转载 Python包管理不同方式的区别

Python包管理不同方式的区别学习Python已经有一段时间,经常会遇到安装各种包的问题,一会setup.py, 一会easy_install,一会又是pip,还有一些概念比如distutils,setuptools等等,搞不清楚谁是谁,什么时候应该用什么,今天就把这些概念 澄清一下。distutilsdistutils是Python标...

2013-11-01 16:38:00 136

转载 理解数据结构

理解数据结构最近在学习各种数据结构,于是就在想,为什么我们需要数据结构呢? 为什么要设计这么多数据结构?数据结构到底解决了我们什么样的问题?我们提到数据结构时,一般是指计算机科学中的一个概念, 但是从本质上讲,数据结构应该是指对数据的一种组织方式。既然如此,我们没必要非在计算机科学领域中讨论 概念本身,把它放在其它领域中,可能更能加强我们的理解。就说图...

2013-10-30 23:08:00 51

转载 字符指针与字符数组真正的区别

字符指针与字符数组真正的区别问题缘起先看一个示例示例1#include <stdio.h>int main() { char *p = "hello"; char q[] = "hello"; printf ("p: %s\n", p); printf ("q: %s\n", q); ...

2013-10-25 20:46:00 52

转载 「深入理解计算系统」从Hello World开始

从 hello world 开始Table of Contents1 程序源文件2 程序源文件是什么3 程序被编译4 程序运行4.1 读取命令4.2 读取指令内容4.3 执行过程5 进程5.1 进程切换5.2 虚拟地址空间1程序源文件#include <stdio.h>int main() ...

2013-09-18 17:19:00 513

转载 Cookie 路径在本机测试及服务器部署,在浏览器处理方式上的不同

Table of Contents1 问题场景2 解决过程2.1 cookie是否设置成功2.2 cookie是否上传到服务器3 总结1问题场景最近在学用Python进行web开发,写了一个博客系统,基本的配置如下:开发语言: Python + javascript开发框架: Web.py服务器: virt...

2013-09-12 15:02:00 137

转载 使用Python,字标注及最大熵法进行中文分词

使用Python,字标注及最大熵法进行中文分词在前面的博文中使用python实现了基于词典及匹配的中文分词,这里介绍另外一种方法, 这种方法基于字标注法,并且基于最大熵法,使用机器学习方法进行训练,将训练出的模型 用于中文分词,效果优于基于词典及匹配的分词方法。Table of Contents1 背景知识2 分词思想2.1 以字分词2.2 机器学...

2013-08-05 17:26:00 249

转载 命题逻辑中的语法与语义,可靠性与完备性

命题逻辑中的语法与语义,可靠性与完备性1导言 初学数理逻辑的时候,一个非常重要的点就是对可靠性与完备性概念的理解,这两个概念极为重要,却又经常让人觉得 难以理解。 说它重要是因为它涉及逻辑系统的基本框架,初学数理逻辑,最重要的倒不在于你有多高超的技巧去推导那些 公式,而在于对一些基本概念的理解和...

2013-03-27 17:41:00 328

转载 用Python写一个简单的中文分词器

用Python写一个简单的中文分词器作为一个Python初学者+自然语言处理初学者,我用Python写了一个简单的中文分词器,整个程序 加上注释100行左右,算是一个小练习。Table of Contents1 数据来源2 算法描述3 源代码及注释4 测试及评分结果1数据来源 [1]数据来自 Bakeoff2005 官方网站:ht...

2013-03-20 15:13:00 312

转载 「学习笔记——Python」Google's Python Class 学习笔记

Google's Python Class 学习完了《The Python Tutorial》后,又学习了一下Google's python class,感觉比前者要好。关键是提供了一些习题,让你通过这些习题了解Python的特性,让你尽快用Python去解决一些问题,做完这些习题,感觉比看完整本书还有感觉。这给我提了个醒,学完一个东西要主动...

2013-03-10 20:26:00 188

转载 「学习笔记——Python」《The Python Tutorial》学习结束语

12 《The Python Tutorial》学习结束语  花了差不多半个月,终于自己翻译完了Python官方给出的一份教程,同时也对Python有了一个初步的了解。 这份教程之前就有人翻译过,之所以选择自己翻译,就是为了强迫自己认真学习,想清楚里面每一句话的意思。 教程里面还有三篇,讲的是下一步应该做些什么,交互式环境的配置和浮点运算,就不翻译了。    ...

2013-03-08 16:07:00 159

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除