原创 HashMap結構和原理

1.HashMap的底層結構? HashMap是我們⾮常常⽤的數據結構,由數組和鏈表組合構成的數據結構。 ⼤概如下,數組⾥⾯每個地⽅都存了Key-Value這樣的實例,在Java7叫Entry在Java8中叫Node。 因爲他本

原创 RabbitMQ消息應答模式、事務、公平轉發

1.消息應答模式(手動、自動) 1.1應答模式         爲了確保消息不會丟失,RabbitMQ支持消息應答。消費者發送一個消息應答,告訴RabbitMQ這個消息已經接收並且處理完畢了。RabbitMQ就可以刪除它了。

原创 Redis-cluster原理和實踐

Redis-cluster原理 1.概念原理          Redis 集羣採用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 個 slot(哈希槽),每個 Redis 實例負責其中一部分 sl

原创 redis事務原理和實踐

Redis事務的概念:         Redis 事務的本質是一組命令的集合。事務支持一次執行多個命令,一個事務中所有命令都會被序列化。在事務執行過程,會按照順序串行化執行隊列中的命令,其他客戶端提交的命令請求不會插入到事務執行

原创 lvs+keepalived+nginx雙機主從熱備

1.相關名詞介紹 1.1 LVS是什麼?       lvs是一個開源的軟件,可以實現傳輸層四層負載均衡。LVS是Linux Virtual Server的縮寫,意思是Linux虛擬服務器。 目前有三種IP負載均衡技術(VS/NA

原创 Redis 哈希槽概念

         Redis 集羣中內置了 16384 個哈希槽,當需要在 Redis 集羣中放置一個 key-value時,redis 先對 key 使用 crc16 算法算出一個結果,然後把結果對 16384 求餘數,這樣每個

原创 布隆過濾器的原理和實現(Guava、Redis)

1.布隆過濾器原理 請參考以下兩篇文檔 SpringBoot+Redis布隆過濾器 布隆過濾器 2.Guava布隆過濾器 <dependency> <groupId>com.google.guava</group

原创 ZooKeeper安裝和創建修改刪除節點

1.Zookeeper應用場景## 2.Zookeeper數據結構 3.Zookeeperan安裝 1.上傳zk並且解壓 cd /usr/local/ tar -zxvf zookeeper-3.4.6.tar.gz mv zoo

原创 Elasticsearch+Logstash+Kiabana

1.Logstash環境搭建 1.1Logstash環境安裝 1、上傳logstash安裝包(資料) 2、解壓tar –zxvf logstash-6.4.3.tar.gz 3、在config目錄下放入mayikt02.conf

原创 反轉鏈表(206)

1.雙指針法 1.1 解題思路 1.我們可以申請兩個指針,第一個指針叫 prev,最初是指向 null 的。 2.第二個指針 curr 指向 head,然後不斷遍歷 curr。 3.每次迭代到 curr,都將 curr 的 nex

原创 兩兩交換鏈表節點24

方法一:迭代 我們把鏈表分爲兩部分,即奇數節點爲一部分,偶數節點爲一部分,A 指的是交換節點中的前面的節點,B 指的是要交換節點中的後面的節點。在完成它們的交換,我們還得用 prevNode 記錄 A 的前驅節點。 算法: 1.f

原创 合併兩個有序鏈表21

方法一:遞歸 思路 我們可以如下遞歸地定義兩個鏈表裏的 merge 操作(忽略邊界情況,比如空鏈表等): 也就是說,兩個鏈表頭部值較小的一個節點與剩下元素的 merge 操作結果合併。 算法 我們直接將以上遞歸過程建模,同時需要考

原创 環形鏈表141

方法 1:哈希表 想法 如果我們用一個 Set 保存已經訪問過的節點,我們可以遍歷整個列表並返回第一個出現重複的節點。 class Solution { public boolean hasCycle(ListNode h

原创 移動零283

指針 我們創建兩個指針i和j,第一次遍歷的時候指針j用來記錄當前有多少非0元素。即遍歷的時候每遇到一個非0元素就將其往數組左邊挪,第一次遍歷完後,j指針的下標就指向了最後一個非0元素下標。 第二次遍歷的時候,起始位置就從j開始到結

原创 兩數之和1

方法一:暴力法 暴力法很簡單,遍歷每個元素 xx,並查找是否存在一個值與 target - xtarget−x 相等的目標元素。 class Solution { public int[] twoSum(int[] num