原创 golang hystrix 熔斷器

golang hystrix 熔斷器 熔斷器是爲了保護被調方健康的一種方式。通過錯誤率,超時,併發等機制來使第三方處於一個健康且提供性能最佳的方式。hystrix 是比較通用的熔斷器庫。以下爲介紹該熔斷器源碼以及處理思想。 核

原创 snowflaker 問題

snowflaker 問題 之前由於使用了tiDB,需要實現一個snow flaker 算法。找了一下輪子沒找到。看着也簡單,於是自己寫了一個。然後發現了有問題。 python RLock python 的RLockRLock

原创 CPU核數

CPU 核心數 最近在項目上使用併發方式去讀取文件並且計算分析以提升效率。使用的是python 語言。在查看日誌之後下了一跳。我預想着測試環境depoly文件是配置雙核CPU。應該也是2纔對,結果和不一樣。 python 獲取

原创 snow flake

snow flake 分佈式系統需要有一個方法去分配一個唯一的ID。如mysql 分表之後,如果各個表使用的都是自增ID 那麼不同表之間的ID 就會重複,對於其他業務可能會認爲是同一條數據,或者造成別的問題。所以需要一個分配ID

原创 string rune byte 理解

string rune byte 理解 golang 字符串類型是常用的處理字符串的類型。但是如果是判斷len,以及使用處理單個字符的時候就需要使用 rune 或者byte 進行處理。 string 底層存儲 數據結構 typ

原创 golang項目代碼路徑生成

golang項目代碼路徑生成 golang 存在非常多的interface 類型而又沒有辦法直觀的看到代碼。這裏可以使用 go-callvis 工具生成代碼函數調用情況。 下載安裝 下載安裝 go-callvis go get

原创 PDF 文字識別

PDF 文字識別 在實際工作生活中有時候需要參看pdf 文件寫ppt 等文件。但是如果此時PDF 是圖片格式那就沒有辦法去複製粘貼,這個時候需要把PDF 轉爲word 文檔,或者把字copy 出來。OCR 技術就可以解決這個問題

原创 tiDB小結

tiDB 小結 字段無法更新問題 tidb 存在精度只能升不能下降的問題。並且對於decimal 等類型精度甚至不允許修改。爲了打破這個限制可以採取曲線救國的方式實現。 分爲三部曲: 創建一個目標類型字段_new, 的形式。

原创 合併mysql 請求

合併mysql 請求 這個需求是在多表合併當成單表的時候存在非常多的請求。在合併前是各個表的壓力。合併後就變成了單個表的壓力。相當於是qps 的累加。如果在應用測緩存了請求,進行合併,那麼tiDB 端的壓力就會小特別多。 設計

原创 golang 本地緩存

本地緩存 針對使用非常頻繁的表,如某些配置表,往往查詢非常頻繁並且是表非常小。這個時候可以採取緩存到內存中,定時的去reload 數據,刷新緩存。 核心結構體 type LoadDataFunc func(ctx contex

原创 地址查詢優化

地址查詢優化 地址服務是比較常見的服務,一般國家地址分了3~4個層級,省,市,區,鎮。一般的查詢如名稱,等級都比較好查詢。但是如果是以下場景可能會出現問題。 查詢一個省下的所有級別地址往往可能需要查詢3次DB,一次查詢一個級

原创 mysql tiDB limit offset

mysql tiDB limit offset limit offset 常使用於分頁, 前端展示不下這麼多東西會傳一個 limit, offset. 或者是page, page_size 參數。後端查詢之後就需要做分頁。以前一

原创 mysql update_time

mysql update_time 在 mysql中有一個DB 是 information_schema。顧名思義就是一些schema 的信息,表的結構,字段,佔用大小等等信息都在其中。今天使用到的是其中的table表。 in

原创 知識回顧

知識回顧 基礎架構 服務端分爲兩大層: server 層 存儲引擎層 server層 層提供 連接器,分析器,優化器,執行器。 連接器 客戶端和連接器層進行裏連接,最好不要使用-p 後面帶密碼,可能會泄漏密碼。一般是長連接,

原创 桶令牌限流器

桶令牌限流器 限流是高併發的保護法寶之一。可以這麼理解,限流就是在自身能力下儘可能的提供服務。那麼限流有哪些算法呢?相關 計數器算法 漏桶算法 桶令牌算法 計數器算法就是在固定的時間內只通過固定的請求。 沒有緩衝的餘地,對