Golang周報第一期:gorm2、微服務優勢、好程式設計師

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

由於我們網站(程式設計師在囧途)主做Go技術棧條線課程,在學員的建議下決定做個golang周報。定期寫一些 golang相關知識點、好庫推薦和個人觀點的表達。希望大家喜歡,文風可能比較犀利,恐會引起不適。

每周不定期更新2篇左右。

一、GORM 發布2.0

看這裡https://gorm.io/zh_CN/docs/v2_release_note.html

國內的ORM有幾個,我個人用的最順手的是Gorm ,雖也有缺點,但是再漂亮的臉蛋上都可能有雀斑。關鍵是要順手,這裡希望gorm越做越好。不排除後面我們要針對gorm做個腳手架

當然,這裡需要說的是,做項目並不能過度依賴ORM。看到很多同學脫離ORM後一句稍微複雜的SQL都寫不出,這是不對的。

二、gopsutil 性能監控

用過python的同學可能會知道有一個庫: psutil 。提供了便利的方法獲取系統信息:如CPU,內存,磁碟,網絡等,還可以判斷進程是否存在、獲取進程列表、獲取進程詳細信息等 適合做一些諸如採集系統信息和監控的服務。

那麼Go也有一個性能不錯的的移植庫。https://github.com/shirou/gopsutil

三、關於GO處理浮點數精度問題

1、go有個第三方包deciaml https://github.com/shopspring/decimal

2、資料庫層面,如mysql,可以用mySQL的decimal類型。

不過有個缺陷,到了Go代碼層面,尤其是做一些rpc神馬的,沒有原生的decimal類型支持。 所以 可以考慮把價格欄位拆成 2個int 。一個存小數點左邊,一個存小數點右邊。 到了代碼層面都用 int就OK了

四、Go和java做微服務哪個更有優勢。

此問題來自群友提問。

幾年前 確實 有「java和Go」優勢不優勢的問題。現在已經進入雲原生的年代,那麼「」誰比誰好「」這件事是不存在的。

1)GO做微服務也可能用到java技術棧的 cloud 組件(如nacos、sentinel)

2)java做微服務 也可能用GO技術棧的cloud組件(如jaeger)。

關鍵的,這兩者都離不開docker、k8s, service mesh (這些大部分是Go的天下)

單純論 web框架,在不同領域和業務場景 確實有優勢不優勢之說。 譬如某java框架在社區上比某Go框架全且更強大。Go某框架在某些場景中,開發效率比java某框架高一些

但是在微服務角度,這兩者只有你儂我儂、你是老漢我推車,沒有互相傷害

五、關於「敏感詞過濾「

這是一個學員提出來的問題。 除了使用關鍵字 一個個替換還有啥辦法? 或者說算法嗎?

這裡稍稍提示下。 除了硬替換,比較常用的算法就是前綴樹 ,之前有個課程 我們講到過golang實現前綴樹的簡單做法

前綴樹 主要用在 框架的路由上 。譬如/service/user/list 和/service/user/detail .他們都有公共前綴 /service/user/ , 利用前綴樹查詢性能更高

敏感詞過濾也一樣,譬如 來自 日本/美食,/日本/蒼老師 。。。 你懂~~~

六、最後不忘宣傳下我們。

大約是兩年前正式開始做go技術棧課程,由於我們本身是軟體公司,因此很多時候的課程素材取自於實際項目,所以很少會按部就班的教學,這點敬請諒解。從最早的Go單框架課程到微服務,再到目前正在逐步進入go雲原生技術棧課程,越做越嗨。 Go的精髓在雲原生、中間件,web開發只是其中一個很小部分。

很多同學有個小誤區,一接觸新語言立刻就是想把它用來做門戶網站,做爬蟲(想一想python)。學習一個語言,首先要了解它的擅長點,技術棧的領域是什麼,然後選擇適合自己的方向扒了猛幹~~~~,同時還要不斷關注市場方向,很多技術棧也是在市場的演化中不斷進行調整,從而形成目前的領域。

這裡再次放出我們目前Go學習路線, http://b.jtthink.com/read.php?tid=564 (每個月都會有進化和調整) 。明年主要的路線進入雲原生方向,更偏向原理級,敬請期待~~~

另外,想做一個好程式設計師?

其實是沒有「最好的程式設計師」的,必須是一個「不斷進化的程式設計師」才是好程式設計師。

