- 博客(17)
- 收藏
- 关注
原创 基于JDK1.8多线程常用解决方式-Semaphore (计数信号器)
Semaphore 是 Java 中用于控制对共享资源的访问的同步工具之一。它维护了一定数量的许可,线程在访问共享资源之前必须先获得许可。如果许可数不为零,则线程将获得许可,并将许可数减一;如果许可数为零,则线程将阻塞,直到有其他线程释放许可。Semaphore 可以用于控制同时访问某个特定资源的线程数量。
2024-01-09 15:39:25
973
1
原创 基于JDK1.8多线程常用解决方式-CountDownLatch(倒计数器)
CountDownLatch 是 Java 多线程并发包 (java.util.concurrent 包) 中的一种同步工具,用于协调多个线程之间的执行。它的主要作用是允许一个或多个线程等待其他线程完成操作。
2024-01-08 17:29:08
3312
1
原创 基于JDK1.8多线程常用解决方式-CyclicBarrier(循环栅栏)
CyclicBarrier 是 Java 中 java.util.concurrent 包提供的一个同步辅助工具,用于在多个线程之间形成一个屏障点(barrier point),所有线程必须等待彼此达到这个屏障点,然后才能继续执行。
2024-01-08 16:03:15
1171
1
原创 java多线程方法整理
在 Java 中,多线程编程是一项重要的技能,尤其是在处理并发任务、提高程序性能和响应性方面。以下是关于 Java 多线程模型和常用方法的介绍:
2024-01-08 10:22:59
1383
1
原创 学习Netty(十)------高级功能和扩展
Netty 提供了便捷的 API 和处理器来支持 WebSocket 和 SSL/TLS 协议,使得开发者能够轻松地在 Netty 应用中应用这些协议。
2024-01-04 09:58:43
1154
1
原创 学习Netty(九)------代码实现
这段代码提供了一个使用Netty框架创建服务器端和客户端的示例。Netty是一个高性能的异步事件驱动的网络应用框架,用于快速开发可维护的高负载网络应用程序。
2024-01-03 17:28:36
988
1
原创 学习Netty(八)------性能优化和底层实现细节
实现零拷贝是 Netty 中的一个重要特性,通过使用零拷贝技术,Netty 提高了数据传输的效率。以下是 Netty 如何实现零拷贝的详细介绍,结合代码进行阐述。
2024-01-03 14:49:46
1246
1
原创 学习Netty(七)------Selector 和事件模型
在 Netty 中,Selector 是实现多路复用的关键组件之一。它提供了一种高效的 I/O 处理方式,允许一个单独的线程管理多个通道,实现并发的处理大量连接。本文将深入探讨 Netty 中 Selector 的设计原理和使用方法,并结合代码进行详细介绍。
2024-01-03 09:39:39
1435
1
原创 学习Netty(六)------编解码器的实现
在 Netty 中,编解码器(Codec)是一种重要的组件,负责处理将消息在字节和对象之间进行相互转换的任务。这一过程是网络通信中必不可少的,因为在数据通过网络传输的过程中,需要将高级别的数据结构(对象)转换为底层的字节流,以便在网络上传输。编解码器的作用主要体现在两个方面:编码和解码。
2024-01-02 16:33:08
1192
1
原创 学习Netty(五)------ByteBuf 的设计和使用
ByteBuf 是 Netty 中用于处理字节数据的缓冲区类。与传统的字节数组(byte array)相比,ByteBuf 提供了更为灵活、高效的 API,并且在处理大量数据时具有更好的性能。
2024-01-02 15:50:16
1056
1
原创 学习Netty(四)------ChannelPipeline 和 ChannelHandler
ChannelPipeline和ChannelHandler是Netty框架中非常重要的组件,它们通过处理器链路和生命周期方法提供了强大的事件处理和业务逻辑解耦的机制。深入了解这些组件的设计和使用,有助于充分发挥Netty框架的优势,构建高性能、可维护的网络应用。
2023-12-28 16:41:51
1122
1
原创 学习Netty(三)------Channel 和 EventLoop
本章详细介绍了 Channel 的生命周期以及 EventLoop 的任务调度机制。了解 Channel 的创建、注册、活跃和关闭过程,以及 EventLoop 中任务队列和执行机制,有助于理解 Netty 在异步事件处理方面的设计和实现。深入了解这些概念将为后续章节的内容打下基础。
2023-12-28 15:42:47
1241
1
原创 学习Netty(二)------Netty 启动过程与初始化
具体的初始化过程在 NioEventLoop 的构造函数中,涉及到线程的创建、SelectorProvider 的选择以及任务队列的初始化。在这一步,通过 channel 方法指定使用 NIO 传输,childHandler 方法设置一个 ChannelInitializer,用于初始化新连接的 ChannelPipeline。在示例中,客户端和服务端分别在异常处理中关闭连接。在这个示例中,我们通过 ChannelPipeline 添加了一个业务逻辑处理器,该处理器会处理从客户端接收到的数据。
2023-12-26 17:22:02
1227
1
原创 学习Netty(一)------Netty 架构概览
Channel 负责数据的传输,EventLoop 管理事件的处理,而 ChannelPipeline 定义了数据的处理流程。它们共同构成了 Netty 强大而灵活的网络编程框架,使得开发者能够更专注于业务逻辑的实现,而无需过多关注底层的网络通信细节。
2023-12-25 11:48:26
1305
1
原创 学习netty-通俗易懂版本
Netty是一个功能强大、灵活且高性能的网络应用框架,适用于构建各种网络通信的应用程序。其优雅的设计和丰富的功能使得它成为Java开发者在网络编程领域的重要工具之一。
2023-12-22 10:02:00
987
原创 浅析JAVA虚拟机JVM
垃圾回收时,JVM首先要找到所有的GC Roots,这个过程称作 「枚举根节点」 ,这个过程是需要暂停用户线程的,即触发STW。然后再从GC Roots这些根节点向下搜寻,可达的对象就保留,不可达的对象就回收。GC Roots就是对象,而且是JVM确定当前绝对不能被回收的对象(如方法区中类静态属性引用的对象 )。只有找到这种对象,后面的搜寻过程才有意义,不能被回收的对象所依赖的其他对象肯定也不能回收嘛。
2023-07-17 19:29:04
914
1
原创 HashMap之tableSizeFor简单解析
tableSizeFor简单解析一、源码及提前知识了解二、举例理解源码1.出入值为16时1.1第一次对其进行的位运算1.2 第二次对其进行位运算1.3 第三次对其进行位运算1.4 返回结果2.出入值为17时2.1第一次对其进行的位运算2.2第二次对其进行的位运算2.3第三次对其进行的位运算2.4 返回结果三 、总结如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的
2022-03-26 12:29:13
1514
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人