原创 Java虛擬機學習筆記之jvm內存模型

java虛擬機在執行java程序的過程中會把它所管理的內存劃分爲若干個不同的數據區域。這些區域各自有各自的用途,以及創建銷燬的時間,有的區域隨着虛擬機進程的啓動存在,有些區域則依賴用戶線程的啓動和結束而建立和銷燬。   JVM最重要的特性

原创 Mysql 查詢優化之 Using filesort

最近在優化分頁查詢的時候,遇到了一個問題,如下(基於Mysql Innodb) 我們先建一個user表,其中有自增主鍵、user_id 也建立索引,create_date暫時不建索引,省略其他字段。 CREATE TABLE `u

原创 多線程與併發-ThreadLocal

什麼是ThreadLocal? ThreadLocal 並不是一個線程,而是保存線程本地化對象的容器。當運行於多線程環境的某個對象使用ThreadLocal維護變量時,ThreadLocal提供了get與set等訪問接口或方法,爲每個使用

原创 Netty學習筆記四—Netty架構

Netty邏輯架構圖 Reactor 通信調度層 它由一系列輔助類組成,包括 Reactor 線程NioEventLoop 以及其父類、NioSocketChannel/NioServerSocketChannel 以及其父類、Byte

原创 Netty學習筆記一—Netty基礎

Netty 是一個基於NIO的客戶、服務器端編程框架, 提供異步的、事件驅動的網絡應用程序框架和工具,用以快速開發高性能、高可靠性的網絡服務器和客戶端程序。   粘包/拆包問題的解決 TCP是一個流的協議,一個完成的包可能會被TCP拆分成

原创 Nety學習筆記三—Netty線程模型

Reactor單線程模型   Reactor單線程模型,是指所有的I/O操作都在同一個NIO線程上面完成。職責如下: 作爲NIO服務端,接收客戶端的TCP連接; 作爲NIO客戶端,像服務端發起TCP連接; 讀取通信對端的請求或

原创 Netty學習筆記二—服務端/客戶端創建

服務端創建 netty服務端創建時序圖: 關鍵步驟: 一、創建ServerBootstrap實例。此爲Netty啓動輔助類 二、設置並綁定Reactor線程池。 Netty的Reactor線程池是EventLoopGroup,它實際就是

原创 I/O模型學習筆記

TCP客戶同時處理兩個輸入:標準輸入和TCP套接口。它不能單純阻塞在這兩個源中某個特定源的輸入,而是應該阻塞在其中任何一個源的輸入上。這正是select和poll這兩個函數的目的之一。 客戶阻塞於標準輸入調用期間,服務器進程被殺死。服務器

原创 TCP學習筆記

TCP:傳輸控制協議。是一種面向連接的協議,提供可靠的雙全工的字節流,TCP套接口是流套接口的一種,關心確認、超時和重傳等具體細節。 TCP提供客戶和服務器連接,跨該連接與服務器交互數據。提供可靠的雙全工的字節流,TCP必須跟蹤每個方向數

原创 ReentrantLock 源碼簡單分析

JAVA中鎖的實現最常見的方式有兩種,一種是 synchronized關鍵字,一種是Lock。實際的開發過程中,要對這兩種方式進行取捨。  synchronized是基於JVM層面實現的, Lock卻是基於JDK實現的。 synchron

原创 CAP理論和BASE及ACID的關係

上一篇文章說了,CAP理論,是指在一個互相連接且共享數據的分佈式系統中,當涉及讀寫操作時,只能保證一致性(Consistence)、可用性(Availability)、分區容錯性(Partition tolerance)三者中的兩個,三者

原创 CAP理論,淺談我的理解

想必大多數的IT從業者,都聽過CAP理論,但是聽過和理解並熟練應用又是兩碼事,筆者也看了幾篇文章,就想在這片裏淺談一下我的理解。 CAP理論,是指在一個互相連接且共享數據的分佈式系統中,當涉及讀寫操作時,只能保證一致性(Consisten