java
horseber
飞是小李飞刀的飞,刀是小李飞刀的刀
展开
-
线上CPU飙升,问题定位
1、定位到cpu最高PIDtop2、将线程PID转换为 16进制为后面查找 jstack 日志做准备#查看进程内最耗费CPU的线程top -Hp pid#该进程id是10进制的,需要转为16进制printf “%x” PID注意(1)可以直接查找jstack数据jstack PID | grep 54ee(2)也可以通过以下步骤导出日志文件3、导...原创 2019-12-13 14:07:38 · 239 阅读 · 0 评论 -
Java异常
1、异常体系2、常见异常:java.lang.IllegalAccessError:违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。 java.lang.InstantiationError:实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常. java.lang.Ou...原创 2019-09-26 21:38:10 · 163 阅读 · 0 评论 -
Java数据结构:链表
1、链表定义:链表通过指针将不连续的内存块串起来,构成的一种数据结构。单向链表、双向链表,双端链表、单向循环、双向循环、跳跃链表等原理也都是基于指针将不连续的内存快串起来。只是指针指向复杂度不一样,提供的各种的API而已。/*** 单链表的表示方式:*/class Node { Object element; //节点数据信息:数据域 Node next; //下...原创 2019-08-22 12:51:44 · 115 阅读 · 0 评论 -
Java数据结构:数组
1、数组定义:数组是java语言中最基本的数据存储结构。数组是一块连续的内存空间,用于存储相同类型的数据。基本上掌握的数组的这个定义里包含的特点。也就掌握的了数组(1)连续的内存空间:因为连续,导致内存空间利用率差。若声明一个数组,大小为10m的连续的一块空间 byte[] arr=new byte[1024*10] 。即使这时候内存空间大于10m,但腾不出一块连续内存空间(存在内存碎片)...原创 2019-08-17 07:26:24 · 260 阅读 · 0 评论 -
Java数据结构:队列(2)
1、双端队列(Deque)deque 特殊之处在于添加和删除项是非限制性的。可以从任一端添加和删除数据。这种混合线性结构提供了单个数据结构中的栈和队列的所有能力。2、循环队列用数组来实现队列的时候,利用头尾指针避免了出队时数据的搬移,只是再在 tail==数组长度时,会有数据搬移操作,但数据搬移操作还是会影响到性能。解决方案就是循环队列。指定队列固定大小,通过头尾指针控制元素...原创 2019-08-22 07:08:45 · 79 阅读 · 0 评论 -
Java数据结构:队列(1)
1、队列栈是一种先进后出线性数据结构,数据的插入和删除只能在一端操作。队列是一种先进先出线性数据结构,队尾一端插入数据,队头一端删除数据。2、单向队列的实现:与基于数组的栈不同的是,基于数组实现的队列在出队操作时,相当于删除数组下标为 0 的数据,要搬移整个队列中的数据。/** * description: 基于数组实现队列 * date: 2019/8/21...原创 2019-08-21 17:45:06 · 145 阅读 · 0 评论 -
Java数据结构:栈
1、栈栈是一种先进后出线性数据结构,数据的插入和删除只能在一端操作。2、基于数组实现栈(顺序栈)只要抓住先进后出的特点,剩下的就是基于数据的操作。基于链表实现的栈(链式栈)与顺序栈同理,就是无非控制链表节点先进后出。链式栈的大小不受限,但要存储 next 指针,内存消耗相对较多。/** * description: 基于数组实现栈 * date: 2019/8/21 *...原创 2019-08-21 11:51:04 · 129 阅读 · 0 评论 -
Java数据结构:散列表
1、散列函数将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法。如MD5,就是一种被广泛使用的密码散列函数。MD5(12)=C20AD4D76FE97759AA27A0C99BFF6710MD5(123)=202CB962AC59075B964B07152D234B702、散列表散列表(Hash table,也叫哈希表),就是通过散列函数将关键码...原创 2019-08-20 21:46:01 · 395 阅读 · 0 评论 -
MyBatis源码解析(一):MyBatis使用示例
MyBatis源码解析系列参考:http://www.mybatis.org/mybatis-3/zh/index.html和源码调试,加上画图理解首先在掌握一门技术前,先得知道它是是什么,怎么用。之后再掌握底层原理1、使用传统JDBC编程:public static void test() { Connection connection = null; Prepar...原创 2019-08-24 16:39:05 · 254 阅读 · 0 评论 -
Java数据结构:跳跃链表
1、跳跃链表用某种数据结构来维护一组有序的数据的列表,尽可能在插入、删除、查找等操作上能够尽可能的快速。数组:使用数组存储的话,采用二分法可以在 O(logn) 的时间里找到指定的元素,在进行插入和删除则时间复杂度为 O(n) 链表:使用链表存储的话,就插入、删除动作而言,所需的时间复杂度为 O(1) ,加上查找所需的时间复杂度为O(n),故插入、删除所需的总的时间复杂度为O(n)。...原创 2019-08-23 18:02:43 · 299 阅读 · 0 评论