原创 netty(十)初識Netty-Handler & Pipeline 一、簡介 二、代碼分析

一、簡介 ChannelHandler 用來處理 Channel 上的各種事件,分爲入站、出站兩種。 所有 ChannelHandler 被連成一串,就是 Pipeline。 入站處理器通常是 ChannelInboundHandlerA

原创 netty(八)初識Netty-channel 一、channel

一、channel 1.1 channel的主要方法 1)close() 可以用來關閉 channel 2)closeFuture() 用來處理 channel 的關閉,有如下兩種方式 sync 方法作用是同步等待 channel 關閉

原创 netty(九)初識Netty-Future & Promise 一、簡介 二、擴展了哪些主要能力? 三、使用示例

一、簡介 在netty當中,我們需要進行異步處理的時候,經常會調用以下的兩個方法: Future & Promise 其實在我們使用JDK的時候,就知道有一個Future接口,用於異步時接收任務結果。 在Netty當中,基於JDK當中的

原创 netty(七)初識Netty-EventLoop介紹 一、什麼是Netty? 二、使用Netty的著名組件有哪些? 三、簡單使用 三、主要組件

一、什麼是Netty? Netty is an asynchronous event-driven network application framework for rapid development of maintainable h

原创 netty(六)NIO、BIO與AIO 一、BIO與NIO 二、IO模型 三、零拷貝 四、AIO

一、BIO與NIO 本小節將BIO與NIO放到一起進行分析,主要爲了突出其差別。 1.1 對比stream和channel 以前我們寫代碼,涉及到IO操作,首先想到的必然是一系列的stream,如InputStream等。如今隨着java中

原创 netty(四)nio之網絡編程 一、阻塞與非阻塞 二、多路複用

一、阻塞與非阻塞 1.1 阻塞 1.1.1 阻塞模式會存在哪些問題? 1)在阻塞模式下,以下的方法都會導致線程暫停 ServerSocketChannel.accept 會在沒有連接建立時讓線程暫停 SocketChannel.read

原创 netty(五)nio之UDP 一、UDP簡介 二、示例代碼

一、UDP簡介 UDP是User Datagram Protocol的縮寫。 即使是出現網絡擁堵的情況下,UDP也無法進行流量控制等避免網絡擁塞的行爲。此外,傳輸途中即使出現丟包,UDP也不負責重發。甚至當出現包的到達順序亂掉時也沒有糾正的

原创 netty(三)nio之文件編程 一、FileChannel常用操作 二、channel的相互傳輸 三、Path 和 Paths 類 四、Files類

本篇文章主要討論一下NIO中的文件變成,主要是FileChannel的用法。 一、FileChannel常用操作 1.1 獲取FileChannel 有一個文件text.txt,其內容如下: abcdef 不能直接打開 FileChann

原创 netty(一)nio基礎 一、NIO主要有三大核心

NIO,Non-Block IO ,從 Java 1.4 版本開始引入的非阻塞 IO ,是一種非阻塞 + 同步的通信模式,也是 I/O 多路複用的基礎,基於緩衝區(Buffer)的模式。 一、NIO主要有三大核心 通過下圖簡單展示三大核心

原创 netty(二)nio之ByteBuffer 一、使用案例 二、ByteBuffer代碼分析 三、ByteBuffer與字符串的相互轉換 四、分散讀寫(多個Buffer同時讀取或寫入) 注意

一、使用案例 /** * @description: 測試buffer的讀寫 * @author:weirx * @date:2021/11/2 13:54 * @version:3.0 */ public class test

原创 java8(五)並行流之分支/合併框架 一、RecursiveTask 二、Fork/join的最佳用法 三、工作竊取 四、Spliterator

並行流背後使用的基礎架構是Java 7中引入的分支/合併框架。我們會在本文仔細研究分支/合併框架。 分支/合併框架的目的是以遞歸方式將可以並行的任務拆分成更小的任務,然後將每個子任務的結果合併起來生成整體結果。它是 ExecutorServ

原创 java8(六)用 Optional 取代 null 一、null帶來了哪些問題? 二、Optional 類入門 三、Optional使用

一、null帶來了哪些問題? 1)NullPointerException 是目前Java程序開發中最典型的異常。 2)它會使你的代碼膨脹。它讓你的代碼充斥着深度嵌套的 null 檢查。 3)它自身是毫無意義的。 4)它破壞了Java的哲學

原创 三階段提交(3PC) 一、概念 二、優缺點

3PC是在2PC的基礎上進行改進的,爲了解決協2PC的同步阻塞,協調者單點,等容錯機制缺失問題而提出的。 一、概念 將原本2PC的第二個階段,即提交階段拆分爲兩個部分,形成了由CanCommit、PerCommit和DoCommit三個階段

原创 java8(四)並行流和性能 一、性能測試 二、正確並高效的使用並行流

在前面的章節中,我們簡要地提到了 Stream 接口可以讓你非常方便地處理它的元素:可以通過對收集源調用 parallelStream 方法來把集合轉換爲並行流。並行流就是一個把內容分成多個數據塊,並用不同的線程分別處理每個數據塊的流。這樣

原创 java8(二)lambda表達式手把手學習 一、在哪裏使用lambda? 二、使用函數式接口 三、使用局部變量 四、方法引用 五、實戰

Lambda可以讓你簡單的傳遞一個行爲或者代碼。可以把lambda看作是匿名函數,是沒有聲明名稱的方法,但和匿名類一樣,也可以作爲參數傳遞給一個方法。 可以把Lambda表達式理解爲:簡潔地表示可傳遞的匿名函數的一種方式:它沒有名稱,但它有