![](https://img-blog.csdnimg.cn/4c810fe35bc340c2901d2d0d5f904c39.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
golang笔记
文章平均质量分 51
gogogo
Steps-of-time
不断的学习,将来的你会发现,一定会感谢现在拼命的自己。
展开
-
gin之中间件消息转发使用踩坑记录
上述c.Request直接赋值给Request,给的是指针地址,等同于让拷贝的ctx跟原始的ctx的Request都指向了同一块内存,再加上通过io.ReadAll读取body之后,数据会被清空,从而导致上述S= or F= 为空的异常问题。如上图代码运行结果发现的,因F跟S的程序先后执行顺序导致请求的body均出现异常为空情况。尽管在S协程中使用了ctx.Copy对上下文进行了只读拷贝,仍旧出现上述问题。上述Request是一个指针类型,存储的是Request的地址。b.S先于F执行完成。原创 2024-05-15 10:15:51 · 209 阅读 · 0 评论 -
go-协程调度学习笔记
go协程调度笔记原创 2022-11-08 22:47:40 · 519 阅读 · 0 评论 -
golang之unsafe.Pointer学习笔记
unsafe.Pointer原创 2022-10-17 13:23:15 · 602 阅读 · 0 评论 -
golang之syn.Map学习笔记
syn.map源码拆解原创 2022-10-16 22:14:09 · 427 阅读 · 0 评论 -
分布式锁笔记
分布式锁原创 2022-09-27 14:21:23 · 426 阅读 · 0 评论 -
Gin学习笔记
gin原创 2022-09-26 20:34:51 · 683 阅读 · 0 评论 -
缓存穿透,缓存雪崩,缓存击穿
一,缓存穿透原因:一个请求来访问某个数据,发现缓存中没有,直接去DB中访问。此种情况就是穿透。(正常情况下缓存跟数据库中数据都是存在,异常情况下会导致)方法:1.添加参数校验,校验传递的值是否合法,再决定是否处理该请求。2.设置缓存空值,为访问的key缓存中设置对应的nil值,这样当访问过来的发现key的value是空值值,就直接返回nil了。并设置过期时间。3,布隆过滤器,就是利用高效的数据结构,在请求跟缓存之间设置一个布隆过滤器,请求来的时候,直接判断当前的key是否存在DB中。也能原创 2022-03-20 16:22:44 · 3173 阅读 · 4 评论 -
golang泛型学习笔记
go泛型编程原创 2022-06-26 15:48:46 · 645 阅读 · 0 评论 -
分布式一致性之NWR策略模型
分布式一致性之NWR策略模型: <1>nwr策略解释: N:在分布式存储系统中,有多少份备份数据。 W:代表一次成功的更新操作要求至少有w份数据写入成功 。 R:代表一次成功的读数据操作要求至少有R份数据成功读取。 <2>策略原理: NWR值的不同组合会产生不同的一致性效果,当W+R>N的时候,整个系统对于客户端来讲能保证 <3>不同组合产生的效果 w+r > n -&...原创 2022-05-07 17:55:25 · 2848 阅读 · 0 评论 -
缓存一致性
缓存一致性原创 2022-04-27 21:55:42 · 1378 阅读 · 0 评论 -
golang-cobra学习笔记
corba原创 2022-04-26 20:07:52 · 848 阅读 · 0 评论 -
golang-net/http创建服务&源码解析
1.net/http创建一个服务package mainimport ( "net/http")func main() { http.Handle("/user", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(200) w.Write([]byte("I am user interface")) })) http.Handle("/job", http.Han原创 2022-04-24 22:21:32 · 396 阅读 · 0 评论 -
golang-defer关键字笔记
1.defer修饰的函数的执行顺序例如:package mainimport "fmt"func main() { defer func() { fmt.Println("world") }() defer func() { fmt.Println("hello") }() defer func() { fmt.Println("110") }()}运行结果:110helloworlddefer定义的函数的执行顺序跟栈的结构一样,先进后出的顺原创 2022-03-23 23:14:49 · 162 阅读 · 0 评论 -
golang-数组,切片,map是否线程安全?
go细节注意原创 2022-03-21 21:48:33 · 1986 阅读 · 0 评论 -
golang之new和make使用的注意事项
1.主要是分配内存差异package mainimport "fmt"type Person struct { Name string Age uint32 Ptr *uint32}func main(){ // var a *int // *a = 1 // 发生panic,invalid memory address or nil pointer dereference // array array := new([5]int) array[0] = 1原创 2022-03-20 21:24:53 · 518 阅读 · 0 评论 -
golang - 结构体omitempty踩坑案例
1.结构体跟json序列化package mainimport ( "encoding/json" "fmt")type Person struct { Name string `json:"name"` Stue string `json:"stue,omitempty"` // 反序列化时,如果该字段为空,则不进行序列化输出 Addr string `json:"addr"`}func main() { data := `{ "name":"lk"原创 2022-03-09 21:05:12 · 1203 阅读 · 0 评论 -
golang-channel造成死锁案例
1.案例1,无缓冲信道导致死锁, -> 运行死锁 // 不设定容量创建的是无缓冲信道,在接收者未准备好之前信道处于阻塞状态,package mainfunc main(){ // 例如本案例:fatal error: all goroutines are asleep - deadlock! // sch := make(chan string) // sch <- "string" // fmt.Println(<-sch) // 处理方法,使用双协...原创 2022-03-09 21:00:10 · 1182 阅读 · 0 评论 -
golang-context(上下文总结)
Context上下文笔记原创 2021-06-16 20:11:14 · 1685 阅读 · 0 评论 -
golang-学习杂谈
go采坑记录笔记原创 2021-07-26 22:22:28 · 432 阅读 · 0 评论 -
go-jwt学习总结
一.概念jwt,全名(json web token),是一种跨域的认证的解决方案,属于一个开放的标准。使用其规定了一种token的实现方式。二.为什么使用传统的的web项目,使用的都是session来认证用户的信息,具体的流程如下:1.用户通过浏览器将账号跟密码传输给后台服务。2.服务端对用户跟密码校验后会生成一份保存当前用户信息的session和一个对应的session_id。3.如果返回响应的时候会将生成的session_id一并返回,浏览器会将该值写入cookie中。4.如原创 2022-01-22 14:22:14 · 7319 阅读 · 1 评论 -
数据结构之字典树(前缀树)
1.字典树概念字典树又被称作Trie树,其效率非常高,所以在字符串查找,前缀匹配中应用非常广泛,其高效率是以空间为代价的。典型应用是用于统计和排序大量的字符串,它的优点是,最大限度地减少无谓的字符串比较,查询效率比哈希表更高。2.字典树特点1,跟节点不存储数据2,每个节点仅存储一个字符3,从根节点到每个节点上的路径,表示当前节点的表示的字符串(如果该节点是叶子结点),或者是字符串的前缀4,每个节点的所有子节点包含的字符串不相同。3,代码示例package mainimp原创 2022-02-22 14:40:03 · 534 阅读 · 0 评论 -
golang-内联机制&go开发测试
1.go-内联优化机制,如下代码描述package mainimport “fmt”/*go 内联优化,根据AST语法树的字符个数,(80) >80 进行优化内联*/func add(a, b int) int {return a + b}//go:noinline ,屏蔽掉系统的内联优化,通过go build -gcflags="-m -m" goInline.go查看// ./goInline.go:5:6: can inline add with cost 4 as: fun原创 2021-06-02 22:38:16 · 492 阅读 · 0 评论 -
oauth2认证协议
oauth2模拟原创 2022-02-20 13:18:18 · 248 阅读 · 0 评论 -
LRU算法-golang
代码:package mainimport ( "fmt")type Node struct { Key, Val interface{} Prev, Next *Node}type LRUCache struct { Size int // 节点的数量 Cap int // 容量 Cache map[interface{}]*Node Head, Tail *Node // 头尾节点}func CreateCache(ca原创 2022-02-26 22:56:18 · 646 阅读 · 0 评论