據說go語言是在幾年前,但真正深刻了解他倒是在2017年,由於當時做爲講師 ,須要準備go語言的課程,結果稍一接觸馬上就喜歡上這門語言了,做爲長期的c/c++程序員來講,10年來參加了不少大型項目,用c來開發確實很苦逼,因此碰到go語言時,發現真的可以上癮,新生的語言確定會把做者對以前各類語言的痛點體現出來,尤爲仍是肯-湯普森這樣的大師。java
go語言的優勢不少:python
這或許就是不少人選擇go語言的緣由吧,若是要作一個有後端的項目,相信go語言將成爲不少程序員的首選吧。由於python,java等高級語言的優勢,go都有,可是運行的效率更高。linux
博客在早些年是比較火的,如今大多數程序員都養成了寫博客的習慣。其實博客是一個很是典型的互聯網應用,其中所用的最基本技術正是網絡編程中使用到的,在開發過程當中也能夠了解到一些開發的細節,同時還有對時下比較火爆的頭條,抖音等產品有更深入的瞭解。c++
首選考慮數據存儲,寫好的博客須要存儲起來,那麼首先要有個數據庫了,在這裏咱們選擇MongoDB數據庫,說到MongoDB,它的介紹頗有意思,MongoDB是使用C++開發的一種分佈式數據庫,它是非關係型數據庫中當中最像關係型的。使用MongoDB是由於它有一個document的概念,數據以文檔的形式存儲,固然也是key-value格式的。基於這樣咱們須要安裝一個數據庫,在linux平臺安裝很是簡單。程序員
sudo apt-get install mongodb
數據庫的問題解決後,還要準備什麼呢?能夠動手了,剩下的就是在go語言裏怎麼寫http服務器了,在寫以前最好了解一下http協議,否則有些事情仍是沒法徹底掌控。mongodb
首先研究明白go語言當中如何操做MongoDB數據庫
go get -u gopkg.in/mgo.v2/bson
type Mongo struct { Session *mgo.Session } func (m *Mongo) Connect(url string) { session, err := mgo.Dial(url) if err != nil { panic(err) } m.Session = session }
文檔是MongoDB的核心構成,MongoDB編程基本上就是圍繞文檔進行增刪改查操做。編程
type Person struct { Name string Age int } tabName := "person" ps := sess.DB("myblog").C(tabName)
文檔構造好以後,就能夠基於這個文檔進行增刪改查操做了後端
//添加一個perso //func (c *Collection) Insert(docs ...interface{}) error err = ps.Insert(&Person{"yekai", 30}) if err != nil { panic(err) }
//修改person //func (c *Collection) Update(selector interface{}, update interface{}) error err = ps.Update(bson.M{"name": "yekai"}, bson.M{"name": "yekai", "age": 35}) if err != nil { panic(err) }
//刪除所有紀錄 //(c *Collection) RemoveAll(selector interface{}) (info *ChangeInfo, err error) ps.RemoveAll(bson.M{"name": "yekai"})
//查詢person p1 := Person{} //func (c *Collection) Find(query interface{}) *Query ps.Find(bson.M{"name": "yekai"}).One(&p1) fmt.Println(p1)
在瞭解了go語言的優勢和go語言的數據庫操做後,咱們就能夠開始我的博客系統的開發了,下次咱們將分享這部分的內容。服務器