收藏 / 列表

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

Golang相關測試框架   在 Go 語言裏,最常用的測試框架有:自帶的 testing 包、GoConvey 和 testify。 1、Go自帶的testing包   testing包是官方內置的,無需額外安裝,也是大多數項目的首選。   (1)單元測試 測試文件必須以 _test.go 結尾,例如:calc_test.go 測試函數必須以 Test 開頭(推薦寫成 T

go , 後端

王中陽背後的男人 - 從簡歷石沉大海到面試官追着聊項目,差的是什麼?

最近幫幾個學員改簡歷,發現一個很有意思的現象:同樣是寫熟悉Golang+Gin開發,有人能拿到騰訊二面,有人連初篩都過不了。細問才知道,前者的項目欄寫着校園閃送系統(上線運營,日活3000+),後者則是圖書管理系統(課程設計)。 不是説課程設計沒用,而是校招時,面試官一天要刷50份簡歷,能讓他們停下來的,永遠是能落地、有細節、可驗證的實戰項目。今天就聊聊,後端開發者該如何靠項目破局,以及哪些資源能

面試 , 程序員 , 後端

蘇琢玉 - 訂單號老是撞車?我寫了個通用 PHP ID 生成器

在日常開發裏,我們經常會遇到這種情況: 需要給訂單生成唯一編號; 想給日誌或者資源加個標識; 或者需要一個不會重複的 ID,用作數據庫主鍵。 一開始,我也用過 time() 拼接隨機數、或者 uniqid()。 這些方案在小項目裏夠用,但一旦放到併發稍微高點的業務裏,就會出現各種問題: ​time() 很容易撞車(同一毫秒可能生成多個); ​uniqid() 看上去獨特,其實

composer , php

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

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

排序 , 排序學習 , c++

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

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

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

axiaoxin - Go 1.24 新特性一覽

Go 1.24震撼登場,帶來顯著性能提升與諸多新功能,如泛型類型別名、優化工具鏈及標準庫增強。可藉助os.Root實現安全文件系統操作,運用testing.B.Loop優化基準測試,利用runtime.AddCleanup完善資源管理,還有weak包優化內存、crypto包保障FIPS 140 - 3合規。速升級,提升Go應用效率與安全! 文章目錄 語言特性更新 泛

資訊 , 編程語言 , 程序員 , go

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

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

go , 後端

apocelipes - atomic不是免費午餐

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

go , 後端

煩惱的沙發 - macOS是開發的終極進化版嗎?

在程序員的圈子裏,Linux代表着一種信仰:開源、自由、極致的可定製性。但不少當年抱着 生命不息,折騰不止”信念的 Linux 高手,折騰了十幾年 Arch、Gentoo,把命令行玩得爐火純青,最後卻不約而同地換上了 MacBook。 連GNOME的創始人Miguel de Icaza,這位Linux桌面環境的元老級人物,也曾公開表示自己最終愛上了macOS。這不禁讓人思考:為什麼macOS成為了

開發工具 , macos , 編程語言 , 開發環境

gvison - PerfTest:壓測工具的“瑞士軍刀”,覆蓋 HTTP/1/2/3 與 WebSocket,全程實時監控

前言 在每一位後端工程師的工具箱裏,總有那麼幾款壓測工具常年“上崗”。當我們想快速驗證一個接口性能時,可能會隨手敲下 ab;當追求極致的單機 QPS 時,wrk 往往是我們的不二之選;而當需要編寫複雜的測試場景時,k6 以其強大的腳本能力和開發者友好的生態,成為了越來越多團隊的選擇。當然有更多壓測工具這裏就不一一舉例。 這些工具都很出色,但技術的浪潮總在向前。HTTP/3 協議逐漸從“未來”變為“

性能測試 , websocket , HTTP , 測試工具

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

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

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

探索雲原生 - ArgoWorkflow教程(七)---高效的步驟間文件共享策略

之前我們分析了使用 artifact 實現步驟間文件共享,今天分享一下如何使用 PVC 實現高效的步驟間文件共享。 !--more-- 1. 概述 之前在 artifact 篇我們演示瞭如何使用 artifact 實現步驟間文件傳遞,今天介紹一種更為簡單的文件傳遞方式:PVC 共享。 artifact 畢竟是藉助 S3 實現中轉,效率上肯定是低於直接共享 PVC 的,而且 artifact 一般

devops , 雲原生 , cicd , jenkins

碼農先森 - PHP轉Go系列 | ThinkPHP與Gin框架之Redis延時消息隊列技術實踐

大家好,我是碼農先森。 我們在某寶或某多多上搶購商品時,如果只是下了訂單但沒有進行實際的支付,那在訂單頁面會有一個支付倒計時,要是過了這個時間點那麼訂單便會自動取消。在這樣的業務場景中,一般情況下就會使用到延時隊列。 通常在客户下單之後,就會將訂單數據推送到延時隊列中並且會對該消息設置一個延時時長,比如設置五分鐘、十分鐘、或十五分鐘等,具體的時長應該還是要結合當前的業務進行衡量,然後消費端會在指定

php , gin , go , thinkphp

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

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

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

codechen8848 - 免費高顏值!一款跨平台桌面端視頻資源播放器!

大家好,我是 Java陳序員。 今天,給大家推薦一款跨平台的桌面端視頻播放器,免費高顏值! 關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典計算機電子書籍等。 項目介紹 ZyPlayer —— 一款免費易用且打造的全功能媒體播放器,基於 electron-Vite 框架,結合 TDesign 組件庫和 Vue3 全家桶,致力於提供流暢、高效的跨平台娛樂體驗。

前端

Hunter - Golang基礎筆記九之方法與接口

本文首發於公眾號:Hunter後端 原文鏈接:Golang基礎筆記九之方法與接口 本篇筆記介紹 Golang 裏方法和接口,以下是本篇筆記目錄: 方法 接口 用結構體實現類的功能 1、方法 首先介紹一下方法。 方法是與特定類型關聯的函數,我們在實現一個函數前,綁定一個類型,就實現了這個類型的方法。 比如我們想實現一個結構體的方法,可以如下操作: type Person struc

方法 , 接口 , 類型判斷 , go , 後端

Aonaufly - Go之Gin框架(基礎)

文檔地址:https://www.kancloud.cn/shuangdeyu/gin_book/949411 一,請求類型 GET / POST package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() r.

基礎 , 遊戲開發 , gin , go