自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Java 8 新特性 Predicate接口

```Predicate```是```java.util.function```包下的函数式接口,通过先声明一个类型为```Predicate```的规则,然后调用```test(T t)```方法来判断对象T是否匹配规,如果匹配则返回```true```否则```false```。

2023-08-07 20:06:52 168

原创 JVM OOP-Klass源码分析

Hotspot采用OOP-Klass模型来描述一个Java对象,OOP是ordinary object pointer(普通对象指针),它用来表示对象的实例信息;Klass用来表示类的元数据。

2023-07-22 00:09:02 70

原创 G1 Rset源码分析

```Rset```用来记录跨对象间跨```Region```的引用,当虚拟机进行垃圾回收时,通过扫描```Rset```来判断被回收的对象是否被其他```Region```内的对象引用。

2023-07-17 18:48:52 128 1

原创 Java class文件格式

本文的主要内容是了解Java类、方法、成员变量在class文件中的存储方式,以及class文件中的常量池内容。Java字节码的格式是严格限定的

2023-06-07 18:43:58 148

原创 JNI例子和JNI参数说明

Java语言是一种跨平台语言,JVM虚拟机封装了Java与底层硬件的交互逻辑,只要平台安装了JDK,那么Java 代码编译成class文件后就可以在不同平台运行。Java的跨平台的优点也造就了一些缺点,比如Java想要使用汇编语言提高关键代码的性能;再比如Java想要调用操作系统特有的功能。Java的跨语言调用通过JNI(Java Native Interface)来完成。

2023-05-23 20:33:33 165 1

原创 CyclicBarrier源码分析

```CyclicBarrier```按照字面意思是环绕栅栏,它的作用的让所有的线程集合到一起,然后一起执行。它与```CountDownLatch```的区别是:```CountDownLatch```是一个线程等待其他线程完成后它才进入运行状态;```CyclicBarrier```是线程之间的相互等待,只有所有的线程都到达栅栏后再一起执行

2023-05-18 02:20:45 47 1

原创 CountDownLatch源码分析

CountDownLatch有内部类Sync,Sync继承AQS,并使用AQS的state记录主线程需要等待多少副线程,当副线程执行完任务后,调用countDown方法修改state的值,直到state的为0时主线程被唤醒

2023-05-17 22:04:53 53

原创 Java Condition源码分析

Condition是一个配合独占锁ReentrantLock实现类似Object 的wait和notify功能的等待队列。Object的wait、notify方法需要在synchronized代码块中执行,同样Condition的await、signal需在lock获取独占锁成功之后调用。与notify只能唤醒锁对象上所有的阻塞线程相比,Condition可以唤醒指定的阻塞线程,更加灵活。

2023-05-17 21:09:36 123 1

原创 ReentrantLock 源码分析

ReentrantLock是一个可重入独占锁。可重入的意思是同一个线程可以对同一个共享资源进行重复的加锁和释放锁;独占锁就是任何时刻只允许一个线程占有锁。ReentrantLock有公平和非公平两种策略,均以内部类的方式来实现

2023-05-11 23:36:07 60

原创 ReentrantLock例子

ReentrantLock 公平锁的简单使用例子。

2023-05-11 21:59:25 86

原创 AbstractQueuedSynchronizer源码分析

AQS提供了一套加锁、释放锁的流程模版,首先调用tryAcquire尝试获取锁,如果获取锁失败,那么线程会被封装成Node节点,添加到AQS等待队列等待它的前置线程唤醒。当线程执行完任务后,会调用tryRelease释放锁,最后通过next找到后置节点唤醒它

2023-05-11 21:14:19 90 1

原创 Java AQS模型

Java AQS (AbstractQueuedSynchronizer)是Java并发包中的一个抽象类,它使用一个volatile变量state来表示同步的状态(锁是否占用),每次只能一个线程占用这个状态资源进行操作,同时通过一个同步等待队列来管理没有获取到同步状态的线程。

2023-05-10 19:49:00 85 1

转载 红黑树深入解析和Java实现

红黑树是平衡二叉查找树的一种。为了深入理解红黑树,我们需要从二叉查找树开始讲起。BST二叉查找树(Binary Search Tree,简称BST)是一棵二叉树,它的左子节点的值比父节点的值要小,右节点的值要比父节点的值大。它的高度决定了它的查找效率。在理想的情况下,二叉查找树增删查改的时间复杂度为O(logN)(其中N为节点数),最坏的情况下为O(N)。当它的高度为logN+1时,我们就说二叉查...

2018-03-09 18:07:45 191

原创 关于Redis遇到的问题

1、初始化连接池报异常:Connection refused: connect 参考方案:注释掉配置文件中的:bind 127.0.0.1。参考链接:https://www.oschina.net/question/579073_1130042、注释掉绑定本地链接后,接着又报:Unable to validate objectredis.clients.jedis.excep...

2018-03-06 15:28:33 1086

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除