我对 epoll、I/O 多路复用、与高并发编程的理解
欢迎回到 Aloe。笔者近期有兴趣来细致地梳理有关于 epoll 的原理、 应用的相关的知识点。笔者会结合 UKVEngine 的应用,尽可能贴合实际来为各位读者介绍。 前言:为什么要理解 epoll? 我们先建立一个最简单的 PING-PONG 服务端程序: 123456789101112131415161718192021222324252627if (listen(server_fd, 16) < 0) { std::cerr << "监听失败!" << std::endl; return -1;}std::cout << "服务端启动成功,正在监听 8888 端口..." << std::endl;for (;;){ int addrlen = sizeof(address); int client_fd = accept(server_fd, (struct sockaddr*)&address, (sockle...
UKVEngine 开发流程纪实
欢迎回到 Aloe。在这篇博客中,笔者将向各位读者介绍最近开发的 UKVEngine —— 高性能 KV 存储引擎。这篇文章记录了笔者开发 UKVEngine 时的流程,包括立项动机、架构设计、性能迭代、踩坑记录、不同环境下的性能差异、AOF 设计等内容。希望读者能从中获得启发。 前言:为什么要做这个项目? 笔者在最初立项的时候的想法还是蛮简单的: 想深入了解 Linux 系统上的开发。 想理解网络和多线程并发编程的底层原理与设计思想。 想有一个真正意义上能压测、能讲清楚,能系统地串联起自己所学的一个项目。 综合上述几个想法,笔者决定从零开始手写一个 KV 存储引擎(GitHub 仓库)。 架构设计与选型 用图片展示存储引擎请求处理流水线 UKVEngine 分为 ukv 和 ukvd 两个部分,在这篇文章里会着重介绍 ukvd。 笔者会以组成 ukvd 的类的视角来为读者拆解这个项目: LruCache ShardedLruCache RespParser ThreadPool UkvServer LruCache 类 一个标准的 LRU Cache 实现,担...
【菜鳥勇闖演算法】我對「二分搜尋法」的理解
這是 Aloe【菜鳥勇闖演算法】的第一篇文章。這篇文章筆者與讀者一起手撕「二分搜尋法」。我們從生活中的真實例子出發,引出二分搜尋法的優點。 前言:關於「二分搜尋法」的直覺 找書 小明和 Siao 前往了圖書館。圖書館一共有 12345 本書,在同學們的維護下,書的編號是從小到大排列的,但是有些書本丟失了,他們想看看編號為 8000 的書本到底是否還在書架上。 小明看著長長的書架一眼望不到頭,只好隨意翻弄書本。 Siao 先是走到了書架的正中間,看了一下這本書的編號是 6200,心想:「6200 比我要找的 8000 小,說明左邊這一半書架(1~6200)全是垃圾,看都不用看!」於是直接走到了右半邊区域的中間;發現書的編號是 9500,於是又向左走了一半 …… Siao 很快就發現編號 8000 的書本不在。 像 Siao 這樣每次都捨棄一半的搜尋空間(書本),在搜尋空間中不斷「二分」的演算法叫做「二分搜尋法」。 思考: 如果書本的編號不是從小到大的有序排列,我們還能像這樣二分搜尋了嗎? 思考: 如果要找編號為 8001 的書本,並且這套書有很多卷(8001-A、8001...
不使用啟動磁碟給主機安裝 Windows 10 (PXE 網路開機實戰)
前一陣子筆者想要給家裡的一台主機重灌 Windows 10 系統,首先就想到了使用 USB 隨身碟製作啟動磁碟,尋找一番之無果後才發現我把所有的隨身碟都忘在了學校。最終採用了網路引導的方法成功安裝!接下來是筆者整理的安裝步驟與注意事項。 裝置、檔案、程式與先決條件 注意: 下面列出的裝置、檔案等,為筆者重灌系統時使用,僅供讀者參考。若有不一致的情形,應自行搜尋替代指令或程式。 Arch Linux 系統的筆電(作為伺服器端)、想要重灌系統的主機(作為用戶端)。 用戶端主機板支援並啟用 PXE 網路啟動、伺服器端與用戶端連線至同一區域網路。 Windows 10 IoT Enterprise LTSC 2021 系統映像檔、網卡驅動程式 Dnsmasq、iPXE、wimboot、Samba 程式。 安裝步驟 注意: 下面的步驟,為筆者重灌系統時使用,僅供讀者參考。若有不一致的情形,應自行搜尋替代指令或程式。 確認並啟用用戶端 PXE 網路啟動 主機按一下開機鍵後,連續按鍵盤 DEL 鍵,進入 BIOS/UEFI 介面。 進入 Advanced 選單,選中 No Dis...
Aloe 開篇
歡迎造訪 Siaospeed 的部落格 Aloe! 為什麼叫這個部落格 Aloe? 搜尋了很久部落格方案,從 Hugo 到 Mkdocs,最終選擇了 Hexo。 起名字的時候倒是想到了很多炫酷的詞語,比如 Rvalue, Epoch… 但是最終還是被 Aloe (蘆薈) 吸引住了。 而 Aloe 這個詞的來歷,事實上是我之前一部 Pixel 8a 蘆薈綠 的配色,但是很不幸的是它壞掉了,所以也有懷念這部手機的意味。 同時它也代表著一種清新的生命力量,就像我在複雜的 Linux 系統和網路世界裡,依然想要保持一份簡單和純粹。 Aloe 會記錄哪些內容? Aloe 會記錄使我提起興趣的事物或配置流程 折騰 Proxmox VE (PVE), OpenWrt, Arch Linux 等作業系統時的發現與思考 配置與安裝某些程式時的步驟 最近寫好的 程式碼、軟體 某些值得討論問題的見解 關於本站 作為一名 Arch Linux 用戶,折騰是鐫刻在 DNA 裡的本能。本站採用 Hexo 驅動,搭配 Butterfly 主題,並託管於 GitHub Pages。圖床則使用了 Clou...




