02 2013 档案

摘要:首先我们需要区分的是什么是有符号数和无符号数。有符号和无符号的区别是一个有符号位,另一个没有符号位.没有符号位的数字只能有0和正值,有符号位的数字可以有正零,负零和正数负数.从这里可以看出,有符号和无符号的区别就是是否能表示负数。然后我们再来理解java虚拟机所支持的所有整数数据类型-byte,short,int和long,他们都是带符号的二进制补码。那么为什么会采用二进制补码呢?首先我们还是来看二进制补码的概念:负数的补码就是对反码加1,而正数不变,正数的原码反码补码是一样的.即若要用补码系统表示 -5,首先要将 5 的二进制进行反相运算,再加 1。0000 0101 (5) -----11 阅读全文
posted @ 2013-02-25 21:51 sqtds 阅读(1615) 评论(0) 推荐(0)
摘要:先看看jvm规范定义的标准结构:首先我们看看类文件是如何被编译生成的。 从上图中可以看出通过javac编译代码分为3个步骤。我们再来分析这3个步骤:1,分析和输入到符号表(Parse and Enter)Parse的过程为词法和语法分析。词法分析完成的是将代码字符串转变为token序列;语法分析完成的是根据语法由token序列生成抽象语法树。Enter过程将符号输入到符号表。通常包括确定类的超类型和接口,根据需要添加默认的构造器,将类中出现的符号输入到自身的符号表中。2,注解处理(Annotation Processing)改步骤用于处理用户自定义的annotation。3,语义分析和生成cl 阅读全文
posted @ 2013-02-23 14:53 sqtds 阅读(1077) 评论(0) 推荐(0)
摘要:首先我们分析下面的代码:int i = 0;public int getNextId(){ return i++;}它的执行步骤为:1,jvm首先在main memory(jvm堆)给i分配一个内存存储场所,并存储其值为0.2,线程启动后,会分配一片working memory 区(通常是操作数栈),当线程执行到return i++时,jvm并不是简单的一个步骤就可以完成的。i++在jvm中分为装载i,读取i,进行i++操作,存储i及写入i的5个步骤。装载i 线程 发起一个装载i的请求给jvm线程执行引擎,引擎接收请求后向main memory发起一个read i的指令。 当read i执行. 阅读全文
posted @ 2013-02-21 22:15 sqtds 阅读(624) 评论(0) 推荐(0)
摘要:I studied Electrical Engineering in undergrad and the only programming languages we've had to use in EE were C/C++, Assembly, and Matlab. After going to aStartupWeekendevent and getting interested in software dev and computer science I decided I wanted to get my hands dirty and jump in the field 阅读全文
posted @ 2013-02-19 17:13 sqtds 阅读(228) 评论(0) 推荐(0)