07 2020 档案
摘要:#####jvm的无关性 1. 平台无关性,这是建立在操作系统上的,许多虚拟机厂商提供了可以运行在不同系统上的虚拟机,实现了载入和执行字节码文件 2. 语言无关性,虚拟机不与Java绑定,之和。class文件有关,这个文件包含了虚拟机指令 3. 画个图 .java 经过javac编译器 →.clas
阅读全文
摘要:#####数组特点: 1. 线性表,数据排成像线一样的数据结构,数据只有前后俩个方向,数组,链表,队列,栈都是线性表 2. 连续的内存空间,让它支持随机访问,根据下标随机访问的时间复杂度为o(1),随机访问的公式 3. 相同类型的数据结构 4. 随机访问公式,a[i]_address = base_
阅读全文
摘要:jvm三色标记: 黑:跟对象,其子对象已经扫描过 灰:对象本身被扫描过,其子对象未被扫描 白:未被扫描/垃圾对象 三色标记的问题:并发下漏标问题 cms漏标问题解决方法: 1 incrementtal update方法:既一个白色对象被一个黑色对象引用,则将黑色对象制成灰色,从而重新扫描 G1漏标问
阅读全文
摘要:分代回收理论: 1 大部分对象都是朝生夕死 2 小部分对象可以熬过多次Gc 3 由于上诉情况,所以将容易回收的放到了新生代,难回收的放到了老年代 Gc的种类: 1 young gc 2 old gc 垃圾回收算法 1 复制算法: 1)新生代用的都是复制算法,但是利用率只有一半,所以引入了appel式
阅读全文
摘要:1:jvm遇到new :首先判断是否别类加载器加载,然后class 加载到 jvm内存数据区 类加载 检查加载:检查这个指令参数是否可以在常量池中有对应类的符号引用,并检查是否被加载/解析/初始化 分配内存 -》指针碰撞 (适合内存规整)/ 空闲列表(适合内存不规整) 并发情况下 cas加失败重试/
阅读全文
摘要:jvm:一个运行在os上的微型os jvm机构图: 堆外内存 运行时数据区:线程共享区:堆: 方法区:运行时常量池: 私有线程区:程序计数器 本地方法区 虚拟机栈:栈帧:操作数栈 局部变量表 运行时jvm的动作: 1jvm向os申请内存 2jvm初始化数据区 3类加载到方法区 4执行方法,创建对象
阅读全文
摘要://假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 // // 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? // // 注意:给定 n 是一个正整数。 // // 示例 1: // // 输入: 2 //输出: 2 //解释: 有两种方法可以爬到楼顶。 //1. 1 阶
阅读全文
摘要://设计实现双端队列。 //你的实现需要支持以下操作: // // // MyCircularDeque(k):构造函数,双端队列的大小为k。 // insertFront():将一个元素添加到双端队列头部。 如果操作成功返回 true。 // insertLast():将一个元素添加到双端队列尾部
阅读全文
摘要://给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 // // 示例 1: // // 输入: "(()" //输出: 2 //解释: 最长有效括号子串为 "()" // // // 示例 2: // // 输入: ")()())" //输出: 4 //解释: 最
阅读全文
摘要://给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 // // // 返回滑动窗口中的最大值。 // // // // 进阶: // // 你能在线性时间复杂度内解决此题吗? // // //
阅读全文
摘要://给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 // // 有效字符串需满足: // // // 左括号必须用相同类型的右括号闭合。 // 左括号必须以正确的顺序闭合。 // // // 注意空字符串可被认为是有效字符串。 // // 示例 1:
阅读全文
摘要://根据 逆波兰表示法,求表达式的值。 // // 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 // // // // 说明: // // // 整数除法只保留整数部分。 // 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除
阅读全文
摘要://给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。 // // // // 示例 1: // // 输入: [1,2,0] //输出: 3 // // // 示例 2: // // 输入: [3,4,-1,1] //输出: 2 // // // 示例 3: // // 输入: [7,
阅读全文
摘要://合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 // // 示例: // // 输入: //[ // 1->4->5, // 1->3->4, // 2->6 //] //输出: 1->1->2->3->4->4->5->6 // Related Topics 堆 链表
阅读全文
摘要://给定一个链表,判断链表中是否有环。 // // 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 // // // // 示例 1: // // 输入:head = [3,2,0,-4], pos =
阅读全文
摘要://给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 // // 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 // // // // 示例 1: // // 输入: [3,2,3] //输出: 3 // // 示例 2: //
阅读全文
摘要://给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复 //的三元组。 // // 注意:答案中不可以包含重复的三元组。 // // // // 示例: // // 给定数组 nums = [-
阅读全文
摘要://给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复 //的三元组。 // // 注意:答案中不可以包含重复的三元组。 // // // // 示例: // // 给定数组 nums = [-
阅读全文
摘要:package com.example.demo; /** * 冒泡排序 */ public class BubbleSort { public static void main(String[] args) { int[] array = {4,5,6,3,2,1}; BubbleSort bub
阅读全文
摘要:package com.example.demo; /** * 快速排序 */ public class InsertionSort { public static void main(String[] args) { int[] array = {4, 5, 6, 3, 2, 1}; Insert
阅读全文
摘要:组合键可以一次按一个,拼成组合键
阅读全文
摘要:单向链表 存储数据的节点,存住以下各链表位置的节点 链表操作练习 leetcode 206,141,21,19,876。 常见的链表操作:记数,删除某一个节点,合并俩个链表
阅读全文
摘要://给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 // // 如果有两个中间结点,则返回第二个中间结点。 // // // // 示例 1: // // 输入:[1,2,3,4,5] //输出:此列表中的结点 3 (序列化形式:[3,4,5]) //返回的结点值为 3 。 (测评
阅读全文
摘要://给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 // // 示例: // // 给定一个链表: 1->2->3->4->5, 和 n = 2. // //当删除了倒数第二个节点后,链表变为 1->2->3->5. // // // 说明: // // 给定的 n 保证是有效的
阅读全文
摘要://将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 // // // // 示例: // // 输入:1->2->4, 1->3->4 //输出:1->1->2->3->4->4 // // Related Topics 链表 package lee
阅读全文
摘要://反转一个单链表。 迭代 // // 示例: // // 输入: 1->2->3->4->5->NULL //输出: 5->4->3->2->1->NULL // // 进阶: //你可以迭代或递归地反转链表。你能否用两种方法解决这道题? // Related Topics 链表 package
阅读全文
摘要:package com.example.demo; /** * 有序单链表实现lru * 思路:1.如果此数据之前已经被缓存在链表中了,我们遍历得到这个数据对应的结点,并将其从原来的位置删除,然后再插入到链表的头部。 * 2.如果此数据没有在缓存链表中,又可以分为两种情况: * 如果此时缓存未满,则
阅读全文
摘要:git init 初始化本地,在本地目录建立一个 .git 文件夹 git status ,查看本地是否有未提交的文件 git add '文件名字' git commit -m '文件名字' 提到本地库 git log 查看日志 git reflog 看历史记录 git log --graph 图形
阅读全文