当前位置: 首页 > news >正文

网站建设中企动力上海全球最牛的搜索引擎

网站建设中企动力上海,全球最牛的搜索引擎,移动wordpress加速,十堰网站建设公司🧡 三件套介绍 Gorm Gorm 是一个已经迭代了10年的功能强大的 ORM 框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展。 Kitex Kitex 是字节内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有…

🧡 三件套介绍

Gorm
Gorm 是一个已经迭代了10+年的功能强大的 ORM 框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展。
Kitex
Kitex 是字节内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源扩展。
Hertz
Hertz 是字节内部的 HTTP 框架,参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高扩展性特点。

🧡 三件套使用

Gorm

  • Gorm 基础使用
    GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
  • Gorm 的约定
    1、Gorm 使用名为 ID 的字段作为主键
    2、如果没有定义 TableName() 方法,使用结构体的蛇形复数作为表名
    3、列名为字段名的蛇形小写
    4、使用 CreatedAt、UpdatedAt 字段作为创建、更新时间。
  • Gorm 支持的数据库
    Gorm 目前支持 MySQL、SQLServer、PostgreSQL、SQLite。Gorm 通过驱动来连接数据库,如果需要连接其它类型的数据库,可以复用/自行开发驱动。
    连接到数据库 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
  • CRUD操作
package mainimport ("gorm.io/gorm""gorm.io/driver/sqlite"
)// 定义 gorm.Model 结构体,对应数据库中一张表
type Product struct {gorm.Model // 也可以直接定义 Deleted gorm.DeletedAtCode  string  `gorm:"default:D42"`  // 设置默认值Price uint    `gorm:"default:200"`
}// 为 model 定义表名
func (p Product) TableName() string {return "product"
}func main() {// 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"// 连接 MYSQL 数据库 https://gorm.cn/zh_CN/docs/connecting_to_the_database.htmldb, err := gorm.Open(mysql.Open(dsn), &gorm.Config{// 提高性能SkipDefaultTransaction: true,  // 关闭默认事务PrepareStmt:true,             // 缓存预编译语句})if err != nil {panic("failed to connect database")}// 迁移 schemadb.AutoMigrate(&Product{})// Create 创建数据db.Create(&Product{Code: "D42", Price: 100})   // 一条数据:创建对象product := []*Product{{Code: "D41"}, {Code: "D42"}, {Code: "D43"}}  // 多条数据:创建切片db.Create(&product)// Read 查询数据var product Product// 查询单条数据db.First(&product)  // 获取第一条记录(主键升序),没有找到记录时返回 ErrRecordNotFound 错误db.First(&product, 1) // 传递整形:根据整形主键查找db.First(&product, "code = ?", "D42") // 传递查询条件:查找 Code 字段值为 D42 的记录// 使用 Find 查询多条数据,不会返回错误db.Where("code = ?", "D42").Find(&product) // SELECT * FROM product WHERE code = 'D42';// Update 更新数据db.Model(&product).Where("code = ?", "D42").Update("Price", 200) // 更新单个字段// 更新多个字段db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // 仅更新非零值字段db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"}) // 可更新零值字段// Delete - 删除数据// 物理删除:删没了db.Delete(&product, 1) // 传递整形:根据整形主键删除db.Delete(&product, "code = ?", "D42") // DELETE FROM product WHERE code = 'D42';// 软删除:GORM 会将 DeletedAt 置为当前时间, 不能再通过正常的查询方法找到该记录。db.Where("code = ?", "D42").Delete(&Product{}) // UPDATE product SET deleted_at="2023-01-20 10:23" WHERE code = 'D42';db.Unscoped().Where("code = ?", "D42").Find(&product) // 使用 Unscoped 找到被软删除的记录
}
  • Gorm 事务
    Gorm 提供了 Begin、Commit、Rollback 方法用于使用事务。
// Transaction 用于自动提交事务,避免漏写 Rollback()、Commit()
db.Transaction(func(tx *gorm.DB) error {// 在事务中执行一些 db 操作(从这里开始,您应该使用 'tx' 而不是 'db')if err := tx.Create(&Animal{Name: "Giraffe"}).Error; err != nil {// 返回任何错误都会回滚事务return err}if err := tx.Create(&Animal{Name: "Lion"}).Error; err != nil {return err}// 返回 nil 提交事务return nil
})
  • Gorm 扩展生态
    image.png

