自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

A152419的博客

共同成长,一起进步

  • 博客(24)
  • 收藏
  • 关注

原创 DPDK UDP通信

win10 运行 socket 客户端工具 + Linux DPDK 运行 UDP 程序。从官方提供的 demo 中拷贝个 Makefile 修改一下即可。

2024-04-24 20:32:31 308

原创 DPDK timer 解析

可以看到的是有两个定时器 timer0 和 timer1, timer0 是绑定到当前 cpu 核心一直是 core 0 触发定时器 0,目标文件路径:./dpdk 源码/examples/timer/build/timer。源码路径:./dpdk 源码/examples/timer/而 timer1 则是在不同核心触发定时器 1。编译方法:在上面路径下执行 make。

2024-04-23 22:15:09 527

原创 DPDK helloworld 解析

计划通过学习 DPDK 官方提供的 demo, 对 DPDK API 的使用有一些了解,helloworld 程序是其中最简单的程序,还是实际上手学习能更快一些。通过上面结果可以看出,hello 被输出了 8 次,通过查看源码发现,每个 cpu 都注册了一个 lcore_hello 函数,目标文件路径:./dpdk 源码/examples/helloworld/build/helloworld。源码路径:./dpdk 源码/examples/helloworld/编译方法:在上面路径下执行 make。

2024-04-23 22:13:36 373

原创 单链表反转

核心思路:循环将当前节点的指向修改为指向前一节点的指向。1. 首先创建3个指针, prev,curr,next2. prev指向前一个节点,curr指向当前节点,next指向后一个节点3. 由于是单链表,所以需要提前保存下一节点的地址4. 最后更新头结点的指向第一步:3个指针分别指向链表的3个指定位置。第二步:循环移动三个指针。循环将当前节点指针翻转,也就是将当前节点的next指向上个节点。第三步:循环第二步操作。直到curr指向空。

2024-04-22 23:19:26 305

原创 TCP 协议特性

TCP协议是一个全双工协议。

2024-04-21 18:53:48 2097

原创 IEC104协议

IEC104规约是一个广泛应用于电力、城市轨道交通等行业的国际标准。

2024-04-21 16:04:35 3429

原创 MQTT 协议

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

2024-04-21 13:20:46 3635

原创 Cjson 库使用

JSON全称 JavaScript Object Notation,即 JS对象简谱,是一种轻量级的数据格式。它采用完全独立于编程语言的文本格式来存储和表示数据,语法简洁、层次结构清晰,易于人阅读和编写,同时也易于机器解析和生成,有效的提升了网络传输效率。

2024-04-18 20:40:50 487

原创 Glib库使用 (1)

GLib-2.0的GLib部分提供了许多有用的数据类型、宏、类型转换、字符串实用程序、文件实用程序、主循环抽象等等,具体包含:字符串操作、文件操作、数据校验、编解码、字符集转换、随机数生成器、命令行解析器、xml解析器、正则表达式、单链表、双链表、 数组、指针数组、双端队列、哈希表、平衡二叉树、N维树、泛型、主循环、多线程、线程池、异步队列、内存分配、内存片段、错误系统、测试框架等等一系列功能。

2024-04-18 20:37:35 1574

原创 RTMP协议

消息(Message)是RTMP协议中基本的数据单元。由Message Header和Message Payload(可以理解成message body)组成。FieldTypeCommentLength4 bytesMessage Payload(消息负载)的长度,不包含Message HeaderTimestamp3 bytes时间戳1 bytes消息类型,主要包括协议控制消息、音视频消息、命令消息等3 bytes消息流ID可以是任意值。不同的message可以有相同的值。

2024-04-18 15:39:39 1079

原创 C++ STL

插入和删除的起始下标都是从0开始。

2024-04-18 15:12:29 666

原创 C++ 基础

友元的目的就是让一个函数或者一个类,访问另一个类中私有成员。友元的关键字为 friend。继承是c++语言一个重要的机制,该机制自动地为一个类提供来自另一个类的操作和数据结构,这使得程序员只需在新类中定义已有的类中没有的成分来建立一个新类。public 公共权限protected 保护权限:子类可以使用private 私有权限:子类不可使用多态的实现依赖于虚函数(virtual function)和动态绑定(dynamic binding)的机制。

2024-04-17 23:02:40 480

原创 Nginx 代理配置

最近,工作中遇到需要用到 Nginx 实现正向代理和反向代理的需求,其中反向web代理需要支持发送HTTP 和 HTTPS请求。

2024-04-17 16:55:12 650

原创 IO 多路复用

I/O 多路复用是一种在单个线程中处理多个I/O操作的机制。I/O 多路复用通过操作系统提供的特定系统调用, 在一个线程中监听多个I/O事件。当其中任何一个I/O事件就绪(可读、可写或异常)时,线程就会被唤醒,并且可以针对就绪的事件执行相应的操作,而不需要阻塞等待。

