摘要:
基于 iptables 的防火墙方案 假设两台主机 A(172.29.100.100) 和 B(10.100.100.100), iptables 规则应用于 A 机器上. 允许两台主机互通 -A INPUT -s 10.100.100.100 -j ACCEPT -A INPUT -s 0.0.0 阅读全文
摘要:
记一次并发导致的事故 简化业务逻辑如下: 创建一批收件人; 点击发送按钮时发送邮件给这批发件人; 现象是有一批人收到了两封邮件, 还有少部分人收到了 3 封. 原因分析 每次触发发送任务都有一个唯一的 traceid, 记录日志时会带上 traceid, 将日志按 traceid 分组获取第一条和最 阅读全文
摘要:
mutex 流程 type Mutex struct { state int32 sema uint32 } 等效于 type Mutex struct { locked uint woken uint starving uint waiterCount uint sema uint32 } Loc 阅读全文
摘要:
WaitGroup流程 type WaitGroup struct { noCopy noCopy // 64-bit value: high 32 bits are counter, low 32 bits are waiter count. // 64-bit atomic operations 阅读全文
摘要:
优雅关闭 channel 不使用select, 不借助额外channel. package main import ( "fmt" "sync" ) func main() { data_c := make(chan string, 10) // producer group go func() { 阅读全文
摘要:
Cannot assign requested address 问题排查 背景 工单服务调用了我提供的自动化接口, 但是显示调用失败, 失败原因: Cannot assign requested address. 排查过程 根据提示猜测是端口用尽. 登录机器查看: >>> netstat -nap 阅读全文
摘要:
任务下发优化分析过程记录 背景 最近接手了一个任务下发平台, 基本功能是接收任务脚本, 下发给目标服务器执行. 简化的业务流程如下: sequenceDiagram autonumber participant client participant server participant DB par 阅读全文
摘要:
从字节码的角度看 python 变量交换 背景 从一道算法题开始: 反转链表 class ListNode: def __init__(self, v) -> None: self.val = v self.next = None def add_next(self, v): new_node = 阅读全文
摘要:
python3.6 使用调用栈储存上下文变量 从 python3.7 开始, 新增 contextvars 模块, 用于储存上下文变量. 使用场景 # python3.7 from contextvars import ContextVar import asyncio user = Context 阅读全文
摘要:
python 服务自动生成 js 调用 原理 接管请求分发过程; 为每个 command 维护对应的 handler; 利用 python 动态特性, 获得 handler 的参数; 利用模版生成 js 代码; 利用**kwargs 获取所有参数传递给 handler; Demo 以 Flask 为 阅读全文