Searching We.Love.Privacy.Club

Twts matching #go
Sort by: Newest, Oldest, Most Relevant

Go 語言實現 dll 惡意劫持轉發
dll 轉發概述————dll 轉發: 攻擊者使用惡意 dll 替換原始 dll,重命名原始 dll 並通過惡意 dll 將原先的功能轉發至原始 dll。該惡意 dll 一般用來專門執行攻擊者希望攔截或修改的功能,同時將所有其他功能轉發至原始 dll一般可與 dll 劫持共同使用。dll 搜索順序首先我們來看一下 Windows 系統中 dll 的搜索順序 上圖中攻擊者可以控制的 ⌘ Read more

⤋ Read More

基於 go 實現 redis 之主幹框架
0 前言本着學習和實踐的目的,從本期開始,我將和大家一起走進一個新的專題—— 【基於 go 實現 redis】 .該專題圍繞着我的一個開源項目——goredis 展開. 由於個人水平有限,如有不到位之處,歡迎批評指正:https://github.com/xiaoxuxiansheng/goredis本系列計劃分爲四篇內容:• 基於 go 實現 redis 之主幹框架(本篇): 在宏觀視角下縱覽 ⌘ Read more

⤋ Read More

Go 語言使用 Watermill 構建高性能事件流處理
在今天的數據驅動世界中,異步通信模式對實現高效的數據處理和服務間通信至關重要。Go 語言因其簡潔的語法、強大的併發支持而成爲處理高併發事件流的理想選擇。在衆多 Go 語言庫中,Watermill 是一個值得關注的事件流處理庫。本文將深入探討 Watermill 的內部機制、優點以及如何在 Go 項目中有效地利用它來處理異步請求。Watermill 簡介————Watermill 是 ⌘ Read more

⤋ Read More

Go 語言是 如何實現 HTTP 代理 和 反向代理
代理的核心功能可以用一句話概括:接受客戶端的請求,轉發到後端服務器,獲得應答之後返回給客戶端。代理的功能有很多,事實上整個互聯網到處都充斥着代理服務器。如果所有的 HTTP 訪問都是客戶端和服務器端直接進行的話,我們的網絡不僅會變得緩慢,而且性能會大打折扣。代理服務器根據不同的配置和使用,可能會有不同的功能,這些功能主要包括:內容過濾:代理可以根據一定的規則限制某些請求的連接。比如有些公司會設置內 ⌘ Read more

⤋ Read More

快速優化 Golang 代碼的幾個小 Tips
本文將提供一些代碼優化指南,希望能夠幫助開發者增強其程序性能並簡化開發,實現更高效和健壯的編碼,解鎖 Golang 應用程序的潛力。 下面是我從自己平時開發常用的實用庫中隨機選擇的一些有用且通用的代碼片段。Tracking Execution Time如果你想要跟蹤 Go 中函數的執行時間,有一個簡單而高效的技巧,只需使用 defer 關鍵字即可實現一行代碼。你只需要一個 TrackTime 函數 ⌘ Read more

⤋ Read More

golang 開發: goroutine 在項目中的使用姿勢
很多初級的 Gopher 在學習了 goroutine 之後,在項目中其實使用率不高,尤其一些跨語言過來的人,對併發編程理解不深入,可能很多人只知道 go func(), 或者掌控不夠,謹慎一些,儘量少使用或者不使用,用的話就是 go func(),主要列一下我們這邊的主要使用方法。goroutine 在項目中的使用方法看一下樣例代碼,實際上,我們生產環境中就是這麼使用的。package lo ⌘ Read more

⤋ Read More

Go 的線程池和協程池,看這一篇你就懂了
Golang 線程池與協程池是併發編程中的重要概念,它們可以幫助我們更高效地管理併發任務,提高程序的性能和資源利用率。下面我將詳細解釋這兩個概念,包括它們的實現方式、使用場景以及原理。線程池(Thread Pool)概念:線程池是一種併發設計模式,用於管理線程的創建、銷燬和複用。線程池維護着多個線程,這些線程可以被用來執行任務,任務完成後線程並不立即銷燬,而是返回線程池中等待下一個任務。這樣可以減 ⌘ Read more

