- 网络数据的基本单位永远是 byte(字节)。Java NIO 提供 ByteBuffer 作为字节的容器,但该类过于复杂,有点难用。 ByteBuf是Netty当中的最重要的工具类,它与JDK的ByteBuffer原理基本上相同,也分为堆内与堆外俩种类型,但是ByteBuf做了极大的优化,具有更简单的API,更多的工具方法和优秀的内存池设计。 1 API Nett... 网络数据的基本单位永远是 byte(字节)。Java NIO 提供 ByteBuffer 作为字节的容器,但该类过于复杂,有点难用。 ByteBuf是Netty当中的最重要的工具类,它与JDK的ByteBuffer原理基本上相同,也分为堆内与堆外俩种类型,但是ByteBuf做了极大的优化,具有更简单的API,更多的工具方法和优秀的内存池设计。 1 API Nett...
- 1 锁的对象和范围 缩小粒度 2 锁的对象本身大小 减少空间占用 Atomic long V.S long 前者是个对象,包含对象头(object header)以保存hashcode、lock 等信息,64 位系统下占16字节,64位系统下:volatile long= 8 bytesAtomicLong = 8 bytes (volatile long)... 1 锁的对象和范围 缩小粒度 2 锁的对象本身大小 减少空间占用 Atomic long V.S long 前者是个对象,包含对象头(object header)以保存hashcode、lock 等信息,64 位系统下占16字节,64位系统下:volatile long= 8 bytesAtomicLong = 8 bytes (volatile long)...
- 网络编程为避免频繁的在用户空间与内核空间拷贝数据,通常会直接从内核空间中申请内存,存放数据,在Java中,把内核空间的内存称之为直接内存,nio包中的ByteBuffer的allocateDirect方法,就是申请直接内存 DirectByteBuffer对象是ByteBuffer的子类,对于直接内存的分配,就是在这个类中实现的。 java中 直接内存的申请与释放... 网络编程为避免频繁的在用户空间与内核空间拷贝数据,通常会直接从内核空间中申请内存,存放数据,在Java中,把内核空间的内存称之为直接内存,nio包中的ByteBuffer的allocateDirect方法,就是申请直接内存 DirectByteBuffer对象是ByteBuffer的子类,对于直接内存的分配,就是在这个类中实现的。 java中 直接内存的申请与释放...
- 全是干货的技术号: 本文已收录在github,欢迎 star/fork: https://github.com/Wasabi1234/Java-Interview-Tutorial 1 简介 作者 Trustin Lee,这次真的是韩国大佬发明的了! 在 2008 年提交第一个commit至今,转眼间已经走过了十二年。 Netty 是封装了 J... 全是干货的技术号: 本文已收录在github,欢迎 star/fork: https://github.com/Wasabi1234/Java-Interview-Tutorial 1 简介 作者 Trustin Lee,这次真的是韩国大佬发明的了! 在 2008 年提交第一个commit至今,转眼间已经走过了十二年。 Netty 是封装了 J...
- 0 前言 与 ArrayList 一样实现了 List 接口,只是 LinkedList 底层结构为链表.在插入和删除时更优于 ArrayList,而随机访问则比 ArrayList 稍逊. 其允许元素包括 null.除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将... 0 前言 与 ArrayList 一样实现了 List 接口,只是 LinkedList 底层结构为链表.在插入和删除时更优于 ArrayList,而随机访问则比 ArrayList 稍逊. 其允许元素包括 null.除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将...
- 专栏系列文章 第二篇:原子类的说明与使用第三篇: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位的。  ...
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签