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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CRM系统选择技巧,什么样的CRM系统好用?

SaaS行业发展迅速,更多的企业逐渐选择CRM管理系统。打开搜索引擎,有非常多的结果。怎样在数十万个搜索结果中选择适合您的CRM系统?下面我们将聊聊,怎样选择CRM系统。 第一步:明确自身需求 重要性:每家企业…

POJ1182 食物链(并查集)

题目展示 Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用…

【Linux】探索Linux进程状态 | 僵尸进程 | 孤儿进程

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 目录 一、进程状态1.1运行状态1.2阻塞状态1.3挂起状态 二、具体L…

在UE中使用Python设置枚举类属性值的问题

目标 在UE编辑器中使用Python设置枚举类属性值会遇到些问题,本篇记录了这些问题的解决方法。 1. 设置数值类属性值 先在编辑器中选择一个Actor,然后运行下面Python代码: actor unreal.EditorLevelLibrary.get_selected_level_actors()[0…

【JavaEE】线程池

作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…

2024年网络安全竞赛-Web安全应用

Web安全应用 (一)拓扑图 任务环境说明: 1.获取PHP的版本号作为Flag值提交;(例如:5.2.14) 2.获取MySQL数据库的版本号作为Flag值提交;(例如:5.0.22) 3.获取系统的内核版本号作为Flag值提交;(例如:2.6.18) 4.获取网站后台管理员admin用户的密码作为Flag值提交…

我的隐私计算学习——隐私集合求交(1)

笔记内容来自多本书籍、学术资料、白皮书及ChatGPT等工具,经由自己阅读后整理而成。 (一)PSI的介绍 隐私计算关键技术:隐私集合求交(PSI)原理介绍 隐私计算关键技术:隐私集合求交&#xff08…

【基于Flask、MySQL和Echarts的热门游戏数据可视化平台设计与实现】

基于Flask、MySQL和Echarts的热门游戏数据可视化平台设计与实现 前言数据获取与清洗数据集数据获取数据清洗 数据分析与可视化数据分析功能可视化功能 创新点结语 前言 随着游戏产业的蓬勃发展,了解游戏销售数据对于游戏从业者和游戏爱好者都至关重要。为了更好地分…

【Python数据结构与算法】—— 搜索算法 | 期末复习不挂科系列

​ 🌈个人主页: Aileen_0v0🔥系列专栏: 数据结构与算法💫个人格言:"没有罗马,那就自己创造罗马~" 这篇博客主要探索的是计算机科学常见问题---搜索算法 “时间紧,任务重!” 话不多说,开始今天…

高工氢电年会 | 未势能源解超朋博士受邀出席并做主题演讲

12月4日,以“战略重构 商业觉醒”为主题的2023高工氢电年会在深圳举办,未势能源副总裁解超朋博士受邀出席开幕式论坛,以《把握机遇、直面挑战,迎接氢车规模化推广时代》为主题发表演讲,并参与圆桌论坛研讨。 氢势已来&…

Linux系统中进程的背景(只从数据层面和硬件层面分析)

目录 1、冯诺依曼体系 2、管理的本质 3、 操作系统是如何对硬件进行管理的 4、 计算机的软硬件结构 5、 进程的组成 1、冯诺依曼体系 冯诺依曼是很早就提出的一个体系结构,他是将计算机分成五个部分,输入设备、输出设备、存储器、运算器和控制器。其中运…

Nature Communications 高时空分辨率的机器人传感系统及其在纹理识别方面的应用

前沿速览: 现有的触觉传感器虽然可以精确的检测压力、剪切力和应变等物理刺激,但还难以像人类手指一样通过滑动触摸,同时获取静态压力与高频振动来实现精确的纹理识别。为了解决这一问题,来自南方科技大学的郭传飞团队提出了衔接…

英伟达危机大爆发!一夜之间,四面楚歌

今年以来,AI大模型明争暗斗、百花齐放。 但不管各种大模型打的有多厉害,很多人都认为“卖铲子”的英伟达才是最大赢家。 看一下英伟达今年的股票就知道英伟达赚的是多么盆满钵满。 英伟达CEO黄仁勋在发布 H200显卡时,应该是今年最意气风发的…

Gan论文阅读笔记

GAN论文阅读笔记 2014年老论文了,主要记录一些重要的东西。论文链接如下: Generative Adversarial Nets (neurips.cc) 文章目录 GAN论文阅读笔记出发点创新点设计训练代码网络结构代码测试代码 出发点 Deep generative models have had less of an impac…

C/C++ 判断str1能不能由str2里面的字符构成,如果可以,返回true;否则,返回false

题目: 给两个字符串:str1和str2,判断str1能不能由str2里面的字符构成。 如果可以,返回true; 否则,返回false。 限制: str2 中的每个字符只能在str1中使用一次。 示例 1: 输入:str1 "a&q…

CSS3技巧36:让内容垂直居中的三种方式

让内容垂直居中,是一个很重要的应用情景,在很多场合都会需要。这也是面试的时候,一些考官喜欢拿来初面的小题目。 这里,小结下让内容垂直居中的三种方式。 当然,读者如果有更好的方法,也可以提出来。 基本…

使用Java实现汉诺塔问题

文章目录 汉诺塔问题 今天和大家来看看汉诺塔问题,这也是一个经典的算法 汉诺塔问题 分治算法经典问题:汉诺塔问题 汉诺塔的传说 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的…

面试必考精华版Leetcode875. 爱吃香蕉的珂珂

题目&#xff1a; 代码(首刷看解析&#xff09;&#xff1a; class Solution { public:int minEatingSpeed(vector<int>& piles, int h) {int low 1;int high 0;for(int pile:piles){highmax(high,pile);}int k high;while(low<high){int speed (high-low)/2l…

『 MySQL数据库 』聚合统计

文章目录 前言 &#x1f951;&#x1f95d; 聚合函数&#x1f353; COUNT( ) 查询数据数量&#x1f353; SUM( ) 查询数据总和&#x1f353; AVG( ) 查询数据平均值&#x1f353; MAX( ) 查询数据最大值&#x1f353; MIN( ) 查询数据最小值 &#x1f95d; 数据分组GROUP BY子句…

期待一下elasticsearch还未发布的8.12版本,由lucene底层带来的大幅度提升

现在是北京时间23年12月10日。当前es最新版本还是es8.11版本。我们可以期待一下不久的将来&#xff0c;es的8.12版本看到大幅度的检索性能提升。受益于 Lucene 9.9版本&#xff0c;内核带来的大幅提升&#xff01; 此次向量检索利用底层指令fma会性能提升5%。并且还提供了向量点…