⤋ Read More

Go:常見的幾種設計模式解析
在軟件工程中,設計模式是解決常見問題的一套經典解決方案。Go 語言,作爲一種強調簡潔和高效的編程語言,其設計模式同樣體現了這些理念。本文將探討 Go 語言中常見的幾種設計模式,包括單例模式、工廠模式、策略模式、觀察者模式,並用 UML 創建概念模型來直觀展示這些設計模式的結構。1. 單例模式單例模式確保一個類只有一個實例,並提供一個全局訪問點。在 Go 中,使用私有結構體和公有的獲取實例函數是實現 ⌘ Read more

⤋ Read More

探祕 Go Playground 服務
什麼是 Playground? Playground 是一個 Web 服務,允許任何擁有網絡瀏覽器的人編寫 Go 代碼,可以立即進行編譯、鏈接並在服務器上運行。這是給好奇的程序員一個在安裝之前嘗試 Go 語言的機會,並給有經驗的 Go 用戶一個方便的實驗場所。當然,在 Playground 上運行的程序種類有一些限制,我們不能簡單地接受任意代碼並在我們的服務器上無限制的運行它。這些程序是在一個刪 ⌘ Read more

⤋ Read More

深入 Go interface: Duck Typing 和多態
Duck Typing鴨子類型(Duck Typing)是一種編程概念,關鍵在於根據對象的行爲來確定其類型。通常的解釋是通過一個巧妙的例子:根據對象的行爲來判斷它是否是一隻鴨子。如果它游泳像鴨子、嘎嘎叫像鴨子,那麼它就可以被認爲是一隻鴨子。動態語言如 Python 和 JavaScript 自然支持這種特性,但與靜態語言相比,動態語言缺乏重要的類型檢查。Go 語言的接口設計與鴨子類型概念密切相關, ⌘ Read more

⤋ Read More

9 個必備的 Go 語言 GitHub 庫
使用這些不可或缺的 GitHub 庫構建健壯高效的 Go 應用程序———————————在充滿活力的 Golang 開發生態系統中,GitHub 是一個寶庫,提供了許多寶貴的庫和包,這些庫和包簡化了開發工作流程,提高了生產效率,並促進了代碼重用。從 Web 框架到數據庫驅動,GitHub 倉庫託管了大量必備的 Go 庫,使開發人員能夠構建健壯且可擴展的應 ⌘ Read more

⤋ Read More

純 Go 實現的 MySQL 引擎——go-mysql-server
go-mysql-server 是一個用 Go 編寫的 MySQL 兼容的查詢引擎。它不僅是一個解析器,還是一個服務器和查詢執行引擎,完全使用 Go 語言編寫。與 Dolt 一樣,它的目標是成爲 MySQL 的 100% 兼容的替代品。go-mysql-server 具有以下兩個主要用途:作爲 Golang 測試環境中 MySQL 的替代品,使用內置的內存數據庫實現。 通過實現一些接口, ⌘ Read more

⤋ Read More

又一個 Linux 桌面?用 Go 寫的 FyneDesk
FyneDesk 是一個易於使用的 Linux/Unix 桌面環境,遵循材料設計原則。它使用 Fyne 工具包構建,旨在易於使用和開發。我們使用 Go 語言,並歡迎任何對項目的貢獻或反饋。爲了完整的桌面體驗,您還需要安裝以下外部工具:arandr 用於修改顯示設置 xbacklight 或 brightnessctl 用於調整筆記本電腦的亮度 目前使用 connman-gtk 來配置 ⌘ Read more

⤋ Read More

