202005-30 Go語言的協程和信道 HOT 學習Go語言,就不得不學習協程(Goroutines)和信道(Channels),正是因為有了協程和信道的機制,才使得Go語言對高并發的天然支持,下面就讓我們對協程和信道的使用一探究竟吧! 繼續閱讀 >
202005-30 Go語言微服務實戰之初識微服務 HOT 本系列的文章,將圍繞搭建一個基于微服務架構的數據統計系統的實戰例子展開,我們將展示如何將服務運行在docker容器中,并將其部署在kubernetes上,相信看完這個系列的文章后,你也可以快速入門后臺開發。 繼續閱讀 >
202005-30 Go語言切片擴容規則閑談 HOT 每個對象在內存中都要占一塊空間,可能是1字節,可能是3字節,可能是8字節,所以對于一個 struct 來說,其字段類型會覺得這個結構體對象所占的內存,但是所占內存大小可能不是所有字段類型所占內存的大小,因為為了讓 CPU 讀取方便,我們就會對每個字段進行內存對齊。 繼續閱讀 >
202005-30 Go 語言 range 解析 HOT range 關鍵字在 go 語言中是相當常用好用的語法糖,可以用在 for 循環中迭代 array、slice、map、channel、字符串所有涉及到遍歷輸出的東西。 繼續閱讀 >
202005-07 go語言的內置容器 數組 HOT 數組是相同類型的一組數據構成的長度固定的序列,其中數據類型包含了基本數據類型、復合數據類型和自定義類型。數組中的每一項被稱為數組的元素。數組名是數組的唯一標識符, 數組的每一個元素都是沒有名字的,只能通過索引下標(位置)進行訪問。因為數組的內存是一段連續的存儲區域,所以數組的檢索速度是非??斓?,但是數組也有一定的缺陷,就是定義后長度不能更改。 繼續閱讀 >
202005-07 Go語言標準庫 container 相關包的學習與實踐 HOT Golang 提供了幾個簡單的容器供我們使用,本文在介紹幾種 Golang 容器的基礎上,實現一個基于 Golang 容器的LRU算法。 繼續閱讀 >
202004-17 Go語言 Yaml編碼和解碼 HOT YAML Ain’t Markup Language,一種非常簡潔的非標記語言,可以快速的對Yaml進行編碼和解碼。 官網地址:https://gopkg.in/yaml.v2 GoDoc:https://godoc.org/gopkg.in/yaml.v2 繼續閱讀 >
202004-17 RPC系列之基本概念及go語言使用實現 HOT 遠程過程調用(Remote Procedure Call,縮寫為 RPC)是一個計算機通信協議。該協議允許運行于一臺計算機的程序調用另一臺計算機的子程序,而程序員無需額外地為這個交互作用編程。如果涉及的軟件采用面向對象編程,那么遠程過程調用亦可稱作遠程調用或遠程方法調用。 繼續閱讀 >
202004-17 WebAssembly增加Go語言綁定 HOT 為提供更好的跨平臺支持,WebAssembly 正在積極推動其在本地桌面端的進展。與此同時,Wasmtime(WebAssembly runtime)近期為它增加了 Go 綁定功能,這意味著開發者可直接在 Go 應用程序中調用 WebAssembly 模塊。 繼續閱讀 >
202004-17 吐血整理的GO語言部分框架、庫必學清單! HOT 作為一款網紅編程語言,Go語言還十分年輕,很多程序員無法及時了解到Go語言的框架、庫和軟件應用。近日,Github用戶avelino分享了一張非常完整且龐大的表單,包括命令行、數據庫、Web框架、機器學習、自然語言處理......以下是部分內容截取,感謝分享。 繼續閱讀 >
202004-17 Go語言如何實現stop the world? HOT 本文基于 Go 1.13。 在某些垃圾回收器算法中,“停止世界”(Stop the World: STW,下同)是跟蹤內存使用最重要的階段,它會停止程序的執行,以掃描內存使用,并添加寫障礙。讓我們回顧一下它在內部如何工作,以及它可能面臨的潛在問題。 繼續閱讀 >
202004-17 關于 Go 語言優秀命令行庫 Cobra 的探索 HOT Cobra 是 Golang 生態系統中最著名的項目之一。它簡單,高效,并得到 Go 社區的大力支持。讓我們來深入探索一下。 繼續閱讀 >
202004-16 Go監控模式(Monitor Pattern) HOT Go 能實現監控模式[1],歸功于 sync 包和 sync.Cond 結構體。監控模式允許 goroutine 在進入睡眠模式前等待一個定特定條件,而不會阻塞執行或消耗資源。 繼續閱讀 >
202004-15 Go的Channel很強大,理解其內在概念會讓它更強大 HOT Go 中的通道(channel)機制十分強大,但是理解內在的概念甚至可以使它更強大。實際上,選擇緩沖通道或無緩沖通道將改變應用程序的行為和性能。 繼續閱讀 >
202004-15 Go刷LeetCode系列:二叉樹(3)二叉樹路徑和 HOT 給定一個二叉樹和一個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等于目標和。 說明: 葉子節點是指沒有子節點的節點。 繼續閱讀 >
202004-15 為什么 Go 語言設計時沒有泛型? HOT Go 是一門語法元素少、設計簡單的編程語言,簡單的設計往往意味著較弱的表達能力,工程師也需要使用更多時間編寫重復的邏輯。Go 語言從發布到今天已經過去了 10 多年,向 Go 語言添加泛型的討論也從 2010 年一直持續到今天。 繼續閱讀 >
202004-15 Go的泛型真的要來了—如何使用以及它們是怎么工作的 HOT 你沒看錯,這里講的就是 Go 中的泛型。只不過還沒有正式發布,是基于草案設計的,已經是實現了可運行的版本。所以,泛型到來真的不遠了! Go 中的泛型已經接近成為現實。本文講述的是泛型的最新設計,以及如何自己嘗試泛型。 繼續閱讀 >
202004-13 Go新手容易犯的三個致命錯誤,你中招了嗎? HOT 最近因為以前一些重要且古老的go項目基本沒有人專職維護了,所以被安排去熟悉這些項目的代碼,所以看了大量go的代碼。歷史原因,這些代碼中或多或少有一些剛剛從PHPer轉過來的Gopher去設計和開發的,自然有不少是在php(fpm模式下)碼代碼思路下埋藏的一些坑。今天我就來和大家一起分享一下最近發現的出現比率比較高的三個致命錯誤。 繼續閱讀 >
202004-11 打造 Zap 開箱即用日志組件 HOT 目前 golang 日志庫的大眾選擇主要集中在: logrus, zap, zerolog. zap 和 zerolog 的性能都是優秀的, 但是從用法習慣上我更傾向于 zap. 繼續閱讀 >
202004-10 Go 每日一庫之 validator:Go最優秀的驗證庫 HOT 今天我們來介紹一個非常實用的庫——validator。validator用于對數據進行校驗。在 Web 開發中,對用戶傳過來的數據我們都需要進行嚴格校驗,防止用戶的惡意請求。例如日期格式,用戶年齡,性別等必須是正常的值,不能隨意設置。 繼續閱讀 >
202004-10 項目使用了 ORM,具體執行的是什么 SQL 語句總是很迷?xorm1.0 解決了 HOT 自定義上下文 SQL Log 需求有哪些? 可以使用自己的封裝日志庫,拓展日志輸出問題,可以輸出到 es(elasticsearch)等,方便日志分析。 方便定位 sql 問題。 集成 sql 指標監控,可以找出慢 sql,優化 sql 語句。 集成鏈路追蹤(opentracing),更清楚知道業務都執行了哪些 sql 語句。 繼續閱讀 >
202004-10 八個字節的 UDP 如何傳輸數據 HOT 為什么這么設計(Why's THE Design)是一系列關于計算機領域中程序設計決策的文章,我們在這個系列的每一篇文章中都會提出一個具體的問題并從不同的角度討論這種設計的優缺點、對具體實現造成的影響。如果你有想要了解的問題,可以在文章下面留言。 繼續閱讀 >