原创 面經:mysql索引

1. 數據結構 mysql 使用的是(Balance+ Tree,也就是平衡樹)B+樹,在B樹的基礎上做了優化,B+ Tree 是基於 B Tree 和葉子節點順序訪問指針進行實現,它具有 B Tree 的平衡性,並且通過順序

原创 面試:線程池常見面試問題

1.什麼是線程池? 優點有哪些? 顧名思義,由多個線程組成的池,線程池使用的是池化的思想,類似的還有連接池,資源池等. 使用線程池有以下幾個優點: 1.1 方便對線程統一管理,不會出現’野線程’,並且統一提供一些管理的方法,管理線

原创 使用註解實現AOP功能

最近做項目,需要使用註解綁定一個切面去實現一個需求,講真的本人菜鳥,可能之前就沒有寫多少切面,更不要說用註解的形式去實現了,現學現賣,希望寫點東西,隨着理解的深入可能我會修改這篇博客。閒話少說,首先是些註解的編寫: 一.註解(A

原创 分佈式CAP漫談

1.CAP 在經典的CAP理論中: C: 一致性 A: 高可用 P: 容錯性 在目前這個微服務中,註冊中心選擇中ZK和Eureka比較常見的, zookeeper在設計之初是爲了解決各個服務之間的數據(狀態)都保持一致,所以使用z

原创 GC淺談

GC對一個java開發人員來說是個比較重要的東西,雖然在我們開發的過程中我們很少主動的調用它,但是它確實是我們開發中必不可少的部分.傳說中的守護線程GC. 之前面試看過一些關於GC的面試題,感覺自己對GC的理解深入了一點,想寫一些

原创 使用MultiValueMap巧妙解決拼字符串問題

MultiValueMap可以讓一個key對應多個value,這是Spring框架提供的Map類,這裏可以很好的解決一些不好處理的字符串問題,不多說看代碼: MultiValueMap<String, String> st

原创 SpringBoot的自動加載配置的原理和過程

springboot提倡: 約定大於配置 springboot最常見的面試題: 1.springboot是如何實現自動加載配置呢? 2.如何寫一個starter呢? 帶着問題,我們以mybatis-spring-boot-star

原创 zookeeper漫談

1.zk是如何保證一致性的 一致性協議有很多種,比如Paxos,Raft,2PC,3PC等等,zk主要使用的是ZAB. Zookeeper Atomic Broadcast(Zookeeper 原子廣播協議). 它是爲分佈式協調服

原创 參數效驗@Valid

最近在看spring boot的文檔(http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/),裏面提到了使用@Valid 參數驗證,這

原创 初體驗redis

第一次使用redis: redis不用說了現在最火的NoSQL數據庫,昨天開源中國上發了一篇文章專門介紹datasource的排行榜,除了Oracle和mysql等傳統的關係型數據庫以外,NoSQL數據庫也有上榜,阿里的Mongo

原创 關於Comparable解決List,依據bean的某個屬性對list進行排序

之前在開發的過程中遇到調用Dao,返回一個list集合,需要對list進行排序,排序的標準假如是bean.creatTime(),在從數據庫中查詢的時候,可以再sql語句中加一個 order by creat_time , 但

原创 算法筆記

最近在閱讀關於算法書,想把算法在過一遍,畢竟自己不是科班出身,網上有人說我們java攻城獅不懂算法一樣可以寫代碼,我個人的觀點是你要想當碼農,是可以不需要懂底層算法,要是你想研究底層,看底層源碼實現,算法是必須要懂的,沒見過那個真

原创 面試題:手寫LRU緩存

題目:手寫實現一個LRU緩存,支持get() put() 思路 1.可以使用最基礎的單向鏈表處理 2.使用雙向鏈表,可以加入hash表做優化 3.最簡單的實現是使用JDK中自帶的LinkedHashMap,需要重寫removeEl

原创 面試算法篇-鏈表

1.如何在一次遞歸後找到單鏈表的中間元素 思路 使用兩個指針,一個一次走一步,一個一次走兩步,一次走兩步的走完時,另一個剛好走到中間. public ListNode findMid(ListNode head){

原创 面試算法篇-數組

0.各種基礎排序(快排*,歸併*,選擇,希爾等) 1.給定一個 1-100 的整數數組,請找到其中缺少的數字。 思路1: 只缺少一個數,其不重複的情況下可以求和,已知1-100的和是5050,對應的數組求和sum,用5050-su