gin, gorm快速入门

news/2024/11/29 22:49:18/文章来源:https://www.cnblogs.com/Capooooo/p/18577749

Gin

Gin入门

gin的学习要点

  • 如何定义路由:包括参数路由、通配符路由
  • 如何处理输入输出
  • 如何使用middleware解决AOP问题

image-20241124165732049

  • 在 Gin 里面,用 Engine 来监听一个端口,是一个逻辑上的服务器。
  • 一个 Go 进程可以创建多个 Engine。
  • hello, world 使用步骤:
    • 在应用中引入 Gin 依赖:go get github.com/gin-gonic/gin@latest
    • 初始化一个 Engine
    • 调用 Run 监听端口 8080,并且启动

gin.Engine

  • 在gin里,一个web服务器被抽象成 Engine。
  • 你可以在一个应用里面创建多个 Engine实例,监听不同的端口。
  • Engine 承担了路由注册、接入 middleware 的核心职责。

gin.Context

  • gin.Context 是 gin 里面的核心类型。应该说,你日常最经常的就是和它打交道。
  • 它的字面意思就是“上下文”,在 Gin 里面,它的核心职责是:
    • 处理请求
    • 返回响应
  • 下图中的 Request 代表的就是请求,Writer代表的就是响应。

image-20241124170351891

gin 路由

  • 静态路由:完全匹配的路由,也就是前面我们注册的 hello 的路由。
  • 参数路由:在路径中带上了参数的路由。
  • 通配符路由:任意匹配的路由。

image-20241124170458363

gin面试题

  • 什么是gin的middle?能用来解决什么问题?
  • 什么是跨域问题,怎么解决?
  • 跨域问题需要设置哪些头部?

在gin面试的时候,可以考虑提起自己研发了一个强大的gin插件库

Gorm

  • Gorm是什么?Grom是一个 go 语言的 ORM 框架,性能优秀,简单易用
  • Gorm功能:
    • 支持多种数据库,包括 Mysql、PostgreSql。
    • 支持简单查询,支持事务,也支持关联关系。
    • 支持钩子
    • 支持自动迁移工具。

Gorm快速入门

  • 安装
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite
  • 快速入门
package mainimport ("gorm.io/gorm""gorm.io/driver/sqlite"
)type Product struct {gorm.ModelCode  stringPrice uint
}func main() {db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})if err != nil {panic("failed to connect database")}// 迁移 schemadb.AutoMigrate(&Product{})// Createdb.Create(&Product{Code: "D42", Price: 100})// Readvar product Productdb.First(&product, 1) // 根据整型主键查找db.First(&product, "code = ?", "D42") // 查找 code 字段值为 D42 的记录// Update - 将 product 的 price 更新为 200db.Model(&product).Update("Price", 200)// Update - 更新多个字段db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // 仅更新非零值字段db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})// Delete - 删除 productdb.Delete(&product, 1)
}

BCrypt加密

bcrypt 是一个号称最安全的加密算法。

优点:

  • 不需要自己生成盐值
  • 不需要额外存储盐值
  • 可以通过控制 cost 来控制加密的性能
  • 同样的文本,加密的结果不同

bcrypt限制密码长度不能超过72字节

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20222424 2021-2022-2 《网络与系统攻防技术》实验七实验报告

20222424 2021-2022-2 《网络与系统攻防技术》实验七实验报告 1.实验内容 1.1本周学习内容Web安全基础/前后端 SQL注入原理 XSS脚本攻击 CSRF漏洞1.2实验内容及要求 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有 (1)简单应用SET…

【探讨】批量操作以及多线程下保证事务的一致性

1 前言 假如给你一个场景,有一批1万或者10万的数据,让你插入到数据库中怎么做呢?我们这节来看看。 首先一点我们单纯的 一个个 INSERT 语句,我们就不试了,这一个个的肯定慢,我们这里统一用 INSERT INTO 表(字段1,字段2) VALUES(值1,值2),(值11,值22),(值111,值222);…

Windows mstsc 远程桌面链接 ubuntu 18.04 远程图形桌面

