- 专栏系列文章 第二篇:原子类的说明与使用第三篇:Lock的学习与使用第四篇:走近CopyOnWriteArrayList第五篇:HashMap的源码分析第六篇:走近ConcurrentHashMap(JDK1.8)第七篇:ConcurrentHashMap(JDK1.8)扩容的详细介绍以及多线程测试第八篇:链表的学习:链表的头插法和尾插法第九篇:队列的学习,用数组和链... 专栏系列文章 第二篇:原子类的说明与使用第三篇:Lock的学习与使用第四篇:走近CopyOnWriteArrayList第五篇:HashMap的源码分析第六篇:走近ConcurrentHashMap(JDK1.8)第七篇:ConcurrentHashMap(JDK1.8)扩容的详细介绍以及多线程测试第八篇:链表的学习:链表的头插法和尾插法第九篇:队列的学习,用数组和链...
- CopyOnWriteArrayList简介 熟悉Java开发的童鞋都知道ArrayList是线程不安全的,在多线程的环境下可能会发生fast-fail机制,抛出ConcurrentModificationException异常,虽然也有并发容器Vector,或者采用Collections的synchronizedCollection方法将ArrayList包装成线程... CopyOnWriteArrayList简介 熟悉Java开发的童鞋都知道ArrayList是线程不安全的,在多线程的环境下可能会发生fast-fail机制,抛出ConcurrentModificationException异常,虽然也有并发容器Vector,或者采用Collections的synchronizedCollection方法将ArrayList包装成线程...
- 前言 上一篇我们手写了一个阻塞队列,今天我们接着开始学习之旅,让我们一起来看看ArrayBlockingQueue的源码吧。ArrayBlockingQueue是JDK中提供的工业级的通过数组实现的阻塞队列。 初始ArrayBlockingQueue ArrayBlockingQueue的类图 如上类图,ArrayBlockingQueue类继承了Abstr... 前言 上一篇我们手写了一个阻塞队列,今天我们接着开始学习之旅,让我们一起来看看ArrayBlockingQueue的源码吧。ArrayBlockingQueue是JDK中提供的工业级的通过数组实现的阻塞队列。 初始ArrayBlockingQueue ArrayBlockingQueue的类图 如上类图,ArrayBlockingQueue类继承了Abstr...
- 前言 上一篇我们介绍了JVM07-虚拟机故障处理命令行工具。这一篇将继续介绍虚拟机故障处理之可视化故障处理工具JConsole工具。这个工具我们可以在JDK的bin目录下找到。 JConsole的介绍 JConsole是一款基于JMX(Java Management Extensions)的可视化监视、管理工具。它主要是通过JMX的MBean对系统进行信息收集和参... 前言 上一篇我们介绍了JVM07-虚拟机故障处理命令行工具。这一篇将继续介绍虚拟机故障处理之可视化故障处理工具JConsole工具。这个工具我们可以在JDK的bin目录下找到。 JConsole的介绍 JConsole是一款基于JMX(Java Management Extensions)的可视化监视、管理工具。它主要是通过JMX的MBean对系统进行信息收集和参...
- 定义 Optional是一个容器,它可以保存类型T的值,或者仅仅保存null,Optional类主要是用来避免空指针异常(NPE),其提供的一系列的方法配合Lambda表达式可以让代码更加清晰,语义化,以及避免了空指针异常的问题,这里要注意是避免空指针异常,而不是避免返回null。 Optional方法的使用 empty 方法返回一个不包含值的Optional实例... 定义 Optional是一个容器,它可以保存类型T的值,或者仅仅保存null,Optional类主要是用来避免空指针异常(NPE),其提供的一系列的方法配合Lambda表达式可以让代码更加清晰,语义化,以及避免了空指针异常的问题,这里要注意是避免空指针异常,而不是避免返回null。 Optional方法的使用 empty 方法返回一个不包含值的Optional实例...
- LinkedBlockingDeque的定义 LinkedBlockingDeque是一个通过链表实现的双端阻塞队列,如果不指定大小时,则默认的大小是Integer.MAX_VALUE,实现原理与LinedBlockingQueue类似。都是通过ReentrantLock+Condition+链表。 使用LinkedBlockingDeque 有哪些风险呢 在未来... LinkedBlockingDeque的定义 LinkedBlockingDeque是一个通过链表实现的双端阻塞队列,如果不指定大小时,则默认的大小是Integer.MAX_VALUE,实现原理与LinedBlockingQueue类似。都是通过ReentrantLock+Condition+链表。 使用LinkedBlockingDeque 有哪些风险呢 在未来...
- 文章目录 前言 ConcurrentHashMap是啥时候进行扩容的? 第一处 helpTransfer方法 第二处treeifyBin方法 第三处addCount方法 transfer方法 参考 前言 前面对ConcurrentHashMap做了个一个整体的介绍,但是还有些疑问没问解决? ConcurrentH... 文章目录 前言 ConcurrentHashMap是啥时候进行扩容的? 第一处 helpTransfer方法 第二处treeifyBin方法 第三处addCount方法 transfer方法 参考 前言 前面对ConcurrentHashMap做了个一个整体的介绍,但是还有些疑问没问解决? ConcurrentH...
- 概述 今天接着学习设计模式,今天要学习的模式是代理模式。代理模式的应用场景有很多,例如:生活中的代购,明星的经纪人。 定义与结构 代理模式(Proxy)是一种设计模式,为其他对象提供一种代理以控制对这个对象的访问。 在软件开发中有个原则:就是开-闭原则,对新增开放,对修改关闭。尽量不要去修改已经写好的代码。如果需要可以增加一个代理类,来扩展目标代码。 实例 假... 概述 今天接着学习设计模式,今天要学习的模式是代理模式。代理模式的应用场景有很多,例如:生活中的代购,明星的经纪人。 定义与结构 代理模式(Proxy)是一种设计模式,为其他对象提供一种代理以控制对这个对象的访问。 在软件开发中有个原则:就是开-闭原则,对新增开放,对修改关闭。尽量不要去修改已经写好的代码。如果需要可以增加一个代理类,来扩展目标代码。 实例 假...
- ConcurrentLinkedQueue的定义 ConcurrentLinkedQueue是 非阻塞的单端队列,其是一个通过链表实现的并发安全的队列。是java中并发环境下性能最好的队列,它是使用非阻塞算法(CAS)来实现线程安全的。它采用先进先出的规则对节点进行排序,当我们添加一个元素时,它会添加到队列的尾部;当我们获取一个元素时,它会返回队列头部的元素。 Co... ConcurrentLinkedQueue的定义 ConcurrentLinkedQueue是 非阻塞的单端队列,其是一个通过链表实现的并发安全的队列。是java中并发环境下性能最好的队列,它是使用非阻塞算法(CAS)来实现线程安全的。它采用先进先出的规则对节点进行排序,当我们添加一个元素时,它会添加到队列的尾部;当我们获取一个元素时,它会返回队列头部的元素。 Co...
- 步骤一、下载安装包 a. 因为Java JDK区分32位和64位,所以安装之前需先判断一下我们操作系统为多少位·,命令如下: uname -a 解释:如果有x86_64就是64位的,没有就是32位的。后面是x686或x86_64则内核是64位的,i686或i386则内核是32位的。  ... 步骤一、下载安装包 a. 因为Java JDK区分32位和64位,所以安装之前需先判断一下我们操作系统为多少位·,命令如下: uname -a 解释:如果有x86_64就是64位的,没有就是32位的。后面是x686或x86_64则内核是64位的,i686或i386则内核是32位的。  ...
- 今天我们接着来学习HashMap的源码,HashMap的数据结构与ConcurrentHashMap的数据结构相同,所以学好HashMap对后面学习ConcurrentHashMap很有帮助。 文章目录 环境 基本的全局常量 HashMap的数据结构(基于JDK1.8) HashMap的散列函数 散列冲突的处理 HasMap的扩容机制 put 方... 今天我们接着来学习HashMap的源码,HashMap的数据结构与ConcurrentHashMap的数据结构相同,所以学好HashMap对后面学习ConcurrentHashMap很有帮助。 文章目录 环境 基本的全局常量 HashMap的数据结构(基于JDK1.8) HashMap的散列函数 散列冲突的处理 HasMap的扩容机制 put 方...
- 文章目录 前言 环境 源码分析 ConcurrentHashMap定义的三个原子操作 初始化initTable方法 sizeCtl 控制符标识 ForwardingNode 扩容方法tryPresize和transfer put方法 说明: put方法流程图 helpTransfer方法 treeifyBin方法 get方法 总结... 文章目录 前言 环境 源码分析 ConcurrentHashMap定义的三个原子操作 初始化initTable方法 sizeCtl 控制符标识 ForwardingNode 扩容方法tryPresize和transfer put方法 说明: put方法流程图 helpTransfer方法 treeifyBin方法 get方法 总结...
- 文章目录 2.3.3 CGLIB动态代理 2.3.3 CGLIB动态代理 前面介绍了JDK的动态代理,从一些实例也可以看到,JDK动态代理是依赖于实现的接口的。而CGLIB弥补了这个缺点,让我们在不需要实现接口的情况下,也可以实现动态代理。JDK动态代理和CGLIB动态代理在Spring实现AOP中都是使用到的技术,Spring AO... 文章目录 2.3.3 CGLIB动态代理 2.3.3 CGLIB动态代理 前面介绍了JDK的动态代理,从一些实例也可以看到,JDK动态代理是依赖于实现的接口的。而CGLIB弥补了这个缺点,让我们在不需要实现接口的情况下,也可以实现动态代理。JDK动态代理和CGLIB动态代理在Spring实现AOP中都是使用到的技术,Spring AO...
- 文章目录 2.3.2 JDK动态代理 实现类和接口 演示 演示结果 代理类优化 2.3.2 JDK动态代理 JDK动态代理是由Java内部使用反射机制来实现的。使用JDK动态代理必须是委托类实现统一的接口,否则JDK动态代理不能应用。虽然有一定的局限性,但是影响不大。java.lang.reflect包中的Proxy类... 文章目录 2.3.2 JDK动态代理 实现类和接口 演示 演示结果 代理类优化 2.3.2 JDK动态代理 JDK动态代理是由Java内部使用反射机制来实现的。使用JDK动态代理必须是委托类实现统一的接口,否则JDK动态代理不能应用。虽然有一定的局限性,但是影响不大。java.lang.reflect包中的Proxy类...
- 目录 JDK动态代理代码实现 JDK动态代理 JDK动态代理使用Proxy类里面的newProxyInstance方法创建代理对象。 Modifier and TypeMethod and Descriptionstatic ObjectnewProxyInstance(ClassLoader loader, 类<?>[] interfac... 目录 JDK动态代理代码实现 JDK动态代理 JDK动态代理使用Proxy类里面的newProxyInstance方法创建代理对象。 Modifier and TypeMethod and Descriptionstatic ObjectnewProxyInstance(ClassLoader loader, 类<?>[] interfac...
上滑加载中
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签