原创 手寫LRU

手寫LRU 1.要求 put / get 均是 O(1) 時間複雜度 超出容量自動刪除最老數據 2.用什麼數據結構? 任意查找要求 O(1),必然有哈希 時間需要有序,必然鏈表或者數組 由於刪除需求,也要控制在O(1),數組淘汰 由於單

原创 劍指offer之二叉樹路徑求和

1.題目 二叉樹根節點到葉子節點的節點序列稱爲路徑,如果路徑上所有節點和爲指定的某個數,就打印該路徑 10 / \ 5 12 /\

原创 100億次的挑戰:如何實現一個“有把握”的春晚搖一搖系統

原創 2016-12-04 張文瑞 羊年春晚搖一搖活動已經落下帷幕,現在回過頭來看看這一全民參與的有趣的活動背後,有着怎樣的後臺系統?這個系統又是如何被設計與實現出來的? 在瞭解這個系統之前,先看看羊年春晚有哪些活動形式?春晚搖一

原创 TCP/IP摘要

TCP/IP是互聯網的基礎協議棧,它包括大大小小几十個協議。本篇文章主要涉及到就是HTTP、TCP、IP協議。我們經常學的網絡模型是七層或者五層,實際上一般認爲一共只有四層就可以了。 Application layer

原创 Bloom Filter簡述

1.適用場景 在極大的數據集合中快速查找某個元素是否存在,但是不要求100%正確.這個是文縐縐的說法,說人話: 一個很理想的場景:分佈式緩存 緩存的數據可能很大,QPS也相當的高,比如千萬級,那麼一般這個緩存集羣就會達到近百臺機器的規模.

原创 搬磚漫談

寫在前面:本文不比較誰是最好的語言?僅僅是一個python爲主的碼農的所思所想.以及準備押寶golang. python工作現狀 初級 這個階段很容易,找個活人,看會語法,都能寫python.一般也就是web開發,比如django,

原创 小實驗:Broken pipe和Connection Reset by Peer

網絡開發常遇到Broken pipe和Connection Reset by Peer兩個錯誤,一直沒有深究其差別,只是籠統的知道是對方關閉了socket,做好異常處理就行.這兩天剛好組員問到,猛地發現我竟無力解釋,決定深究深究 1.基本

原创 垃圾回收算法概要

##標記-清除法 問世最早的GC算法,分爲標記和清除2個階段. 標記 從根對象開始遞歸標記所有能訪問到的對象,這些對象就是活動的. 遞歸過程可能是DFS或BFS 清除 從堆首地址開始,遍歷每個對象的標誌位,如果不是活動的,

原创 用戶評分系統設計與實現(風控方向)

用戶評分設計與實現(風控方向) 維度 == 標籤,泛指描述惡意行爲的一類合集,不必糾結文中用詞,看官就當做一回事, 就是你理解的那回事就行。 不區分維度 不管你是IP維度、設備維度、xxx維度,只要能描述惡意傾向就算 不面向維度 不面

原创 關鍵字殺進程

不做運維,linux基礎還真不如運維同學犀利,再次受教了,總結一下 背景 經常多進程部署服務,restart, stop時需要根據關鍵字搜索出這一組進程,殺掉 比如:python dir/tcp_server.py &多次執行起了多個進程

原创 單點登錄原理與簡單實現

SSO並不複雜,開源實現很成熟,一直想寫一篇文章總結,看到此文,決定就它了,轉過來,記錄一下 一、單系統登錄機制 1、http無狀態協議 web應用採用browser/server架構,http作爲通信協議。http是無狀態協議

原创 MySQL大表優化方案

當MySQL單表記錄數過大時,增刪改查性能都會急劇下降,可以參考以下步驟來優化: 單表優化 除非單表數據未來會一直不斷上漲,否則不要一開始就考慮拆分,拆分會帶來邏輯、部署、運維的各種複雜度,一般以整型值爲主的表在千萬級以下,字符串爲

原创 分佈式事務2PC && 3PC

 分佈式 二階段提交(Two-phase Commit)是指,爲了使基於分佈式系統架構下的所有節點在進行事務提交時保持一致性而設計的一種算法(Algorithm)。通常,二階段提交也被稱爲是一種協議(Protocol)… 在

原创 劍指offer之鏈表

1.求鏈表倒數第K個節點 ahead指針先走K-1步,behind指針開始走,ahead走到末尾,此時behind剛好是倒數第K個 2.求鏈表中間節點 ahead指針一次走2步,behind一次走1步,當ahead走到末尾時,be

原创 劍指offer之O(1)刪除單鏈表節點

1.單向鏈表刪除指定節點 常規思路:從頭遍歷到指定節點前一個節點Pre,然後將Pre的next指向指定節點的下一個,刪除指定節點即可。O(n) 將指定節點下一個的內容複製到指定節點,然後刪除其下一個節點。O(1) 2.代碼 v