
Java
文章平均质量分 83
Java的一些基础
「已注销」
这个作者很懒,什么都没留下…
展开
-
Completablefuture
Future判断任务是否完成就是get()或者idDone()循环不是很好,而Completablefuture可以直接方法回调与链式编程很方便。所以CompletableFuture封装了Future使其能够方法回调。实现了Future 与 CompletionStage这两个接口。实现CompletionStage接口是为了能够流式处理。xxxAsync的是开启另一个线程来执行。实现Future接口是为了能够得到数据。原创 2024-04-03 15:10:24 · 431 阅读 · 0 评论 -
JVM-三色标记法
当被问到垃圾回收算法的时候,大多数人都知道三种回收算法,,但是标记的过程是如何的呢?在并发型标记的时候是怎么对对象图进行遍历的?三色标记法:在三色标记法中存在三种颜色,白色,灰色,黑色。原创 2023-03-25 14:32:37 · 635 阅读 · 0 评论 -
Java集合-ArrayList源码
这里有两个空数组,第一个空数组是容量为0的时候的数组,第二个空数组是使用空参构造器的时候的数组。原创 2023-02-27 20:12:35 · 286 阅读 · 5 评论 -
JVM-垃圾回收器概述
这种垃圾收集器大家了解,现在已经不用串行的了。而且在限定单核cpu才可以用。现在都不是单核的了。对于交互较强的应用而言,这种垃圾收集器是不能接受的。一般在Java web应用程序中是不会采用串行垃圾收集器的。原创 2023-02-25 21:38:45 · 427 阅读 · 0 评论 -
JVM-监控及诊断工具
它集成了多个JDK命令行工具,使用Visual VM可用于显示虚拟机进程及进程的配置和环境信息(jps,jinfo),监视应用程序的CPU、GC、堆、方法区及线程的信息(jstat、jstack)等,甚至代替JConsole。map(JVM Memory Map):作用一方面是获取dump文件(堆转储快照文件,二进制文件),它还可以获取目标Java进程的内存相关信息,包括Java堆各区域的使用情况、堆中对象的统计信息、类加载信息等。线程快照就是当前虚拟机内指定进程的每一条线程正在执行的方法堆栈的集合。原创 2022-12-11 14:21:11 · 3159 阅读 · 37 评论 -
Java基础-多态实现原理
多态是面向对象编程里面的概念,一个接口的多种实现不同的实现方式,即为多态这里的接口不应理解得太死板,比如在 Java 里面,继承一个类和实现一个接口本质上都是一种继承行为,因此都可以理解为多态的体现。从静态和动态的角度进行划分,多态可以分为编译时多态和运行时多态。编译时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的方法,编译之后会变成两个不同的方法。而运行时多态是动态的,是通过动态绑定来实现的,也就是大家通常所说的多态性,本篇博客主要讨论运行时多态。原创 2022-12-09 16:57:46 · 1450 阅读 · 0 评论 -
Java基础-反射的理解与优缺点
反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。原创 2022-12-09 09:47:51 · 734 阅读 · 9 评论 -
Java集合-HashMap1.8也会发生死循环
在网上搜资料时候然后发现网上都说1.7版本的HashMap会发生死链也就是死循环,但是在HashMap中也会产生死循环,接下来直接看代码吧。原创 2022-12-08 20:11:13 · 865 阅读 · 2 评论 -
JUC-ReentrantLock
学习ReentrantLock就不得不知道AQS,因为ReentrantLock就是基于了AQS对象的用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和释放锁getState - 获取 state 状态setState - 设置 state 状态compareAndSetState - cas 机制设置 state 状态独占模式是只有一个线程能够访问资源,而共享模式可以允许多个线程访问资源提供了基于 FIFO 的等待队列,类似于 Monitor 的原创 2022-12-07 14:02:36 · 198 阅读 · 0 评论 -
JUC-park/unpark
在使用park与unpark的时候就在疑惑为什么先调用unpark时后park就不会阻塞,现在就总结一下原理可以看到这个还是比较符合我们正常情况,因为先执行的是park再执行的是unpark那么先执行unpark再执行park呢?你会发现其实也可以,你也会感到疑惑为什么呢?park加锁后没有unpark为啥还是可以执行?与 Object 的 wait/notify 相比wait,notify 和 notifyAll 必须配合 Object Monitor 一起使用,而 park,unpark 不必原创 2022-12-07 10:43:23 · 462 阅读 · 1 评论 -
JUC-BlockingQueue二
接着上篇BlockingQueue没讲完的LinkedTransferQueue是一个由链表结构组成的无界阻塞队列,相对于其它阻塞队列,LinkedBlockingQueue可以算是LinkedBlockingQueue与SynhronoousQueue结合,LinkedtransferQueue是一种无界阻塞队列,底层基于单链表实现,其内部结构分为数据节点、请求节点,基于CAS无锁算法实现与前面类似不再赘述其中节点操作过程类似于SynchronousQueue与SynchronousQueue有区原创 2022-12-04 11:18:04 · 473 阅读 · 3 评论 -
JUC-BlockingQueue
要学习其中的任务队列就需要先学习BlockingQueue,Blocking是一个接口,其中主要的方法为ArrayBlockingQueueArrayBlockingQueue的底层是基于数组实现,当指定容量后数组就确定了不会发生扩容通过上述数据结构可以看出,ArrayBlockingQueue是通过一个循环数组的方式来实现存储元素的,这里takeIndex记录当前可以取元素的索引位置,而putIndex则记录了下一个元素可以放入的位置,如果队列满了则是takeIndex == putIndex,这里原创 2022-12-03 23:43:03 · 568 阅读 · 6 评论 -
JUC-线程池理解与学习
Java线程池的学习原创 2022-12-03 17:04:15 · 536 阅读 · 7 评论 -
Java基础-常见IO五种模型
常见IO五种模型-阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO原创 2022-12-01 21:34:09 · 1039 阅读 · 3 评论 -
JVM-如何判断对象是否该被回收(引用计数法、可达性分析算法)
如何判断对象是否该被回收(引用计数法、可达性分析算法)原创 2022-11-24 15:00:59 · 696 阅读 · 7 评论 -
Java基础-动态代理(JDK与CGLIB)与静态代理
JDK之动态代理(JDK与CGLIB)与静态代理,带你十分钟快速理解JDK与Cglib以及他们之间的区别与联系原创 2022-11-23 12:22:06 · 1133 阅读 · 10 评论 -
JUC-如何选择线程数量
即使有上面的简单估算方法,也许看似合理,但实际上也未必合理,都需要结合系统真实情况(比如是IO密集型或者是CPU密集型或者是纯内存操作)和硬件环境(CPU、内存、硬盘读写速度、网络状况等)来不断尝试达到一个符合实际的合理估算值。原创 2022-11-11 10:45:01 · 988 阅读 · 3 评论 -
JUC-ReentrantLock
ReentrantLock的功能详解与理解AQS、ReentrantLockd概述、加锁流程、可重入原理、可打断原理、公平锁原理、条件变量实现原理原创 2022-11-11 09:08:05 · 851 阅读 · 11 评论 -
Java基础-面试题目分享
常见Java基础面试题目分享二自动拆箱与自动装箱、Java的异常处理机制、面向对象的理解、重载与重写的区别、泛型与泛型擦除、为什么要使用多线程、线程创建方式、线程的生命状态、wati与sleep的区别、怎么保证线程安全原创 2022-11-10 20:29:54 · 412 阅读 · 3 评论 -
JUC-LongAdder的源码学习与理解
LongAdder的源码学习与理解。因为CPU与内存之间速度还是存在较大差距所以现在计算机在内存与CPU之间引入了三级缓存,add方法,longAccumulate方法,advanceProbe原创 2022-11-08 11:21:37 · 509 阅读 · 13 评论