原创 各種消息中間件對比

NSQ和RabbitMQ都可以寫本地磁盤保證的消息不會因爲突然的宕機而丟失 NSQ天生具有很好的擴展性 Kafka是嚴格保證了消息隊列的順序,就是一個Topic下面的一個分區內只能給一個消費者消費,對於一個分區來說,Kafka是不支持併發

原创 玩轉Docker基礎知識

Docker是一個開源的應用容器引擎,基於Go語言並遵從Apache2.0協議開源。Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的Linux機器上,也可以實現虛擬化。容器是完全使用沙箱機

原创 程序員必備的操作系統知識

操作系統的四個特性 1. 併發 併發是指宏觀上在一段時間內能同時運行多個程序,而並行則指同一時刻能運行多個指令。 並行需要硬件支持,如多流水線、多核處理器或者分佈式計算系統。 操作系統通過引入進程和線程,使得程序能夠併發運行。 2. 共享

原创 我理解的HTTPS原理

密鑰:密鑰是一種參數,它是在明文轉換爲密文或將密文轉換爲明文的算法中輸入的參數。密鑰分爲對稱密鑰與非對稱密鑰,分別應用在對稱加密和非對稱加密上 HTTPS協議 = HTTP協議 + SSL/TLS協議,在HTTPS數據傳輸的過程中,需要用

原创 網絡基礎知識

五層協議 應用層 :爲特定應用程序提供數據傳輸服務,例如 HTTP、DNS 等協議。數據單位爲報文。 傳輸層 :爲進程提供通用數據傳輸服務。由於應用層協議很多,定義通用的傳輸層協議就可以支持不斷增多的應用層協議。運輸層包括兩種協議

原创 Dubbo基礎知識

Dubbo的Container詳解模塊,是一個獨立的容器,因爲服務通常不需要Tomcat/JBoss等Web容器的特性,沒必要用Web容器去加載服務。 服務容器只是一個簡單的Main方法,並加載一個簡單的Spring容器,用於暴露服務 D

原创 WebSocket學習總結

WebSocket是HTML5出的東西(協議),Websocket 其實是一個新協議,跟HTTP協議基本沒有關係,只是爲了兼容現有瀏覽器的握手規範而已,也就是說它是HTTP協議上的一種補充 WebSocket 解決了 HTTP 的這幾個難

原创 HashMap詳解

HashMap爲何數組的長度是2的n次方 1.這個方法非常巧妙, 它通過 h & (table.length -1) 來得到該對象的保存位, 而HashMap 底層數組的長度總是 2 的 n 次方, 2n-1 得到的二進制數的每個位上的值

原创 簡易的RPC框架實現

GitHub地址:https://github.com/zmdlbr/netty-rpc 簡單的說明一下技術原理:   1、定義RPC請求消息、應答消息結構,裏面要包括RPC的接口定義模塊、包括遠程調用的類名、方法名稱、參數結構、參數值等

原创 SSH基本環境搭建

搭建過程: 1.加入 Spring 1). 加入 jar 包 2). 配置 web.xml 文件 3). 加入 Spring 的配置文件. 2.加入 Hibernate 1). 同時建立持久化類, 和其對應的 .hbm.xml 文件, 生

原创 RabbitMQ學習總結

RabbitMQ 使用參考 我爲什麼要選擇RabbitMQ ,RabbitMQ簡介,各種MQ選型對比 乾貨:這也許是最全面透徹的一篇RabbitMQ指南!

原创 Netty學習總結

Netty和Tomcat有什麼區別? Netty和Tomcat最大的區別就在於通信協議,Tomcat是基於Http協議的,他的實質是一個基於http協議的web容器,但是Netty不一樣,他能通過編程自定義各種協議,因爲netty能夠通過

原创 SSM基礎環境搭建

搭建過程: 1、創建一個maven工程 2、引入項目依賴的jar包 spring springmvc mybatis 數據庫連接池,驅動包 其他(jstl,servlet-api,junit)  3、引入bootstrap前端框架 4

原创 Spring的單例模式底層實現

克服兩種單例模式(懶漢式和餓漢式)不能被繼承的缺點,我們可以使用另外一種特殊化的單例模式,它被稱爲單例註冊表 package spring; import java.util.HashMap; public class Single

原创 一個完整的HTTP請求過程

一個完整的HTTP請求過程 整個流程 域名解析 —> 與服務器建立連接 —> 發起HTTP請求 —> 服務器響應HTTP請求,瀏覽器得到html代碼 —> 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css、圖片) —>