一、介紹1、make 介紹make是一個構建自動化工具,會在當前目錄下尋找Makefile或makefile文件 如果存在相應的文件,它就會依據其中定義好的規則完成構建任務 2、Makefile 介紹 藉助Makefile我們在編譯過程中不再需要每次手動輸入編譯的命令和編譯的參數,可以極大簡化項目編譯過程。 我們可以把Makefile簡單理解爲它定義了一個項目文件的編譯規則。 ⌘ Read more
一、介紹1、make 介紹make是一個構建自動化工具,會在當前目錄下尋找Makefile或makefile文件 如果存在相應的文件,它就會依據其中定義好的規則完成構建任務 2、Makefile 介紹 藉助Makefile我們在編譯過程中不再需要每次手動輸入編譯的命令和編譯的參數,可以極大簡化項目編譯過程。 我們可以把Makefile簡單理解爲它定義了一個項目文件的編譯規則。 ⌘ Read more
譯者序:設計系統的目標是爲組織帶來規模化的效率和一致性。然而,隨着時間的推移和團隊的增長,單個組織內往往會出現多個並行的設計系統。合併多個系統是一個複雜的過程,需要仔細規劃和執行。本文作者 Evgeny Khoroshilov 探討了幾種整合多個設計系統的選擇,包括繼續保持現狀、共享子系統、全新構建統一系統或保留一個主導系統等。每種方式都有其優缺點,適合不同的組織情況。探索整合多個設計系統的選項。 ⌘ Read more
本文作者爲 360 奇舞團前端開發工程師Ollama 簡介---------Ollama 是一個基於 Go 語言開發的可以本地運行大模型的開源框架。官網:https://ollama.com/GitHub 地址:https://github.com/ollama/ollamaOllama 安裝---------下載安裝 Ollama在 Ollama 官網根據操作系統類型選擇對應的安裝包,這裏選 ⌘ Read more
一、Flink 的狀態是什麼?---------------我們知道,Flink 的一個算子可能會有多個子任務,每個子任務可能分佈在不同的實例(即 slot)上,我們可以把 Flink 的狀態理解爲某個算子的子任務在其當前實例上的一個變量,該變量記錄了流過當前實例算子的歷史記錄產生的結果。當新數據記錄流入時,我們需要結合該結果(即狀態,State)來進行計算。實際上,Flink 的狀態是由算子的子 ⌘ Read more
大家好,我是煎魚。Google 作爲一家用戶體量很大的企業,有非常多的產品,經常會被黑客攻擊或被拿來練手。因此其設計的產品、編程語言、工具庫等都會要求考慮安全性相關的內容。例如:各種供應鏈攻擊、CWE 等安全的查缺補漏等。我們作爲用戶(使用者),可以 “白嫖” 這些功能實現。直接複用在自家的業務上就可以了。這樣每年在護網上都能省不少勁。三個 Go 安全庫---------本次 Google 輸出了 ⌘ Read more
在 Go 中,切片拼接是一種常見操作,但如果處理不當,可能會導致性能問題或意外的副作用。本文將詳細介紹幾種切片拼接的高效方法,討論它們的優缺點以及適當的使用場景。 基本的方法和其限制使用 append 函數最直接的方法是使用 append 函數,它將一個切片的元素添加到另一個切片的末尾。slice1 := []int{1, 2}slice2 := []int{3, 4}result := app ⌘ Read more=
今天,我們將開始 Golang + LLM 系列的教程,本文將介紹如何在 Hugging Face 上使用 LangchainGo 來實現你的第一個大模型應用!Hugging Face 是什麼?Hugging Face 是一個火爆的人工智能開發社區和平臺,專注於自然語言處理(NLP)領域。該平臺提供了各種各樣的工具和資源,包括預訓練模型、模型庫、數據集、評估指標以及用於開發和部署 NLP 模型的庫 ⌘ Read more
今天,我們將開始 Golang + LLM 系列的教程,本文將介紹如何在 Hugging Face 上使用 LangchainGo 來實現你的第一個大模型應用!Hugging Face 是什麼?Hugging Face 是一個火爆的人工智能開發社區和平臺,專注於自然語言處理(NLP)領域。該平臺提供了各種各樣的工具和資源,包括預訓練模型、模型庫、數據集、評估指標以及用於開發和部署 NLP 模型的庫 ⌘ Read more
將 PDF 轉換爲 Word 這是一個很常見的功能了,用 Go 語言實現,可以通過以下步驟完成:1 安裝 PDF 轉換工具庫:首先需要使用 Go 語言中的 PDF 轉換庫,比如 pdftoword 或 pdfcpu。你可以使用 Go 的包管理工具(如 go get)來安裝這些庫。2 導入依賴庫:在 Go 項目中導入你選擇的 PDF 轉換庫,並確保正確地導入了所有需要的依賴項。3 加載 PDF 文件 ⌘ Read more
本文讓我們使用 Rust 實現一個簡單的 MIDI Piano 應用程序。首先,使用以下命令創建一個 Rust 新項目:cargo new midi-rs然後在 Cargo.toml 文件中加入依賴項:\neframe = "0.27.2"itertools = "0.12.1"phf = { version = "0.11", features = \n ⌘ Read more
本文讓我們使用 Rust 實現一個簡單的 MIDI Piano 應用程序。首先,使用以下命令創建一個 Rust 新項目:cargo new midi-rs然後在 Cargo.toml 文件中加入依賴項:[dependencies]eframe = "0.27.2"itertools = "0.12.1"phf = { version = "0.11", features = ["macros"] ⌘ Read more
前言--大家好,這裏是浩道 Linux,主要給大家分享 Linux、Python、網絡通信、網絡安全等相關的 IT 知識平臺。今天浩道跟大家分享關於 TCP/IP 協議的硬核乾貨,通過本文,相信你可以很優雅就可以學習到其精華! 本文整理了一些 TCP/IP 協議簇中需要必知必會的十大問題,既是面試高頻問題,又是 IT 工程人員必備基礎素養。TCP/IP 十個問題一、TCP/IP 模型TCP/IP ⌘ Read more
1、問題背景智慧門診系統旨在從一定程度上解決患者面臨的三長一短(掛號、看病、取藥時間長,醫生問診時間短)的問題。實現 “診前、診中、診後” 實時智能一體化,整合完善醫院工作流程。圍繞門診看病的各個環節,讓患者全程手機有提醒,讓患者少排隊、少跑腿、看病更簡單,獲得全流程的陪伴服務從而有效提升就醫體驗。系統通過接收醫院第三方系統推送的門診數據,再結合業務服務處理後主動推送到前端,從而實時的將數據同步給 ⌘ Read more
今天給大家推薦這款拖拽組件VueDraggablePlus,試了一下非常不錯,據說還被尤雨溪推薦過,咱們國人自己開發的,中國人不騙🇨🇳人,我就再來推薦一遍吧。背後的故事-----提到拖拽功能的實現,大家首先想到的幾乎都是大名鼎鼎的Sortablejs。和大家一樣,Sortablejs也是我開發時的首選, 由於項目使用的是 Vue3,選擇了Sortablejs官方封裝的 vue.draggable. ⌘ Read more
gnet 是一個基於 Go 語言的事件驅動型網絡框架,其設計宗旨是實現高性能和輕量級。gnet 在底層採用了 epoll 和 kqueue 機制,相較於 Go 語言標準庫 net 在特定場景下有着更好的性能和更低的內存消耗。雖然 gnet 並非旨在取代 Go 語言的 net 庫,但它提供了另一種在 Go 生態系統中構建性能敏感型網絡服務的選擇。通過實現應用層的協議(如 HTTP、RPC、WebSo ⌘ Read more
在進行金融領域的軟件開發時,貨幣值的精確表示和操作至關重要。由於浮點數帶來的精度問題,傳統的處理方式經常導致數值上的細微誤差。針對這一問題,go-money包提供了基於 Go 語言的解決方案,實現了 Fowler 的貨幣模式。本文將深入解析go-money包,演示其具體的使用方式,並通過豐富的示例讓您掌握如何在 Go 項目中實現精確的貨幣計算。起步:安裝 go-money------------- ⌘ Read more
默認情況下 Sentinel 只能接收到 Nacos 推送的消息,但不能將自己控制檯修改的信息同步給 Nacos,如下圖所示:但是在生成環境下,我們爲了更方便的操作,是需要將 Sentinel 控制檯修改的規則也同步到 Nacos 的,所以在這種情況下我們就需要修改 Sentinel 的源碼,讓其可以實現和 Nacos 的雙向通訊,如下圖所示:改造之後的交互流程如下圖所示:Sentinel 同步規 ⌘ Read more
作者:tensorchen 本文從技術應用架構以及 AI 大模型賦能角度介紹騰訊文檔 AI 智能助手的探索和實踐之路。作爲一款集多功能爲一體的 AI 產品,騰訊文檔全品類與 AI 進行了深度融合,全面提升用戶生活和辦公中的效率。通過騰訊文檔 AI,你腦海中靈光一現的 Idea 可以快速轉化爲詳細的內容,在各種類型的文檔中同源流轉。同時,面對紛繁複雜的信息,騰訊文檔 AI 也可以加以分析處理,幫助 ⌘ Read more
故障模式----故障發生和檢測的方式對於許多算法都很重要。以下是最常用的:故障停止故障停止意味着如果節點出現問題,每個人都能知道並檢測到它,並能從穩定的存儲中恢復狀態。這在理論和協議上都是簡單的模式,但在實踐中卻很難實現(在某些情況下甚至是不可能的)崩潰故障崩潰故障意味着,如果節點或代理出現問題,它就會崩潰,然後再也不會回來。你要麼永遠正確,要麼永遠遲到。這在理論上比故障停止更容易設計(但操作起來 ⌘ Read more
1 這是一個背景--------最近接了一個需求,要提供一個隨意組合多個條件來查詢訂單數據的功能,看着數據庫裏過億的訂單量,頭髮不爭氣的又脫落了兩根代表這個需求不簡單脫落的兩根頭髮,不是技術實現上很難,其實技術實現上清晰明瞭,就是通過數據異構,將數據同步到 ES,利用 ES 的倒排索引、緩存等能力,提供多條件複雜查詢的能力,而 ES 集羣我們已經有了但有些數據,在目前的 ES 索引中是不存在的,也 ⌘ Read more
一哨兵模式介紹 哨兵模式(Sentinel)是 Redis 提供的高可用解決方案,作爲一個分佈式系統,它包含了多個 Sentinel 節點和 Redis 節點,這些 Sentinel 節點會監控 Redis 節點的狀態(通常爲主從複製),如果發現 master 節點不可用時,會自動將其中一個 slave 節點提升爲 master 節點,從而實現了自動故障轉移。總體來講,哨兵模式的主要功能有如下幾 ⌘ Read more
截至撰寫本文時,Go 1.22 已經發布幾個月了。早就該結束我爲 1.22 所做的工作的系列了。抱歉耽擱了這麼久,我最近忙於生活事務。如果您錯過了我關於 reflect.TypeFor(https://blog.carlana.net/post/2024/golang-reflect-type-for/) 和 slices.Concat(https://blog.carlana.net/post/ ⌘ Read more
Rust 挑戰 - 動手實現 HashMap 1讓我們從上一篇文章結束的地方繼續。我們要實現 getmut() 方法,這應該與 get() 方法一樣,但編譯器不會讓我們簡單地將不可變變量更新爲可變變量。解決方案是通過迭代器循環遍歷 entry,而不是老式的索引計數。由於我們需要從給定的索引開始,循環遍歷整個數組,以 index-1 結束,這本身有點棘手,但可以使用 Iterator::splita ⌘ Read more
如何設計安全可靠的 API ?下圖列出了 12 條原則。01 使用 HTTPS 數據加密:HTTPS 對客戶端和服務器之間傳輸的數據進行加密。它使用 TLS 或其前身 SSL 對通信進行加密。這種加密可確保用戶數據、身份驗證等敏感信息在傳輸過程中保持安全。如果沒有 HTTPS,這些信息可能會被數據包嗅探等技術截獲。 合規要求:許多監管標準,如 GDPR 和 PCI DSS,都要求使用 HT ⌘ Read more
背景-----在 web 端處理音視頻是一個複雜而又重要的課題,市場上主流的視頻編輯通常採用服務端進行渲染導出,因爲專用的服務器對音視頻的編解碼能力更強,所以服務端渲染導出的速度很不錯;少數編輯器在瀏覽器本地對視頻進行處理,一方面對服務器成本非常友好,另一方面可以不需要註冊等流程,在小型視頻的渲染上用戶體驗更好。但是瀏覽器本地渲染對用戶設備有一定要求,對瀏覽器的兼容性等等也有要求。而經典的在瀏覽器 ⌘ Read more
JavaScript 中的 Promise 一開始可能會讓人感到有些難以理解,但是如果我們能夠理解其內部的工作原理,就會發現它們其實是非常易於掌握的。在這篇博客文章中,我們將深入探討 Promise 的一些內部機制,並探索它們是如何使得 JavaScript 能夠執行非阻塞的異步任務。一種創建 Promise 的方式是使用 new Promise 構造函數,它接收一個執行函數,該函數帶有 reso ⌘ Read more
今年 2 月,我宣佈 Dolt 版本現已構建爲配置文件引導優化 (pgo) 二進制文件,利用 Golang 1.20 的強大功能將 Dolt 的讀取性能提高 5.3%。在我宣佈這一消息之前,我們的一位常駐 Golang 專家 Zach 試驗並測試了 Golang 的 pgo 功能,並寫下了他在使用 Dolt 構建後觀察到的性能提升,該配置文件首先針對 Dolt 運行我們的 Sysbench 基準測 ⌘ Read more
一、背景----2023 年以來,LLM 變成了相當炙手可熱的話題,以 ChatGPT 爲代表的 LLM 的出現,讓人們看到了無限的可能性。ChatGPT 能寫作,能翻譯,能創作詩歌和故事,甚至能一定程度上做一些高度專業化的工作,比如法律服務和醫療診斷諮詢。然而,正如任何新技術一樣,LLM 也帶來了新的挑戰和問題。我們如何確保它們的安全性,如何防止它們被用於不良目的?這些都是亟待解決的問題。在本文 ⌘ Read more
作者:avengerEug 來源:juejin.cn/post/6984574787511123999前言--經過前面對 Spring AOP、事務的總結,我們已經對它們有了一個比較感性的認知了。今天,我繼續安利一個獨門絕技:Spring 事務的鉤子函數。單純的講技術可能比較枯燥乏味。接下來,我將以一個實際的案例來描述 Spring 事務鉤子函數的正確使用姿勢。一、案例背景------拿 ⌘ Read more
Llama 3-8B Chinese[1] 是在 Meta 最新發布的 Llama-3-8b 模型基礎上進行微調的中文版。該模型採用 firefly-train-1.1M、moss-003-sft-data、schoolmath0.25M、ruozhiba 數據集,使模型能夠使用中文回答用戶的提問。在本文中,我們將使用 LlamaEdge 本地運行 Llama-3-8B 中文版模型。使用 Llam ⌘ Read more
Llama 3-8B Chinese\n 是在 Meta 最新發布的 Llama-3-8b 模型基礎上進行微調的中文版。該模型採用 firefly-train-1.1M、moss-003-sft-data、schoolmath0.25M、ruozhiba 數據集,使模型能夠使用中文回答用戶的提問。在本文中,我們將使用 LlamaEdge 本地運行 Llama-3-8B 中文版模型。使用 Llam ⌘ Read more
Intent 意圖---------模板方法是一種行爲設計模式,它定義超類中算法的骨架,但允許子類在不改變其結構的情況下覆蓋算法的特定步驟。template-method-headerProblem 問題----------假設您正在創建一個用於分析公司文檔的數據挖掘應用程序。用戶以各種格式(PDF、DOC、CSV)嚮應用程序提供文檔,並嘗試以統一格式從這些文檔中提取有意義的數據。該應用程序的第一 ⌘ Read more
如何設計安全的系統?我們總結了 12 條原則供架構師們參考。設計安全的系統非常重要,原因有很多,從保護敏感信息到確保基礎設施的穩定性和可靠性,不一而足。作爲開發人員,我們應該設計和實施這些默認的安全準則。下圖是一份實用的小抄,包含使用場景和關鍵設計要點。01 身份驗證-------設計要點:實施多因素身份驗證 (MFA)、使用強密碼策略並考慮生物識別選項。 使用場景:網絡應用程序的用戶登錄、 ⌘ Read more
前言--hi,大家好,我是徐小夕,之前和大家分享了很多可視化低代碼的技術實踐,最近也做了一款非常有意思的文檔搭建引擎——Nocode/Doc:也做了一些分享:Nocode/Doc,可視化 + 零代碼打造下一代文件編輯器 爆肝 1000 小時, Dooring 零代碼搭建平臺 3.5 正式上線 接下來和大家分享另一個比較有意思的話題——多人協同技術。文章大綱----多人協同技術方案探討 ⌘ Read more
字符串是一種重要的數據類型,編寫的任何應用程序,只要使用文本數據、或者與用戶進行交互,都離不開對字符串的處理。C 語言提供了一組字符串操作函數,方便開發者對字符串進行操作,函數原型在標準函數庫 string.h 文件內。獲取字符串的長度用於獲取字符串的長度,即字符串包含的有效字符個數(不包含結束符‘\\\\0’),函數原型爲:unsigned int strlen(char s);函數返回字符數組 s ⌘ Read more
在 Go 語言標準庫中,bytes包提供了對 byte slice ([]byte) 的便捷操作,其中Buffer是一個實現了io.Reader和io.Writer接口的可變大小的字節緩衝。我們通常使用Buffer來讀寫數據、處理字符串和字節的過程中實現高性能的操作。Buffer 的使用場景------------Buffer在以下場景中特別有用:當需要一個字節緩衝時 進行字符串的高效拼接 ⌘ Read more
文件鎖簡介---------在多數 unix 系統中,當多個進程 / 線程同時編輯一個文件時,該文件的最後狀態取決於最後一個寫該文件的進程。但對於有些應用程序,如數據庫,各個進程需要保證它正在單獨地寫一個文件,這時就要用到文件鎖。文件鎖(也叫記錄鎖)的作用是,當一個進程讀寫文件的某部分時,其他進程就無法修改同一文件區域。更合適的術語可能是字節範圍鎖,應爲它鎖定的是一個文件中的一個區域(也可以是整個 ⌘ Read more
在這篇文章中,我們將深入瞭解 Rust 中 Trait 的關聯類型和自動實現。我們將使用標準庫中的示例來闡明這些概念,並演示它們在 API 設計中的重要性。Iterator Trait讓我們從探索 Iterator Trait 開始,它是 Rust 標準庫的一個基本組件。Iterator Trait 允許你通過遍歷集合的元素來處理集合。以下是它的基本定義:trait Iterator { t ⌘ Read more
什麼是分佈式鏈路追蹤(Distributed Tracing?)?分佈式追蹤是軟件開發和性能監控中使用的一種技術,用於跟蹤和分析請求在分佈式系統的各個組件中的流動。在現代軟件應用中,不同的服務和微服務通常一起工作來滿足用戶請求。這些服務可能分佈在多臺服務器、容器或地理位置上。瞭解這些服務之間的交互並識別瓶頸或性能問題可能是具有挑戰性的。不同服務生成的跨度被收集併發送到一個稱爲追蹤系統的集中式存儲庫 ⌘ Read more
Golang 基於多線程、協程實現,與生俱來適合異步編程,當我們遇到那種需要批量處理且耗時的操作時,傳統的線性執行就顯得喫力,這時就會想到異步並行處理。下面介紹一些異步編程方式和技巧。作者:zvalhu一、使用方式1.1、最簡單的最常用的方式:使用 go 關鍵詞func main() { go func() { fmt.Println("hello world1") }() go func( ⌘ Read more
一、須知--------開發大型項目,肯定需要使用一些框架,這些框架可以由你自己親自手工實現,也可以直接引用第三方庫。1、自己實現框架優點:程序的所有細節都能非常清楚的掌握。缺點:工作量大、難度高。2、引用第三方庫優點:選擇一個穩定、靠譜的第三方框架,將很大程度降低工作量、提高開發效率,將精力重點放在業務邏輯。缺點:庫本身有功能和性能問題。因此,請儘量使用優秀的第三方庫,避免重複造輪子(自己造的輪 ⌘ Read more
讓我們在 Rust 中實現一個哈希表數據結構,由於哈希表的效率和通用性,它在數據結構中非常重要。通過從頭開始實現它,我們可以深入瞭解所涉及的底層算法和數據結構。同時還還會提高我們的 Rust 技能。說到算法,我們將實現線性探測開放尋址哈希表。我們將採用自頂向下的方法,從較高級別的抽象開始,然後逐步向下到較低級別的抽象和實現。讓我們從最頂層的抽象開始:API,我們不支持 Rust 標準庫 std:: ⌘ Read more
2024.04.20 合肥岸上草原 作爲一個 Java 開發者,如果要問你 Java 中有哪些關鍵字,你可能會隨口說出一串,如果問你 Java 有哪些最不常使用的關鍵字,或許你還能說出幾個。但是 assert 關鍵字一定算是其中之一,或者,Java 寫了幾年,還沒有用過 Java 的 assert 關鍵字。這篇文章介紹 Java assert 的用法、最佳實踐、特殊用法以及替代工具。Java A ⌘ Read more
Apache ShardingSphere 是一個分佈式數據庫生態系統, 可將任何數據庫轉換爲分佈式數據庫, 併爲其提供數據分片、彈性擴展、加密等功能。在本文中, 我演示瞭如何基於 ShardingSphere 構建分佈式數據庫負載均衡架構, 並探討了引入負載均衡的影響。架構--ShardingSphere 分佈式數據庫負載均衡架構由兩個產品組成: ShardingSphere-JDBC 和 Sh ⌘ Read more
2007 年 Go 誕生於 Google,2009 年 Google 正式對外宣佈了 Go 語言的開源!時至今日,距離 Go 開源已經過去了近 15 個年頭了 \n!Go 在 Google 公司內部究竟是怎樣的一個狀態呢?前 Google 員工 Yves Junqueira 近期撰文從其個人所見所聞談了 Go 在 Google 的歷程 \n!這裏簡單翻譯,供大家參考! 最近,Jeremy Ma ⌘ Read more
2007 年 Go 誕生於 Google,2009 年 Google 正式對外宣佈了 Go 語言的開源!時至今日,距離 Go 開源已經過去了近 15 個年頭了 [1]!Go 在 Google 公司內部究竟是怎樣的一個狀態呢?前 Google 員工 Yves Junqueira 近期撰文從其個人所見所聞談了 Go 在 Google 的歷程 [2]!這裏簡單翻譯,供大家參考! 最近,Jeremy Ma ⌘ Read more*
大家好,我是君哥。我們使用 Kafka 的時候,怎樣能保證不丟失消息呢?今天來聊一聊這個話題。首先我們看一下 Kafka 的架構圖,場景一:異步發送--------Producer 異步發送是丟失消息比較多的場景,Kafka 異步發送的代碼如下:ProducerRecordbyte],byte[] record = new ProducerRecordbyte[],byte[;RecordMeta ⌘ [Read more](https://www.readfog.com/a/1733106394393055232)
資源管理----資源管理是 Spring 的一個核心的基礎功能,不過在說 Spring 的資源管理之前,先來簡單說一下 Java 中的資源管理。Java 資源管理Java 中的資源管理主要是通過java.net.URL來實現的,通過 URL 的openConnection方法可以對資源打開一個連接,通過這個連接讀取資源的內容。資源不僅僅指的是網絡資源,還可以是本地文件、一個 jar 包等等。1、來 ⌘ Read more
大家好,我是不才陳某~你可能一開始會比較畏懼使用複雜的工具去排查問題,又或者是打開了工具感覺無從下手,但是隨着實踐越來越多,對 Java 程序和各種框架的運作越來越熟悉,你會發現使用這些工具越來越順手。這篇文章中介紹下如何使用 JDK 自帶工具來分析和定位 Java 程序的問題。使用 JDK 自帶工具查看 JVM 情況--------------------JDK 自帶了很多命令行甚至是圖形界面工 ⌘ Read more
變量要在 Rust 中創建不可變變量,只需編寫 let x = 1337,這是簡單的。如果想創建一個以後可以改變的變量,只需在 let 之後添加 mut 關鍵字。添加 mut 關鍵字通知其他人該變量將在代碼的其他地方被修改。例如:let mut x = 1337 和 let y = 42,如圖:引用目前,一切都很簡單。然而,當使用 mut 引用時,事情開始變得有點棘手。讓我們創建一些。let mu ⌘ Read more=
Buffalo 是面向 Go 語言的 Web 開發框架,它旨在簡化 Web 應用的開發流程,並且提供了一整套的生態系統,幫助開發者快速搭建起從前端(JavaScript,SCSS 等)到後端(數據庫,路由等)的 Web 項目。接下來,我們將深入探討 Buffalo 框架的關鍵特性,並以豐富的例子講解如何使用 Buffalo 進行高效的 Web 開發。背景任務處理:Grift------------ ⌘ Read more
dll 轉發概述------------dll 轉發: 攻擊者使用惡意 dll 替換原始 dll,重命名原始 dll 並通過惡意 dll 將原先的功能轉發至原始 dll。該惡意 dll 一般用來專門執行攻擊者希望攔截或修改的功能,同時將所有其他功能轉發至原始 dll一般可與 dll 劫持共同使用。dll 搜索順序首先我們來看一下 Windows 系統中 dll 的搜索順序 上圖中攻擊者可以控制的 ⌘ Read more
👉導讀對於人類的身體健康來說,“三高” 是個大忌,但在計算機界,系統的 “三高” 卻是健康的終極目標。本文將介紹一下流量治理是如何維持這種 “三高” 系統的健康,保障數據流動的均衡與效率,就如同營養顧問在維持人類健康飲食中所起的作用一般。01可用性的定義在探討高可用架構之前,讓我們以 O2 系統爲例,解釋一下何謂可用性。O2 是騰訊內部的一個廣告投放系統,專注於提升投放效率、分析廣告效果,擁有自動 ⌘ Read more
Netlink 是 Linux 內核中用於進程間通信的機制。它提供了一種可靠且高效的方式,使用戶空間程序可以與內核進行通信,並在運行時監控和控制系統狀態,Netlink 機制通過一個特殊的套接字族(AFNETLINK)實現,允許用戶空間程序發送和接收各種類型的網絡相關消息。這些消息可以涉及網絡配置、路由表更新、連接狀態變化等。使用 Netlink 機制,用戶空間程序可以與內核模塊交互,例如操作網絡 ⌘ Read more
0 前言本着學習和實踐的目的,從本期開始,我將和大家一起走進一個新的專題—— 【基於 go 實現 redis】 .該專題圍繞着我的一個開源項目——goredis 展開. 由於個人水平有限,如有不到位之處,歡迎批評指正:https://github.com/xiaoxuxiansheng/goredis本系列計劃分爲四篇內容:• 基於 go 實現 redis 之主幹框架(本篇): 在宏觀視角下縱覽 ⌘ Read more
本文譯自 Yarden Laifenfeld 的 Accessing Private Functions, Methods, Types and Variables in Go https://medium.com/@yardenlaif/accessing-private-functions-methods-types-and-variables-in-go-951acccc05a6你 ⌘ Read more
在一個應用程序或庫的開發過程中,除了其本身的邏輯以外,開發人員還需要做很多額外的工作,以保證編寫的代碼可以正確的運行,或者在出錯時可以快速定位到錯誤的位置以及原因,這就需要引入一些額外的工具,trace 就是其中特別好用的一種,下文我將會簡單介紹 trace,並以 Rust 爲例,演示 trace 在 Rust 中的使用方法。 1 可觀測性 Logs、Metrics 和 Traces 並稱爲可 ⌘ Read more
在今天的數據驅動世界中,異步通信模式對實現高效的數據處理和服務間通信至關重要。Go 語言因其簡潔的語法、強大的併發支持而成爲處理高併發事件流的理想選擇。在衆多 Go 語言庫中,Watermill 是一個值得關注的事件流處理庫。本文將深入探討 Watermill 的內部機制、優點以及如何在 Go 項目中有效地利用它來處理異步請求。Watermill 簡介------------Watermill 是 ⌘ Read more
代理的核心功能可以用一句話概括:接受客戶端的請求,轉發到後端服務器,獲得應答之後返回給客戶端。代理的功能有很多,事實上整個互聯網到處都充斥着代理服務器。如果所有的 HTTP 訪問都是客戶端和服務器端直接進行的話,我們的網絡不僅會變得緩慢,而且性能會大打折扣。代理服務器根據不同的配置和使用,可能會有不同的功能,這些功能主要包括:內容過濾:代理可以根據一定的規則限制某些請求的連接。比如有些公司會設置內 ⌘ Read more
在分佈式系統和網絡編程領域,優雅地處理瞬時錯誤是構建彈性應用程序的關鍵方面。應對這些暫時性小故障的一種有效策略是實現重試模式。在這篇博客文章中,我們將深入探討在 Golang 中創建一個健壯的重試模式瞬時錯誤瞬時錯誤,通常在網絡操作中遇到,可能是短暫的故障,可以包括網絡超時、服務器暫時不可用或其他瞬時故障。通過重試來解決這些錯誤可以顯著提高應用程序的可靠性和容錯能力。Golang 重試模式重試模式 ⌘ Read more
在 Linux 系統中,進程是操作系統中最基本的執行單位,進程管理是系統管理的核心之一。本文將從基本操作開始,逐步介紹 Linux 進程管理的各個方面,幫助讀者全面瞭解和掌握 Linux 進程管理的技巧和工具。基本介紹1.1 進程的概念進程是計算機中正在運行的程序的實例。每個進程都有自己的內存空間、寄存器和文件描述符等資源。進程可以獨立執行,與其他進程併發運行。1.2 進程的狀態Linux 系 ⌘ Read more
像 ChatGPT、Claude.ai 和 phind 這樣的聊天機器人非常有用,但可能並不總是希望的問題或敏感數據由外部應用程序處理。在平臺上尤其如此,在這些平臺上,你的互動可能會被人類審查,並以其他方式用於幫助訓練未來的模型。一種解決方案是下載一個大型語言模型(LLM)並在自己的機器上運行它。這樣一來,外部公司就永遠無法訪問的數據。這也是嘗試一些新專業模型的一個快速選擇,如 Meta 最近宣佈 ⌘ Read more
哈希函數是一種將輸入數據(任意長度)映射爲固定長度的輸出數據的函數。哈希函數的主要特點是:輸入的數據長度可以是任意的,但輸出的哈希值長度是固定的。2\\. 相同的輸入數據始終會產生相同的哈希值。3. 即使輸入數據的微小變化,也應該導致輸出哈希值的巨大不同。哈希函數的生成原理通常包括以下幾個步驟:1、 數據輸入:哈希函數接收輸入數據,可以是任意長度的數據,例如文件、文本、數字等。2、 數據預處理:在對輸 ⌘ Read more
作者:韓冰來源:https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452近年來,Transformer 技術在自然語言處理(NLP)領域引起了巨大關注。Transformer 是一種利用注意力機制(Attention)極大提升深度學習 NL ⌘ Read more
C 語言中,指針可以作爲函數參數進行傳遞,這允許函數直接操作變量的內存地址,而不是操作變量的副本。這種傳遞方式對於數組、結構體等數據結構來說特別有效,因爲它可以避免複製整個數據結構所帶來的內存開銷。值傳遞先看下面的代碼段:void temp(int a) {a = 20;}void main() {int num = 10;temp(num);printf("num= :%d\\\\n",num);}程 ⌘ Read more=
在本文中,將展示如何使用 Rust 和 Proto 協議創建一個簡單的 gRPC 服務。首先,我們運行以下命令來創建一個新的 Rust 應用程序:cargo new rustgrpc然後,在 Cargo.toml 文件中加入依賴項:[dependencies]tonic = "0.11"tokio = { version = "1", features = ["full"] }prost = "0 ⌘ Read more
最近又是 xz 後門事件,又是 Rust 標準庫發現 Windows 平臺漏洞,也發現一些朋友可能對 Rust 的安全承諾有所誤解,所以就打算寫一篇文章,再談一談 Rust 與安全。目錄--安全的分類 :Safety 與 Security Rust 的安全承諾 但 Rust 不保證 100% 安全 Rust 基金會和 Rust 安全工作組的努力 Memory Safety ⌘ Read more
在大數據和高流量應用程序的世界中,同時處理大量用戶是一個巨大的挑戰。許多全球最受歡迎的應用程序,服務超過 1 億用戶,依賴於強大、可擴展的架構來管理數據和請求的洪流。這些架構中的關鍵參與者是 Apache Kafka,一個分佈式事件流平臺,以其高吞吐量、可靠性和可擴展性而聞名。在這篇文章中,我們將探討大型應用程序如何使用 Apache Kafka 處理 1 億用戶,重點關注其架構和特性,使這成爲可 ⌘ Read more
本文將提供一些代碼優化指南,希望能夠幫助開發者增強其程序性能並簡化開發,實現更高效和健壯的編碼,解鎖 Golang 應用程序的潛力。 下面是我從自己平時開發常用的實用庫中隨機選擇的一些有用且通用的代碼片段。Tracking Execution Time如果你想要跟蹤 Go 中函數的執行時間,有一個簡單而高效的技巧,只需使用 defer 關鍵字即可實現一行代碼。你只需要一個 TrackTime 函數 ⌘ Read more
mdBook 是一個從 Markdown 文件創建現代在線書籍的實用程序。它是一個命令行工具。它非常適合創建產品或 API 文檔、教程、課程材料或任何需要乾淨、易於導航和自定義演示的內容。它有以下特性: 輕量級 Markdown 語法可幫助您更加專注於內容 集成搜索支持 許多不同語言的代碼塊的顏色語法高亮顯示 主題文件允許自定義輸出的格式 預處理器可以爲自定義語法和修改內 ⌘ Read more
1\\. 功能需求:我們的系統有兩類參與者內容創作者• 上傳任何類型的視頻(格式 + 編解碼器)• 視頻可以被刪除 • 視頻元數據 • 必填項: 標題,作者,描述 • 選填項: 分類 / 標籤列表 • 可以隨時更新 • 當視頻對觀衆可用時,向內容創作者發送電子郵件不在討論範圍內:• 直播 • 視頻修改 • 支付和訂閱用戶 / 觀衆• 需要註冊 + 訂閱 • 使用自由文本搜索視頻屬性 / 元數據 • 在 ⌘ Read more
現在,刷視頻已經成爲我們生活中的一部分,而且很容易一看就停不下來。你有沒有好奇過,它是如何在海量的視頻裏,找到讓你感興趣的視頻?又是如何讓你可以通過關鍵字,搜索到與之相關的視頻內容的呢?這一切都離不開計算機對視頻內容的分析和理解。計算機是如何 “看懂” 海量視頻的呢?視頻本質上是一系列連續的圖像幀,按照一定的幀率播放,從而形成連續的動態效果。因此,計算機分析視頻的基本原理就是:解碼(視頻轉圖片)- ⌘ Read more
背景這是很久之前的一個念想,當時爲了加深自己對 js 的理解,明白 js 引擎是如何工作的。於是從上網找了一個 giao-js[1],感覺還不錯,因此想學習一下。原文地址:https://juejin.cn/post/7205517870976270394?sharetoken=6a5d39fa-0b35-4e3c-8e93-0c9f11b2665dJS 引擎之前有篇文章理解 React 中 Fi ⌘ Read more
很多初級的 Gopher 在學習了 goroutine 之後,在項目中其實使用率不高,尤其一些跨語言過來的人,對併發編程理解不深入,可能很多人只知道 go func(), 或者掌控不夠,謹慎一些,儘量少使用或者不使用,用的話就是 go func(),主要列一下我們這邊的主要使用方法。goroutine 在項目中的使用方法看一下樣例代碼,實際上,我們生產環境中就是這麼使用的。package lo ⌘ Read more
Golang 線程池與協程池是併發編程中的重要概念,它們可以幫助我們更高效地管理併發任務,提高程序的性能和資源利用率。下面我將詳細解釋這兩個概念,包括它們的實現方式、使用場景以及原理。線程池(Thread Pool)概念:線程池是一種併發設計模式,用於管理線程的創建、銷燬和複用。線程池維護着多個線程,這些線程可以被用來執行任務,任務完成後線程並不立即銷燬,而是返回線程池中等待下一個任務。這樣可以減 ⌘ Read more
在軟件工程中,設計模式是解決常見問題的一套經典解決方案。Go 語言,作爲一種強調簡潔和高效的編程語言,其設計模式同樣體現了這些理念。本文將探討 Go 語言中常見的幾種設計模式,包括單例模式、工廠模式、策略模式、觀察者模式,並用 UML 創建概念模型來直觀展示這些設計模式的結構。1. 單例模式單例模式確保一個類只有一個實例,並提供一個全局訪問點。在 Go 中,使用私有結構體和公有的獲取實例函數是實現 ⌘ Read more
在併發編程中,互斥鎖(Mutual Exclusion)是一種常用的同步機制,用於保護關鍵資源並防止數據競態。然而,在特定情況下,特別是當鎖的持有時間很短且線程數量有限時,一種輕量級的鎖稱爲自旋鎖(Spin Lock)可以提供更高的性能。What is a Spin Lock自旋鎖是一種忙等待鎖。當一個線程試圖獲取另一個線程持有的鎖時,它會持續地檢查鎖的狀態(自旋),直到鎖被釋放,然後它就會獲得所 ⌘ Read more
什麼是 Playground? Playground 是一個 Web 服務,允許任何擁有網絡瀏覽器的人編寫 Go 代碼,可以立即進行編譯、鏈接並在服務器上運行。這是給好奇的程序員一個在安裝之前嘗試 Go 語言的機會,並給有經驗的 Go 用戶一個方便的實驗場所。當然,在 Playground 上運行的程序種類有一些限制,我們不能簡單地接受任意代碼並在我們的服務器上無限制的運行它。這些程序是在一個刪 ⌘ Read more
在當今多元化的軟件開發生態中,Rust 作爲一個旨在提供高性能與安全並存的系統編程語言,逐漸在開發者中獲得了聲譽。而在構建圖形用戶界面(GUI)時,選擇合適的框架對開發效率和用戶體驗都至關重要。Druid 是基於 Rust 語言的一個開源、數據導向的 GUI 框架,它能夠幫助開發者以高效和穩定的方式構建 GUI 接口,同時保持對細節的高度控制。接下來,我們將詳細探討 Druid 框架的特點及其使用 ⌘ Read more
Duck Typing鴨子類型(Duck Typing)是一種編程概念,關鍵在於根據對象的行爲來確定其類型。通常的解釋是通過一個巧妙的例子:根據對象的行爲來判斷它是否是一隻鴨子。如果它游泳像鴨子、嘎嘎叫像鴨子,那麼它就可以被認爲是一隻鴨子。動態語言如 Python 和 JavaScript 自然支持這種特性,但與靜態語言相比,動態語言缺乏重要的類型檢查。Go 語言的接口設計與鴨子類型概念密切相關, ⌘ Read more
使用這些不可或缺的 GitHub 庫構建健壯高效的 Go 應用程序---------------------------------在充滿活力的 Golang 開發生態系統中,GitHub 是一個寶庫,提供了許多寶貴的庫和包,這些庫和包簡化了開發工作流程,提高了生產效率,並促進了代碼重用。從 Web 框架到數據庫驅動,GitHub 倉庫託管了大量必備的 Go 庫,使開發人員能夠構建健壯且可擴展的應 ⌘ Read more
go-mysql-server 是一個用 Go 編寫的 MySQL 兼容的查詢引擎。它不僅是一個解析器,還是一個服務器和查詢執行引擎,完全使用 Go 語言編寫。與 Dolt 一樣,它的目標是成爲 MySQL 的 100% 兼容的替代品。go-mysql-server 具有以下兩個主要用途:作爲 Golang 測試環境中 MySQL 的替代品,使用內置的內存數據庫實現。 通過實現一些接口, ⌘ Read more
作者:jordiwang https://juejin.im/post/6854573219454844935現有的前端視頻幀提取主要是基於 canvas + video 標籤的方式,在用戶本地選取視頻文件後,將本地文件轉爲 ObjectUrl 後設置到 video 標籤的 src 屬性中,再通過 canvas 的 drawImage 接口提取出當前時刻的視頻幀。受限於瀏覽器支持的視頻編碼格式, ⌘ Read more
作者:前端了liaoliaohttps://juejin.cn/post/7137192060045492231實戰目的根據不同的產品配合接口展示相應的描述。根據選擇的場景及其物品實現可視化的產品展示效果。效果展示 支持不同位置展示不同描述:配合數據配置渲染不同楨的效果 根據選中的產品,切換相應產品效果 根據選中場景,切換相應的場景實現思路 封裝一個 Three 的函數,支持設置相機、場景 ⌘ Read more
作者:青年老年程序員 原文:https://blog.csdn.net/bairo007/article/details/131779053一、 簡介------1.1 什麼是 WebSocketWebSocket 是一種協議,用於在 Web 應用程序和服務器之間建立實時、雙向的通信連接。它通過一個單一的 TCP 連接提供了持久化連接,這使得 Web 應用程序可以更加實時地傳遞數據。W ⌘ Read more
一、前言----當在傳入函數時,有些時候,不需要顯式地定義函數,直接傳入匿名函數更方便。二、匿名函數------在 Python 中,對匿名函數提供了有限支持。還是以 map() 函數爲例,計算 f(x)=x2 時,除了定義一個 f(x) 的函數外,還可以直接傳入匿名函數:print(list(map(lambda x: x x, [1, 2, 3, 4, 5, 6, 7, 8, 9])))通過 ⌘ Read more=
當我們在開發一些組件的時候,比如下拉框或者一些模態框等組件,我們希望在點擊元素之外的時候就能夠把相應的元素收起來或者隱藏;這看似十分簡單的需求,其實隱藏着很多的判斷邏輯和代碼技巧在裏面,筆者就結合這幾天閱讀 element-plus 和 naive-ui-admin 源碼的經驗,總結分享自己的一些經驗和想法。在學習源碼之前,我們先進行鋪墊一下,瞭解一下簡單幾個工具函數的使用,方便後續理解。工具函數 ⌘ Read more
函數指針是 C 語言中的一個重要概念,它允許程序員將函數作爲參數傳遞、賦值給變量,或者作爲函數的返回值。這種機制爲高級編程技術如回調函數、函數表、函數指針數組等提供了基礎。函數指針的定義函數指針的聲明形式爲:returntype (functionpointername)(parameter list);其中,returntype 是函數返回值的類型,functionpointername 是函數 ⌘ Read more
大家好,我是蘇三,又跟大家見面了。-----------------前言--Redis 作爲一種優秀的基於 key/value 的緩存,有非常不錯的性能和穩定性,無論是在工作中,還是面試中,都經常會出現。今天這篇文章就跟大家一起聊聊,我在實際工作中使用 Redis 的 10 種場景,希望對你會有所幫助。統計訪問次數---------對於很多官方網站的首頁,經常會有一些統計首頁訪問次數的需求。訪問次 ⌘ Read more
錯誤地使用可變和不可變借用 let mut data = vec![1, 2, 3];let x = &data[0];data.push(4);println!("{}", x);不能在有不可變引用時修改數據。忘記處理 Option fn main() { let somenumber = Some(5); let sum = somenumber + 5; // 錯誤: ⌘ Read more
今天聊點輕鬆的,這篇文章會分享一些用 Golang 開發的非常棒的 GUI 應用。 Pixyne第一個是 Pixyne,這是一個照片應用程序,允許你快速查看文件夾中的照片!以下是他們在 Fyne 頁面的鏈接 [1]。EasyLPAC接下來是 EasyLPAC,這個軟件能夠從電腦管理你的 eUICC 卡。這是項目在 GitHub 頁面的鏈接 [2]。Snap接下來是 Snap,這是一個跨平臺的工具 ⌘ Read more
FyneDesk 是一個易於使用的 Linux/Unix 桌面環境,遵循材料設計原則。它使用 Fyne 工具包構建,旨在易於使用和開發。我們使用 Go 語言,並歡迎任何對項目的貢獻或反饋。爲了完整的桌面體驗,您還需要安裝以下外部工具:arandr 用於修改顯示設置 xbacklight 或 brightnessctl 用於調整筆記本電腦的亮度 目前使用 connman-gtk 來配置 ⌘ Read more
引言--Learn X in Y minutes 是一個非常棒的編程教程網站,旨在提供快速、簡潔的編程語言入門指南。這個網站的口號是 "Take a whirlwind tour of your next favorite language"(快速體驗你下一個喜歡的編程語言)。網站的特點-----覆蓋範圍廣:Learn X in Y minutes 提供了數十種編程語言的教程, 包括主流的語言如 ⌘ Read more
在現代軟件開發中,HTTP 請求處理是一個重要環節。Grequests 是 Go 語言中一個高效的 HTTP 請求庫,靈感來源於 Python 中廣受歡迎的 Requests 庫。本文將深入講解 Grequests 庫在 Go 語言中的實現和使用,幫助開發者快速掌握其強大功能。功能概述----Grequests 庫爲 Go 開發者提供了一系列的便利功能,使得發送 HTTP 請求變得簡單高效。下面就 ⌘ Read more
Go 非常適合於構建命令行應用程序。我們構建了一個名爲 Dolt 的應用, 它是世界上第一個支持版本控制的 SQL 數據庫。我們爲處理 Dolt 的所有子命令和參數編寫了自己的命令行解析器, 但也許我們不應該這樣做。現在有很多很棒的工具可以替代我們自己編寫的解析器, 如果我們今天開始這個項目, 我們可能會選擇使用它們:spf13/cobra 提供了從簡單的文本命令格式生成代碼的強大支持, 並且可以 ⌘ Read more
本文介紹 Golang 中處理字符串的最佳實踐,確保開發項目中實現最佳的效率、最佳性能並讓代碼更優雅。字符串可以爲 nil 嗎?如下所示,在創建字符串變量時,默認值必須是空字符串 ""。如果我們嘗試使用 nil 值初始化字符串變量,將遇到一個錯誤,提示 nil 不能在變量聲明中用作字符串值。例如:func main() { var s string s = nil // Cannot us ⌘ Read more
前言--今天老闆又給下了一個需求,在線用戶的消息推送,這個功能我相信 95% 的產品都有這個需求,比如下面的需求場景1: 運營給在線的用戶推送一些活動或者文案或者公告2: 實時監控和通知:在監控系統中,可以使用消息推送來實時向操作員發送系統警報和通知。例如,當系統出現異常或達到某個閾值時,服務器可以向操作員發送警報消息。3: 社交網絡和新聞資訊:使用消息推送來通知用戶有新的消息、新的粉絲或者新的內 ⌘ Read more
基礎知識準備在在代碼實戰 gRPC 之前,我們需要了解一些基礎知識:RPC(Remote Procedure Call):遠程過程調用,是一種通信協議,允許應用程序在不同的計算機上請求服務而不需要了解底層網絡細節。 gRPC:gRPC 是一種高性能、開源的遠程過程調用(RPC)框架,由 Google 開發,並基於 HTTP/2、Protocol Buffers 等技術實現。 Proto ⌘ Read more
Etcd 概述-------什麼是 Etcd ?Etcd 是 CoreOS 團隊於 2013 年 6 月發起的開源項目,它的目標是構建一個高可用的分佈式鍵值 (key-value) 數據庫。etcd 內部採用raft協議作爲一致性算法,Etcd 基於 Go 語言實現。名字由來,它源於兩個方面,unix 的 “/etc” 文件夾和分佈式系統 (“D”istribute system) 的 D,組合在 ⌘ Read more
楔子本次來聊一聊如何用 Python 實現 RSA,我們知道 RSA 是一種非對稱加密算法,並且應用非常廣泛,比如 HTTPS。 所以在介紹 RSA 之前,需要先解釋一下什麼是對稱加密和非對稱加密。 對稱加密在重要信息的傳遞過程中,人們總是希望信息不會被偷看、不會被篡改,僞造等。爲了達到這個要求人們一直在不斷努力着。 電報加密所使用的密碼本,就是初代網絡安全所使用的加密方式,用法 ⌘ Read more