06 2020 档案

摘要:class文件热加载,即不重启生效方法 1、自定义classLoader 独立线程监控class文件变化,一旦变化 重新new一个classLoader加载class ,老的class对象 老的classLoader需要去除引用,等待GC后自动卸载 2、JavaAgent 探针技术 ,重新定义已经加 阅读全文
posted @ 2020-06-28 22:04 蓝天随笔 阅读(419) 评论(0) 推荐(0)
摘要:一、场景 JavaAgent Java代理,又叫java探针,可以动态的改变加载的字节码文件 通常使用ASM Javasist字节码工具修改class文件 二、使用 2种方式 静态方式: 通过-javaagent 指定代理类 (在main方法执行前执行premain方法) 动态方法:通过额外的进程a 阅读全文
posted @ 2020-06-28 21:50 蓝天随笔 阅读(1240) 评论(0) 推荐(0)
摘要:一、类的双亲委托 Bootstrap(启动)类加载器,它负责加载 <Java_Runtime_Home>/lib下面的类库加载到内存中,由于启动类加载器涉及到虚拟机底层实现细节,开发者无法直接拿到其引用,因此使用Class.getClassLoader() 的结果为 null,因此如果获取的Clas 阅读全文
posted @ 2020-06-28 21:14 蓝天随笔 阅读(1010) 评论(0) 推荐(0)
摘要:一、生命周期 加载 连接 初始化 只是启动顺序,启动后可能交叉执行。 二、加载 加载class文件,class文件是JVM的规范,跟java没有强依赖。 可能来源:class文件、网络传输等 加载后会在堆中生成Class对象。 三、验证 验证字节码的格式、规范等,如class文件必然4个字节的魔数0 阅读全文
posted @ 2020-06-28 20:46 蓝天随笔 阅读(305) 评论(0) 推荐(0)
摘要:1、依赖库来源 POM依赖一个库 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version></dependency> 会从如下几个地方获取 本地仓库 阅读全文
posted @ 2020-06-22 23:04 蓝天随笔 阅读(2578) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2020-06-19 23:10 蓝天随笔 阅读(101) 评论(0) 推荐(0)
摘要:都是平衡二叉树。JDK热衷使用红黑树而非AVL树。 对比: 1、AVL树是严格平衡的,红黑树非严格平衡, 这点看查询效率AVL树 略好于 红黑树,但都是O(lon n)数量级 2、AVL树添加时最多2次旋转操作达到平衡,而删除时,可能删除节点以下的所有节点都需要旋转-> O(lon n)次 红黑树最 阅读全文
posted @ 2020-06-10 23:13 蓝天随笔 阅读(532) 评论(0) 推荐(0)
摘要:一、定义 特点: 1、有多层链表,每层都是排序好的 2、每一个级别都是其更低级别的子集 3、除最底层Level0,每层每个索引节点包含两个指针,一个向下,一个向右; 如下: 二、复杂度 增删查可以在O(logn)时间内完成 数组可以二分,跳表就是实现可以二分的链表, 查询时从最上层开始,只要右侧节点 阅读全文
posted @ 2020-06-10 23:04 蓝天随笔 阅读(201) 评论(0) 推荐(0)
摘要:一、队列 queue常用方法: 二、List 三、Set 四、Map 阅读全文
posted @ 2020-06-09 23:07 蓝天随笔 阅读(281) 评论(0) 推荐(0)
摘要:一、定义 可以理解为"配对"队列 特点: 1、内部没有存储 2、阻塞队列 3、发送或者消费线程会阻塞,只有有一对消费和发送线程匹配上,才同时退出。 4、配对有公平模式和非公平模式(默认) 公平模式用队列实现 ,每次从队列head开始匹配 非公平模式用栈实现,每次从栈顶开始匹配。 二、使用 代码: p 阅读全文
posted @ 2020-06-08 23:23 蓝天随笔 阅读(3058) 评论(0) 推荐(1)
摘要:一、定义 时延队列,只要经过一段时间后才能从队列中取出。 特点: 1、无界的阻塞队列。 2、只能存放实现了Delayed接口的对象 时延就是通过getDelay获取的,getDelay<=0时,才能取出队列中的值 3、内部使用PriorityQueue , 比较的就是时延 二、使用 代码样例 pub 阅读全文
posted @ 2020-06-08 22:58 蓝天随笔 阅读(326) 评论(0) 推荐(0)
摘要:一、定义 LSM(Log Structured Merge Trees)日志结构合并树。 其实不是一种树,是一种思想 根B/B+树一样,常用于一些nosql数据库的索引结构(如Hbase Cassandra SQLite)。 它的出现时为了解决B+树 磁盘IO随机读取的效率问题。 LSM索引只做ap 阅读全文
posted @ 2020-06-06 23:24 蓝天随笔 阅读(1361) 评论(0) 推荐(0)
摘要:一、定义 Trie树,又叫前缀树、字典树 典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计 特点:额外构造一颗Trie树,后续查询以O(len) (len为字符串长度) 时间复杂度完成查找和统计,以空间换时间 Trie树的基本性质: (1)根节点不包含 阅读全文
posted @ 2020-06-06 23:20 蓝天随笔 阅读(199) 评论(0) 推荐(0)
摘要:一、定义 Huffma树,霍夫曼树 或 哈夫曼树,是一种带权路径和最短的树,也叫最优二叉树 一个树的带权路径和=每个叶子节点的带权路径长度之和 一个叶子节点的带权路径长度 = 节点权值 * 层高 如下,节点1的带权路径长度=1*2(层高)=2 整个树的带权路径长度=1*2 + 2*2 + 3*2 + 阅读全文
posted @ 2020-06-06 22:55 蓝天随笔 阅读(341) 评论(0) 推荐(0)
摘要:一、B树 二叉树只有最多2个分支,B树可以有多个分支,可以理解为"平衡多叉树" B树相对二叉树在于每个节点可存储多个值,这样整体树将变得 ”矮胖“,树的高度比小,这样查询的效率就会变高。 数据库一次读操作以block为单元,一个block一般4K,我们把一个block数据尽量放入一个节点中,就避免数 阅读全文
posted @ 2020-06-04 22:46 蓝天随笔 阅读(421) 评论(0) 推荐(0)
摘要:一、二叉搜索树(BST) 每个非叶子节点最多只有左右两个子节点。 左子节点的值 < 父节点的值 右子节点的值 > 父节点的值 层数从1开始, 1、第i层最多有2^(i-1)个节点 2、树高为i层,最多有2^i - 1 个节点 二叉搜索树的遍历: 中序遍历:父节点放在中间 前序遍历:父节点放在前面 后 阅读全文
posted @ 2020-06-02 23:04 蓝天随笔 阅读(195) 评论(0) 推荐(0)
摘要:一、区别 给定两个字符串,求LCS 最长公共子串 (Longest Common Substring): 要求是连续的字符串 最长公共子序列(Longest Common Subsequence):要求子字符串相对顺序不变即可 二、动态规划求解 1、最长公共子串 给定两个字符串A 和 B 用二维数组 阅读全文
posted @ 2020-06-01 22:48 蓝天随笔 阅读(353) 评论(0) 推荐(0)