Go 居然克隆了 Python 的 Requests 庫!
在現代軟件開發中,HTTP 請求處理是一個重要環節。Grequests 是 Go 語言中一個高效的 HTTP 請求庫,靈感來源於 Python 中廣受歡迎的 Requests 庫。本文將深入講解 Grequests 庫在 Go 語言中的實現和使用,幫助開發者快速掌握其強大功能。功能概述—-Grequests 庫爲 Go 開發者提供了一系列的便利功能,使得發送 HTTP 請求變得簡單高效。下面就 ⌘ Read more

⤋ Read More

Golang: 打造一個交互式命令行
Go 非常適合於構建命令行應用程序。我們構建了一個名爲 Dolt 的應用, 它是世界上第一個支持版本控制的 SQL 數據庫。我們爲處理 Dolt 的所有子命令和參數編寫了自己的命令行解析器, 但也許我們不應該這樣做。現在有很多很棒的工具可以替代我們自己編寫的解析器, 如果我們今天開始這個項目, 我們可能會選擇使用它們:spf13/cobra 提供了從簡單的文本命令格式生成代碼的強大支持, 並且可以 ⌘ Read more

⤋ Read More

Go 實現在線用戶消息推送實戰!
前言–今天老闆又給下了一個需求,在線用戶的消息推送,這個功能我相信 95% 的產品都有這個需求,比如下面的需求場景1: 運營給在線的用戶推送一些活動或者文案或者公告2: 實時監控和通知:在監控系統中,可以使用消息推送來實時向操作員發送系統警報和通知。例如,當系統出現異常或達到某個閾值時,服務器可以向操作員發送警報消息。3: 社交網絡和新聞資訊:使用消息推送來通知用戶有新的消息、新的粉絲或者新的內 ⌘ Read more

⤋ Read More

Go 通過 grpc-protobuf 實現高性能用戶服務實戰,從 0 到 1 超級詳細流程!!
基礎知識準備在在代碼實戰 gRPC 之前,我們需要了解一些基礎知識:RPC(Remote Procedure Call):遠程過程調用,是一種通信協議,允許應用程序在不同的計算機上請求服務而不需要了解底層網絡細節。 gRPC:gRPC 是一種高性能、開源的遠程過程調用(RPC)框架,由 Google 開發,並基於 HTTP/2、Protocol Buffers 等技術實現。 Proto ⌘ Read more

⤋ Read More

用 Go 語言 - Redis 實現分佈式鎖,我還是第一次
一 爲什麼需要分佈式鎖 共享資源訪問控制: 當多個節點需要同時訪問共享資源時,爲了避免併發寫入導致數據不一致,需要使用分佈式鎖確保同時只有一個節點可以寫入或修改共享資源。避免重複執行: 在分佈式系統中,某些操作可能需要在整個系統中只執行一次,比如定時任務、數據初始化等。爲了避免多個節點同時執行這些操作,需要使用分佈式鎖來確保只有一個節點可以執行。任務協調: 在分佈式任務隊列中,多個節點競爭執行任 ⌘ Read more

⤋ Read More

Go 一行代碼測量函數的執行時間
Golang Tips 是翻譯的 Phuong Le @func25[1] 陸陸續續的發表的推文,目前已經發表 70 + 了。我徵得 Phuong Le 的同意後,會逐步把這些推翻翻譯過來,發佈到公衆號上。因爲是推文,可能原作者的內容比較簡單,比如第一個 tip 就一張圖片,我會相應的進行擴充,豐富其內容。 後續也會在 github 建立一個項目,大家都可以參與進行翻譯。我們可以通過 defe ⌘ Read more

⤋ Read More

專爲 Go 語言設計的函數式編程庫 fp-go
背景介紹在編程領域中,函數式編程是一種編程範式,它將計算視爲函數的評估,避免改變狀態和可變數據。然而,Go 語言並沒有內建對函數式編程的支持,這使得在 Go 語言中實現函數式編程變得困難。今天要給大家推薦一個 GitHub 開源項目 IBM/fp-go,該項目在 GitHub 有超過 1.1k Star,用一句話介紹該項目就是:“functional programming library for ⌘ Read more

