原创 穿了馬甲你就牛逼了:裝飾者模式解析

❝ 本文是設計模式系列的第三篇文章,今天主要學習裝飾者模式。 ❞ 不知道大家沒有有這樣一種感覺,在看書學習時,感覺都看懂了,可是過一段時間就忘,因此我們從開頭就先問自己幾個問題,過一段時間就回過頭了複習下這幾個問題,從而鞏固學到的

原创 暗中等待:觀察者模式解析

設計模式想必大家都懂一些,不僅能體現平時設計寫代碼的基本功,而且也是面試時的高頻考點。今天來講解學習下 觀察者模式。 本文在講解具體模式的同時,也會列舉 jdk 以及 常用框架中使用到的地方,幫助大家加深理解。 設計模式的學習

原创 據說是程序員工作中用到的最多的模式:策略模式解析

這是從零學習設計模式的第一篇文章,也算是入門篇吧。 大家都知道設計模式很重要,掌握設計模式是一個高級開發乃至架構師都必須要具備的技能。 但是不知道有沒有這樣的感覺,每次看設計模式的概念都差不多能看懂,但是就是不會用,而且不能夠識別

原创 volatile關鍵字你不瞭解?趕緊來看看

通過上一篇文章對 JMM 的學習,你一定掌握了,Java 內存模型就是規範了 JVM 如何提供按需禁用緩存和編譯優化的方法。具體來說,這些方法包括 volatile、synchronized 和 final 三個關鍵字,以及六項 Hap

原创 阿里面試,一面就倒在了Java內存模型上

目錄 什麼是Java內存模型 可見性問題 原子性問題 指令重排序帶來的問題 敲黑板 總結 擴展 最近金三銀四跳槽找工作的高峯期,我也湊熱鬧準備出去看看機會,結果就寫了簡歷,一邊投一邊複習準備試雖然還沒開始就結束了,傷心歸傷心,失落就失落

原创 Redis集羣-官方推薦方案RedisCluster

Redis集羣-官方推薦方案RedisCluster 前情提要 理解RedisCluster的原理和容錯機制 能夠配置RedisCluster並使用 redis使用中遇到的瓶頸 我們日常工作中使用Redis,經常會遇到一些問題

原创 Java開發這麼久,這些線程的基礎知識你確定都會了?

熟悉Java開發的同學都知道,Java天生支持多線程編程的。這篇文章我們主要來學習下Java線程的基礎知識,從線程的啓動到不同線程間的通信方式,目的是更系統的掌握Java線程基礎。 本文的講解主要從以下幾個點展開: 什麼是線

原创 happens-before是什麼?JMM最最核心的概念,看完你就懂了

happens-before是JMM最核心的概念。對應Java程序員來說,理解happens-before是理解JMM的關鍵。 我的併發系列文章,前面三篇學習了 Java併發機制底層實現的三個關鍵要素:volatile、synchro

原创 大廠面試:如何用快排思想在O(n)內查找第K大元素?

上一片文章我們學習冒泡排序、插入排序、選擇排序這三種排序算法(點擊文末鏈接查看),它們的時間複雜度都是 O(n2),比較高,適合小規模數據的排序。今天,我們學習時間複雜度爲 O(nlogn) 的排序算法,歸併排序和快速排序。這兩種排序算

原创 面試官:冒泡、插入、選擇這三種常見的排序算法你瞭解?爲什麼插入排序更受歡迎?

排序算法應該是我們每個人剛開始學習時都會接觸的,應該是大部分人學習的第一個算法。常見的排序算法非常多,比如猴子排序、睡眠排序、麪條排序等。這裏我們只學習下最常見、最經典的排序算法。 按照算法的時間複雜度,可以分爲以下三類,我們對着分類

原创 死磕Java併發?首先需要學習的併發機制底層實現的三個原理

開篇 Java併發編程的基底層實現 探究volatile的前世今生 synchnorized的原理與應用 Java對象頭 鎖的升級與對比 偏向鎖 輕量級鎖 原子操作 Java如何實現原子操作 使用循環CAS實現原子操作 使用鎖機制實現

原创 1-計算機網絡和因特網

最近參加了碼農翻身的讀書活動,目標是讀完《計算機網絡 自頂向下方法》 這本書,這篇文章將記錄第一週所看到的本地第一章的相關內容。 學習計算機網絡首先學習下什麼是因特網? 描述這個問題需要從兩個方面論述。 具體構成描述 因特網是一個世

原创 計算機網絡-2-應用層

本週進入到第二章應用層的學習,不得不說自頂向下學習果然能激發興趣,因爲平時開發工作經常也就是和應用層打交道,但是對具體原理總是一知半解,隨着這章的閱讀,能讓自己對我們開發的應用程序,是怎樣利用網絡實現其功能的,有了更深入的瞭解。 我們

原创 死磕Java併發編程(9):無界線程安全隊列ConcurrentLinkedQueue源碼解析

這篇文章理解起來不難,相比於 ConcurrentHashMap 比較簡單,因爲不涉及擴容以及數據遷移等操作,相信你讀完一定會有收穫的。 本文是死磕Java併發編程系列文章的第 9 篇,主角就是 java 併發包中提供的 Conc

原创 死磕Java併發編程(8):CurrentHashMap如何實現高效地線程安全?在Java8中有哪些設計實現的演進?

這篇文章一開始我以爲會比較簡單,但是在深入源碼分析時,遇到了很大的阻礙,比前面我們分析AQS以及讀寫鎖的源碼要難理解的多,斷斷續續也寫了4天了。 如果你看完還是沒有理解的話,那我在這裏表示深深的歉意,同時也歡迎你和我一起溝通。