![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 51
源码了解:hadluo
这个作者很懒,什么都没留下…
展开
-
java agent 求对象大小
1.新建一个agent工具类 , 里面有一个方法sizeOf , 用来返回对象大小。import java.lang.instrument.Instrumentation;import java.util.Arrays;import java.util.HashMap;import java.util.Map;import java.util.Random;import javax.management.ReflectionException;public class AgentTools原创 2020-11-16 10:33:21 · 216 阅读 · 1 评论 -
CountDownLatch、CyclicBarrier和Semaphore用法
1.CountDownLatch用到的场景: 等待所有子任务都完成在返回。重要方法:public void await() throws InterruptedException { }; //调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行public boolean await(long timeout, TimeUnit unit) throws In...原创 2020-03-23 16:37:41 · 173 阅读 · 0 评论 -
invokespecial和invokevirtual指令
1.JVM提供了5种方法调用指令,其作用列举如下:invokestatic:该指令用于调用静态方法,即使用 static 关键字修饰的方法;invokespecial:该指令用于三种场景:调用实例构造方法,调用私有方法(即private关键字修饰的方法)和父类方法(即super关键字调用的方法);invokeinterface:该指令用于调用接口方法,在运行时再确定一个实现此接口的对象;...原创 2020-03-19 18:05:45 · 4422 阅读 · 4 评论 -
IO概念
1. 内核缓冲区用户程序进行IO的读写,会用到read&write两大系统调用。read系统调用,是把数据从内核缓冲区复制到进程缓冲区;而write系统调用,是把数据从进程缓冲区复制到内核缓冲区。2. 同步IO与异步IO同步IO 同步IO是指用户空间线程是主动发起IO请求的一方,内核空间是被动接受方。异步IO: 是指内核kernel是主动发起IO请求的一方,用户线程是被动接受方。...原创 2020-03-04 17:00:38 · 1475 阅读 · 0 评论 -
CopyOnWriteArrayList 面试集锦
1.CopyOnWriteArrayList是线程安全List集合,我们看下add方法的实现:先拷贝了【当前集合 存储数据的数组】 一份副本,然后操作副本,add对象,最后将副本引用赋值给 【当前集合 存储数据的数组】。在此过程中操作的都是副本,所以别的线程修改此集合不会导致线程安全问题。CopyOnWriteArrayList 有几个缺点:1、由于写操作的时候,需要拷贝数组,会消耗内存,...原创 2019-10-31 10:19:11 · 819 阅读 · 0 评论 -
ArrayList面试集锦
1.Arrays.asList误区 String[] arrys = { "one", "two", "three" }; List<String> list = Arrays.asList(arrys); list.add("four");运行上面代码报错原因是Arrays.asList返回的不是真正的ArrayList类...原创 2019-10-30 15:45:44 · 193 阅读 · 0 评论 -
Java读取 写入 大文件 (上亿行数据)
Path 类是jdk7新增加的特性之一,用来代替java.io.File类。 之所以新增这个类,是由于java.io.File类有很多缺陷: 1.java.io.File类里面很多方法失败时没有异常处理,或抛出异常 java.io.File.delete()方法返回一个布尔值指示成功或失败但是没有失败原因 2.Path 速度快,方便。Path 操作1.删除文件 2.遍历目录,不包括子原创 2016-06-17 09:36:46 · 14145 阅读 · 1 评论 -
SoftReference 软引用使用实例
1.今天来教大家使用下java缓存神奇SoftReference类,具体概念见别的博客,我们直接上代码://要缓存的对象public class Obj { /**缓存标识*/ private String id ; /**这里只是举个例子,以便后面实验能看到内存回收的效果*/ private byte[] a = new byte[1024 * 1024*500]原创 2017-01-13 11:28:44 · 3109 阅读 · 0 评论