⤋ Read More

Otter:探索 Go 語言中高效無鎖緩存庫的實現與應用
在當今軟件開發的背景下,性能優化已經成爲了一個不可或缺的部分。尤其是在緩存技術這一塊,優秀的緩存機制不僅能大幅提高應用的響應速度,更能夠有效減輕後端系統的壓力。今天,我們要深入探究的是 Otter——這是一個針對 Go 語言設計的高性能無鎖緩存庫。接下來,我們將詳細介紹 Otter 的設計原理、特性與使用方法,並通過實例演示如何在 Go 項目中集成 Otter。Otter 緩存庫概述——- ⌘ Read more

⤋ Read More

使用 gofn 和 pipe 助力 Golang 函數式編程
今天要介紹的是兩個在函數式編程裏面很有用的 package,通過使用 gofn[1] 和 pipe[2] 庫讓 Go 的函數式編程更強大。Go 的函數式編程由於本質上,Go 並不像 Haskell 或 Erlang 那樣是純函數式語言,但這並不意味着我們不能應用函數式編程的概念來編寫簡潔、可讀和高效的代碼。這正是 gofn 和 pipe 發揮作用的地方。gofn 和 pipegofn:一個在 Go ⌘ Read more

⤋ Read More

Go 標準庫中的一個設計敗筆:哨兵錯誤
大家好,我是煎魚。在 Go 的歷史發展中,總是有或多或少的坑。最近遇到一個跟錯誤類型定義和聲明使用有關的小坑。翻了一圈 Go 社區裏的爭論,發現又是一個暫時無法解決的未解之坑。今天分享給大家,平時開發時也可以給自己避避坑,以免有人亂用。快速背景—-在 Go 裏有一種錯誤類型的定義,官方叫做哨兵錯誤(Sentinel errors):哨兵錯誤,常用於在程序中與全局變量的值對比。可以參考最常見的 ⌘ Read more

⤋ Read More

gRPC OTel 鏈路追蹤
Open-Telemetry 的第三方軟件包合集 包括了多個社區中常用庫的 OpenTelemetry 支持。隨着 OpenTelemetry 的不斷迭代,相信整個鏈路追蹤的生態也會越發完善。gRPC 的鏈路追蹤———-採集 gRPC 的 trace 數據,推薦使用 otelgrpc 。安裝依賴。go get go.opentelemetry.io/contrib/instrument ⌘ Read more

⤋ Read More

Go 類型安全的 Pool
池(sync.Pool)是一組可單獨保存 (Set) 和檢索 (Get) 的臨時對象集合。存儲在池中的任何項都可能在任何時候自動移除而無需通知。如果池在移除項時持有該對象的唯一引用,那麼這個對象可能會被釋放掉。池能夠確保在多個 goroutine 同時訪問時的安全性。池的目的在於緩存已分配但未使用的對象以便後續複用,減輕垃圾收集器的壓力。也就是說池的功能是爲了重用對象,目的是減輕 GC 的壓力。類 ⌘ Read more

⤋ Read More

Go HTTP 鏈路追蹤
Open-Telemetry 的第三方軟件包合集 包括了多個社區中常用庫的 OpenTelemetry 支持。隨着 OpenTelemetry 的不斷迭代,相信整個鏈路追蹤的生態也會越發完善。基於 OTel 的 HTTP 鏈路追蹤——————-基於 OTel 的 HTTP 客戶端和服務端鏈路追蹤實踐。客戶端實現 HTTP client 的鏈路追蹤。package maini ⌘ Read more

⤋ Read More

Golang 使用 Worker Pool 模式釋放併發性能
我們都知道 Go 具有卓越的併發特性,Worker Pool pattern(工作池模式)是一種併發設計模式,它用於管理一組工作線程以執行任務。本文用一個例子深入講解如何使用 Worker Pool 模式提升程序的併發性能。拋出問題快速計算一個數字數組中每個數字的平方,並返回結果數組(該數組只包含從 1 到 150 的整數)。Pattern 1 : N routines for N numbers ⌘ Read more

