整理一下最近学到的一个有趣的东西
生活在树上-始终热爱大地-升入天空
之前写了个go的web框架,采用的路由树类似Trie树,将路由用”/“切分成字符串数组的形式,去逐一匹配每层对应的路径。而go的著名开源框架Gin采用的则是的Radix树。今天通过路由的实际应用,简单介绍下两种树并分析下优劣
推荐两篇个人认为讲http1.1->http2.0非常好的文章
最近用go写web时,在网上简单查了下客户端请求的代码,发现有的在读取response后会执行response.Body.Close()
,有的则不会。在网上查阅了下发现如果不执行可能会导致goroutine泄漏。本着质疑到底的精神,笔者今天就做个实验验证一下,并对相关源码作一下深入的解析
singleflight是go扩展库提供的一种并发原语,当有大量并发请求时,只允许一个请求去实际调用这个回调函数,等到这个请求返回结果的时候,再把结果返回给其他几个同时调用了相同函数的请求,这样可以减少并发调用的数量。在实际应用中,它能够在一个服务中减少对下游的并发重复请求。一个常见的使用场景是防止缓存击穿
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true