Golang周報第四期:泛型、領域驅動、人脈、grpc

2020-09-16 程式設計師在囧途001

第一期:

第二期:

第三期:


一 關於泛型

根據最新的草案,也許未來Go的泛型是這樣:

func Echo[T any](s []T &34;) { … }

對,也許可能用的是中括號。和其他語言使用<>有區別。

默默的等待中。泛型還是很有必要的。不過目測大家使用的goland又要升級一波了哦

另外,有條件的同學可以到 https://go2goplay.golang.org/ 去體驗 (不要問 「怎麼個有條件法」,你懂的)

二、關於golang寫的web服務軟體

類似nginx、apache之類的軟體有嗎? 有,看這個https://github.com/caddyserver/caddy

大約是去年我們在項目裡用過一次,體驗還是非常不錯的。支持赤裸裸的web發布、反代、網關、負載均衡和k8s ingress controller。 試一試不會懷孕的



三、有人說徹底搞懂Go需要學彙編?

從技術角度:是的。從業務角度呢?答:可以不用這麼徹底,聊點別的吧~~~(~_~)

開發GO的程式設計師應該是食物鏈頂端的程式設計師了,連彙編都是自己搞了一套。 go的彙編基於plan9,也是一種偽彙編,所謂的偽彙編:它並不對應某種真實的硬體架構。也是利用這種偽彙編為目標硬體生成具體的機器指令。這就是為何Go有這麼好的移植性的原因。


四、前兩天在 頭條裡 聊到了點「程式設計師積累人脈「那些事

這種話題我知道很招黑。因為始終會有一些雙標黨,一邊噴擊程式設計師應該只搞技術,不應該入世,甚至應該不食人間煙火。一邊自己其實根本做不到。。。。(你懂的)

作為我個人還是那句話:除非你天賦特別高,高到只需要技術就能行走天下。否則技術、人脈和社會, 都是 我們程式設計師 生活的一部分,根本不衝突。



五、又是招黑話題:GO為什麼會如此火爆

不談語言好壞,沒啥好談。Go火爆是有特殊原因的,我舉個慄子:

之前我們自己項目做過一個測試,相同的功能+相同的硬體環境。用java寫的程序,默認(注意用詞)情況下承受的壓測數據不如Golang。而且耗費的資源比較多。 當然,後面我們找來了某java老手進行各種優化包括JVM的調優。 事實上發現,經過瘋狂優化後 Java的壓測數據是好於Go的(耗費的資源依然比Go多)。

以上不是在說誰好(再討論這個我死你面前)。 就一個詞:成本。 你品你細品~~~~。

另外,還有個&34;-----那就是現在進入了雲原生時代。那麼 Go 的一些特性使它相對容易成為「雲原生語言」。 (注意,其他語言也能,但是沒這麼便宜)

六、關於Go和領域驅動(DDD)

GO其實不是純面向對象語言,因此在寫DDD的過程中還是有些不絲滑的感覺。 因此我在自己的gin腳手架上做了個簡化和閹割版的講解,目前剛開始更新,免費的。看戳這裡 http://b.jtthink.com/read.php?tid=571

七、關於grpc工具

之前課程裡也演示過grpc-gateway,可以把grpc映射成http api的方式發布出去。這個不再贅述,其實還有一個 是 命令行工具

譬如有些後臺服務我們直接做成了grpc服務,那麼除了用http api發布出去。假設我們是給系統管理用的,不需要http。只需要命令行操作就行了,有啥辦法呢?。 於是 可以用gRPCurl

地址戳這裡: https://github.com/fullstorydev/grpcurl



更多信息,戳「了解更多」

