session和cookie
cookie 保存在客户端 安全性差 场景:可用于保存表单信息、购物车信息等 session 保存在服务端,服务端生成session_id给客户端返回 session_id一般借助cookie来保存 场景:用户权限认证 大量的session会占用服务器资源
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...
Go 的 select 用于同时监听多个 channel 操作,底层由 runtime 的 selectgo 函数实现。 执行时 runtime 会先随机打乱 case 顺序,然后遍历所有 case,检查对应 channel 是否 ready。如果有多个 ready,会随机选择一个执行; 如果都没有 ready 且存在 default,则执行 default; 如果没有 default...
context包 在goroutine中传递上下文信息、信号控制、公共参数等 context数据结构 type Context interface { Deadline() (deadline time.Time, ok bool) // 获取当前context的截止时间 Done() <-chan struct{} ...
go简介 静态类型 运行是runtime 基础题 https://learnku.com/articles/35063 规范 相似的变量放在一起声明 import包顺序,标准库、第三方库 包名全部小写 map、slice初始化 枚举从1开始 可以指定slice的容量 变量类型 值类型:array、int、struct 引...
原理 channel 是 Go 中实现 goroutine 之间通信和同步 的核心机制。 底层数据结构是 hchan,主要由环形队列 + 锁 + 发送/接收队列 + 调度器组成。 type hchan struct { qcount uint // 队列中剩余元素数量 dataqsiz uint // 循环队列的长度(channel的大小) buf ...
操作系统基础 COW(写时复制) Linux系统中,fork 子进程时,并不会立即把父进程所有内存页复制一份。而是在父进程/子进程对内存页修改时才进行复制。 参考Linux 写时复制机制原理 CAS(对比和交换) CUP 对比寄存器中值是否等于内存中的值,如果相等,则写入新值 彻底弄懂CAS(比较并交换) 存在问题 ABA问题;解决:采用版本号 自旋时间过...
sync.Pool - 临时对象池 概述 是一个临时对象缓存池,核心目的是减少对象频繁创建和释放带来的 GC 压力。 原理 1、每个 P 持有一个私有池(private),还有一个共享池(shared) type ProcessorPool struct { private any // 私有对象(无锁) shared poolChain // 共享链表(可被其他...