框架| 青训营笔记

基于 Hertz 和 Kitex 的 Go 微服务项目 | 开源项目推荐 目录介绍Server项目核心部分Shared可复用代码Static前端静态文件这个项目还是花费的不少时间,欢迎大家学习,如果 Star 是对我们最大的鼓励! 阅读详情

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

grom

grom基本使用

屏幕截图 2023-01-20 203404.png

Gorm的约定(默认) - Gorm使用名为ID的字段作为主键 - 使用结构体的蛇形负数作为表名 - 字段名的蛇形作为为列名 - 使用CreatedAt、UpdatedAt字段作为创建、更新时间

链接数据库

屏幕截图 2023-01-20 203428.png 创建数据

屏幕截图 2023-01-20 203448.png 使用clause.OnConfict处理数据冲突

屏幕截图 2023-01-20 203457.png 设置默认值

屏幕截图 2023-01-20 203457.png

查询数据

屏幕截图 2023-01-20 203505.png First的使用踩坑 使用First时,需要注意查询不到数据会返回ErrRecordNotFound.

使用Find查询多条数据,查询不到数据不会返回错误。

使用结构体作为查询条件 当使用结构作为条件查询时,GORM只会查询非零值字段。这意味着如果您false或其他零值的字段值为0、该字段不会被用于构建查询条件,使用Map来构建查询条件。

更新

屏幕截图 2023-01-20 203518.png 使用Struct更新时,只会更新非零值,如果需要更新零值可以使用Map更新或使用Select选择字段。

删除

物理删除

屏幕截图 2023-01-20 203529.png 逻辑删除

屏幕截图 2023-01-20 203551.png

GORM提供了gorm.DeletedAt用于帮助用户实现软删拥有软删除能力的Model用Delete时,记录不会被从数据库中真正删除。但GORM会将DeletedAt置为当前时间,并且你不能再通过正常的查询方法找到该记录。使用Unscoped可以查询到被软删的数据

事务

Gorm提供了Begin,Commit,Rollback用于事务。也提供了Tanscation方法用于自动提交事务。

屏幕截图 2023-01-20 203551.png

hook

GORM在提供了CURD的Hook能力。 Hook是在创建、查询、更新、删除等操作之前、之后自动调用的函数。 如果任何Hook返回错误,GORM将停止后续的操作并回滚事务。

屏幕截图 2023-01-20 210033.png

性能提高

对于写操作(创建、更新、删除),为了确保数据的完整性,GORM会将它们封装在事务内运行。 但这会降低性能,你可以使用SkipDefaultTransaction关闭默认事务。 使用PrepareStmt缓存预编译语句可以提高后续调用的速度。

屏幕截图 2023-01-20 210116.png

生态

GORM代码生成工具 GORM分片库方案 GORM手动索引 GORM乐观锁 GORM读写分离 GORMOpenTelemetry扩展

kitex

定义IDL

使用IDL定义服务与接口

如果我们要进行RPC,就需要知道对方的接囗是什么,需要传什么参数,同时也需要知道返回值是什么样的。这时候,就需要通过IDL来约定双方的协议,就像在写代码的时候需要调用某个函数,我们需要知道函数签名一样。

屏幕截图 2023-01-20 210132.png

生成代码

使用kitex-module example-service example echo.thrift命令生成代码

屏幕截图 2023-01-20 212045.png build.sh:构建脚本 kitexgen:IDL内容相关的生成代码, 主要是基础的Server/Client代码。 main.go程序入口 handler.go用户在该文件里实现IDL service定义的方法

hertz

路由

Hertz提供了GET、POST、PUT、DELETE、ANY等方法用于注册路由。

屏幕截图 2023-01-20 212357.png Hertz提供了路由组(Group)的能力,用于支持路由分组的功能

屏幕截图 2023-01-20 213101.png Hertz提供了参数路由和通配路由,路由的优先级为:静态路由>命名路由>通配路由

参数绑定

Hertz提供了Bind、Validate、BindAndValidate函数用于进行参数绑定和校验

屏幕截图 2023-01-20 213443.png

中间件

Hertz的中间件主要分为客户端中间件与服务端中间件,如下展示一个服务端中间件。

屏幕截图 2023-01-20 213525.png

如何终止中间件调用链的执行 c.Abort c.AbortWithMsg c.AbortWlthStats

Android 关于佳博和汉印蓝牙热敏打印机开发,Android程序员必经的实践之路 针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取! 阅读详情

