当前位置: 首页 > article >正文

Swoole + Redis Cluster 实时推送系统(千万级QPS压测实录+全链路监控配置清单)

第一章Swoole Redis Cluster 实时推送系统概览现代高并发实时推送场景如聊天消息、行情更新、协同编辑对系统吞吐量、低延迟与水平扩展能力提出严苛要求。本系统以 Swoole 作为高性能异步协程服务器核心结合 Redis Cluster 提供分布式键值存储与发布/订阅能力构建无单点瓶颈、支持百万级连接的实时消息分发架构。核心组件职责划分Swoole Server承载长连接管理、协程化消息路由、协议解析如 WebSocket 或自定义二进制协议Redis Cluster提供跨节点的 Pub/Sub 支持通过 Redis 7.0 原生集群 Pub/Sub 模式、用户在线状态维护、消息去重缓存业务网关层统一接入鉴权、设备绑定、频道订阅关系同步典型消息流转路径客户端通过 WebSocket 连接至任意 Swoole Worker 进程并完成身份认证与频道订阅服务端将该连接元数据如 client_id、channel、node_id写入 Redis Cluster 的哈希槽例如使用HSET online:users {uid} {json}当某用户发送消息至频道ch:newsSwoole 进程向 Redis Cluster 执行PUBLISH ch:news {msg}所有监听该频道的 Swoole Worker通过Redis::subscribe()或Redis::psubscribe()收到事件并广播至对应连接关键配置示例use Swoole\WebSocket\Server; use Swoole\Redis; $server new Server(0.0.0.0, 9501); $redis new Redis([host redis-cluster, port 6379, cluster true]); // 启用协程 Redis 客户端需启用 Swoole 协程 Hook Co::set([hook_flags SWOOLE_HOOK_ALL]); $server-on(message, function ($server, $frame) use ($redis) { $data json_decode($frame-data, true); if ($data[type] publish) { // 转发至 Redis Cluster 频道自动路由到对应哈希槽 $redis-publish($data[channel], $data[payload]); } });组件能力对比表能力项SwooleRedis Cluster连接承载单机支持 10w 协程连接不直接承载连接仅服务消息中转横向扩展Worker 进程可多机部署依赖外部协调原生支持 3–1000 节点动态扩缩容消息可靠性内存级断电即失支持 AOF RDB 持久化需开启第二章Swoole 高并发核心机制深度解析2.1 Swoole 进程模型与协程调度原理含 strace/gdb 调试实操Swoole 采用多进程 协程混合模型主进程管理 Reactor 线程池I/O 多路复用Worker 进程内通过用户态协程调度器实现轻量并发。协程调度核心机制协程切换不依赖内核调度而是基于 setjmp/longjmp 或 ucontext 实现上下文保存与恢复。Swoole 4.4 默认启用 boost.context 提升性能。strace 跟踪事件循环strace -p $(pgrep php) -e traceepoll_wait,epoll_ctl,read,write -s 128该命令可捕获 Worker 进程对 epoll 的调用链验证协程挂起时是否真正避免了系统调用阻塞。协程生命周期状态对比状态触发时机底层动作WAITINGawait sleep(1)将协程移入定时器队列跳过调度RUNNING被 scheduler 择中执行恢复寄存器上下文继续执行 PHP 字节码2.2 TCP/UDP Server 性能调优实战listen backlog、SO_REUSEPORT 与协程池配置listen backlog 的内核语义listen() 的 backlog 参数并非队列长度上限而是 **SYN 队列半连接与 accept 队列全连接长度之和** 的提示值。Linux 5.4 中实际受 net.core.somaxconn 限制。SO_REUSEPORT 实现多进程负载均衡ln, err : net.ListenConfig{ Control: func(fd uintptr) { syscall.SetsockoptInt32(int(fd), syscall.SOL_SOCKET, syscall.SO_REUSEPORT, 1) }, }.Listen(context.Background(), tcp, :8080)该配置使多个监听进程/协程可绑定同一端口由内核基于五元组哈希分发连接避免惊群且提升 CPU 缓存局部性。协程池与连接处理节奏协同参数推荐值依据max goroutines2 × CPU cores避免调度开销与上下文切换抖动work queue size1024平衡内存占用与突发请求缓冲能力2.3 WebSocket Server 协议栈定制自定义握手、心跳保活与连接状态机实现自定义握手扩展 Sec-WebSocket-Protocol 与 Cookie 验证func customHandshake(r *http.Request, w http.ResponseWriter) bool { // 校验 Origin 与 Token Header if r.Header.Get(X-Auth-Token) || !validOrigin(r.Header.Get(Origin)) { http.Error(w, Unauthorized, http.StatusUnauthorized) return false } // 注入自定义协议标识 w.Header().Set(Sec-WebSocket-Protocol, app-v2) return true }该函数在 Upgrade 前拦截请求强制校验认证头与跨域来源避免未授权连接Sec-WebSocket-Protocol值用于后续路由分发支持多租户协议协商。连接状态机核心流转状态触发事件动作PendingHTTP Upgrade执行 customHandshakeActive收到 PING 或业务帧重置心跳计时器Idle超时无帧发送 PONG 后关闭2.4 Swoole HTTP Server 与静态资源零拷贝优化sendfile 与 mmap 内存映射压测对比零拷贝路径差异Swoole 默认启用sendfile()系统调用传输静态文件绕过用户态缓冲区而mmap则将文件映射至进程虚拟内存配合write()或直接 socket send 实现页级共享。// 启用 mmap 模式需内核支持且文件不被修改 $http-set([ http_static_handler true, static_handler_locations [/static], enable_static_handler true, mmap_file true, // 关键开关 ]);该配置使 Swoole 在满足条件时自动选用mmap writev路径避免 page fault 频繁触发但要求文件大小 ≤ 2GB 且不可被其他进程截断。压测性能对比1KB–1MB 文件10K 并发策略QPSCPU 使用率内存拷贝量传统 read/write12.4K89%高4×拷贝sendfile28.7K41%零用户态拷贝mmap31.2K36%仅页表映射开销2.5 Swoole Task Worker 与消息队列解耦设计异步日志落盘与推送结果回执闭环核心解耦模型Swoole 的 Task Worker 不直接处理业务逻辑而是作为独立进程消费由 Worker 投递的异步任务。日志写入与推送回执被抽象为两个可插拔任务类型通过唯一 task_id 关联上下文。典型任务投递示例// 投递日志落盘 推送回执双任务 $taskId $server-task([ type log_and_notify, data $payload, task_id uniqid(t_, true), timeout 10 ]);该调用非阻塞Worker 立即返回task_id 同时用于 Redis 原子标记与 MySQL 回执状态更新保障幂等性。任务执行与状态协同阶段执行者关键动作日志写入Task Worker追加至本地 SSD 日志文件触发 fdatasync()推送回执Task Worker调用 HTTP API 并监听 2xx 响应更新 status 字段第三章Redis Cluster 在实时推送中的工程化集成3.1 Redis Cluster 槽位分片策略与推送键设计user:uid → slot 映射算法验证槽位映射核心逻辑Redis Cluster 将 16384 个哈希槽0–16383均匀分配至各节点键到槽的映射采用 CRC16 校验和取模def key_to_slot(key: str) - int: # 提取花括号内标签如 user:{123} → 123否则用完整key import re tag_match re.search(r\{([^}])\}, key) effective_key tag_match.group(1) if tag_match else key crc crc16(effective_key.encode()) # RFC 3309 标准实现 return crc % 16384该算法确保相同标签的键始终落入同一槽支撑 hash-tag 语义一致性。典型键映射验证表键名有效标签CRC16 值slot%16384user:1001user:10012957329573user:{1001}10011420114201设计建议业务键强制使用{uid}包裹保障用户数据局部性避免长键名导致 CRC16 冲突率上升3.2 基于 Redis Streams 的有序事件广播XADD/XREADGROUP ACK 语义保障实践核心机制解析Redis Streams 天然支持多消费者组、消息持久化与严格有序交付。XADD 写入事件XREADGROUP 按组拉取ACK 显式标记处理完成形成“至少一次”“可重放”的可靠广播链路。典型消费流程创建消费者组XAUTOCLAIM或XGROUP CREATE消费者调用XREADGROUP GROUP g1 c1 COUNT 10 STREAMS mystream 成功处理后执行XACK mystream g1 idGo 客户端关键代码// 使用 github.com/go-redis/redis/v9 streamMsgs, err : rdb.XReadGroup(ctx, redis.XReadGroupArgs{ Group: g1, Consumer: c1, Streams: []string{mystream, }, Count: 10, }).Result() // 表示只读取未分配给该组的新消息ACK 后消息才从 PEL 中移除消费者组状态对比字段含义示例值pendingPEL 中待确认消息数5idle最老未ACK消息空闲毫秒数124003.3 多节点故障转移下的会话一致性方案RedLock 本地缓存双写校验核心设计思想在 Redis 集群跨节点故障转移场景下单点锁易失效。RedLock 提供分布式强互斥配合本地缓存如 Caffeine实现“先锁后写、双写校验”机制保障会话数据最终一致。双写校验流程客户端通过 RedLock 获取跨节点锁5个独立 Redis 实例多数派成功即获锁更新本地缓存并异步刷新至 Redis 主节点读操作优先查本地缓存命中后比对版本号未命中或版本陈旧则回源加载并重置本地状态关键代码片段String lockKey session: sessionId; boolean locked redLock.tryLock(lockKey, 30, TimeUnit.SECONDS); if (locked) { try { localCache.put(sessionId, session, 10, TimeUnit.MINUTES); // TTL 略短于 Redis TTL redisTemplate.opsForValue().set(sess: sessionId, sessionJson, 15, TimeUnit.MINUTES); } finally { redLock.unlock(lockKey); } }逻辑分析RedLock 锁超时设为 30s确保故障转移窗口内锁仍有效本地缓存 TTL10min严格小于 Redis TTL15min避免脏读版本号嵌入 session JSON 中用于校验。校验策略对比策略一致性保障性能开销适用场景纯 Redis 读写强一致但故障时降级高网络 RTT低并发、高一致性要求本地缓存双写校验最终一致含版本校验低本地命中率95%多节点故障转移常态环境第四章千万级QPS压测体系与全链路可观测性建设4.1 wrk 自研 Lua 脚本构建阶梯式压测模型连接复用、token 注入与灰度路由模拟连接复用与请求定制化wrk 默认启用 HTTP/1.1 连接复用但需在 Lua 脚本中显式管理 session 生命周期-- 自定义请求头与 token 动态注入 function request() local token math.random(1000, 9999) local path /api/v1/user?uid .. token return wrk.format(GET, path, { [Authorization] Bearer .. token, [X-Env-Route] gray-v2 -- 灰度路由标识 }) end该脚本在每次请求前生成唯一 token并注入灰度标头确保请求可追踪且符合服务网格路由策略。阶梯式并发控制策略通过 wrk 的-t线程、-c连接数与-d持续时间组合实现阶梯加压阶段线程数 (-t)连接数 (-c)持续时间基线25060s峰值8400120s4.2 Prometheus Grafana 全栈指标采集Swoole 内置 stats、Redis cluster_nodes、TCP 连接状态三源融合三源统一采集架构通过自研 Exporter 同步拉取三类异构指标经标准化标签service,instance,role对齐后写入 Prometheus。关键采集代码片段// Swoole stats 采集示例 stats : swoole.GetServerStats() ch - prometheus.MustNewConstMetric( swooleActiveRequestDesc, prometheus.GaugeValue, float64(stats[active_request]), api_gateway, )该段代码将 Swoole 运行时活跃请求数转为 Prometheus Gauge 指标api_gateway作为服务标识注入 label确保多实例可区分。指标维度对齐表数据源核心指标关键标签Swoole statsswoole_active_requestserviceswooleRedis cluster_nodesredis_cluster_node_countrolemasterTCP 连接tcp_established_connectionsdirectioninbound4.3 OpenTelemetry 链路追踪注入WebSocket 请求从 handshake 到 broadcast 的 span 全埋点Handshake 阶段 Span 创建WebSocket 连接建立时需在 HTTP Upgrade 请求中注入 trace context。OpenTelemetry SDK 自动捕获 http.Request但需手动包装 http.ResponseWriter 以保留 span 生命周期func wsHandler(w http.ResponseWriter, r *http.Request) { ctx : r.Context() span : trace.SpanFromContext(ctx) // 显式命名 handshake span span.SetName(websocket.handshake) span.SetAttributes(attribute.String(ws.protocol, json)) // 继续升级连接... }该代码确保 handshake 作为 root span 启动并携带协议与子路径元数据为后续 span 建立 parent-child 关系。Message 处理链路延续每个 ReadMessage() 调用生成独立 websocket.receive span广播前通过 SpanContext 注入至消息 payload如 JSON header 字段broadcast 操作创建 child span关联所有接收端 traceIDSpan 语义对照表阶段Span 名称关键属性Handshakewebsocket.handshakehttp.status_code, ws.subprotocolBroadcastwebsocket.broadcastws.recipients.count, ws.message.size4.4 日志聚合与异常根因定位ELK 中 Structured Log 解析 Error Rate 突增自动告警规则Structured Log 格式规范为提升 Elasticsearch 的查询与聚合效率服务端需输出 JSON 结构化日志。关键字段包括timestamp、level、service、trace_id、error_code和stack_trace仅 error 级别。Logstash 解析配置示例filter { json { source message } mutate { add_field { log_date %{[timestamp]} } } date { match [log_date, ISO8601] } }该配置将原始消息解析为 JSON 字段并基于timestamp提取并标准化时间戳确保 Kibana 时间筛选准确。Error Rate 告警规则逻辑指标维度窗口阈值触发条件error_count / total_count5m 5%连续2个窗口超限第五章生产环境部署规范与演进路线图核心部署原则生产环境必须遵循不可变基础设施、声明式配置、最小权限与端到端可观测性四大支柱。所有服务镜像需通过 CI 流水线构建并签名禁止在运行节点上手动修改配置或二进制文件。标准化部署清单容器镜像必须携带 SBOM软件物料清单元数据通过cosign verify校验签名Kubernetes 部署需强制启用 PodSecurityPolicy或等效的 PSA 级别所有 Secrets 必须经 HashiCorp Vault 注入禁用 ConfigMap 存储敏感字段渐进式灰度发布策略# 示例Argo Rollouts 的金丝雀配置片段 spec: strategy: canary: steps: - setWeight: 5 - pause: { duration: 300 } # 5分钟观察期 - setWeight: 20 - analysis: templates: [latency-check]基础设施即代码演进路径阶段工具链验证方式基础编排Terraform Helmtfplan diff helm template --dry-run策略驱动Open Policy Agent ConftestCI 中阻断违反 PCI-DSS 规则的资源配置真实案例某金融中台升级将单体部署切换至 GitOps 模式后平均故障恢复时间MTTR从 47 分钟降至 6.2 分钟通过引入 OPA 策略引擎拦截了 127 次高危配置提交如暴露 admin port 的 Service。

