Time of Update: 2018-04-06
標籤:插入 問題 into ace 說明 syn 轉義 check man 使用Go進行Mysql開發時,會遇到引號問題(實際上,與語言無關,只要使用sql就會遇到這些類似問題)。本文舉例說明如
Time of Update: 2018-04-12
標籤:切片slice切片Slice理論知識其本身並不是數組,它指向底層的數組作為編程數組的替代方案,可以關聯底層數組的局部或者全部為參考型別可以直接建立或從底層數組擷取產生使用len()擷取元素個數,cap()擷取容量一般使用make()建立如果多個slice指向相同底層數組,其中一個的值改變會影響全部make([]T, len, cap)其中,cap可以省略,則和len的值相同len表示存數的元素個數,cap表示容量 slice與底層數組的關係
Time of Update: 2018-04-13
標籤:method方法methodGo 中雖沒有class, 但依舊有method通過顯示說明receiver來實現與某個類型的組合只能為同一個包中的類型定義方法receiver可以是類型的值或指標不存在方法重載可以使用值或者指標來調用方法,編譯器會自動完成轉換從某種意義上來說,方法是函數的文法糖,因為receiver其實就是方法所接收的第一個參數(Method Value vs. Method
Time of Update: 2018-04-10
標籤:ima targe == repo jar包 檔案 bsp settings profile 原文地址:790154561.下載maven的壓縮包,並解壓到除了C盤裡的maven檔案夾中2
Time of Update: 2018-04-10
標籤:utf8 package http 處理 utf8編碼 小數 編寫 浮點 sprintf go語言聖經-複數1.我們把形如a+bi(a,b均為實數)的數稱為複數,其中a稱為實部,b稱為虛部
Time of Update: 2018-04-04
標籤:使用 切片 nbsp 初始化 ber channel log div [] 1.bytes.Equal(a []byte,b []byte)
Time of Update: 2018-03-31
標籤:clu count() pst iterator this maps swap sort 插入
Time of Update: 2018-04-12
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。在 Go 中,當涉及到物件導向編程,會有許多的前期工作需要做,以至於許多剛從其它語言遷移到 Go 的程式員會將那些語言中的一些概念帶到 Go 中。物件建構器就是這麼一個存在於許多其它語言中而無法在 Go 中找到的概念。## 為什麼需要構造器在 Go 中,有些對象需要初始化,比如 channel 和 slice 這兩個很容易想到的例子。這個初始化的過程通過調用 `make` 函數來執行。> make 這個內建函數為且僅為
Time of Update: 2018-04-12
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。背景:暴露私網的一台機器,公網可訪問。由於坑爹的電信沒有給固定的公網IP,所以沒法在路由器上配置公網轉寄。網上google後,發現ssh的強大,一條命令搞定。```ssh -fNgR 2222:127.0.0.1:22 101.37.XX.XX ```命令 | 含義---|----R port:host:port |
Time of Update: 2018-04-12
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。hashset 是一種非常高效的資料結構,插入和查詢的複雜度都是 O(1),基本上能滿足大部分情境的效能需求,但在一些特殊的情境下,頻次非常高的調用依然會成為效能瓶頸(用 pprof 分析),比如廣告裡面的定向邏輯,在一次請求中過濾邏輯可能會執行上千次,而其中有些過濾剛好都是一些枚舉值,比如性別定向,年齡定向等等,對於這種可以用枚舉表示的值可以用 bitset 最佳化,能有20多倍的效能提升bitset 的本質也是一種
Time of Update: 2018-04-12
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。針對Golang 1.9的sync.WaitGroup進行分析,與Golang 1.10基本一樣除了將panic改為了throw之外其他的都一樣。原始碼位置:sync\waitgroup.go。結構體type WaitGroup struct { noCopy noCopy // noCopy可以嵌入到結構中,在第一次使用後不可複製,使用go vet作為檢測使用 //
Time of Update: 2018-04-12
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。可能是因為編譯太簡單了,golang 並沒有一個官方的構建工具(類似於 java 的 maven 和 gradle之類的),但是除了編譯,我們可能還需要下載依賴,運行測試,甚至像 easyjson,protobuf,thrift 這樣的工具下載和代碼產生,如果沒有構建工具,這些工作就會非常麻煩為瞭解決這個問題,之前寫過一個 everything.sh 的指令碼,把所有的操作都封裝在這個指令碼裡面,只需要執行類似於 sh
Time of Update: 2018-04-08
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。關於一個類型持有一個方法當中的細節,其中有一條:對於一個命名過的具體類型T,它一些方法的接收者是類型T本身而另一些則是T的指標。在T類型的參數上調用一個*T的方法是合法的,只要這個參數時一個變數這僅僅是一個文法糖,編譯器隱式地擷取了它的地址。但事實上T類型的值並不擁有*T指標的方法,例如:type IntSet struct { /* ... */ }func (*IntSet) String() stringvar _ =
Time of Update: 2018-04-05
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。前言:本文主要闡述golang中的if else、switch語句和for迴圈的用法。 一、if else語句 1.1 基本文法 在有些情況下,條件陳述式兩側的括弧是可以被省略的;當條件比較複雜時,則可以使用括弧讓代碼更易讀。條件允許是符合條件,需使用 &&、|| 或 !,你可以使用括弧來提升某個運算式的運算優先順序,並提高代碼的可讀性。 第一種形式:if condition { // do
Time of Update: 2018-04-02
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。先說優點strings.Builder:省記憶體bytes.Buffer:快效能測試程式package benchmark_testimport ("bytes""strings""testing")var (ss = "1234567890abcdefghijklmnopqrstuvwxyz"bs = []byte(ss)rn = 'a'bt =
Time of Update: 2018-04-01
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。多線程應用程式非常複雜,尤其是當你的代碼沒有組織並且與資源訪問、管理和維護保持一致時。如果你想最大限度地減少錯誤,你需要哲學和規則來生活。這裡有一些我的:- 資源的分配和回收應該在同一類型中抽象和管理- 資源執行緒安全性應該在同一類型中抽象和管理- 公用介面應該是訪問共用資源的唯一手段- 任何分配了資源的線程都應該釋放同類型的資源在 Go 中,沒有線程,只有 `Go Routines`。Go 運行時抽象了這些常式的線程和任務交換。
Time of Update: 2018-03-31
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。反射是指一門程式設計語言可以在運行時( runtime )檢查其資料結構的能力。利用 Go 語言的反射機制,可以擷取結構體的公有欄位以及私人欄位的標籤名,甚至一些其他比較敏感的資訊。眾所周知Go標準庫中有一些包利用反射機制來實現它們的功能。我們經常會以 [encoding/json](https://golang.org/pkg/encoding/json/) 包為例,該包常用來把 JSON
Time of Update: 2018-03-31
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。常規方案直接用 os.Exit(exit_code),但這個太暴力了,我們需要裝逼一點的,於是找到了這個:https://stackoverflow.com/questions/24601516/correct-way-to-set-exit-code-of-processpackage mainimport ( "fmt" "os")func main() { code := 0
Time of Update: 2018-03-30
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。這篇文章中我們會研究一個基本的同步問題。並使用 Golang 中原生的 Buffered Channels 來為這個問題找到一個簡潔的解決方案。## 問題現在假設我們我們有一堆 workers。為了充分發揮 CPU 多核的能力,我們讓每個 worker 運行在單獨的 goroutine 中:```gofor i := 0; i < workers; i++ {go worker()}```worker
Time of Update: 2018-03-30
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。前言本文介紹 kube-apiserver 是如何訪問 etcd 後端儲存相關原始碼主要在 kubernetes/staging/src/k8s.io/apiserver/pkg/storage通用介面Interface offers a common interface for object marshaling/unmarshaling operations and hides all the storage-related