原创 理解mysql中的MVCC多版本併發控制,某些場景會出現幻讀

目錄 MVCC是爲了實現數據庫的併發控制而設計的一種協議。 幾乎所有的RDBMS都支持MVCC。 針對一條當前讀的SQL語句,InnoDB與MySQL Server的交互,是一條一條進行的,因此,加鎖也是一條一條進行的。 mvcc並沒有完

原创 linux中用戶線程、內核線程、輕量級進程的區別

原文鏈接:http://www.cnitblog.com/tarius.wu/articles/2277.html 內核線程 內核線程就是內核的分身,一個分身可以處理一件特定事情。這在處理異步事件如異步IO時特別有用。內核線程的使用是廉價

原创 進程的用戶態和內核態的概念理解以及切換

原文鏈接:https://www.cnblogs.com/viviwind/archive/2012/09/22/2698450.html 內核態: 當一個任務(進程)執行系統調用而陷入內核代碼中執行時,我們就稱進程處於內核運行態。此時處

原创 理解:事務兩階段提交和三階段提交(2PC、3PC)

目錄 兩階段提交(2PC) 準備階段: 提交階段: 2PC存在的問題: 三階段提交(3PC) CanCommit: PreCommit(如果CanCommit階段中所有參與者都返回“Yes”) DoCommit 3PC存在的問題: 3PC

原创 字符串相乘:2種解題思路

目錄 第一種:實現字符串的乘法算法,乘法算法通過實現字符串的加法完成。 第二種:利用乘法公式,把num1,num2的每個位相乘的結果放到在數組對應的偏移位上,最終數組上的值就是相乘的結果。 第一種思路的代碼實現: 第二種思路的代碼實現:

原创 N皇后問題:通過DFS方式輸出所有的棋子放置方案

https://leetcode-cn.com/problems/n-queens/ N皇后問題是指在N×N格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。 思路 1.如何

原创 AQS: 等待隊列詳解(AbstractQueuedSynchronizer)

目錄 AQS中的等待隊列:是一個雙向鏈表,並使用了“CLH鎖”的思想實現等待隊列一.CLH鎖 二.Node的數據結構:記錄了等待狀態、當前線程、前後節點的引用 三.Node如何入隊 acquire(int arg):獲取資源 acquir

原创 Mysql的Gap鎖(間隙鎖)詳解

間隙鎖實質上是對索引前後的間隙上鎖,不對索引本身上鎖。 根據檢索條件向左尋找最靠近檢索條件的記錄值A,作爲左區間,向右尋找最靠近檢索條件的記錄值B作爲右區間,即鎖定的間隙爲(A,B)。 間隙鎖的目的是爲了防止幻讀,其主要通過兩個方面實現這

原创 程序員算法題規律總結:持續更新

一.數學概念 1.質數 質數是除了1和他本身以外,不能被任何數整除的數。 (1)2、3、5、7、11都屬於質數。 (2)除了2和3以外,所有的質數都在6的倍數左右,即 n%5=1 或 n%5=5。 (3)所有偶數的不是質數,即滿足 n%2

原创 mysql的共享鎖(S)、排他鎖(X)、意向共享鎖(IS)、意向排他鎖(IX)的關係

一.S鎖和X鎖:S鎖和X鎖都屬於行數   兼容性 加鎖方式 S鎖:共享鎖 加了S鎖的記錄,允許其他事務再加S鎖,不允許其他事務再加X鎖 select…lock in share mode X鎖:排他鎖 加了X鎖的記錄,不允許其他事務再加S

原创 leetcode: (12) Integer to Roman 答案

思路: 把 1、4、5、9 這種處理個位的轉換規則作爲同一組規則,因爲無論個位、十分位、百分位他們的組合規則抽象來看都是一致的,只是具體的轉換的值有差異。 抽象出append方法進行處理,由參數進行控制。 可以類比: (1)10、40、5

原创 Mysql鎖詳解(行鎖、表鎖、意向鎖、Gap鎖、插入意向鎖)

目錄 鎖:對 “某種範圍” 的數據上 “某種鎖” 1.“某種範圍”:行、表 2.“某種鎖” 2.1 共享鎖Shared Locks(S鎖) 2.2 排他鎖Exclusive Locks(X鎖) 2.3 表鎖:意向鎖 Intentio

原创 ForkJoinPool學習筆記

這是在部門做技術分享的時候寫的一篇學習筆記,順便貼在這裏給大家看看,歡迎指出錯誤,共同學習 ForkJoin是什麼 ForkJoin是用於並行執行任務的框架, 是一個把大任務分割成若干個小任務,最終彙總每個小任務結果後得到大任務結果的