yue-fang-readfog

feeds.twtxt.net

No description provided.

Recent twts from yue-fang-readfog

C 語言竟可以調用 Go 語言函數,這是如何實現的?
大家好,我是飛哥!今天和大家聊一個問題,一門語言是否可以在同一個進程內調用另外一門語言實現的函數?例如 C 語言是否可以調用 Golang 實現的函數?注意我說的是同進程內調用,跨進程的 IPC、PRC 之類的技術不算。直接拋出這個問題的答案,同進程跨語言調用是可行的。在各種語言設計時,爲了複用其它語言生態中積累下來的大量的代碼資產,都會實現跨語言調用的機制。例如在 Golang 中,實現了 cg ⌘ Read more

⤋ Read More

一張長圖透徹理解 SpringBoot 啓動原理
雖然 Java 程序員大部分工作都是 CRUD,但是工作中常用的中間件必須和 Spring 集成,如果不知道 Spring 的原理,很難理解這些中間件和框架的原理。一張長圖透徹解釋 Spring 啓動順序——————–測試對 Spring 啓動原理的理解程度——————–我舉個例子,測試一下,你對 Spring 啓動原理的理解程度。Rpc 框架和 ⌘ Read more

⤋ Read More

萬字長文:Go 語言現代命令行框架 Cobra 詳解
Cobra 是一個 Go 語言開發的命令行(CLI)框架,它提供了簡潔、靈活且強大的方式來創建命令行程序。它包含一個用於創建命令行程序的庫(Cobra 庫),以及一個用於快速生成基於 Cobra 庫的命令行程序工具(Cobra 命令)。Cobra 是由 Go 團隊成員 spf13 爲 Hugo 項目創建的,並已被許多流行的 Go 項目所採用,如 Kubernetes、Helm、Docker (di ⌘ Read more

⤋ Read More

gojq:現代 Golang JSON 查詢神器
隨着現代應用程序對數據處理和解析需求的不斷增加,JSON 已成爲數據交換的主要格式之一。在 Golang 生態系統中,解析和操作 JSON 數據的工具層出不窮,而 gojq 則是其中一款功能強大且易於使用的 JSON 查詢工具。本文將深入解析 gojq,展示其強大功能和實際應用場景,並通過豐富的示例幫助讀者全面掌握這款利器。什麼是 gojq?———gojq 是一個用 Go 語言編寫的 ⌘ Read more

⤋ Read More

探索併發安全的 Go 語言 Map - 深入理解 cmap
在 Go 語言中,內建的map類型並不是線程安全的。也就是說,如果您在沒有任何併發控制的狀態下,在多個 goroutine 中對同一個map同時進行讀寫操作,那麼會出現競態條件(race condition),進而導致不可預見的結果。針對這一問題,地裏特(lrita)開發了cmap(concurrent-map),一個用於提供併發訪問的線程安全的map類型,它可以讓您在 Go 語言中更加方便地進行 ⌘ Read more

⤋ Read More

支撐瞬間百萬 QPS 的熱點文章服務的設計
在我們的日常生活中,總是在一個不經意間就會出現一個大新聞,如某某一線明星出軌、某某明星官宣結婚、某某明星偷稅漏稅等等。這個都是我們粉絲或者喫瓜羣衆感興趣的話題,一旦新聞被爆出之後,新聞平臺(如微博、頭條、騰訊新聞)都會在短時間內出現某個新聞點擊量暴增,如果沒有做好系統的應對措施就會出現短時間的大流量打垮平臺服務器。     針對熱點新聞的短時間大流量的請求,我們需要做相應的架構設計來支撐 ⌘ Read more

⤋ Read More

Gorm 源碼解析
我們先通過一張圖來看 Gorm 核心主流程。gorm 主流程1. 初始化 DB 連接—————-使用 database.sql 初始化連接。我們平時所說的數據庫驅動其實就是每個數據庫對 DSN 不同的解析方式,最終底層都是使用的 TCP 建立起數據庫連接。type Connector interface { Connect(context.Context) (Conn, err ⌘ Read more

⤋ Read More

go 語言是如何實現協程的
go語言的精華就在於協程的設計,只有理解協程的設計思想和工作機制,才能確保我們能夠完全的利用協程編寫強大的併發程序。Hi,我是 sharkChili ,是個不斷在硬核技術上作死的 java coder ,是 CSDN 的博客專家 ,也是開源項目 Java Guide 的維護者之一,熟悉 Java 也會一點 Go ,偶爾也會在 C 源碼 邊緣徘徊。寫過很多有意思的技術博客,也還在研究並輸出技術的路上 ⌘ Read more

⤋ Read More

聊聊 go 語言基於 epoll 的網絡併發實現
在之前的文章中我們已經介紹了 epoll 模型,而本文就從 go 語言源碼的角度來了解一下,go 語言是如何基於 epoll 模型完成高性能的網絡協程併發程序的。Hi,我是 sharkChili ,是個不斷在硬核技術上作死的 java coder ,是 CSDN 的博客專家 ,也是開源項目 Java Guide 的維護者之一,熟悉 Java 也會一點 Go ,偶爾也會在 C 源碼 邊緣徘徊。 ⌘ Read more

⤋ Read More

Gone 一個基於 Golang 的輕量級依賴注入框架
Gone 一個基於 Golang 的輕量級依賴注入框架Gone 首先是一個輕量的,基於 Golang 的,依賴注入框架,靈感來源於 Java 中的 Spring Framework;其次,Gone 框架中包含了一系列內置組件,通過這些組件提供一整套 Web 開發方案,提供服務配置、日誌追蹤、服務調用、數據庫訪問、消息中間件等微服務常用能力。文檔https://goner.fun/zh/ ht ⌘ Read more

⤋ Read More

高併發下的數據一致性保障(圖文全面總結)
01架構    —    思維背景我們之前介紹過分佈式事務的解決方案,參考作者這篇《五種分佈式事務解決方案(圖文總結) 》。 在那篇文章中我們介紹了分佈式場景下困擾我們的 3 個核心需求(CAP):一致性、可用性、分區容錯性,以及在實際場景中的業務折衷。 1、一致性(Consistency): 再分佈,所有實例節點同一時間看到是相同的數據 2、可用性(Availability): 不管是否成 ⌘ Read more

⤋ Read More

這次用 Go 語言實現的多協程文件上傳,效果很明顯
多協程文件上傳是指利用多線程或多協程技術,同時上傳一個或多個文件,以提高上傳效率和速度。通過將文件分塊,每個塊由單獨的協程處理上傳,可以有效減少總上傳時間。Go 語言通過 goroutine 實現多協程文件上傳。多協程文件上傳的基本流程文件分塊:將大文件分成多個小塊,以便多個協程可以同時處理不同的塊。 上傳塊:每個協程負責上傳一個或多個塊。 合併塊:在服務器端接收到所有塊後,將其合併爲 ⌘ Read more

⤋ Read More

淺談 K8s Service 網絡機制
王成,騰訊雲研發工程師,Kubernetes member,從事數據庫產品容器化、資源管控等工作,關注 Kubernetes、Go、雲原生領域。概述—–Service 作爲 K8s 中的一等公民,其承載了核心容器網絡的訪問管理能力,包括:暴露 / 訪問一組 Pod 的能力 Pod 訪問集羣內、集羣外服務 集羣外客戶端訪問集羣內 Pod 的服務 無論是作爲應用的開發者還是使用 ⌘ Read more

⤋ Read More

TS 中的類型驗算- 高級通用 API 實現
由於現在工作使用的技術棧是 React、TypeScript 和 ahooks,工作中需要用到大量的類型定義,特此記錄一下一些常用的類型通用 API 封裝。TS 內置類型PartialT:將 T 所有屬性變爲可選屬性 RequiredT:將 T 所有屬性變爲必選屬性 ReadonlyT:將 T 所有屬性變爲只讀屬性 NonNullableT:過濾 T 類型中的 null 及 un ⌘ Read more

⤋ Read More

每個程序員都應該掌握的 Golang 性能優化祕技
性能分析和優化是所有軟件開發人員必備的技能,也是後臺大佬們口中津津樂道的話題。Golang 作爲一門 “現代化” 的語言,原生就包含了強大的性能分析工具 pprof 和 trace。pprof 工具常用於分析資源的使用情況,可以採集程序運行時的多種不同類型的數據(例如 CPU 佔用、內存消耗和協程數量等),並對數據進行分析聚合生成的報告。trace 工具則關注程序運行時的事件(例如協程狀態切換,G ⌘ Read more

⤋ Read More

複雜 SQL 治理實踐
一、前言軟件在持續的開發和維護過程中,會不斷添加新功能和修復舊的缺陷,這往往伴隨着代碼的快速增長和複雜性的提升。若代碼庫沒有得到良好的管理和重構,就可能積累大量的技術債務,包括不一致的設計、冗餘代碼、過時的庫和框架以及不再使用的功能。這些因素都會導致軟件結構的脆弱,增加系統出錯的可能性,我們俗稱爲 “代碼腐化”,持續性的重構是一種好的解決方案。SQL 也是我們常用的代碼語言,雖然 SQL 本身作爲 ⌘ Read more

⤋ Read More

理解並實現 Android MVVM 架構
Android MVVM 架構在現代 Android 開發中,維護一個清晰、可測試和模塊化的代碼庫變得至關重要。Google 推薦的架構實踐是使用 MVVM(Model-View-ViewModel)模式,它是響應式編程思想在 Android 應用開發中的體現。在本文中,我們將深入探討 MVVM 架構,並通過一個簡單的示例演示如何在 Android 應用程序中實現它。MVVM 架構概述—— ⌘ Read more

⤋ Read More

C 語言文件流詳解
解讀文件流  C 語言對文件的寫入和讀取涉及到流的概念,寫入爲輸出流,讀取爲輸入流。如何理解流的概念呢?可以把流看成流動的自來水,打開水龍頭,自來水就會通過自來水管從水源流到用戶家中,同樣的道理,水庫中的水也會通過管道流入到水源。從水源流出到用戶住家爲自來水的輸出流,從水庫流入到水源爲自來水的輸入流,只有這樣,自來水才能源源不斷地輸送到用戶家中。 如果把水源看成文件,用戶住家爲讀取文件的函數,水庫 ⌘ Read more

⤋ Read More

全面透徹,深刻理解 MySQL 索引
hello,大家好,我是張張,「架構精進之路」公號作者。對於 MySQL 索引,相信每位後端同學日常工作中經常會用到,但是對其索引原理,卻可能未曾真正深入瞭解。B- 樹和 B+ 樹是 MySQL 索引使用的數據結構,對於索引優化和原理理解都非常重要,下面就揭開 B- 樹和 B+ 樹的神祕面紗,讓大家在面試的時候碰到這個知識點一往無前,不再成爲你前進的羈絆!本文主要內容:MySQL 查詢耗時分析,抓 ⌘ Read more

⤋ Read More

xgo: 一款新鮮出爐的 Go 代碼測試利器
大家好,我是江湖十年。我曾經寫過一篇文章《測試代碼終極解決方案 Monkey Patching》,裏面介紹了 Go 語言中的猴子補丁方案。如今,時隔數月我又發現了一款新的工具可以實現 Monkey Patching,本文將帶大家一起嚐鮮下這款新的測試工具表現如何。簡介簡單一句話介紹 xgo:它是一款強大的的 Go 測試工具集,功能包括 Trap、Mock、Trace、增量覆蓋率。當然,開發中最常用 ⌘ Read more

⤋ Read More

使用 Go 語言實現 pping
大家好,我是鳥窩。在前一篇 pping: 被動式 ping,計算網絡時延中,我給大家介紹了 pping 這個工具的原理和使用方法。這篇文章中,我將使用 Go 語言實現 pping 工具。通過這篇文章,你將瞭解到:如何使用 gopacket 來捕獲和解析網絡數據包 如何設置捕獲時長和過濾捕獲的數據包 如何在 CGO 下靜態編譯庫,如 libpcap 瞭解 TCP/IP 協議棧的基本 ⌘ Read more

⤋ Read More

go3d:Go 語言遊戲方向的高性能 2D-3D 數學庫
在面向性能的編程世界中,go3d是爲 Go 語言提供的一款 2D/3D 數學庫,致力於提高圖形計算的效率與速度。適用於那些需要進行向量、矩陣等數學計算以實現圖形處理的應用程序,go3d提供了一套豐富的 API,以支持高效的數學運算。下面,我們將深入瞭解這個庫的主要特性、結構和使用方式,以及如何在項目中有效利用它。主要特性—-高性能設計:go3d庫主要關注於性能,通過優化算法和數據結構來減少計算 ⌘ Read more

⤋ Read More

Go Gio:用 Go 語言編寫跨平臺即時模式 GUI 的庫
在構建現代應用程序的過程中,不同平臺間的兼容性是一個不容忽視的挑戰。Go Gio 是一個用 Go 編程語言開發的庫,它致力於簡化跨平臺 GUI(Graphical User Interface,圖形用戶界面) 的構建工作,提供一種所謂的 “即時” (Immediate Mode) 編程模型。這種模型與傳統的 “保留模式” (Retained Mode) GUI 庫,例如 GTK+ 或 Qt,有所不 ⌘ Read more

⤋ Read More

Go 項目開發中如何讀取應用配置?
幾乎所有的後端服務都需要一些配置項來配置我們的服務,一些小型的項目,配置不是很多,可以選擇只通過命令行參數來傳遞配置,但是大型項目配置很多,通過命令行參數傳遞就變的很麻煩,不好維護,標準的解決方案是將這些配置信息保存在配置文件中,由程序啓動時加載和解析。所以對於一個稍微大型點的系統,配置文件加載和解析就是一個剛需。Go 生態中有很多包可以加載並解析配置,目前最受歡迎的是 Viper 包。Viper ⌘ Read more

⤋ Read More

你還在使用 websocket 實現實時消息推送嗎?
前言在日常的開發中,我們經常能碰見服務端需要主動推送給客戶端數據的業務場景,比如數據大屏的實時數據,比如消息中心的未讀消息,比如聊天功能等等。本文主要介紹 SSE 的使用場景和如何使用 SSE。服務端向客戶端推送數據的實現方案有哪幾種?我們常規實現這些需求的方案有以下三種輪詢 websocket SSE 輪詢簡介在很久很久以前,前端一般使用輪詢來進行服務端向客戶端進行消息的僞推送 ⌘ Read more

⤋ Read More

MySQL 什麼時候鎖表?如何防止鎖表?
Mysql 調優的重點目標: 避免鎖表——————-鎖表會帶來一系列問題,影響數據庫的性能和系統的穩定性。主要是下面的四個問題: 性能問題、死鎖問題、可用性問題、一致性問題1. 鎖錶帶來的性能問題鎖表會阻止其他事務對該表的併發訪問,包括讀操作和寫操作。鎖表會導致嚴重的性能問題:系統吞吐量下降:多個事務需要依次等待鎖的釋放,導致系統整體的吞吐量下降。 用戶體驗差:用戶的 ⌘ Read more

⤋ Read More

Redis 的 RESP 協議真的這麼簡單?抓包分析
聽說 Redis 協議很簡單,那今天就抓個包來一起看看吧。RESP  是什麼 Redis 的序列化協議, 是一種二進制協議,支持多種數據類型,其中,數據的第一個字節(First byte)決定其類型,使用 ( CRLF \r\n) 作爲協議的終止符。 特點:易於實現,快速解析,可直接閱讀 目前有 RESP2 和 RESP3(Redis6 開始) 兩個版本。支持這麼多種類型 👇| RE ⌘ Read more

⤋ Read More

Cloudflare 最佳實踐:如何通過 Go PGO 回收 CPU
Golang 1.20 在 go 編譯器引入了對配置文件引導優化 (PGO) 的支持。這允許指導編譯器根據系統的真實行爲引入優化。在 Cloudflare 的可觀察性團隊中,我們維護着一些基於 Go 的服務,這些服務在全球範圍內使用數千個內核,因此,即使宣傳的節省 2-7%,也能大幅減少我們的 CPU 佔用空間,而且實際上是免費的。這將減少我們內部服務的 CPU 使用率,釋放這些資源來滿足客戶請求 ⌘ Read more

⤋ Read More

用 Rust 進行 TUI 編程:Cursive 庫
在本文中,我們將探索使用 Rust 進行文本用戶界面 (TUI) 編程。TUI 提供了一種通用的方法來創建具有豐富圖形用戶界面的交互式命令行應用程序。我們將使用 Cursive 庫,一個流行的用於構建 TUI 應用程序的 Rust 庫。Cursive 使用聲明式 UI:用戶定義佈局,然後 Cursive 處理事件循環。Cursive 還處理大多數輸入 (包括鼠標點擊),並將事件轉發到當前聚焦的視圖 ⌘ Read more

⤋ Read More

如何構建現代化的 Go 命令行工具?
在 Go 項目開發中,我們需要編寫 main 函數,並編譯成爲二進制文件,部署啓動服務。有多種方式可以開發一個 main 函數。例如你可以手擼一個 main 函數,並在 main 函數中處理命令行參數,配置文件解析,應用初始化等操作。如下所示:package mainimport ( ”flag” ”fmt”)func main() { // 解析命令行參數 option1 := flag.Str ⌘ Read more

⤋ Read More

負載均衡策略與算法詳解
負載均衡策略——在分佈式架構中,負載均衡策略是非常重要的內容。它不僅能在一定程度上保證整個集羣的高可用,而且能夠提高系統的吞吐量,降低服務響應時間。每臺計算機的系統資源都是有限的,能夠承載的任務及處理的請求也是有限的。在分佈式系統中一般通過擴容來增加系統整體的承載能力,但是當大量併發的請求發生時,如果請求分配不均勻,就會導致部分機器收到了大量請求,而部分機器非常空閒,這種現象輕則導致吞吐率 ⌘ Read more

⤋ Read More

用 Go 實現一個無界資源池
寫在文章開頭——我們希望通過 go 語言實現一個簡單的資源池,而這個資源池的資源包括但不限於:數據庫連接池 線程池 協程池 網絡連接池 只要這些資源實現我們指定的關閉方法,則都可以通過我們封裝的資源池進行統一管理,需要簡單說明一下這個資源池的要求:需要用戶指定資源以及資源的創建方法。 當協程通過Acquire方法獲取資源時,若發現當前池中有資源可以分配則直接返 ⌘ Read more

⤋ Read More

深入理解 API Gateway:微服務架構的關鍵入口
在微服務架構日益盛行的今天,API Gateway(API 網關)已成爲其中不可或缺的一部分。API Gateway 不僅作爲客戶端和微服務之間的橋樑,還提供了路由、認證、限流、監控等一系列功能,對於提升整個微服務架構的可靠性、可維護性和安全性具有重要作用。本文將深入講解 API Gateway 的概念、核心功能、實現方式、流行的 API Gateway 工具以及應用案例。一、API Gatewa ⌘ Read more

⤋ Read More

從 MongoDB 到 PostgreSQL:數據零丟失、成本砍半
Infisical 是一家開源的密鑰管理平臺,爲團隊及基礎設施提供同步密鑰的服務並防止密鑰泄露。隨着業務不斷髮展、數據不斷增加,原有數據庫已無法滿足當前需求,Infisical 決定從 MongoDB 遷移到 PostgreSQL 。本文將分享這一從非關係型數據庫遷移至關係型數據庫的決策判斷及背後的遷移故事。Infisical 在過去一年裏迅速擴張,目前平臺每天處理超過 5000 萬個密鑰,向需要 ⌘ Read more

⤋ Read More

不畏移山,手機 QQ 技術架構升級變遷史
手機 QQ 經過 20 多年發展,功能不斷增加,代碼不斷累積,架構已經變得越來越臃腫,影響到協作團隊開發效率,對用戶體驗、質量穩定都有較大風險,因此手機 QQ 亟需技術架構的升級。但是對如此龐大的項目進行架構升級,在行業內也是少有的,手機 QQ 架構升級面臨的困難和挑戰都十分巨大,本文將圍繞項目背景、項目歷程、項目挑戰、項目成果等方面進行深入介紹。 01歷史包袱在過去 20 多年裏,手機 Q ⌘ Read more

⤋ Read More

GitHub 9-8k 的 Go 語言 2D 遊戲引擎 ebiten
前言–hi,大家好,這裏是白澤。今天給大家分享一個 GitHub 🌟9.8k 的 Go 語言 2D 遊戲引擎。https://github.com/hajimehoshi/ebiten引擎的貢獻者依舊在積極維護,是一個兼具學習 & 娛樂的項目!爲此我也用這個引擎寫了一個生存遊戲: avoid-the-enemies【如下圖】:https://github.com/BaiZe1998/avoid-Read more

⤋ Read More

Go 通過 ETCD 實現應用選主
原理Go 服務通過 ETCD client 實現有狀態服務的選主,A、B 兩個服務通過生成相同前綴的 key,並且把自己的 IP 值上傳給 ETCD,由於多個服務間會同時上傳,所以按照相同前綴去獲取創建的 key-value,然後通過時間進行排序,最早創建的則成爲 master。如果成爲 master 的服務一直在線的話,會對 key-value 進行 續約, 當 master 下線不能正常續約的 ⌘ Read more

⤋ Read More

Redis 實現延遲隊列的方案總結
redis 是我們項目開發中常見的技術中間件,它除了可以實現常見的分佈式鎖和分佈式緩存功能之外,還可以幫助我們實現很多的功能,如延遲隊列。下面介紹幾種 redis 常見的實現延遲隊列的方案。 1、通過過期 key 通知實現     實現思路:首先開啓 redis 的 key 過期通知,然後在業務中給 key 設置過期時間,到了過期時間後 redis 會自動的將過期的 key 消息推送給 ⌘ Read more

⤋ Read More

Go 通道的高級玩法
大家好!我是 lincyang。在之前的討論中,我們已經探索了 Go 語言中通道(channel)的基本使用和核心概念。今天,我們將深入探討一些更高級的通道操作技巧,特別是單向通道的使用,以及如何通過它們提高代碼的安全性和模塊性。單向通道的介紹在 Go 中,通道通常是雙向的,意味着它們既可以發送數據也可以接收數據。然而,在某些情況下,限制通道只發送或只接收可以提高程序的可讀性和運行時安全。這就是單 ⌘ Read more

⤋ Read More

如何使用 Redis Streams 實現消息隊列
一  背景  在上一篇文章 Redis Streams 原理介紹,使用場景及基於 Golang 實現的使用示例  講解了關於 Redis Streams 的原理,使用情況,提到過它最主要是用在消息隊列中。這篇文章,就基於 Redis Streams 實現消息隊列以及如何基於 Golang 實現它的消息隊列。二 Redis Streams 相關操作命令Redis Streams 實現消息隊列的流程 ⌘ Read more

⤋ Read More

線上百萬 MQ 消息積壓的快速處理方案
在我們日常的生產環境上,由於某些原因(如消費者代碼中 bug、消費者端使用的中間件存在性能問題)導致消費者不能處理消息或者消費者處理速度極慢進而導致了線上出現百萬的消息積壓。    假設現在存在百萬消息在消息隊列中堆積,我們如何快速的消費完這些消息呢? 1、優化消費者的代碼     由於消費者現在是消費速度不夠導致了 MQ 消息的積壓,所以我們可以將消費的代碼做優化(如減少業務中不必要 ⌘ Read more

⤋ Read More

Linux 內核發送網絡數據
前言–我們開始今天對 Linux 內核⽹絡發送過程的深度剖析。還是按照我們之前的傳統,先從⼀段代碼作爲切⼊。 上述代碼中,調⽤ send 之後內核是怎麼樣把數據包發送出去的。本⽂基於 Linux 3.10,⽹卡驅動採⽤ Intel 的 igb 舉例。基礎框架—-我們看到⽤戶數據被拷⻉到內核態,然後經過協議棧處理後進⼊到了 RingBuffer 中。隨後⽹卡驅動真正將數據發送了出去。當發 ⌘ Read more

⤋ Read More

400 行代碼構建一個迷你版 React!
作者 | Zachary Lee 翻譯、整理|編程界 React v19 beta 已經發布。與 React 18 相比,它提供了許多用戶友好的 API,但其核心原則基本保持不變。你可能已經使用 React 有一段時間了,但你知道它的內部工作原理嗎?本文將幫助你構建一個約 400 行代碼的 React 版本,它支持異步更新並可以中斷——這是 React 的核心功能,許多高級 API 都 ⌘ Read more

⤋ Read More

瀏覽器節能機制導致 Websocket 斷連的巨坑!
作者:tager 原文:https://juejin.cn/post/7362576319928008755你踩過嗎?瀏覽器節能機制導致 Websocket 斷連的坑~近期,在使用WebSocket(WS)連接時遇到了頻繁斷連的問題,這種情況在單個用戶上每天發生數百次。儘管利用了socket.io的自動重連機制能夠在斷連後迅速恢復連接,但這並不保證每一次重連都能成功接收WS消息。因此,我 ⌘ Read more

⤋ Read More

解決日誌開關需求:SpringBoot 實現熱插拔 AOP
現在有這麼一個需求:就是我們日誌的開與關是交給使用人員來控制的,而不是由我們開發人員固定寫死的。大家都知道可以用 AOP 來實現日誌管理,但是如何動態的來實現日誌管理呢?AOP 源碼中的實現邏輯中有這麼一個步驟,就是會依次掃描 Advice 的實現類,然後執行。我們要做的就是自定義一個 Advice  的實現類然後,在用戶想要開啓日誌的時候就把 Advice 加到項目中來,關閉日誌的時候就把 Ad ⌘ Read more

⤋ Read More

Redisson 分佈式鎖的源碼解讀
之前秒殺項目中就用到了這個 Redisson 分佈式鎖 👇,這篇就一起來看看源碼吧!tryLock 加鎖 流程 // RedissonLock.java@Overridepublic boolean tryLock() {    return get(tryLockAsync());}@Overridepublic RFutureBoolean tryLockAsync() {    retur ⌘ Read more

⤋ Read More

思考 Rust:爲何摒棄繼承?從函數與方法的區別談起
在 Rust 中,函數和方法是編寫代碼的基礎,它們在某些方面是類似的,但在本質上有重要的不同。在本文中,我們將探討這些區別,並解釋方法調用的本質及其與普通函數調用的聯繫,以及對 Rust 面向對象的思考。函數 Vs 方法——–首先,定義一個函數和一個方法:函數(Function)函數是一個獨立的代碼塊,它可以接受參數、進行計算並返回一個值。函數不綁定到任何對象或實例。 例子:fn add ⌘ Read more

⤋ Read More