`
chenzhou123520
  • 浏览: 4259401 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
本章内容根据《深入理解Java虚拟机》第7章部分内容整理      1.什么是类加载器?    在类加载阶段,有一步是“通过类的全限定名来获取描述此类的二进制字节流”,而所谓的类加载器就是实现这个功能的一个代码模块,这个动作是在Java虚拟机外部实现的,这样做可以让应用程序自己决定如何去获取所需要的类。    类加载器的作用:首先类加载器可以实现最本质的功能即类的加载动作。同时,它还能够结合java类本身来确定该类在Java虚拟机中的唯一性。用通俗的话来说就是:比较两个类是否相等,只有这两个类是由同一个类加载器加载才有意义。否则,即使这两个类是来源于同一个Class文件,只要加载它们 ...
本文根据《深入理解java虚拟机》第7章部分内容整理          在我的上一篇文章《JVM学习笔记(六):类加载的时机》中提到了java类从加载到卸载过程包括了加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(using)、和卸载(Unloading)七个阶段。下面我们来详细讲解一下类加载的全过程,也就是加载、验证、准备、解析和初始化这五个阶段的过程。     一.加载     首先要说明的是“加载”(Loading)阶段只是“类加载”(Class Loading) ...
本文根据《深入理解java虚拟机》第7章部分内容整理       Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的加载机制。     ...
     在上一篇博客中介绍了《Class文件结构》,其中就提到了一个例子,下面我们依然根据该例子的字节码来对方法的执行流程进行讲解。      java类源码如下:   public class TestClass{ private int num; public int inc(){ for(int i=0; i<10; i++){ num = i; } return num; } public static void main(String[] args){ new TestClass().inc(); } ...
本文根据《深入理解Java虚拟机》第6章内容整理     一、Java的语言无关性       到今天为止,或许大部分的程序员都还认为Java虚拟机执行Java程序是一件理所当然和天经地义的事情。但在Java发展之初,设计者们就考虑过了在 ...
最近由于一个偶然的机会知道了《暗时间》这本书,然后买回来看了几天,觉得书中很多的东西说得很有道理。于是在看的时候把自认为比较好的一些点做了读书笔记。在这里分享给大家!   每个人的生命就像沙漏,里面装的沙子总量大致相当,不同的是,有的沙漏颈部较细,有的沙漏颈部较粗。颈部较细的沙漏能够抓住每一粒时间之沙,即使沙子总量一样,也能拥有更长的生命。   一.暗时间是什么 如果你有一台计算机,你装了一个系统之后就整天把它搁置在那里,你觉得这台计算机被实际使用了吗?没有。因为CPU整天运行的就是空闲进程。运行空闲进程也是一天,运行大数据量计算的程序也是一天,对于CPU来说同样的一天,价值 ...
注:本文根据《深入理解Java虚拟机》第3章部分内容整理而成。     一.如何判断对象是否需要回收?   堆中几乎放着java世界中的所有的对象实例,垃圾收集器在对堆进行回收前,第一件事就是要确定这些对象哪些还“存活”着,哪些已经“死去”(即不可能再被任何途径使用的对象)。而如何判断对象是否应该回收,存在两个算法:引用计数算法(Reference Counting)和根搜索算法(GC Roots Tracing) 。但是Ja
由于Reference类型在Java虚拟机规范里面只规定了一个指向对象的引用,并没有定义这个引用应该通过哪种方式去定位,以及访问到Java堆中的对象的具体位置,因此不同虚拟机实现的对象访问方式会有所不同,主流的访问方式有两种:使用句柄和直接指针: 如果使用句柄访问方式,Java堆中将会划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据和类型数据各自的具体地址信息如下图所示: 如果使用直接指针访问方式,java堆对象的布局中就必须考虑如何放置访问类型数据的相关信息,reference中直接存储的就是对象地址。如下图所示: ...
运行时数据区   java虚拟机定义了若干种程序运行时使用到的运行时数据区 1.有一些是  随虚拟机的启动而创建,随虚拟机的退出而销毁 2.第二种则是与线程一一对应,随线程的开始和结束而创建和销毁。 java虚拟机所管理的内存将会包括以下几个运行时数据区域   PC寄存器 也叫程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的信号指示器。 每一条JVM线程都有自己的PC寄存器
     电脑使用了win7 32bit的系统,我删除了默认安装了微软拼音输入法,结果在打开word文档后发现无法使用搜狗拼音输入法。使用快捷键切换也没任何反应。    网上也有网友遇到过类似的情况,给出的解决方案就是修改word的选项设置。具体步骤如下:    选择文件--->选项---->高级,然后在编辑选项中把“输入法控制处于活动状态(A)”前的勾选项去掉,然后重新打开word文档后就可以了。  
在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来。   实体类TrainRecord结构如下:   public class TrainRecord implements Serializable { private static final long serialVersionUID = -1206960462117924923L; private long id; privat ...
项目使用了Spring和MyBatis,在往mysql数据库里插入数据时报错如下:   org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: java.sql.SQLException: Column count doesn't match value count at row 1 ### The error may involve com.chenzhou.examples.erm.dao.addRecord-Inline ### The error occurre ...
参考地址:http://wawlian.iteye.com/blog/1303276     MongoDB的文档其实和JSON 很类似,与JavaScript的对象概念也很像。但是 MongoDB的数据类型更加丰富。下面我们一一介绍 MongoDB的数据类型。 数据类型 描述 举例 32 位整数 32 位整数。shel
  Mongodb的安装与启动 下载链接: http://www.mongodb.org/downloads ---------------------------------------------------------------------------- Linux 安装 第一步:下载安装包 下载版本:2.0.2-rc2 下载链接: http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.0.1.tgz 首先在linux中解压缩安装程序
Mongodb配置文件配置: 第一步:在“D:\Mongodb”目录下新建一个文件,命令方式不限,例如新建一个mongodb.conf 第二步:在mongodb.conf中配置我们需要的配置项 关于具体的配置项,我们可以通过bin\mongod --help命令来确定我们需要配置的配置项 在配置文件中采取key=value的格式,key代表需要配置的options,value代表对应的参数,如果没有参数的则对应的value为空 例如我们在mongodb.conf中配置如下: dbpath=D:\Mongodb\data logpath=D:\Mongodb\log\M ...
Global site tag (gtag.js) - Google Analytics