原创 LeetCode_可以被一步捕獲的棋子數_Array_E

999. 可以被一步捕獲的棋子數 class Solution { public int numRookCaptures(char[][] board) { if (board == null) {

原创 三個線程輪詢數據ABC

import java.util.concurrent.CountDownLatch; import java.util.concurrent.LinkedBlockingDeque; import java.util.concurre

原创 ES介紹

一、ES的簡介    1、ES是一個開源分佈式全文檢索引擎,每個字段均可被索引、被搜索。    2、使用Lucene作爲核心來實現索引和搜索的功能,通過RESTful API提供簡單的操作方式。    3、數據的存儲、檢索效率高;擴展性強

原创 ES的查詢過程、倒排索引

一、ES的搜索過程:   1、query phase 查詢階段:         1.客戶端發送請求,接受到的節點變成coordinate node協調節點;         2.協調節點將搜索請求廣播給:該索引中每個節點的副本分片or主

原创 Redis和ZK實現分佈式鎖

一、Redis實現分佈式鎖     1、使用Redis分佈式鎖的原因:Redis性能好;命令支持比較好,實現方便。     2、實現方式:直接用int setnx寫key,如果成功了,說明獲取鎖成功,否則拿鎖失敗。拿鎖成功之後對key設置

原创 LeetCode_數組的度_Array_E

697. 數組的度 class Solution { public int findShortestSubArray(int[] nums) { if (nums == null || nums.length =

原创 LeetCode_合併兩個有序鏈表_LinkedList_E

21. 合併兩個有序鏈表 pre: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode

原创 redis的數據類型及使用場景

一、Redis的數據結構        存儲的時候key和value都是String,value支持String、hash、list、set、zset等數據結構。 1. String       結構:key-value        

原创 緩存和緩存淘汰算法

一、內存、緩存、寄存器   1. CPU <===> 寄存器 <===> 緩存 <===> 內存        寄存器:cpu中的一部分,cpu直接拿寄存器中的數據,包含:指令寄存器、程序計數器。寄存器從緩存或者內存中獲取數據。    

原创 LeetCode_生命遊戲_Array_M

289. 生命遊戲 class Solution { public void gameOfLife(int[][] board) { List<IndexNum> modifyList = new ArrayList<>();

原创 LeetCode_最接近的三數之和_Array_M

16. 最接近的三數之和 class Solution { public int threeSumClosest(int[] nums, int target) { if (nums.length < 3) {

原创 LeetCode_ThreeSum_Array_M

15. 三數之和   先排序,然後用雙指針即可快速查找。注意數據的去重 class Solution { public List<List<Integer>> threeSum(int[] nums) { Lis

原创 數據庫鎖

一、數據庫層面支持高併發系統   二、數據庫鎖   三、ORM框架     1. Object Relational Mapping 對象關係映射,描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關係數據庫中,數據持久層框架。

原创 B樹和B+樹

一、B樹     1. B樹:平衡多路查找樹(不止二叉),節點中有多個關鍵字,左小右大的順序;     2. 假設是5階樹(M=5),則枝節點的關鍵字數量 >= ceil(M/2)-1 且 <= M-1,即5階樹的關鍵字數量爲2~4;  

原创 Mysql索引的設計原則、數據結構

索引:加速查詢的數據結構 一、索引設計原則     1. 經常查詢的字段,建議創建索引;     2. 索引不是越多越好:維護索引結構會佔用磁盤空間(每個索引是一個單獨的存儲結構)、影響增刪查改的性能(查:生成執行計劃時要考慮各個索引;可