Time of Update: 2017-02-09
標籤:建議 訪問 之間 imp pascal 單詞 class write 異常 python源碼和其他一些書籍,命名各種個性,沒有一個比較統一的命名規範。於是總結了一些,供參考。模組名:模組應
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。簡介作為一種現代語言,go語言實現了對並發的原生支援。上幾期文章中,我們對goroutine 和 channel進行了詳細的講解。但是要實現對 channel 的控制,從語言層面上來說,select 語句是必不可少的部分。本文中,我們就 select 語句的行為和使用方法進行深入討論。閱讀建議本文中的內容是 Go語言並行存取模型的一篇,但是與上幾期關係不是特別密切,可以獨立閱讀。本文的內容來源自於 go language
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。原文連結:http://targetliu.com/golang-http-router/還是在繼續學習Go的路上,曾經在使用PHP的時候吃過過度依賴架構的虧。現在學習Go的時候決定先打好基礎,從標準庫學起走。源碼分析我們知道最簡單的建立http伺服器代碼基本上都是這樣的:http.HandleFunc('/', func(w http.ResponseWriter, r *http.Request){
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。原文連結:http://targetliu.com/vscode-can-not-go-to-def/之前研究GOLANG時一直用LiteIDE,不得不說,LiteIDE的確不錯,但是總感覺缺乏美感,是一款很中規中矩的編輯器。網上看到大家對VSCODE評價不錯,嘗試後發現的確不錯,布局簡潔、外掛程式化、支援中文,通過VSCODE GO擴充能夠很舒服的寫GO的代碼。問題描述不過在實際使用過程中發現 net
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。先看這段代碼,結果是[0 2 3],很多人都能答對。func modify(s []int) { s[0] = 0}func main() { s := []int{1, 2, 3} modify(s) fmt.Println(s)}然後稍微改動一下,再猜一下結果func pop(s []int) { s = s[:len(s)-1]}func main() { s := []int{1, 2,
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。今天在嘗試用go寫一個簡單的orm的時候 發現 在調用可變參數函數時,不是總能使用省略符號將一個切片展開,有時候編譯器可能會報錯 再此用幾個簡單的例子作為說明當不太確定資料類型的時候我們通常採用空介面tests1(789)fmt.Println("-------------")tests1("789")func tests1(arg interface{}) { fmt.Println(
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。之前看到 lantern
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。最近用beego開發的項目頻繁的要部署到測試環境提測,然後部署到線上發布,由於兩種環境下設定檔中某些配置參數不同,每次手動修改很是麻煩,故而想有沒有辦法能根據部署環境的不同載入相應環境的組態變數。幸而得同事告知,兩種環境下都會注入ENV_CLUSTER這個系統內容變數,且變數值不同。於是,在main函數beego.Run()執行前,我建立了一個預先執行的init檔案,將自適應環境載入設定檔的代碼邏輯放在了這裡。具體代碼如下:
Time of Update: 2017-02-09
這是一個建立於
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。上一周給我的網站加了一個搜尋功能,能自動抓取我的部落格和別人的CSDN部落格。通過RSS抓取。這樣資料格式規範,容易解析。問題是資訊較少。後來發現在HTML原始碼裡面,會有為了方便搜尋引擎索引的meta欄位,能指出作者和詳情。以我的部落格《Golang實現HTTP發送gzip請求》為例。裡面的meta資訊如下:<meta charset="utf-8"><meta
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。HTTP報文的格式問題接著昨天的寫。昨天的文章有個不確定的地方,就是建立TCP串連之後,向伺服器發送的資料,包括命令、頭和主體的格式。這三個部分是如何分割的,我是參考了POSTMAN預覽的格式和telnet發送的格式猜測的,原認為行直接是通過\n進行區分的,而頭和主題是兩個\n進行區分。這樣發送也是能夠正常解析的,今天去讀了一下《HTTP權威指南》和Golangnet/http包,具體瞭解了下到底是如何區分的。《HTTP權威指南》
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。關於堆排序的演算法,可以參考我去年的文章《堆排序(HEAP SORT)》。那篇文章講的是建立小頂堆進行的排序,這裡說的是建立大頂堆建立的排序,差不多。在Golang源碼的sort包裡,內建了排序函數。該函數可以對各種類型進行排序,只不過該類型需要實現三個函數,使得該類能夠實現Interface介面。type Interface interface {// Len is the number of elements in the
Time of Update: 2017-02-09
這是一個建立於
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。大數乘法,簡單的說,就是把小學學的列豎式計算的方法進行了實現。這其實也就是個乘法分配率的變形。5 * 12 = 5 * (2 + 10) = 5 * 2 + 5 *
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。Golang的結構體可以增加類似於Java裡面@JsonProperty("id")注釋。在結構體裡面通過反引號包含的字串被稱為Tag。type Cyeam struct {Url string `json:"url"`Other string
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。從大一開始學C++,所接觸過的for迴圈只有一種方式,for (int i = 0; i < count; i++) {...}。後來接觸了Java,知道Java 5 引入了一種新特性,可以通過for (a : aa)遍曆整個數組。雖然知道,但是也沒用過,因為之前那種方法足夠了。現在主力語言是Go。Go也支援傳統的寫法for i := 0; i < count; i++ {...}。同樣,還有一種for i, a :=
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。在C語言筆試的時候,比較喜歡考這個東西,如何將一個char數組轉成int類型。當年看過,不過早就忘記了。後來看到這種東西binary.BigEndian.Uint32(a),直接瞎了。後來去看文檔,看了半天也沒搞明白。在這裡直接說一下,源碼。下面這個是uint8,也就是byte數組,大小為4,轉換成int32的代碼。package mainimport "fmt"import
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。三個月沒在公司,回來後發現公司內部已經用上了facebook開源的Apache Thrift。大概看了一下介紹,傳統介面編寫是使用json或者xml作為資訊格式進行傳輸。一般Web Service裡面,SOAP這種,使用的就是xml(不過我從來沒用過。。);而輕量級網路服務REST,則用的是json作為傳輸媒介。json相較於xml,傳輸的內容變少了許多,傳輸更加便捷。這兩種都是基於HTTP的傳輸方式。而Apache
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。最近要做Apache Thrift相關的項目。大概看了一下,覺得不難。Thrift目前已經至此和Go語言了。照著官方提供的一個例子在學。周五搞了一上午,終於編譯通過了。下午去讀例子源碼,發現一個從來沒見過的包——flag。不管是C開發還是Java,都接觸過命令列開發。像大Java的main函數public static void main(String
Time of Update: 2017-02-09
這是一個建立於