百万级并发IM即时消息系统(2)

news/2024/11/28 19:48:17/

1.用户model


type UserBasic struct {gorm.ModelName          stringPassWord      stringPhone         string `valid:"matches(^1[3-9]{1}\\d{9}$)"`Email         string `valid:"email"`Avatar        string //头像Identity      stringClientIp      stringClientPort    stringSalt          stringLoginTime     time.TimeHeartbeatTime time.TimeLoginOutTime  time.Time `gorm:"column:login_out_time" json:"login_out_time"`IsLogout      boolDeviceInfo    string
}

2.gorm引入

golang学习之gorm(一):Gorm介绍_golang gorm_浅弋、璃鱼的博客-CSDN博客

1)连接数据库db, err := gorm.Open(mysql.Open()  )

2)创建或者更新一张和指定strcut结构一样的表db.AutoMigrate(&models.UserBasic{})

3)增db.Create(user)

4)删db.Delete(&product, 1)

5)改db.Model(user).Update("PassWord", "1234")

6)查db.First(user, 1),查主键为1的user

/**
* @Auth:ShenZ
* @Description:
* @CreateDate:2022/06/15 10:57:44*/
package mainimport ("fmt""ginchat/models""gorm.io/driver/mysql""gorm.io/gorm"
)func main() {//gorm连接指定ip的数据库db, err := gorm.Open(mysql.Open("root:tx2311571602@tcp(127.0.0.1:3306)/ginchat?charset=utf8mb4&parseTime=True&loc=Local"), &gorm.Config{})if err != nil {panic("failed to connect database")}// 迁移 schema,用传入的模型格式更新一张表结构//db.AutoMigrate(&models.Community{})db.AutoMigrate(&models.UserBasic{})//db.AutoMigrate(&models.Message{})//db.AutoMigrate(&models.GroupBasic{})//db.AutoMigrate(&models.Contact{})// Createuser := &models.UserBasic{}user.Name = "申专"db.Create(user)// // Readfmt.Println(db.First(user, 1)) // 根据整型主键查找第一条记录//db.First(user, "code = ?", "D42") // 查找 code 字段值为 D42 的记录// Update - 将 product 的 price 更新为 200db.Model(user).Update("PassWord", "1234")// Update - 更新多个字段//db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // 仅更新非零值字段//db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})// Delete - 删除 product//db.Delete(&product, 1)
}

3.gin引入

文档 | Gin Web Framework (gin-gonic.com)

创建一个gin服务,然后写处理请求函数,最后在接口上运行。

用法见gin框架_BigOrangeSama的博客-CSDN博客

视频教程里是把这一流程进行了分割:

把服务创建和处理请求单独放在router.app.go下,

其路由处理请求的处理函数是放在了service包下执行跳转一个GetIndex函数。

最后在主函数调用路由,在指定接口运行,以达到解耦的效果。


http://www.ppmy.cn/news/1078729.html

相关文章

文心一言接入Promptulate,开发复杂LLM应用程序

简介 最近在尝试将文心一言的LLM能力接入Promptulate,故写了一篇博客记录一下,Promptulate 是 Promptulate AI 旗下的大语言模型自动化与应用开发框架,旨在帮助开发者通过更小的成本构建行业级的大模型应用,其包含了LLM领域应用层…

Python中 re.compile 函数的使用

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 以下介绍在python的re模块中怎样应用正则表达式 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备…

AI助乡行——点燃乡村振兴新引擎

随着数字化浪潮的袭来,乡村振兴战略的推进离不开数字化、智慧化等现代化治理能力和方式,人工智能等高新技术正不断与农村经济、社会、治理等加速融合。在智慧农业的背景下,我们可以解决一系列困扰农民的问题,包括如何增加经济作物…

游戏服务器成DDoS最大攻击重灾区

游戏产业的迅猛发展也让游戏产业成为被黑客攻击的重灾区。什么原因让游戏行业成为DDoS的攻击重点。总结有如下原因和主要手段: 1.游戏行业的攻击成本较低,攻防成本1:N。随着DDoS攻击的打法越来越复杂,攻击点更是越来越多&#xff…

Effective STL 1.仔细选择你的容器

Effective STL 1.仔细选择你的容器 文章目录 Effective STL 1.仔细选择你的容器迭代器容器分类连续内存容器和基于节点的容器的区别 如何选择容器结语>>>>> 欢迎关注公众号【三戒纪元】 <<<<< 标准序列容器 vector、string、deque 和 list 标准…

【LeetCode每日一题】——1365.有多少小于当前数字的数字

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 排序 二【题目难度】 简单 三【题目编号】 1365.有多少小于当前数字的数字 四【题目描述】 …

如何一键批量查询全部物流信息?

在日常工作中&#xff0c;快递物流信息的查询是一项常规任务。然而&#xff0c;这个过程往往既耗时又费力&#xff0c;尤其是在面对大量单号的情况下。为了解决这个问题&#xff0c;我们推荐使用固乔快递查询助手&#xff0c;一款能够快速、准确地查询快递物流信息的软件。 首先…

ICCV 2023 | 利用双重聚合的Transformer进行图像超分辨率

导读 本文提出一种同时利用图像空间和通道特征的 Transformer 模型&#xff0c;DAT&#xff08;Dual Aggregation Transformer&#xff09;&#xff0c;用于图像超分辨&#xff08;Super-Resolution&#xff0c;SR&#xff09;任务。DAT 以块间和块内的双重方式&#xff0c;在空…