# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 9210
# self = https://watcher.sour.is?uri=https://feeds.twtxt.net/yue-fang-readfog/twtxt.txt&offset=9010
# next = https://watcher.sour.is?uri=https://feeds.twtxt.net/yue-fang-readfog/twtxt.txt&offset=9110
# prev = https://watcher.sour.is?uri=https://feeds.twtxt.net/yue-fang-readfog/twtxt.txt&offset=8910
思維鏈大模型可視化指南**
DeepSeek-R1\[1\]、OpenAI o3-mini\[2\] 和 Google Gemini 2.0 Flash Thinking\[3\] 完美展示了 LLM 如何通過 “推理 “框架突破性能極限。這標誌着一個重大轉變:從擴展訓練時算力到擴展推理時算力。本文包含 40 多張獨特的可視化圖表,帶你深入探索推理型大語言模型、測試時計算,以及 DeepSeek-R1 的技術細節。我們將逐一剖析相關概念 ⌘ Read more
告別 WebSocket?探索 SSE 爲 Go 應用帶來的全新可能**
在現代 Web 應用開發中,實時通信一直是一個重要的需求。傳統上,WebSocket 是實現實時雙向通信的首選方案。然而,隨着技術的發展,Server-Sent Events (SSE) 這一輕量級的單向實時通信技術正在獲得越來越多的關注。本文將深入探討 SSE 技術,並通過實例說明爲什麼在某些場景下它可能比 WebSocket 更適合您的 Go 應用。SSE 是什麼?--------Server ⌘ Read more
Zig 中指針的區別**
與 C 不同,Zig 中的指針類型有多種,主要是對指向的元素做了區分,便於更好地使用。下圖展示了它們指向元素的不同: 上圖中包含了切片(slice)類型,嚴格來說它不是指針,但其是由指針構成的(一般稱爲胖指針),而且在代碼中用的更爲普遍,因此列在一起便於讀者比較。需要明確一點,Zig 只對指針指向的元素數量做了區分,本身並沒有記錄長度,因此不會有越界檢查,這一點和 C 指針是一樣的,需要程序員自 ⌘ Read more
有手就行!DeepSeek 本地部署還能聯網搜索**
最近 DeepSeek 大火,很多人都想用 DeepSeek,但是無奈經常提示服務器繁忙,那就試試將 DeepSeek 部署到自己電腦上吧!不僅能用 DeepSeek,還能聯網搜索、生成圖片!並且,Win 和 Mac 都可以使用!PART ONE部署 DeepSeek 到本地推薦大家使用 Ollama 進行部署,非常簡單,有手就行🏗️ 安裝 Ollama去 Ollama 官網(https://olRead more
解析 App 中手機號碼一鍵登錄的原理**
本機號碼一鍵登錄是一種新型的登錄方式,登錄方式的演變過程大致可以分幾個階段:    一鍵登錄從用戶體驗和安全性上來講是更優的一種登錄方式,目前在很多 APP 的目前都支持 “本機號碼一鍵登錄” 功能,如下圖所示的一鍵登錄圖:    APP 中會展示一個帶有手機號掩碼(中間 4 位號碼隱藏了)的授權登錄頁面,用戶點擊 “同意授權” 按鈕後,應用 APP 通過運營商獲取完整的手機號碼(因爲爲了 ⌘ Read more
領域事件:解耦微服務的關鍵**
領域事件領域事件在領域模型裏佔據着舉足輕重的地位,它用於表徵領域內發生的各類事件。一旦某個領域事件發生,便會引發後續一系列的業務操作。這一機制不僅能夠實現業務解耦,還對構建完整的業務閉環大有裨益。舉個例子,在業務流程中,領域事件可能體現爲其中的某一個具體步驟。以投保業務爲例,當繳費環節完成後,就會觸發將投保單轉換爲保單的動作;在定時批處理場景下,也會涉及領域事件。比如在批處理生成季繳保費通知單的過 ⌘ Read more
Deepseek 本地部署詳細指南!從 Ollama 到個人知識庫應用**
丨作者:lushen 每個人都能擁有專屬 AI 助手,安全高效,開啓智能化知識管理新體驗。系統介紹mbp pro 一、Ollama 安裝與配置 1.1 跨平臺安裝指南Ollama 作爲本地運行大模型的利器,支持三大主流操作系統: macOS一鍵安裝 Windows用戶訪問官網 https://ollama.com/download 下載安裝包 Linux安裝(Ubuntu/Read more
Go 併發控制:sync-Map 詳解**
我們知道,Go 中的 map 類型是非併發安全的,所以 Go 就在 sync 包中提供了 map 的併發原語 sync.Map,允許併發操作,本文就帶大家詳細解讀下 sync.Map 的原理。使用示例sync.Map 提供了基礎類型 map 的常用功能,使用示例如下:package mainimport ("fmt""sync")func main() {var s sync.Map// 存儲鍵值 ⌘ Read more
單點登錄原理**
單點登錄(Single Sign-On,簡稱 SSO)是一種身份驗證和授權機制,它允許用戶通過一次登錄,即可訪問多個相互信任的應用系統,而無需在每個系統中分別進行登錄。以下是單點登錄原理的詳細解釋:一、單點登錄的基本原理單點登錄的基本原理可以概括爲:在多個應用系統之間共享用戶的登錄狀態。當用戶在一個應用系統中進行身份驗證後,其他應用系統可以識別這個用戶的登錄狀態,並允許他們訪問其他系統中的受保護資 ⌘ Read more
如何實現自動登錄的功能?**
通常來說,自動登錄是通過保存在客戶端的憑證,比如 Cookie 或者 Token,讓用戶下次訪問時不用再輸入用戶名和密碼。首先,用戶登錄成功後,服務器需要生成一個有效的令牌,比如 Session ID 或者 JWT,然後發送給客戶端保存。客戶端之後每次請求都帶上這個令牌,服務器驗證後允許訪問。但自動登錄的關鍵在於持久化的存儲,比如設置 Cookie 的過期時間較長,或者使用 Refresh Tok ⌘ Read more
Go 併發控制 Wait - Cancel
Wait 和 Cancel 兩種併發控制方式,在使用 Go 開發服務的時候到處都有體現,只要使用了併發就會用到這兩種模式。在 Go 語言中,分別有 sync.WaitGroup 和 context.Context 來實現這兩種模式。sync.WaitGroup 等待多個線程完成對於要等待 n 個線程完成後再進行下一步的同步操作的做法,使用 sync.WaitGroup 來等待一組事件:func m ⌘ Read more
Golang Web 單體項目目錄結構最佳實踐**
在 Golang 開發 Web 項目的過程中,如何組織目錄結構是一項至關重要的任務。合理的目錄結構不僅能提高代碼的可維護性,還能爲團隊協作提供清晰的代碼規範。今天,我們就來探討一個 Golang Web 單體項目的最佳目錄結構,並通過詳細的代碼示例解析其中的分層設計,以下就是我的最佳實踐方案。爲什麼要設計合理的目錄結構?在 Golang 項目中,代碼的組織方式會影響開發效率和項目的擴展性。如果目錄 ⌘ Read more
深度解析 DeepSeek 的蒸餾技術**
昨天,我們詳細的介紹了模型蒸餾技術,DeepSeek 的蒸餾技術更是這一領域的佼佼者,它不僅攻克了傳統蒸餾的瓶頸,還在多模態數據處理等前沿領域取得了突破性進展。本文將深入剖析 DeepSeek 蒸餾技術的核心原理、創新策略以及未來發展方向,帶你一探究竟,領略 AI 模型優化的奧祕與魅力。 DeepSeek 蒸餾技術概述 unsetunset1.1 蒸餾技術定義與原理 unsetunset模型 ⌘ Read more
Golang 使用反射實現漏洞插件管理**
在安全檢測領域,我們經常需要實現一個插件體系,以支持和管理不同類型的漏洞檢測插件。例如,SQL 注入掃描、XSS 檢測等插件應該可以動態加載、統一管理,並按需執行。本文將會介紹如何使用 Golang 反射(reflection) 構建一個可擴展的漏洞檢測插件系統,包括 插件註冊、管理、調用,我會提供完整的 demo 代碼和項目結構來幫助你理清思路。下面就開始我們今天的內容吧!!!🚀🚀🚀項目目錄結構 ⌘ Read more
混合專家模型 -MoE- 到底是什麼?看完這篇,你也能講明白!**
當我們查看最新發布的大語言模型(LLM)時,常常會看到標題中出現 MoE 這一術語。那麼,這個 MoE 代表什麼?爲什麼這麼多 LLM 都在使用它呢?如果你還不知道什麼是 MoE ,那就碼住今天的文章吧!我們將圖解 MoE,用 50 張圖細緻地探索這一重要組件——混合專家模型(MoE)。在這篇文章中,我們將深入探討 MoE 的兩個主要組件——專家和路由器,並瞭解它們在典型 LLM 架構中的應用。 ⌘ Read more
微服務架構中用戶認證的設計與實現**
傳統的用戶認證方案---------我們直奔主題,什麼是用戶認證呢?對於大多數與用戶相關的操作,軟件系統首先要確認用戶的身份,因此會提供一個用戶登錄功能。用戶輸入用戶名、密碼等信息,後臺系統對其進行校驗的操作就是用戶認證。用戶認證的形式有多種,最常見的有輸入用戶名密碼、手機驗證碼、人臉識別、指紋識別等,但其目的都是爲了確認用戶的身份並與之提供服務。用戶認證在傳統的單體單點應用時代,我們會開發用戶認 ⌘ Read more
Go 併發 Bug 殺手鐧:如何正確處理 Goroutines 中的錯誤?**
📌 引言-----你是否遇到過這樣的情況:明明 Goroutine 已經執行,但程序結果卻異常? 錯誤似乎消失了,日誌中卻找不到任何線索? Goroutine 發生 panic,主程序卻沒有任何反應? 這些問題的根本原因通常是 Goroutines 中的錯誤處理缺失。如果沒有正確捕獲和處理錯誤,Go 的併發機制可能會讓 Bug 變得難以察覺,甚至導致程序崩潰。本文將深入剖析 G ⌘ Read more
golang 每日一庫之 spf13-viper
spf13/viper 是一個非常流行的 Go 語言庫,主要用於處理應用程序的配置文件。它提供了一種靈活且強大的方式來讀取、解析和管理不同來源的配置數據,比如文件、環境變量、命令行參數等。Viper 以其簡潔、易用以及高度的可定製性在 Go 生態中廣受歡迎。1. Viper 的核心功能Viper 主要用於配置管理,它支持從不同來源加載配置、處理複雜的數據結構、以及提供對配置項的靈活訪問。以下是 V ⌘ Read more
在 Go 中如何將 [][]byte 轉爲 io-Reader ?**
起因:在春節前的某一天,我在 ekit 項目的交流羣裏看到大明老師發了這樣一條消息: 各位大佬,問個小問題,有咩有誰用過 byte 轉爲 io.Reader 的東西?我以前搞過一次,但是我忘了是我手搓了一個實現,還是用的開源的,還是 SDK 自帶的並且大明老師還爲此開了一個 issue。看到這條消息,我想起了我在對 Go 還不太熟悉時,曾寫過一個 io.MultiReader 的實現(當時寫完了 ⌘ Read more
解密 Go 語言中的雙生函數:main-- 與 init-- 的隱祕世界**
在 Go 語言的開發實踐中,main()和init()這兩個看似簡單的函數,承載着程序生命週期的核心邏輯。它們如同程序世界的守門人,一個負責搭建舞臺,另一個負責拉開帷幕。本文將通過深度剖析二者的差異,揭示它們在 Go 運行時系統中的運作機制,並提供多個完整代碼示例幫助開發者掌握正確使用姿勢。 函數本質與定位差異---------main():程序的唯一入口main()函數是每個可執行 Go 程序的 ⌘ Read more
圖解推理型 LLMs
作者:Maarten Grootendorst 什麼是推理型 LLMs-----------與常規 LLMs 相比,推理型 LLMs 在回答問題前,往往會先將問題拆解爲更小的步驟(通常稱爲推理步驟或思考過程)。那麼,“思考過程”、“推理步驟” 或 “思維鏈”(CoT, Chain-of-Thought)究竟意味着什麼?雖然我們可以探討 LLMs 是否真的能像人類那樣思考,但這些步驟將整個過程拆解爲 ⌘ Read more
高併發訂單系統設計:每天新增 100w 訂單數據的分庫分表方案**
在電商和在線服務領域,訂單處理系統面臨着巨大的數據壓力。每天新增 100 萬條訂單數據的場景,要求系統具備高併發處理能力和良好的可擴展性。本文將探討如何通過分庫分表的設計來支撐高併發的訂單處理系統。1. 分庫分表的必要性隨着訂單量的激增,單一數據庫的性能瓶頸逐漸顯現。單表數據量過大將導致查詢效率下降,寫入性能受限。因此,合理的分庫分表策略是解決這一問題的關鍵。2. 分庫策略按業務模塊分庫:將不同業 ⌘ Read more
電商系統的分佈式事務調優**
如今,大部分公司的服務基本都實現了微服務化,首先是業務需求,爲了解耦業務;其次是爲了減少業務與業務之間的相互影響。    電商系統亦是如此,大部分公司的電商系統都是分爲了不同服務模塊,例如商品模塊、訂單模塊、庫存模塊等等。事實上,分解服務是一把雙刃劍,可以帶來一些開發、性能以及運維上的優勢,但同時也會增加業務開發的邏輯複雜度。其中最爲突出的就是分佈式事務了。     通常,存在分佈式事務 ⌘ Read more
Go 項目裏的 API 對接,這樣做 Mock 測試才舒服**
我們在開發項目的過程中總會遇到要調用依賴方接口的情況,如果依賴方的 API 接口還沒有開發好,通常我們會先約定好 API 接口的請求參數、響應結構和各類錯誤對應的響應碼,再按照約定好請求和響應進行開發。除了上面說的情況外,還有一種就是當你開發的功能需要與微信支付類的 API 進行對接時,因爲各種訂單、簽名、證書等的限制你在開發階段也不能直接去調用支付的 API 來驗證自己開發的程序是否能成功完成對 ⌘ Read more
Golang Option 模式看這一篇就夠了**
在 Go 語言中,我們經常需要定義結構體,並通過構造函數初始化它們。然而,Go 不支持默認參數,如果一個結構體有很多可選參數,我們會面臨以下問題:構造函數參數過長,調用時不夠直觀。 需要維護多個 NewXXX 函數,擴展性較差。 代碼可讀性降低。 爲了解決這個問題,Golang 社區廣泛採用 Option 模式,讓我們可以優雅地管理可選參數。本文將詳細講解 Option 模式的 ⌘ Read more
解鎖 DeepSeek R1 數據限制:一臺電腦打造高效個人知識庫**
當你在使用 DeepSeek 或其它 AI 時,也許可能遇到這樣的問題:❌你的知識迭代 VS 模型訓練進度"剛整理完行業前沿白皮書,卻發現 DeepSeek 還卡在半年前的版本斷層"❌數據絞刑架 VS 硬盤保險箱"把機密合同餵給 AI?這和在推特公開裸奔有什麼區別"以上問題,可以通過使用 DeepSeek 構建一個私有知識庫來解決。通過構建知識庫:✅ 本地化模型實時吞噬新文檔,你的知識庫永遠比大模 ⌘ Read more
Rust 生態中的隊列實現:從內存隊列到分佈式消息系統的全面學習**
引言--在現代軟件開發中,隊列(Queue)作爲一種核心數據結構,廣泛應用於任務調度、消息傳遞、事件處理等場景。無論是單機應用還是分佈式系統,隊列都扮演着至關重要的角色。Rust 作爲一門高性能、內存安全的系統編程語言,其生態中湧現了許多優秀的隊列實現,涵蓋了從簡單的內存隊列到複雜的分佈式消息系統。本文將帶您深入探索 Rust 生態中的隊列實現,涵蓋以下內容:內存隊列:如VecDeque和cros ⌘ Read more
一文帶你入門 MCP(模型上下文協議)**
什麼是 MCP?--------MCP(Model Context Protocol,模型上下文協議) 是由 Anthropic 推出的一種開放標準,旨在統一大型語言模型(LLM)與外部數據源和工具之間的通信協議。MCP 的主要目的在於解決當前 AI 模型因數據孤島限制而無法充分發揮潛力的難題,MCP 使得 AI 應用能夠安全地訪問和操作本地及遠程數據,爲 AI 應用提供了連接萬物的接口。MCP ⌘ Read more
基於 Go 語言構建高性能併發鍵值存儲**
在分佈式系統和高併發場景中,鍵值存儲(Key-Value Store)作爲基礎組件扮演着至關重要的角色。本文將通過 Go 語言實現一個線程安全的併發鍵值存儲系統,深入探討其設計原理、性能優化策略以及實際應用場景。 爲什麼選擇 Go 語言?------------Go 語言憑藉其原生的併發模型(goroutine 和 channel)、高效的內存管理以及簡潔的語法,成爲構建高性能併發系統的理想選擇。 ⌘ Read more
一張圖搞懂,渠道路由**
支付業務說到底是個渠道業務,他是支付系統的接出端,對於一家支付公司來說,只有接入有市場競爭力的支付渠道,支付產品才能被更多的客戶使用。對於每個剛入支付行業的同學來說,很多都是從接渠道和配置路由開始的。今天,我們就來介紹支付渠道和被傳的神乎其神的渠道路由。引子:神祕的渠道路由支付渠道是支付平臺鏈接銀行、三方等持牌機構的系統。其中最神祕的就是渠道路由,由於它是持牌機構內部的系統,因此接觸者寥寥,並且其 ⌘ Read more
Go channel 計數信號量**
Go 併發設計的一個慣用法就是將帶緩衝 channel 用作計數信號量(counting semaphore)。帶緩衝 channel 中的當前數據個數代表的是當前同時處於活動狀態(處理業務)的 goroutine 的數量,而帶緩衝 channel 的容量(capacity)就代表了允許同時處於活動狀態的 goroutine 的最大數量。向帶緩衝 channel 的一個發送操作表示獲取一個信號量, ⌘ Read more
在 Go 中實現 TOTP 認證:實踐指南**
時間性一次性密碼(TOTP)已成爲現代應用中實現雙因素認證(2FA)的標準。在本指南中,我們將探討如何在 Go 中使用流行的 github.com/pquerna/otp 庫實現 TOTP。 什麼是 TOTP?---------TOTP 生成臨時密碼,這些密碼在短時間內(通常是 30 秒)有效。這項技術是 Google Authenticator、Authy 等認證器應用背後的核心技術。TOTP ⌘ Read more
DeepSeek 爲什麼採用與主流大模型不一樣的 MoE 架構?一文搞懂什麼是 MoE 模型**
一、前言在 DeepSeek 官網上看到,DeepSeek-V3、V2.5 版本都用了 MoE 架構。但像 Qwen、LLama 模型,用的卻是 Dense 架構,也就是傳統的 Transformer 架構。這兩種架構有個很明顯的區別。DeepSeek-V3 版本總參數量高達 6710 億,可每次計算激活的參數量,也就是真正參與到計算裏的參數,只有 370 億,是總參數量的 5.5%。但 Qwen ⌘ Read more
Go 語言流式編程,實現高效數據處理!**
在 Go 語言開發中,傳統的數據處理方式往往採用for循環配合切片操作的模式。但隨着業務複雜度提升,這種模式逐漸暴露出內存佔用高、代碼可讀性差、擴展性弱等問題。流式編程(Stream Processing)作爲一種聲明式編程範式,通過構建數據處理管道(Pipeline),爲這些問題提供了優雅的解決方案。流式編程的核心在於將數據處理過程分解爲多個獨立的操作階段,每個階段專注於單一職責。這種模式具有以 ⌘ Read more
微博系統設計:怎麼應對熱點事件的突發訪問壓力?**
微博(microblog)是一種允許用戶即時更新簡短文本(比如 140 個字符),並可以公開發布的微型博客形式。今天我們就來開發一個面向全球用戶、可以支持 10 億級用戶體量的微博系統,系統名稱爲 “Weitter”。我們知道,微博有一個重要特點就是部分明星大 V 擁有大量的粉絲。如果明星們發佈一條比較有話題性的個人花邊新聞,比如宣佈結婚或者離婚,就會引起粉絲們大量的轉發和評論,進而引起更大規模的 ⌘ Read more
Redis 複製延遲,看看這 10 個原因!**
Redis 複製延遲(Replication Lag)是指從節點(Replica)與主節點(Master)之間的數據同步存在時間差,這種延遲可能影響系統的一致性和實時性。這篇文章,我們將分析 10 種導致 Redis 複製延遲的常見原因以及優化方案。網絡延遲(Network Latency): 高網絡延遲:主節點與從節點之間的網絡連接質量差,導致數據傳輸速度慢。 網絡抖動或不穩定:頻繁 ⌘ Read more
golang 每日一庫之 shopspring-decimal
shopspring/decimal 是一個用於處理任意精度十進制浮點數的 Go 語言庫,通常用於金融計算、貨幣相關計算等場景。標準的 float64 類型可能無法滿足精確度要求,因爲浮點數的表示方式是近似的,特別是在進行累加、除法和精確比較時可能會導致舍入誤差。shopspring/decimal 提供了一個高精度的十進制類型 decimal.Decimal,它確保在進行數學運算時不丟失精度。這 ⌘ Read more
專業解讀:DDD 充血模型最佳實踐**
0x1 什麼是充血模型充血模型是一種面向對象的軟件設計方法,屬於領域驅動設計(DDD)的核心概念之一。它強調將業務邏輯和行爲封裝在領域對象內部,使對象不僅包含數據,還包含與數據相關的操作和業務規則。核心特點封裝數據與行爲: 在充血模型中,領域對象(如實體或值對象)不僅包含數據屬性,還包含與這些數據相關的業務邏輯和行爲。例如,一個訂單對象不僅包含訂單號、客戶 ID 等屬性,還包含計算總價、檢 ⌘ Read more
如何確保你的消息只被消費一次?**
一、前言談及消息的三大頑疾——消息丟失、消息重複消費、消息堆積,以及緩存的三大挑戰——緩存雪崩、緩存穿透、緩存擊穿,這些話題雖已屢見不鮮,其理論上的解決方案也頗爲成熟。然而,在實際操作中,這些方案卻往往難以得到有效實施。在消息系統的研究領域,Kafka 與 RocketMQ 無疑是兩大常用的消息中間件。對於熱愛鑽研源碼的 Java 程序員而言,RocketMQ 無疑是一個值得深入探索的選擇,畢竟它 ⌘ Read more
快速瞭解 TCP 連接的 11 種狀態及其轉換**
本文意在用簡短的文字總結一下 TCP 的 11 種狀態及其轉換過程。TCP 的 11 種狀態------------1. CLOSED• 表示連接處於關閉狀態。 • 這是 TCP 連接的初始狀態或連接終止後的狀態。 • 常見場景:服務端程序尚未啓動監聽,或者客戶端和服務端都已完成連接釋放。 2. LISTEN• 服務器端狀態,表示服務器在監聽某個端口,等待客戶端發起連接。 ⌘ Read more
Postgres 內核 checkpoint 設計機制**
checkpoint 概述Postgres 數據庫將數據庫中發生的所有更改寫入日誌文件,然後再寫入實際的數據文件。這些日誌文件被稱爲WAL (Write-Ahead log,預寫式日誌)。在將這些更改刷新到磁盤之前,它們一直保存在內存中,並在需要時從內存中返回。由於多種原因,直接寫入數據文件是一項成本很高的操作,並且需要定期執行。另一方面,向WAL文件寫入並不那麼昂貴,因爲日誌是所有更改的連續記錄 ⌘ Read more
探索 MySQL Binlog 的奧祕與應用**
在 MySQL 的廣袤世界中,有一個至關重要的存在,它宛如數據庫運行軌跡的忠實記錄者,默默見證着每一次數據的變更與操作,它就是 binlog。Binlog 如同一個神祕而強大的寶庫,承載着數據庫操作的關鍵信息,爲數據的恢復、複製以及系統的穩定性提供着堅實的支撐。當我們深入探索 MySQL 的奧祕時,binlog 無疑是其中閃耀着獨特光芒的關鍵一環Hi,我是 sharkChili ,是個不斷在硬核技 ⌘ Read more
golang 每日一庫之 jinzhu-copier
這都 2025 年了,你還在一個一個手動複製字段嗎?jinzhu/copier 是一個 Go 語言庫,用於深度複製結構體(struct)及其字段,支持嵌套結構體、切片、數組等的複製。這個庫的主要目標是通過簡單的 API 提供高效、易用的對象複製功能,避免手動編寫複製邏輯。核心特性:深度複製支持深度複製結構體及其嵌套字段,包括切片、數組、映射(map)等。 對象的字段會遞歸地被複制到目標對象中 ⌘ Read more
Rust Socket 編程之多線程與併發編程**
多線程和併發編程是網絡編程中的關鍵技術,尤其是在處理多個客戶端連接時。Rust 提供了多種方式來實現併發編程,包括基於線程的併發和基於異步 I/O 的併發。在本章節中,我們將重點討論如何在 Rust 中使用多線程和併發處理 Socket 連接,幫助你編寫能夠高效處理大量併發連接的服務器。本章節將覆蓋以下內容:多線程編程基礎 使用 std::thread 庫處理併發連接 使用線程池優化併 ⌘ Read more
這才叫分佈式限流算法!**
隨着微服務的流行,服務之間的依賴性和調用關係變得越來越複雜,服務的穩定性變得尤爲重要。業務場景中經常會涉及到瞬時流量衝擊,可能會導致請求響應超時,甚至服務器被壓垮、宕機不可用。出於對系統本身和上下游服務的保護,我們通常會對請求進行限流處理,快速拒絕超出配置上限的請求,保證系統或上下游服務系統的穩定。合理策略能有效應對流量衝擊,確保系統可用性和性能。本文詳細介紹了幾種限流算法,比較各個算法的優缺點, ⌘ Read more
CUDA 驅動軟件架構(譯)**
概述簡而言之,CUDA 驅動程序負責管理 GPU 資源並調度 GPU 上的計算任務。驅動程序爲用戶提供 API,用於在 GPU 上分配內存、將數據複製到分配的內存區域、從內存區域中複製數據以及在內存區域之間複製數據,並啓動對數據進行操作的 GPU 內核。驅動程序還提供了 CUDA 與其他用戶 API 之間的互操作性。這種互操作性使用戶能夠在 CUDA 和其他 API 之間高效地共享 GPU 內存。 ⌘ Read more
Spring 的緩存帝國,得益於這 5 個註解!**
你好,我是猿 java在微服務,分佈式的大環境下,緩存絕對是提升系統性能的關鍵手段,Spring 作爲 Java 生態中最流行的企業級應用框架,它是如何實現緩存的呢?這篇文章,我們將深入探討 Spring 中 5 個核心的緩存註解。什麼是緩存?緩存(Cache)是一種存儲機制,旨在臨時存儲數據副本,以便快速訪問。緩存一般位於應用程序與數據源(如數據庫)之間,能夠顯著降低數據訪問延遲和減輕數據源的壓 ⌘ Read more
Linux 網絡編程中的零拷貝:提升性能的祕密武器**
在當今數字化時代,網絡應用的性能至關重要。而在網絡編程中,數據傳輸的效率直接影響着應用的整體性能。傳統的數據傳輸方式往往涉及大量的數據拷貝和上下文切換,這在高併發、大數據量的場景下,會成爲性能瓶頸。零拷貝技術的出現,爲解決這些問題提供了有效的途徑。零拷貝技術旨在減少數據在內存之間的拷貝次數,以及 CPU 在數據傳輸過程中的參與度,從而顯著提升網絡性能。它避免了不必要的數據拷貝操作,降低了 CPU ⌘ Read more
DDD 實踐:如何用 DDD 重構中臺業務模型?**
進入 21 世紀,互聯網應用迅猛發展,衆多傳統企業紛紛 “觸網”,搭建起自己的互聯網電商平臺。隨後,微信、App 等移動互聯應用強勢崛起,掀起了新一輪的移動應用熱潮。這些移動互聯應用,大多面向個人用戶或第三方,市場需求瞬息萬變,這就要求它們必須以敏捷的速度適應市場的變化。爲了滿足快速響應與頻繁發版的需求,許多移動互聯網應用選擇獨立於傳統核心系統進行建設。然而,兩者承載的業務大多相似,這就極易導致業 ⌘ Read more
Redis 爲什麼要採用 RDB 和 AOF 兩種持久化方式?**
這篇文章,我們來分享 Redis 是如何實現持久化以及 Redis 爲什麼要採用 RDB 和 AOF 兩種持久化方式。什麼是持久化?持久化,Persistence,把數據(如內存中的對象)保存到可永久保存的存儲設備中(如磁盤)。這樣可以保證程序在服務器宕機後,重新啓動不會丟失數據。持久化方式Redis 的持久化方式有兩種:RDB 和 AOF。2.1 RDB-------RDB:Redis Data ⌘ Read more
LLM Agent 和 Agentic RAG 的最佳綜述**
論文鏈接:https://arxiv.org/abs/2501.09136 Github 倉庫:https://github.com/asinghcsu/AgenticRAG-Survey 下面很多鏈接在這個 Github 倉庫,大家通過訪問 Github 倉庫訪問更多資料。摘要------代理式檢索增強生成(Agentic RAG)通過在 RAG 管道中嵌入自主代理,代表了人工智能領域的 ⌘ Read more
如何設計一個秒殺系統?**
假如你是一名架構師,你會如何設計一個秒殺系統?這篇文章,我們就來聊一聊。什麼是秒殺?所謂秒殺,就是在同一個時刻有大量的客戶端請求爭搶同一個商品並完成交易的過程,瞬時會產生大量的併發讀和併發寫。秒殺系統本質上就是一個滿足高併發、高性能和高可用的分佈式系統,下面給出一張下單交互概要圖:秒殺系統的特點高性能秒殺涉及大量的併發讀和併發寫,因此秒系統必須能支持高併發訪問,而且 RT(響應時間) 需要在一定的 ⌘ Read more
用 Rust 構建實時協同文本編輯器**
Rust 🦀 以其極快的性能、內存安全性和強大的併發特性而聞名。這些特性使其成爲構建實時應用(如協作文本編輯器)的絕佳選擇。我們要構建什麼-------我們將構建:一個處理多用戶的 WebSocket 服務器。 一個用於實時同步客戶端編輯的廣播系統。 一個簡單的前端,用於可視化實時更改。 第一步:項目設置 🛠️------------首先,創建一個新的 Rust 項目:cargo ⌘ Read more
Linux 內核追蹤機制:性能監控與故障排查**
在 Linux 系統的廣袤世界裏,內核猶如其靈魂所在,掌控着整個系統的運行。而 Linux 內核追蹤機制,作爲深入瞭解內核運行奧祕的關鍵工具,正發揮着日益重要的作用。想象一下,當你面對一個複雜的 Linux 系統問題時,如同置身於一座龐大而錯綜複雜的迷宮之中。此時,內核追蹤機制就像是手中的一張地圖,能幫助你清晰地看到系統內部的運行軌跡,讓你準確找到問題的根源。無論是排查性能瓶頸,還是追蹤系統故障, ⌘ Read more
Rust 開發者必備:跨平臺工具庫精選**
本文旨在爲您介紹一些在不同領域中表現突出的 Rust 庫。我們將深入探討這些庫的功能、優勢以及適用場景,並通過實際的代碼示例展示如何使用它們。Rust 是一種備受讚譽的系統編程語言,以其卓越的性能、內存安全性和不斷壯大的生態系統而聞名。近年來,Rust 在開發者社區中迅速崛起,成爲構建高效、可靠軟件的首選工具之一。無論是開發操作系統、嵌入式系統,還是高性能網絡服務,Rust 都能提供強大的支持。然 ⌘ Read more
基於事件驅動的業務規則模型設計**
在現代數字化運營中,企業需要通過高效且靈活的系統來應對日益複雜的業務需求和用戶期望。事件驅動的業務規則模型通過實時響應業務事件並執行預定義規則,實現積分發放、優惠券觸發、分傭處理、流程審批等任務的自動化和智能化,從而爲企業提升運營效率、優化用戶體驗提供了強有力的支持。什麼是事件驅動的業務規則模型?-------------------    事件驅動的業務規則模型是一種以事件爲中心的業務邏 ⌘ Read more
Android 開發中的線程模型和解決思路**
在 Android 開發中,線程扮演着重要的角色,雖然隨着協程技術的普及,純應用層開發中,線程的使用已經不是問題,但是對於 JNI 開發,至少有一半的崩潰是線程相關問題引起的。所以本文將用實戰的方式,逐步向讀者揭示 JNI 開發中使用線程可能遇到的問題,並提供自己的解決思路。一個概念的引入是爲了解決某些新問題,「線程就是爲了解決多任務並行」而引入的概念。但是引入新概念必定也會引入新的問題,線程 ⌘ Read more
分佈式事務模型詳解**
分佈式基礎理論1.1 CAP 理論CAP 理論可以表述爲,一個分佈式系統最多隻能同時滿足一致性(Consistency)、可用性(Availability)和分區容錯性(Partition Tolerance)這三項中的兩項。一致性是指 “所有節點同時看到相同的數據”,即更新操作成功並返回客戶端完成後,所有節點在同一時間的數據完全一致,等同於所有節點擁有數據的最新版本。可用性是指 “任何時候,讀寫 ⌘ Read more
一文喫透回調函數:編程世界的幕後使者**
在編程的奇妙天地裏,我們常常會遇到一些看似神祕卻又無比強大的概念,回調函數便是其中之一。你是否好奇,當我們在網頁上點擊一個按鈕,頁面瞬間做出響應;或者在進行數據請求時,數據獲取完成後自動觸發下一步操作,這背後到底是什麼在發揮作用?其實,這很大程度上要歸功於回調函數。它就像編程世界裏一位默默奉獻的幕後使者,看似不引人注目,卻掌控着許多關鍵操作的流程。今天,就讓我們一起深入探索回調函數的奧祕,將它徹底 ⌘ Read more
Go 併發控制:semaphore 詳解**
今天我們來介紹一個 Go 官方庫 x 提供的擴展併發原語 semaphore,譯爲 “信號量”。因爲它就像一個信號一樣控制多個 goroutine 之間協作。概念講解我先簡單介紹下信號量的概念,爲不熟悉的讀者作爲補充知識。一個生活中的例子:假設一個餐廳總共有 10 張餐桌,每來 1 位顧客佔用 1 張餐桌,那麼同一時間共計可以有 10 人在就餐,超過 10 人則需要排隊等位;如果有 1 位顧客就餐 ⌘ Read more
FUSE 讀寫流程梳理**
1、kernel 側體系結構--------------fusefile 作爲 file 的 privatedata 存在,其相當於是 FUSE 視角的文件句柄,執行讀寫操作時需要將其 fh 屬性 (用戶態句柄) 傳遞至用戶態一側。fuseinode 則相當於對 VFS 的 inode 做了繼承,其 itime 屬性定義了 inode 的 TTL 有效時間,使用時長超過該閾值需要向 FUSE De ⌘ Read more
Uber 基於 Ray 優化乘車業務實踐**
介紹將解決方案擴展到像 Uber 這樣龐大且複雜的市場時,計算效率是一個重大挑戰。 Uber 乘車業務的運行和調優依賴於大量的機器學習模型和優化算法。幸運的是,系統的許多部分可以並行處理。 Ray\[1\] ® 是 Python® 的通用計算引擎,專爲 ML、AI 和其他算法工作負載而設計。我們描述 Uber 如何採用 Ray 來支持關鍵任務系統。以 Uber 的移動市場分配調整系統爲例,我們發現性能 ⌘ Read more
Multi-Agent 如何設計**
研究背景和目的在單一大語言模型長期主導人工智能領域的背景下,多智能體系統在對話任務解決中逐漸嶄露頭角。 雖然先前的研究已經展示了多智能體系統在推理任務和創造性工作中的潛力,但對於其在對話範式方面的侷限性以及單個智能體的影響,尚缺乏深入分析。 本研究旨在填補這一空白,系統地評估多智能體系統在各種討論範式下的表現,評估它們在生成性任務和問答任務中的優缺點。 研究方法實驗評估:對多智能 ⌘ Read more
使用 Golang 監控網絡速度**
使用 Golang 監控網絡速度----------------在分佈式系統、實時應用和流媒體服務中,監控網絡速度可以幫助識別潛在的瓶頸、優化性能並提升用戶體驗。本文將介紹如何使用 Golang 構建一個高效的網絡速度監控工具,適合技術人員學習和參考。引言--網絡速度監控對於確保系統穩定運行至關重要。隨着互聯網用戶需求的增長,檢測網絡帶寬、下載和上傳速度成爲關鍵任務。Golang 以其高效的併發 ⌘ Read more
探祕 Linux 進程調度器:操作系統的核心 “指揮官”**
在操作系統的複雜世界裏,進程就如同一個個忙碌的 “小工人”,它們都渴望獲得 CPU 的 “青睞”,以執行自己的任務。而在這背後,有一位默默掌控全局的 “指揮官”,它就是 Linux 進程調度器。想象一下,當你在電腦上同時打開多個應用程序,一邊瀏覽網頁,一邊播放音樂,還在運行着辦公軟件,這些進程看似和諧共處,實則在激烈競爭着有限的 CPU 資源。那麼,究竟是誰在有條不紊地安排它們的執行順序,讓整個系 ⌘ Read more
深入解析 18 種軟件架構設計模式 (5)**
架構模式通過提供可複用的設計方案,有助於解決常見的軟件設計挑戰,從而提升生產力。如果您從事軟件架構設計工作,可能會遇到重複的目標和問題。架構模式通過提供應對這些場景的可重複設計,幫助開發者更高效地解決這些問題。架構模式捕獲了各類系統和軟件要素的設計結構,使其可以被複用。在編寫代碼的過程中,開發者往往在項目內、公司內乃至職業生涯中多次遇到類似問題。通過創建設計模式,工程師們可以藉助一種可複用的方法來 ⌘ Read more
深入解析 18 種軟件架構設計模式 (6)- 最終篇**
架構模式通過提供可複用的設計方案,有助於解決常見的軟件設計挑戰,從而提升生產力。如果您從事軟件架構設計工作,可能會遇到重複的目標和問題。架構模式通過提供應對這些場景的可重複設計,幫助開發者更高效地解決這些問題。架構模式捕獲了各類系統和軟件要素的設計結構,使其可以被複用。在編寫代碼的過程中,開發者往往在項目內、公司內乃至職業生涯中多次遇到類似問題。通過創建設計模式,工程師們可以藉助一種可複用的方法來 ⌘ Read more
Zig 逐行讀取文件**
Zig 中有一個 Reader 類型,它提供了多種讀取文件的方法,如 readAll、readInt。 在這裏,我們將使用 streamUntilDelimiter 分割行。const std = @import("std");const fs = std.fs;const print = std.debug.print;pub fn main() @void {    var gpa = std ⌘ Read more
=
Nginx 重定向方法**
Nginx 重定向配置是一個功能強大且靈活的工具,可以根據具體需求實現各種重定向規則。以下是對 Nginx 請求重定向配置方法的詳細解析:基本概念 請求重定向是指當客戶端向服務器發送一個請求時,服務器根據一定的規則將客戶端的請求引導到另外一個 URL 的過程。在 Nginx 中,通過rewrite和return指令等可以實現請求重定向。這在網站重構、域名變更、URL 美化等場景中非常有用。 ⌘ Read more
網絡編程:基於 TCP-UDP 實現客戶端和服務端通信(C 語言實現簡單易懂)**
TCP 是一個面向連接的,安全的,流式傳輸協議,這個協議是一個傳輸層協議。①面向連接:是一個雙向連接,通過三次握手完成,斷開連接需要通過四次揮手完成。②安全:TCP 通信過程中,會對發送的每一數據包都會進行校驗, 如果發現數據丟失, 會自動重傳。③流式傳輸:發送端和接收端處理數據的速度,數據的量都可以不一致。(一)TCP 三次握手 & 四次揮手三次握手具體過程如下:   第一次握手:客戶端 ⌘ Read more
從零到一打造商用 AI Agent(智能體)**
Hi,大家好,我叫秋水,當前專注於 AI 智能體和 AI 工作流自動化經常有朋友問我,如何打造一個商用 AI Agent(智能體)?是選擇 Coze?Dify?還是 LangGraph ? 過程中有哪些注意事項? 我的數據應該存儲在哪裏? 爲什麼某些網頁用這個工具無法抓取到內容? ······ 因此,在 2025 年初,我結合這兩年的 AI Agent 的開發經驗,啓 ⌘ Read more
一篇文章徹底搞懂 Spring 的事務**
引言 作爲技術人,很忌諱對某個問題淺嘗輒止,一知半解,特別是經常使用的技術。Spring 作爲經久不衰的 Java 框架,自然少不了對事務的支持。那麼,關於 Spring 的事務,你瞭解多少呢?如果只是知道在方法上加一個 @Transactional 註解就可以支持事務,或者說只是簡單地知道 Spring 聲明式事務的背後原理是 AOP,恐怕還不夠。今天我們就一起深入瞭解下 Spring 的事務 ⌘ Read more
掌握設計模式 -- 裝飾模式**
裝飾模式(Decorator Pattern)-----------------------裝飾模式是一種結構型設計模式,旨在在不改變原有對象結構的情況下動態地爲對象添加功能。通過將對象封裝到一系列裝飾器類中,可以以靈活和透明的方式擴展功能。如果要擴展功能,裝飾模式提供了比繼承更有彈性的替代方案,裝飾模式強調的是功能的擴展和靈活組合。裝飾模式強調的是擴展對象的功能及擴展功能的組合。比如,對象 A, ⌘ Read more
任務系統之任務流程可視化**
在運維自動化平臺中,任務系統無疑是最核心的組成部分之一。它承擔着所有打包編譯、項目上線、日常維護等運維任務的執行。通過任務系統,我們能夠靈活地構建滿足不同需求的自定義任務流。早期的任務流後端採用了類似列表的存儲結構,根據任務流內子任務的排序依次執行,儘管通過配置相同的順序可以實現子任務的並行執行,但由於前端使用了簡單的steps.js插件,無法直觀地展示並行執行的過程。就像下圖這樣,儘管 iOS ⌘ Read more
新的工業控制架構——從邊緣到雲端**
本文圖片來源:Opto 22作者 \| Dan White現代邊緣設備強調網絡安全、數據民主化和可編程性,以實現先進的雲功能。在數字化轉型決定業務創新步伐的時代,瞭解邊緣設備和雲技術之間的協同作用是非常必要的,這也是製造企業的一項戰略要務。數據管理和處理的格局正在發生根本性的變化,其標誌是複雜邊緣設備的出現以及雲端無限的存儲和計算能力。01從邊緣到雲的工業之旅 然而,當涉及到將關鍵的生產和基礎設施 ⌘ Read more
內網穿透神器 Lucky 使用分享**
首先貼下我目前的網絡拓撲圖,由於目前 IPv4 地址緊張,現在運營商分配給個人家庭寬帶的 IP 地址都是內網 IP 地址,這樣就導致我們無法在外部網絡訪問我們家庭內網的設備。前不久我用自己的廢舊電腦配件組裝了一臺 NAS 安裝了目前非常火的免費 NAS 系統飛牛私有云 fnOS。雖然飛牛有自帶的內網穿透,但是是通過飛牛服務器中繼轉發的,因爲是免費的所以帶寬有限,只能提供一些訪問瀏覽,如果想看高清影 ⌘ Read more
防止超賣的七種實現**
高併發場景在現場的日常工作中很常見,特別是在互聯網公司中,這篇文章就來通過秒殺商品來模擬高併發的場景。本文環境: SpringBoot 2.5.7 + MySQL 8.0 X + MybatisPlus + Swagger2.9.2 模擬工具: Jmeter 模擬場景: 減庫存 - 創建訂單 - 模擬支付 商品秒殺 - 超賣------------在開發中,對於下面的代碼,可 ⌘ Read more
如何設計一個支持 5 億用戶規模的網約車系統?**
一、前言談及爲何要考察場景題,這似乎是個被反覆咀嚼的話題,猶如面試中屢見不鮮的八股文。然而,每一次深入探討,都能激發出新的思考火花,其考察的重點也不盡相同。本次,我將從兩個維度來剖析這一問題:首要的是,場景題旨在檢驗你對業務背景知識的掌握程度。這類題目往往設定了特定的情境,而細節則留待你我自行填補,這就要求雙方需具備共同的理解基礎。若對問題的理解出現偏差,很可能是因爲術語使用上的不一致。若面試官知 ⌘ Read more
Go 表達式引擎之理解與使用 cel-go
在現代應用中,表達式求值引擎已經成爲許多系統不可或缺的一部分。它可以讓業務邏輯與代碼分離,爲動態規則配置提供極大的靈活性。而 Google 開源的 cel-go (Common Expression Language for Go) 就是這樣一款輕量級、高性能的表達式求值引擎。無論你是初學者還是需要在項目中集成 cel-go,這篇文章都將帶你從入門到精通!什麼是 CEL 和 cel-go?CEL( ⌘ Read more
ES 的 4 種分頁方式,如何選擇?**
在 Elasticsearch 中,有 4 種常見的分頁方法,這篇文章,我們將分析每種方法的優缺點以及我們該如何選擇。使用 from 和 size使用 from 和 size是最常用的分頁方式,通過設置 from 參數指定從結果集的哪個位置開始,size 參數指定返回多少條記錄。使用語法如下:GET /index/search{  "from": 10,  "size": 10,  "query" ⌘ Read more
簡單易懂的冪等(附示例)**
什麼是冪等性?-------冪等性是分佈式系統和微服務中的一個關鍵概念,尤其是在處理重試和防止重複操作時非常重要。簡單來說,冪等性意味着無論你發送相同的請求多少次,結果都是一樣的,系統不會執行重複的操作。對於網絡失敗或超時等情況下非常重要,因爲客戶端可能會重試請求,但我們希望避免同一操作被重複執行。冪等性的關鍵概念--------1\. 冪等操作操作是冪等的,表示重複執行不會產生額外的影響。例如,用 ⌘ Read more
Go 項目實戰 - 讓自定義 Error 支持 Go 的 errors-Is 判定以及原型模式的應用**
經過前面三節高代碼強度的學習,相信大家都已經有點累了,本節我們不着急繼續 “趕路”,休息片刻!我們換個輕鬆點的話題,聊一聊咱們項目定製化 Error--AppError 怎麼支持 Go 語言的 errors.Is 判定,以及項目預定義的那些 Error 在實際使用過程中某些情況下會出現循環引用的問題,我們會利用一個原型設計模式來解決這個問題。項目定製化 Error 回顧-------------- ⌘ Read more
Rust anyhow 庫錯誤處理**
在 Rust 中,錯誤處理是一個不可忽視的重要話題。標準庫提供了 Result 和 Option 類型來處理錯誤,但隨着項目複雜度的增加,我們往往需要更靈活、更簡潔的錯誤處理方案。此時,anyhow 庫爲我們提供了更爲方便的錯誤處理方式,特別是在處理多種類型的錯誤時。本篇文章將從淺到深介紹如何使用 anyhow 庫,以便讀者能夠更好地理解其用法,並能在項目中高效地應用。什麼是 anyhow?any ⌘ Read more
如何在億萬級數據中查找數據是否存在**
我們在註冊應用程序的時候,經常會碰見提示用戶名 / 郵箱 / 手機號已存在,需要更換。要實現這種功能的方案有很多種,本文我們就來看看不同設計方案的優缺點。數據庫方案\-\-\-\-\- 這種方法是實現起來最簡單的方案,但是會帶來以下的問題:存在延遲較高的性能問題。如果數據庫數據量很大,查詢速度就會比較慢。此外,數據庫查詢設計應用服務器和數據庫服務器之間的網絡通信。建立連接、發送查詢請求和接收響應需要的 ⌘ Read more
一文讀懂虛擬化原理**
1\. 前言虛擬化是現代計算機領域不可或缺的一種技術,它讓公開的虛擬資源等於被虛擬化的底層物理資源,通常是使用多路複用、聚合和模擬中的一種或多種基本技術實現。等效性、安全性和性能是衡量虛擬化的三個重要標準。Gerald Popek 和 Robert Goldberg 在 1974 年就確立了一個指令集架構 (ISA) 是否支持虛擬化的基本要求。直到今天,這個核心思想仍然理解計算機體系結構和支持虛擬機 ⌘ Read more
【網絡協議】精講 TCP 數據包格式**
1.TCP 報文格式     瞭解報文格式是搞懂一個通信協議的必經之路。TCP 報文由 TCP 首部 (報頭) 和應用數據構成,其中 TCP 首部是 TCP 協議的核心所在,應用數據部分是 TCP 報文的負載,如下圖所示。以下詳細介紹各字段含義:源端口 (Source Port) 和目的端口 (Destination Port)\*:長度各爲 16 位,即 2 個字節,分別指示發送端的應用程序使用的 ⌘ Read more
*
圖文詳解 PCI-PCIe 協議**
作者:晏舒RK3568 總線體系結構:--------------速率:APB ⌘ Read more
二、架構實戰——支付流程詳解**
一、掃碼支付掃碼(1) 用戶掃碼    掃二維碼支付顯然是以用戶掃碼作爲整個業務的起點。從終端用戶的角度來看,掃碼由鑑權、支付和拉取狀態三個步驟組成。(2) 鑑權    掃碼支付最終會用買家的銀行卡進行支付。在你開始掃碼支付之前,第三方公司需要覈實你是否有這張卡的使用權,俗稱 “綁卡”。那第三方公司是怎麼驗證用戶的使用權呢?在國內,一般採用下面這 4 個要素來進行驗證:用戶姓名用戶身份證號碼銀行卡 ⌘ Read more
Rust IO 魔法:輸入輸出大揭祕**
一、開啓 Rust I/O 大門:Reader 與 Writer--------------------------------在 Rust 的世界裏,輸入輸出(I/O)操作通過一組強大的 Trait 來實現,其中 Reader 和 Writer 相關的 Trait 扮演着關鍵角色。Rust 中有關輸入輸出的特性圍繞着三個 trait:Read、BufRead、Write 來組織:實現了 Read ⌘ Read more
Go os-exec 極速入門**
os/exec 是 Go 提供的內置包,可以用來執行外部命令或程序。比如,我們的主機上安裝了 redis-server 二進制文件,那麼就可以使用 os/exec 在 Go 程序中啓動 redis-server 提供服務。當然,我們也可以使用 os/exec 執行 ls、pwd 等操作系統內置命令。本文不求內容多麼深入,旨在帶大家極速入門 os/exec 的常規使用。極速入門如下是 os/exec ⌘ Read more
微服務架構模型:幾種常見模型的對比和分析**
整潔架構,又被稱爲 “洋蔥架構”,其命名源於它獨特的分層設計。從相關示意圖中可以清晰看到,整潔架構的各個層次就如同一片片洋蔥片,層層包裹,形象地展現了分層的設計理念。在整潔架構裏,由同心圓來代表應用軟件的不同組成部分。從最核心的內層開始,依次向外分別是領域模型、領域服務、應用服務,而最外層則是那些容易發生變化的內容,例如用戶界面和基礎設施。領域模型處於最核心位置,它承載着業務的核心概念和規則;領域 ⌘ Read more
Go 語言主流安全庫使用指南**
Secure Middleware - Secure-----------------------------secure 是一個 HTTP 中間件,提供了多種安全相關的特性。1.1 基礎使用secure 中間件提供了多個重要的安全選項,每個選項都針對特定的安全威脅:package mainimport (    "net/http"    "github.com/unrolled/secure ⌘ Read more
Rust 實現定時任務和異步調度**
在當今快速發展的開發世界中,自動化任務已成爲必需品。Rust 以其高性能和可靠性著稱,同時也提供了強大的工具來通過 Cron 任務和異步調度管理週期性任務。本文將探討如何在 Rust 中實現這些概念,解析其背後的原理,並幫助您編寫高效且易維護的代碼。什麼是 Cron 任務?------------Cron 任務是一種按照特定時間間隔運行的計劃任務,其時間間隔由 Cron 表達式定義。Cron 表達 ⌘ Read more
RAG 最佳實踐**
本文涉及到的詳細測試代碼和測試步驟放置於: https://github.com/xinyuwei-david/david-share.git 下的:LLMs/RAG-Best-Practice歡迎給 repo 點亮 Star,您的點贊是作者持續創作的動力。一、理解檢索增強生成(RAG)---------------1. RAG 的目的 檢索增強生成(RAG)是一種將大型語言模型與信息檢索相結 ⌘ Read more
DDD 很難,推薦一套小白也能輕鬆落地的方案!**
大家好,我是猿 javaDDD 是微服務中經常用到的一種架構方式,在實際工作中,我們該如何快速落地一個 DDD 工程呢?這篇文章,我們將手把手帶你落地一個 DDD 項目,不管你有沒有 DDD 經驗,都可以輕鬆使用。在開始我們的文章之前,我們還是要簡單的瞭解下 DDD 是什麼,幫助我們下面更好地理解代碼工程。什麼是 DDD?DDD,全稱 Domain-Driven Design,翻譯爲領域驅動設計, ⌘ Read more
Linux 之磁盤 I-O 讀寫流程分析**
一、引言在計算機操作系統中,磁盤 I/O(輸入 / 輸出)是數據讀寫操作的關鍵環節。對於 Linux 系統而言,磁盤 I/O 性能的優化直接關係到系統的整體響應速度和數據處理能力。本文將詳細介紹 Linux 磁盤 I/O 的讀寫流程,包括基本概念、讀寫操作的具體步驟以及相關的優化技術。 二、磁盤 I/O 的基本概念磁盤 I/O 是指在 Linux 系統中,數據在磁盤與內存之間的傳輸過程。它涉 ⌘ Read more
使用 Rust 和 LLVM 構建編譯器**
Cyclang 是一個簡單的靜態類型編程語言,支持基本的語言構造,例如函數、控制流和算術操作。該語言的功能設計非常簡潔,完整的語言規範可以參考官方文檔。本項目的重點是從零開始使用 Rust 和 LLVM 構建一個編譯器的過程,而非語言本身的複雜性。以下是 Cyclang 代碼的一個示例:fn fib(i32 n) -  i32 {      if (n < 2) {          retur ⌘ Read more
DDD 分層架構:有效降低層與層之間的依賴**
什麼是 DDD 分層架構?DDD(領域驅動設計)的分層架構經歷了持續的演進。最初是經典的四層架構;隨後,四層架構得到了進一步優化,實現了各層與基礎設施層的解耦;再到後來,在領域層和應用層之間引入了上下文環境(Context)層,從而形成了五層架構(DCI,Data-Context-Interaction)讓我們來看一下這張圖。在最早的傳統四層架構中,基礎層(Infrastructure Layer ⌘ Read more
深入解析網絡 IO 底層原理:實現高效的數據通信**
當你在深夜享受高速下載一部高清電影,或是在關鍵時刻進行視頻會議卻毫無卡頓,你或許會爲流暢的網絡體驗暗自慶幸。但你可曾意識到,這背後是網絡 IO 底層原理在默默發力。它關乎我們每一次網絡交互的順暢與否,是保障高效數據通信的關鍵。現在,就讓我們一同深入剖析網絡 IO 底層原理,去理解那些讓我們網絡生活如此便捷的核心機制 。一、網絡 Io 概述----------網絡 IO(輸入 / 輸出)是指計算機或 ⌘ Read more
Rust 插件化系統**
前言在 Rust 中實現一個插件化系統可以讓你的應用程序具備動態加載和擴展功能。這種系統常用於構建可擴展的框架、遊戲引擎、安全產品中的漏洞插件化掃描或其他需要運行時擴展功能的項目。以下讓我們來看看實現 Rust 插件化系統的常見方法有哪些吧。基於 Trait 的靜態插件系統思路: 使用 Rust 的 trait 定義插件的接口,插件通過實現該接口與主程序進行交互。實現步驟1. 一個 trait 作 ⌘ Read more