http2 的continuation frame 复盘

如标题所说http2 的continuation frame 攻击

看文章的时候 https://m.cnbeta.com.tw/view/1426407.htm 看到的 关于HTTP2协议的 漏洞。

该漏洞被称为"HTTP/2 CONTINUATION Flood”,它利用了配置不当的HTTP/2 实现,这些实现未能限制或净化请求数据流中的 CONTINUATION 帧。 CONTINUATION 帧是一种用于延续报头块片段序列的方法,允许报头块在多个帧中分割。当服务器收到一个特定的 END_HEADERS 标志,表明没有其他 CONTINUATION 或其他帧时,先前分割的报头块就被视为已完成。

正常来说按照http2的协议规定,就是服务端需要把client 侧所发的所有的CONTINUATION 进行一个merge 操作,但是如果协议实现软件没有注意设置header CONTINUATION header 限制,攻击者只需要在同一个http2 connection中, 不停的发 CONTINUATION帧, 就可以实现DOS攻击。

比较下golang 的标准json 包 和 json-iterator 的性能diff

首先说下问题吧,因为项目里面底层大量数据都是json 存储的,所以在程序里面就必须要用json序列化和反序列化。但是因为golang 里面的 标准库encoding/json cpu 占用很高(大量用到反射),所以寻找到了替代品 jsonitor (jsonitor 也用了反射,但是性能在我们的数据测试下 好了差不多一倍), 这次就是写篇总结看下 俩者有啥区别。

Nginx 的学习梳理。

关于陶辉老师 极客时间里面的Nginx 100讲的汇中理解,梳理自己对Nginx 的理解 以及从中延伸出去的东西然后做一点自己的了解 ,从而深入的理解

对于git的小技巧使用。

记录一些在工作中遇到的git 的小技巧 #查看 俩个tag 之间 提交多少commit 的 comments git log 0.1.23..0.1.26 --oneline --decorate #查看commit 有指定的 代码 修改 删除 行数 ( git log --grep='xxxx'

关于CPU缓存的一些记录

CPU 缓存的学习:

基础的一点概念:

CPU 一般三级缓存 (L1 ,L2, L3):

L1: 缓存指令 和 数据缓存,L2,L3 不分这些。

L1, L2 是每个CPU 各自有各种的, L3 是所有CPU共享的内存。

Leet_code_practice

做 LeetCode 的一些记录(持续更新…) 希望做公司业务的同时,能每天有一点时间,做做这种锻炼逻辑,数据结构的东西。 1. 字符串中最长的子字符串

Redis 基础的数据结构

An introduction to Redis data types and abstractions Redis 的丰富的 data structrues: Binary-safe strings 二进制安全的字符串 list 列表 sorted by insertion Set 集合 unique & unsort Hash 哈希表 键值的映射 类似Ruby or Python 的hash Bit array(or simply bitmaps): 就是二进制位