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 ...
随机推荐
- leetcode — two-sum
package org.lep.leetcode.twosum; import java.util.Arrays; import java.util.HashMap; import java.util ...
- [机器学习]梯度提升决策树--GBDT
概述 GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由 ...
- spring-boot-2.0.3启动源码篇三 - run方法(二)之prepareEnvironment
前言 此系列是针对springboot的启动,旨在于和大家一起来看看springboot启动的过程中到底做了一些什么事.如果大家对springboot的源码有所研究,可以挑些自己感兴趣或者对自己有帮助 ...
- 2018 ACM-ICPC Asia Beijing Regional Contest (部分题解)
摘要 本文主要给出了2018 ACM-ICPC Asia Beijing Regional Contest的部分题解,意即熟悉区域赛题型,保持比赛感觉. Jin Yong’s Wukong Ranki ...
- 巨杉数据库完成C轮数千万美元融资
业界领先的金融级分布式数据库公司,巨杉数据库近日宣布完成由嘉实投资领投的C轮融资.本轮的领投方为嘉实投资,启明创投与DCM作为早期投资方跟投. SequoiaDB巨杉数据库成立6年来一直坚持技术驱动产 ...
- 【转载】使用Jquery操作Cookie对象
Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术.jQuery是一个封装好的JavaScript库,使用jQuery可以极大地简化了Java ...
- C#线程同步--限量使用
问题抽象:当某一资源同一时刻允许一定数量的线程使用的时候,需要有个机制来阻塞多余的线程,直到资源再次变得可用.线程同步方案:Semaphore.SemaphoreSlim.CountdownEvent ...
- Win10一周年纪念版,瞧一瞧Linux子系统
Bash Bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令.Bash还能从文件中读取命令,这样的文件称为脚本.和其他Unix shell 一样,它支持文件名替换(通配符匹配) ...
- mysql常用操作小节
比如要将表user 中的字段 username修改为 name: ); 其他关于表字段信息的修改: 1.添加字段:给表 user 添加字段 password 在 id 后面; ) NOT NULL A ...
- Netty实战十一之预置的ChannelHandler和编解码器
Netty为许多通用协议提供了编解码器和处理器,几乎可以开箱即用,这减少了你在那些相当繁琐的事务上本来会花费的时间与精力.我们将探讨这些工具以及它们所带来的好处,其中包括Netty对于SSL/TLS和 ...