使用go語言開發的一個非同步伺服器
大約是2016年7月,我開始學習go語言開發。
目標是開發自己的伺服器,從哪裡入手呢?
想找一個伺服器程式碼來學習如何使用go語言寫伺服器,畢竟我是搞後臺的。但是我搜索了一番,沒有找到一個像樣的,比較多的資料是go 語言的web程式設計,當然了,有幾本這樣的書了。有的都是些東拼西湊的東西,根本跑不起來。
看了一些大牛錄製的go語言視訊,算是快速入門。把go語言拿來學習了2周,看了一些其他人的程式碼,
學得差不多了,就動手搞吧。
我之前的經歷對於c++的高效能非同步框架非常的熱衷,所以決定使用go語言實現一個非同步的基於socket的後臺svr框架。
寫了大概2個月,最終通過幾次改版,形成了可以使用的socket的框架。自己編寫了幾個實際的伺服器,執行效果不錯。
今天把他弄到了github上,大家可以拍磚
此伺服器程式碼有幾大特點:
1. 程式碼自動生成,增加協議,只需要實現協議的handle
2. 採用反射的機制,只需要註冊命令號與處理此命令號的handler。開發快速,簡單可靠
3. 引入自動化測試例子
我後面還加入了grpc框架的版本。後面有時間整理一下,也放上來。
相關推薦
使用go語言開發的一個非同步伺服器
大約是2016年7月,我開始學習go語言開發。目標是開發自己的伺服器,從哪裡入手呢?想找一個伺服器程式碼來學習如何使用go語言寫伺服器,畢竟我是搞後臺的。但是我搜索了一番,沒有找到一個像樣的,比較多的資料是go 語言的web程式設計,當然了,有幾本這樣的書了。有的都是些東拼西
使用Sublime text 3打造一個小巧但強大的Go語言開發IDE
details 交叉 download print please 建議 手動安裝 ida 裏的 版權聲明:歡迎轉載,轉載請註明出處! https://blog.csdn.net/iTaacy/article/details/76716049 使用Sublime tex
go 語言實現一個簡單的 web 伺服器
學習Go語言的一些感受,不一定準確。假如發生戰爭,JAVA一般都是充當航母戰鬥群的角色。一旦出動,就是護衛艦、巡洋艦、航母艦載機、預警機、電子戰飛機、潛艇等等浩浩蕩蕩,殺將過去。(JVM,數十個JAR包,Tomcat中介軟體,SSH框架,各種配置檔案...天生就是重量級的,
[計網] 用python語言開發一個簡單的web伺服器和客戶端
伺服器: 當客戶聯絡時建立一個連線套接字 從這個連線接收HTTP請求(*) 解釋該請求所請求的特定檔案 從伺服器的檔案系統獲取該檔案 併發送檔案內容
CentOS6.8配置GO語言開發環境
應用程序 編程語言 處理器 谷歌 export 導讀Go語言是谷歌2009發布的第二款開源編程語言,Go語言專門針對多處理器系統應用程序的編程進行了優化,使用Go編譯的程序可以媲美C或C++代碼的速度,而且更加安全、支持並行進程。 鑒於越來越多的開源項目都采用Go為開發語言,本文介紹Lin
Go語言建立一個最簡單的服務端點
一個 nds Coding port struct pac quest com handler handlers/handlers.go package handlers import ( "encoding/json" "net/http" )
Go語言開發教程
googl lang 學習 概念 一個 人員 不能 環境安裝 服務 Go語言簡述興起:2009年Gogle發布的第二款開源編程語言特征:語法簡單:語法標準比較嚴格,適合開發人員短時間高效的服務端開發。並發模型:Goroutine是Go最顯著的特征,使用類協程的方式來處理並發
Go語言開發(一)、Go語言簡介
Go語言 簡介Go語言開發(一)、Go語言簡介 一、Go語言簡介 1、Go語言簡介 Go,全稱golang,是Google開發的一種靜態強類型、編譯型、並發型並具有垃圾回收功能的編程語言。 Go從2007年末由Robert Griesemer、Rob Pike、Ken Thompson(C語言發明者)主持開發
Go語言開發(二)、Go語言基礎
Go 語言 基礎 Go語言開發(二)、Go語言基礎 一、Go語言程序結構 Go語言程序基本結構如下:A、包聲明B、引入包C、函數D、變量E、語句 & 表達式F、註釋 package main //包聲明 import "fmt" //引入包 func main(){ //main函數
Go語言開發(三)、Go語言內置容器
第一個 支持 指向 ice 美國 p值 索引 叠代 指定大小 Go語言開發(三)、Go語言內置容器 一、Go語言數組 1、Go語言數組簡介 Go語言提供了數組類型的數據結構。數組是具有相同唯一類型的一組已編號且長度固定的數據項序列,類型可以是任意的原始類型例如×××、字符串
Go語言開發(四)、Go語言面向對象
name value code 對象 struct int() 初始 每一個 method Go語言開發(四)、Go語言面向對象 一、結構體和方法 1、結構體的定義 在結構體中可以為不同項定義不同的數據類型。結構體是由一系列具有相同類型或不同類型的數據構成的數據集合。結構體
Go語言開發(五)、Go語言面向接口
table ons 推導 arr ado default 被調用 等等 相關 Go語言開發(五)、Go語言面向接口 一、Duck Typing簡介 1、Duck Typing簡介 對於一門強類型的靜態語言來說,要想通過運行時多態來隔離變化,多個實現類就必須屬於同一類型體系,
Go語言開發(六)、Go語言閉包
技術 iad 調用 導致 nil \n 整體 不支持 變化 Go語言開發(六)、Go語言閉包 一、函數式編程 1、函數式編程簡介 函數式編程是一種編程模型,將計算機運算看作是數學中函數的計算,並且避免了狀態以及變量的概念。在面向對象思想產生前,函數式編程已經有數十年的歷史。
Go語言開發(七)、Go語言錯誤處理
pro package error 先進後出 goroutin cee 錯誤處理機制 避免 而是 Go語言開發(七)、Go語言錯誤處理 一、defer延遲函數 1、defer延遲函數簡介 defer在聲明時不會立即執行,而是在函數return後,再按照FILO(先進後出)的
windows下用sublime Text搭建go語言開發環境
使用 oot 輸出結果 test 格式 關於 .net 路徑 開發環境 1.安裝go 進入go 中文網:https://studygolang.com/dl 下載後安裝即可,有博客說以這種方式安裝go是不需要設置環境變量的(因為已經自動設置了),但經過嘗試發現這樣不行(設置
使用 Go 語言開發大型 MMORPG 遊戲服務器怎麽樣?(非常穩定、捕獲所有異常、非常適合從頭開始,但大公司已經有現成的C++框架、所以不會使用)
hive 有效 筆記 序列 優勢 nal 授權 登陸 RR 使用 Go 語言開發大型 MMORPG 遊戲服務器怎麽樣?和C Socket服務器比起來有什麽優劣?可行性怎麽樣? 從2013年起,經朋友推薦開始用Golang編寫遊戲登陸服務器, 配合C++做第三方平臺
Go語言開發(九)、Go語言並發編程
col 計數器 yield res 兩個 -c time 放心 還在 Go語言開發(九)、Go語言並發編程 一、goroutine簡介 1、並發與並行簡介 並行(parallel):指在同一時刻,有多條指令在多個處理器上同時執行。並發(concurrency):指在同一時刻
Go語言開發學習教程
教程 學習 cto 性能 開發 語言 內置 程序 com Go語言開發學習教程 Go語言開發學習教程目錄如下: Go語言開發(一)、Go語言簡介http://blog.51cto.com/9291927/2126775Go語言開發(二)、Go語言基礎http://blog.
Go語言開發中MongoDB數據庫
urn import l數據庫 pkg selector 關系 示例 nec UNC 伴隨著移動端的興起,Nosql數據庫以其分布式設計和高性能等特點得到了廣泛的應該用,下面將介紹下Nosql中的mongoDB在Go語言中的應用,在開發前,有必要了解下基礎知識,mongo數
Go語言開發(十)、GoLand常用快捷鍵
查看源 關閉 打開文件 pro term 分享圖片 編輯模式 ctrl+h col Go語言開發(十)、GoLand常用快捷鍵 一、Goland快捷鍵設置 GoLand支持各種編輯器的快捷鍵映射:File->Settings->Keymap 二、GoLand