相關焦點

  • golang拾遺:為什麼我們需要泛型
    從golang誕生起是否應該添加泛型支持就是一個熱度未曾消減的議題。泛型的支持者們認為沒有泛型的語言是不完整的,而泛型的反對者們則認為接口足以取代泛型,增加泛型只會徒增語言的複雜度。雙方各執己見,爭執不下,直到官方最終確定泛型是go2的發展路線中的重中之重。
  • grpc的Go服務端和PHP客戶端實現
    /protobuf/protoc-gen-go //protoc --go_out 工具安裝golang的grpc包會科學上網的同學執行以下命令的就可以簡單實現go get google.golang.org/grpc不能科學上網同學也別急
  • gRPC Python 入門到生產環境
    --grpc_python_out=. route_guide.proto# 運行serverpython3 route_guide_server.py# 運行clientpython3 route_guide_client.py四、生產環境參考:python API doc https://grpc.io/grpc/python/index.htmlExploring
  • gRPC服務發現&負載均衡
    當有rpc請求時,負載均衡策略決定那個子通道即grpc伺服器將接收請求,當可用伺服器為空時客戶端的請求將被阻塞。/grpc/naming")// resolver is the implementaion of grpc.naming.Resolvertype resolver struct {    serviceName string // service name to resolve}// NewResolver return resolver with service namefunc
  • golang gRPC 負載均衡方案
    Pick First 是 golangRound Robin 是 golangconn_pool.gopackage mainimport ( &34; &34; &34; &34;)type ConnPool struct { conns []*grpc.ClientConn idx
  • Golang周報第一期:gorm2、微服務優勢、好程式設計師
    由於我們網站(程式設計師在囧途)主做Go技術棧條線課程,在學員的建議下決定做個golang周報。定期寫一些 golang相關知識點、好庫推薦和個人觀點的表達。希望大家喜歡,文風可能比較犀利,恐會引起不適。 每周不定期更新2篇左右。
  • Golang周報第三期:版本升級、共享內存、獅子和老虎誰厲害
    第一期連接: 第二期連接: 今日是第三期 一、關於Go版本 截止到目前寫稿。 go 1.15系目前版本是到1.15.1 ,之前1.15.0 有人提交了個不大不小的BUG。 1.14版本也進入1.14.8 。
  • 快報:正式提案將泛型特性加入 Go 語言
    快報:正式提案將泛型特性加入 Go 語言 經歷九九八十一難,多年的不斷探討和 Go 語言愛好者們在社區中的強烈關注,且 Go 官方在 2020 年不斷放出消息。
  • Go 泛型的括號選擇:[ ] or ( )?
    Go 語言設計者 Robert Griesemer 和 Ian Lance Taylor 近日在 Golang 官方論壇發帖討論關於泛型及其括號使用的問題
  • 關於 Go 語言泛型設計的最新進展和一些問題的說明
    前段時間 Go 官方發布了新的泛型草案,一時間在社區引起了很大的反響,各種關於泛型的文章、討論湧現出來。8 月 21日 Ian Lance Taylor 在golang-nuts[1] 討論組總結了泛型設計的最新進展和一些問題的說明。Go Team 在經過多次討論並閱讀了許多評論後,計劃對泛型設計進行一些更改並澄清草案的一些問題。
  • 什麼,JAVA的泛型是偽泛型
    這種參數類型可以用在類、接口和方法的創建中,分別稱為泛型類、泛型接口和泛型方法。具體來說,我們先通過對比下代碼,來進一步體會泛型的好處先看看沒有支持泛型之前的代碼運用泛型的代碼示範由以上兩個例子可以看出:引入泛型後,代碼在前端編譯的時候會做檢查,不會像1.5的代碼示範一樣,直到程序運行期才提示異常。
  • grpc-example 基於gRPC實現的簡單rpc框架
    >1.32.1</grpc.version> <!>Maven依賴 <dependencies> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty</artifactId> <version>${grpc.version}<
  • 研發周報第10期:如何創建比C語言更快的程式語言?
    有關Go 1完整的變化參見:http://golang.org/doc/go1.html[05] 為什麼開發者會拒絕代碼審查?[07] 細數使用PhoneGap/Apache Cordova框架的那些巨頭公司 Apache Cordova是PhoneGap貢獻給Apache後的開源項目,是從PhoneGap中抽出的核心代碼,是驅動PhoneGap的核心引擎。
  • Golang到底姓什麼?開發者想移除谷歌Logo
    關於Golang姓谷歌這一觀點,一方面是由於Go核心團隊的大部分成員都是谷歌的員工,如果他們不離開谷歌,不去積極確立Go語言未來的發展方向,那很難說Go不是谷歌的;另一方面,谷歌公司真的為Go付出了一些東西,比如提供了大量的基礎設施和資源,如域名golang.org
  • Golang 到底姓什麼?開發者想移除谷歌 logo
    關於 Golang 姓谷歌這一觀點,一方面是由於 Go 核心團隊的大部分成員都是谷歌的員工,如果他們不離開谷歌,不去積極確立 Go 語言未來的發展方向,那很難說 Go 不是谷歌的;另一方面,谷歌公司真的為 Go 付出了一些東西,比如提供了大量的基礎設施和資源,如域名 golang.org
  • Go語言愛好者周刊:第 58 期—關於 context
    前段時間 Go 官方發布了新的泛型草案,一時間在社區引起了很大的反響,各種關於泛型的文章、討論湧現出來。8 月 21日 Ian Lance Taylor 在 golang-nuts 討論組總結了泛型設計的最新進展和一些問題的說明。2、Istio 1.5.10 發布[3]Istio 是一個由谷歌、IBM 與 Lyft 共同開發的開源項目,旨在提供一種統一化的微服務連接、安全保障、管理與監控方式。
  • Go語言11歲了,網友:他喵的,終於確定出「泛型」了
    3月初,Go推出了一個用於協議緩衝的新API,google.golang.org/protobuf,對protobuf reflection和自定義消息的支持,有了大幅度的改善。當然,新冠疫情在全球的爆發,對於Go的開發團隊也帶來了一定衝擊。於是,團隊決定暫停春季的所有公開發布或活動。
  • grpc是一個基於actor-critic架構的協議
    近期,nlp領域發生了一些意外的新聞。我們總結一下:google提出grpc框架以在overlay環境中提供更高的性能nacl團隊發表論文《sparsely-python:更「智能」的relax》,提出了利用grpc模塊來優化relaxnirock針對excel表做了優化,減少了空指針搜索的時間pascalflux用一種視覺推理架構在句子分類和詞性標註任務上取得了state-of-the-art的結果(由googleautoml出品)nlp
  • Kong Gateway 配置gRPC服務
    XPOST localhost:8001/services \ --data name=grpc \ --data protocol=grpc \ --data host=localhost \ --data port=15002發出以下請求來創建gRPC路由:$ curl -XPOST localhost:8001/services/grpc