源码解析
长白山西红柿
这个作者很懒,什么都没留下…
展开
-
Timsort——Java源码阅读记录
在工作的时候用到了对泛型集合排序,本来以为里面也是像排序数组一样使用双轴快排,但是跟着Collections.sort()源码里发现是用了TimSort.sort()的排序,去网上简单的搜索了一下,说TimSort用了归并排序,并极大程度的利用了自然界很多数都已经拍好序了这个规律,其中比较好的文章是:世界上最快的排序算法——Timsort,我在看完源码之后虽然看"懂"了,TimSort它是怎么做的,但是不清楚它为什么这么做,这篇文章就解答了我很多疑惑。为了帮助大家更好的理解TimSort,也...原创 2021-04-05 15:02:12 · 280 阅读 · 0 评论 -
模仿CGLib,通过使用字节码实现动态代理
实现思路:在内存中通过拼接字符串的方式继承被代理的类,生成的代理类字符串通过JavaCompiler编译为字节码,并将字节码保存在内存中,最后通过自定义的类加载器加载到元数据区生成了代理类的Class对象。 Enhancer类:package com.lj.proxy;import lombok.Data;import javax.tools.*;import java.io.*;import java.lang.reflect.Field;import java.lang...原创 2020-10-08 09:27:00 · 229 阅读 · 0 评论 -
ThreadLocal源码解析
ThreadLocalMap是ThreadLocal的内部类,核心操作都在ThreadLocalMap类里实现当我们在外部通过ThreadLocal对象调用get方法获得在之前传入的value,本质上是取出当前线程Thread对象的ThreadLocalMap对象,再从中取出想要的值,也就意味着ThreadLocalMap是线程私有的。因为对ThreadLocalMap的操作封装在内部,由...原创 2019-03-28 21:43:18 · 169 阅读 · 0 评论 -
DualPivotQuicksort源码解析
我们可以直接调用Arrays.sort()来排序一个数组,跟踪下去实际上调用的是DualPivotQuicksort中的sort(a,left,rigth,null,0,0)int sort(对int类型的数组进行的排序) /** * Sorts the specified range of the array using the given * work...原创 2019-05-09 22:36:11 · 551 阅读 · 0 评论