⤋ Read More

Golang 如何動態解析 JSON
Go 以其簡潔高效而聞名,提供了強大的工具用於處理 JSON 數據。雖然基於結構體的解析很常見,但在某些情況下,JSON 結構是動態的或未知的。在本文章中,我們將探討如何使用 Go 語言中的空接口進行動態 JSON 解析,從而實現靈活性,無需預定義結構體。什麼是 Dynamic JSON Parsing動態 JSON 解析指的是能夠處理具有不同結構的 JSON 數據,適應不同模式而無需嚴格定義。在 ⌘ Read more

⤋ Read More

一文掌握 Golang Empty Struct 的所有用法
在 Go 語言中,空結構體被用作佔位符,當我們想要創建一個不攜帶任何數據的類型時。這個概念經常被用來表示特定的行爲,或者將該類型用作類似集合的數據結構。下面是個使用空結構體的例子:package mainimport ( ”fmt” ”unsafe”)// EmptyStruct is an empty struct typetype EmptyStruct struct{}func main() ⌘ Read more

⤋ Read More

Golang 如何實現訪問私有成員
在 Go 語言編程中,我們都知道首字母小寫的成員表明它是不公開的,即私有的。一般情況下,我們無法直接訪問一個包中的私有成員。然而,Go 語言提供了一些不尋常的手段允許我們在特定情況下繞過這一限制。在這篇文章中,我們將深入探討這些技巧,並通過詳細的說明和代碼示例來展示它們的使用方法。但在此必須提醒:這些方法很少用於生產環境,因爲它們破壞了封裝性,很容易帶來難以發現的 bug 和安全問題。在下文,我們 ⌘ Read more

⤋ Read More

How to Convert MOV to MP4 on Mac Free with ffmpeg
If you have a video file in MOV format, you may wish to convert the MOV video to MP4 format instead. While there are a variety of methods for converting MOV to MP4, the approach we’re going to address here is by using the command line, with a super easy to use and free tool … Read MoreRead more

⤋ Read More

It’s now loved all over the world, but who really invented the flat white?
This is the little-known story of how Italian sugar growers in the Sunshine State are said to have inspired the “invention” of the flat white — a drink that would go on to become a global sensation. ⌘ Read more

⤋ Read More

