### 后臺知識儲備
一、開發語言
* GoLand(主要開發語言)
開發框架
* BeeGo(主要開發框架)
測試工具
* GO自動化測試
數據存儲(數據庫)
* Mysql
* Redis
* Mongodb
二、個人意見
### GoLand
*****
goland是一門年輕的語言,學過c、php、python的同學上手都是很快的,當然GO也是一門強類型語言了。先說下go和php的對比吧,首先從語言類型上區分,go是強類型語言php是弱類型語言,php做開發的時候不需要考慮變量的類型,變量聲明沒有使用,程序會正常使用,這是就比較浪費資源和性能了,寫出來的程序問題感覺明顯多,而go呢,就需要考慮變量類型,使用前變量是否聲明,變量聲明是否使用等等,go開發出來的程序問題明顯比php低而且程序很簡潔整體性能要比php好很多,go的神奇地方就在于自身攜帶高并發goroutine、鎖、通道,而且go本身可以進行程序測試,類庫也很多(雖然比python少很多,但也很強大)。so,個人覺得后臺開發語言可以擁抱GOLAND。
> GO語言目前也存在著問題
> 缺點1:缺少開發框架
> go目前的框架beego,它沒有php框架豐富ThinkPHP、Laravel、YI,這個問題也是go語言社區討論很激烈的問題,因為許多人認為我們不應該從使用框架開始
> 缺點2:錯誤處理
> Go 語言通過函數和預期的調用代碼簡單地返回錯誤(或返回調用堆棧)而幫助開發者處理編譯報錯。雖然這種方法是有效的,但很容易丟失錯誤發生的范圍,因此我們也很難向用戶提供有意義的錯誤信息。錯誤包(errors package)可以允許我們添加返回錯誤的上下文和堆棧追蹤而解決該問題
> 另一個問題是我們可能會忘記處理報錯。諸如 errcheck 和 megacheck 等靜態分析工具可以避免出現這些失誤。雖然這些解決方案十分有效,但可能并不是那么正確的方法。
> 缺點3:軟件包管理
> Go 語言的軟件包管理絕對不是完美的。默認情況下,它沒有辦法制定特定版本的依賴庫,也無法創建可復寫的 builds。相比之下 Python、Node 和 Ruby 都有更好的軟件包管理系統。然而通過正確的工具,Go 語言的軟件包管理也可以表現得不錯。
我們可以使用 Dep 來管理依賴項,它也能指定特定的軟件包版本。除此之外,我們還可以使用一個名為 VirtualGo 的開源工具,它能輕松地管理 Go 語言編寫的多個項目。
### Beego
*****
beego是go的web開發框框架,個人感覺它是結合了php框架ThinkPHP和Laravel兩個框架的特點,beego同樣支持Restful路由,當然這個框架上手也是非常快的,只要你會tp就行,框架的核心就是MVC,有興趣的同學可以拿GO自己寫一個MVC玩一玩。

bee的目錄結構感覺跟tp和laravel非常相似

### 數據庫
*****
后臺開發肯定少不了數據存儲,so,每個后臺開發成員要學會數據庫語法,現在三大主流數據庫mysql、redis、mongodb這三款數據庫也是公司使用最多的符合公司業務需求的
| 數據庫 | 類型 |讀寫速度|維護 |語法 |強項|弱項|
| --- | --- |--- |--- |--- |--- |--- |
| Mysql | 關系型 |慢(磁盤讀寫) |易 |需要掌握(程度) | 數據結構規律,支持事務操作 | 查詢速度慢,尤其海量數據的高效讀寫|
| Redis| 非關系性 |快 (內存讀寫) |不易 |需要掌握(程度) | 查詢速度快 | 數據無結構化 |
| Mongodb| 非關系型-文檔數據庫 |快 (內存讀寫) |不易 |需要掌握(程度) | 數據要求不嚴格,表結構可變,不用預先定義表結構 | 查詢性能不高,缺乏統一查詢語法|
數據庫語言除了基本的語法(curd)操作不僅要會,還需要后臺同學需要掌握mysql的字段類型字段長度等知識點,在項目開發過程中需要用到。這三種數據庫類型都有有點和缺點,根據公司的業務三種數據庫是配置開發,需要同學們都要掌握。(個人覺得三種數據庫sql語法基本都會,mysql的sql語法很多,自己目前可能知道的是一些皮毛)
### 個人意見
1.文檔記錄。其實,寫文檔早就要求了,自己執行力弱,沒有記錄這個也是自己要加強修改的點。列如:開發項目中難點解決后直接進行文檔記錄,避免以后遇到同樣問題進行進行大量查閱資料浪費時間,好記性不如爛筆頭嘛)
2.新語言開發項目,代碼規范可以后臺童鞋在一起商量一下怎么去規范,畢竟換新語言了,其實都是大同小異,我感覺規范指定一下,每個人心里都有一個標準。