相关文章:

Swoole + Redis Cluster 实时推送系统(千万级QPS压测实录+全链路监控配置清单)

第一章:Swoole Redis Cluster 实时推送系统概览现代高并发实时推送场景(如聊天消息、行情更新、协同编辑)对系统吞吐量、低延迟与水平扩展能力提出严苛要求。本系统以 Swoole 作为高性能异步协程服务器核心,结合 Redis Cluster 提…...

Carsim与Simulink联合仿真模型——AEB的cpar文件、simulink模型文件及...

Carsim与Simulink联合仿真模型——AEB 提供cpar文件,simulink模型文件,模型搭建过程文档在汽车开发领域,安全系统始终占据着举足轻重的地位。其中,主动安全辅助系统(AEB)作为现代汽车的安全核心&#xff0c…...

Blynk物联网开发:从零到一的完整高效解决方案

Blynk物联网开发:从零到一的完整高效解决方案 【免费下载链接】blynk-library Blynk library for IoT boards. Works with Arduino, ESP32, ESP8266, Raspberry Pi, Particle, ARM Mbed, etc. 项目地址: https://gitcode.com/gh_mirrors/bl/blynk-library Bl…...

react-native-fetch-blob完整教程:从零开始掌握文件上传下载

react-native-fetch-blob完整教程:从零开始掌握文件上传下载 【免费下载链接】react-native-fetch-blob A project committed to making file access and data transfer easier, efficient for React Native developers. 项目地址: https://gitcode.com/gh_mirror…...

