原创 基於Drone+Gitea+Docker對go項目進行CI/CD

Drone是一個go開發的用來CI/CD的好工具,比jenkins和gitlab-ci更加簡單好用,部署方便 1.準備環境 gitea和go proxy docker倉庫harbor gitea 創建一個組織test,在該組織下創

原创 go1.13使用私有goproxy緩存加快依賴下載速度

go1.13的Go Modules有了重大改進,具體看看這篇 乾貨滿滿的 Go Modules 和 goproxy.cn 問題: 開發者在自己的電腦設置GOPROXY,Go Module的緩存保存在本地,多人開發時人人都要下載到自

原创 YApi結合swag管理和生成go項目restful API文檔

YApi結合swag管理go項目API文檔 準備 什麼是OpenAPI?Swagger是什麼? 安裝和了解swag YApi教程 docker部署YApi 項目demo ├── controller │ ├── accou

原创 nodejs項目docker自動化

前言 現在的前端項目一般都是類似node app.js運行起來的,也就是說它需要一個node環境來提供web服務,另一種是生成最終的靜態文件,用nginx提供服務 上面兩種方式做成鏡像有點大,所以這裏的思路是用golang寫一個靜

原创 go proxy結合nginx解決golang項目公私有模塊依賴問題

go從1.11開始引入了go module,其中有一個go proxy的特性能幫我們解決第三方模塊的下載,比如 golang.org/x 下的模塊。同時公司也有自己的私有模塊要依賴。這裏是一步解決同時下載公私有模塊的問題。 (注意

原创 進程地址空間與虛擬存儲空間的理解(轉載)

早期的內存分配機制 在早期的計算機中,要運行一個程序,會把這些程序全都裝入內存,程序都是直接運行在內存上的,也就是說程序中訪問的內存地址都是實際的物理內存地址。當計算機同時運行多個程序時,必須保證這些程序用到的內存總量要小於計算機實際物理

原创 go項目源碼分析與使用--內存緩存go-cache

1.項目介紹 地址: https://github.com/patrickmn/go-cache 一個基於內存的key-value存儲/緩存項目,類似於Memcached,並且可選擇定期的垃圾回收,適合單機程序。代碼量不多,也不

原创 go項目源碼分析與使用--協程池pool

1.項目介紹 地址: https://github.com/gobwas/ws-examples/blob/master/src/gopool/pool.go 只介紹一個代碼文件,它簡潔優雅的實現了一個goroutine的poo

原创 go項目源碼分析與使用--定時任務robfig/cron

1.項目介紹 地址: https://github.com/robfig/cron 該項目就是crontab的go實現,一般用於定時任務,項目代碼不多,但是簡潔易懂,十分規範 2.關鍵源碼 ├── chain.go ├── cr

原创 基於Drone+Gitea+K8s對go項目進行CI/CD

環境: 基於Drone+Gitea+Docker對go項目進行CI/CD 目標: 把原來由docker run起來的進程交給k8s去進行調度編排 前提: 熟悉k8s的基本使用 1.kubectl環境打包 這裏把用戶目錄下的.kub

原创 Vagrant+PHPStorm+XDebug斷點調試

一.爲自己的php版本選擇正確的xdebug版本   首先要得到虛擬機運行環境的phpinfo()信息,我是這樣做的 在瀏覽器訪問給虛擬機配的域名   把phpinfo() 頁面的內容Ctrl+A全部選中,Ctrl+C複製, 打開htt

原创 go proxy結合nginx解決golang項目內外部依賴問題

go從1.11開始引入了go module,其中有一個go proxy的特性能幫我們解決第三方包的下載,比如 golang.org/x 下的包 在這裏我們利用它不但能下外面的依賴,也能下內部項目的依賴 1.公用的go proxy

原创 《go語言聖經》筆記之--防止數據競爭的三種方式

第一種方法是不要去寫變量如果我們在創建goroutine之前的初始化階段,就初始化了package級別變量並且再也不去修改它們,那麼任意數量的goroutine併發訪問I這個package級別變量都是安全的,因爲每一個goroutine都

原创 go語言實現--從兩個數組中找出它們的和最接近給定值的一對或多對元素

想起以前遇到的一道面試題,閒來無事把它實現一遍 問題描述: 有兩個數組,分別從兩個數組取一個元素組成一對,找出使它們的和最接近給定值sum的一對或多對元素 解決一: 藉助散列表,實現空間換時間提高查找效率,下面的時間複雜度和空間複雜度

原创 《go語言聖經》筆記之--併發非阻塞緩存

根據書本第9章第7節的內容,實現一個併發非阻塞緩存第一種方式,採用上鎖的方式:package main import ( "fmt" "io/ioutil" "log" "net/http" "sync" "time" )