比較好的開源go語言項目 gojs開源

golang 開源項目

這個項目可以理解為針對互聯(lián)網(wǎng)IT人打造的中文版awesome-go。已有的awesome-go項目, 匯總了很多go開源項目, 但存在的問題是收集太全了, 而且每個項目沒有詳細描述。

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領(lǐng)域包括:成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的上海網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

本項目作為awesome-go的一個擴展,根據(jù)go語言中文社區(qū)提供的資料,還有互聯(lián)網(wǎng)企業(yè)架構(gòu)設(shè)計中的常見組件分類, 共精心挑選了153個開源項目(項目不限于在github開源的項目), 分成以下17個大類。

項目初衷是幫助到那些想學習和借鑒優(yōu)秀golang開源項目, 和在互聯(lián)網(wǎng)架構(gòu)設(shè)計時期望快速尋找合適輪子的人。

ps: 以下項目 star數(shù)均大于100 ,且會定期檢查項目的url,剔除無效鏈接。 每個分類下的項目會按照 star數(shù)從高到低 進行排列。

2018.11月Go優(yōu)質(zhì)開源項目

項目描述:Build cross-platform modern desktop apps in Go + HTML5

項目描述:Pprof made easy at development time for Go

項目描述:ObjectBox Go - persisting your Go structs/objects superfast and simple

項目描述:Scan and analyze OSS dependencies and licenses from compiled Go binaries

項目描述:Fast thread-safe inmemory cache for big number of entries in Go

項目描述:Go library for building event-driven applications.

項目描述:high performance fixed decimal place math library for Go

項目描述:a tiny software that receive a smtp request (email) and send it to the specified webhook as a http post request

項目描述:Compile-time Dependency Injection for Go

項目描述:Go implementation of Linux Network Block Devices

項目描述:Go package for caching DNS lookup results in memory.

主頁地址:

項目描述:Go Firecracker SDK

項目描述:A standalone lightweight full-text search engine built on top of blevesearch and Go with multiple storage (scorch, boltdb, leveldb, badger)

主頁地址:

項目描述:Fast web fuzzer written in Go

項目描述:dogsled is a Go static analysis tool to find assignments/declarations with too many blank identifiers.

項目描述:go語言封裝的各種對稱加密和非對稱加密,可以直接使用,包括3重DES,AES的CBC和CTR模式,還有RSA非對稱加密,ECC橢圓曲線的加密和數(shù)字前面簽名

項目描述:Plugin-driven CLI utility for code generation using Go source as IDL

項目描述::books: 《青云QingCloud云計算入門 - 基于Go語言》青云直上·只上青云·云之基石·自由計算(還未啟動…)

主頁地址:

項目描述:Ja3 TLS Client Hello Hashes in Go

項目描述:Fast Golang PCAP Reader Benchmark Comparison

更多精彩內(nèi)容

golang有沒有好的開源游戲框架

為什么golang的開發(fā)效率高?/olgolang是一編譯型的強類型語言,它在開發(fā)上的高效率主要來自于后發(fā)優(yōu)勢,不用考慮舊有惡心的歷史,又有一個較高的工程視角。良好的避免了程序員因為“ { 需不需要獨占一行 ”這種革命問題打架,也解決了一部分趁編譯時間找產(chǎn)品妹妹搭訕的階級敵人。

它有自己的包管理機制,工具鏈成熟,從開發(fā)、調(diào)試到發(fā)布都很簡單方便;有反向接口、defer、coroutine等大量的syntactic sugar;編譯速度快,因為是強類型語言又有g(shù)c,只要通過編譯,非業(yè)務毛病就很少了;它在語法級別上支持了goroutine,這是大家說到最多的內(nèi)容,這里重點提一下。首先,coroutine并不稀罕,語言并不能超越硬件、操作系統(tǒng)實現(xiàn)神乎其神的功能。golang可以做到事情,其他語言也可以做到,譬如c++,在boost庫里面自己就有的coroutine實現(xiàn)(當然用起來跟其他boost庫一樣惡心)。golang做的事情,是把這一套東西的使用過程簡化了,并且提供了一套channel的通信模式,使得程序員可以忽略諸如死鎖等問題。

goroutine的目的是描述并發(fā)編程模型。并發(fā)與并行不同,它并不需要多核的硬件支持,它不是一種物理運行狀態(tài),而是一種程序邏輯流程。它的主要目的不是利用多核提高運行效率,而是提供一種更容易理解、不容易出錯的語言來描述問題。

實際上golang默認就是運行在單OS進程上面的,通過指定環(huán)境變量GOMAXPROCS才能轉(zhuǎn)身跑在多OS進程上面。有人提到了的pomelo,開源本來是一件很不錯的事情,但是基于自己對callback hell的偏見,我一直持有這種態(tài)度:敢用nodejs寫大規(guī)模游戲服務器的人,都是真正的勇士 : ) 。

