原创 github上roadmap項目學習後臺開發推薦

https://github.com/kamranahmedse/developer-roadmap

原创 redis深入學習筆記(一) --- String

redis的五種數據類型string、list、hash、set、zset用起來很好用,用法也很簡單,但是對底層的具體原理並沒有瞭解過,不懂底層的程序員不是一個好程序員,所以我打算以博客的形式做成筆記來學習redis的底層和進階知識。 一

原创 java找到指定接口的實現類

一、背景 想在自己開發的項目上加一個算法工具類用來整合不同的算法,並且要求低耦合符合開閉原則,於是想到了《大話設計模式》裏的策略模式,但是書中的策略模式還沒有達到完全符合開閉原則,同時我在文章結尾看見說可以運用反射機制來大幅降低代碼的耦合

原创 通過反射機制實現一個完美的策略模式

一、前言 最近打算在自己的項目中加上一個加密算法工具類,用來調用不同的加密算法,並且希望能夠符合開閉原則,本來打算用《大話設計模式》中講解的策略模式,但是對書中的實例不太滿意,但是書中介紹了想要實現一個更好的策略模式需要用到java的反射

原创 Git分支命名規範

分支 命名 說明 主分支 master 主分支,所有提供給用戶使用的正式版本,都在這個主分支上發佈 開發主分支  dev 開發分支,永遠是功能最新最全的分支 功能分支 feature-* 新功能分支,某個功能點正在開發階段 發佈版本 re

原创 rabbitMq實戰指南筆記---第二章 理解消息通信

1.RabbitMq的消息是如何到達隊列的?    當你想要將消息投遞到隊列時,你通過把消息發送給交換器來完成。然後,根據確定的規則,RabbitMQ將會決定消息該投遞到哪個隊列。這些規則被稱作路由鍵(routing key)。隊列通過路

原创 HashMap多線程操作不安全

JDK1.8之前HashMap在多線程操作的時候會造成環形結構,導致死循環。具體成環原因和怎麼成環,參考這篇寫得很好的博客:爲什麼HashMap線程不安全 JDK1.8開始,HashMap由鏈表的頭插法改變成了尾插法,因此不再會造成死循環

原创 枚舉根節點流程

stop the world:垃圾回收器在進行GC時會停止其他用戶線程,避免在進行垃圾回收時再產生垃圾。 安全點:用戶線程並不是刻意隨時停下來的,而是在特定的位置停下來,即安全點。 安全區域(safe Region):部分用戶線程處於阻

原创 代理模式

本文總結摘自劉偉老師的《設計模式》和程傑老師的《大話設計模式》 1.定義 代理模式:給某一個對象提供一個代理,並由代理對象控制對原對象的訪問引用。代理模式英文叫做Proxy或Surrogate,它是一種對象結構模型。 2.爲什麼需要代

原创 動態代理

本文總結摘自劉偉老師的《設計模式》和程傑老師的《大話設計模式》 在看本文動態代理前建議看前一篇代理模式的講解。 動態代理 動態代理是一種較爲高級的代理模式,它的典型應用就是Spring AOP。 在傳統的代理模式中,客戶端通過Prox

原创 啥是單點登陸?淘寶和天貓是如何實現同時登陸的?

一、什麼是單點登錄? 單點登錄的英文名叫做:Single Sign On(簡稱SSO)。 在初學/以前的時候,一般我們就單系統,所有的功能都在同一個系統上。   所有的功能都在同一個系統上 後來,我們爲了合理利用資源和降低耦合性,於是把

原创 適配器模式

本文總結摘自劉偉老師的《設計模式》和程傑老師的《大話設計模式》 1.定義 適配器模式定義:將一個接口轉化成客戶希望的另一個接口,適配器模式使原本由於接口不兼容而不能一起工作的那些類可以一起工作。 2.爲什麼需要適配器模式 通常情況下,

原创 有關並行的兩個重要定律

本文摘自 葛一鳴 老師的《實戰java高併發程序設計》一書。因爲覺得寫得好就摘下來了 將串行程序改造成併發程序,一般來說可以提高程序的整體性能,但是究竟能提升多少,甚至說究竟是否真的可以提高,還是一個需要研究的問題。目前,主要有兩個定

原创 橋接模式

本文總結摘自劉偉老師的《設計模式》和程傑老師的《大話設計模式》 1.定義 橋接模式:將抽象部分與它的實現部分分離,使它們都可以獨立地變化。(橋接模式用關聯關係來降低類與類之間的耦合)。 另一種定義理解:實現系統可能有多角度分類,每一種

原创 爲什麼map不繼承collection接口

1.首先Map提供的是鍵值對映射(即Key和value的映射),而collection提供的是一組數據(並不是鍵值對映射)。如果map繼承了collection接口,那麼所有實現了map接口的類到底是用map的鍵值對映射數據還是用coll