用 Go 語言實現多協程文件上傳,斷點續傳,試試!
網上很多文件基本都是多協程下載文件要麼就只有單協程的斷點續傳,這裏給大家寫一個支持有進度條的多協程下載文件,也支持斷點續傳。好了,直接看代碼就好了,小編已加上詳細的解釋與說明package mainimport ( ”fmt” ”io” ”os” ”regexp” ”strconv” ”sync” ”github.com/qianlnk/pgbar”)/* 需求:1. 多協程下載文件2.斷點續連* ⌘ Read more

⤋ Read More

使用 Go 語言打造強大的網絡掃描神器
在這個信息安全意識日益提高的時代,網絡安全人員需要可靠、靈活且強大的工具來進行日常的網絡掃描和數據收集。在衆多開源項目中,Project Discovery 的 httpx 無疑是一顆璀璨的明星。httpx 是一款能夠執行大量 HTTP 請求的命令行工具,旨在對 Web 服務進行多功能且快速的掃描。它支持 HTTP/2, 支持進行方法、頭等多種格式的複雜查詢,還能檢測 Web 服務器的許多面向安全 ⌘ Read more

⤋ Read More

Go 語言中怎麼使用依賴注入?
01 介紹在 Go 語言項目開發中,我們處理組件層級之間的依賴關係時,通常我們會先在依賴層級的代碼中實例化被依賴層級,然後調用它的方法,即依賴方需要主動獲取被依賴方。但是,當被依賴層級的代碼發生變化時,依賴層級的代碼也需要修改,耦合性比較高,代碼不方便擴展。所謂依賴注入,即依賴方不再需要主動獲取被依賴方,而是被依賴方主動傳遞給依賴方。本文我們介紹 Go 語言怎麼使用依賴注入。02 Go 語言使用依 ⌘ Read more

⤋ Read More

深入理解 Go 併發,靈活的 goroutine 模型與調度策略
在go中,協程co-routine被改爲goroutine,一個goroutine只佔幾 kb,因此可以有大量的goroutine存在,另一方面goroutine 的調度器非常靈活,本文給大家介紹下Go併發的方法之goroutine模型與調度策略,感興趣的朋友一起看看吧單進程操作系統早期的單進程操作系統,可以理解爲只有一個時間軸,CPU 順序執行每一個進程 / 線程,這種順序執行的方式,CPU 同 ⌘ Read more

⤋ Read More

NewsToday2: What it is & How to Disable NewsToday2 on Mac
Some Mac users have discovered a process named “NewsToday2” running on their Mac, typically found after they’ve noticed a slowdown on their machine, or if they’re browsing through active processes running in MacOS. We’re going to dive into the NewsToday2 process in MacOS, discuss what it is, and show you how to stop it from … Read MoreRead more

⤋ Read More

最具研讀價值的 Go 源碼之一:context 包
前言你瞭解 Context 中的回溯鏈和樹結構嗎?想知道 Context 如何觸發級聯取消嗎?本文將換個角度聊一聊 golang 中的 context,讓你真正理解什麼是 Context。context 包中的代碼雖然只有 600 多行,但已經成爲了併發控制、超時控制的標準做法,可以說是真正的短小而精悍,是十分值得研讀的 Go 源碼之一。本文首先從整體的視角解析了 context 的主要接口和函數 ⌘ Read more

⤋ Read More

一文帶你完整了解 Go 語言 IO 基礎庫
作者 | 百度小程序團隊 導讀 introduction對於剛接觸 Golang 學習的同學,估計比較難掌握的知識點之一就是文件 IO 處理,光在基礎庫裏會發現 golang 除了 io 包提供文件處理外,os 包,http 包,embed 包都有提供類似的處理,由於 Golang 的繼承表達採用的是隱式的表達, 所以他們之間有什麼關係?能否相互轉換處理?是非常難一眼看出來的。本文就幫大家完整地 ⌘ Read more

⤋ Read More

About death
I’m on a train again. This time I’m going home from Hudiksvall after a
grueling weekend.

I went from Malmö on Thursday morning and worked the entire day on
trains. I arrived in Ljusdal after close to nine hours. I checked in
at the only hotel in town again and, after a quick meal and glass of
wine, went over to a very sad dad with a bottle of Macallan. We didn’t
empty it but we sure tried. I got back to the hotel pretty late.
Wasn’t able to sleep much.

The day after it was my dad’s wife’s funeral. Met up at dad’s … ⌘ Read more

⤋ Read More

OpenTelemetry Go 語言教程
本教程將演示如何在 Go 中使用 OpenTelemetry,我們將手寫一個簡單的應用程序,並向外發送鏈路追蹤和指標數據。準備示例應用程序——–創建一個扔骰子的程序。在本地新建一個dice目錄,並進入該目錄下。mkdir dicecd dice執行 go mod 初始化。go mod init dice在同一目錄下創建 main.go 文件,並添加以下代碼。package mainimp ⌘ Read more

⤋ Read More

Go 語言的宕機恢復,如何防止程序奔潰
Recover 是一個 Go 語言的內建函數,可以讓進入宕機流程中的 goroutine 恢復過來,recover 僅在延遲函數 defer 中有效,在正常的執行過程中,調用 recover 會返回 nil 並且沒有其他任何效果,如果當前的 goroutine 陷入恐慌,調用 recover 可以捕獲到 panic 的輸入值,並且恢復正常的執行。通常來說,不應該對進入 panic 宕機的程序做任何 ⌘ Read more

⤋ Read More