![](https://img-blog.csdnimg.cn/1756520eb39f4e08a5738511f0767fb1.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
gin
文章平均质量分 78
gin 框架的使用
go&Python
开发转运维(devops,prometheus)中(暂时中止),js/app逆向(进度50%),还想写go(后面再学一遍吧)。目标不大,路在脚下
展开
-
一文详解Gorm
ORM是“对象-关系-映射”的简称,Go语言中常用的ORM框架有很多,如gorm、facebook-ent、xorm、upper/db、gorose等,这里以gorm为例。gorm注: 本文内容基于官方文档, 由于迭代原因,建议以最新官方文档为主老牌国产Golang orm框架。支持主流关系型数据库。中文文档适合新人入手,国内使用较多。最新版本2.x,比1.x有较大改动注意:Gorm最新地址为https://github.com/go-gorm/gorm,之前https://github.com/jinz原创 2022-09-04 21:57:57 · 3716 阅读 · 0 评论 -
项目的关闭与重启
我们编写的Web项目部署之后,经常会因为需要进行配置变更或功能迭代而重启服务,单纯的的方式会强制关闭进程,这样就会导致服务端当前正在处理的请求失败,那有没有更优雅的方式来实现关机或重启呢?阅读本文需要了解一些UNIX系统中信号的概念,请提前查阅资料预习。优雅关机就是服务端关机命令发出后不是立即关机,而是等待当前还在处理的请求全部处理完毕后再退出程序,是一种对客户端友好的关机方式。而执行Ctrl+C关闭服务端时,会强制结束进程导致正在访问的请求出现问题。...原创 2022-09-01 15:45:49 · 352 阅读 · 0 评论 -
配置管理神器 Viper
Viper 是一个完整的 Go 应用程序配置解决方案,它旨在在应用程序中工作,并且可以处理所有类型的配置需求和格式。设置默认值从 JSON、TOML、YAML、HCL、envfile 和 Java 属性配置文件读取实时监控和重新读取配置文件(可选)从环境变量中读取从远程配置系统(etcd 或 Consul)读取,并观察变化从命令行参数读取从缓冲区读取显式配置值Viper 可以被认为是满足您所有应用程序配置需求的注册表。......原创 2022-09-01 15:05:16 · 648 阅读 · 0 评论 -
Gin 中使用日志
由于gin默认日志有缺陷,不能轮转,在视图函数中不能直接使用日志记录(go标准库的logger),不能序列化等等,说白了就是功能不够强大,因此,go又有很多开源的日志包,如下logrus目前Github上star数量最多的日志库,也是最兼容标准库的日志库项目地址: https://github.com/sirupsen/logruszap是Uber推出的一个快速、结构化的分级日志库, 无反射, 零分配的JSON编码器(本文介绍),是最快的一个日志库。原因:不是基于反射做的。......原创 2022-08-28 15:16:32 · 4902 阅读 · 0 评论 -
Gin中使用jwt
在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证。我们不再使用Session认证机制,而使用Json Web Token(本质就是token)认证机制。Json web token(JWT) , 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519) . 该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。原创 2022-08-25 15:45:20 · 706 阅读 · 2 评论 -
Gin 中使用 Cookie,Session
HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页 面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何 关系的。如果我们要实现多个页面之间共享数据的话我们就可以使用 Cookie,Session或Token实 现cookie 是存储浏览器中的键值对,可以让我们用同一个浏览器访问同一个域名 的时候共享数据session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上。原创 2022-08-25 13:37:29 · 1716 阅读 · 1 评论 -
Gin中间件
Gin 框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函 数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、 记录日志、耗时统计等。通俗的讲: 中间件就是匹配路由前和匹配路由完成后执行的一系列操作。原创 2022-08-25 11:10:02 · 1020 阅读 · 0 评论 -
Gin 自定义控制器
当我们的项目比较大的时候有必要对我们的控制器进行分组,采用 MVC 架构,在一些大型框架中控制器都是已经集了,如python 的 Django框架, 但是Gin 需要我们自定制 C 层, 控制器层。通过接口来实现。目录结构。原创 2022-08-25 10:34:17 · 518 阅读 · 0 评论 -
Gin路由高级
有时候项目规模实在太大,那么我们就更倾向于把业务拆分的更详细一些,例如把不同的业务代码拆分成不同的APP。目录,用来存放我们不同业务线的代码文件,这样就很容易进行横向扩展。适用于路由比较少的简单项目, 将路由放到 别的文件中,在 main 包中调用即可。routes group是为了管理一些相同的URL。文件或包已经满足不了我们的需求了。因此我们在项目目录下单独定义一个。原创 2022-08-25 10:15:57 · 254 阅读 · 0 评论 -
Gin 静态文件与同步异步
当我们渲染的 HTML 文件中引用了静态文件时,我们需要配置静态 web 服务 r.Static(“/static”, “./static”) 前面的/static 表示路由 后面的./static 表示路径。原创 2022-08-17 16:38:17 · 544 阅读 · 0 评论 -
Gin模板渲染
有两种选择,一种是只有一个返回值,还有一种是有两个返回值,但是第二个返回值必须是error类型的。这两种函数的区别是第二个函数在模板中被调用的时候,假设模板函数的第二个参数的返回不为空,则该渲染步骤将会被打断并报错。如果赋值给两个变量,则第一个变量是索引值(array/slice是数值,map是key),第二个变量是当前正在遍历元素的值。首先,template包创建新的模板的时候,支持.Funcs方法来将自定义的函数集合导入到该模板中,后续通过该模板渲染的文件均支持直接调用这些函数。...原创 2022-08-16 16:06:03 · 1235 阅读 · 0 评论 -
Gin文件上传
Gin文件上传。原创 2022-08-14 13:08:24 · 573 阅读 · 0 评论 -
Gin路由基础
gin 框架的基本使用 把对应的数据解析好结构体中,需要在结构体中配置相应的配置,才能正常使用ShouldBind系列方法。客户端传参,后端接收并解析到结构体定。原创 2022-08-14 12:33:25 · 1575 阅读 · 0 评论 -
Gin的请求与响应
Gin的请求对象被封装在gin.Context这个结构体指针中。原创 2022-08-13 18:56:39 · 877 阅读 · 0 评论 -
Gin程序热加载
我们在Flask或者Django框架下开发都是支持实时加载的,当我们对代码进行修改时,程序能够自动重新加载并执行,这在我们开发中是非常便利的,可以快速进行代码测试,省去了每次手动重新编译。bee是beego框架的热编译工具,同样可以对GIN框架进行热编译,使用起来很方便,功能也有很多,这里就不展开了,喜欢的可以去看文档,解锁更多玩法。所谓热加载就是当我们对代码进行修改时,程序能够自动重新加载并执行,这在我们开发中是非常便利的,可以快速进行代码测试,省去了每次手动重新编译。...原创 2022-08-13 18:03:09 · 694 阅读 · 0 评论 -
Gin框架简介和快速使用
Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。目前在很多使用Golang的中小型公司中进行业务开发,使用Gin框架的很多。...原创 2022-08-12 18:05:30 · 1381 阅读 · 0 评论 -
go Http 编程
go Http 编程。原创 2022-08-11 18:05:37 · 71 阅读 · 0 评论 -
go Socket 编程
我们知道两个进程如果需要进行通讯最基本的一个前提是能够唯一标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的IP地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用IP地址+协议+端口号唯一标示网络中的一个进程。能够唯一标示网络中的进程后,它们就可以利用Socket进行通信了,什么是Socket呢?一个TCP服务端可以同时连接很多个客户端。...原创 2022-08-11 17:05:53 · 144 阅读 · 0 评论 -
go 操作 redis
文档地址:https://pkg.go.dev/github.com/go-redis/redis。安装:go get github.com/garyburd/redigo/redis。安装:go get -u github.com/go-redis/redis。go-redis:star数更多,支持连接哨兵及集群模式的Redis。补充: go-redis 的连接池配置直接在。redigo:star数少一些,操作更简单。golang操作redis主要有两个库,,默认是采用连接池链接。中配置参数即可,并且。.原创 2022-08-11 12:37:02 · 2336 阅读 · 0 评论 -
go sqlx 包
上文我们用了[go-sql-driver/mysql库来操作mysql,还有一个更优秀的库sqlx,它也是对标准库database/sql`具体的实现,并进行进一步封装和新增了一些方法。原创 2022-08-10 19:17:04 · 674 阅读 · 0 评论 -
go 操作MySQL之mysql包
客户端对SQL语句进行占位符替换得到完整的SQL语句。客户端发送完整SQL语句到MySQL服务端MySQL服务端执行完整的SQL语句并将结果返回给客户端。把SQL语句分成两部分,命令部分与数据部分。先把命令部分发送给MySQL服务端,MySQL服务端进行SQL预处理。然后把数据部分发送给MySQL服务端,MySQL服务端对SQL语句进行占位符替换。MySQL服务端执行完整的SQL语句并将结果返回给客户端。......原创 2022-08-10 18:08:47 · 939 阅读 · 0 评论