Toggle navigation
AdairXie Blog
Home
About
Archives
Portfolio
Tags
Tags
keep hungry keep foolish
C
Exploit
LuaSocket
GCC
Phishing
Security
Pwned
OpenResty
Lua
Coroutine
Framework
Flame Graphs
cosocket
Atomicity
Lock
TCP
backlog
module
Recursive
tail call
connection-pool
LuaJIT
Tail Call
Recursion
log
Regex
pairs
metatable
metamethod
userdata
cjson
libc
系统调用
Algorithm
Nginx
lua-resty-pyf
Socket
PRNG
Random
Lua-GD
Hash Collisions
JSHash
Open Addressing
Kong
Redis
Race Conditions
Unicode
Source Code Pro
IDN Homograph Attack
同形异义字攻击
Golang
HTTP
Dep
Prometheus
Service Mesh
Thread safety
Concurrent
Atomic
Memory Barrier
pprof
Goroutine Leak
RabbitMQ
Data consistence
源码分析
go标准库
goroutine 调度
C
Linux kernel perf_events local root exploit
Exploit
Linux kernel perf_events local root exploit
LuaSocket
luasocket getaddrinfo nil 问题
GCC
luasocket getaddrinfo nil 问题
Phishing
挖掘 iCloud 钓鱼站汇总
凡事留一线,日后好相见
Security
挖掘 iCloud 钓鱼站汇总
凡事留一线,日后好相见
Pwned
挖掘 iCloud 钓鱼站汇总
凡事留一线,日后好相见
OpenResty
Kong 0.12.3 的一处内存泄漏分析
OpenResty TroubleShooting
OpenResty Con 2017 中的一个彩蛋
welcome to the future
也谈 ngx.ctx 继承问题
适合自己的才是最好的
重新认识 randomseed
原生 Lua 的 randomseed 是不支持浮点数的
正确认识随机数
北京车牌摇号的算法是公平的
OpenResty 中的安全隐患
OpenResty 中写日志的套路
记录日志很重要,套路同样更重要
OpenResty 中的连接池
连接池常见问题排查
OpenResty 中的 Atomicity & Lock
OR 中的原子性和锁
cosocket
cosocket 的 connect 是会有创建 sock 的行为的
Lor 源码解析
OpenResty Coroutine 的调度机制
Lua
OpenResty Con 2017 中的一个彩蛋
welcome to the future
pairs 的遍历顺序
其实本质上还是按照顺序遍历的
Lua string hash 算法
JSHash
Lua string 哈希碰撞
Hash Collisions
TIME_WAIT 的 Timer
重新认识 randomseed
原生 Lua 的 randomseed 是不支持浮点数的
Lua 中的随机数
随机数生成对我们太重要了,我们不能让它随机生成
OpenResty 中的安全隐患
Lua 汉字拼音首字母提取
计算机内部只存储和处理字节,字符只是人类理解的概念。
Lua 排序算法 - 插入排序
Insertion Sort
Lua 排序算法 - 选择排序
Selection Sort
Lua 排序算法 - 归并排序
Merge Sort
Lua 排序算法 - 快速排序
Quick Sort
Lua 排序算法 - 冒泡排序
Bubble Sort
Lua 的标准输出与缓存
cjson 的抢占问题
默认的 cjson 其实是 “共享” 的
使用 newproxy 生成 userdata
原生的 Lua 也是可以生成 userdata 的
__len 其实很鸡肋
5.1 的 table 是不支持 __len 的
Metatable 二三事
告别 Metatable 小白
Lua 正确处理可变参数
一定要注意 table 中的 hole
Lua string.find 中的 “坑”
tail call 到底有啥用?
来体验下 proper tail call 强大的威力
利用 loadstring 实现模块动态加载
Lua 中模块的动态加载
require 理解
Lua require 模块加载机制
Lor 源码解析
OpenResty Coroutine 的调度机制
Coroutine
OpenResty Coroutine 的调度机制
Framework
Lor 源码解析
Flame Graphs
Kong 0.12.3 的一处内存泄漏分析
OpenResty TroubleShooting
Lor 源码解析
cosocket
cosocket
cosocket 的 connect 是会有创建 sock 的行为的
Atomicity
Golang 是否有必要内存对齐?
内存模型
谈谈 Kong rate-limiting 插件中的缺陷
Redis 高频卡控中的 Race Conditions 问题
OpenResty 中的 Atomicity & Lock
OR 中的原子性和锁
Lock
OpenResty 中的 Atomicity & Lock
OR 中的原子性和锁
TCP
线上一次大量 CLOSE_WAIT 复盘
redigo 的超时机制
Golang RabbitMQ 故障排查一例
断线重连的正确姿势
IPv4 也是可以访问 IPv6 服务的
Golang 总是喜欢一厢情愿的隐藏掉很多细节
TCP 常见故障排查
TCP Troubleshooting
TIME_WAIT 的 Timer
警惕系统中那些异常的 RST
认真学习协议栈很重要
理解 timeout,这一篇就够了
对 TCP 协议栈的理解总是需要慢慢积累
捋一捋 backlog 的作用
聊不完的 TCP/IP
backlog
捋一捋 backlog 的作用
聊不完的 TCP/IP
module
利用 loadstring 实现模块动态加载
Lua 中模块的动态加载
require 理解
Lua require 模块加载机制
Recursive
tail call 到底有啥用?
来体验下 proper tail call 强大的威力
tail call
tail call 到底有啥用?
来体验下 proper tail call 强大的威力
connection-pool
OpenResty 中的连接池
连接池常见问题排查
LuaJIT
重新认识 randomseed
原生 Lua 的 randomseed 是不支持浮点数的
Lua 中的随机数
随机数生成对我们太重要了,我们不能让它随机生成
Goto in LuaJIT
吊炸天的 LuaJIT
Tail Call
Goto in LuaJIT
吊炸天的 LuaJIT
Recursion
Goto in LuaJIT
吊炸天的 LuaJIT
log
OpenResty 中写日志的套路
记录日志很重要,套路同样更重要
Regex
Lua string.find 中的 “坑”
pairs
Lua 正确处理可变参数
一定要注意 table 中的 hole
metatable
使用 newproxy 生成 userdata
原生的 Lua 也是可以生成 userdata 的
Metatable 二三事
告别 Metatable 小白
metamethod
__len 其实很鸡肋
5.1 的 table 是不支持 __len 的
userdata
使用 newproxy 生成 userdata
原生的 Lua 也是可以生成 userdata 的
cjson
cjson 的抢占问题
默认的 cjson 其实是 “共享” 的
libc
Lua 的标准输出与缓存
系统调用
Lua 的标准输出与缓存
Algorithm
pairs 的遍历顺序
其实本质上还是按照顺序遍历的
Lua string hash 算法
JSHash
Lua 排序算法 - 插入排序
Insertion Sort
Lua 排序算法 - 选择排序
Selection Sort
Lua 排序算法 - 归并排序
Merge Sort
Lua 排序算法 - 快速排序
Quick Sort
Lua 排序算法 - 冒泡排序
Bubble Sort
Nginx
NGINX resolver 配置中的 "坑"
不要着急去当第一个吃螃蟹的人
理解 timeout,这一篇就够了
对 TCP 协议栈的理解总是需要慢慢积累
lua-resty-pyf
Lua 汉字拼音首字母提取
计算机内部只存储和处理字节,字符只是人类理解的概念。
Socket
警惕系统中那些异常的 RST
认真学习协议栈很重要
PRNG
浅谈 Kong key-auth 插件 token 的生成
CSPRNG or 真随机?
直观的表现 PRNG 周期性
无图无真相。真的真,真出声
重新认识 randomseed
原生 Lua 的 randomseed 是不支持浮点数的
Lua 中的随机数
随机数生成对我们太重要了,我们不能让它随机生成
正确认识随机数
北京车牌摇号的算法是公平的
Random
浅谈 Kong key-auth 插件 token 的生成
CSPRNG or 真随机?
直观的表现 PRNG 周期性
无图无真相。真的真,真出声
Lua 中的随机数
随机数生成对我们太重要了,我们不能让它随机生成
Lua-GD
直观的表现 PRNG 周期性
无图无真相。真的真,真出声
Hash Collisions
Lua string 哈希碰撞
Hash Collisions
JSHash
pairs 的遍历顺序
其实本质上还是按照顺序遍历的
Lua string hash 算法
JSHash
Open Addressing
pairs 的遍历顺序
其实本质上还是按照顺序遍历的
Kong
说下 Kong 的非主流 Service Mesh 之路
Service Mesh
Kong 0.12.3 的一处内存泄漏分析
OpenResty TroubleShooting
也谈 ngx.ctx 继承问题
适合自己的才是最好的
Kong 插件开发指南
Plugin Development
Kong 的事件和缓存
Kong 集群解析
Kong 插件非官方 FAQ
Unofficial FAQ
Kong 插件加载机制源码解析
以请求的视角窥探 Kong 的数据走向
Kong 插件加载机制概述
以请求的视角回顾自己的一生
浅谈 Kong key-auth 插件 token 的生成
CSPRNG or 真随机?
谈谈 Kong rate-limiting 插件中的缺陷
Redis 高频卡控中的 Race Conditions 问题
Redis
谈谈 Kong rate-limiting 插件中的缺陷
Redis 高频卡控中的 Race Conditions 问题
Race Conditions
谈谈 Kong rate-limiting 插件中的缺陷
Redis 高频卡控中的 Race Conditions 问题
Unicode
Source Code Pro 字体其实并不完美
Courier New 不愧为终端之王
Source Code Pro
Source Code Pro 字体其实并不完美
Courier New 不愧为终端之王
IDN Homograph Attack
Source Code Pro 字体其实并不完美
Courier New 不愧为终端之王
同形异义字攻击
Source Code Pro 字体其实并不完美
Courier New 不愧为终端之王
Golang
Golang 是否有必要内存对齐?
内存模型
线上一次大量 CLOSE_WAIT 复盘
redigo 的超时机制
Go 1.12 关于内存释放的一个改进
并不是内存泄露
Golang RabbitMQ 故障排查一例
断线重连的正确姿势
Goroutine 泄露排查
pprof 无他
谈谈 Golang 中的 Data Race(续)
编译器是可以优化的, 并且没有 memory barrier
谈谈 Golang 中的 Data Race
到底啥是原子性
Golang Dep 依赖冲突处理
Dep Dependencies
IPv4 也是可以访问 IPv6 服务的
Golang 总是喜欢一厢情愿的隐藏掉很多细节
Golang -ldflags 的一个技巧
go version 信息注入
HTTP
If-None-Match 在刷票软件中的应用
那些刷票的骚操作
Dep
Golang Dep 依赖冲突处理
Dep Dependencies
Prometheus
Golang Dep 依赖冲突处理
Dep Dependencies
Service Mesh
说下 Kong 的非主流 Service Mesh 之路
Service Mesh
Thread safety
谈谈 Golang 中的 Data Race(续)
编译器是可以优化的, 并且没有 memory barrier
谈谈 Golang 中的 Data Race
到底啥是原子性
Concurrent
并发扣款,如何保证数据的一致性?
数据一致性
谈谈 Golang 中的 Data Race(续)
编译器是可以优化的, 并且没有 memory barrier
谈谈 Golang 中的 Data Race
到底啥是原子性
Atomic
谈谈 Golang 中的 Data Race
到底啥是原子性
Memory Barrier
谈谈 Golang 中的 Data Race(续)
编译器是可以优化的, 并且没有 memory barrier
pprof
Goroutine 泄露排查
pprof 无他
Goroutine Leak
Goroutine 泄露排查
pprof 无他
RabbitMQ
Golang RabbitMQ 故障排查一例
断线重连的正确姿势
Data consistence
并发扣款,如何保证数据的一致性?
数据一致性
源码分析
Goroutine调度分析
golang标准库
请问sync.Pool有什么缺点?
golang标准库
sync.Pool原理及源码分析
golang标准库
go标准库
请问sync.Pool有什么缺点?
golang标准库
sync.Pool原理及源码分析
golang标准库
goroutine 调度
Goroutine调度分析
golang标准库