作者 \\| 百度小程序團隊 導讀 introduction對於剛接觸 Golang 學習的同學,估計比較難掌握的知識點之一就是文件 IO 處理,光在基礎庫裏會發現 golang 除了 io 包提供文件處理外,os 包,http 包,embed 包都有提供類似的處理,由於 Golang 的繼承表達採用的是隱式的表達, 所以他們之間有什麼關係?能否相互轉換處理?是非常難一眼看出來的。本文就幫大家完整地 ⌘ Read more
作者 \\| 百度小程序團隊 導讀 introduction對於剛接觸 Golang 學習的同學,估計比較難掌握的知識點之一就是文件 IO 處理,光在基礎庫裏會發現 golang 除了 io 包提供文件處理外,os 包,http 包,embed 包都有提供類似的處理,由於 Golang 的繼承表達採用的是隱式的表達, 所以他們之間有什麼關係?能否相互轉換處理?是非常難一眼看出來的。本文就幫大家完整地 ⌘ Read more
大家好,我是小富~前言--本文是《ShardingSphere5.x 分庫分表原理與實戰》系列的第五篇文章,我們一起梳理下ShardingSphere框架中的核心部分分片策略和分片算法,其內部針爲我們提供了多種分片策略和分片算法,來應對不同的業務場景,本着拿來即用的原則。這次將詳細介紹如何在ShardingSphere-jdbc中實戰 5 種分片策略和 12 種分片算法,自定義分片算法,比較它們的 ⌘ Read more
隨着互聯網安全性的日益重要,HTTPS 協議逐漸成爲網站加密通信的標配。Nginx 作爲一款高性能的 HTTP 和反向代理服務器,自然支持 SSL/TLS 加密通信。本文將詳細介紹如何在 Nginx 中配置 SSL,實現 HTTPS 的訪問。一、準備 SSL 證書首先,我們需要準備 SSL 證書。你可以選擇從證書頒發機構(CA)購買商業證書,也可以自己生成自簽名證書。自簽名證書雖然免費,但不會被瀏 ⌘ Read more
fsevents 是一個專爲 macOS 設計,利用 Node.js 實現對文件系統變動進行高效監控的包。通過本文,你將學習如何使用 fsevents 來實時監聽目錄和文件的變化,處理各種文件事件,爲你的項目增添實時文件監控功能。🚀 開始使用 fsevents----------------要使用 fsevents,首先你需要安裝這個包。由於 fsevents 僅支持 macOS 系統,並且要求 ⌘ Read more
1 引言----流式編程的概念和作用Java 流 (Stream) 是一連串的元素序列,可以進行各種操作以實現數據的轉換和處理。流式編程的概念基於函數式編程的思想,旨在簡化代碼,提高可讀性和可維護性。Java Stream 的主要作用有以下幾個方面:簡化集合操作: 使用傳統的 for 循環或迭代器來處理集合數據可能會導致冗長而複雜的代碼。而使用流式編程,能夠用更直觀、更簡潔的方式對集合進行過濾、映 ⌘ Read more
在日誌管理和觀測性領域,開源項目 SigLens 毫無疑問是一個耀眼的新秀。據稱,SigLens 的效率是 Splunk 的 100 倍,可以將觀測成本降低 90%,這一成就足以吸引任何大小的企業和個人開發者的注意。在這篇文章中,我將深入介紹 SigLens 項目,並通過豐富的示例來展現其強大功能。SigLens 源自開源社區的智慧,提供一個單一二進制文件簡化部署過程,並且對於配置的需求極低。接下 ⌘ Read more
這篇文章分析一下自旋鎖,並代碼實現自旋鎖和互斥鎖的性能對比,以及利用 C++11 實現自旋鎖。一:自旋鎖(spin lock)--------------------自旋鎖是一種用於保護多線程共享資源的鎖,與一般互斥鎖(mutex)不同之處在於當自旋鎖嘗試獲取鎖時以忙等待(busy waiting)的形式不斷地循環檢查鎖是否可用。在多 CPU 的環境中, 對持有鎖較短的程序來說,使用自旋鎖代替一般 ⌘ Read more
在處理 HTTP 請求時,我們總是需要在一種數據結構 (可以是 enum、struct 等) 和一種可以存儲或傳輸並稍後重建的格式 (例如 JSON) 之間來回轉換。Serde 是一個庫 (crate),用於高效、通用地序列化和反序列化 Rust 數據結構。在本文中,將詳細介紹如何使用 Serde 對數據結構進行序列化和反序列化操作。讓我們從一個簡單的結構體 Student 開始,它的定義如下所示 ⌘ Read more
作者: Kaan Aslan 轉自:Deephub IMBA時間序列預測是一個經久不衰的主題,受自然語言處理領域的成功啓發,transformer 模型也在時間序列預測有了很大的發展。本文可以作爲學習使用 Transformer 模型的時間序列預測的一個起點。 數據集這裏我們直接使用 kaggle 中的 Store Sales — Time Series Forecasting 作爲 ⌘ Read more
KV 存儲作爲美團一項重要的在線存儲服務,承載了在線服務每天萬億級的請求量,並且保持着 99.995% 的服務可用性。在 DataFunSummit 2023 數據基礎架構峯會上,我們分享了《美團大規模 KV 存儲挑戰與架構實踐》,本文爲演講內容的整理。文章主要分爲四個部分:第一部分介紹了美團 KV 存儲發展歷程;第二部分分享了內存 KV Squirrel 挑戰和架構實踐;第三部分闡述了持久化 K ⌘ Read more
在塑造新領域的過程中,我們往往依賴於一些經過實踐驗證的策略、方法和模式。這種觀念對於軟件工程領域的專業人士來說,已經司空見慣,設計模式已成爲程序員們的重要技能。然而,當我們轉向大模型應用和人工智能領域,情況可能會有所不同。面對新興技術,例如生成式 AI,我們尚缺乏成熟的設計模式來支撐這些解決方案。作爲一位老碼農,我在這裏整理總結了一些針對大模型應用的設計方法和架構模式,試圖應對和解決大模型應用實現 ⌘ Read more
最近Chrome 123又推出了一個新的 CSS 屬性:field-sizing。有了它,可以輕鬆實現輸入框尺寸自動跟隨輸入內容的效果,花一分鐘瞭解一下吧~一、快速瞭解 field-sizing-------------------field-sizing 表示 “場地” 尺寸,在這裏指的是表單輸入框的尺寸,語法很簡單,可以取兩個值,如下field-sizing: fixed \\| content其 ⌘ Read more
Token 透傳(不推薦) Fegin 內部調用方式 Dubbo 內部調用方式 Spring Boot Web + Dubbo 內部調用方式 常規模式 與 K8S 集成 Token 透傳(不推薦)-----------------剛開始接觸微服務時網上給的方案大都數是通過透傳 Token 做鑑權,但我認爲這種方式不是很妥當。接着往下看:這種方式通過透傳 Toke ⌘ Read more
PostgreSQL 中可以通過時間線的概念在日誌中標記數據庫中操作的一切。通過調用 pgcontroldata,查看當前的數據庫的 wal 日誌正在使用的是哪個,這裏的是 000000010000000000000012 。但注意看下面兩個部分,非常短的時間,WAL 日誌有了變化,這裏我做了一個操作,恢復數據庫。今天的討論就從恢復數據庫後的 history 文件開始。root@pg16:~# s ⌘ Read more~
本文作者系 360 奇舞團前端開發工程師 文章標題:Beyond Compare! Rust Vs Js前言--筆者最近計劃開發一個 SSR 渲染的 Blog。籌備之初, 一度猶豫不決:是繼續沿用較爲熟悉的 JavaScript 技術棧,還是嘗試當下非常熱門的 Rust 相關技術棧,經過考慮,決定要做一些有挑戰性的嘗試。 一般而言,WEB 開發,動手之前,我們都會在腦海裏會有一個大概的雛 ⌘ Read more
隨着 eBPF 技術的發展,基於該技術的網絡測控工具越來越多,也越來越成熟。作爲下一代網絡測控技術,eBPF 直接內嵌 Linux 內核,具有高性能、高擴展、安全性等優勢,在網絡、安全、可觀察方面均堪大用。在容器云爲基礎的現代系統架構中,eBPF 技術尤其具有重要意義,同時也已經出現了 Cilium(CNCF 雲原生項目,用於解決大集羣規模下 iptables 性能問題)、Pixie 等優秀的開源 ⌘ Read more
原文地址:More powerful Go execution traces 原文作者:Michael Knyszek 本文永久鏈接: https://github.com/gocn/translator/blob/master/2024/w12morepowerfulgoexecutiontraces.md 譯者:小超人 Go 版本: 1.22+ ru ⌘ Read more
本教程將演示如何在 Go 中使用 OpenTelemetry,我們將手寫一個簡單的應用程序,並向外發送鏈路追蹤和指標數據。準備示例應用程序--------創建一個扔骰子的程序。在本地新建一個dice目錄,並進入該目錄下。mkdir dicecd dice執行 go mod 初始化。go mod init dice在同一目錄下創建 main.go 文件,並添加以下代碼。package mainimp ⌘ Read more
先讓我們看一下不同 Rust 項目的 target 文件夾大小:如果你用 Rust 或 NodeJS 編碼,你可能會面臨一個問題,有許多臨時文件夾:target/, node\\_modules / 用於不同的項目,導致你的機器在有限的 1tb 存儲中消耗巨大的空間。在這篇文章中,主要關注 Rust 項目。類似的解決方案也適用於其他語言,如 NodeJS,它需要大量的空間。本文通過使用共享 targe ⌘ Read more_
本文來自 Chrome 團隊的 Jecelyn Yeen (阮貝琪) 在 FEDAY 分享,主題爲:探討網頁調試的現況、Chrome DevTools 的最新進展以及一些實用的 DevTools 小工具。現代 Web 開發中,爲了滿足用戶的需求和期望,提高開發效率和質量,構建更現代、更安全、響應更快、功能更豐富的 Web 應用。開發中經常使用一些流行的前端框架和庫,如 React、Angula ⌘ Read more
在之前的文章 MySQL 常見死鎖場景 -- 併發 Replace into 導致死鎖介紹了由於二級索引 unique key 導致的 deadlock, 其實主鍵也是 unique 的, 那麼同樣其實主鍵的 unique key check 一樣會導致死鎖.主鍵 unique 的判斷在rowinsclustindexentrylow = rowinsduplicateerrorinclust對 ⌘ Read more=
目錄一、背景二、量化數據 1\\. 版本報告 2. 季度報告三、優化方向四、調整發布節奏五、雙端提升發佈系統自動化能力 1. 自動創建發佈計劃 2. 打包 / 灰度 / 全量前卡口 3.App 打包前置依賴提醒 4. 自動打包 5. 測試迴歸催收 6. 事件訂閱 7.Android 應用市場上架監控 8.iOS 定製化蘋果商店 六、總結 ⌘ Read more
Recover 是一個 Go 語言的內建函數,可以讓進入宕機流程中的 goroutine 恢復過來,recover 僅在延遲函數 defer 中有效,在正常的執行過程中,調用 recover 會返回 nil 並且沒有其他任何效果,如果當前的 goroutine 陷入恐慌,調用 recover 可以捕獲到 panic 的輸入值,並且恢復正常的執行。通常來說,不應該對進入 panic 宕機的程序做任何 ⌘ Read more
RDMA(RemoteDirect Memory Access) 技術全稱遠程直接內存訪問,就是爲了解決網絡傳輸中客戶端與服務器端數據處理的延遲而產生的。它將數據直接從一臺計算機的內存傳輸到另一臺計算機,無需雙方操作系統的介入。這允許高吞吐、低延遲的網絡通信,尤其適合在大規模並行計算機集羣中使用。RDMA 通過網絡把資料直接傳入計算機的內存中,將數據從一個系統快速移動到遠程系統內存中,而不對操作系 ⌘ Read more
JSON Web Token(JWT)是一種可以在多方之間安全共享數據的開放標準,JWT 數據經過編碼和數字簽名生成,可以確保其真實性,也因此 JWT 通常用於身份認證。這篇文章會介紹什麼是 JWT,JWT 的應用場景以及組成結構,最後分析它的優點及侷限性。傳統認證方式的問題---------在介紹 JWT 之前,先看下傳統認證方式有什麼問題,這裏的傳統認證方式是指 Session-Cookie ⌘ Read more
作者:隔壁老王 z https://juejin.cn/post/7293173815181738022在日常開發時,彈窗是一個經常使用的功能,而且重複性極高,你可能會遇到下面這些問題: 1、一個頁面內多個彈窗, 要維護多套彈窗狀態, 看的眼花繚亂 2、彈窗內容比較簡單,聲明變量 + 模板語法的方式寫起來比較麻煩關於這些問題, 我首先想到的是應該弄一個即用即走的Dialog,不用去單獨維 ⌘ Read more
很多在用家庭網絡託管網站,以及其他一些內網需要對外公開發布 Webhooks 的同學可能都用過 ngrok。今天蟲蟲給大家推薦一個類似的開源軟件 Tunnelmole,是一個免費開源的 ngrok 軟件的平替代,大家可以嘗試並使用。概述Tunnelmole 是一個免費且開源的內網隧道軟件。與其他一些 ngrok 替代方案不同,Tunnelmole 不是使用 SSH 端口轉發,無需 NAT / 網絡 ⌘ Read more
OpenAI 發佈的視頻生成模型 Sora(https://openai.com/sora),能根據文本生成長達一分鐘的高質量視頻,理論上支持任意分辨率,如 1920x1080 、1080x1920 ,生成能力遠超此前只能生成 25 幀 576x1024 圖像的頂尖視頻生成模型 Stable Video Diffusion。一起公佈的,還有一篇非常簡短的技術報告,報告大致介紹了 Sora 的架構及 ⌘ Read more
Kafka ConsumerKafka 有消費組的概念,每個消費者只能消費所分配到的分區的消息,每一個分區只能被一個消費組中的一個消費者所消費,所以同一個消費組中消費者的數量如果超過了分區的數量,將會出現有些消費者分配不到消費的分區。消費組與消費者關係如下圖所示:Kafka Consumer Client 消費消息通常包含以下步驟:配置客戶端,創建消費者 訂閱主題 拉去消息並消費 ⌘ Read more
你以前可能聽說過 Goroutine 調度器,但你對它的工作原理了解多少?它如何將 goroutine 與線程配對?不用着急理解上面的圖像, 因爲我們要從最基本的開始。goroutine 被分配到線程中運行, 這由 goroutine 調度器在後臺處理。根據我們之前的討論, 我們瞭解到以下關於 goroutine 的幾點:就原始執行速度而言, goroutine 並不一定比線程更快, 因爲它們需要 ⌘ Read more
現在隨着城市的發展,越來越多的智慧攝像頭,都被互聯網公司布到城市的各個角落,舉一個例子,一個大樓上上下下都被佈置了智能攝像頭,用於監控火勢,人員進出,工裝工牌佩戴等監控,這時候爲了美化項目,大公司都會將城市的區域作爲對象,進行 3d 可視化交互,接下來的內容,就是基於以上元素,開發的一款城市數據可視化的 demo,包含樓宇特效,飛線,特定視角,動畫等交互,希望可以給大家帶來一 neinei 的幫助 ⌘ Read more
本文將通過介紹什麼是 Hook、如何在 Vue 使用 Hook,以及在實踐場景中如何封裝自己的 Vue Hook,帶你走進 Hook 的世界,寫出更優雅的代碼。如果你覺得這篇文章寫的不錯,可以點贊支持一下,如果文章中存在不足(代碼量多,難免出現 bug,咳咳),歡迎在評論區指出!什麼是 Hook--------Vue3 官方文檔是這樣定義組合式函數的。A "composable" is a fun ⌘ Read more
雙向鏈表1)雙向鏈表的結構雙向鏈表結構中元素在內存中不是緊鄰空間,而是每個元素中存放上一個元素和後一個元素的地址第一個元素稱爲(頭)元素,前連接(前置指針域)爲 nil 最後一個元素稱爲 尾(foot)元素,後連接(後置指針域)尾 nil 雙向鏈表的優點在執行新增元素或刪除元素時效率高,獲取任意一個元素,可以方便的在這個元素前後插入元素 充分利用內存空間,實現內存靈活管理 ⌘ Read more
在對代碼進行優化時,如果想在 hashmap、hashset 或任何類似的結構中插入元素,需要注意一個事項。你可能想在代碼中做以下一些事情:use std::collections::HashMap;fn main() { let mut map: HashMap&str, u32 = HashMap::new(); map.entry("poneyland").orinsert(3) ⌘ Read more
runtime/trace 包 1] 包含了一個強大的工具, 可用於理解和調試 Go 程序。該功能允許我們在一段時間內對每個 goroutine 的執行進行跟蹤。使用 go tool trace 命令 [2), 我們就可以可視化和探索這些跟蹤數據。跟蹤的魔力在於, 它可以輕鬆揭示程序中一些通過其他方式很難發現的問題。例如, 大量 goroutine 在同一個 channel 上阻塞導致的併發瓶頸, ⌘ Read more
一、Linux 內核與網絡體系結構在我們瞭解整個 linux 系統的網絡體系結構之前,我們需要對整個網絡體系調用,初始化和交互的位置,同時也是 Linux 操作系統中最爲關鍵的一部分代碼 ------- 內核,有一個初步的認知。1、Linux 內核的結構首先,從功能上,我們將 linux 內核劃分爲五個不同的部分,分別是(1)進程管理:主要負載 CPU 的訪問控制,對 CPU 進行調度管理;(2) ⌘ Read more
Picker 是指提供多個選項集合供用戶選擇其中一項的控件。Picker 展示區域有限,部分選項會被隱藏,最好是當用戶對所有選項都比較熟悉、有預期的時候,才使用 Picker。@DOCTYPE htmlhtml lang="en" head meta charset="UTF-8" / meta / meta http-equiv="X-UA-Compatible" cont ⌘ Read more=
大家好,我是程序喵,最近事情太多,好久才能肝出一篇文章,大家見諒。這篇文章簡單介紹下併發編程中一個重要的知識點:內存模型。直接看這段代碼:include iostreaminclude threadint x = 0;int y = 0;void func1() { x = 100; y = 2;}void func2() { while (y == 2) { st ⌘ Read more
目錄30 萬條數據插入插入數據庫驗證 實體類、mapper 和配置文件定義 不分批次直接梭哈 循環逐條插入 MyBatis 實現插入 30 萬條數據 JDBC 實現插入 30 萬條數據 總結 文章來源:https://blog.csdn.net/qq35427589/article/details/129665307 本文主要講述通過 MyBatis ⌘ Read more
這裏的網關 ping 指的是對虛擬網絡網關發包,確認網關的數據面能夠符合預期地轉發網絡包。在部署、升級網關的時候,需要對網關進行 ping 測試,以確認網關的數據面符合預期地轉發網絡包。目前,發的 ping 包是 tcp SYN 包。然而,存在一個網關跟業務節點混部的場景,導致網關的數據面不知道該將 SYN 包轉發出去,還是放行到內核協議棧。近來,研究了一下解決辦法:將 MAGIC 存放在 SYN ⌘ Read more
OpenTelemetry 可以用於從應用程序收集數據。它是一組工具、API 和 SDK 集合,我們可以使用它們來檢測、生成、收集和導出遙測數據(指標、日誌和鏈路追蹤),以幫助分析應用的性能和行爲。爲什麼需要分佈式追蹤----------隨着雲計算、微服務架構和日益複雜的業務需求的興起,越來越需要對軟件和基礎設施可觀測性的需求。特別是在微服務架構中,每個請求最終可能會經過數個甚至數十個微服務)並在 ⌘ Read more
隨着機器學習 (ML) 領域的不斷髮展,對高性能和可靠框架的需求導致 Rust 生態系統中出現了幾種選擇。Rust 的安全保證、性能特徵和併發支持使其成爲 ML 應用程序的一個有吸引力的選擇,特別是在關鍵任務或資源受限的環境中。在本文中,我們將探索四個突出的 Rust ML 框架:Candle、Burn、DFDX 和 tch-rs,併爲你的項目選擇最合適的框架提供指導。Rust ML 框架1,Ca ⌘ Read more
在處理數據流(如 JSON、Gob 等)過程中,我們可能不知道底層數據的結構,這時mapstructure庫就能大顯身手了。這款 Go 語言庫可以將通用 map 值解碼爲 Go 本地結構,也可執行反向操作,並提供有用的錯誤處理功能。今天,我們就深入瞭解這個庫,並列舉一些豐富的示例來幫助你掌握它的使用方法。簡介--mapstructure是一款 Go 庫,允許開發者將map[string]inter ⌘ Read more
WinterJS 1.0 終於發佈了!WinterJS 是一個使用 Rust 編寫的、與 WinterCG 兼容的 JavaScript 運行時,使用 SpiderMonkey 引擎執行 JavaScript,並使用 Tokio 處理底層的 HTTP 請求和 JS 事件循環。WinterJS 運行時還可以編譯爲 WebAssembly,並且因此是第一個完全可在 Wasmer Edge 中運行的生產 ⌘ Read more
WebAssembly(Wasm)最初是爲瀏覽器創建的,現在在服務器端也越來越受歡迎。在我看來,WebAssembly 在雲原生生態系統中變得流行的原因是它相對於容器的優勢,包括體積更小、速度更快、安全性更強和可移植性更高。本文我將簡要介紹 WebAssembly 並解釋其優勢。然後我們將在後面的文章中討論如何使用容器工具(包括低級容器運行時、高級容器運行時和 Kubernetes)執行 Wasm ⌘ Read more
作者:蜀山劍客李沐白 原文:https://juejin.cn/post/7252860409613942842一、引言----軟件開發中的挑戰和問題複雜性管理: 當處理複雜業務需求時,軟件系統往往變得複雜,難以理解和維護。不清晰的業務邏輯和模型使開發人員難以捕捉並準確地實現業務需求。 領域專家與開發人員之間的溝通障礙: 業務專家負責提供業務需求和知識,而開發人員負責將這些需求轉化 ⌘ Read more
前言openwrt 開發中,我們可能遇到這樣需求,使用路由器支持局域網內設備 ntp 授時功能。作者:羽林君轉載授權以及圍觀:歡迎關注微信公衆號:羽林君或者添加作者個人微信:becomeme ntp 是什麼NTP(Network Time Protocol,網絡時間協議)是由 RFC 1305 定義的時間同步協議,用來在分佈式時間服務器和客戶端之間進行時間同步。NTP 基於 UDP 報文進行傳輸, ⌘ Read more
概述之前做項目,涉及到存入到數據庫或者 http 傳輸的數據量比較大,這個時候,就需要考慮在存入數據庫或者發送傳輸之前,將數據壓縮下,當從數據庫中取出時,再解壓還原數據。特地找了下發現有 GZipStream 可以實現這個功能。此類表示 gzip 數據格式,該格式使用行業標準算法進行無損文件壓縮和解壓縮。該格式包括用於檢測數據損壞的循環冗餘校驗值。gzip 數據格式使用與 DeflateStrea ⌘ Read more
數據庫加密這個話題在很多大型企業的數據庫安全規範中是有嚴格的要求的,這裏數據庫加密可以分爲 2 個部分,實際上 3 個部分,這裏由於其中一個部分在很多情況下並不實用,所以我們這邊就不討論了。 加密的方案 1 針對數據庫中的數據進行加密2 在數據傳輸中進行數據的加密兩種加密方案應對的需求不一樣,應對的需求也不一樣,數據中的數據加密,主要是針對敏感的數據存儲在數據庫中的不安全導致的,他需要存 ⌘ Read more
背景--在當代的互聯網技術領域,微服務架構已成爲應用部署的主流模式,它雖然增強了開發流程的敏捷性和系統的可擴展性,但隨着服務數量的增加,系統的內部通信變得越來越複雜。特別是在服務的接口和依賴關係不透明的情況下,整個系統的維護和優化工作變得異常困難。今天要介紹的流量攔截技術,從本質上講,提供了一種 “上帝視角” 來觀察和分析在複雜網絡系統中流動的數據。這種方法使得開發和運維團隊能夠對通常隱蔽和不透明 ⌘ Read more
你是一臺電腦,你的名字叫 A 只要你知道另一位夥伴 B 的 IP 地址,且你們之間的網絡是通的,無論多遠,你都可以將一個數據包發送給你的夥伴 B這就是物理層、數據鏈路層、網絡層這三層所做的事情。如果不懂,可以先閱讀下《如果讓你來設計網絡》站在第四層的你,就可以不要臉地利用下三層所做的鋪墊,隨心所欲地發送數據,而不必擔心找不到對方了。雖然你此時還什麼都沒幹,但你還是給自己這一層起了個響亮的名字,叫 ⌘ Read more
引言:SQL 中的事務想象一下一個使用 SQL 作爲數據庫的銀行系統。用戶 A 想將一些錢存入用戶 B 的賬戶。如果他們發送了錢,我們從他們的賬戶餘額中扣除了這筆錢,並且我們想要將這筆錢存入用戶 B 的賬戶,但突然間我們的數據庫崩潰了。這是否意味着我們從用戶 A 的餘額中扣除的錢消失了?嗯,並不是在 SQL 數據庫中,因爲它們使用 SQL 事務來處理這些情況。事務和 ACID 屬性事務是一系列作爲 ⌘ Read more
1、引言-------- 即時通訊網官方技術羣和社區裏,經常有開發者在糾結怎麼開發 IM 集羣,雖然真正的使用人數,可能用個人電腦單機都能支撐。 你會說,明明不需要用到 IM 集羣,幹嗎要自找麻煩?答曰:“老闆說這個得有!”、“萬一產品做成了,用戶量達到百萬、千萬級呢?”,各種回答,反此種種。總之,IM 集羣就是得整一個(先甭管用不用的上...)。 當然,玩笑歸玩笑,真正要做到可投入 ⌘ Read more
在這篇文章中,我們將討論如何在 Rust 中編寫 WebAssembly 模塊。WebAssembly 是可移植編譯目標,能夠方便地在 web 上與 JavaScript 互操作。Rust 能夠利用這一點,使得它在許多用例中非常有用。例如:CPU 密集型工作 (加密) GPU 密集型工作 (圖像 / 視頻處理、圖像識別) 本文將重點介紹使用 Rust 編寫圖像處理的 ⌘ Read more
1、shell 的概述---------------shell 是一種腳本語言腳本:本質是一個文件,文件裏面存放的是 特定格式的指令,系統可以使用腳本解析器 翻譯或解析 指令 並執行(它不需要編譯)shell 既是應用程序 又是一種腳本語言(應用程序 解析 腳本語言)shell 命令解析器:系統提供 shell 命令解析器: sh ash bash查看自己 linux 系統的默認解析:echo $ ⌘ Read more
前言--大家好,我是林三心。前兩天,無意中看到了 B 站上一個講V8垃圾回收 機制的視頻,感興趣的我看了一下,感覺有點難懂,於是我就在想,大家是不是跟我一樣對V8垃圾回收機制這方面的知識都比較懵,或者說看過這方面的知識,但是看不懂。所以,我思考了三天,想了一下如何才能用最通俗的話,講最難的知識點。普通理解----我相信大部分同學在面試中常常被問到:” 說一說 V8 垃圾回收機制吧 “這個時候,大部 ⌘ Read more
01 介紹在互聯網場景下,負載均衡(Load Balance)是分佈式系統架構設計中必須考慮的一個環節,它通常是指將負載流量(工作任務、訪問請求)平衡、分攤到多個操作單元(服務器、組件)上去執行的過程。 目的在於提供負載配比,解決性能、單點故障(高可用)和擴展性(水平伸縮)等問題。 圖片 以上圖爲例,隨着互聯網的興盛,類似淘寶、京東等網站的訪問量逐年提升。原先的單臺服務或者單集羣模式已經遠不 ⌘ Read more
引言與當前正在使用的任何其他技術或方法一樣,微服務也有其自己的一套缺陷和問題。儘管如此,微服務架構的採用率不斷增加,預計到 2028 年將達到 1718.2 億美元。 然而,儘管團隊使用微服務,但確保這些微服務的安全性仍然被視爲事後事項。 這可能導致應用程序中的許多安全問題,甚至可能使用戶數據面臨風險,甚至導致應用程序停機。因此,讓我們看看在 2024 年保護微服務的前 10 種方法!微服務架構 ⌘ Read more
大家好,我是煎魚。日常看 Go 社區的一些新動態,發現大家對於錯誤處理的新提案是很積極。上次分享了一篇想要用 switch-case 來解決現狀的新提案,不少同學認爲不可行。沒想到 Go 社區的同學腦洞還是很大的,這幾天又整出來個 select-case 的新提案的方式來解決錯誤處理。今天基於此給大家分享一下社區裏的新腦洞。快速背景----本節的背景主要是給不瞭解的同學拉通一下。如果已經知道的可以 ⌘ Read more
在這篇文章中,我們將討論如何在 Rust 中實現 API 限速。當涉及到生產中的服務時,是爲了確保不良行爲者不會濫用 API——這就是 API 限速的作用所在。我們將實現 “滑動窗口” 算法,通過動態週期來檢查請求歷史,並使用基本的內存 hashmap 來存儲用戶 IP 及其請求時間。我們還將研究如何使用 tower-governor 庫來實現限速。實現一個簡單的滑動窗口限速器讓我們從頭開始編寫一 ⌘ Read more
ceph 介紹-----------ceph 是一個統一的、分佈式的存儲系統,設計初衷式提供較好的性能 (io)、可靠性 (沒有單點故障) 和可擴展性 (未來可以理論上無限擴展集羣規模),這三點也是集羣架構所追求的。統一性 :意味着我們可以僅憑 ceph 這一套存儲系統,同時提供塊存儲和文件系統存儲、對象存儲。這三種功能,這極大地簡化了不同應用需求下地部署和運維工作。分佈式 :傳統集羣架構: 集羣 ⌘ Read more
Kubernetes 是一個開源容器編排系統,可簡化軟件部署、擴展和管理。藍綠部署是一種部署模式,通過同時運行兩個相同的生產環境來最大限度地減少停機時間。通過創建藍色和綠色部署,設置服務和路由規則,以及執行藍綠部署來更新應用程序版本,可以輕鬆管理和更新應用程序。 Kubernetes 是一個開源容器編排系統,可簡化軟件部署、擴展和管理。它最初由 Google 設計,現在由雲原生計算基金會監 ⌘ Read more
推進 Go 的極限: 從 net.Dial 到系統調用、AFPACKET 和極速 AFXDP。數據包發送性能的基準測試。最近, 我編寫了一個 Go 程序, 向數百萬個 IP 地址發送 ICMP ping 消息 [1]。顯然, 我希望這個過程能儘可能快速高效地完成。因此, 這促使我研究各種與網絡棧交互和快速發送數據包的各種方法。這是一個有趣的旅程, 所以在本文中, 我將分享一些學習成果, 並記錄 ⌘ Read more
DIYSearchEngine 是一個能夠高速採集海量互聯網數據的開源搜索引擎,採用 Go 語言開發。Github 地址: https://github.com/johnlui/DIYSearchEngine 運行方法 首先,給自己準備一杯咖啡。把本項目下載到本地 編譯:go build -o ese \\*.go 修改配置文件:cp .env.example .env,然後把裏面的 ⌘ Read more*
作者:然燃 (感謝小夥伴投稿分享) 原文鏈接: https://juejin.cn/post/7307934456995856419最近又遇到了web視頻化的場景,之前也有過調研:H5 視頻化調研淺析 1但這次稍微複雜一些,這次解決的是: 視頻播放的技術方案調研 服務端實現:視頻轉碼 生成不同碼率的視頻 進行視頻標準加密 不同碼率視頻合併,用於動態碼率播放 ⌘ Read more
前言--大家好,我是程序員田螺。零拷貝是老生常談的問題啦,大廠非常喜歡問。比如 Kafka 爲什麼快,RocketMQ 爲什麼快等,都涉及到零拷貝知識點。最近技術討論羣幾個夥伴分享了阿里、蝦皮的面試真題,也都涉及到零拷貝。因此本文將跟大家一起來學習零拷貝原理。什麼是零拷貝傳統的 IO 執行流程零拷貝相關的知識點回顧零拷貝實現的幾種方式java 提供的零拷貝方式什麼是零拷貝---------零拷貝字 ⌘ Read more
大家好,我是君哥。狀態機在我們的工作中應用非常廣泛,今天聊一聊分佈式事務中間件 Seata 中 Saga 模式的狀態機。1 狀態機簡介-------狀態機是一個數學模型,它將工作中的運行狀態和流轉規則抽象出來,可以協調相關信號來完成預先設定的操作。下面介紹狀態機中的幾個概念:狀態:狀態機目前的狀態標識; 狀態轉移:定義狀態之間的轉移路由; 動作(Action):狀態轉移需要的操作; ⌘ Read more
編譯 \\| 核子可樂、凌敏來自 \\| InfoQ2024 年開年,Java “十億行挑戰”(1BRC)火爆外網。該挑戰賽要求開發者編寫一個 Java 程序,從一個包含十億行信息的文本文件中檢索溫度測量值,並計算每個氣象站的最小、平均值和最高溫度。“十億行挑戰” 的目標是爲這項任務創建最快的實現,同時探索現代 Java 的優勢。這項挑戰聽起來很簡單。但十億行代碼實際是一項龐大的工程,如果以每個數字 3 ⌘ Read more
我和小宇早戀了,上課的時候老說話老師把我們的座位分得很遠,我在第一排,她在最後一排,我們中間隔了很多人。 但我們還是想通過傳紙條的方式交流。我們中間的那些同學,雖然壞心思比較多,但好在可以保證將紙條傳遞到位,於是我們用傳紙條的方式,一直祕密交流着感情。但好景不長,我們漸漸發現,中間這些同學特別不靠譜,出現了以下兩種惡劣的行爲:偷看紙條,把我們的小甜蜜作爲他們飯後的談資。篡改內容,讓我們之間產生了 ⌘ Read more
1 介紹AOF(Append Only File)持久化:以獨立日誌的方式存儲了 Redis 服務器的順序指令序列,並只記錄對內存進行修改的指令。 當 Redis 服務發生雪崩等故障時,可以重啓服務並重新執行 AOF 文件中的指令達到恢復數據的目的。也就是說,通過重放(replay),來重新建立 Redis 當前實例的內存數據結構。這種模式有沒有很熟悉,可以聯想到 MySQL 主從同步時的 re ⌘ Read more
大家好,我是 ConardLi。 最近,Meta 開源了一個新的庫,叫做 react-strict-dom,其目標是改進和標準化編寫用於 Web 和 Native 的通用 React 組件的方式。在 React Native 中,用於渲染 UI 的原始組件和 Web 不同,如果你是一個 Web 開發者,看到基礎的 React Native 組件一開始可能會覺得有點奇怪,也難以使用:import ⌘ Read more
大家好,我是煎魚。上年我們有討論過關於 Go arena 手動管理內存的相關提案。一開始還高歌猛進,但沒想到後面由於嚴重的 API 問題(想把 arena 應用到其他的標準庫中,但會引入大問題):Go 核心團隊中途咕咕咕到現在,沒有新的推動和突破性進展,實屬尷尬。最近有社區的大佬有了新的動作,來自 Grafana 的 @Miguel Ángel Ortuño 開源了一個新的第三方庫 ortuman ⌘ Read more
AI、AGI、AIGC 是什麼? AI:人工智能,讓機器模仿人類智能解決問題。 AGI:通用人工智能,讓機器像人一樣思考、學習和處理多種任務。 AIGC:生成式人工智能,利用模型生成新內容,如文本、圖像等。 ChatGPT 是什麼?ChatGPT 是 OpenAI 開發的聊天機器人,能模擬人類對話。 可用於撰寫論文、創作詩歌、編寫代碼等。 利用自然語言處理技術,與用 ⌘ Read more
Redis 是一款強大而多才多藝的內存數據存儲,被廣泛用於緩存、會話管理、實時分析等場景。Redis 的一個關鍵特性是其對邏輯數據庫的支持,使用戶能夠在單個 Redis 實例中對數據進行分區。這些邏輯數據庫提供了隔離和在鍵方面的不同命名空間,從而實現更有效的數據管理和組織。在本文中,我將展示如何利用邏輯數據庫來提升 Redis 查詢性能。邏輯數據庫Redis 支持多個邏輯數據庫,通常稱爲 “數據庫 ⌘ Read more
所謂共享內存就是使得多個進程可以訪問同一塊內存空間,是最快的可用 IPC 形式。是針對其他通信機制運行效率較低而設計的。往往與其它通信機制,如信號量結合使用,來達到進程間的同步及互斥。其他進程能把同一段共享內存段 “連接到” 他們自己的地址空間裏去。所有進程都能訪問共享內存中的地址。如果一個進程向這段共享內存寫了數據,所做的改動會即時被有訪問同一段共享內存的其他進程看到。共享內存的使用大大降低了在 ⌘ Read more
Rust 的 Tokio 庫以其高效處理異步 I/O 的能力而聞名,使其成爲構建高性能應用程序的熱門選擇。但是,在某些情況下,Tokio 可能無法提供顯著的優勢,例如在處理讀取大量文件時,在這個特定的上下文中,與使用普通線程池相比,Tokio 可能不是最佳的解決方案。這種限制源於這樣一個事實,即操作系統通常缺乏異步文件 api,從而削弱了 Tokio 在文件讀取任務中的潛在優勢。值得注意的是,To ⌘ Read more
線程池的底層是基於線程和任務隊列來實現的,創建線程池的創建方式通常有以下兩種:普通 Java 項目,使用 ThreadPoolExecutor 來創建線程池,這點《阿里巴巴 Java 開發手冊》中也有說明,如下圖所示: Spring 項目中,會使用代碼可讀性更高的 ThreadPoolTaskExecutor 來創建線程池,雖然它的底層也是通過 ThreadPoolExecutor 來實 ⌘ Read more
1 前言----文件上傳在項目開發中再常見不過了,大多項目都會涉及到圖片、音頻、視頻、文件的上傳,通常簡單的一個 Form 表單就可以上傳小文件了,但是遇到大文件時比如 1GB 以上,或者用戶網絡比較慢時,簡單的文件上傳就不能適用了,用戶辛苦傳了好幾十分鐘,到最後發現上傳失敗,這樣的系統用戶體驗是非常差的。或者用戶上傳到一半時,把應用退出了,下次進來再次上傳,如果讓他從頭開始傳也是不合理的。本文主 ⌘ Read more
Linux 中斷是指在 Linux 操作系統中,當硬件設備或軟件觸發某個事件時,CPU 會中斷正在執行的任務,並立即處理這個事件。它是實現實時響應和處理外部事件的重要機制,Linux 中斷可以分爲兩種類型:硬件中斷和軟件中斷(也稱爲異常)。硬件中斷是由外部設備引發的,如磁盤 I/O 完成、網絡數據包到達等;而軟件中斷是由 CPU 內部產生的,如除零錯誤、頁面故障等。當一箇中斷被觸發時,CPU 會根 ⌘ Read more
在本文中,我們將探討 Go 中的結構化日誌記錄,並特別關注最近推出的 log/slog[1] 軟件包, 這個軟件包旨在爲 Go 帶來高性能、結構化和分級的日誌記錄標準庫。該軟件包起源於由 Jonathan Amsterdam 發起的 GitHub 討論 [2], 後來專門建立了一個提案 [3] 細化設計。一旦定稿,它在 Go v1.21 版本中發佈。在以下各節中,我將全面呈現 slog 的功能, ⌘ Read more
前段時間老闆心血來潮,要我們前端組對整個的項目都做一下接口防止重複請求的處理(似乎是有用戶通過一些快速點擊薅到了一些優惠券啥的)。。。聽到這個需求,第一反應就是,防止薅羊毛最保險的方案不還是在服務端加限制嗎?前端加限制能夠攔截的畢竟有限。可老闆就是執意要前端搞一下子,行吧,搞就搞吧,you happy jiu ok。雖然大部分的接口處理我們都是加了 loading 的,但又不能確保真的是每個接口都 ⌘ Read more
大家好,我是不才陳某~本篇文章主要討論一下我們經常會用到的一些對象:VO、DTO、DO 和 PO。由於不同的項目和開發人員有不同的命名習慣,這裏我首先對上述的概念進行一個簡單描述,名字只是個標識,我們重點關注其概念;概念--VO(View Object):視圖對象,用於展示層,它的作用是把某個指定頁面(或組件)的所有數據封裝起來。 DTO(Data Transfer Object):數據傳輸 ⌘ Read more
問題: 什麼是布隆過濾器?答案 → 布隆過濾器是一種空間效率高的概率型數據結構。它已經存在了 50 年。它用於回答這樣的問題:這個元素是否在集合中?問題: 布隆過濾器的實際應用有哪些?答案 → 布隆過濾器是一種具有許多實際應用的數據結構。它可以在瀏覽器、網絡路由器和數據庫中找到,僅舉幾例。問題: 可以用布隆過濾器的實際應用場景是什麼?答案 → 布隆過濾器用於回答這個問題:這個元素是否存在於集合中? ⌘ Read more
作者丨無惡不作 來源丨 https://zhuanlan.zhihu.com/p/653067104編輯丨 GiantPandaCV隨着大語言模型的發展,大模型的相關技術日益細化,在生成式 AI、蛋白質結構預測等多個領域開花結果。由此產生的技術痛點也越發明顯,特別是在蛋白質預測、多模態基礎模型、語音圖像處理模型等需要前後文推理的模型,對長序列訓練有明顯的需求。與此同時,現有的分佈式訓練技術,主要 ⌘ Read more
大家好,我是煎魚。作爲一個維護過許多有一定歷史沉澱的 Go 項目的人,在歷史債務下和奇葩需求下,會遇到一些迫於業務需求的技術訴求。訴求上是希望引用多項目,會出現從 main 包(package)中導入相關函數的這種使用訴求。爲了將多 Go 工程合併到一個大單體中使用。問題案例----具體的使用案例如下。我們有一個 Go 應用,目錄結構如下:demo1├── go.mod├── main.go└── ⌘ Read more
代碼審查(Code Review)是爲了保證代碼質量,控制代碼的錯誤和提升開發團隊的技能而進行的一種活動。功能方面 修改範圍:我在 CR 時第一關注點是修改範圍與需求是否一致,如果修改範圍擴大,會造成變更不可控,是極爲危險的。 功能實現:代碼是否滿足功能需求或修復了相應的 Bug,代碼實現的邏輯是否正確?這個會通過在方案評審時就做好準備。設計方案評審需要 3 人以上有 CR 權限同學參 ⌘ Read more
Linux 中的 Mmap(Memory Map)是一種內存映射機制,它允許將文件或設備的一部分映射到進程的虛擬內存空間。通過使用 Mmap,進程可以直接訪問被映射對象的內容,而無需進行傳統的讀取和寫入操作。在內存映射過程中,操作系統會將文件數據按頁(通常是 4KB)進行劃分,並在物理內存和虛擬地址空間之間建立對應關係。當進程需要訪問文件時,它只需要使用指針來讀寫相應的內存地址即可,而無需手動調用 ⌘ Read more
小許之前分享過標準庫 net/http 的實現原理,不過有個 fasthttp 的庫號稱比 net/http 快十倍呢!(畢竟名字就帶 fast 呢😆)哇,性能太強了吧,話不多說,本期小許和大家一起看看 fasthttp Server 端的底層實現,來看看到底是如何做到性能如此之快的,有哪些優秀的特性值得我們學習和借鑑的!Server 端處理流程對比在進行了解 fasthttp 底層代碼實現之前, ⌘ Read more
一、mtrace 分析內存泄露---------------mtrace(memory trace),是 GNU Glibc 自帶的內存問題檢測工具,它可以用來協助定位內存泄露問題。它的實現源碼在 glibc 源碼的 malloc 目錄下,其基本設計原理爲設計一個函數 void mtrace (),函數對 libc 庫中的 malloc/free 等函數的調用進行追蹤,由此來檢測內存是否存在泄漏的 ⌘ Read more
在這篇文章中,要分享的例子不僅僅是假設,它們來自於工作中的真實案例,在這些例子中,Go 的侷限性無法實現所需的解決方案。聲明:這裏的區別並不在於 Rust 代碼比 Go 代碼更正確或更快。1,讀取線程的 ID記錄當前線程的 ID,或者在 Go 的情況下,記錄協程 ID,是非常有用的。它明確了哪個線程正在做什麼。如果沒有這些信息,每個線程的活動就會交織在一個日誌文件中,因此很難跟蹤單個執行流。在 R ⌘ Read more
Java Stream API 對於 Java 開發人員來說就像一把瑞士軍刀 — 它用途廣泛、結構緊湊,並且可以輕鬆處理各種任務。它爲開發人員提供了一種函數式和聲明式的方式來表達複雜的數據轉換和操作,使代碼更加簡潔和富有表現力。但能力越大,責任越大,有效地使用 Stream API 需要對最佳實踐和常見陷阱有深入的瞭解。今天,我們將探討使用 Java Stream API 的一些最佳實踐,並展示如 ⌘ Read more
精通真正的高併發編程,不僅僅是 API 的使用和原理!計算機最基礎的程序是怎麼組成的呢?這個都不知道,又如何能證明你的程序是高併發的?本文深入淺出,講解程序的本質(編譯的過程)、組成(程序所需的內存)與格式(ELF),希望讀者可以構建計算機從寫代碼到編譯到執行的鏈路的底層思維。一、計算機程序的組成--------------1、程序執行的本質我們先了解下我們平時寫的程序都怎麼寫?怎麼執行的?Jav ⌘ Read more
可視化是數據分析和解釋的一個關鍵方面。雖然 Rust 主要以其性能和安全特性而聞名,但它也爲數據可視化提供了強大的工具。在這個全面的指南中,我們將深入研究 Rust 中的數據可視化世界,探索庫,技術和編碼示例,以幫助你爲數據項目創建令人驚歎的可視化。Rust 中的數據可視化庫PlottersPlotters 庫是一個靈活且功能豐富的 Rust 繪圖庫。它支持各種圖表類型,包括折線圖、條形圖、散點圖 ⌘ Read more
函數的簡介:------函數封裝⼀個⼩功能, 減少重複代碼, 實現⼩功能 函數如何減少代碼的重複?例如: start=0 end=10 sum=0 for i in range(start,end): sum+=i print(f '{sum}')strart,end 是參數;range 是函數打印出 0-10 之間的偶數和打印出 0-10 之間的總和打印出 0-10 ⌘ Read more
問題: 爲什麼視頻內容的實時流媒體具有挑戰性?回答 → 這是因爲以下原因:• 因爲視頻內容是以幾乎實時的方式通過互聯網發送的。• 視頻處理的整個過程是計算密集型的。通過互聯網發送大量視頻需要時間。問題: 任何視頻是如何從流媒體端傳輸的?回答 → 以下是上傳視頻涉及的過程:步驟 #1.) 播放者啓動視頻流。源可以是任何視頻和音頻,通過編碼器連接到編碼器,類似於流行的開源 OBS 軟件。注意: 一些平 ⌘ Read more
大家好,我是湯師爺。訂單履約系統的概念模型 訂單:客戶提交購物請求後,生成的買賣合同,通常包含客戶信息、下單日期、所購買的商品或服務明細、價格、數量、收貨地址以及支付方式等詳細信息。 子訂單:爲了更高效地進行履約,大訂單可能會被拆分成多個子訂單,子訂單會根據商品類型、配送地址、倉庫位置或供應商等因素進行拆分。 發貨單:根據子訂單生成,指導完成訂單的具體履約任務,如商品的揀選、包裝、出 ⌘ Read more
MQTT 是基於 TCP/IP 協議棧構建的異步通信消息協議,是一種輕量級的發佈、訂閱信息傳輸協議。使用 MQTT 協議,消息發送者與接收者不受時間和空間的限制。本文介紹如何基於 MQTT 搭建一個高速的內網行情轉發系統,進行股票、期權、Level2 逐筆行情等多種行情的共享。一、MQTT 系統的配置1.1 安裝程序下載和配置-------------我們首先下載比較流行的 emqx 發行版程 ⌘ Read more
在處理大量數據判重的問題時,有多種策略和方法可供選擇。對於 10 億級別的數據,由於內存限制和性能考慮,我們不能簡單地將所有數據加載到內存中,然後使用傳統的集合(如 HashSet)進行判重。相反,我們需要考慮使用分佈式系統、數據庫索引或其他高效的數據結構。以下是幾種處理 10 億數據判重的常見方法:分塊處理:將 10 億數據分成多個小塊,每塊在可接受的內存範圍內。然後,對每個小塊進行判重,並將結 ⌘ Read more
作者丨無惡不作 來源丨 https://zhuanlan.zhihu.com/p/683930767編輯丨 GiantPandaCV1. 介紹---------隨着 OpenAI 最新 Sora 的火爆出圈,Diffusion Transformer 無疑將成爲繼 Stable Diffusion 後最出圈的模型結構。Diffusion Transformer Model 是一種結合了 Tran ⌘ Read more
大家好,我是小風哥。準確來說,CPU 不認識也不理解任何東西。CPU 就像一個單細胞一樣,本身不具備任何思考能力,沒什麼自己的想法,你給它一個刺激,它只是簡單的會有一個反應。那這個刺激是什麼呢?是電壓,硬件感知到的僅僅就是電壓。電壓有兩種,高電壓和低電壓。你馬上就能反應過來,這就是 01 二進制,高電壓代表 1 低電壓代表 0,0 和 1 僅僅是人類可以理解的東西,硬件電路可不理解這玩意,它僅僅就 ⌘ Read more