原创 RestTemplate工作原理及攔截器的使用
RestTemplate的使用 new RestTemplate().getForObject("http://www.baidu.com", String.class); 源碼分析 getForObject()方法源碼: @
原创 easy-http
1.克隆項目 1.1 項目地址 https://gitee.com/xiaoyudeguang/easy-start develop分支 1.2 項目結構 1.3 pom文件 <project xmlns="http://maven.
原创 easy-pio
1. 前言 最近,處於工作的需要,老是需要跟excel打交道。找遍了各大論壇,沒有找到一個趁手的工具,於是決定自己手寫一個。和之前的easy-系列一樣,開源出來供大家使用。 2. Maven引入 <depende
原创 探索單元測試系列(1) Junit的簡單使用
定義 這是百度百科對Junit的定義: 實操 1. 編寫被測試類 package com.example.demo.junit; /** * Junit演示 * * @ClassName JunitDemo * @Auth
原创 阻塞隊列BlockQueue
先上BlockQueue的源碼: public interface BlockingQueue<E> extends Queue<E> { //增加一個元索 如果隊列已滿,則拋出一個IIIegaISlabEepeplian異
原创 HashMap源碼閱讀(JDK1.8)
HashMap實現了Map接口,繼承了AbstractMap父類(AbstractMap也實現類Map接口)。HashMap的類聲明如下: public class HashMap<K,V> extends AbstractMap<K
原创 lock接口的lock()和tryLock()區別
正文開始前先把lock接口的源碼擺出來(精簡後的,特意保留了部分註釋) public interface Lock { /** * Acquires the lock. */ void lock()
原创 手寫服務器系列(3) TCP服務端識別HTPP請求
問題:http請求到了服務器端變成了什麼? 我們啓動以下我們的服務端程序,然後通過瀏覽器請求一下我們的服務器。 package com.zlyx.easy.server; import java.io.BufferedReade
原创 探索單元測試系列(4) Mock對象的各種寫法
1. 通過Mockito.mock()來創建假對象 package com.example.demo.mock.controller; import com.example.demo.junit.spring.service.Juni
原创 深入WriteLock和ReadLock
接着上一篇JDK lock鎖,這次我們來挖一挖lock鎖的底層。 首先,我們來看看WriteLock的實現 public static class WriteLock implements Lock, java.io.Seria
原创 探索單元測試系列(3) Mockito的簡單使用
定義 mock是在測試過程中,對於一些不容易構造/獲取的對象,創建一個mock對象來模擬對象的行爲。 意義 傳統的單元測試需要保證程序的每一個部分都是就緒的,完整的和可用的。直到程序的各個部分被完全開發完才能進入測試階
原创 公平鎖(FairSync)和非公平鎖(NonfairSync)
接着上一篇深入WriteLock和ReadLock,我們這篇博客將要揭開公平鎖(FairSync)和非公平鎖(NonfairSync)的神祕面紗。 公平鎖(FairSync)源碼: /** * Fair versio
原创 ConcurrentHashMap源碼閱讀
面試時面試官最常問的幾個問題: 1. HashMap是線程安全的嗎? 答:不是。 2. 既然HashMap不是線程安全的,那有什麼替代方案? (1)用HashTable,它是線程安全的,但是被棄用了(性能問題被棄用了)。
原创 算法和數據結構(二):算法
接着上篇博客,這篇博客我們一起看看傳說中的算法(早知道這麼簡單,早點看看的話,阿里也就去了,淚奔....)。 面試常見的算法分爲兩種:排序算法和查找算法。 1.排序算法 面試題目:給定任意的一個無序數組,用 你熟悉的算法做一個排序(建議自
原创 深入理解Redis原理
Redis簡述 Redis是一種內存型的非關係型數據庫,因爲其優秀的性能,經常被用來做緩存(當然也可以作爲一種消息隊列)。Redis支持豐富的數據類型:String、List、Set、ZSet和Hash。爲了節省內存,Redis的