收藏 / 列表

王中陽背後的男人 - 給想轉Go或者Go進階同學的一些建議

前言 最近一直有小夥伴私信我學Go語言的問題: 有的小夥伴覺得客户端太捲了,想轉服務端,覺得Java也卷,想學Go語言; 有的小夥伴是想從PHP或者Java轉Go,做高併發編程,覺得Go更有前途。 聊的多了,發現這是一個共性問題,所以乾脆整理成文章,希望對更多的人有幫助。 這篇文章會結合我的經歷: 聊聊我認為客户端轉服務端開發最大的挑戰是什麼? 如何高效轉型做服務端開發?如何高效學完Go基礎? 在

go , 後端

蘇琢玉 - 我寫了個腳本,統計了我自己寫了多少行代碼(純圖一樂)

為什麼要做這件事? 老實説,我平時不太在意自己到底寫了多少行代碼。 一方面是因為這東西真沒啥太大參考價值,想刷行數的話,複製粘貼個幾千行都不是事;另一方面也是因為誰都知道:代碼質量和行數沒什麼關係。 但有時候,好奇心就是擋不住。 就像你聽到別人講“十萬小時定律”的時候,會突然想: “哎,那我到底練習了多久?” 我寫代碼已經很多年了,也做了不少項目,大部分都丟在 GitHub 上沒怎麼管過。突

教程 , 知識 , shell

木子君_求贊 - 帶緩存的AdaRank c++實現

下面給出一份 可直接編譯運行 的「帶緩存 AdaRank」C++17 參考實現。 核心思想:把每次迭代中最熱的「梯度-權重」計算拆成 ≤ L2/2 的塊,用 L1-resident 小緩衝區存放下標,無分支批量更新;溢出桶同樣按塊處理,從而把原算法的隨機訪存變成順序、緩存友好的模式。 1 緩存設計總覽 原算法熱點 緩存改造 收益 隨機訪存

排序 , 排序學習 , c++

XHunter - Golang基礎筆記十六之反射

本文首發於公眾號:Hunter後端 原文鏈接:Golang基礎筆記十六之反射 反射可以用於程序在運行時檢查、修改自身類型和值,主要通過 reflect 包實現。 首先,我們提出一個需求,要打印出一個結構體 struct 的各個字段及其對應的標籤數據,按照當前的筆記內容是無法解決該問題的,但是我們可以使用反射操作來完成。 以下是本篇筆記目錄: 變量的類型和值 修改變量的值 遍歷結構體

go , 後端

筱倩 - 《Go 單元測試從入門到覆蓋率提升》(一)

一、靜態代碼分析   靜態代碼分析是一種在不執行和運行程序的情況下檢查源代碼的方法。通過這種方法,自動化工具會掃描代碼查找潛在的問題,如bug、安全漏洞或與編碼標準的偏離。靜態代碼分析可以在執行或合併到main分支之前檢查源代碼中的問題。   動態代碼分析是在代碼被執行時,識別運行時的問題,例如性能瓶頸、內存泄露和邏輯缺陷。它輸出的內容是程序的實際運行時行為,包括日誌、跟蹤和性能指標。它在實際或

go , 後端

axiaoxin - Ghostty 終端默認快捷鍵列表

文章目錄 Ghostty 終端默認快捷鍵列表 基本操作 分屏操作 光標和選擇操作 其他操作 物理按鍵綁定 特殊按鍵説明 注意事項 結語 Ghostty 提供了豐富的默認快捷鍵,用户可以通過這些快捷鍵快速執行各種操作。以下是 Ghostty 的默認快捷鍵列表,這些快捷鍵可以通過keybind配置進行自定義。 Ghostty 終端默認快捷

編輯器 , vim , 程序員 , go , 前端

Ansurfen - Hulo語言架構:從源代碼到目標代碼的完整流程

最近這一段時間忙着工作和開發Hulo編程語言,滿打滿算已經過了三個月多了。心血來潮,想梳理下Hulo編程語言的開發流程,也順帶以個人的視角解讀下編程語言是如何從零開始誕生的。希望通過這篇文章,能夠為對編程語言實現感興趣的開發者提供一個實踐性的參考,同時也記錄下這段充滿挑戰和收穫的開發歷程。 架構 Hulo語言的定位是批處理腳本的編譯器,最終經過編譯後的目標語言是Bash、Batch、VBS、Pow

批處理 , 教程 , 知識 , 編程語言 , go

gvison - 三步搞定 Go 分佈式任務!sasynq 庫讓異步任務變得如此簡單

Go 後台任務的“坑”,你踩過幾個? 在 Go 應用開發中,總有一些任務不適合現場完成,比如: 發郵件/發短信:用户點擊按鈕後,還要乾等?體驗太糟糕! 大計算量任務:生成報表、數據分析,CPU 一直被佔,其他請求全卡住? 定時任務:凌晨跑統計、每小時同步數據,難道要寫個死循環 time.Sleep? 所以,聰明的我們會把這些任務扔進異步任務隊列,讓後台“工人”(Worker)慢慢處理。

