原创 回答兩個被頻繁問到的代碼寫法問題

目錄前言問題一問題二小結推薦閱讀 前言 根據使用者的反饋,回答關於開源項目:go-gin-api 中被頻繁問到的兩個代碼寫法問題。 以如下代碼片段爲例: 第 8 行,這種寫法是什麼意思? 第 11 行,爲什麼定義一個 i() 方法

原创 根據使用者反饋,對開源項目 go-gin-api 新增兩個功能

目錄前言接口返回的錯誤信息支持中英文代碼位置使用方式錯誤信息自定義參數驗證的錯誤信息支持中英文代碼位置使用方式錯誤信息語言包示例小結推薦閱讀 前言 根據使用者的反饋,對開源項目:go-gin-api 新增兩個小功能。 兩個小功能都與語

原创 關於處理電商系統訂單狀態的流轉,分享下我的技術方案(附帶源碼)

目錄前言目的邏輯分析代碼實現定義狀態定義事件定義事件的處理方法核心代碼調用方式小結 前言 在設計電商系統訂單模塊時,訂單會涉及各種狀態以及狀態與狀態之間的流轉,可擴展性、可維護性 是我們需要關注的重點!本文分享一下我的技術方案。 如上

原创 函數的不定參數你會用嗎?

如果一個方法中需要傳遞多個參數且某些參數又是非必傳,應該如何處理? 案例 // NewFriend 尋找志同道合朋友 func NewFriend(sex int, age int, hobby string) (string, error

原创 分享兩個在開發中需注意的小點

目錄不要使用 + 和 fmt.Sprintf 操作字符串+fmt.Sprintfbytes.NewBufferString對於固定字段的鍵值對,不要使用 map[string]interface{}map[string]interface{

原创 我是怎麼寫 Git Commit message 的?

目錄作用用的什麼規範?typescopesubjectbodyfooter參考文章用的什麼輔助工具? 作用 編寫格式化的 commit message 能夠大大提高代碼的維護效率。 比如: 可以提供更多的歷史信息,方便快速瀏覽; 可以過濾

原创 使用 Docker 秒速搭建多版本 PHP 開發環境

目錄目標下載代理設置配置環境PHP 7.2.x,佔用本地端口 8081PHP 5.6.x,佔用本地端口 8082端口映射local.php72.com -> 127.0.0.1:8081local.php56.com -> 127.0.0.

原创 優雅地處理錯誤真是一門學問啊!

文章目錄: 目錄errorspkg/errors普通的帶堆棧,包裝描述帶堆棧,不包裝描述不帶堆棧,包裝描述思考 errors 這個大家肯定使用過,標準庫的 errors 錯誤實現比較簡單,無法進行堆棧追溯,對於產生錯誤時的上層調用者來講不是

原创 Go - 開箱即用,WEB 界面一鍵安裝,沒有項目經驗,可以拿這個練手

安裝界面 啓動程序之後,會在瀏覽器中自動打開安裝界面。 因爲程序會使用到 Redis 和 MySQL,所以安裝前請輸入 Redis、MySQL 配置信息,點擊初始化按鈕,會將用到的數據表和默認數據進行初始化,在右側可以看到初始化的日誌信息

原创 Go - 代碼生成工具

分享兩個常用的代碼生成工具: gormgen handlergen gormgen 基於 MySQL 數據表結構進行生成 3 個文件: 生成表的 struct 結構體 生成表的 Markdown 文檔 生成表的 CURD 方法 場景

原创 Go - 實現項目內鏈路追蹤(二)

上篇文章 Go - 實現項目內鏈路追蹤 分享了,通過 鏈路 ID 可以將 請求信息、響應信息、調用第三方接口的信息、調試信息、執行的 SQL 信息、執行的 Redis 信息 串起來,記錄的具體參數在文件中都有介紹。 這篇文章在上面的基礎上,

原创 Go - 實現項目內鏈路追蹤

爲什麼項目內需要鏈路追蹤?當一個請求中,請求了多個服務單元,如果請求出現了錯誤或異常,很難去定位是哪個服務出了問題,這時就需要鏈路追蹤。 從圖中可以清晰的看出他們之間的調用關係,通過一個例子說明下鏈路的重要性,比如對方調我們一個接口,反饋

原创 Go - httpclient 常用操作

httpclient 模塊介紹 httpclient 是基於 net/http  封裝的 Go HTTP 客戶端請求包,支持常用的請求方式、常用設置,比如: 支持設置 Mock 信息 支持設置失敗時告警 支持設置失敗時重試 支持設置項目內

原创 [系列] Go - 基於 GORM 獲取當前請求所執行的 SQL 信息

前言 爲了便於精準排查問題,需要將當前的請求信息與當前執行的 SQL 信息設置對應關係記錄下來,記錄的 SQL 信息包括: 執行 SQL 的當前時間; 執行 SQL 的文件地址和行號; 執行 SQL 的花費時長; 執行 SQL 的影響行數

原创 [系列] Go - 常用簽名算法的基準測試

簽名驗證是爲了保證接口安全和識別調用方身份,同時還需要滿足以下幾點: 可變性:每次的簽名必須是不一樣的。 時效性:每次請求的時效性,過期作廢。 唯一性:每次的簽名是唯一的。 完整性:能夠對傳入數據進行驗證,防止篡改。 簽名規則大同小異,