- 博客(10)
- 收藏
- 关注
原创 JVM学习笔记(四):类的初始化
首先要明确这个标题,是类的初始化,而不是对象的初始化,他们千差万别不要搞混。类初始化:就是按照程序员的意愿执行类的初始化(clinit)方法,给静态变量等赋初值(之前提到准备阶段是给类的的静态变量分配内存,赋null或0值等)。类的初始化语句:静态变量声明语句,以及静态代码块。类的主动使用:创建类的实例、访问类或接口的静态变量,或者对静态变量赋值的,或者调用类的静态方法使用反射初始化类的子类JVM...
2015-04-22 21:56:37 1110
转载 java synchronized详解
记下来,很重要。 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问ob
2015-04-19 10:09:54 350
转载 Java学习之路-序列化与反序列化
对象序列化的目标是将对象保存到磁盘中,或允许在同络中直接传输对象。对象序列化机制允许把内存中的 Java 对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。其他程序一旦获得了这种二进制流(无论是从磁盘中获取的,还是通过网络获取的),都可以将这种二进制流恢复成原来的 Java 对象。 1,序列化的含义和意义 序列化机制允许
2015-04-05 10:28:05 511
原创 算法学习之路-交换排序
交换排序主要有两种:冒泡排序和快速排序 冒泡排序:基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 上代码 待排int数组为a,xiat
2015-04-04 23:11:10 596
原创 算法学习之路-三种插入排序
插入排序:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的。 插入排序细分可以分为三种: 简单插入排序: 思路简单直接上关键部分代码。 一直int数组a,下同。 for (int i = 1; i < a.length; i+
2015-04-04 22:10:35 618
原创 算法学习之路-归并排序
描述: 给定一个数列,用归并排序算法把它排成升序。 输入: 第一行是一个整数n(n不大于10000),表示要排序的数的个数; 下面一行是用空格隔开的n个整数。 输出: 输出排序后的数列,每个数字占一行。 输入样例: 5 3 2 1 4 5 输出样例: 1 2 3 4 5 public class MergeSort { private stat
2015-04-03 22:23:35 550
原创 算法学习之路-二分查找
描述: 给定一个单调递增的整数序列,问某个整数是否在序列中。 输入: 第一行为一个整数n,表示序列中整数的个数;第二行为n(n不超过10000)个整数;第三行为一个整数m(m不超过50000),表示查询的个数;接下来m行每行一个整数k。 输出: 每个查询的输出占一行,如果k在序列中,输出Yes,否则输出No。 输入样例: 5 1 3 4 7 11 3 3 6 9
2015-04-03 21:22:43 589
原创 JVM学习笔记(三):类的连接
前篇文章说了一下类加载器加载类,这篇文章说一下类的连接过程。 类被加载后,就进入连接阶段。连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去。 连接过程有三部分组成: 1 . 验证 类的验证的内容一共有四点: 类文件的结构检查:确保类文件遵循Java的固定格式语义检查:确保类文件遵循Java的语法要求,如一个类只能有一个父类等字节码验证:确保字节码流能够
2015-04-03 16:13:17 579
原创 JVM学习笔记(二):类加载器
类加载器就是传说中的ClassLoader。 他所做的工作就是在类加载阶段将硬盘上的二进制文件加载到内存,转化为存储在方法区中运行时的数据结构。 并产生一个位于对中的Class对象:封装了类在方法区的数据结构,为程序员提供了访问方法区数据结构的接口。 下面来说说ClassLoader具体的一些细节。 ClassLoader分类: 首先是JVM自带的集中ClassLoader
2015-04-01 16:57:31 598
原创 JVM学习笔记(一):类加载流程
我们都知道java是一个可以跨平台的语言,可以放荡于任何操作系统,这是为什么呢?原因就在于,java其实不是跑在我们的操作系统上的,而是跑在他自己的“操作系统之上”--java虚拟机(JVM)。所以JVM是我们跑java的一个重要前提。搞懂他,很重要! JVM也有自己的生命周期:当程序运行时开始,程序结束时为止。每个Java程序都运行于它自己的Java虚拟机 JVM结束生命周期有以下几个情况:
2015-04-01 15:39:08 728
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人