美文网首页
go语言打造个人博客系统(一)

go语言打造个人博客系统(一)

作者: 柏链教育 | 来源:发表于2019-01-15 14:10 被阅读0次

    为什么选择go语言?

      听说go语言是在几年前,但真正深入了解他却是在2017年,因为当时作为讲师 ,需要准备go语言的课程,结果稍一接触立刻就喜欢上这门语言了,作为长期的c/c++程序员来说,10年来参加了很多大型项目,用c来开发确实很苦逼,所以碰到go语言时,发现真的能够上瘾,新生的语言肯定会把作者对之前各种语言的痛点体现出来,尤其还是肯-汤普森这样的大师。

    go语言的优点很多:

    • 代码很简洁
    • 上手很容易
    • 内存自回收
    • 运行很高效
    • 开发效率高
    • 风格很统一
    • 出身自名门

      这或许就是很多人选择go语言的原因吧,如果要做一个有后端的项目,相信go语言将成为很多程序员的首选吧。因为python,java等高级语言的优点,go都有,但是运行的效率更高。

    为什么开发博客?

      博客在早些年是比较火的,现在大多数程序员都养成了写博客的习惯。其实博客是一个非常典型的互联网应用,其中所用的最基本技术正是网络编程中使用到的,在开发过程中也可以了解到一些开发的细节,同时还有对时下比较火爆的头条,抖音等产品有更深刻的了解。

    开发需要准备什么?

      首选考虑数据存储,写好的博客需要存储起来,那么首先要有个数据库了,在这里我们选择MongoDB数据库,说到MongoDB,它的介绍很有意思,MongoDB是使用C++开发的一种分布式数据库,它是非关系型数据库中当中最像关系型的。使用MongoDB是因为它有一个document的概念,数据以文档的形式存储,当然也是key-value格式的。基于这样我们需要安装一个数据库,在linux平台安装非常简单。

    sudo apt-get install mongodb 
    

      数据库的问题解决后,还要准备什么呢?可以动手了,剩下的就是在go语言里怎么写http服务器了,在写之前最好了解一下http协议,不然有些事情还是无法完全掌控。

    go语言的数据库操作

    首先研究明白go语言当中如何操作MongoDB

    • gopkg.in/mgo.v2 安装
    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"})
    
    • 查询文档
      查询与其他接口略有区别在需要处理查询结果集,这在go语言中同样非常简单。
        //查询person
        p1 := Person{}
        //func (c *Collection) Find(query interface{}) *Query
        ps.Find(bson.M{"name": "yekai"}).One(&p1)
        fmt.Println(p1)   
    
    • 思路总结
    mongodb编程都在一张图了

      在了解了go语言的优点和go语言的数据库操作后,我们就可以开始个人博客系统的开发了,下次我们将分享这部分的内容。


    相关文章

      网友评论

          本文标题:go语言打造个人博客系统(一)

          本文链接:https://www.haomeiwen.com/subject/ycqydqtx.html