定時任務 , 分佈式 , go

apocelipes - atomic不是免費午餐

很多初級甚至中級開發會濫用atomic,因為在他們的世界觀裏atomic比mutex輕量,性能總是優於鎖的。 這話不能算錯,但有個很重要的前提,那就是原子操作競爭不激烈的時候。 “競爭激烈”是指什麼呢,指的是有很多線程在同一個資源上大量執行原子操作的情況。 落在這種情況下原子操作反而會成為性能拖油瓶。我們來看一個經典的原子計數器: func AddAtomic() uint64 { var co

go , 後端

soroqer - Array 與 Slice 的源碼分析與高效使用-Golang 🔥

在 Go 語言中,數組(array)和切片(slice)是兩種不同的數據結構,它們在內存分配機制上存在着顯著差異。深入理解這些差異及原理並恰當使用,能夠幫助我們提高代碼的執行效率。 在使用上,由於語法糖的存在,很多初學者對於二者並不敏感。數組的寫法是 [n]int,切片則是 []int,區別僅在於是否在 [] 中體現其長度。 從實現上講,slice 是 array 的一種封裝再實現,將長度不可變的

性能優化 , 內存 , 數組 , slice , go

探索雲原生 - ArgoWorkflow教程(四)---Workflow & 日誌歸檔

上一篇我們分析了argo-workflow 中的 artifact,包括 artifact-repository 配置以及 Workflow 中如何使用 artifact。本篇主要分析流水線 GC 以及歸檔,防止無限佔用集羣中 etcd 的空間。 !--more-- 1. 概述 因為 ArgoWorkflow 是用 CRD 方式實現的,不需要外部存儲服務也可以正常運行: 運行記錄使用 Wor

devops , 雲原生 , cicd , jenkins , go

碼農先森 - PHP轉Go系列 | ThinkPHP與Gin框架之打造基於WebSocket技術的消息推送中心

大家好,我是碼農先森。 在早些年前客户端想要實時獲取到最新消息,都是使用定時長輪詢的方式,不斷的從服務器上獲取數據,這種粗暴的騷操作實屬不雅。不過現如今我也還見有人還在一些場景下使用,比如在 PC 端掃描二維碼,然後使用長輪詢的方式從服務端獲取最新的掃碼信息,來判斷用户是否已經掃碼完成,諸如這種場景還有不少。其實大家都知道長輪詢的方式不好,那為什麼還有人使用呢? 我想最直接的原因就是「開發起來簡

php , gin , go , thinkphp

vistart - Golang 如何監聽某個函數(方法)開始執行和執行結束

如果想監聽函數(方法)開始執行和執行結束,你需要設置兩個通道: chanStarted: 用於發送開始執行信號。 chanFinished: 用於發送執行結束信號。 同時,為了保證監聽方能實時得知“開始執行”或“執行結束”信號,需要在執行任務前開啓監聽。 以下為模擬監聽函數(方法)開始執行和執行結束的示例: package main import ( "context"

函數 , channel , 狀態 , 監聽 , go

煩惱的沙發 - MySQL 與 PostgreSQL,該怎麼選?

數據庫該用 MySQL 還是 PostgreSQL?網上眾説紛紜,也有人説PostgreSQL不能扛大樑。但其實沒必要糾結,根據自己項目需求就好了(好像説了句廢話)。 我接觸過很多項目,有的用MySQL跑得飛快,有的則非PostgreSQL不可。那一篇文章告訴你該怎麼選。 兩種不同的設計哲學 要理解它們的區別,首先要知道它們來自哪裏,要去向何方。 MySQL :為速度和簡潔而生 MySQL的早期

觀點 , MySQL , 數據庫 , postgresql

codechen8848 - 代碼檢測器!一款專門揭露屎山代碼的質量分析工具!

大家好,我是 Java陳序員。 你是否也曾面對祖傳代碼欲哭無淚?看着幾千行的函數、毫無註釋的邏輯、嵌套八層的條件判斷,只想大喊一聲“這寫的什麼玩意兒”? 今天,給大家介紹一款專門揭露屎山代碼的質量分析工具,一個能把“屎山代碼”量化打分的硬核神器! 關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典計算機電子書籍等。 項目介紹 fuck-u-code —— 一款

後端

Hunter - Redis數據結構一之對象的介紹及各版本對應實現

本文首發於公眾號:Hunter後端 原文鏈接:Redis數據結構一之對象的介紹及各版本對應實現 本篇筆記開始介紹 Redis 數據結構的底層實現。 當我們被問到 Redis 中有什麼數據結構,或者説數據類型,我們可能會説有字符串、列表、哈希、集合、有序集合。 其實這幾種數據類型在 Redis 中都由對象構成,而且是兩個對象,一個鍵對象,一個值對象。 在這些數據類型中,它們的鍵都是字符串

redis , 對象