原创 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. 索引不是越多越好:維護索引結構會佔用磁盤空間(每個索引是一個單獨的存儲結構)、影響增刪查改的性能(查:生成執行計劃時要考慮各個索引;可