gin投票项目5

对应视频V3版本

1.优化用户注册的功能

增加扩展字段

1.增加一个UUID字段,vachar(50)。

2.增加一个UUID的唯一索引。

UUID具有全局唯一性;

方法:在数据库中新建一个列,名为uuid并移至主键下方,

建立uuid的唯一索引

image-20231128201711551

image-20231128201741487

使用UUID生成用户ID方法有很多

可能是基于随机数的,时间的,硬件地址的等等;

谷歌uuid的方法:生成的是string类型的

以后会使用雪花算法来优化

现在先演示谷歌的方式:

package main
import (
	"fmt"
	"github.com/google/uuid"
)
func GetUUID() string {
	id := uuid.New() // 默认V4版本
	fmt.Printf("uuid: %s, version: %s\n", id.String(), id.Version().String())
	return id.String()
}

测试:

image-20231128202827771

2.将所有数据库操作改造为原生SQL语句

为什么要用原生SQL

  1. 1.便于服务上线后,出现慢查询的时候进行排查。

  2. 2.简单业务场景下,原生SQL语句可以减少-次SQL语句Build的过程。 提高效率。

  3. 3.复查业务场景下, 原生SQL语句可以提高准确性,避免build的过程中,出现隐形BUG。

  4. 4.缺点就是需要多写一些代码。

    建议,能用原生SQL语句的地方尽量自己编写SQL语句。两个原因:
    1.对于业务的查询场景有一个清醒的认识。 便于后续的优化,排查,建索引等。
    2.提高自己SQL的能力。简单的SQL场景不去练习,是不可能写出来复查场景的SQL的。
    这些都是经历一个个BUG,迭代-个个业务场景 后的感受。

最重要原因:工作面试很大概率会让手写SQL语句。。。

什么是sql注入,应该怎么避免

SQL注入是一种常见的安全漏洞,它发生在应用程序未正确验证用户输入,并直接将用户提供的数据嵌入到SQL查询中。攻击者通过巧妙构造恶意输入,试图修改SQL查询的逻辑,从而执行非法的数据库操作。

避免:使用预编译语句使用参数化查询避免手动拼接SQL语句输入验证和过滤使用ORM框架

GORM有什么用

简要说一下,在gorm博客中我已经详细说明了

结构体映射: Gorm通过将Go语言中的结构体(Struct)映射到数据库表来工作。每个结构体代表数据库中的一个表,结构体的字段对应表中的列。

链式调用: Gorm的API设计采用了链式调用的方式,可以通过一系列的方法调用来构建查询语句。这种方式使得代码更具可读性和灵活性。

优势:提高了我们对数据库操作的便捷性

问题:降低了我们写sql的能力。。。所以简单的还是要自己写,锻炼能力;

3.将所有接口改造为RestFul接口

什么是RestFul接口?

一句话总结:本质上,把一切请求当作对一种资源的操作。有哪些操作:增删改查,也就是CURD。

常用动词

  • GET (SELECT) :从服务器取出资源(1项或多项)
  • POST (CREATE) :在服务器新建一个资源。
  • PUT (UPDATE) :在服务器更新资源(客户端提供改变后的完整资源)
  • PATCH (UPDATE) :在服务器更新资源(客户端提供改变的属性)。
  • DELETE (DELETE) :从服务器删除资源。

不常用

  • HEAD:获取资源的元数据。
  • OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

相关推荐

  1. <span style='color:red;'>git</span>-<span style='color:red;'>5</span>

    git-5

    2023-12-11 15:26:01      51 阅读
  2. <span style='color:red;'>5</span>.<span style='color:red;'>Git</span>

    5.Git

    2023-12-11 15:26:01      33 阅读
  3. go Gin项目实战

    2023-12-11 15:26:01       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-11 15:26:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-11 15:26:01       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-11 15:26:01       82 阅读
  4. Python语言-面向对象

    2023-12-11 15:26:01       91 阅读

热门阅读

  1. P5705 【深基2.例7】数字反转题解

    2023-12-11 15:26:01       53 阅读
  2. 2021NOC编程猫赛项-初赛模拟题

    2023-12-11 15:26:01       49 阅读
  3. 独孤思维:新平台拓展,第2天出单

    2023-12-11 15:26:01       50 阅读
  4. Leetcode 2963. Count the Number of Good Partitions

    2023-12-11 15:26:01       59 阅读
  5. 《C++新经典设计模式》之第16章 桥接模式

    2023-12-11 15:26:01       45 阅读
  6. 每日一练的那个习题为什么显示无权限啊?

    2023-12-11 15:26:01       49 阅读
  7. 信创运维产业的发展与趋势:IT管理的新视角

    2023-12-11 15:26:01       49 阅读