Linux Docker 安装与使用详细教程

一、Docker 概述 1.1 什么是 Docker? Docker 是一个开源的应用容器引擎,基于 Go 语言开发并遵从 Apache2.0 协议开源。它可以让开发者将应用及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,实现虚…...

Phi-4-mini-reasoning推理模型快速入门:Docker一键部署全攻略

Phi-4-mini-reasoning推理模型快速入门:Docker一键部署全攻略 1. 认识Phi-4-mini-reasoning推理模型 Phi-4-mini-reasoning是微软推出的轻量级开源推理模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这个3.8B参数的模型虽然体积小巧&#x…...

Browser.html快速入门:5分钟搭建你的第一个HTML浏览器

Browser.html快速入门:5分钟搭建你的第一个HTML浏览器 【免费下载链接】browserhtml Experimental Servo browser built in HTML 项目地址: https://gitcode.com/gh_mirrors/br/browserhtml Browser.html是一个基于HTML构建的实验性浏览器项目,它…...

如何快速入门网络自动化:awesome-network-automation新手教程

如何快速入门网络自动化:awesome-network-automation新手教程 【免费下载链接】awesome-network-automation Curated Awesome list about Network Automation 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-network-automation 网络自动化是网络基础…...

革命性文件传输神器react-native-fetch-blob:告别BASE64性能瓶颈的终极指南

