原创 Java - 之 白話 講 線程池原理

目錄   什麼是線程池 使用線程池的優勢 簡單使用 ThreadpoolExecutor Java中提供的可創建的線程池的種類 線程池的原理 關於拒絕策略 線程池相關注意事項 如何合理配置線程池的大小 相關細節 1.線程池初始化 2.線程

原创 深入理解NIO三大核心

NIO三大核心 在NIO中有三個核心對象 緩衝區(Buffer) 選擇器(Selector) 通道(channel) 什麼是緩衝區Buffer? 緩衝區實際上是一個容器對象,本質上是一個數組 在NIO庫中,幾乎所有的數據都是

原创 Java - JUC -常用的併發工具類

Condition Condition是JUC裏面多線程協調通信的工具類,可以讓一些線程一起等待條件即(Condition)。只有當滿足條件時,線程纔會被喚醒。 類似於 wait/notify 。在Condition中也有類似的實現。

原创 Java-進階之問題記錄

1.Java什麼時候用重載,什麼時候用重寫? 重載是多樣性,重寫是增強劑。            Java中的重載overload最重要且最常用的應用場景是構造器的重載,構造器重載後,提供多種參數形式的構造器,可以應對不同的業務需求,加強

原创 通過手寫簡易版RPC框架理解其原理

什麼是RPC框架? RPC:remote procedure call 即:遠程過程調用 在分佈式架構中離不開服務之間的通信 爲了提高服務之間通信的性能:產生了如Dubbo、webservice、Thrift等RPC框架 簡易

原创 Java-關於多線程可見性的一些問題

1.請列出Happens-before的幾種規則 1.單線程happen-before原則:在同一個線程中,書寫在前面的操作happen-before後面的操作。 2.鎖的happen-before原則:同一個鎖的unlock操作happ

原创 Netty(一)之初識Netty

什麼是Netty? 在學習Netty之前,首先要明白Netty是什麼? 是什麼?不如去搞清楚它是用來幹嘛的 幹嘛的?來了,Netty是用來提高通信性能的一個開源的基於java的通信框架 想要提高分佈式系統下各個服務器之前的通信性

原创 Netty(四)—客戶端流程

Netty客戶端 建立一次通信,必然有着兩個對象。發送者和接收者 如我們使用微信、qq進行聊天的時候,就是一個通信的過程 當我們使用java NIO實現簡單的通信功能時,也必然存在着發送端(Client)和接收端(Se

原创 Java 同步工具AQS:AbstractQueuedSynchronizer

1AQS是什麼 java.util.concurrent包中,LOCK用到了一個同步隊列AQS - AbstractQueuedSynchronizer 1.1AQS的功能 獨佔和共享,即 排他鎖/非排他鎖 共享:允許多個線程同時獲取鎖

原创 Netty(二)—從Java NIO到Netty

從一段代碼開始說起 Java NIO實現 public class demo{ public void socket() { // 使用 socket 提供的 ServerSocketChannel

原创 透徹理解JavaIO

記-更加深刻理解Java IO Java IO讀寫原理 在Java層面的應用開發離不開輸入流 Input 和 輸出流 Output 的處理,簡稱爲IO讀寫 用戶程序在進行IO讀寫操作的時候,離不開 read&write 的調用

原创 Netty(五)—服務端小記

Netty服務端 Netty客戶端程序員啓動需要使用 Bootstrap 對象 和客戶端不同,服務端使用 ServerBootStrap 對象來啓動 Server代碼實現 通過和客戶端代碼實現對比,可以發現 服務端設置了兩

原创 http/https-協議的深入學習

http通信協議的基本原理 在遠程通信場景中http協議是一種應用廣泛的應用層協議 http請求的通信流程 DNS服務 Domain Name System DNS服務是和HTTP協議一樣位於應用層的協議 提供 域名、IP

原创 遠程通信協議淺學習

從一個http請求說起 當我們訪問一個網址,例如 www.xxxx.com 的時候。它首先會被DNS解析,由DNS返回給客戶端真實IP地址 什麼是DNS服務? DNS-Domain Name System,和http協議相

原创 Java - 深入探究ConcurrentHashMap(二)

基於jdk1.8 ConcurrentHash擴容-數據遷移階段 擴容階段源碼註釋版本 // 對目標節點位置加鎖,開始處理數據 synchronized (f) { // 雙重校驗 if (tabAt(ta