gin投票项目5

news2024/7/4 6:15:16

对应视频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:获取信息,关于资源的哪些属性是客户端可以改变的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1304812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CTF-misc(1)图片隐写

笔记目录 渗透测试工具(1)wireshark渗透测试工具(2)Nmap渗透测试工具(3)BurpsuiteAWD比赛(1)AWD入门攻略大纲CTF-Web(2)SQL注入CTF-Web(3)文件上传漏洞 图片隐写目录 (1)GIf和二维码隐写 二维码补全 二维码绘图 Gif规律分析 (2)文本附加图片隐写 (3)IHDR文件头修复图片宽高 (…

基于单片机智能视力保护台灯控制系统设计

**单片机设计介绍,基于单片机智能视力保护台灯控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机智能视力保护台灯控制系统是一种基于单片机技术的设备,在保证照明效果的同时&#xf…

企业API网关适用业务场景

什么是企业级API网关 企业级API网关是一种用于管理、保护和监控企业内部和外部API(Application Programming Interface)的解决方案。它提供了一套统一的接入点,帮助企业实现对API的安全性、流量控制、版本管理、监控和分析等方面的管理。企业…

STM32储存器和总线构架

一、引言 本篇文章旨在介绍STM32小容量、中容量和大容量的储存器和系统构架,文中涉及到一些专有名词和概念较为抽象和陌生,建议读者能够查阅相关资料和知识加深了解。 二、正文 (一)、系统构架 在小容量、中容量和 大容量产品中…

接口自动化测试之Yaml数据驱动封装!

一、数据驱动:pytest.mark.parametrize() 首先看个样本: import pytestclass TestData:# parametrize有两个值,一个是args_name:参数名,一个是args_value:参数值,可以有多个,进行数据解包# args_value可以…

Windows环境提示“‘mysql‘ 不是内部或外部命令,也不是可运行的程序或批处文理件” 简易记录

在Windows环境下使用DOS命令窗登入MYSQL,提示“mysql 不是内部或外部命令,也不是可运行的程序或批处理文件。” 这意味着系统无法找到 mysql.exe可执行文件,这是因为 MySQL 没有正确安装或未添加到系统PATH环境变量中所致。 处理方法&#x…

巧用ChatGPT系列丛书(由北京大学出版社出版)

前言 随着人工智能技术的迅速发展,越来越多的工具和应用程序被应用于职场中,以提高我们的工作效率。其中,ChatGPT作为一种先进的自然语言处理技术,正在逐渐引起人们的关注。 ✨巧用ChatGPT系列书籍: 《巧用chatGPT快…

文献速递:PET-影像组学专题--临床上在乳腺癌方面PET-MRI的进展

文献速递:PET-影像组学专题–临床上在乳腺癌方面PET-MRI的进展 01 文献速递介绍 成像在乳腺癌的筛查、诊断、分期和管理中扮演着关键角色。乳房X线摄影(mammography)、超声检查和动态增强乳腺MRI是主要的乳腺癌成像方法。对于怀疑或已知有…

【教程】开始使用ipaguard进行代码加固混淆

目录 前言 下载ipa代码混淆保护工具 获取ipaguard登录码 代码混淆 文件混淆 IPA重签名与安装测试 前言 iOS加固保护是直接针对ios ipa二进制文件的保护技术,可以对iOS APP中的可执行文件进行深度混淆、加密。使用任何工具都无法逆向、破解还原源文件。对APP进…

mysql数据恢复

使用MySQL第三方工具binlog2sql binlog2sql,一款基于python开发的开源工具,是由大众点评团队的DBA使用python开发出来的,从MySQL binlog解析出你要的SQL。根据不同选项,你可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等。其功…

《Vue.js设计与实现》—Vue3响应系统的原理

一、响应式数据与副作用函数 1. 副作用函数 1-1 指令材料 在JavaScript中,副作用函数是指在执行过程中对外部环境产生可观察的变化或影响的函数。这种函数通常会修改全局变量、修改传入的参数、执行I/O操作(如读写文件或发送网络请求)、修…

Dockerfile创建镜像LNMP+WordPress

实验部署 INMPwordpress nginx 172.111.0.10 docker-nginx mysql 172.111.0.20 docker-mysql php 172.111.0.30 docker-php nginx 关闭防火墙和安全机制在opt目录创建nginx MySQL php目录 cd nginx mysql php vim Dockerfile#声明基础镜像 FROM centos:7 #安装依赖环境 R…

Datawhale 12月组队学习 leetcode基础 day1 枚举

这是一个新的专栏,主要是一些算法的基础,对想要刷leedcode的同学会有一定的帮助,如果在算法学习中遇到了问题,也可以直接评论或者私信博主,一定倾囊相助 进入正题,今天咱们要说的枚举算法,这是个…

NGINX高性能服务器与关键概念解析

目录 1 NGINX简介2 NGINX的特性3 正向代理4 反向代理5 负载均衡6 动静分离7 高可用8 结语 1 NGINX简介 NGINX(“engine x”)在网络服务器和代理服务器领域备受推崇。作为一款高性能的 HTTP 和反向代理服务器,它以轻量级、高并发处理能力以及…

供配电运维智能监控系统

供配电运维智能监控系统是一种针对供配电系统的智能监控设备,依托电易云-智慧电力物联网,旨在实现对供配电系统的实时监控、数据记录和分析,以及异常预警和故障检测等功能,以提高供配电系统的可靠性和稳定性。 该系统通常由以下部…

WhatsApp全球获客怎么做?

一、导语 随着全球数字化趋势的加速,WhatsApp作为一种即时通讯工具,已经成为了连接全球用户的桥梁。 对于企业和营销人员来说,利用WhatsApp拓展全球业务是一种非常有效的策略,本文将为您揭示WhatsApp全球获客的秘密,…

【小尘送书-第十三期】Python从入门到精通(第3版)(软件开发视频大讲堂)

大家好,我是小尘,欢迎你的关注!大家可以一起交流学习!欢迎大家在CSDN后台私信我!一起讨论学习,讨论如何找到满意的工作! 👨‍💻博主主页:小尘要自信 &#x1…

python:六种算法(RFO、SSA、WOA、GWO、PSO、GA)求解23个测试函数(python代码)

一、六种算法简介 1、红狐优化算法RFO 2、麻雀搜索算法SSA 3、鲸鱼优化算法WOA 4、灰狼优化算法GWO 5、粒子群优化算法PSO 6、遗传算法GA 二、6种算法求解23个函数 (1)23个函数简介 参考文献: [1] Yao X, Liu Y, Lin G M. Evolution…

简单了解RNN循环神经网络

为什么需要RNN(循环神经网络) 将神经网络模型训练好之后,在输入层给定一个x,通过网络之后就能够在输出层得到特定的y,那么既然有了这么强大的模型,为什么还需要RNN(循环神经网络)呢…

资深测试总结,性能测试目的如何做?主要看什么指标?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、性能测试是什么…