- 博客(24)
- 收藏
- 关注
原创 SIP协议原理分析
SIP(Session Initiation Protocol)是一种应用层通信协议,广泛用于建立、修改和终止多媒体会话(如语音、视频通话或即时消息)。它在IP电话、视频会议、即时通讯等领域得到了广泛应用。SIP并不是专门用于传输媒体内容,而是负责管理和协调媒体会话的建立、修改和终止。可以这样理解,SIP协议主要负责信令(控制)报文的交互,而实际音频流或者视频流则通过TCP或者UDP传输。请求头、请求体、正文。
2025-04-16 10:36:31
633
原创 面试题分享-多线程顺序打印奇偶数
昨天刷抖音,遇到一个面试题,描述如下:请使用两个线程,分别顺序交替打印奇数和偶数,直到10为止。例如有两个线程,分别为线程1和线程2,线程1首先打印数字1,然后线程2打印数字2,接着线程1再打印数字3,线程2再打印数字4,依次交替运行直到10为止。
2025-03-24 16:22:41
363
原创 不同Vlan间的通信
b.很明显PC1和PC2不属于同一网段,PC1属于10.0.1.x网段,而PC2属于10.0.2.x网段,那么PC1会将报文发送给网关10.0.1.2,那么需要知道交换机LSW1的mac地址,如果本地有交换机LSW1的mac地址,那么直接发送即可;如果没有则发送ARP报文在Vlan100中广播,请求交换机LSW1的mac地址。e.交换机LSW1收到PC1发送的ICMP报文,进行三层转发,查询路由表发现目的ip网段下一跳为Vlan-if200,于是将报文发送给网关Vlan-if200,最终报文到达PC2。
2025-03-20 15:32:50
557
原创 相同Vlan间的通信
Vlan(虚拟局域网)是将一个物理网络划分成多个逻辑子网的技术。不同Vlan之间是相互隔离的,默认情况下,设备只能与同一Vlan内的其他设备通信。相同Vlan内的通信,不需要经过三层设备(如路由器或三层交换机)进行路由。说的更通俗一些,如果你有一台交换机,那么当前交换机只能是一台交换机;但是如果使用Vlan技术,将交换机上的端口划分到不同的Vlan上,那么这一台交换机在逻辑上就被划分成了不用的交换机,Vlan在逻辑上互相隔离,同理交换机在逻辑上也发生了隔离,只是物理上还是一台交换机。
2025-03-20 11:45:33
1113
原创 Linux运维命令-三剑客(grep awk sed)
在Linux中,grep、awk、sed 命令常被称为“三剑客”。这三种命令是文本处理和数据操作的强大工具,可以非常高效地在终端中对数据进行处理。掌握这三个命令对于文本处理、搜索显得尤为重要。掌握linux命令三剑客功在平时,要经常使用才可以熟练运用其特性,提高办公效率。
2025-02-26 15:07:44
1451
原创 数据库-SQLite
SQLite 是一个轻量级的关系型数据库管理系统(RDBMS),广泛应用于桌面应用程序、移动设备和小型服务端应用中。它的主要特点是不需要一个独立的数据库服务器,而是通过嵌入到应用程序中运行。SQLite 使用一个简单的数据库文件存储所有数据,因此可以方便地进行数据的传输和备份。它支持 ACID(原子性、一致性、隔离性、持久性)事务,保证数据的可靠性。SQLite 是一个轻量级的嵌入式关系型数据库管理系统,它不依赖独立的服务器进程,而是直接嵌入到应用程序中。
2025-02-20 11:07:24
1428
原创 dpdk的基础使用-抓包
设置报文缓存池---->设置网卡信息---->校验网卡队列数是否合法---->分配收发队列---->开启混杂模式---->启动网卡---->收包处理通过上述例子,大家也可以对其进行改造从而实现自己的业务和功能。
2025-02-11 16:00:58
881
原创 初识dpdk-原理、编译
DPDK(Data Plane Development Kit)是一个开源的高速数据包处理框架,专为高性能网络应用设计。它提供了一组用于处理数据包的库,旨在提高网络设备与处理器之间的数据传输速度,减少延迟,并且使得处理网络数据更加高效。
2025-02-10 15:52:30
1522
原创 C语言-数据结构-队列
初始化队列就是初始化对象的过程,申请内存然后初始化队列的成员,最后返回队列即可,刚开始初始化队列,队列为空,将队头队尾指针置空即可。入非空队列的过程即队头指针的指向不变,队尾指针指向新的节点,也就是说原来队尾指针的next指向新节点,新队尾指针指向新的节点。销毁队列的过程和出队列的过程类似,只需要从队头开始遍历,直到队列中没有元素为止。出队列的过程和入队列相反,只需要修改队头指针即可,然后返回原有的队头节点即可。空队列和非空队列的头尾指针的指向是不一样的~~~那么关于队列的核心就是先进先出,后进后出。
2025-01-14 15:30:31
821
原创 C语言gdb调试
gdb是一个强大的调试工具,广泛用于调试 C、C++ 以及其他编程语言的程序。它帮助程序员在开发过程中识别并修复错误,提高程序的可靠性和性能。掌握gdb的基本使用方法非常重要,它能够帮助我们快速定位一些段错误问题或者解决一些程序异常问题。如果提示没有gdb命令需要手动安装一下gdb插件:在 Ubuntu/Debian 上安装 gdb:sudo apt install gdb在 CentOS/RHEL 上安装 gdb:sudo yum install gdb。
2025-01-08 12:00:33
1060
原创 C语言指针
要搞清楚什么是指针,不如先理解清楚C语言中的内存问题,无非两个大的方面,栈和堆。栈内存由操作系统自动管理,分配和释放非常快速,但栈空间通常是有限的,可以使用ulimit -s查看;而堆是用于动态内存分配的区域,程序员可以在运行时申请和释放内存,堆内存的管理由程序员控制,程序员需要调用malloc/free等函数来分配和释放内存。
2024-12-26 16:35:35
992
原创 内存池实现原理
内存池(Memory Pool)是一种内存管理技术,用于通过预先分配一块大的内存区域,并根据需求在该区域内分配和回收较小的内存块,从而提高内存分配和释放的效率。内存池在性能敏感的应用中尤其重要,例如嵌入式系统、游戏引擎、数据库、操作系统等。内存和内存池有什么区别呢?内存大家都知道就是一个存储数据的地址,那么内存池则是由多个存储数据的地址组成的,在使用的时候从池子里取一个节点使用,等用完之后再将节点放回池子中,避免反复申请释放内存。/*内存节点结构体。
2024-12-17 11:39:27
1335
原创 基于二叉树的IP匹配
二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。节点通常分为三个部分,左子节点、右子节点、数据部分。了解了二叉树的结构之后,我们就可以定义一个二叉树的结构体,包含三个部分,左孩子、右孩子、数据部分。//规则id 唯一//是否有ip规则 1:yes 0:no}Data;Data data;//数据//左孩子//右孩子}TreeNode;left_node指向左孩子,right_node指向右孩子,data存储数据。
2024-12-03 14:56:25
813
原创 一文理解内核链表
可以看到,在内核链表的结构体中只有两个指针,prev指针指向内核链表节点的前驱节点,next指针指向内核链表节点的后继节点。参考插入节点的过程,因为是尾插法,那么图示中的prev节点就是链表尾(就是头节点的prev指针指向的节点),next节点就是头节点。那么实际的结构就像这样。第一步:将next节点的prev指针指向删除节点prev指针指向的节点,因为删除之前next节点的prev指针指向的是删除节点。因为是头插法,那么图示中的prev节点就是头节点,而next节点就是头节点的next节点。
2024-11-25 16:33:46
1110
原创 PCRE正则匹配
PCRE 是一个广泛使用的正则表达式库,设计目标是提供与 Perl 语言中的正则表达式语法兼容的功能。PCRE 是一个 C 语言编写的开源库,旨在支持多种正则表达式特性,包括复杂的模式匹配、替换、分组等。PCRE 支持 Perl 正则表达式的许多高级功能和语法,使其非常强大且灵活。它的目标是尽可能接近 Perl 语言的正则表达式语法和行为,能够处理更复杂的匹配需求。PCRE 具有较高的执行效率,适用于各种性能要求较高的场合。它通过优化的匹配引擎提供了高效的字符串匹配性能。
2024-11-15 11:06:32
962
原创 结构体字节对齐
字节对齐是计算机系统中用于提高内存访问效率的一个重要概念。不同的数据类型(如整数、浮点数、结构体等)在内存中的存储位置往往需要按照特定的规则进行对齐,以便提高程序的运行速度并保证系统的稳定性。
2024-11-11 17:28:07
1776
原创 I/O多路复用-Epoll
I/O多路复用指在单个进程中同时处理多个I/O操作的能力。对于需要并发处理大量I/O事件(如网络请求)的应用程序,I/O多路复用提供了一种高效的机制,避免了传统的线程或进程模型中频繁上下文切换的开销。在传统的poll和select系统调用中,程序在每次调用时需要将一个文件描述符集(通常是一个数组或位图)传递给内核。内核在每次调用都需要遍历所有文件描述符,即使某些文件描述符没有发生事件,随着文件描述符数量的增多,性能会显著下降,特别是在高并发情况下。
2024-11-08 11:58:05
1008
原创 多线程和锁
多线程是一种允许程序同时执行多个线程的编程技术。每个线程都是一个独立的执行路径,可以并行执行任务,利用现代多核处理器的优势,从而提高程序的性能和响应速度。
2024-11-04 11:53:39
622
原创 C语言-钩子函数
钩子函数(Hook Function)是一种编程模式,允许开发者在特定的事件或操作发生时插入自定义代码。这种机制通常用于扩展或修改软件的行为,而无需直接修改其源代码。钩子函数可以在许多不同的编程环境中找到,包括操作系统、框架、库和应用程序。看完以上示例之后,相信大家对钩子函数有一定的理解了,这里再谈一下我的理解。钩子函数需要两个东西,钩子点和钩子链表;其中钩子点负责实现钩子函数功能,而钩子链表负责挂载钩子,真正调用钩子函数时,实际上就是遍历链表然后依次回调钩子函数。
2024-10-29 17:58:08
2603
1
原创 Hyperscan-正则匹配
Hyperscan是一个高性能的正则表达式匹配库,通常用于需要快速字符串搜索的应用程序,如入侵检测系统、网络流量分析和文本处理等。支持常见的正则表达式语法,包括基本的字符匹配、重复、分组等。可以进行单个匹配和多个匹配,在性能和灵活性方面表现出色,适合需要快速、准确匹配大量数据的应用场景。
2024-10-25 17:19:23
1761
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人