Java
zeekling
这个作者很懒,什么都没留下…
展开
-
StringBuilder、StringBuffer和String:
StringBuilder、StringBuffer和String: 1、String: 字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。 2、StringBuffer: 字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuf原创 2016-01-15 17:19:23 · 471 阅读 · 0 评论 -
并归排序算法java实现
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 设r[i…n]由两个有序子表r[i…m]和r[m+1…n]组成,两个子表长度分别为n-i +1、n-m。 1、j=m+1;k=i;i=i; //置两个子表的起始下标及辅助数组的起始下标 2、若i>m 或j>n,转⑷ //其中一个子翻译 2016-03-10 12:53:18 · 802 阅读 · 0 评论 -
java虚拟机的垃圾收集器之新生代收集器
hotspot虚拟机的收集器hotspot垃圾收集器主要有七种:如图所示: 图中上面部分是新生代的垃圾收集器,下面部分表示老年代的垃圾收集器,两个垃圾收集器的之间的连线表示两个收集器搭配使用。serial收集器serial收集器是最基本发展最悠久的收集器。serial收集器是一个单线程的收集器,但他的“单线程”的意义并不仅仅只会使用一个cpu或者一条线程去完成垃圾收集工作,更重要的是在他进行垃翻译 2016-06-28 10:25:56 · 1537 阅读 · 0 评论 -
java对象的访问
java对象的访问我们都知道一般访问和操作对象都是通过引用来操作和访问对象。目前对象的访问方式有句柄和直接指针:1、如果使用句柄访问的话,那么java堆中将会划分出一块内存作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象的实例数据与类型数据各自的具体地址信息。 2、如果使用直接指针访问,那么java堆对象的布局就必须考虑如何放置访问类型数据的相关信息,而refer翻译 2016-06-24 16:15:07 · 863 阅读 · 0 评论 -
谈谈我对类加载器的理解
谈谈我对类加载器的理解最近在看java虚拟机和tomcat源码,看到了类加载器这块儿,有点感触,随便写写。在说类加载器之前,我们先聊聊虚拟机的加载机制:1、一个类的生命周期:加载、链接、初始化、使用、卸载。链接又可以分为验证、准备、解析三个过程。 其中加载、验证、准备、初始化、使用、卸载是按顺序执行的,注意没有解析这一步。在加载阶段,虚拟机完成三件事: 1)通过一个类的全限定名类获取定义原创 2016-06-20 15:38:52 · 1771 阅读 · 0 评论 -
解读tomcat源码之tomcat的启动过程
解读tomcat源码之tomcat的启动过程前言tomcat 我们经常用到,但是有时候我们却感到对他无比陌生,出了错都不知道是什么原因引起的。这个就比较尴尬,不过好在tomcat是开源免费的,我们可以看到其源码,那么问题就简单了,我们看看源码什么迷惑就没有了。最近对于tomcat有诸多不解,故看看源码来解惑,理解可能有些偏差,还请大神不吝赐教,小子在此谢过。启动过程我们都应该知道tomcat是通过类原创 2016-07-31 22:00:33 · 538 阅读 · 0 评论 -
java内存模型的理解
java内存模型java虚拟机在执行java程序时会把内存分为不同的数据区: 上图中蓝色的两块区域是所有线程共享的数据区,即方法区和堆是所有线程共享的。而剩下的三块区域:虚拟机栈、本地方法栈、程序计数器。java虚拟机栈我们经常可以听到有人把java内存分为堆内存和栈内存,其中栈就是虚拟机栈,局部变量表存放了编译器可知的各种基本数据类型(boolean、byte、char、short、int、翻译 2016-06-22 21:33:47 · 449 阅读 · 0 评论 -
dijkstra 算法的java实现
迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。 按路径长度递增次序产生算法: 把顶点集合V分成两组: (1)S:已求出的顶点的集合(初始时只含有源点V0) (2)V-S=T:尚未确定的顶点集合 将T中顶点按递增的次序加入到S中,保证: (1)从源点V0到S中其他各顶点的长度都不大于从V0到T中任何顶点的最短路径长度 (2)每个顶点对应一个距离值 S中顶点:从翻译 2016-03-21 22:25:57 · 909 阅读 · 0 评论 -
排序算法之冒泡排序
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 冒泡排序代码:package BubbleSort;/** * Created by root on 3/8/16. */public class BubbleSort<T extends Co翻译 2016-03-08 23:59:04 · 334 阅读 · 0 评论 -
keySet和entrySet速度区别
1、keySet()的速度比entrySet()慢了很多,也就是keySet方式遍历Map的性能不如entrySet性能好为了提高性能,以后多考虑用entrySet()方式来进行遍历。对于keySet来讲,他便利了两次,一次转为Iterator类型,一次成HashMap中取出key对应的value值,二entrySet只遍历了一次,他将key和value全部放入entry中。 2、k原创 2016-01-16 21:49:52 · 2668 阅读 · 0 评论 -
Super和this的应用
Super是指当前类的父类,this指的是当前对象。看下面的例子:package test1;/** * Created by lzh on 1/19/2016. */public class Father { private String name = "origin name"; public Father(){ say(name);原创 2016-01-19 20:10:29 · 517 阅读 · 0 评论 -
运算符之间的用法与比较
算术运算符: 包括 + 、-、*、/、%、++、--关系运算符 包括 == 、!=、>、=按位运算符(对二进制数操作) 包括 &、|、^、~、>、>>> &:AND |:OR ^:XOR(异或):两个操作数的位中,相同则结果为0,不同则结果为1。~:取反>>:右移运算符,num >> 1,相当于num除以2原创 2016-01-15 17:13:40 · 959 阅读 · 0 评论 -
排序算法之希尔排序(java实现)
先将要排序的一组记录按某个增量d(n/2,n为要排序数的个数)分成若干组子序列,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。继续不断缩小增量直至为1,最后使用直接插入排序完成排序。 java实现:package InsertionSort;/** * Created by root on 3/7/16. *翻译 2016-03-07 21:12:41 · 476 阅读 · 0 评论 -
java实现单链表
单链表的概念参照这个完全可以理解http://baike.baidu.com/link?url=-1uzZ37pcZwpN-1Zy2lCassJ2YqPQzjIPbQHdPXCwo0pGR5-sXiEY8kXNUjt2DubG_8JTSQBJrhTF182Kwo5Wq下面是我的程序:新建一个名为Node的类,data是数据域,而next是指针域package singleLinkedL翻译 2016-03-01 20:04:50 · 495 阅读 · 0 评论 -
选择排序之简单选择排序(java实现)
在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。 实现代码:package SelectionSort;/** * Created by root on 3/7/16. */public class SimpleSelection原创 2016-03-07 21:57:13 · 420 阅读 · 0 评论