原创 JVM之雙親委派模型

什麼是雙親委派模型? Java虛擬機對class文件採用的按需加載的方式,也就是說當需要使用該類的時候纔會將它的class文件加載到內存當中,將加載此class文件時,它首先把這個任務委託給他的上級類加載器,如果上級的類加載器沒有

原创 Redis之消息訂閱

消息訂閱介紹 進程間的消息通信模式,發送者(pub)發送消息,訂閱者(sub)接收消息,如下圖所示: 命令演示 publish發佈消息: 127.0.0.1:6379> publish c1 hello (integer) 0

原创 Netty剖析之Netty核心組件介紹

Bootstrap、ServerBootstrap Bootstrap意爲引導,一個 Netty 應用通常由一個 Bootstrap 開始,主要作用是配置整個Netty程序,串聯各個組件,Netty中Bootstrap類是客戶端程

原创 Netty剖析之IO

什麼是IO? 所謂IO即input和output的縮寫,是對數據流入和流出的抽象概念 IO簡單的理解就是用什麼樣的通道進行數據的發送和接收,很大程度上決定了程序通信的性能; Java總共支持三種網絡編程IO模型:BIO(同步阻塞

原创 Netty剖析之零拷貝

什麼是零拷貝? 零拷貝是網絡編程的關鍵,很多性能優化都離不開; 零拷貝,是從操作系統的角度來說的。因爲內核緩衝區之間,沒有數據是重複的(只有 kernel buffer 有一份數據); 零拷貝不僅僅帶來更少的數據複製,還能帶來其

原创 Redis之安裝詳解

Windows安裝: 下載地址:https://github.com/dmajkic/redis/downloads 下載到的Redis支持32bit和64bit。根據自己實際情況選擇,將64bit的內容cp到自定義盤符安裝目錄取

原创 Netty剖析之Netty羣聊系統

前言 在前面我們講解了Netty的基本使用,本次我們將使用Netty來完成一個羣聊系統,實現服務器端和客戶端之間的數據簡單通訊; 羣聊系統基本要求: 服務器端可監測客戶端上線、離線、並轉發客戶端消息; 客戶端可羣發消息給其它用戶

原创 Redis之基礎知識講解

單進程 Redis是單進程的 單進程模型來處理客戶端的請求。對讀寫等事件的響應 是通過對epoll函數的包裝來做到的。Redis的實際處理速度完全依靠主進程的執行效率; epoll是Linux內核爲處理大批量文件描述符而作了改進的

原创 Redis之NoSQL介紹

NoSQL是什麼? NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”, 泛指非關係型的數據庫。隨着互聯網web2.0網站的興起,傳統的關係數據庫在應付web2.0網站,特別是超大規模和高併發的SNS

原创 Redis之事務

官方介紹 簡而言之就是可以一次執行多個命令,本質是一組命令的集合,一個事務中的所有命令都會序列化,按順序的串行化執行而不會被其它命令插入,不允許加塞; Redis事務的作用 一個隊列中,一次性,順序性、排他性的執行一系列命令; 常

原创 Redis之配置文件解析

Redis配置文件位置 在Redis文件夾的根目錄,如下圖所示: 配置文件解析 units單位 配置大小單位,開頭定義了一些基本的度量單位,只支持bytes,不支持bit 對大小寫不敏感 includes(包含) 和spri

原创 面向對象原則之開閉原則

開閉原則 基本介紹 開閉原則(Open-Closed Principle, OCP),是面向對象的可複用設計的第一塊基石,它是最重要的面向對象設計原則,是由Bertrand Meyer於1988年提出,意爲一個軟件實體應當對擴展開

原创 Netty剖析之Http服務案例

前言 前面我們講了Netty的線程模型,還有一些Netty的特性,以及使用Netty編寫過一個Tcp服務案例,本次呢,我們將結合前面所學的知識,來編寫一個Http服務案例 Http服務案例 需求:使用Netty編寫一個Http服務

原创 Netty剖析之NIO

什麼是NIO? NIO(non blocking IO),是JDK提供的新API。從JDK1.4開始,Java提供了一系列改進的輸入/輸出的新特性,被統稱爲 NIO(即 New IO),是同步非阻塞IO; NIO相關類都被放在 j

原创 Netty剖析之NIO羣聊系統

前言 在前面我們詳細講解了BIO、NIO,本次我們將使用NIO來完成一個羣聊系統,實現服務器端和客戶端之間的數據簡單通訊(非阻塞); 羣聊系統基本要求: 服務器端可監測客戶端上線、離線、並轉發客戶端消息; 客戶端可羣發消息給其它