Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。從一個有趣的項目來入門新的語言,再合適不過了。本人也是通過編寫一個可以聊天,可以設定備忘/定時提醒,可以搜尋美劇/電影資源等等功能的小機器人,迅速掌握了Go這門語言並喜歡上它。文末會給出小機器人源碼及文中執行個體代碼連結。1. 先定個小目標——從對話開始讓機器人“開口說話”是首要的,這裡先採用第三方服務提供的API,本地通過HTTP請求擷取回答並返回。此階段基本沒有痛點,以Go為例,關鍵區段數十行代碼解決://get reply
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。收集統計資訊的意義一個 SQL 資料庫裡,最佳化器實現的好壞對效能的影響是決定性的。一個未經最佳化的執行計畫和經過充分最佳化後的執行計畫,執行時間的差別往往是成千上萬倍。而對一個 SQL 最佳化器來說,統計資訊是必不可少的條件,只有依賴統計資訊提供的資料,最佳化器才可以正確估算不同的執行計畫的執行代價,以選擇最優的執行計畫。就像一個大廚無論多麼優秀,沒有上等食材也是無法做出美味的飯菜。統計資訊包含的內容統計資訊有兩類,包括
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。golang 對自訂類型排序在實際項目中,我們常常需要根據一個結構體類型的某個欄位進行排序。之前遇到這個問題不知道如何解決,後來在網上搜尋了相關問題,找到了一些好的解決方案,此處參考下,做個總結吧。由於 golang 的 sort 包本身就提供了相應的功能, 我們就沒必要重複的造個輪子了,來看看如何利用 sort 包來實現吧。sort包淺談sort 包
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。之前一直用vscode來寫Golang,直到有人向我推薦了IDEA,便折服於它的強大。在這裡分享一些IDEA的操作和技巧(只說Golang,但一些技巧對其他語言同樣有效)。Help -> Keymap Reference能夠開啟快速鍵映射的PDF檔案,方便我們查看 在類型、函數、變數上CTRL +
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。搭建golang版ss服務第一步:安裝 golangcd /usr/local # golang安裝到此路徑下wget https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gztar -xvf go1.6.3linux-amd64.tar.gzvim /etc/profile # 設定系統 GOROOT 並添加環境變數 export
Time of Update: 2017-02-10
這是一個建立於
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。本話題系列文章整理自 PingCAP NewSQL Meetup 第 26 期劉奇分享的《深度探索分布式系統測試》議題現場實錄。文章較長,為方便大家閱讀,會分為上中下三篇,本文為中篇。接上篇:當然測試可能會讓你代碼變得沒有那麼漂亮,舉個例子:這是知名的 Kubernetes 的代碼,就是說它有一個 DaemonSetcontroller,這 controller 裡面注入了三個測試點,比如這個地方注入了一個 handler
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。關於 Go 語言最新的記憶體回收行程(garbage collector),我最近閱讀了許多篇讚揚它的文章,但是它們都讓我將信將疑,其中的不少來自 Go 語言的官方團隊部落格。他們像是暗示著在記憶體回收領域已經發生了一個巨大的突破。以下是這個記憶體回收行程在 2015 年 8 月第一次被公之於眾時的摘錄:Go 正在準備構建一個不僅屬於 2015 年更屬於 2025 年及未來的記憶體回收行程。Go 1.5 的記憶體回收將會預示著
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。Hello gRPC按照慣例,這裡從一個Hello項目開始,本項目定義了一個Hello Service,用戶端發送包含字串名字的請求,服務端返回Hello訊息。流程:編寫.proto描述檔案編譯產生.pb.go檔案服務端實現約定的介面並提供服務用戶端按照約定調用方法請求服務項目目錄:$GOPATH/src/grpc-go-practice/example/|—— hello/ |—— client/ |——
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。gRPC介紹與安裝A high performance, open source, general RPC framework that puts mobile and HTTP/2 first. ——gRPC WebsitegRPC 是一個高效能、開源、通用的RPC架構,由Google推出,基於HTTP/2協議標準設計開發,預設採用Protocol
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。開發規範版本控制git開發流程git
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。前言令牌桶是一種常見用於控制速率的控流演算法。原理於 Wikipedia 上描述如下:每秒會有 r 個令牌被放入桶中,即每 1 / r 秒向桶中放入一個令牌。一個桶最多可以存放 b 個令牌。當令牌被放入桶時,若桶已滿,則令牌被直接丟棄。當一個 n 位元組的資料包抵達時,消耗 n 個令牌,然後允許存取之。若桶中的令牌不足 n ,則該資料包要麼被緩衝要麼被丟棄。下面我們便根據上述描述,使用 Go 語言,基於多 goroutine
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。全文連結: https://github.com/json-iterator/go-benchmark目的不是推銷 json-iterator 。而是證明 json-iterator 不比其他的庫更慢,從而使得大家可以把吐槽點放到其他方面:比如特性是不是齊全, api 是不是友好。重新發明 json 解析器是因為經常需要處理奇怪格式的 json ,而又不想把資料轉兩遍。市面上沒有 api 滿足我的需求的,後面我會專門寫一篇
Time of Update: 2017-02-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。Go 1.8為我們提供了一個建立共用庫的新工具,稱為Plugins!讓我們來建立和使用一個外掛程式。 目前的外掛程式只能在Linux和Darwin上工作。安裝1.8beta1,不做說明.建立一個外掛程式方法到aplugin.go:package mainfunc Add(x, y int) int { return x+y}func Subtract(x, y int) int { return
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。> 文章主要是參考**雨痕學堂(訂閱號)**及其他網友的部落格然後根據自己的理解整理而成。## string與[]byte相互轉換在寫程式的過程中經常遇到string與[]byte的相互轉換,但是這種轉換是有代價的,string與[]byte並不共用底層記憶體空間,所以每次轉換都伴隨著記憶體的分配與底層位元組的拷貝。我們可以藉助unsafe完成指標類型轉換,避開記憶體配置與複製,從而提升效能。**屬於黑魔法,盡量不要用。*
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。golang錯誤處理方式一直是很多人詬病的地方,很多人都吐槽說一半的代碼是 if err != nil { /* 錯誤處理 */ },嚴重影響正常的處理邏輯,我最開啟也反感這種錯誤處理機制,每調用完一個函數都需要check一下,自訂函數也都要增加一個error類型的傳回值,但是查了很多資料慢慢理解這種錯誤機制的好處。因為調用每一個函數都可能發生錯誤,及時在錯誤發生的地方做處理更容易構建複雜的大型系統。##
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。##channel的用法channel是golang中很重要的概念,配合goroutine是golang能夠方便實現並發編程的關鍵。channel其實就是傳統語言的阻塞訊息佇列,可以用來做不同goroutine之間的訊息傳遞,由於goroutine是輕量級的線程能夠在語言層面調度,所以channel在golang中也常被用來同步goroutine。一般channel的聲明形式為:var chanName chan
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。本文主要介紹一下 Docker 基礎的東西,先介紹一下我的實現環境:1. windows 10 正式版1. Docker Toolbox1. Docker version 1.8.21. 官方鏡像 ubuntu:latest這裡我們主要只說 aufs/containers/graph 這三個目錄。1. 先進入 Docker 檔案系統目錄ll /var/lib/docker #其中目錄是這樣的 /var/lib/docker
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。Mesos 按照官方的介紹,是分布式作業系統的核心。目標是 ”Program against your datacenter like it’s a single pool of
Time of Update: 2017-02-09
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。本文從Maven談起,分析了Maven的主要思想以及Gradle對Maven的改進,最後談了下Go語言面臨的依賴管理問題。為什麼要有依賴管理工具?談依賴管理之前我們先談談為什麼要有依賴管理工具這東西。我們學了一種程式設計語言,然後寫了個『Hello