- 博客(31)
- 收藏
- 关注
原创 类加载
1、ClassLoader 是一个抽象类,定义了一些重要的方法,可以通过子类来扩展某些接口方法。有一个parent属性,称为双亲。2、ClassLoader 有四种,自定义 应用 扩展 启动类加载器3、双亲委派模型描述的是 判断某类是不是已经加载? 先自底往上询问加载器,你有没有加载过这个类,如果加载了就暂停询问,返回。如果到了启动类加载器还没有加载,那么就从启动类加载器开始进行加载,如...
2018-08-03 16:43:35 132
原创 Jvm 性能调优
堆栈溢出(设置栈空间太小,导致栈溢出) -Xss256k 每个线程堆栈空间太小,导致溢出 -Xss256k这个参数调整了,可能会影响trace的调用。 报如下错误: Java.lang.StackOverflowError at net.sf.jsqlparser.util.deparser.ExpressionDeParser.visitBinaryExpression(Expressi...
2018-08-03 15:44:24 318
原创 虚拟机常用参数
堆设置 o -Xms:初始堆大小 o -Xmx:最大堆大小 o -XX:NewSize=n:设置年轻代大小 o -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 o -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Ede...
2018-08-03 15:24:23 413
原创 静态分配和动态分配
分派是java三大特性中 (封装 继承 多态 )多态的一种体现,多态包含重载和重写,重载是静态分派 重写是动态分派这里所说的静态分派和动态分派其实就是方法调用的一种方式,除此还有解析调用(一般性的调用,在jvm 加载类的时候符号引用转化我直接引用)静态分派举例子:原因就是 静态分派 他实际上 使用的是编译类型动态分派:举例子:重写 那重写虚拟机是怎么实现的? invokev...
2018-08-03 11:12:08 3460
原创 垃圾回收器 CMS
CMS 关注在系统停顿时间 使用标记算法 CMS(concurrent mark sweep 并发标记清除) 运用在老年代区域主要工作步骤:初始标记 并发标记 重新标记 并发清除初始标记和重新标记这两个步骤仍然需要暂停Java执行线程,初始标记只是标记GC Roots能够关联到的对象,并发标记就是执行GC Roots Tracing的过程,而重新标记就是为了修正并发标...
2018-08-03 10:56:08 118
原创 G1收集器
G1 收集器jdk1.7 正式使用 替换CMS方案特点: 并行:多个GC线程同时工作 并发:与应用程序交替执行 分代GC:兼顾新生代 和 老年代 空间整理:每次GC之后都会复制对象。进行空间整理,减少空间碎片 可预见性:缩小了回收范围,从而可控全局停顿G1收集过程:新生代GC:eden 区清空,收集部分survivor区数据。并发标记周期(为了降低一次停顿时间) 初...
2018-08-03 10:54:27 137
原创 多么无力的教训啊(浮躁浮躁浮躁)
import java.io.*; import java.nio.charset.Charset; import java.util.*;/** * . */public class Main { public static void main(String[] args) { //Lis
2016-09-13 19:51:03 234
原创 对于application一点理解
对于移动端或者是web端应用,最重要的地方就三处; 1)数据存储 2)数据运输 3)数据展示数据存储: 数据放在哪啊,以及围绕这一个问题产生出的各种技术,之所以出现这种技术,用来解决数据存放产生的问题的; 数据运输: 从数据库中取出的数据,读取到内存中,内存中对数据进行各种操作,通过数据结构来加工数据,保存数据,从而传到页面;当然为了高
2016-08-11 23:06:48 288
转载 存储过程优点
第一:存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。 第二:存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。 第三:存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。 第四:存储过程主要是在服务器上运行,减少对客户机的压力。 第五:存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑
2016-04-09 20:42:38 300
转载 mysql索引
Mysql索引概念: 说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目录是要占纸张的,而索引是要占磁盘空间的。 Mysql索引主要有两种结构:B+树和hash.hash:hsah索引在mysql比较少用,他以把数据的索引以hash形式组织起来,因此当查找某一条记录的时候,
2016-04-09 19:42:48 194
原创 几种常见的排序算法
【希尔排序】思想是 通过每趟的缩小增量的排序,来使序列变得更加有序,最后来一趟直接插入排序,这样会使得效率会更高;希尔排序平均时间复杂度为 O(logn);【快速排序】思想是 每一趟的快排都是以某个数为枢纽,枢纽的一边全是比它小,另外一边全是比它大的,经过这样几次的排序,最终得到一个有序的序列。void quickSort(int arr[],int begin,int end){
2016-04-09 03:18:54 206
原创 B-树,B+树学习总结
B-树1、首先B-树是二叉排序树的扩展,允许在一个节点里有多个关键词,二叉排序树是二路查找,而B-树是多路查找; 2、B-树有一个很重要的属性就是 下层结点内的关键字取值总是落在由上层结点关键字所划分的区间内; 3、B-树 节点的分支树等于关键字+1; 4、B-树的插入总是发生在叶子结点上,插入的时候可能使每个结点的关键字超过规定个数,这时候要拆分关键字; 5、B-树的删除操作可能会破坏B-
2016-04-08 21:31:01 330
原创 二叉排序树(二)
package exerciseTest;import java.util.Iterator;import java.util.NoSuchElementException;/** * 二叉排序树,也可以成为二叉查找树 它的性质如下: 1.若它的左子树不为空,则左子树上所有的节点均小于其根节点 * 2.若它的右子树不为空,则右子树上所有的节点的值均大于根节点 3.它的左右子树也分别为二叉排序树
2016-04-08 20:06:05 230
原创 二叉排序树(一)
package exerciseTest;public class BinarySortTree{ /** * * @param root * @param key * @return */ BTNode BSTSearch(BTNode root,int key){ if(root == null)
2016-04-08 14:21:22 209
原创 序列化二叉树
题目描述 请实现两个函数,分别用来序列化和反序列化二叉树/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/import java.
2016-04-08 02:16:56 213
原创 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。import java.util.Stack;public class Solution { private Stack<Integer> stackData; private Stack<Integer> stackMin; public Solution(){ stackData
2016-04-08 00:21:28 173
转载 java io(一)
IO分类: 1、根据处理的数类型不同:字节流和字符流。 2、根据流向不同:输入流和输出流。字节流和字符流的区别: 1、字节流读取的时候,读一个就返回。 字符流用字节流的方式读一个或多个字节,然后去查指定的编码表,将查到的字符返回。 2、字节流可以处理所有类型数据如图片mp3、avi等。 而字符流只能处理字符数据 结论:只要是纯文本数据,都要优先考虑字符流来处理。其他的都要使用字节流。I
2016-04-07 23:54:56 217
原创 树的子结构
题目描述 输入两颗二叉树A,B,判断B是不是A的子结构。/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public clas
2016-04-07 00:52:10 181
原创 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
import java.util.ArrayList;import java.util.Collections;public class Solution { public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; pub
2016-04-06 00:55:42 694
原创 滑动窗口的最大值
题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5
2016-04-03 17:05:16 234
原创 旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。package exerciseTest;import java.util.ArrayList;import java.util.Collections;public class S
2016-04-03 16:34:38 240
原创 从尾到头打印链表
题目描述 输入一个链表,从尾到头打印链表每个节点的值。 输入一个链表的表头 输出为需要打印的“新链表”的表头思路是 重新开一个链表,然后逆序输入,再打印出来package exercise03;import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;class ListNode {
2016-04-03 10:59:36 227
原创 myeclipse中的注释
以 /* */ 注释和取消注释代码:先选中Ctrl+Shift+/ + Ctrl+Shift+\以 “//” 注释和取消注释掉代码: ctrl+/ + ctrl+/
2016-04-02 21:35:23 224
转载 throw 和 throws 区别
/** * * @author liufeng * throw 和 throws 区别 * */public class Main { public void yichang(){ NumberFormatException e = new NumberFormatException(); throw e; /
2016-03-26 21:51:01 275
原创 finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?
1、finalize()用在当垃圾回收器,因内存紧张,而去回收某些对象时,这时候会去调用其finalize()方法;而如果内存不紧张,就不会去回收对象,那finalize()就不会被调用; 但是呢,考虑到JNI(java native interface),有时候finalize()就可以去回收这部分的内存;2、Java堆的结构是什么样子的?什么是堆中的永久代(Perm G
2016-03-25 23:50:07 6917
原创 Enumernation pk iterator
1、速度上:Enumernation 比iterator快2倍;2、占用内存上:Enumernation 也是 比 iterator 要占更少的空间;3、安全性: iterator 比 Enumernation 更安全,体现在在使用iterator遍历集合时,其他线程不能对当前集合进行修改;4、是否可以删除底层元素时:iterator 可以而Enumernation 不可以;
2016-03-25 23:04:54 287
原创 Java集合类框架的实践经验
1、当元素的大小能事先知道,这时候我们就要优先使用 Array而不是ArrayList,【原因】ArrayList会自动扩容,这时候就有可能造成空间浪费。2、集合类中使用泛型,主要是为了可读性,健壮性,还有可以避免ClassCastException.
2016-03-25 21:42:25 261
原创 PriorityQueue
1、优先队列:打破了队列的先进先出规则,内部实际上采用了堆排序的方法实现队列的排序。所以说每次用peek()或者用Poll去获取元素时,都是获取到最小的元素;【注意】放入队列中的元素,必须是实现了comparable接口,或者是传入了一个comparator对象;这样子队列才可以实现排序。 PriorityQueue不允许null值,因为他们没有自然顺序,或者说他们没有任何
2016-03-25 21:09:51 288
转载 java native关键词
1、native关键词 表明方法是本地方法,何谓本地方法呢? 就是在本语言自身中调用别的方法2、java需要与一些底层系统如操作系统或某些硬件交换信息时的情况。本地方法正是这样一种机制:它向我们提供了一个非常简洁的接口,而且我们无需去了解java应用之外的繁琐的细节。 这也是为什么要用本地方法的地方。3、使用本地方法是有开销的,它丧失了java的很多特性。如果别无选择,
2016-03-14 14:09:18 220
原创 springmvc开发中所遇到的问题
HttpServletRequest cannot be resolved to a type。 Multiple markers at this line - The import javax.servlet.http cannot be resolved - The import javax.servlet.http cannot be resolved - The import
2016-03-11 13:48:59 972
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人