這是一個建立於
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。封裝成函數://交換數組元素func swap(slice []int, i int, j int) {slice[i], slice[j] = slice[j], slice[i]} //選擇排序func SelectionSort(s []int) {l := len(s) //以免每次迴圈判斷都運算m := len(s)-1for i:=0;i<m;i++ {k:=ifor j:=i+1;j<l;j++
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。在golang編寫服務程式過程中,如果每次來鬥啟動一個goroutine去處理任務,處理一個任務後就退出,這樣勢必會造成資源浪費。構建一個工作goroutine池來處理任務相對資源利用會少些,具體的情況需對比測試。首先定義工作goroutine池,內部定義了兩個變數,一個是任務隊列,一個是需啟動goroutine的數量type WorkerPool struct { tasks <-chan *string //
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。go mobile 開發的應用,真機調試時,我們期望看到log包打出的日誌, 這時候就需要借用 Android Device Monitor 了。 我們的 go 代碼中用最簡單的 log.Println 列印螢幕尺寸,如: 在 Android Device Monitor 可以看到列印出來的資料: 這時候的幾個關鍵搜尋定位字: tag:golog 注意要小寫。 app: org.golang
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。git clone https://github.com/golang/tools golang.org/x/tools 即在 GOPATH 下構建一個 golang.org/x/tools 的包,然後 go build golang.org/x/tools/cmd/godoc 這樣能夠編譯出 godoc 二進位可以任意目錄下:git
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 Go從語言本身支援並發,而不是由某個庫或者模組來實現並發,可謂天生麗質。goroutine從根本上與線程不同,goroutine更加輕量化。 看下面這個常見的網路模型:package mainimport ( "fmt" "net")func manageClient(conn net.Conn) { conn.Write([]byte("Hi!"))
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。看這個源碼分析前,建議先看更簡單地例子 basic 的源碼分析(http://www.cnblogs.com/ghj1976/p/5183199.html), 一些基礎知識本篇將不再提及。 audio 的源碼比起 basic 最大的變化是使用了 golang.org/x/mobile/exp/sprite 這個對遊戲精靈的封裝包。 有關 audio
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。1、使用nohup ./commond & 這種方法最簡單.2、這種方法可以使用訊號.<pre name="code" class="html">package mainimport ("fmt""os""os/signal""syscall""time")func main() {if
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。最近項目用到了go語言,公司電腦沒有go的環境,就簡單搭一下順便記錄一下. 首先從官網下載golang的壓縮包: wget https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz下載完成之後將壓縮包解壓: tar -zxvf
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。package logimport ("sync""time""os""fmt""strconv")type Tlog struct{Qidx intQ1 []stringQ2 []stringQlen intQ1len intQ2len int Locker sync.MutexSavePath stringFilePrefix
這是一個建立於
這是一個建立於
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。條件陳述式 if ... else if ... else 語句,如:if num > 100{ fmt.Println(">100") } else if 0 < num { fmt.Println("<0")} else { fmt.Println("0<<num<<100")} 迴圈語句 GO語言中的
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。1. Go 語言 SDK 安裝包下載和安裝最新穩定版 1.5.3 安裝包 go1.5.3.windows-amd64.msi下載地址 https://golang.org/dl/,大小約 69 MB(作者上傳了一份該版本安裝包到 CSDN 資源,嫌國外網速慢可以去下載:http://download.csdn.net/detail/defonds/9408855),下載之後直接運行安裝,安裝路徑就使用它預設的 C:\Go\ 即可,
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。golang是強型別語言,在應用過程中類型轉換基本都會用到。下面整理一下常用的類型轉換,會持續更新。整形轉字串fmt.Println(strconv.Itoa(100))該方法的源碼是:// Itoa is shorthand for FormatInt(i, 10).func Itoa(i int) string {return FormatInt(int64(i),
標籤:只能輸入1個數字運算式: ^\d$ 描述: 匹配一個數字 匹配的例子: 0,1,2,3 不匹配的例子 只能輸入n個數字運算式: ^\d{n}$ 例如^\d{8}$ 描述: 匹配8個數字 匹配的例子:
標籤: 定義:滿足a*k≡1 (mod p)的k值就是a關於p的乘法逆元。 為什麼要有乘法逆元呢? 當我們要求(a/b) mod p的值,且a很大,無法直接求得a/b的值時,我們就要用到乘法逆元。 我們可以通過求b關於p的乘法逆元k,將a乘上k再模p,即(a*k) mod p。其結果與(a/b) mod p等價。 證: 根據b*k≡1 (mod p)有b*k=p*x+1。 k=(p*x+1)/b。 把k代入(a*k) mod p,得:(a*(p*x+1)
標籤:最近要用到Qt的Socket部分,網上關於這部分的資料都比較複雜,我在這總結一下,把Socket的主要部分提取出來,實現TCP和UDP的簡單通訊。 1.UDP通訊UDP沒有特定的server端和client端,簡單來說就是向特定的ip發送報文,因此我把它分為發送端和接收端。 注意:在.pro檔案中要添加QT += network,否則無法使用Qt的網路功能。1.1.UDP發送端 #include <QtNetwork>QUdpSocket
標籤:go channel 開發package mainimport ( "fmt" "math/rand" "time")func production(channel chan<- string) { for {
標籤:下面是個關於遞迴調用簡單但是很能說明問題的例子:[cpp] view