相關焦點

  • Go周報2:埠掃描、json瓶頸、slice修改、微服務
    由於我們網站(程式設計師在囧途)主做Go技術棧條線課程,在學員的建議下決定做個golang周報。定期寫一些 golang相關知識點、好庫推薦和個人觀點的表達。希望大家喜歡,文風可能比較犀利,恐會引起不適。 每周不定期更新2篇左右。
  • Golang周報第三期:版本升級、共享內存、獅子和老虎誰厲害
    第一期連接: 第二期連接: 今日是第三期 一、關於Go版本 截止到目前寫稿。 go 1.15系目前版本是到1.15.1 ,之前1.15.0 有人提交了個不大不小的BUG。 1.14版本也進入1.14.8 。
  • Golang周報第四期:泛型、領域驅動、人脈、grpc
    第一期: 第二期: 第三期:一 關於泛型 根據最新的草案,也許未來Go的泛型是這樣: func Echo[T any](s []T &34;) { … } 不過目測大家使用的goland又要升級一波了哦 另外,有條件的同學可以到 https://go2goplay.golang.org/ 去體驗 (不要問 「怎麼個有條件法」,你懂的)二、關於golang寫的web服務軟體類似
  • 好程式設計師雲計算培訓分享雲計算中微服務是什麼?
    好程式設計師雲計算培訓分享雲計算中微服務是什麼?微服務架構是一種架構模式,它提倡將單一應用程式劃分成一組小的服務,服務之間相互協調、互相配合,為用戶提供最終價值。每個服務運行在其獨立的進程中,服務和服務之間採用輕量級的通信機制相互溝通。
  • 程式設計師在囧途Golang進階版學習路線
    我們始終服務的是 段位: >入門 且 >=初級 <高級 認知:刻苦努力好學的同學們 我們的口號是:讓一部分人先學會golang 同時我們認為: 1、入門階段的語法完全可以自學或看其他平臺的視頻
  • 2020年的Java程式設計師面試三件套:多線程+算法+微服務
    Suspension模式——等我準備好哦」將介紹Guarded Suspension模式,即在實例進入目標狀態之前,防止線程繼續執行的模式。第2章:是針對微服務的設計理念進行整理,包括服務如何折分、前後端分離、CAP理論和CQRS等,是一個高層次的指導原則。
  • 研發周報第10期:如何創建比C語言更快的程式語言?
    消息中還提到,一直以來Go語言在FreeBSD, Linux, OS X等作業系統下得到了比較好的支持,剛剛發布的新版本將會正式支持Windows系統。主要新特性: 語言本身的變化。引入新類型:Unicode字符類型rune和error類型;引入append,close函數;引入 複合字面量(composite literal);引入多重賦值等。
  • 要上微服務,先考慮好這幾點再說
    今天一個朋友問我,我想做一個項目,兩年內做到1000w用戶量,並發數1000左右,需要用微服務嗎?最近不知道什麼時候,微服務一下火了起來,人人在說微服務,很多公司都在用微服務,今天就來討論一下,是所有項目都適合微服務嗎1.什麼是微服務微服務應該是從java那邊傳過來的,java的spring boot、dubbo,然後golang的go-micro,就連php也有了微服務
  • 程式設計師必備的15種微服務架構框架
    2019年有一個統計說,兩千家企業裡,45%在使用微服務,16%在實驗開發和測試微服務架構,24%在學習微服務準備轉型,只有剩下的15%的企業沒有使用微服務。 微服務到底有什麼好呢?微服務在2013年才被提出,短短幾年就有這麼快速的發展。
  • 程式設計師必備的15種微服務架構框架
    2019年有一個統計說,兩千家企業裡,45%在使用微服務,16%在實驗開發和測試微服務架構,24%在學習微服務準備轉型,只有剩下的15%的企業沒有使用微服務。微服務到底有什麼好呢?微服務在2013年才被提出,短短幾年就有這麼快速的發展。
  • 深入理解golang:內存分配原理
    內存分配之前,先了解下Linux系統內存相關的基礎知識,有助於理解golang內存分配原理。關鍵是需要程式設計師手動來分塊。這種技術有什麼問題呢?這種技術必須由程式設計師手工把一個大的程序劃分為若干個小的功能模塊,並確定各個模塊之間的調用關係。手工做這種事情很費時費力,使得編程複雜度增加。
  • 華爾街見聞:基於騰訊雲容器服務的微服務架構實踐
    旗艦產品華爾街見聞APP長期位居各應用市場財經資訊類客戶端第1位。由於將重大事件、市場的基本面變化和100多種全球資產價格緊密關聯,在金融領域具有極高滲透率。首創的7x24快訊模式已經成為在中文世界理解全球市場的最快來源。也因此,該產品有技術架構複雜,需要高並發承載能力等特性。
  • Alibaba微服務布道師傾心肛的:微服務架構實戰手冊
    與傳統的單一架構相比,微服務架構對團隊的組織架構、技術水平、運維能力等方面,都提出了更高的要求。如果沒有掌握得當的方法而生搬硬套,微服務架構只會適得其反---降低項目的開發效率。我們會從微服務開發、工具鏈、運維這三個角度,闡述微服務架構的實戰方案。讓我們嘗試親自動手,實現微服務架構的各個模塊。
  • 為什麼 Kubernetes 是微服務發展的必然產物?
    微服務彼此之間被獨立開發、部署、升級、擴容,真正實現了大型應用的解耦工作。關於微服務的介紹,大家可以去擼一下菜菜之前的文章:程式設計師修神之路--要想做好微服務架構,並非易事!!程式設計師修神之路--為什麼我會了SOA,你們還要逼我學微服務?
  • 不要再看視頻了,也只有這份文檔,能讓你快速掌握微服務體系
    最近這段時間,粉絲都是在問微服務架構的面試題怎麼答,所以就跟大家聊聊微服務架構微服務架構一躍成為 IT 領域炙手可熱的話題也就這兩年的事,大量一線網際網路公司因為龐大的業務體量和業務需求,紛紛投入了微服務架構的建設中,像阿里巴巴、百度、美團等大廠,很早就已經開始了微服務的實踐和應用。一線大廠的帶動,讓微服務成為了 Java 程式設計師面試的必備考點。其中是否具有 Spring Cloud 技術能力的程式設計師,也是企業招聘中影響薪資的核心要素之一。
  • 終於有人把MySQL微服務JvmNetty多線程給講明白了
    前言大家都知道,因為疫情的原因導致2020年特別的難,許多的程式設計師面臨著失業,找不到工作,都感覺特別的迷茫,不知道以後該何去何從。為此小編總結了幾個因素,為大家指點迷津:一:年齡,大家都知道程式設計師都是吃青春飯的,到了一定年齡之後,身體、精神、思想、心理都會發生相應的變化,逐漸走向安逸,不想做過多的改變,慢慢地面臨被裁的風險;二:技術,說到技術,技術更是企業和個人的核心競爭力,一旦落後,就會被狠心裁掉或者放養,所以你得不停的學習新技術,慢慢的擴展自己的技術深度和寬度,把自己的架構思維給培養起來
  • 看了這個鍵盤,你認為是什麼語言程式設計師?python程式設計師:不是我!
    從決定開始做程式設計師的那一刻,就註定了,今後的日子要與鍵盤長相廝守了,如果鍵盤是常年是嶄新的,那一定不是程式設計師的鍵盤,如果你是程式設計師,就很有可能從你的鍵盤上看到長期戰鬥的痕跡,這些痕跡往往是程式設計師常年鍾愛的哪些按鍵都被磨沒了,那麼程式設計師到底鍾愛哪些按鍵呢,有人說「;」鍵,也有人說「ctrl」,"
  • 微服務架構及設計模式還能這麼理解,不愧是阿里架構師
    如何能夠利用技術的變革,「多、快、好、省」地轉化為業務上的產出,這是一個值得思考的問題。市面上很少有資料能講清這些問題。以微服務架構為例,市面上關於微服務架構的資料有太多太多,但真正能系統的讓讀者對微服務架構腦子裡有一個很好的概念的資料並不多。
  • Go-Micro微服務入門(二):創建一個go-micro項目
    Go 1.11 Modules 官方說明文檔(https://github.com/golang/go/wiki/Modules)Protobuf3文檔(https://developers.google.cn/protocol-buffers/docs/proto3)micro中文文檔(https://micro.mu/docs/cn/index.html
  • 微服務架構在Kubernetes上的實現
    【編者的話】本文是微服務網格系列的第二部分,通過Kubernetes這個當前***的微服務部署平臺,來具體講解微服務的部署過程,讓用戶對微服務有具體認知,同時為後續結合Istio部署更複雜服務打下基礎。