go语言打造个人博客系统(一)
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语言打造个人博客系统(一)的更多相关文章
- go语言打造个人博客系统(二)
go语言打造个人博客系统(二) 在上篇文章go语言打造个人博客系统(一)中,我们了解了go语言的优点和go语言的数据库操作,本次我们会完成博客系统的后端开发. 博客系统后端接口开发 路由测试 ht ...
- spring-boot序章:打造博客系统
blog 使用spring-boot打造一个博客系统,在项目中学习! 项目功能 文章 游览 创建 编辑 删除 评论 用户 游客 注册用户 关注 被关注 后台统计 注册用户数 在线人数 文章总数 评论总 ...
- 如何快速部署国人开源的 Java 博客系统 Tale
除了闷头专研技术之外,程序员还需要不断地写作进行技术积累,写博客是其中最重要的方式之一.商业博客平台不少,但是更符合程序员背景的方案,是自己开发一个博客平台或者使用开源的博客平台. 开源的博客平台多如 ...
- Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)
#Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...
- 欢迎阅读daxnet的新博客:一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为"希赛网" ...
- 一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为“希赛网”)个人空间发布过一些 ...
- 【ASP.NET实战教程】基于ASP.NET技术下多用户博客系统全程实战开发(NNblog)
岁末主推:牛牛老师主讲,多用户博客系统,基于ASP.NET技术,年后将带来移动业务平台项目项目目标: 打造个性品牌Blogo,定制多用户博客 为每一个博客用户提供个性化的 blogo解决方案,打造精品 ...
- 基于Microsoft Azure、ASP.NET Core和Docker的博客系统
欢迎阅读daxnet的新博客:一个基于Microsoft Azure.ASP.NET Core和Docker的博客系统 2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客 ...
- 基于SAE+CodeIgniter3.0+管理端angularjs+前台amazeui的多用户博客系统V1.0--系统设计(一)
开发环境: 服务器系统:CentOS-6.x web服务器:Apache-2.2.x php版本:PHP-5.3.x 开发工具:sublime text 3 ,谷歌浏览器 数据库查询工具:phpmya ...
随机推荐
- 日志切割工具logrotate解决Tomcat catalina.out日志过大的问题
一.介绍日志切割logrotate 对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了 ...
- linux常用命令学习笔记
1.top命令 作用:该命令可以按CPU使用.内存使用和执行时间对任务进行排序,常用来监控系统中占用CPU或内存较高的程序及CPU和内存的负载. 默认视图: 当想看系统负载时,可观察汇总的%CPU中的 ...
- retry重试常见场景及实现
当我们的代码是有访问网络相关的操作时,比如http请求或者访问远程数据库,经常可能会发生一些错误,有些错误可能重新去发送请求就会成功,本文分析常见可能需要重试的场景,并最后给出python代码实现. ...
- 第5章 Linux上管理文件系统
5.1 机械硬盘 机械硬盘由多块盘片组成,它们都绕着主轴旋转.每块盘片上下方都有读写磁头悬浮在盘片上下方,它们与盘片的距离极小.在每次读写数据时盘片旋转,读写磁头被磁臂控制着不断的移动来读取其中的数据 ...
- Python之使用Pandas库实现MySQL数据库的读写
本次分享将介绍如何在Python中使用Pandas库实现MySQL数据库的读写.首先我们需要了解点ORM方面的知识. ORM技术 对象关系映射技术,即ORM(Object-Relational ...
- iconfont图标应用
一.什么是iconfont? 我们现在通常所指的iconfont,是用字体文件取代图片文件,来展示图标.特殊字体等元素的方法.iconfont是阿里巴巴矢量图标库是由阿里巴巴体验团队倾力打造的中国第一 ...
- AngularJS_自定义控件_笔记1
简介: 本篇博客是在学习AngularJS自定义控件的学习记录,作为一个学习示例... A-基本架构介绍 新建一个AngularJs的项目,大概项目结构如下: 项目结构: 大概是由:app.js,bo ...
- [转] javascript 保留两位小数 (且不四舍五入)
本文转自:https://blog.csdn.net/qq_40171039/article/details/79729503 保留两位小数且不四舍五入: 方法一: var a = 2.461; va ...
- EntityFramework(1)基础概念与Database First
基本概念 EntityFramework是微软推出的一款ORM工具,关于ORM的概念请参考博客https://www.cnblogs.com/huanhang/p/6054908.html.这篇文章对 ...
- Android Studio 使用Menu
首先在res目录下创建一个文件夹名字随意 在对创建的文件夹下在创建一个菜单 名字随意 参看布局 可以看到你的菜单 可以选择添加是么样的菜单 接着要到主活动中重写 onCreateOptionsMenu ...