原创 劍指Offer刷題記錄

做了一場筆試,發現自己的代碼的水平實屬堪憂,用java刷點基礎題,順帶複習一下基本語法吧。隨緣更新,75題預計三週寫完。 題目目錄面試題03. 數組中重複的數字面試題04. 二維數組中的查找面試題05. 替換空格面試題06. 從尾

原创 LeetCode 數據庫刷題

發現LeetCode還能做數據庫的題,最近比較閒,就一起做了。題目還挺難的,中等的基本就不會了,題解大法好。 題目列表175. 組合兩個表175.第二高的薪水177. 第N高的薪水178. 分數排名180. 連續出現的數字181.

原创 CornerNet論文筆記

論文背景及大致思路 a. 一日,在某討論羣,有位小夥伴提問:有哪些不用Anchor的檢測方法呢,小夥伴紛紛回覆”CornerNet“,那麼顯然可知,這篇文章捨棄了Anchor,轉而通過預測兩個頂角的方法”曲線救國“。本文發表在

原创 簡單的併發模型介紹

Future 聯合異步請求和代理模式 客戶端發生請求後,服務端立即返回一個假的代理數據,用戶無需等待,執行其他操作後,再去調用服務器組裝的真實數據。 當用戶請求真實數據時, 會先判斷是否組裝好,如果沒有組裝好會wait,組裝完

原创 LRU的簡單實現

LRU是常用的緩存淘汰策略。緩存的“熱度”可以看作是沒有訪問該緩存的時間,所以會維護一個有序列表,每次訪問緩存時,將訪問的緩存移動到最前面。當超過容量限制後,刪除最久沒有被訪問的。 LRU有一些問題,比如如果某個緩存只是偶爾被訪

原创 MySQL中是如何解決幻讀問題的

讀寫併發 MVCC多版本控制 可以看做是樂觀鎖的一種實現,維護版本號 保證了同一個事務中,數據一致性 每行數據都存在一個版本,每次修改更新時會更新版本 修改時,會拷貝出當前版本號,然後隨意更改,事務之間不干擾 保存時,如果成

原创 使用Redis實現一個簡單的消息隊列

Redis實現消息隊列的缺點 多消費者場景下,如果某個消費者宕機,當他重連上時,宕機期間的消息會全部丟失 Redis中PubSub的消息不會被持久化,所以Redis宕機後所有的消息都會被丟棄。 Redis5.0後新增了Stre

原创 實現一個簡單的漏斗限流

限流:系統能力有限或出現有惡意請求時,需要組織部分請求,防止系統壓力過大造成宕機。也就是在規定時間內一個操作只能執行有限次數,超出就是非法行爲。 簡單限流:通過維護某個時間區間,判斷改時間區間內發生的次數。 漏斗限流:在每次

原创 Redis實現一個簡單的延時隊列

延時隊列 通過redis中的zset我們可以實現一個簡單的延時隊列。通過將score設置爲時間,然後多線程輪訓的去查詢是否有到期的可以執行的任務。 考慮到多線程併發,使用zrem去保證每一個任務只會被執行1次,這裏也可以使用l

原创 Redis中HyperLogLog的一些小知識

HyperLogLog 是Redis的高級數據結構,可以實現統計用戶訪問情況中的UV情況,也就是獨立訪問次數,重複用戶在每天只算一次。 HyperLogLog提供了一種不精確的去重計數方案,標準誤差爲0.81%。 實現原理:

原创 事務的一些小知識

數據庫事務 原子性:組成一個事務的多個數據庫操作爲一個整體,只有全部成功才能提交,只要一個失敗就需要全部回滾撤銷。 一致性:事務成功後,數據庫狀態和他的業務規則要一致。 隔離性:不同事物之間不會互相干擾。但實際中並不會要求完全

原创 Redis實現可重入分佈式鎖

分佈式鎖 通過在redis設置一個特定值,只有成功設置這個值得線程,才被看做拿到了鎖,並能去使用一些資源,使用結束後刪除該值,使得其他線程能去拿到高鎖。由於業務邏輯中可能出現異常,導致刪除操作沒有被執行,引發死鎖,所以一般會給

原创 volatile的一點小知識

volatile是輕量級的synchronized。彙編指令中會加入lock前綴避免指令重排並把寫緩衝區的所有數據刷新到內存中保證可見性,但不保證原子性。 內存屏障:一組處理器指令,實現對內存操作的順序限制。 有volatile

原创 Spring中AOP的實現

參考書籍:精通Spring4.x企業應用開發實戰 何爲AOP 面向切面編程,通過橫向抽取機制爲無法通過縱向體系進行抽象的重複代碼提供解決方法 連接點:Joinpoint,指程序的某個特定位置,Spring僅支持方法的連接點,

原创 LeetCode-46. 全排列

題目地址:https://leetcode-cn.com/problems/permutations/ 思路:dfs AC代碼: class Solution { public: bool used[100005];