nsq 源码 diskQueue 讲解
diskQueue是backendQueue接口的一个实现。backendQueue的作用是在实现在内存go channel缓冲区满的情况下对消息的处理的对象。 除了diskQueue外还有dummyBackendQueue实现了backendQueue接口。 对于临时(#ephemeral结尾)Topic/Channel,在创建时会使用dummyBackendQueue初始化backend, dummyBackendQueue只是为了统一临时和非临时Topic/Channel而写的,它只是实现了接口,不做任何实质上的操作, 因此在内存缓冲区满时直接丢弃消息。这也是临时Topic/Channel和非临时的一个比较大的差别。 每个非临时Topic/Channel,创建的时候使用diskQueue初始化ba..
更多nsq Topic
与Topic相关的代码主要位于nsqd/topic.go中。 上一篇文字我们讲解了下nsq的启动流程。对nsq的整体框架有了一个大概的了解。本篇文章就是由大到小。对于topic这一部分进行详尽的讲解。 topic 管理着多个 channel 通过从 client 中获取消息,然后将消息发送到 channel 中传递给客户端.在 channel 初始化时会加载原有的 topic 并在最后统一执行 topic.Start(),新创建的 topic 会同步给 lookupd 后开始运行. nsqd 中通过创建创建多个 topic 来管理不同类别的频道. topic结构体: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2..
更多Pentest | 2022 1337UP LIVE CTF Workthrough
Introduction 2022 1337UP LIVE CTF 比赛类型:Jeopardy[解题] 比赛形式:线上 比赛时间:2022-03-11 23:00 ~ 2022-03-12 23:00 比赛官网:https://ctf.intigriti.io/ 啊,好久没水博客了,最近打比赛基本是和队友一起看看题目,然而队友太强了基本不需要喵喵了,考虑到咱做的不多也比较懒于是懒得写 writeup 了。(你就是懒吧!呜呜,别打喵喵) 周末看到群友发了 1337UP LIVE CTF 这个国外的比赛,周六晚上就来瞄了一眼题目,看到了 可爱猫猫图片 这个题目,wow, how cute they are! Just do it! 这是道 偏渗透类型 的套题,以至于还单独分了个类,于是接下来就是一些 w..
更多我两周就写了三行代码 - ARM Cortex A9 中断与浮点数运算、FPU 问题
问题出现公司产品采用了 Xilinx Zynq 7z010 芯片,用于运动控制以及网络通讯。两周前,测试过程中发现网络通信会小概率出错,TCP 收到的数据 CRC 校验失败,无法稳定复现。设备平台概述:CPU: Cortex-A9 双核RAM: 1GB DDR3操作系统: FreeRTOS网络协议栈: lwip211定位过程怀疑应用层数据处理问题TCP 是二进制数据流,每个包的长度不固定,应用层也许会写错。于是我修改了应用层的处理方案,手动构造了定长的数据包,虽然会导致 TCP 流量大幅上涨,但是逻辑看起来更清晰。然而,修改后,似乎由于流量变大了,原来小概率出现的错误,现在大概率会出现!这也给 Debug 带来了有利的一面。怀疑网络通讯链路电磁干扰问题但是这个怀疑方向很快就被否定了,因为我用了 TCP 协..
更多nsq 启动流程讲解
这篇文章我们就正式的开始分析nsq的代码了,上一篇给大家介绍了下nsq的特性和功能。再分析代码的同时,大家可以比对着我写的nsq精注版代码一遍看一遍调试。这样的效果更佳。 nsq精注版地址:nsq精注版 下面进入正题,nsqd的主函数位于apps/nsqd.go中的main函数。 在初始化的时候,它使用了第三方进程管理包 go-svc 来托管进程,go-svc有三个方法进行管理: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 func main() { if err := svc.Run(prg, syscall.SIGINT, syscall.SIGTERM); e..
更多V2ray HTTP/2+TLS+WEB 一键部署
TLS+NGINX+WEB 的 v2ray 一键脚本: https://github.com/IITII/AutoV2rayV2ray 不完全测速(想选择协议的可以看看):https://iitii.github.io/2022/03/01/1/ 前置条件有一个域名一台干净的 Linux 服务器会一些 Linux 的基本操作服务器基本信息以 Ubuntu20.04 为例 可以访问 “网络”防火墙已开启 22, 80, 443安装基本工具1sudo apt update -y && sudo apt install git -yClone 项目1git clone https://github.com/IITII/AutoV2ray2.git &a..
更多nsq 初识
NSQ 最初是由 bitly 公司开源出来的一款简单易用的分布式消息中间件,它可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息。 特性 分布式: 它提供了分布式的、去中心化且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和高可用特性。 易于扩展: 它支持水平扩展,没有中心化的消息代理( Broker ),内置的发现服务让集群中增加节点非常容易。 运维方便: 它非常容易配置和部署,灵活性高。 高度集成: 现在已经有官方的 Golang、Python 和 JavaScript 客户端,社区也有了其他各个语言的客户端库方便接入,自定义客户端也非常容易。 组件 Topic:一个 topic 就是程序发布消息的一个逻辑键,当程序第一次发布消息时就会创建 topic。 Chann..
更多golang Http server包分析 二 源码解析
该文章是分析golang http-server包的系列文章,本篇是第二篇,核心帮助大家深入http-server包的逻辑。明白http包是如何运转的,如何解析http协议。 我们继续看,直接进入ListenAndServe函数: 1 2 3 4 func ListenAndServe(addr string, handler Handler) error { server := &Server{Addr: addr, Handler: handler} return server.ListenAndServe() } 可以看到,把addr放到一个Server结构中,并且调用ListenAndServer()。这里面向对象的方法,相当于Java中new一个对象的实例,..
更多V2ray 不完全测速
背景最近看到 v2fly 上面多了蛮多新玩法。综合个人隐蔽性需求,将对以下搭配使用 iperf, speedtest mini, v2ray, clash premium 和 speedtest-cli 进行测速。测速方式来自:https://steemit.com/cn/@v2ray/3cjiux 只考虑这两种隐蔽性强和兼容相对广泛的搭配。 比如 VLESS+WEB 通过分流器的操作,识别起来比较方便,WireShark就可以很简单的区分,故不考虑。 HTTP 协议TLSv2ray inbound协议加密HTTP/2YESH2CnoneHTTP/2YESH2CAES-128-GCMHTTP 1.xYESWSnoneHTTP 1.xYESWSAES-128-GCM本次测试的目的测试 VMess 基于..
更多golang Http server包分析 一 初识
该文章是分析golanghttp包的系列文章,本篇是第一篇,核心帮助大家了解和熟悉golang http包的整体逻辑。希望大家看完后能有所收货,有问题可以在博客留言板和我留言。 首先,熟悉http协议的都知道,http协议是基于TCP实现的。 http服务器的工作方式大概就是监听socket端口,接受连接,获取到请求,处理请求,返回响应。 所以,对应的会有几个部分 Request:用户请求的信息。post、get、url等这些信息 Response: 返回给客户端的信息 Conn: 用户每次的连接请求 Handler:处理请求和返回信息的逻辑处理 演示 我们直接调用2个方法就可以开启一个http服务器。 1 2 3 4 5 6 7 8 9 10 fu..
更多