2024-04-15 21:19:47 794

原创 kafka 环境搭建

如果要支持能够删除主题的操作,则需要在 /bin 的同级目录 /config目录下的文件server.properties中,修改配置delete.topic.enable=true(如果置为false,则kafka broker 是不允许删除主题的)。kafka自带的Zookeeper程序使用bin/zookeeper-server-start.sh,以及bin/zookeeper-server-stop.sh来启动和停止Zookeeper。比如修改主题 test2,当前这主题是不存在的。

2024-04-13 22:44:46 900

原创 Linux 系统分析命令

查看机器的启动时间、登录用户、平均负载等情况,通常用于在线上应急或者技术攻关中,确定操作系统的重启时间。那么如何理解load对应的数值那?补充:查看 CPU 信息:cat /proc/cpuinfo查看 CPU 个数:cat /proc/cpuinfo|grep 'model name' | wc -l。

2024-04-13 20:03:35 882

原创 bpftrace

是一个基于 eBPF (Extended Berkeley Packet Filter) 的高级工具,用于动态跟踪系统的各种事件和性能指标。它可以在不需要重新编译内核模块的情况下,以一种安全、高效的方式执行代码,从而提供了丰富的系统跟踪和性能分析能力。

2024-04-12 23:48:32 2322

原创 epoll 与 io_uring 性能测试

通过上面测试结果可以看到,在相同的环境下,io_uring 与 epoll 的 qps 相差不大,epoll 要稍微高一些。当然这并不能说明 io_uring 比 epoll 的性能低,原因可能是本次没有涉及到大量的磁盘 IO 操作,有兴趣的小伙伴可以自己实现测试一下,有时间我也会在尝试一下。

2024-04-12 20:16:08 532

原创 异步IO -- io_uring

io_uring是一种高效的 Linux 输入/输出(I/O)子系统,用于提高异步I/O的性能和灵活性。它提供了一种比传统的 POSIX 异步 I/O 接口更高效和可扩展的方法来执行文件操作、网络通信等任务。

2024-04-11 22:58:25 774

原创 Ipset 的使用

取决在于类型上, ipset 可以存储 IP 地址, 网络, (TCP/UDP) 端口号, MAC地址, 接口名称或它们的组合,以确保将条目与集合匹配时的闪电速度。使用哈希存储网络地址 + 端口 + 网络地址。使用散列存储 IP + 端口 + 网络地址。使用散列存储 IP + 端口 + IP。使用散列存储 IP + MAC 地址。使用散列存储网络地址 + 网络地址。使用散列存储网络地址 + 网卡名称。使用散列存储 IP 或网络地址。使用散列存储网络地址 + 端口。使用散列存储 IP + 端口。

2024-04-10 22:48:54 974

原创 单线程Reactor模型

reactor 反应器:负责监听所有事件,当事件发生时,调用相应的处理程序。reactor 本身时一个事件循环,负责处理 I/O 事件。handler 处理程序:处理特点类型的事件。当 reactor 接收到事件时,他会调用相应的处理程序来执行具体的业务逻辑。当某个 Headler 阻塞时,会导致其他所有的 client 的 handler 都无法执行。性能问题,只有一个线程,无法完全发挥多核 CPU 的性能。模型简单,没有多线程,不存在资源竞争的问题。客户端数量有限,业务处理非常快速。

2024-04-10 22:27:53 362

原创 百万并发测试

在网上看到什么百万并发之类的,感觉很高大上,也看了一些学习视频,决定自己测试一下,满足一下好奇心,同时也学习一些知识。本次主要在已经准备好的源码上对系统参数做出一些调整。虽然过程并不算复杂,但是自己搭建环境,实际操作下来确实会有更加直观的感受,就是有一点遗憾没有到达 100 万的并发。希望大家有时间可以自己试试。

2023-11-29 21:26:49 1096

原创 文件格式头

在进行文件真实类型识别的时候,需要根据文件的头部格式信息,来判断文件类型,下面就整理一些常见的。方便日后使用查找方便。

2023-11-21 14:37:25 346

原创 Linux防火墙 iptables

匹配选项示例说明-s用于匹配报文的源地址,可以同时指定多个源地址,每个IP之间用逗号隔开,也可以指定为一个网段。-d用于匹配报文的目标地址,可以同时指定多个目标地址,每个IP之间用逗号隔开,也可以指定为一个网段。-p用于匹配报文的协议类型,可以匹配的协议类型tcp、udp、udplite、icmp、esp、ah、sctp等(centos7中还支持icmpv6、mh)-i。

2023-11-09 18:00:52 278

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除