原创 golang使用unsafe包實現指針運算操作private變量
golang中是有指針概念的,但是go中的指針功能被限制了,不像C/C++中那樣,可以對指針進行運算 比如在C/C++中 *p++ 這樣是正確的。但是在go中,這樣寫是錯誤的。至於go爲什麼會屏蔽指針的運算,比較多的一種說法是go團隊認爲指
原创 golang造輪子,封裝一個簡單的http client
近來無事,本着愛折騰的原則,在go原生 http client 的基礎上,自己封裝了一個go的http client。由於才疏學淺,再加是第一次造輪子,在各位大佬面前獻醜了,寫的爛的地方,請輕噴。還請各位不吝賜教。 先放地址 gethub:
原创 linux shell 腳本 常用的if判斷條件
工作中經常需要寫shell腳本來處理一些重複的東西,使用腳本自動編譯,使用腳本多機器傳輸文件。 因爲不是天天寫shell,只是用到的時候寫一個,再加上腳本中的if的判斷條件有點多,容易忘記,所以做個備忘錄,以備不時之需 先說一下 if 表達
原创 linux下通過rpath解決cmake動態編譯後找不到動態鏈接庫問題
以後沒啥好圖,封面就上小姐姐圖了 這次書接上回,前段時間寫了一篇《使用cmake構建C/C++項目和動態庫》的文章,傳送門。但是直接通過cmake編譯鏈接後,會有一個問題,那就是需要的.so文件不能更改目錄,一旦.so文件目錄變了,整個程
原创 使用cmake構建C/C++項目和動態庫
編譯C/C++文件時,很多時候都是直接使用像 gcc main.c 或者 g++ main.cpp 這樣的命令編譯的。但是代碼文件多了後,這樣編譯就很困難了。這時候 就出現了MakeFile 這個工具。</br> MakeFile 解決了多
原创 linux下 C++ 使用 epoll 多路複用 實現高性能的tcpserver
linux系統中,實現socket多路複用的技術有select 、poll 、epoll 等多種方式。這些不同方式個有優缺點和適用場景,這不是本文討論的重點,又興趣的可以自己搜索學習一下。但是在高併發場景下, epoll 性能是最高的, N
原创 go 使用pprof 排查內存泄露
go 是自帶gc的語言,會自動管理內存,不用像C/C++那樣,需要程序員手動釋放內存,不用手動管理內存,就能少掉很多頭髮 go的GC會自動管理內存,但是這不代表go程序就不會內存泄露了。 go常見產生內存泄露的原因就是goroutine沒
原创 簡書 see you around
這應該是在簡書的最後一篇文章了,以後不會在簡書發文章了,離開不是因爲簡書不好了,只是簡書不適合發技術類文章了。 簡書現在大多數文章都是雞湯文,技術氛圍太差了,換一個技術氛圍好的點平臺。 我也想過在多個平臺發文章,但是在多個平臺發文章寫起來會
原创 ansible 在參數中傳入密碼
ansible是一個基於python開發自動化的運維工具,這個工具強大的地方是,被操作的機器上不需要安裝任何軟件,只需要在發起操作的機器上安裝就可以使用了。而且ansible支持很多模塊,還可以基於ansible二次開發,添加自己的功能 a
原创 通過彙編看golang函數的多返回值
golang這門語言,有個比較好的特性,就是支持函數的多返回值。想C,C++,Java等這些語言,是不支持函數多返回的。但是C,C++可以使用傳遞指針,實現函數多返回。但是,你有沒有想過,golang是怎樣實現函數多返回值的呢? 我們知道,
原创 docker學習3,打包一個docker鏡像
之前使用docker安裝過mysql,使用的是別人製作好的鏡像。今天使用Dockerfile自己打包一個docker的鏡像。這個鏡像是一個web的鏡像,使用go編寫。go非常適合用來寫docker的鏡像程序,因爲go編譯後的二進制程序不依賴
原创 docker學習2,docker基本命令
操作docker容器,和操作linux差不多,都是使用命令行操作。不同的是,操作docker需要使用docker的命令。docker的命令和linux的命令很多相似的,也有一些不同。廢話不多說,開始學習。docker命令分爲鏡像相關,容器生
原创 使用一個字段實現第二條件排序
在排序中,經常遇到變量相同情況下的排序問題。在MySQL中可以使用 ORDER BY 約束多個字段。但是在redis中,使用sorted set排序時,score只能設置一個變量。這樣在score相同時,只能使用字典序了(這個是從文檔上看到
原创 使用golang的sort包進行排序
這是在掘金的第一篇文章,之前一直在某書發文章,進來感覺某書越來越不好了,想把文章 都搬到掘金來。 介紹 golang和java等語言一樣,系統自帶了一個排序方法,可以快速實現排序。廢話不多說,先上栗子,再解釋。 package main
原创 go數據庫查詢 scan error sql: Scan error on column index XXXXX unsupported Scan, storing driver.Value ...
使用go查詢數據庫時,有時候會遇到 scan error sql: Scan error on column index XXXXX unsupported Scan, storing driver.Value type <nil>這個錯