Time of Update: 2017-02-10
這是一個建立於
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。gRPC 預設提供了兩種認證方式:基於SSL/TLS認證方式遠程調用認證方式兩種方式可以混合使用TLS認證樣本這裡直接擴充hello項目,實現TLS認證機制首先需要準備認證,在hello目錄建立keys目錄用於存放認證檔案。認證製作製作私密金鑰 (.key)# Key considerations for algorithm "RSA" ≥ 2048-bitopenssl genrsa -out
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。前言令牌桶是一種常見用於控制速率的控流演算法。原理於 Wikipedia 上描述如下:每秒會有 r 個令牌被放入桶中,即每 1 / r 秒向桶中放入一個令牌。一個桶最多可以存放 b 個令牌。當令牌被放入桶時,若桶已滿,則令牌被直接丟棄。當一個 n 位元組的資料包抵達時,消耗 n 個令牌,然後允許存取之。若桶中的令牌不足 n ,則該資料包要麼被緩衝要麼被丟棄。下面我們便根據上述描述,使用 Go 語言,基於多 goroutine
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。json 是現在非常常見的資料傳遞方式, go本身也整合了json的產生和解析引入包import { "bytes" "encoding/json"}解析定義 json 對應的實體類, 準確的說是結構體 type GoAccessToken struct { AccessToken string ExpiresIn int}建立該結構體的引用goAccessToken :=
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。概覽:為什麼需要串連池串連失效問題database/sql 中的串連池使用串連池管理Thrift連結以下主要使用Golang作為程式設計語言為什麼需要串連池我覺得使用串連池最大的一個好處就是減少串連的建立和關閉,增加系統負載能力,之前就有遇到一個問題:TCP
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。寫一個錯誤的c程式package dlsymimport "testing"func Test_intercept(t *testing.T) { Intercept("gethostbyname\x00")}package dlsym// #cgo CFLAGS: -I.// #include <stddef.h>// #include "dlsym_wrapper.h&
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。TODO:Golang語言TCP/UDP協議重用地址連接埠這是一個簡單的包來解決重用地址的問題。 go net包(據我所知)不允許設定通訊端選項。 這在嘗試進行TCP NAT時尤其成問題,其需要在同一TCP連接埠上進行偵聽和撥號的過程。 這個包使我有可能實現這個功能。
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。最近打算介紹go語言編寫的開源類庫架構分析,自己最開始使用go語言是做爬蟲的,採用的是gocrawl, gocrawl是一個使用go語言編寫的開源爬蟲類庫,今天來分析下gocrawl的實現。## 範例程式碼```package gocrawlimport ( "github.com/PuerkitoBio/goquery" "net/http" "regexp"
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。在golang中可以使用time.Time資料類型來儲存mongodb中的ISODate時間。gtype聽Model聽struct聽{聽聽聽聽uploadDate聽time.Time聽`bson:"uploadDate"`}m聽:=聽Model{}if聽err聽:=聽c.Find(nil).Select({"_id":聽0,聽"uploadDate":聽1}).One(&m)
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。Golang標準庫今天我們講golang標準庫的os包type File struct{},還是廢話少說直接上代碼(1)os.Create()這個函數是創見一個檔案,函數的原型是func Create(name string) (file *File, err error)輸入的是名稱字串類型,返回的是一個File的指標和一個error[php]import
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。布爾型:bool長度1位元組取值範圍:true,false注意:不可以用數字代表true或false整型:Int根據平台可能為32為或64位聽8位整型:int8/uint8長度:1位元組取值範圍:-127~127,0~255byte 位元組型 聽其實就是 uint8的別名 聽16位整型:int16/uint16長度:2位元組取值範圍:-32768~32768,0~65535
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。1.struct 簡潔這個的struct和C語言的很相似,類比出class的功能,但是不完全的!沒有建構函式等!2.struct的申明[php]package mainimport "fmt"type Person struct {Age intName string}func main() {//初始化兩種a := Person{}a.Age = 2a.Name =
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。今天做訊息佇列持久化儲存服務過程中,golang操作mysql 報錯:panic:聽runtime error:聽invalid memory address or nil pointer dereference聽[經過反覆尋找,原來是變數定義問題 做個記錄,以後再有問題可以做個參考,原始代碼:var聽Db聽*sql.DBfunc聽init()聽{聽聽聽聽Db,聽err聽:=聽sql.Open("mysql",聽&
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。1.申明一個數組 var a[2] int 或者 a:=[2]int{1,2}2.數組索引數組就是索引的來建立如我們再來一個測試3.go語言可以自動計算數組的長度,譬如你知道數組有幾個可以如下申明[php]a:=[…]int{1,2,3,45}[/php]4.指標數組[php]a:=[3]int{1,2,3}var p * [3]int = &a //這種是指標數組 我們看到可以直接輸出指向數組的指標x , y :=1 ,
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。1 形式含義聽 聽 所謂閉包就是一個函數“捕獲”了和它在同一作用於的其他常量和變數。聽 聽 從形式上看,在Golang中,所有的匿名函數都是閉包。閉包的建立方式和普通函數幾乎一致,只有一個關鍵區別:閉包沒有名字。聽 聽
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。package聽utilimport聽("encoding/base64""errors")func聽Base64Encode(deText聽[]byte)聽[]byte聽{return聽[]byte(base64.StdEncoding.EncodeToString(deText))}func聽Base64Decode(enText聽[]byte)聽([]byte,聽error)聽{deText,
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。上一節已將將需要的資料從網站http://www.gratisography.com/ 抓取並存入資料庫【使用crawldata.go中的InsertData(&imageDatas)函數】,現在需要將資料從資料庫indiepic的表gratisography中取出並然會json格式的資料。專案檔夾結構如下:indiepic├── README.md├── crawldata│ ├── crawldata.go│
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。學習什麼語言都得從讀檔案開始,好像記得一個大神說過電腦編程就是"開啟檔案,操作,關閉檔案"。初學Golang就記一下go語言的檔案操作Read Filefunc main(){ rw,err := os.Open("") if err != nil { panic(err) } defer rw.Close()
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 註:本文作者是 YANN,原文是 Introduction to Go Debugging with GDB在過去的 4 年中,我花了我絕大部分的時間用來寫,讀以及調試 Python 或 JavaScript 代碼。在學習 Go 的過程中,像穿著一雙有小石子的鞋子在美麗的山中遠行。很多事情給我留下了深刻的印象,但是使用 println 調試My Code在過去走的太遠了。在 Python
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。struct的方法,如果receiver非指標,則調用這個方法無法改變對象狀態,因為傳遞給方法的對象是原對象的一個拷貝,所有的改變都被作用在這個拷貝上而非原對象上.type st struct{ val uint32}func (this st) Show(){ fmt.Printf("Show:%d\n",this.val)}func (this st) Increase(){