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


为什么选择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)
  • 思路总结

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


go语言打造个人博客系统(一)的更多相关文章

  1. go语言打造个人博客系统(二)

    go语言打造个人博客系统(二)   在上篇文章go语言打造个人博客系统(一)中,我们了解了go语言的优点和go语言的数据库操作,本次我们会完成博客系统的后端开发. 博客系统后端接口开发 路由测试 ht ...

  2. spring-boot序章:打造博客系统

    blog 使用spring-boot打造一个博客系统,在项目中学习! 项目功能 文章 游览 创建 编辑 删除 评论 用户 游客 注册用户 关注 被关注 后台统计 注册用户数 在线人数 文章总数 评论总 ...

  3. 如何快速部署国人开源的 Java 博客系统 Tale

    除了闷头专研技术之外,程序员还需要不断地写作进行技术积累,写博客是其中最重要的方式之一.商业博客平台不少,但是更符合程序员背景的方案,是自己开发一个博客平台或者使用开源的博客平台. 开源的博客平台多如 ...

  4. Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)

    #Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...

  5. 欢迎阅读daxnet的新博客:一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为"希赛网" ...

  6. 一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为“希赛网”)个人空间发布过一些 ...

  7. 【ASP.NET实战教程】基于ASP.NET技术下多用户博客系统全程实战开发(NNblog)

    岁末主推:牛牛老师主讲,多用户博客系统,基于ASP.NET技术,年后将带来移动业务平台项目项目目标: 打造个性品牌Blogo,定制多用户博客 为每一个博客用户提供个性化的 blogo解决方案,打造精品 ...

  8. 基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    欢迎阅读daxnet的新博客:一个基于Microsoft Azure.ASP.NET Core和Docker的博客系统   2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客 ...

  9. 基于SAE+CodeIgniter3.0+管理端angularjs+前台amazeui的多用户博客系统V1.0--系统设计(一)

    开发环境: 服务器系统:CentOS-6.x web服务器:Apache-2.2.x php版本:PHP-5.3.x 开发工具:sublime text 3 ,谷歌浏览器 数据库查询工具:phpmya ...

随机推荐

  1. 怎么样使用CLion调试分析MySQL Server

    由于在写MySQL日志订阅服务时候,需要确定在什么event之后保存position,所以就开始研究MySQL的源码,刚开始采用最原始的打印输出的方式去调试,然后每次改完编译运行,效率好低,让我很绝望 ...

  2. python练习七—P2P下载

    最近有些事儿比较忙,python的学习就断断续续,这个练习来得比预期的晚,不过还好,不管做什么,我都希望能认真对待,认真做好每一件事. 引入 这个练习原书中称作“使用XML-RPC进行文件共享”,题目 ...

  3. 通过修改hosts解决gist.github.com无法访问的问题

    1.打开mac终端先ping一下 ping 192.30.253.119 如果能ping通的话 ,说明可以访问 2.修改hosts文件,添加如下语句: 192.30.253.118 gist.gith ...

  4. python理解描述符(descriptor)

    Descriptor基础 python中的描述符可以用来定义触发自动执行的代码,它像是一个对象属性操作(访问.赋值.删除)的代理类一样.前面介绍过的property是描述符的一种. 大致流程是这样的: ...

  5. Linux文件权限与属性详解 之 su & sudo

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  6. Markdown——入门使用

    一 Markdown是什么 markdown是一种纯文本格式的标记语言.通过简单的标记语法,它可以使普通文本具有一定的格式.markdown的语法十分简单,常用的也不过十来个,是一种轻量级的标记语言, ...

  7. 【转载】使用Jquery操作Cookie对象

    Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术.jQuery是一个封装好的JavaScript库,使用jQuery可以极大地简化了Java ...

  8. WPF 窗口

    在WPF中,经常需要对窗口进行设置,下面讲讲常用的几个设置. 窗口样式 1.无边框窗口 无边框透明窗体 设置 WindowStyle="None"--无边框,如果需要其它按钮,如缩 ...

  9. springMVC_11拦截器实现登录

    一.   思路 controller实现核对用户名和密码,如果核对正确则保存到session中并且跳转到主页 系统中包含诸多界面,部分界面不需要登录即可进行访问,通过拦截器实现判断是否是不需要登录的界 ...

  10. 什么是kibana?

    简介 Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作.您可以使用 Kibana 对 Elasticsearch ...