相关推荐

人类肠道微生物群落代谢建模

MICOMWeb 是款用户友好型网站,专为人类肠道微生物群落代谢建模设计。该网站旨在解决基因组尺度代谢模型(in silico)构建过程中的3大限制:① 使用 MICOM Python 包进行通量平衡分析时对用户 Python 编程知识的要求;② 支持预定义和用户自定义饮食,以生成专属代谢模型;③ 处理宏基因组鸟枪法测序或 16S 扩增子测序获得的真实丰度数据时,所需的高通量计算基础设施。本文展示了 MICOMWeb 的核心功能,用户可轻松开展虚拟实验,为3个已发表数据集的实验验证生成功能性假设。

多组・学・多组学 1172

Golang-使用 Hertz 框架和 Gorm 快速搭建 Web 服务

在之前的文章中咱们运用 Hertz 编写了一个简略的 demo 协助快速上手 Hertz 这款 Golang HTTP 结构,本节咱们将加入 Gorm 结构和 Hertz 结构一起学习一个简略的官方 demo,同时带你了解 Hertz 一些有意思的特性。假如你还不知道 Hertz 是什么,那么能够查看我之前的文章快速上手。运用 thrift IDL 界说 HTTP 接口运用hz生成脚手架代码运用Hertz的参数绑定校验运用Gorm和MySQL编写耐久层这就是本文的全部内容。

Ch3nnn的博客 1396

保姆级教程:中科蓝讯Downloader配置详解,从软硬开关机到EQ调音一步到位

本文详细介绍了中科蓝讯Downloader的配置流程,从硬件初始化到音频调优的全方位指南。涵盖软硬开关机选择、电源管理、DAC校准、EQ调音等关键步骤,帮助开发者高效完成配置并避免常见问题。特别适合需要精确控制音频设备和电源管理的中科蓝讯芯片开发者。

weixin_33670786的博客 313

Go语言框架三件套入门【自学自讲】

框架是一种提供了预定义功能和工具的软件结构,旨在帮助开发人员更轻松地构建应用程序,减少重复代码,提高开发效率,常见类型包括Web、前端、后端、移动应用和游戏开发框架。框架通常做的事情,就是让我们写代码更加快速,并且和别人遵循同一套规范,便于代码扩展功能或者维护等等。通常做的规范就是把硬编码变成配置文件,或者把许多的功能汇总在一起,兼容其它框架,让工程代码更加有序,让我们更加注重业务逻辑代码。

weixin_73956119的博客 1310

从零拆解快手Web端__NS_hxfalcon:JS逆向签名参数定位与复现

在JS逆向与前端反爬攻防中,签名参数总是绕不开的核心环节。无论是接口加密还是请求签名,其本质都是通过在客户端收集环境信息、时间戳与业务参数,经特定算法计算后生成用于服务端校验的动态令牌。理解这类参数的生成原理,不仅能提升逆向分析效率,也能帮助前端开发者更好地设计自身接口防护方案。在实际工程中,面对经Webpack打包且高度混淆的代码,直接全局搜索参数名往往难以奏效,需要结合请求抓包、调用栈跟踪、环境适配等方法逐步定位。此类签名参数广泛存在于现代Web应用的GraphQL或REST接口中,是接口数据安全的重要

weixin_29474431的博客 338

SAR成像处理基本知识2——图像尺寸与回波尺寸的关系

