yue-fang-readfog

feeds.twtxt.net

No description provided.

Recent twts from yue-fang-readfog

說下 10 個高級的 SQL 查詢技巧
隨着數據量持續增長,對合格數據專業人員的需求也會增長。具體而言,對 SQL 流利的專業人士的需求日益增長,而不僅僅是在初級層面。因此,Stratascratch 的創始人 Nathan Rosidi 以及我覺得我認爲 10 個最重要和相關的中級到高級 SQL 概念。那個說,我們走了!1. 常見表表達式(CTEs)——————-如果您想要查詢子查詢,那就是 CTEs 施展身 ⌘ Read more

⤋ Read More

解碼分佈式系統:深入探討 CAP 定理和 ACID 特性
介紹在分佈式系統的世界中航行需要處理多個複雜的概念和原則。兩個經常提到的基本原則是 CAP 定理和 ACID 特性。這些原則在塑造分佈式系統的設計和行爲中起着關鍵作用。本文旨在解構這些概念並深入探討它們的影響。瞭解 CAP 定理CAP 定理由計算機科學家 Eric Brewer 提出,是適用於分佈式系統的一個原則。它指出分佈式數據存儲不可能同時提供以下三個保證中的超過兩個:1. 一致性(Consi ⌘ Read more

⤋ Read More

如何動態匹配 tokio 派生線程?
當我們在使用 tokio 和 MPSC(多生產者單消費者) 通道時,通常以某種固定的方式連接派生線程。然而,在最近項目中,必須在各種配置中動態匹配異步生產者和消費者。在這篇文章中,讓我們來看看如何實現這種非常有用的動態匹配模式。 首先,我們創建一個關於餐廳的 Rust 項目:cargo init restaurant在 Cargo.toml 文件中加入依賴項:

⤋ Read More

linux 內核 - coredump 的觸發機制
在之前的文章中,我們大致說明了 coredump 的生成機制,也就是 coredump 文件的生成流程。但是實際上,這個流程並不是 coredump 獨用,而是一套通用流程。在這個流程中,有信號產生方、信號存儲方、信號消費方。在這三個階段,其中信號和中斷有類似的地方,但是二者並不等價。 信號本質上是在軟件層次上對中斷機制的一種模擬,其主要有以下幾種來源: 程序錯誤:除零,非法內存訪問等。 ⌘ Read more

⤋ Read More

linux 的 5 種 IO 模型
一、這裏 IO 是什麼  操作系統爲了保護自己,設計了用戶態、內核態兩個狀態。應用程序一般工作在用戶態,當調用一些底層操作的時候(比如 IO 操作),就需要切換到內核態纔可以進行服務器從網絡接收的大致流程如下: 1、數據通過計算機網絡來到了網卡2、把網卡的數據讀取到 socket 緩衝區3、把 socket 緩衝區讀取到用戶緩衝區,之後應用程序就可以使用核心就是兩次讀取操作,五大 IO 模型的 ⌘ Read more

⤋ Read More

萬字長文:Go 語言流行 ORM 框架 GORM 使用詳解
GORM 是 Go 語言中最受歡迎的 ORM 庫之一,它提供了強大的功能和簡潔的 API,讓數據庫操作變得更加簡單和易維護。本文將詳細介紹 GORM 的常見用法,包括數據庫連接、模型定義、CRUD、事務管理等方面,幫助大家快速上手使用 GORM 進行 Web 後端開發。安裝通過如下命令安裝 GORM:$ go get -u gorm.io/gorm你也許見過使用 go get -u github. ⌘ Read more

⤋ Read More

負載均衡原理最全詳解 -萬字圖文總結-
大家好,我是 mikechen。負載均衡是大型架構的關鍵技術,也是大廠重點考察方向,下面我就全面來詳解負載均衡原理 @mikechen負載均衡負載均衡,全稱是 Load Balancing,很多時候我們簡稱 “LB”,它可以在多個服務器、或其他資源之間,分配工作負載。如下圖所示:通過增加服務器數量,比如:上圖的 tomcat-node1、tomcat-node2、tomcat-node3… 等 ⌘ Read more

⤋ Read More

超炫酷, 不用學前端也能自己做網頁!這個 Python 庫,10 分鐘內復刻 GPT WEB 應用
今天,我要和大家分享如何將請求 GPT 的案例,快速 “復刻” 成 GPT 網頁版。這不僅簡單,而且對於我們這些後端開發者來說,簡直是福音!先睹爲快—-看看這個界面,是不是感覺很熟悉? 這就是我們今天要介紹的主角 - Streamlit,此篇文章我們僅僅從復刻一個聊天機器人的角度介紹,認識一下其強大之處。初識 Streamlit————Streamlit 是一個開源的 Pyt ⌘ Read more

⤋ Read More

Nuitka,Python 打包神器!
pyinstaller 和 Nuitka 使用感受1.1 使用需求——–這次也是由於項目需要,要將 python 的代碼轉成 exe 的程序,在找了許久後,發現了 2 個都能對 python 項目打包的工具——pyintaller 和 nuitka。這 2 個工具同時都能滿足項目的需要:隱藏源碼。這裏的 pyinstaller 是通過設置 key 來對源碼進行加密的;而 nuitka 則 ⌘ Read more

⤋ Read More

Vue 反編譯 dist 包到源碼
作者:wsqy https://juejin.cn/post/7359893196439207972最近由於公司老項目上的問題,由於項目很老,之前交接的源碼包中缺少了很大一部分模塊,但是現在線上的環境和 dist 包是正常運行的,領導希望能夠手動將這部分補全,由於前期項目的不規範,缺少接口文檔以及原型圖,因此無法知道到底該如何補全,因此,我想着能不能通過 dist 包去反編譯源碼包呢,經 ⌘ Read more

⤋ Read More

系統設計:設計 URL 短鏈接工具
這是一個系統設計問題,要求從頭開始設計一個類似於 TinyURL 或 Bitly 的 URL 短鏈接工具。我們將涵蓋從設計需求、架構和組件設計到高性能擴展和安全最佳實踐的各個方面。定義範圍:功能性和非功能性需求首先,我們需要定義該系統的功能性和非功能性需求。我們有兩個功能性需求:給定一個長 URL 時,我們必須創建一個短 URL2. 給定一個短 URL 時,我們必須將用戶重定向到長 URL。該服務 ⌘ Read more

⤋ Read More

內存是怎樣一步步被分配出來的?
大家好,我是小風哥,今天簡單聊聊內存分配。 我們申請一塊內存時計算機內部發生了什麼?看下這句代碼:這裏有兩部分,一個是 malloc,再一個是你寫的代碼。malloc 實際上屬於標準庫,標準庫裏有什麼呢?數學相關的函數,sin、cos、絕對值、數冪函數等;字符相關函數,判斷大小寫等;字符串操作函數、字符串拷貝、拼接比較等;當然還有內存管理函數,就是這裏提到的 malloc/free,當然還有很多 ⌘ Read more

⤋ Read More

Rust 的併發模型 vs Go 的併發模型:Stackless 協程 vs Stackfull 協程
雖然 Rust 和 Go 都是從上一代編程語言的錯誤中吸取教訓的現代編程語言,但它們以完全不同的方式管理併發,這對性能和開發人員體驗有巨大的影響。但首先,我們爲什麼需要併發?今天,大多數程序與需要一定時間才能返回響應的資源進行交互:例如網絡或磁盤。如果我們在等待網絡響應的同時完全阻塞程序的執行,這將是對硬件的一種相當低效的使用!這就是爲什麼 Go 和 Rust 在等待 I/O(輸入 / 輸出) 時 ⌘ Read more

⤋ Read More

NeoVim 打造成跟 Goland 一樣好用的 IDE
在軟件開發領域,集成開發環境(IDE)的選擇對程序員的效率和生產力起着舉足輕重的作用。對於尋求精簡而強大的編碼體驗的 Golang 開發者來說,配置 Neovim 是一個不錯的選擇。本文分享完整的 Golang NeoVim 的設置,幫助你將 NeoVim 打造成媲美 Goland 的開發環境。初始設置將以下內容添加到 .vimrc 或 init.vim 文件中。set expandtabset ⌘ Read more

⤋ Read More

如何爲 Langchain Agent 添加記憶功能?
0 前言—-在開發複雜的 AI 應用時, 賦予 Agent 記憶能力是一個關鍵步驟。這不僅能提高 Agent 的性能, 還能使其在多輪對話中保持上下文連貫性。本文將詳細介紹如何在 Langchain 框架中爲 Agent 添加記憶功能, 並深入解析每個步驟的原理和最佳實踐。Agent 記憶功能的核心組件在 Langchain 中,構建具有記憶功能的 Agent 主要涉及三個核心組件:工具 (T ⌘ Read more

⤋ Read More

zig-rust - 新物種的對比
Zig 和 Rust 都是現代編程語言,它們都因注重安全性和性能而備受關注,但它們有着不同的理念和設計目標。很多開發者都對二者有濃厚的興趣,我們來了解下 Zig 和 Rust 這兩個新物種之間的差別。語言理念和目標Rust 的設計目標是在不犧牲性能的前提下提供內存安全性。Rust 的目標是成爲編寫大型系統和應用程序的實用語言,重點關注零成本抽象、安全性和併發性。 Zig 的設計則簡單明瞭。Z ⌘ Read more

⤋ Read More

Nginx 反向代理最全詳解 -圖文全面總結-
大家好,我是 mikechen。Nginx 反向代理大型網站必備的,也是大廠經常考察的,下面我就全面來詳解 Nginx 反向代理 @mikechen正向代理正向代理最大的特點是:客戶端非常明確要訪問的服務器地址,服務器只清楚請求來自哪個代理服務器,而不清楚來自哪個具體的客戶端,正向代理模式屏蔽或者隱藏了真實客戶端信息。例如:在大陸訪問 www.google.com,我們需要一個代理服務器,我們通過 ⌘ Read more

⤋ Read More

10 萬行數據耗時 500 毫秒,使用 rust 的 nom 框架實現時序數據庫協議解析 -下-
table data-sort=“sortDisabled” width=“578”tbodytrtd valign=“top” align=“center” width=“577” class=““strongnom 解析時序數據庫協議/strong/td/tr/tbody/table上回我們瞭解了 nom 框架的原理及核心的解析器,這一回我們使用 nom 解析時序數據庫協議,鞏固和提升對 no ⌘ Read more

⤋ Read More

新手挑戰一小時學一種 Rust 框架之解析框架 nom —— 實現時序數據庫協議解析(上)
table data-sort=“sortDisabled” width=“578”tbodytrtd valign=“top” align=“center” width=“577”sectionstrongnom 簡介/strong/section/td/tr/tbody/tablenom 是一個通用的協議解析框架,提供了通用的解析算子和組合器,聚焦於安全的、零拷貝的、面向流模式的強大解析功能。 ⌘ Read more

⤋ Read More

分佈式事務設計與實踐
異步消息隊列:用於在服務之間傳遞事務信息和狀態,確保各服務可以異步地處理事務操作。 事務協調器:負責協調和管理全局事務的狀態,包括提交和回滾操作。 補償機制:在事務失敗時,通過補償操作來回滾或修復之前的操作,以保證數據的一致性。 設計步驟1. 事務初始化事務發起者:事務開始時,由事務發起者(例如用戶請求服務)向事務協調器發起一個全局事務。 事務 ID:事務協調器生成一個全局 ⌘ Read more

⤋ Read More

1 號店的抽獎系統架構實踐(限流削峯到性能優化)
你好,我是悟空。————抽獎是一個典型的高併發場景應用,平時流量不多,但遇到大促活動,流量就會暴增,今年的週年慶期間的日均 UV 就超過百萬。在過去的一年裏,負責過這個項目的多次重構工作,期間各種踩坑無數,就以此文當做總結,來聊聊我們是如何架構這個高併發系統吧。————————————————————- ⌘ Read more

⤋ Read More

Go 設計模式:責任鏈和函數選項,讓你的代碼更優雅!
最近接觸到越來越多有歷史 “沉澱” 的 Go 項目,深感設計模式和及時干預的重要性。近期會分享一些設計模式,一起學習代碼設計!今天的分享的設計模式是:責任鏈和函數選項模式。在日常程序裏是比較常用的。很多開源庫中也有使用。責任鏈模式—–責任鏈模式(Chain of Responsibility Pattern)是一種行爲設計模式,它允許對象將請求沿處理程序鏈進行傳遞。程序鏈既可以處理請求,也可 ⌘ Read more

⤋ Read More

系統設計:設計類似 WhatsApp 的應用
在這個系統設計場景中,我們被要求設計一個類似 WhatsApp 的消息應用程序。雖然在實際的討論中可能會重點討論該應用程序的一個或多個功能,但在本文中,我們將對系統的架構進行一個高層次的概述,然後可以根據需要深入探討具體的領域。明確功能需求通過向業務方提問來縮小範圍,因爲在一個小時內設計整個 WhatsApp 平臺是不現實的:• 主要用例: 該應用的主要目的是發送、檢查和接收消息,以及閱讀和標記消 ⌘ Read more

⤋ Read More

Htmx 2-0 發佈:用易懂的 HTML 屬性取代複雜 JavaScript 框架
作者 | Tim Anderson譯者 | 王強策劃 | Tina用於擴展 HTML 規範的 Htmx 項目發佈了 2.0 版,這是該項目自 2020 年 11 月 發佈 1.0 版以來的第一個主要版本。Htmx 2.0 取消了對 Internet Explorer 的支持,並將擴展項移出了核心存儲庫,這樣每個擴展都可以按照自己的節奏發佈更新了。新版本還刪除了一些已棄用的屬性,並將 HTTP DE ⌘ Read more

⤋ Read More

萬字解析 mysql innodb 事務實現原理
0 前言近期在持續學習 mysql innodb 底層技術細節相關內容,繼上期鎖原理篇之後,本期我們以 innodb 中的事務實現原理作爲主題,展開交流探討.有關本篇內容的目錄大綱展示如下:| 章節 | 小節 | 備註 || — | — | — || 1 事務基本概念 | 1.1 原子性 Atomicity | 事務原子性的概念;innodb 如何保證原子性 || 1.2 一致性 Co ⌘ Read more

⤋ Read More

Rust 如何避免 Box 常見的使用陷阱?
在系統編程的世界裏,有效和安全地管理內存是一個關鍵的挑戰。Rust 以其獨特的內存管理方法脫穎而出,提供了強大的工具來處理這種複雜性。其中一個工具是 BoxT 類型,它以一種與 Rust 的所有權和借用規則無縫集成的方式進行堆分配。本文將深入探討 BoxT 的工作原理、它的優點、在 Rust 編程中的用例以及常見的使用陷阱。理解 BoxTBoxT 類型是 Rust 的智能指針之一,它提供了一種在堆 ⌘ Read more

⤋ Read More

Vue 單文件組件 SFC
Vue 單文件組件 (Single File Components, SFC) 是 Vue.js 提供的一種組件格式,允許開發者在一個文件中編寫組件的模板、腳本和樣式。SFC 通常以 .vue 文件爲擴展名。以下是 SFC 的工作原理和其各個部分的詳細解釋:SFC 文件結構一個典型的 Vue SFC 文件包含三個部分:模板 (template):定義組件的 HTML 結構。2. 腳本 (scrip ⌘ Read more

⤋ Read More

Linux 服務管理之 syste
簡介systemd 是一種用於 Linux 操作系統的初始化系統和服務管理器,由 Lennart Poettering 主導開發並在 LGPL 2.1 及其後續版本許可證下開源發佈。自 2010 年代中期以來,systemd 已經廣泛被多數主流 Linux 發行版採用,如 Ubuntu、Fedora、openSUSE、Debian 和 CentOS/RHEL 7 及以後版本,作爲默認的初始化系統取 ⌘ Read more

⤋ Read More

Rust 中 Future 的 liveness 問題
引言–Rust 的 futures 與大多數其他語言支持異步計算的方式不同; 除非你定期輪詢它們, 否則它們不能保證取得進展。具體來說, Future 有一個 poll 函數, 它接受一個 Waker, 當 future 可以取得進展時, 它會調用 Waker 的 wake 方法, 然後 “某些東西” 應該再次調用 poll。這主要由執行器 (如 tokio、 embassy 等) 處理, 執行 ⌘ Read more

⤋ Read More

一文講清楚 localhost 和 127-0-0-1 的區別
在進行網絡和 Web 開發時,經常會用到 “localhost” 和 “127.0.0.1” ,localhost 和 127.0.0.1 在大多數情況下可以互換使用,但它們在概念上是不同的:localhost 是本機域名。 127.0.0.1 是本機 IP 地址。 localhost 通過系統的 host 文件會自動解析到 127.0.0.1。localhost 和 127.0.0. ⌘ Read more

⤋ Read More

go 語言調用 shell 命令有這麼兩種方式,都用過了?
阻塞方式 (需要執行結果) 主要用於執行shell命令,並且返回shell的標準輸出適用於執行普通非阻塞 shell 命令,且需要 shell 標準輸出的//阻塞式的執行外部shell命令的函數,等待執行完畢並返回標準輸出func execshell(s string) (string, error){    //函數返回一個Cmd,用於使用給出的參數執行name指定的程序    cmd := ⌘ Read more

⤋ Read More

Rust 在數據工程領域中的應用
近年來,數據工程領域發生了重大變化。數據系統日益複雜,對實時處理的需求,以及對可靠性和性能的不斷需求,促使人們尋找更健壯的編程語言。這就是 Rust 的用武之地,Rust 的增長速度非常快:在這些競爭者中,Rust 在 2024 年作爲數據工程師的強大工具出現了,它承諾內存安全性、併發性和高效性。但是,究竟是什麼讓 Rust 成爲數據工程的合適選擇,以及如何在這個領域有效地利用它?Rust 在數據 ⌘ Read more

⤋ Read More

10 個提高生產力的 Go 小技巧
最近 Phuong Le 大佬針對日常開發 Go 項目時,總結了一些好用的 Go 小技巧。看了後,感覺對於剛入門 Go 的同學有一定的學習價值。可以挑好的學。應用到自己項目裏。以下內容分享給大家。在開發 Go 生產項目時,我發現自己經常重複編寫代碼和使用某些技術,直到後來回顧自己的工作時才意識到這一點。下面是從總結經驗中挑選的一些有用的代碼片段,希望對大家有所幫助。計時技巧——-如果你對跟 ⌘ Read more

⤋ Read More

在 Rust 中使用 SQLX 集成 SQLite 數據庫
SQLite 是一個 c 語言庫,它實現了一個小型、快速、自包含、高可靠性、全功能的 SQL 數據庫引擎,與 Rust 的安全性和性能非常匹配。sqlx crate 是一個很棒的工具,可以提供到各種數據庫 (包括 SQLite) 的異步連接。sqlx 的美妙之處在於它可以在編譯時檢查 SQL 查詢語句以及它與 Rust 異步特性的兼容。在這篇文章中,我們將探索如何使用 sqlx 將 Rust 與 ⌘ Read more

⤋ Read More

PocketBase:一體化的開源 Go 語言實時後端
PocketBase 是一個開源的實時後端解決方案,採用單一文件的形式進行分發。它由嵌入式數據庫 (SQLite) 和實時訂閱功能組成,提供了開箱即用的文件和用戶管理功能、方便的管理儀表板 UI 以及簡單的 REST 風格 API。本文將深入探討 PocketBase 的功能、安裝、示例代碼和一些高級的應用技巧。主要特性—-嵌入式數據庫PocketBase 內嵌 SQLite 數據庫,這意味着 ⌘ Read more

⤋ Read More

提高系統的併發能力方案
面試中經常會被問到如何提高系統的併發能力,針對此問題我整理如下的提高系統併發能力的方案: (1)分流方案:常見的的方案有負載均衡、數據庫拆分 / 集羣、消息隊列(2)導流方案:緩存、CDN(3)系統自身優化:數據庫優化、代碼優化(4)增加資源:增加服務器、CPU、內存等硬件資源1、分流方案——負載均衡    使用負載均衡技術可以將請求分發到多個服務器上進行處理,從而提高系統的併發處理能力 ⌘ Read more

⤋ Read More

Go: 使用依賴注入實現 Gin 框架路由處理函數的解耦
在 Go 語言開發中,Gin 是一個非常流行的 Web 框架。其輕量級、高性能的特點,使其成爲許多開發者的首選。然而,在實際項目中,隨着業務邏輯的複雜化,我們往往會遇到代碼耦合嚴重、測試困難等問題。依賴注入(Dependency Injection, DI)是一種有效的解耦手段,能夠幫助我們實現代碼的高內聚、低耦合,從而提升代碼的可維護性和可測試性。本文將探討如何在 Gin 框架中使用依賴注入來解 ⌘ Read more

⤋ Read More

長文梳理!近年來 GPT 系列模型的發展歷史:從 GPT-1 到 GPT-4o(前世、今生)
引言–隨着 ChatGPT 的發佈,大語言模型的關注度和數量都在不斷上升, 它引領了人類進入了大模型時代,並且隨着一輪一輪的迭代,最新模型已經進化到了 GPT-4o。在衆多大語言模型中,GPT 系列因其代表性而備受關注,其發展歷程和技術革新值得深入探討。那麼今天帶大家回顧一下近年來 GPT 系列模型的發展。【參考中國人民大學《大語言模型》】GPT 系列模型的基本原理是訓練模型學習恢復預訓練文本數 ⌘ Read more

⤋ Read More

Go:執行跟蹤變得更加強大
簡介Go 語言的 runtime/trace 包含一個強大的工具,用於理解和排查 Go 程序。其中的功能允許跟蹤每個 goroutine 在一段時間內的執行情況。然後,使用 go tool trace 命令(或優秀的開源工具 gotraceui)可以可視化和探索這些跟蹤中的數據。跟蹤的魔力在於,它可以輕鬆地揭示程序中其他方式難以看到的東西。例如,在 CPU 概要文件中很難看到併發瓶頸,因爲沒有要採 ⌘ Read more

⤋ Read More

分庫分表最全詳解 -圖文全面總結-
大家好,我是 mikechen。分庫分表是大型架構的必備技能,也是大廠重點考察的對象,下面我就全面來詳解分庫分表 @mikechen分庫分表分庫分表是數據庫設計、和管理中的一種策略,主要解決隨着數據量、和併發訪問量的增加而帶來的性能、和擴展性問題。分庫分表,主要就是兩種常用手段:“分庫”、和 “分表”。如下圖所示:分庫(Database Sharding): 將數據按照某種規則,分散到多個獨立的數 ⌘ Read more

⤋ Read More

Go singlefight 源碼詳解
寫在前面 通俗的來說就是 singleflight 將相同的併發請求合併成一個請求,進而減少對下層服務的壓力,通常用於解決緩存擊穿的問題。詳解基礎結構—-golang.org/x/sync/singleflight singleflight 結構體:type call struct { wg sync.WaitGroup // 這些字段在 WaitGroup 結束前寫入一次 // 只有在 W ⌘ Read more

⤋ Read More

OpenResty-Lua-Redis-MQ 實現高 QPS 下熱點數據的存取方案
京東、淘寶首頁每天的訪問量是非常的大,如果不對首頁上的一些熱點數據做技術上的處理就會出現首頁的訪問速度慢,甚至在高併發下無法打開首頁,這些都會嚴重的影響用戶的體驗。首頁常見的熱點數據是輪播圖,下圖是京東和淘寶首頁的輪播圖:    每個用戶打開京東、淘寶網站的首頁都會出現這個輪播圖,由於平臺是國內知名的購物平臺,所以其 QPS 是非常高的;另外這個輪播圖也是可以做更改和替換來達到展示不同的圖 ⌘ Read more

⤋ Read More

高性能架構設計之緩存策略
在構建高性能的系統架構時,緩存策略是至關重要的一環。通過合理使用緩存,我們可以顯著減少數據庫的訪問次數,降低網絡延遲,從而提高系統的響應速度和吞吐量。本文將深入探討緩存的類型、使用場景、緩存一致性以及數據同步等關鍵內容。一、緩存類型緩存按照其存儲位置和用途,可以分爲多種類型。以下是幾種常見的緩存類型:本地緩存本地緩存通常指的是進程內的緩存,如 Java 中的 HashMap、ConcurrentH ⌘ Read more

⤋ Read More

Go:標準庫 bufio 包詳解
引言在日常開發中,對文件或輸入輸出流進行讀寫操作是非常常見的任務。Go 語言標準庫中的bufio包提供了數據的緩衝讀寫功能,使得讀寫操作更加高效。本文將詳細介紹bufio包的主要功能及其在實際編程中的應用場景。bufio 包概述bufio包主要提供了緩衝讀寫的能力,通過包裝一個io.Reader或io.Writer對象,創建一個帶緩衝的(buffered)讀寫器。使用緩衝可以減少對底層 IO 資源 ⌘ Read more

⤋ Read More

如何實現 Redis 和 Mysql 中數據雙寫一致性
在我們的實際開發中,我們用到了 redis 緩存一些常用的數據(如熱點數據)用來提高系統的吞吐量。    但是不可以避免的出現了數據的修改場景,這就導致了數據庫中的數據和 Redis 中出現不一致性的情況。如何保證數據一致性就顯得非常重要了,下面介紹一下保證數據的雙寫一致性的方案。1、先刪緩存再操作數據庫方案    在 redis 一般寫的場景下對數據的更新操作是不推薦使用的,推薦使用刪除 ⌘ Read more

⤋ Read More

使用 Golang 開發 eBPF 的應用
大多數時候, 我們在開發軟件或使用軟件時, 都在操作系統的安全邊界內運行。我們甚至不知道 IP 數據包是如何從網絡接口被接收的, 或者當我們保存文件時, inode 是如何被文件系統處理的。這個邊界被稱爲用戶空間, 我們在這裏編寫應用程序、庫和工具。但還有另一個世界, 即內核空間。操作系統內核就駐留在這裏, 負責管理系統資源, 如內存、CPU 和 I/O 設備。通常我們不需要深入到 socket ⌘ Read more

⤋ Read More

在 Go 中如何讓結構體不可比較?
最近我在使用 Go 官方出品的結構化日誌包 slog 時,看到 slog.Value 源碼中有一個比較好玩的小 Tips,可以限制兩個結構體之間的相等性比較,本文就來跟大家分享下。在 Go 中結構體可以比較嗎?在 Go 中結構體可以比較嗎?這其實是我曾經面試過的一個問題,我們來做一個實驗:定義如下結構體:type Normal struct { a string B int}使用這個結構體分別聲明 ⌘ Read more

⤋ Read More