天天看点

golang自学笔记整理day10 课上笔记内容回顾今日内容书籍管理的练习作业未来内容欢迎使用Markdown编辑器

这里写自定义目录标题

  • day10 课上笔记
  • 内容回顾
    • MySQL
      • database/sql
    • 作业
    • Redis
    • NSQ
      • nsqd
      • nsqlookupd
      • nsqadmin
  • 今日内容
    • go module
    • Gin框架
      • 下载Gin框架
      • Gin框架基本示例
      • RESTful API
      • Gin框架的渲染
        • JSON
        • HTML
        • XML
        • YAML
        • Protobuf
      • 参数解析
        • query string
        • form param
        • path param
  • 书籍管理的练习
        • 书籍的信息
      • Web页面版增删改查
    • 路由跳转
      • Gin路由
        • 路由的方法
      • 路由组
      • 路由的原理
      • Gin上传文件
        • 上传单个文件
        • 上传多个文件
  • 作业
  • 未来内容
  • 欢迎使用Markdown编辑器
    • 新的改变
    • 功能快捷键
    • 合理的创建标题,有助于目录的生成
    • 如何改变文本的样式
    • 插入链接与图片
    • 如何插入一段漂亮的代码片
    • 生成一个适合你的列表
    • 创建一个表格
      • 设定内容居中、居左、居右
      • SmartyPants
    • 创建一个自定义列表
    • 如何创建一个注脚
    • 注释也是必不可少的
    • KaTeX数学公式
    • 新的甘特图功能,丰富你的文章
    • UML 图表
    • FLowchart流程图
    • 导出与导入
      • 导出
      • 导入

day10 课上笔记

内容回顾

MySQL

database/sql

驱动:

// 只用到了它这个包里面的init()
import	_ "github.com/go-sql-driver/mysql"
           

sqlx

连接数据库

​ 设置最大连接数

​ 设置最大空闲连接数

查询单条

查询多条

执行SQL

事务

预处理

作业

create table userinfo(
 id bigint(20) not null auto_increment,
 username varchar(20) not null,
 password varchar(20) not null,
 primary key(id)
 )engine=innoDB default charset=utf8mb4;
           

具体代码详见课上笔记

day10/homework

Redis

Redis基本数据类型及命令、与生产环境的结合

go操作Redis

NSQ

安装和部署非常简单 、分布式、 消息队列

nsqd

nsqlookupd

nsqadmin

今日内容

go module

博客地址

知乎连接

Gin框架

下载失败设置一下这个代理:

要设置

GOPROXY

,必须先开启

GO111MODULE

SET GO111MODULE=on
           

设置代理:

SET GOPROXY=https://goproxy.cn
           

下载Gin框架

go get -u github.com/gin-gonic/gin
           

Gin框架基本示例

func indexHandler(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
		"msg": "这是index页面!",
	})
}
func main() {
	// 启动一个默认的路由
	router := gin.Default()
	// 给/hello配置一个处理函数
	router.GET("/hello", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"msg": "Hello 沙河!",
		})
	})

	router.GET("/index", indexHandler)
	// 启动webserver
	router.Run(":9090")
}
           

RESTful API

MVC架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gxlFeY1z-1585128858223)(D:\Go4期\day10\assets\1561263459176.png)]

前后端分离的架构

MVVM

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y3QcBOhn-1585128858226)(D:\Go4期\day10\assets\1561264028435.png)]

postman调试接口的工具

Gin框架的渲染

JSON

c.JSON(状态码,能够被JSON序列化的数据gin.H{})

HTML

c.HTML(状态码, 模板文件,数据)

加载模板文件的两个方法

r.LoadHTMLGlob("/模板文件存放的路径/*")
r.LoadHTMLGlob("/模板文件存放的路径/**/*")

r.LoadHTMLFiles("1.html", "2.html", ...)
           

加载静态文件

HTML里用到的CSS、JS、image等

XML

c.XML(状态码, 数据)

YAML

c.YAML(状态码,数据)

Protobuf

参数解析

query string

c.Query(“key”)
c.DefaultQuery(“key”, “默认值”)
           

form param

c.PostForm("key")
c.DefaultPostForm("key", “默认值”)
           

path param

url/:key1/:key2

c.Param("key")
           

书籍管理的练习

书籍的信息

​ id

​ 书名

​ 价格

Web页面版增删改查