阅读本文前,请先了解上一篇文章(SAR成像处理基本知识1——常用专用名词解释) 1. SAR图像尺寸预估方法 以C波段2m@20km的SAR图像为例,假设天线中心下视角为35° ,说明图像尺寸的估计方法。 1.1 距离向尺寸估计 地距分辨率为2m时,距离向分辨率约为1.15m,则要求信号带宽不小于130MHz,假设信号带宽为150MHz,采样率为180MHz,那么距离向分辨单元为0.833m。 地距幅宽为20km时,距离向幅宽约为20*sind(3...

爱学习的小伟的博客 4955

Go框架三件套:Gorm的基本操作

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

Xayla的博客 1543

手把手教你用Microsoft AEC Challenge数据集训练自己的回声消除模型(附完整代码)

本文详细介绍了如何使用Microsoft AEC Challenge数据集训练专业的回声消除模型,包括环境准备、数据清洗、模型架构设计、训练流程和实际部署注意事项。通过完整的代码示例和实战指南,帮助开发者快速掌握AEC技术,提升语音通信系统的回声消除效果。

weixin_27697385的博客 460

字节开源WEB框架Hertz太香啦!

Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架、、的优势, 并结合内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。

xhbzl的博客 6518

告别里程焦虑:手把手教你用MATLAB/Simulink仿真电动车AMT换挡规律(附代码)

本文详细介绍了如何使用MATLAB/Simulink仿真电动车AMT换挡规律,帮助解决里程焦虑问题。通过搭建完整的仿真系统,包括电机MAP图处理、Stateflow逻辑实现和动力性与经济性换挡曲线生成,优化电动车换挡策略以提升续航与性能。附带的代码示例和实用技巧使开发者能够快速上手并验证仿真结果。

weixin_26757925的博客 307

安卓无障碍服务保活实战:如何用AccessibilityService实现后台常驻(附完整代码)

本文深入解析如何利用Android无障碍服务(AccessibilityService)实现后台服务保活,涵盖多版本系统适配、前台服务集成、开机自启机制等关键技术。通过详细的Kotlin代码示例和合规性指导,帮助开发者构建稳定可靠的后台服务解决方案,同时避免因滥用无障碍服务导致的应用下架风险。

milk5的博客 1074

Go快速上手之基础语法 | 青训营笔记

1. 本文旨在介绍Go语言的特性,配置,以及一些基础语法:zap:。 2. 在介绍这些的时候,会结合我这个计算机小白在实践的过程中遇到的一些问题与个人理解:slightly_smiling_face:。

物联黄同学的博客 1938

【蓝凌表单】JSP组件常用语法整理

【代码】【蓝凌表单】JSP组件常用语法整理。

烧硬盘 712

实践-CSS布局技巧 | 青训营

CSS布局是前端开发中非常重要的一部分,掌握不同的布局技巧可以帮助我们实现各种复杂的页面布局。下面我将简要记录一些常用的CSS布局技巧及其应用场景,并且附上我的。我很高兴有机会来分享我在青训营的经历和个人感受。这段时间对我来说是非常宝贵和有意义的。首先,我要说青训营给了我一个难得的机会来全面提升自己的技能和知识。一. 引言 在前端开发中,设计模式是解决常见问题的经验性指导,有助于提高代码质量、可维护性和可扩展性。本篇笔记将探讨前端框架中常见的设计模式,分析它们的优缺点,哦,是我问了hr,但是心里不放心。

每天多一点干货 68

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

深入浅出RPC框架 | 青训营

深入浅出RPC框架 | 青训营

NEFU AB-IN's Blog 693

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Chrome浏览器调试页面详解 | 青训营笔记

这是我参与「第四届青训营」笔记创作活动的的第11天。在Chrome浏览器页面按下F12。

ProgramNovice的博客 965

HTML常用标签 | 青训营笔记

自定义列表不仅仅是一列项目,而是项目及其注释的组合。自定义列表以标签开始。每个自定义列表项以开始。每个自定义列表项的定义以开始。

ProgramNovice的博客 303

云原生 | 青训营笔记

从云原生的概念出发,介绍了云原生常见的技术场景。

幸平的博客 781

前端与HTML | 青训营笔记

前端(又称Web前端),是指计算机Web应用程序(网站)的前台页面。在我们打开一个网站所看到网页界面的内容以及交互体验,一般都是由前端工程师进行开发设计的页面,该内容属于前端部分。如使用小程序开发者工具开发的这一部分代码,是属于前端部分。小程序开发是前后端分离的,获取动态数据是通过后端的API进行请求。前端通过GUI界面解决人机交互问题,还需要能够跨终端显示。如PC/移动浏览器、客户端/小程序、VR/AR等。前端由HTML、CSS、JavaScript组成。其中,HTML决定结构和内容表现和样式。.....

ProgramNovice的博客 337

Web多媒体 | 青训营笔记

Web多媒体 | 青训营笔记 这是我参与「第四届青训营」笔记创作活动的的第15天。 多媒体(Multimedia)指图片、声音、音乐、动画和视频。

ProgramNovice的博客 402

JavaScript | 青训营笔记

本文只在于介绍更好的写js,提供一些思路,具体深入并未过多阐述。

m0_59722204的博客 342
上一篇: 垃圾回收的方法| 青训营笔记
下一篇: 设计模式概述
过去日记
过去日记 新星创作者: 后端开发技术领域 新星创作者: 后端开发技术领域
博客等级 码龄3年 5343粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过去日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值