gin
是一个轻量级web框架 基于http包 中间件 需要返回gin.HandlerFunc函数,通next一次来执行 项目中用来:token认证,接口权限认证、限流、日志记录 限流:redis记录用户单位时间内的访问次数,超频则拦截 路由 RouterGroup 路由组 content 保存请求上下文信息 提供ShouldBindQuery( ...
是一个轻量级web框架 基于http包 中间件 需要返回gin.HandlerFunc函数,通next一次来执行 项目中用来:token认证,接口权限认证、限流、日志记录 限流:redis记录用户单位时间内的访问次数,超频则拦截 路由 RouterGroup 路由组 content 保存请求上下文信息 提供ShouldBindQuery( ...
深拷贝 开辟新的内存空间,新旧对象不共享内存 值类型数据赋值:array,struct… 内建函数copy( ) 浅拷贝 复制了指向对象的引用,并没有开辟新的内存地址,新旧对象指向同一个内存地址 引用类型赋值:指针、slice、map…
defer触发时机 包裹着defer语句的函数返回时(先入栈的defer后执行) // 输出结果: // return前执行defer2 // return前执行defer1 func f1() { defer fmt.Println("return前执行defer1") ...
CSRF 跨站请求伪造。攻击者伪造正常用户的身份,发送恶意请求。 from表单POST提交,不受浏览器同源策略的限制。 cookie保存认证信息不安全,攻击者容易伪造。 参考:https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html 跨域 因为有浏览器同源策略的限制,ajax向其他源发送请求,响应会...
封装:定义结构体,定义方法,接收者为该结构体 继承:通过结构体嵌套实现,也可以重写父类方法 多态:定义接口方法,子类实现了接口所定义的接口
cookie 保存在客户端 安全性差 场景:可用于保存表单信息、购物车信息等 session 保存在服务端,服务端生成session_id给客户端返回 session_id一般借助cookie来保存 场景:用户权限认证 大量的session会占用服务器资源
数据结构 type error interface { Error() string } 本质是一个接口,有一个Error方法 自定error 1、通过errors包,它有一个New()方法 2、通过fmt.Errorf() 3、自定义errorenum模块,实现Error()方法
var 用于变量声明 声明变量,变量默认是该类型的0值 var a *int,给a赋值会panic,因为a的默认值是null,没有内存空间 new 为变量开辟内存空间 返回指针类型 可用于所有类型 make 为变量开辟内存空间,也能同时初始化 返回的是引用类型本身 只能用于slice,map,channel 传值or传指针 ...
slice and array 相同点 len()获取长度,通过下表获取 分配一块连续的内存空间 array 值类型 var,:= 创建, 不可用make(运行时)、append、copy 创建后长度、容量不可改变 sl...
context包 在goroutine中传递上下文信息、信号控制、公共参数等 context数据结构 type Context interface { Deadline() (deadline time.Time, ok bool) // 获取当前context的截止时间 Done() <-chan struct{} ...