原创 Java8新特性學習(一)- 開篇介紹

背景 隨着工作的深入,用到的知識是越來越多,代碼中用到Java8的特性也越來越多,如果只是知道幾個簡單的用法而不從本質上去知道其背景、實現原理,理解代碼是一件相對困難的事情。基於此,接下來將相對系統的去學習Java8的一些新特性,也算

原创 Guava Cache expireAfterWrite 與 refreshAfterWrite區別

前面的文章緩存篇(一)- Guava有講到Guava Cache有區別於ConcurrentHashMap的使用,就是因爲其自帶有自動刷新和自動失效的功能,避免我們去自己編寫刷新和失效的後臺線程程序。Guava Cache提供了簡單便

原创 使用MySQL唯一索引需要注意的問題

背景 在程序設計中了,我們往往需要確保數據的唯一性,比如在常見的註冊模塊,我們需要確保一個手機號只能註冊爲一個賬號。這種情況下,我們的程序往往是第一道關卡,用戶來註冊之前,首先判斷這個手機號是否已經註冊,如果已經註冊則返回錯誤信息。但

原创 排序算法總結(含動圖演示和Java代碼實現)

本文將圍繞冒泡排序、桶排序、計數排序、堆排序、插入排序、並歸排序、快速排序和選擇排序,按照描述、時間複雜度(最壞情況)、動態圖展示和代碼實現來講解。本文默認排序爲從小到大。 本文相關代碼已上傳至github,歡迎關注https://g

原创 HashMap的算法解析及高併發下死循環分析

HashMap是一個以空間換時間,內部以數組+鏈表\紅黑樹實現的散列表。HashMap的具體原理我們不做深入仔細分析,這類文章網上較多,且HashMap在面試中命中率極高。本文以jdk1.8爲例,只分析裏面我認爲值得拿出來分析的有關數

原创 MySQL基本原理和使用技巧

本文是我在大半年前在前公司做團隊分享時的一個文檔,寫得比較挫,當時分享講了2個小時,自己感覺講得還可以。最近前同事跑來問我還有沒有文檔保存,翻了舊電腦和硬盤才找出來,於是就想着分享一下。 一、MySQL整體結構 服務器層(負責客

原创 緩存篇(四)- Memcache

 緩存篇(四)- Memcache

原创 緩存篇(三)- Spring Cache框架

前兩篇我們講了Guava和JetCache,他們都是緩存的具體實現,今天給大家分析一下Spring框架本身對這些緩存具體實現的支持和融合,使用Spring Cache將大大的減少我們的Spring項目中緩存使用的複雜度,提高代碼可讀性。

原创 緩存篇(二)- JetCache

  JetCache

原创 Mysql explain-type使用詳解

下面是測試用例,樓主的測試使用的MySQL版本是5.6.27-log。show  create table user_man;CREATE TABLE `user_man` (  `manid` bigint(20) NOT NULL A

原创 ConcurrentSkipListMap高併發原理探究和源碼分析

TreeMap、ConcurrentSkipListMap的關係TreeMap是支持key有序排列的一個key-value數據結構,不過是在單線程情況下使用,併發下不是線程安全的。ConcurrentSkipListMap是基於跳錶的實現

原创 Ocean設計思路和架構設計

最近看了楊傳輝的《大規模分佈式存儲系統:原理解析與架構實戰》,裏面講了分佈式文件系統的經典設計案例和oceanbase的整體設計,看完之後,對於分佈式系統的理解有了一個新的層次。單機系統首先將一下我們接觸比較多的單機系統。對於一些業務很小

原创 Dubbo Filter原理和使用場景

Dubbo Filter是爲了開發者在未全局方法調用時統一添加額外參數時使用到的。 主要場景有: 1、傳遞線程上下文信息 2、方法上的共同參數統一傳遞,避免每次方法調用時去設置 比如:一個web應用有會話

原创 解決亞馬遜調用頻率限制問題的sdk框架

先給急着用的人:項目地址:https://github.com/zhuzhenke/invoke-limit-api針對調用亞馬遜AWS服務,對於亞馬遜針對每個接口有不同的頻率調用限制,設計了這個對調用者可以同步和異步調用的sdk框架,把

原创 從Socket編程看HTTP服務器設計

從常用的telnet命令,瞭解Socket的設計和用途。我們會經常使用telnet來測試一個ip上某個端口是否能夠連得通,這裏中間其實就是利用socket連接返回數據。這裏我們在linux服務器上輸入telnet taobao.com 8