摘要: 本地方法栈(线程私有的) java虚拟机栈 是管理java方法的调用 而 本地方法栈 是管理 本地方法(在本地方法库) 的调用 本地方法:主要指的是C语言C++语言写的 阅读全文
posted @ 2021-07-04 18:45 宋佳强 阅读(271) 评论(0) 推荐(0)
摘要: 本地方法接口(Native Method Interface) 融合 C/C++(非java)语言,类似于 抽象类,但是方法体 是由 非java 语言实现的 native 关键字 对应的方法 ,调用 非 java 方法, 例如 线程调用本地线程,就需要C语言的帮助 右下角的区域 为什么要使用 本地方 阅读全文
posted @ 2021-07-04 18:44 宋佳强 阅读(57) 评论(0) 推荐(0)
摘要: 一、虚拟机栈的概述(线程私有) 基于栈 的 设计的,跨平台 优点:跨平台、指令集小、编译器容易实现 缺点:性能下降、实现同样的功能 指令集多 1.1、堆管存储、、栈管运行 虚拟机栈的作用:主管java程序的运行,它保存方法的局部变量、部分结果,并参与方法的返回 和 调用 局部变量 vs 成员变量(或 阅读全文
posted @ 2021-07-04 18:43 宋佳强 阅读(347) 评论(0) 推荐(0)
摘要: 一、PC寄存器的介绍(线程私有) 用来存储指向下一条指令的的地址,也是即将要执行的的指令代码,由执行引擎读取下一条执行 俗话说: 就是线程执行到哪里了(貌似 像 汇编里的 EIP),CPU需要不停的切换线程 在切换回来的时候,PC寄存器里就记录了 执行到哪里了 PC 既没有 GC 也没有 OOM 说 阅读全文
posted @ 2021-07-04 18:42 宋佳强 阅读(425) 评论(0) 推荐(0)
摘要: 二分搜索 《算法小抄》作者 labuladong 一首诗 二分查找框架 int binarySearch(int[] nums, int target) { int left = 0, right = ...; while(...) { int mid = left + (right - left) 阅读全文
posted @ 2021-07-04 18:40 宋佳强 阅读(46) 评论(0) 推荐(0)
摘要: 一、快、慢指针的常用算法 快、慢指针 一般会 初始化 链表头节点head ,前进时 快指针 fast 在前面,慢指针 slow 在后,可以巧妙解决一些 链表中的问题 1.判断链表中是否有环?(LeetCode 141题 难度:简单 ) 如果有环的话,快指针必定超越慢指针 一圈, 然后相交。 如果没有 阅读全文
posted @ 2021-07-04 18:38 宋佳强 阅读(78) 评论(0) 推荐(0)
摘要: 广度优先搜索(BFS、队列) 思路:利用队列的“先进先出”的性质,将 根节点的 两个节点 放入队列, 然后 左节点出队列 ,并且将 左节点的 子节点 加入队列,完成之后 右节点出队列,将右节点的子节点 加入队列 ,以此类推 。 算法框架 // 计算从起点 start 到终点 target 的最近距离 阅读全文
posted @ 2021-07-04 18:37 宋佳强 阅读(361) 评论(0) 推荐(0)
摘要: 回溯算法 回溯算法 实际上 就是暴力破解(穷举) 解决一个回溯问题:实际上就是解决一个 决策树 的遍历过程,考虑一下三点 1.路径:也就是要做出的选择 2.选择列表:也就是你 当前可以做的选择 3.结束条件:也就是到达决策树的 底层,做的操作,return 回溯代码框架 result = [] de 阅读全文
posted @ 2021-07-04 18:36 宋佳强 阅读(258) 评论(0) 推荐(0)
摘要: 一、运行时数据区 红色区(2个):一个进程对应一份,多线程 共享的 一个进程(多线程)共享,方法区(堆外内存、Method Area)和堆空间(Heap) 灰色区(2个):一个线程对应一份,单线程 私有的 一个线程一份 程序技术器(PCS)、本地方法栈(NMS)、虚拟机栈(VMS) 95%的垃圾回收 阅读全文
posted @ 2021-07-04 18:04 宋佳强 阅读(60) 评论(0) 推荐(0)
摘要: 一、内存图总体 二、类加载子系统 2.1 类加载子系统三个环节:加载,链接、初始化 补充 _反编译 指令 : javap -v xxx.class 将 .class 文件加载到内存的三个环节: 加载 链接 初始化 ClassLoader 只负责 加载 calss文件 ,至于能不能执行 ,由 执行引擎 阅读全文
posted @ 2021-07-04 18:03 宋佳强 阅读(84) 评论(0) 推荐(0)