java
一只积累鸭
这个作者很懒,什么都没留下…
展开
-
【无标题】
dddddd转载 2022-05-26 19:07:30 · 138 阅读 · 0 评论 -
Lists.transform的使用
已知有一个类描述了文件信息public class FileMetaData{ private final long number; private final long fileSize; private final InternalKey smallest; private final InternalKey largest; public InternalKey getLargest() { return largest;原创 2020-11-27 18:07:14 · 384 阅读 · 0 评论 -
java复制、删除文件,创建文件夹
public final class FileUtils{ private static final int TEMP_DIR_ATTEMPTS = 10000; private FileUtils() { } // 判断文件是否问软链接,软连接的定义:https://www.runoob.com/linux/linux-comm-ln.html // linux中的软链接类似于windows中的快捷方式,一个形象的例子:https://blog.cs.原创 2020-11-26 21:16:22 · 195 阅读 · 0 评论 -
LoadingCache
LoadingCache的目录创建LoadingCacheget方法removalListener方法一直没怎么用过guava的缓存,今天终于有机会尝试,非常欣喜,开篇废话略多,这是个吉祥的开始前面还写过两篇缓存的文章 本地缓存、缓存那些事儿,可惜那时对缓存的理解没有如今深刻LoadingCache 是guava cache的一个接口,是缓存的本地实现,通过建造者模式实现。创建LoadingCacheLoadingCache<Key, Graph> graphs = CacheBu原创 2020-11-26 16:26:37 · 1100 阅读 · 0 评论 -
Java虚引用
虚引用虚引用是最弱的一种引用关系,如果一个对象仅持有虚引用,那么它就和没有任何引用一样。用 PhantomReference 类来表示,通过查看这个类的源码,发现它只有一个构造函数和一个 get() 方法,而且它的 get() 方法仅仅是返回一个null,也就是说将永远无法通过虚引用来获取对象,虚引用必须要和 ReferenceQueue 引用队列一起使用。源码:public class PhantomReference<T> extends Reference<T> {原创 2020-11-26 16:11:02 · 260 阅读 · 0 评论 -
MappedByteBuffer释放内存
FileChannel在调用了map方法,进行内存映射得到MappedByteBuffer,但是没有提供unmap方法(),释放内存。可以利用工具类来释放MappedByteBuffer。ByteBufferSupport.unmap(mappedByteBuffer);mappedByteBuffer = null;原创 2020-11-24 23:15:55 · 801 阅读 · 0 评论 -
MappedByteBuffer原理->实现内存映射文件,像访问内存中的数组一样访问文件
虚拟内存每一个运行的进程,都会获得一个 4G的内存地址空间,这就是所谓的虚拟内存,这里面的所有地址都是虚拟的,和物理内存啥的并不直接挂钩。而在操作系统那头,这些虚拟地址所映射到的实际地址,可以是物理内存地址,也可以是页面文件的地址。如果是物理内存小于这个虚拟地址的范围的话,映射的物理内存还可能是重复的物理内存地址片段,使用的时 候可以通过清空内存数据,将内存数据写入页面文件这样的方式进行物理内存的重新利用,以提高物理内存的利用效率。I/O调用的基本原理直接通过API做IO,会用到一系列的系统调用(sy原创 2020-11-24 22:18:55 · 793 阅读 · 0 评论 -
AtomicInteger源码
题外话,在leveldb的实现中遇到了AtomicInteger,这里我们来好好学习下他的源码同步和互斥首先明确多线程的同步和互斥的概念:同步指在不同进程之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。如果用对资源的访问来定义的话,同步是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。互斥.原创 2020-11-23 17:51:34 · 139 阅读 · 0 评论 -
volatile关键字
目录JVM原则的先行发生原则(Happen-Before)自带的先行发生原则:一、程序次序原则二、管程锁定规则三、volatile 变量规则四、线程启动规则五、线程终止规则六、线程中断规则七、对象终结规则八、传递性volatile禁止指令重排JVM原则的先行发生原则(Happen-Before)先行发生原则是 Java 内存模型中定义的两个操作之间的偏序关系。比如说操作 A 先行发生于操作 B,那么在 B 操作发生之前,A 操作产生的“影响”都会被操作 B 感知到。这里的影响是指修改了内存中的共享变量、原创 2020-11-23 17:06:47 · 169 阅读 · 0 评论 -
【垃圾回收】教科书里垃圾回收的思路
教科书里垃圾回收的思路一、垃圾回收,回收的是什么?你说是什么,当然是垃圾啊!!!神经病啊!!!回收的是已经不再活着的对象,也就是死去的对象。(对象终有一死,请广大群众关爱自己,妈呀,说得好可怕)二、既然回收的是死去的对象,那么如何判断对象已经死去?当然是下列算法可以判断对象死去:1、引用计数算法概念给对象中添加一个引用计数器,当有一个地方引用他时,计数器值就加1,当引用失效时,...原创 2020-03-08 22:26:19 · 189 阅读 · 0 评论 -
map中的computeIfAbsent方法
computeIfAbsent原创 2017-09-08 15:12:51 · 8207 阅读 · 0 评论 -
反射机制
java反射机制转载 2017-08-24 10:21:37 · 195 阅读 · 0 评论 -
代理模式
代理模式转载 2017-08-24 10:28:13 · 133 阅读 · 0 评论