- 浏览: 377553 次
- 性别:
- 来自: 杭州
-
最新评论
-
surpassno:
很不错,学习了
一个对象占用多少字节? -
ysyzww:
你这么牛逼,你父母知道吗
maven使用技巧 -
妖人不要跑:
JDK中反序列化对象的过程(ObjectInputStream#readObject) -
lanhz:
谢楼主,构建成功了
Mac OSX 10.9 上build openjdk8和openjdk7 -
zqb666kkk:
通过了吗 ?????
淘宝北京专场java面试题(2011-12-31)
文章列表
一、概述
大型软件需要有好的架构支撑,此处描述oracle体系结构,从运行期的进程/线程、内存体系结构和静态的文件描述。本来我想按照五种架构视图的运行架构和数据架构来写的,但是想想怕这么写不够严谨,所以还是按照Kyte大叔的分类来写吧。
二、数据库和实例
数据库是磁盘上存储的文件的集合。
实例是运行期的一组后台进程/线程和共享内存的集合。注意此处是后台进程,专用服务器不属于后台进程,但是为什么共享服务器属于呢?Oracle运行时候以多进程还是以多线程的形式运行,跟不同操作系统的实现版本有关的,Linux上是多进程,Window上是多线程。后续以多进程术语描述其运行期进程/线程,大家 ...
1、解锁用户
如果用户被锁,用用户登陆的时候会提示:
ORA-28000: the account is locked
解决:
sys/*** as sysdba 登陆后
alter user scott account unlock;
2、orcle自带工具
1)、%ORACLE_HOME%\rdbms\admin\utlxplan.sql 创建plan_table
2)、%ORACLE_HOME%\sqlplus\admin\plustrace.sql 创建plustrace角色
3)、%ORACLE_HOME%\rdbms\admin\spcreate.sq ...
JVM学习笔记十一 之 编译期优化和运行期优化
- 博客分类:
- jvm
一、概述
语言要在虚拟机上执行,必须先翻译成机器代码,翻译的方式有两种,一种是编译期静态翻译为机器码,一种是编译器翻译为某种表示,运行期在翻译成机器码来执行。
编译器可分为多种类型,1、编译器把java源文件编译成class文件的前端编译器,如javac和eclipse的jdt增量编译器;2、运行期把.class文件翻译成本地机器代码的JIT编译器,如HotSpot VM的C1、C2编译器;3、直接把java源文件编译成本地机器码的提前编译器(Ahead Of Time,AOT),如GNU Compiler for Java。后续我们提到的编译器是指运行期编译器。
java语言是一种解 ...
一、概述
jvm spec只给出了执行引擎的概念模型,并没有规定具体实现细节。执行引擎在执行时候可以解释执行、编译执行或直接由嵌入芯片的指令执行。引擎的行为使用指令集来定义。
java的目标是一次编写到处运行,为了达到这个目标,jvm指令集就不能依赖于任何硬件平台的指令,jvm指令集中就只有对栈的操作,没有对特定于硬件平台的寄存器的操作。当然jvm运行期优化的时候,可以针对不同的硬件平台提供不同的优化实现,比如充分利用硬件平台的寄存器提高访问速度。既然jvm执行引擎只有对栈的操作,那么我们下边就开始了解下栈的机构。
二、栈和栈帧
栈是线程私有的内存区域,每个线程都有一个栈,线程生则 ...
一、概述
Java最大的一个特点就是不用开发人员手动释放对象的内存,这些任务就交给了jvm来做。垃圾收集器有很多分类,如按照并行(ParNew、Parallel Scavenage、Parallel Old、CMS并发标记阶段、g1)、并发(cms并发标记和并发清理阶段、g2)和串行(Serial、Serial Old/PS Mark-Sweep),按照算法分引用计数和跟踪算法,按照性能指标比如吞吐量(Parallel Scavenge、Parallel Old)、低停顿(CMS)、增量式(G1)。
HotSpotVM的内存结构
二、基本算法
gc实现虽然很多,像串行、并行、 ...
一、对象创建
类型信息在装载、连接和初始化之后,就可以使用了,可以访问类型的静态字段和方法,可以创建类型实例。对象的创建分为现实创建和隐式创建两种。
显示创建分为:1、通过new创建;2、通过java.lang.Class的newInstance方法创建;3、通过clone方法创建;4、通过java.io.ObjectInputStream的readObject方法创建。
隐式创建分为:1、启动类的main方法的string数组参数;2、常量池的CONSTANT_String_info表项被解析的时候会创建一个String对象;3、每个加载的类都会创建一个java.lang.Cl ...
初始化阶段是为类型变量赋予正确的初始值,初始化分为两个阶段:
1、如果直接超类还没有进行初始化,则先初始化直接超类。
2、如果类存在一个初始化方法<clinit>,则调用该方法。
<clinit>是在编译java源码时,按照静态块和静态变量赋值语句的顺序生成的。如果类没有静态块也没有为静态变量赋值,就不会生成<clinit>方法,该方法只能被虚拟机调用。
<clinit>由虚拟机自动调用,不需子类显示调用。接口也会生成<clinit>方法。jvm会保证多个线程同时加载一个类的时候,初始化块的运行顺序。
另外前边说到 ...
一、概述
类型的连接是指把字节码二进制静态结构合并到运行时状态中去。连接又分为验证、准备和解析三个阶段。
二、验证
验证装载到jvm中的字节码流的合法性。jvm spec没有规定具体做什么验证。根据不同的虚拟机实现大 ...
前边提到了单线程的实现,这里贴出多线程版,此处主要用多线程去处理hash后的小文件:
package com.kingdee.gmis.mass.data.ips;
import static com.kingdee.gmis.mass.data.ips.MassIP.K10;
import static com.kingdee.gmis.mass.data.ips.MassIP.getPartitionFile;
import static com.kingdee.gmis.mass.data.ips.MassIP.partationCount;
import static ...
一、概述
类型的生命周期分为装载、连接、初始化、实例的生命周期(使用)和卸载(实例化算是类型生命周期的一部分么?)。装载是指把表示类型信息的二进制字节码装入到内存。连接阶段包括验证、准备和解析, ...
JVM学习笔记四 之 运行时数据区
- 博客分类:
- jvm
一、概述
运行时数据区是jvm运行时的内存布局,类装载到内存后存放的位置,为执行引擎提供所需指令和数据。运行时数据区包括:堆、栈、方法区、本地方法栈、pc计数器。
接下来会详细介绍各个部分,并介绍直接内存访问和方法区中的常量池,另外对于每个区域可能发生的内存异常用demo做讲解。
二、详细介绍各部分
1、堆
分配运行时产生的对象分配在堆中,但是并不是一定就分配在堆中,随着运行时编译器优化技术的不断进步,逃逸分析和标量替换技术的不断成熟,对象也可以分配到栈中。由于jvm内存是由虚拟机自己分配和回收,不需要开发人员手工干预,所以jvm一般会提供gc功能,但是jvm spec并没有明 ...
一、ClassLoader
负责装载class文件;这个文件来源可能是压缩包、网络、运行时编译出的或者自动生成的class文件,jvm spec没有规定必须从什么地方加载。
jvm中默认提供了三种系统类加载器:
1)、启动类加载器Bootstrap ClassLoader,负责加载%JAVA_HOME%\jre\lib目录下的包,
2)、扩展类加载器Ext ClassLoader,负责加载%JAVA_HOME%\jre\lib\ext目录下的包,或者在java.ext.dirs系统变量锁指定的路径中的所有类库
3)、应用程序类加载器App ClassLoader,负 ...
JVM学习笔记二 之 .class文件
- 博客分类:
- jvm
一、概述
Java的源码编译后的class文件,具有非常严谨的结构,文件各个部分内容的完整性也通过自身描述来校验。
开始描述class文件内容前,我们先定义一些说明:u1代表一个字节,也是两个16进制字符,u2、u4、u8分别代表2、 ...
国庆放假没买到票,没回家,呆在住的地方,花了三天时间看了下<<深入理解Java虚拟机>>,算是对以前看过的《深入Java虚拟机》的一个有力补充,前者有很多作者实际的例子,后者偏向于理论上的东西,不过后者太老了。接下来对看过的这些东西做一下整理稍微做下记录,由于是读书笔记,内容结构上可能跟原书比较相似。
一、java平台
java平台由四部分组成:
1、java语言
2、java api
3、java class文件结构
4、java viutual machine
二、jvm体系结构
接下来我们就按照jvm arc一部分一部分的分析 ...
前几天椰子在微博上发了消息说匿名函数也可以有名字,我就想了半天,有名字的匿名函数到底是什么情况??
先来看js中函数的三种定义方式吧:
/**
* 1、function关键字语句
*/
function fn1(){
alert("fn1");
}
/**
* 2、函数字面量(Function Literals)
*/
var fn2 = function(){
alert("fn2");
};
/**
* 3、Function构造函数型
*/
var fn3 = new Function('x','ale ...