原创 基於Clean Architecture的Go項目架構實踐 Clean Architecture 佈局 數據流向 代碼示例 結論

經過這些年的發展,Go語言已經成爲一門被廣泛使用在各個領域的編程語言。從k8s、docker等基礎組件,到業務領域的微服務,都可以用Go構建。在構建這些Go項目時,採用哪種架構模式和代碼佈局,是一個仁者見仁智者見智的事情。有Java Spr

原创 Python跨服務傳遞作用域的坑 背景 作用域跨服務傳遞問題 優化作用域更新邏輯 參考文檔

背景 在一個古老的系統中,有這樣一段代碼: scope = dict(globals(), **locals()) exec( """ global_a = 123 def func_a(): print(global_a) ""

原创 利用AWS Lambda和iOS捷徑實現手機一鍵開小區門禁 查找 API 第一次嘗試 分析登錄過程 使用 AWS Lambda 搭建服務 配置iOS捷徑 總結

我住的小區使用了一個叫守望領域的智能門禁系統,可以通過手機App開小區門禁和單元門,但是用App開門需要經過四五步:打開App→進入開門界面→找到需要開的門→點擊開門。 加上戴口罩時候解鎖手機需要輸入密碼,導致整個流程非常耗時,經常需要站

原创 MySQL 子查詢中order by不生效問題 問題描述 排查過程 問題根因 總結 參考文檔

一個偶然的機會,發現一條SQL語句在不同的MySQL實例上執行得到了不同的結果。 問題描述 創建商品表product_tbl和商品操作記錄表product_operation_tbl兩個表,來模擬下業務場景,結構和數據如下: 接下來需要

原创 規避 Go 中的常見併發 bug 阻塞式bug 非阻塞式bug 總結

在Understanding Real-World Concurrency Bugs in Go這篇論文中,幾名研究人員分析了常見的Go併發bug,並在最流行的幾個Go開源項目中進行了驗證。本文梳理了論文中提到的常見的bug並給出解決方法的

原创 爲 WSL2 一鍵設置代理

在 WSL2 環境中 clone 一個很大的 git 項目,不走代理速度很慢,所以研究了一下怎麼讓 WSL2 走 Windows 的代理客戶端。 WSL1 和 WSL2 網絡的區別 在 WSL1 時代,由於 Linux 子系統和 Windo

原创 探究 Pandas 讀取 Excel 文件報錯問題

問題描述 使用 Pandas 的 read_excel 方法讀取一個 16 萬行的 Excel 文件報 AssertionError 錯誤: "/Users/XXX/excel_test/venv/lib/python3.7/site-

原创 gRPC 跨進程使用引發的問題

問題描述 在 Python 項目中使用 gRPC 進行通信,跨進程使用時,會出現阻塞或報錯的情況(根據 gRPC.io 的版本不同,現象不同)。下面代碼展示了一個跨進程使用的 DEMO,主進程向 30001 端口上的 gRPC 服務器發送請

原创 探究vscode debug流程,解決無法運行go程序的問題

問題描述 vscode 無法以 run 模式運行 go 項目(只能以 debug 模式調試),並且有如下報錯。 圖中被遮蓋的部分是項目內的 package,並非第三方 package,也就是說在以 run 模式運行 go 項目時無法找到其

原创 使用Pipfile代替reqirements.txt

很多語言都提供了環境隔離的支持,例如nodejs的node_module,golang的go mod,python也有virtualenv和pyvenv等機制。爲了建立依賴快照,通常會用pip freeze > requirements.t

原创 Docker COPY 複製文件夾的詭異行爲

問題現象 在製作 docker 鏡像時,有複製某一個路徑下所有文件和文件夾到鏡像的需求,寫下了如下 dockerfile: FROM alpine WORKDIR /root/test_docker_proj COPY * ./ 原始目錄

原创 面向開發者的 WSL2 安裝指南

爲什麼要使用 Windows 做開發 一直以來 macOS 以類 unix 的特性,獲得了程序員的青睞,但是近幾年 Apple 在硬件領域少有讓人耳目一新的產品,加上取消 Esc、使用蝶式鍵盤、基本爲0的硬件可升級性、系統權限的收緊等騷操作

原创 viper從etcd讀取配置失敗的問題

問題描述 Viper (本文環境是Viper 1.1.0)是Go應用程序的完整配置解決方案,在很多項目中都有應用。etcd是一個分佈式KV存儲,最直接的應用是配置中心。 Viper除了支持從文件中讀取配置,還支持從遠程的配置中心讀取配置,使

原创 使用 Pandas 讀取超過 65536 行的 Excel 文件

問題描述 使用 Pandas 的 read_excel 方法讀取一個 16 萬行的 Excel 文件報 AssertionError 錯誤: "/Users/Zzy/Desktop/test/csv_test/venv/lib/pyth

原创 使用代理進行 docker build 問題的解決思路

問題描述 在使用 docker build 打包鏡像時,遇到了需要使用代理訪問網絡的需求。使用如下的 Dockerfile 來模擬這個場景: FROM golang:1.12 RUN curl www.google.com --max-ti