原创 【數據結構】Map (映射)的各種實現

In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a coll

原创 在個人微信上與自搭服務端交互

背景 我有時候想搗鼓個工具用。起初是爲了讓我及時掌握一些信息,想做一個消息推送功能。但是由於功能簡單,不想單獨開發個手機 APP。於是就想着能否直接把消息推送到個人微信上。 面臨的問題 以前有 web 版的個人微信,有些人就基於 web 版

原创 工作的第二和第三年(201807~202005)

原先計劃按畢業日期算起,每個週年寫一篇生活篇和工作篇,但後來工作篇由於各種原因沒有按時寫完發佈,只有生活篇一直保持着。 工作部分的第一篇是 2018 年 7 月寫的《入職一年啦》。 本篇第二篇,是在 2020 年 7 月寫的,內容是 201

原创 紅黑樹代碼實現及註釋

代碼參考了以下兩個鏈接: https://www.programiz.com/dsa/deletion-from-a-red-black-tree https://github.com/openjdk/jdk/blob/master/sr

原创 2-3 樹——學習紅黑樹的捷徑

如果從先易後難的順序介紹各種樹,那麼紅黑樹必然放在 AVL 樹後面。但在紅黑樹之前,還有一種名爲 2-3 樹的平衡樹(Balanced-Tree,B-樹)。2-3 樹理解起來比紅黑樹容易很多,並且在理解它的基礎上增加一個變更,就成了紅黑樹(

原创 平衡二叉樹的 AVL 實現

上一篇【因爲一句話,秒懂二叉樹旋轉】把樹旋轉了解清楚,是爲這一篇平衡二叉樹準備的。 平衡二叉樹,就是在二叉樹的基礎上加上一個條件:對於任意節點,左子樹和右子樹的樹高之差不超過 1。 從實現的角度看,就是在已具備旋轉功能的 Node 上增加一

原创 機械鍵盤轉藍牙鍵盤

背景 我的常用電腦是 surface go 1,基本上隨身攜帶。問題是每次回到房間,都需要通過擴展塢將平板和顯示器以及機械鍵盤連接起來。我嫌這些線太多,就想着能否在不改動機械鍵盤本身的條件下,將其改成藍牙鍵盤。於是就有了去年的 6 篇文章。

原创 因爲一句話,秒懂二叉樹旋轉

事情要從某天晚上買夜宵說起。買了香腸拿着喫,想着多年來一直沒搞懂的樹旋轉是不是應該看看,就點進某百科。 樹旋轉是在二叉樹中的一種子樹調整操作, 每一次旋轉並不影響對該二叉樹進行中序遍歷的結果。 中序遍歷!靈光一閃,好像很多東西都聯繫起來

原创 手動驗證 TLS 證書

證書結構 我們現在使用的 TLS 證書的標準是 X.509,版本號爲 V3。版本號可從證書的 Version 字段看到。 根據 RFC 3280 定義的證書結構,證書由三個部分組成: 證書主體(TBSCertificate,To Be S

原创 InfluxDB 存儲結構、讀、寫

這篇最早是 2021 年 3 月寫的,最近又拿出來複習一遍,也補充了一些新的內容。上一篇博客發表過後已經 3 個月沒有發表新的博客,就把這篇拿出來了。內容沒有完全梳理完畢,算是筆記。先發出來,後續再逐漸完善。 InfluxDB 是開源的

原创 工程思想方法及其在軟件工程分支的教學上的體現

前幾天寫了一篇跟軟工課程相關的博客[1],有一位能夠促成具有建設性對話的同學問了我一個問題: 能展開講講你說的工程思想和方法麼,以及從軟工的哪些環節可以獲得? 這位同學問了一個很好的問題。好在哪裏呢?好在他試圖詳細地瞭解和分析一個抽象的

原创 軟件工程與“足夠好”

今天看了北航軟工課程學生寫的一篇博客[1],剛好可以藉此機會把我這幾年關於軟工的思考整理出來。 我在 2016 年做過福大OO課的助教,以及在 2017 年做過集大的軟工助教。當時我有很多地方都沒有做好,並且這幾年沒怎麼關注軟工課程,與教學

原创 時間類型和時間戳

Unix 時間戳以及日期表示方法 Unix 時間戳表示的是從世界標準時間(UTC,Coordinated Universal Time)的 1970 年 1 月 1 日 0 時 0 分 0 秒開始的偏移量。 全球共有 24 個時區,分爲東西

原创 後端的優化

後端優化分爲三個方向 組件配置調優,偏運維 架構調優,偏架構 代碼層面的調優,偏開發 配置調優 以 Nginx、PHP、MySQL 爲例。 LNMP中web高併發優化配置以及配置詳解 https://phpartisan.cn/ne

原创 高可用的實現(Keepalived + 虛 IP)

爲了避免服務單點,也爲了負載均衡,我們會加一層 Nginx 層。這個 Nginx 層要有多於一臺機器,不然它自身也成爲一個單點。 最初加 Nginx 層會變成這樣: schaepher.com