前言全局说明通常情况下,管理 Ubuntu 服务器都是用命令行界面,但某些时候,可能会用到图形界面。2204安装方法:https://www.cnblogs.com/wutou/p/18430133 命令行安装图形界面:https://www.cnblogs.com/wutou/p/18572907一、说明 环境: Ubuntu 18.04.6 LTS (Linux qt-vm 5…

[杂题]2024.9~2024.11 杂题总结

[杂题]2024.9~2024.11 杂题总结 题目做多了,不总结,和没做是一样的。 ARC061B 挺好的一道题。观察到三个不好做,我们想能否搞成一个牌堆去取。发现显然是可以的,我们只需要知道一个确定的取出来牌的编号序列,必然可以确定三者的牌堆分别是什么。 所以,问题转换成了:有多…

E. Photoshoot for Gorillas(Codeforces Round 966 (Div. 3))

https://codeforces.com/contest/2000/problem/E 题目描述 你非常喜欢屮大猩猩,于是你决定为它们组织一次拍摄活动。大猩猩生活在丛林中,丛林被表示为一个有 n 行 m 列的网格,有 w 个大猩猩同意参与拍摄,第 i 个大猩猩的身高ai .你希望将所有大猩猩放置在网格的单元格中,并…

windows版lammps的安装和计算

1.安装:详情见:https://mp.weixin.qq.com/s/xwx0c2ATNM0pphaHwDLkmQ 2.提交计算task的命令: mpiexec -np 4 lmp -in xxx.in #其中xxx.in表示in文件的名称,详情见 https://mp.weixin.qq.com/s/i6fa7xTKjlgSirPm0cj_4w 3.将MS的car和mdf文件导出data文件的方法:(命令…

第三十八讲:自增主键为什么不是连续的

你现在可以不懂,但以后面试的时候,必须要知道的三个关于自增主键的点 第一:唯一键冲突和事务回滚是导致自增主键不连续的两种大原因,此外批量插入数据的语句,MySQL 批量申请自增 id 的策略也是一个隐藏原因 第二:MySQL设计中不允许自增值回退的原因,主要是为了提升性能还…

NOIP 2024 退役记

人生有梦,各自精彩。Day -??? 摆疯了,啥也没复习,猫国建设者真好玩。 Day 0 昨晚回家结果摆到两点,感觉要在 noip 考场上睡着了/shui。早上没起来,迟到了/kk。 上午没怎么复习,摆摆摆,哎哎哎。 中午疯狂看小说,败犬太好看辣! 下午出发淄博。路上一直在睡觉,后悔没…

MySQL底层概述—4.InnoDB数据文件

大纲 1.表空间文件结构 (1)表空间Tablesapce (2)段Segment (3)区Extend (4)页Page (5)行Row 2.Page结构 (1)页结构各部分说明 (2)页结构整体划分 3.行记录格式 (1)行格式分类 (2)COMPACT行记录格式 (3)Compact中的行溢出机制 (4)其他行格式记录1.表空间文件结构 (1)表空间Table…

gin

Gin Gin入门 gin的学习要点如何定义路由:包括参数路由、通配符路由 如何处理输入输出 如何使用middleware解决AOP问题在 Gin 里面,用 Engine 来监听一个端口,是一个逻辑上的服务器。 一个 Go 进程可以创建多个 Engine。 hello, world 使用步骤:在应用中引入 Gin 依赖:go g…

MySQL底层概述—3.InnoDB线程模型

大纲 1.InnoDB的线程模型 2.IO Thread 3.Purge Thread 4.Page Cleaner Thread 5.Master Thread1.InnoDB的线程模型 InnoDB存储引擎是多线程的模型,因此其后台有多个不同的后台线程,负责处理不同的任务。后台线程的作用一:负责刷新内存池中的数据,保证缓冲池中的内存缓存是最…

20222427 2024-2025-1 《网络与系统攻防技术》实验七实验报告

1.实验内容 1.1 本周学习内容本周学习了有关Web安全的相关知识,复习了一些有关于Web的基础知识,比如:前、后端的定义,以及在前后端各自使用的语言,如:html、css、JS(前端);C/C++、Python、Java、Go、Php(后端)等。学习了有关于数据库攻击的一些基本操作,如:SQL注入…