增删改查

  1. 项目代码要分层

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wdw52j5U-1585128858228)(D:\Go4期\day10\assets\1561283524663.png)]

  2. 路由跳转
    1. HTTP跳转
      1. c.Redirect(状态码,"地址")

    2. 路由跳转
      1. 在具体的Handler之间跳转
        c.Request.URL.Path = "/book/list"
        r.HandleContext(c)
                   
    3. Gin取queryString、form表单、path param的方式
    4. template语法

路由跳转

  1. 路由跳转
    1. HTTP跳转
      1. c.Redirect(状态码,"地址")

    2. 路由跳转
      1. 在具体的Handler之间跳转
        c.Request.URL.Path = "/book/list"
        r.HandleContext(c)
                   

Gin路由

路由的方法

路由组

liveGroup := r.Group("/live")
{
    liveGroup.GET("/index", Handler)
    ...
}
           

路由的原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZkXXdW80-1585128858230)(D:\Go4期\day10\assets\1561285044515.png)]

Gin上传文件

上传单个文件

func uploadHandler(c *gin.Context){
	// 提取用户上传的文件
	fileObj,err := c.FormFile("filename")
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{
			"err": err,
		})
		return
	}
	// fileobj:上传的文件对象
	// fileobj.filename // 拿到上传文件的文件名
	filePath := fmt.Sprintf("./%s", fileObj.Filename)
	// 保存文件到本地的路径
	c.SaveUploadedFile(fileObj, filePath)
	c.JSON(http.StatusOK, gin.H{
		"msg": "OK",
	})
}
           

上传多个文件

func main() {
	router := gin.Default()
	// 处理multipart forms提交文件时默认的内存限制是32 MiB
	// 可以通过下面的方式修改
	// router.MaxMultipartMemory = 8 << 20  // 8 MiB
	router.POST("/upload", func(c *gin.Context) {
		// Multipart form
		form, _ := c.MultipartForm()
		files := form.File["file"]

		for index, file := range files {
			log.Println(file.Filename)
			dst := fmt.Sprintf("C:/tmp/%s_%d", file.Filename, index)
			// 上传文件到指定的目录
			c.SaveUploadedFile(file, dst)
		}
		c.JSON(http.StatusOK, gin.H{
			"message": fmt.Sprintf("%d files uploaded!", len(files)),
		})
	})
	router.Run()
}
           

作业

  1. 把BMS的增删查 自己写一遍
  2. 把编辑书籍的功能自己实现
  3. 难点:
    1. 第一次是GET请求,拿到一个页面,页面上有默认值
    2. 第二次点提交是发POST请求,在数据库更新数据之后要返回/book/list页面
  4. Blog项目
    1. 想一下表结构
      1. 用户
      2. 文章
      3. 评论
      4. 分类

未来内容

context

欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z

重做:Ctrl/Command + Y

加粗:Ctrl/Command + B

斜体:Ctrl/Command + I

标题:Ctrl/Command + Shift + H

无序列表:Ctrl/Command + Shift + U

有序列表:Ctrl/Command + Shift + O

检查列表:Ctrl/Command + Shift + C

插入代码:Ctrl/Command + Shift + K

插入链接:Ctrl/Command + Shift + L

插入图片:Ctrl/Command + Shift + G

查找:Ctrl/Command + F

替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。

输入2次#,并按下space后,将生成2级标题。

以此类推,我们支持6级标题。有助于使用

TOC

语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片:

golang自学笔记整理day10 课上笔记内容回顾今日内容书籍管理的练习作业未来内容欢迎使用Markdown编辑器

带尺寸的图片:

golang自学笔记整理day10 课上笔记内容回顾今日内容书籍管理的练习作业未来内容欢迎使用Markdown编辑器

居中的图片:

golang自学笔记整理day10 课上笔记内容回顾今日内容书籍管理的练习作业未来内容欢迎使用Markdown编辑器

居中并且带尺寸的图片:

golang自学笔记整理day10 课上笔记内容回顾今日内容书籍管理的练习作业未来内容欢迎使用Markdown编辑器

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的

代码片

.

// An highlighted block
var foo = 'bar';
           

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用

:---------:

居中

使用

:----------

居左

使用

----------:

居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks

'Isn't this fun?'

‘Isn’t this fun?’
Quotes

"Isn't this fun?"

“Isn’t this fun?”
Dashes

-- is en-dash, --- is em-dash

– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML。

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞​tz−1e−tdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

这将产生一个流程图。:

  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,

继续你的创作。

  1. mermaid语法说明 ↩︎
  2. 注脚的解释 ↩︎
go