2、Erlang與Golang的coroutine有啥區(qū)別,coroutine是啥?

coroutine本質(zhì)上是語言開發(fā)者自己實現(xiàn)的、處于user space內(nèi)的線程,無論是erlang、還是golang都是這樣。需要解決沒有時鐘中斷;碰著阻塞式i\o,整個進程都會被操作系統(tǒng)主動掛起;需要自己擁有調(diào)度控制能力(放在并行環(huán)境下面還是挺麻煩的一件事)等等問題。那為啥要廢老大的勁自己做一套線程放user space里面呢?并發(fā)是服務器語言必須要解決的問題;system space的進程還有線程調(diào)度都太慢了、占用的空間也太大了。把線程放到user space的可以避免了陷入system call進行上下文切換以及高速緩沖更新,線程本身以及切換等操作可以做得非常的輕量。這也就是golang這類語言反復提及的超高并發(fā)能力,分分鐘給你開上幾千個線程不費力。

不同的是,golang的并發(fā)調(diào)度在i/o等易發(fā)阻塞的時候才會發(fā)生,一般是內(nèi)封在庫函數(shù)內(nèi);erlang則更夸張,對每個coroutine維持一個計數(shù)器,常用語句都會導致這個計數(shù)器進行reduction,一旦到點,立即切換調(diào)度函數(shù)。

中斷介入程度的不同,導致erlang看上去擁有了preemptive scheduling的能力,而golang則是cooperative shceduling的。golang一旦寫出純計算死循環(huán),進程內(nèi)所有會話必死無疑;要有大計算量少i\o的函數(shù)還得自己主動叫runtime.Sched()來進行調(diào)度切換。

3、golang的運行效率怎么樣?

我是相當反感所謂的ping\pong式benchmark,運行效率需要放到具體的工作環(huán)境下面考慮。

首先,它再快也是快不過c的,畢竟底下做了那么多工作,又有調(diào)度,又有g(shù)c什么的。那為什么在那些benchmark里面,golang、nodejs、erlang的響應效率看上去那么優(yōu)秀呢,響應快,并發(fā)強?并發(fā)能力強的原因上面已經(jīng)提到了,響應快是因為大量非阻塞式i\o操作出現(xiàn)的原因。這一點c也可以做到,并且能力更強,但是得多寫不少優(yōu)質(zhì)代碼。

然后,針對游戲服務器這種高實時性的運行環(huán)境,GC所造成的跳幀問題確實比較麻煩,前面的大神 @達達 有比較詳細的論述和緩解方案,就不累述了 。隨著golang的持續(xù)開發(fā),相信應該會有非常大的改進。一是屏蔽內(nèi)存操作是現(xiàn)代語言的大勢所趨,它肯定是需要被實現(xiàn)的;二是GC算法已經(jīng)相當?shù)某墒欤拭忝銖姀娺^得去;三是可以通過incremental的操作來均攤cpu消耗。

用這一點點效率損失換取一個更高的生產(chǎn)能力是不是值得呢?我覺得是值得的,硬件已經(jīng)很便宜了,人生苦短,讓自己的生活更輕松一點吧: )。

4、基于以上的論述,我認為采用go進行小范圍的MMORPG開發(fā)是可行的。

分享文章:比較好的開源go語言項目 gojs開源
URL鏈接:http://muchs.cn/article34/ddihese.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT定制開發(fā)、關(guān)鍵詞優(yōu)化、建站公司、服務器托管、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)