Kitex
Kitex 目前对 Windows 的支持不完善,如果本地开发环境是 Windows 建议使用虚拟机或 WSL2。 安装代码生成工具:

go install github.com/cloudwego/kitex/tool/cmd/kitex@latest  
go install github.com/cloudwego/thriftgo@iatest
  • 使用 IDL 定义服务与接口
    如果我们要进行 RPC,就需要知道对方的接口是什么,需要传什么参数,同时也需要知道返回值是什么样的。这时候,就需要通过 IDL 来约定双方的协议,就像在写代码的时候需要调用某个函数,我们需要知道函数签名一样。
  • 生成代码
$ kitex -module example -service example echo.thrift
  • Kitex 服务注册与发现
    Kitex 服务发现
    目前 Kitex 的服务注册与发现已经对接了主流了服务注册与发现中心,如 ETCD,Nacos 等。
  • Kitex 生态
    image.png

Hertz

  • Hertz 基本使用
    快速开始 | CloudWeGo 使用 Hertz 实现,服务监听 8080 端口并注册了一个 GET 方法的路由函数:
package mainimport ("context""github.com/cloudwego/hertz/pkg/app""github.com/cloudwego/hertz/pkg/app/server""github.com/cloudwego/hertz/pkg/common/utils""github.com/cloudwego/hertz/pkg/protocol/consts"
)func main() {h := server.Default(server.WithHostPorts("127.0.0.1:8080"))// 静态路由h.GET("/ping", func(c context.Context, ctx *app.RequestContext) {ctx.JSON(consts.StatusOK, utils.H{"message": "pong"})})h.Spin()
}
  • Hertz 路由
    1、提供了 GET、POST、PUT、DELETE、ANY 等方法用于注册路由。
    2、提供了路由组(Group)的能力,用于支持路由分组的功能,同时中间件也可以注册到路由组上。
    3、提供了参数路由和通配路由,路由的优先级为:静态路由>命名路由>通配路由。
  • Hertz 参数
    提供了 Bind、Validate、BindAndValidate 函数用于进行参数绑定和校验。
  • Hertz 中间件
    主要分为客户端中间件与服务端中间件。
  • Hertz Client
    提供了 HTTP Client 用于帮助用户发送 HTTP 请求。
  • Hertz 代码生成工具 Hz
    通过定义 IDL(inteface description language) 文件即可生成对应的基础服务代码。
http://www.dt0577.cn/news/10540.html

相关文章:

  • 直播交友app开发seo整站优化报价
  • 帮人做网站被派出所抓到徐州开鲁网站seo免费版
  • 承德名城建设集团网站seo公司排名
  • 如何做背景不动的网站热搜词排行榜关键词
  • 免费商标设计软件seo怎么收费的
  • 顺德大良那里做网站好googleseo排名公司
  • 昆山做网站的kamese20条优化措施
  • 网站建设优化seo百度识图网页版在线使用
  • 联系客户做网站提高关键词排名的软文案例
  • 互联网网站制作汕头网站排名
  • 徐汇科技网站建设有没有专门做营销的公司
  • zencart网站地图生成关键词林俊杰歌词
  • 深圳网站建设科技有限公司排名软件
  • wap网站生成上海网站建设推广服务
  • 赣州做网站的网站交易平台
  • 深圳网站设计公司哪家好国家免费技能培训官网
  • 企业单位网站怎么做国家提供的免费网课平台
  • 销售型网站有哪些北京网络营销
  • 学校网站 模板曲靖百度推广
  • 商城网站建设开发公司环球网疫情最新消息
  • 房产中介网站建设模板视频剪辑培训班学费一般多少
  • 防伪网站模板百度快速收录提交工具
  • 怎么填写网站备案申请网站快速收录软件
  • seo网站关键字优化百度竞价推广课程
  • 武汉做网站云优化科技企业文化的重要性
  • wordpress4.7.3下载情感网站seo
  • 月嫂服务公司网站建设方案网站制作大概多少钱
  • 室内设计师需要学什么软件毕节地seo
  • 网站的服务费账怎么做挖掘关键词工具
  • discuz轻社区模板成都seo经理