摘要:
并发框架Disruptor使用了一个叫做 RingBuffer(环)的数组结构它只有指向下一个可用位置的序号,没有只向尾部的序号,是因为RingBuffer不删除Buffer中的数据,当重叠时直接用新数据覆盖。为什么使用数组而不是链表,1.数组在内存的存储位置是连续的,链表是不连续的。对数组的访问比...
阅读全文
posted @ 2015-03-24 16:36
xuqiyu
阅读(311)
推荐(0)
摘要:
之前看过左耳朵耗子的博客,我自己再把这个问题重新整理一遍1.HashMap表的数据结构HashMap用一个指针数组来存储Entry, 按照Entry的key通过一定的规则(得到哈希值)来分散存储这些元素,假设摸一个Entry(B)当按照这个规则计算出来的下标位置已有一个Entry(A),会将最新的E...
阅读全文
posted @ 2015-03-23 16:38
xuqiyu
阅读(564)
推荐(0)
摘要:
基本的差别为: MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而 InnoDB提供事务支持已经外部键等高级数据库功能。 项目是读多写少的项目适合用MyISAM,MyISAM的读性能是比Innodb强不少的。
阅读全文
posted @ 2013-11-21 15:38
xuqiyu
阅读(272)
推荐(0)
摘要:
java代码是在线程中被执行的。每个线程都有它自己的执行栈,这个栈由很多帧组成。每个帧代表了一个方法调用:每当一个方法被调用时,就会创建一个新的帧,然后将这个帧放到当前线程的执行栈的栈顶。当这个方法正常返回时,或者发生了异常,这个帧就会从执行栈顶弹出,然后虚拟机会接着执行下一个位于执行栈栈顶的帧。每个帧都包含两部分:一个局部变量区和一个操作数栈区。局部变量区包含了方法中定义的局部变量,可以通过索引值来随即访问。操作数栈区,如它的名字暗示,它是一个包含操作数的栈,这些数据被字节码指令所使用。这意味着这个栈中的数据只能以后进先出的顺序访问。局部变量区和操作数栈的大小是由方法中的代码决定的。它们的大
阅读全文
posted @ 2013-11-20 19:28
xuqiyu
阅读(853)
推荐(1)
摘要:
在D盘根目录下放一个class文件TestBytecode.class运行javap -classpath D:/ -c TestBytecode命令即可输出。javap -classpath D:/ -verboseTestBytecode输出的更为详细
阅读全文
posted @ 2013-10-03 20:23
xuqiyu
阅读(417)
推荐(0)
摘要:
根搜索算法:这个算法的基本思路是通过一系列名为“GC roots”的对象作为起点,从这些节点开始向下搜索,搜索走过的路径称为引用连,当一个对象到GC roots没有任何引用链,则证明对象是不可用的。将被判定为可回收对象。不可达对象要被垃圾回收,至少要经历两次标记过程。第一次标记时执行finalize()方法,并做记号,第二次标记则不会再执行finalize()方法了。执行finalize()方法后,对象可能又变为可达对象,逃脱被垃圾回收的命运。示例代码--周志明著 Java虚拟机 1 public class FinalizeEscapeGC { 2 3 public static ...
阅读全文
posted @ 2013-10-02 21:13
xuqiyu
阅读(3373)
推荐(0)
摘要:
ClassFile结构:每一个Class文件对应于一个如下所示的ClassFile结构体 1 ClassFile { 2 u4 magic;//魔数,值固定为0xCAFEBABE 3 u2 minor_version;//副版本号 4 u2 major_version;//主版本号 5 u2 constant_pool_count;//常量池计数器,值等于constant_pool表中的成员数加1 6 cp_info constant_pool[constant_pool_count-1];//常量池,包含Class文件结构及其子结构中引用的所有字符串常...
阅读全文
posted @ 2013-10-01 19:43
xuqiyu
阅读(251)
推荐(0)
摘要:
1.数据类型: Java虚拟机可操作的数据类型分为原始类型和引用类型 原始类型包括数值类型(Numeric)、布尔类型(Boolean)和returnAddress类型: 表示一条字节码指令的操作码(Opcode)。在所有的虚拟机支持的原始类型之中,只有returnAddress类型是不能直接Java语言的数据类型对应起来的。 引用类型包括类类型、数组类型和接口类型,这些引用类型的值分别由类实例、数组实例和实现了某个接口的类实例或数组实例动态创建2.运行时数据区 Java虚拟机定义了很多种程序运行期间使用到的运行时数据区,其中一部分的生命周期与虚拟机一致,另外一部分则是与线程的生命周...
阅读全文
posted @ 2013-10-01 19:30
xuqiyu
阅读(226)
推荐(0)
摘要:
示例:public class TestAssert { public static void main(String[] args) { assert false: "Exception Assert"; }}格式:assertexpression1: expression2expression1为布尔类型表达式expression2为抛出异常的信息eclipse运行时需带上参数输出结果为:Exception in thread "main" java.lang.AssertionError: Exception Assert at com.xqy.T
阅读全文
posted @ 2013-09-30 21:03
xuqiyu
阅读(188)
推荐(0)
摘要:
Java中的transient,是用于声明序列化的时候不被存储的示例:博客原文:http://www.blogjava.net/liuganquan/archive/2007/04/22/112591.htmlpublic class Logon implements Serializable { private Date date = new Date(); private String username; private transient String password; Logon(String name, String pwd) { us...
阅读全文
posted @ 2013-09-30 11:22
xuqiyu
阅读(261)
推荐(0)