革命性文件传输神器react-native-fetch-blob:告别BASE64性能瓶颈的终极指南 【免费下载链接】react-native-fetch-blob A project committed to making file access and data transfer easier, efficient for React Native developers. 项目地址: https://gitcode…...

Scio REPL交互式编程:快速原型开发和数据分析的终极指南

Scio REPL交互式编程:快速原型开发和数据分析的终极指南 【免费下载链接】scio A Scala API for Apache Beam and Google Cloud Dataflow. 项目地址: https://gitcode.com/gh_mirrors/sc/scio Scio REPL交互式编程是Apache Beam和Google Cloud Dataflow的Sca…...

FastAPI子应用挂载:别再让root_path坑你一夜舶

Julia(julialang.org)由Stefan Karpinski、Jeff Bezanson等在2009年创建,目标是融合Python的易用性、C的高性能、R的统计能力、Matlab的科学计算生态。 其核心设计哲学是: 高性能:编译型语言(JIT&#xff0…...

Scio与Google Cloud Dataflow集成:构建可扩展大数据解决方案

Scio与Google Cloud Dataflow集成:构建可扩展大数据解决方案 【免费下载链接】scio A Scala API for Apache Beam and Google Cloud Dataflow. 项目地址: https://gitcode.com/gh_mirrors/sc/scio Scio是一个基于Apache Beam的Scala API,专为Goog…...

终极指南:如何构建高可用AITemplate推理服务的跨区域灾备方案

终极指南:如何构建高可用AITemplate推理服务的跨区域灾备方案 【免费下载链接】AITemplate AITemplate is a Python framework which renders neural network into high performance CUDA/HIP C code. Specialized for FP16 TensorCore (NVIDIA GPU) and MatrixCore…...

GPT-6 Spud倒计时×AI格局变局:2026年4月第一周全景扫描

上一篇 OpenClaw生态模型使用量全景:国产模型主导12.96万亿Token时代 下一篇 GPT-6 Spud深度解析:Symphony架构、双系统推理与OpenAI的AGI豪赌 摘要 2026年4月第一周(3月31日至4月6日),AI行业迎来密集动态&#xff1a…...

Outlook无法添加共享邮箱怎么办?一篇文章教你完成共享邮箱添加与发送配置

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...

Redis命令处理机制源码探究疗

一、项目背景与核心价值 1. 解决的核心痛点 Navicat的数据库连接密码并非明文存储,而是通过AES算法加密后写入.ncx格式的XML配置文件中。一旦用户忘记密码,常规方式只能重新配置连接,效率极低。本项目只作为学习研究使用,不做其他…...

三步解决Fiji在macOS系统的启动故障问题

三步解决Fiji在macOS系统的启动故障问题 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji Fiji作为ImageJ的"开箱即用"发行版,整合了大量生物图像处理…...

如何打造终极纯净阅读体验:ReadCat免费开源小说阅读器完整指南

如何打造终极纯净阅读体验:ReadCat免费开源小说阅读器完整指南 【免费下载链接】read-cat 一款免费、开源、简洁、纯净、无广告的小说阅读器 项目地址: https://gitcode.com/gh_mirrors/re/read-cat 在数字阅读应用泛滥的今天,ReadCat免费开源小说…...

gitru:一个由 Rust 打造的零依赖 Git 提交信息校验工具蚕

一、项目背景与核心价值 1. 解决的核心痛点 Navicat的数据库连接密码并非明文存储,而是通过AES算法加密后写入.ncx格式的XML配置文件中。一旦用户忘记密码,常规方式只能重新配置连接,效率极低。本项目只作为学习研究使用,不做其他…...

使用Spring AI Alibaba构建智能体Agent倥

背景 在软件开发的漫长旅途中,"构建"这个词往往让人又爱又恨。爱的是,一键点击,代码变成产品,那是程序员最迷人的时刻;恨的是,维护那一堆乱糟糟的构建脚本,简直是噩梦。 在很多项目中…...

PHP 8.9 JIT调试稀缺资源包首发:含自研jit-trace-analyzer工具链、12个真实微服务JIT崩溃core dump样本(限前500名下载)

第一章:PHP 8.9 JIT调试稀缺资源包发布说明 PHP 社区正式发布首个面向 PHP 8.9(开发代号“Vesuvius”)的 JIT 调试资源包(JIT Debug Resource Pack, JD-RP v0.1.0),专为深度分析 OPCache JIT 编译行为、寄存…...

OpCore-Simplify:零基础也能轻松制作黑苹果EFI的终极指南

OpCore-Simplify:零基础也能轻松制作黑苹果EFI的终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置而烦恼吗…...

League-Toolkit:英雄联盟客户端终极自动化工具与数据分析平台完整指南

League-Toolkit:英雄联盟客户端终极自动化工具与数据分析平台完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Tool…...

如何通过Win11Debloat解决Windows系统卡顿与隐私泄露问题

如何通过Win11Debloat解决Windows系统卡顿与隐私泄露问题 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and customize …...

FanControl深度配置指南:解决Windows散热控制三大痛点

FanControl深度配置指南:解决Windows散热控制三大痛点 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa…...

如何高效管理全面战争MOD?虎符台Legion Seal终极指南

如何高效管理全面战争MOD?虎符台Legion Seal终极指南 【免费下载链接】legion-seal 虎符台/Legion Seal,全面战争游戏MOD管理器,技术栈:Tauri 2 Vue TailwindCSS 项目地址: https://gitcode.com/zeyl/legion-seal 前言&a…...

如何高效管理全面战争MOD:虎符台/Legion Seal完整指南

如何高效管理全面战争MOD:虎符台/Legion Seal完整指南 【免费下载链接】legion-seal 虎符台/Legion Seal,全面战争游戏MOD管理器,技术栈:Tauri 2 Vue TailwindCSS 项目地址: https://gitcode.com/zeyl/legion-seal 前言&…...

3个革新性步骤:Cursor Free VIP突破AI编程助手使用限制

3个革新性步骤:Cursor Free VIP突破AI编程助手使用限制 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tr…...

FreakStudio滞

环境安装 pip install keystone-engine capstone unicorn 这3个工具用法极其简单,下面通过示例来演示其用法。 Keystone 示例 from keystone import * CODE b"INC ECX; ADD EDX, ECX" try: ks Ks(KS_ARCH_X86, KS_MODE_64) encoding, count ks.…...

剑指offer-61、序列化二叉树

请实现两个函数,分别⽤来序列化和反序列化⼆叉树⼆叉树的序列化是指:把⼀棵⼆叉树按照某种遍历⽅式的结果以某种格式保存为字符串,从⽽使得内存中建⽴起来的⼆叉树可以持久保存。序列化可以基于先序、中序、后序、层序的⼆叉树遍历⽅式来进⾏…...