摘要: 归并排序 整体是递归,左边排好序+右边排好序+merge让整体有序 归并排序复杂度 T(N) = 2*T(N/2) + O(N^1) 根据master可知时间复杂度为O(N*logN) merge过程需要辅助数组,所以额外空间复杂度为O(N) 归并排序的实质是把比较行为变成了有序信息并传递,比O(N 阅读全文
posted @ 2021-08-27 20:34 习惯1991 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 栈和队列 栈:数据先进后出,犹如弹匣 队列:数据先进先出,好似排队 双向链表实现 栈和队列 static class DoubleNode<T>{ T value; DoubleNode last; DoubleNode next; public DoubleNode(T value) { this 阅读全文
posted @ 2021-08-26 10:45 习惯1991 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 单向链表 单向链表节点结构 public class Node { public int value; public Node next;• public Node(int data) { value = data; }}​ 双向链表 双向链表节点结构public class DoubleNode 阅读全文
posted @ 2021-08-26 10:15 习惯1991 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 异或运算:相同为0,不同为1同或运算:相同以1,不同为0异或运算就记成无进位相加! 1)0^N == N N^N == 02)异或运算满足交换律和结合率 题目一 如何不用额外变量交换两个数 /** * a 与 b 交换数据 不使用中间变量 */ public static void m1(){ in 阅读全文
posted @ 2021-08-25 17:06 习惯1991 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 评估算法优劣的核心指标是什么? 时间复杂度(流程决定) 额外空间复杂度(流程决定) 常数项时间(实现细节决定) 什么是时间复杂度?时间复杂度怎么估算? •常数时间的操作 •确定算法流程的总操作数量与样本数量之间的表达式关系 •只看表达式最高阶项的部分 常见的常数时间的操作 Misplaced & 总 阅读全文
posted @ 2021-08-25 16:42 习惯1991 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 1.如何判断垃圾对象 可达性分析算法 也叫根搜索算法,Java语言采用这种分析算法去判断垃圾对象。 可作GCRoot的对象 虚拟机栈(栈帧中的本地变量表)中的引用的对象。 方法区中的类静态属性引用的对象。 方法区中的常量引用的对象。 本地方法栈中JNl(即一般说的Native方法)的引用的对象。 2 阅读全文
posted @ 2020-08-11 17:23 习惯1991 阅读(117) 评论(0) 推荐(0) 编辑
摘要: JVM运行时数据区规范 线程共享区域:JVM启动的时候,这块区域就开始分配空间。 线程私有区域:没有线程的时候,这块区域是不存在的。这块空间的生命周期特别短暂,不存在垃圾回收的问题。 Hotspot运行时数据区 JDK1.6&JDK1.7&JDK1.8+ 分配JVM内存空间 分配堆的大小 –Xms( 阅读全文
posted @ 2020-07-20 20:04 习惯1991 阅读(170) 评论(0) 推荐(1) 编辑
摘要: 1.类加载的时机 1. 遇到 new 、 get static 、 put static 和 invoke static 这四条字节码指令时,如果对应的类没有初始化,则要对对应的类先进行初始化。 这四个指令对应到我们java代码中的场景分别是: new关键字实例化对象的时候; 读取或设置一个类的静态 阅读全文
posted @ 2020-07-06 19:23 习惯1991 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 我们可任意打开一个Class文件(使用Hex Editor,sublime等工具打开),内容如下(内容是16进制): 开头的4个字节 代表的是魔数 它的唯一作用是确定这个文件是否是一个能被虚拟机接收的Class文件。后面4个字节代码的是使用的jdk版本号。其中前2个字节代码次版本号,后面2个字节代码 阅读全文
posted @ 2020-07-06 17:56 习惯1991 阅读(388) 评论(0) 推荐(1) 编辑
摘要: 1.JDK、JRE与JVM的关系 2.字节码和机器码的区别 机器码是电脑CPU直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,也比较难编写,一般从业人员接触不到。 字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。 3.OracleJDK和OpenJDK 查 阅读全文
posted @ 2020-07-06 09:54 习惯1991 阅读(318) 评论(0) 推荐(0) 编辑