- 博客(270)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C++(1)基础语法
C++是一种通用编程语言,由Bjarne Stroustrup在贝尔实验室工作时于1979年开始开发。C++最初被命名为"C with Classes",旨在扩展C语言以支持面向对象编程。随着时间的推移,C++不断发展,引入了许多新特性,如异常处理、模板、标准模板库(STL)等。1998年,C++第一个国际标准ISO/IEC 14882:1998发布,使其成为一种成熟、稳定且广泛使用的编程语言。
2024-08-31 15:59:22
1305
25
原创 网络应用层之(2)DNS协议
DNS(域名系统)是互联网的核心协议之一,在网络通信中扮演着至关重要的角色。它犹如一部庞大的电话簿,将人类易记的域名映射为计算机易于处理的IP地址。没有DNS的存在,我们就难以在茫茫的网络世界中准确定位所需的资源。当用户在浏览器地址栏中输入一个域名时,DNS服务器首先会查询自己的缓存,看是否已经存在该域名与IP地址的对应关系。如果缓存未命中,DNS服务器则会向根域名服务器发起查询请求。根域名服务器会告诉本地DNS服务器负责该域名的顶级域名服务器的地址。
2024-08-27 20:56:08
1691
67
原创 C++(11)类语法分析(2)
Author:Once Day Date:2024年8月17日漫漫长路,才刚刚开始…全系列文章请查看专栏: 源码分析_Once-Day的博客-CSDN博客参考文档:基础类的介绍请参考文章:C++(10)类语法分析(1)-CSDN博客运算符重载是C++的一个强大特性,它允许为用户定义的类型自定义运算符的行为。通过运算符重载,我们可以使自定义类型的对象支持各种运算符,如算术运算符、比较运算符、输入输出运算符等,从而提高代码的可读性和表现力。运算符重载的语法,运算符重载的实现方式是定义一个特殊的成员函数或全局函数
2024-08-17 23:59:05
1277
23
原创 C++(10)类语法分析(1)
在C++中,类(Class)是一种用户自定义的数据类型,它将数据成员(属性)和成员函数(方法)组合在一起,形成一个逻辑上相关的实体。通过使用类,我们可以创建出具有特定行为和状态的对象。类名,类的名称。通常以大写字母开头,使用驼峰命名法。访问修饰符,控制类的成员对外部的可见性,包括public(公有)、protected(保护)和private(私有)三种。数据成员,类的属性,描述了类的状态。可以是基本数据类型、数组、指针、对象等。成员函数,类的方法,定义了类的行为。包括构造函数、析构函数、普通成员函数等。
2024-08-17 20:15:21
2144
100
原创 网络基础之(2)初级网络知识
网络协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。语义:解释控制信息每个部分的意义,规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。语法:用户数据与控制信息的结构与格式,以及数据出现的顺序。时序:事件发生顺序的详细说明。为什么需要对协议分层?降低单个协议复杂程度,利于实现层间独立,易于标准化保持协议栈的灵活性。层间关系?每一层都使用了下一层提供的服务,每一层都为上一层提供服务。
2024-08-03 20:24:52
773
26
原创 网络基础之(11)优秀学习资料
本文档分享一些网络工程相关基础学习资料,全部上传到百度云,可供自由下载。网络数据通信相关资料下载-持续收集中,提取码:iybc。
2024-07-27 21:25:01
899
3
原创 网络运输层之(2)UDP协议
用户数据报协议(User Datagram Protocol,简称UDP)是一种简单、高效、无连接的传输层协议。它是互联网协议族(Internet Protocol Suite)的重要组成部分,与传输控制协议(TCP)并列为传输层的两大协议之一。与面向连接、可靠传输的TCP协议不同,UDP协议采用无连接通信模式,不保证数据包的可靠传输,也不具备拥塞控制等机制。发送方只管将数据报发送出去,而不关心数据是否正确到达目的地。简单高效。
2024-07-15 21:22:52
6175
136
原创 DPDK源码分析之(1)libmbuf模块
mbuf(消息缓冲区)库提供了分配和释放缓冲区(mbufs)的功能,这些缓冲区可以被DPDK应用程序用来存储消息。消息缓冲区存储在一个称为mempool(内存池)的结构中,而这个内存池是通过Mempool库来管理的。通常情况下,rte_mbuf结构体用于承载网络数据包缓冲区,但实际上它可以存储任何类型的数据(例如控制数据、事件等)。为了提高性能,rte_mbuf头部结构被设计得尽可能小,目前只使用了两个缓存行(cache line),并且最常用的字段被放在第一个缓存行中。内存池(Mempool)管理。
2024-07-07 21:38:32
1005
12
原创 chrome-base源码分析(1)macros模块
chrome-base源码中macros模块是一个比较简单的模块,定义了一些简单的宏,有五个源文件,下面一一介绍。
2024-06-30 22:44:16
4224
52
原创 CMake(1)基础使用
CMake是一个开源的跨平台自动化构建工具,它主要用于管理大型软件项目的构建、测试和打包过程。CMake通过编写简单的配置文件来描述项目的构建过程,然后根据不同平台的特性生成对应的本地化构建文件,如Unix下的Makefile或Windows下的Visual Studio项目文件。使用CMake可以让开发者从复杂的构建细节中解放出来,专注于代码的编写和维护。跨平台性:CMake支持多种操作系统和编译器,使得项目可以轻松地在不同平台上构建。简单易用:CMake使用简洁的语法编写配置文件,学习曲线相对平缓。
2024-06-29 15:39:16
1482
104
原创 Python之scapy(1)基础使用
Scapy是一个功能强大的交互式数据包处理程序,用Python编写。它能让用户发送、嗅探、解析和伪造网络数据包,此外还可以扫描、探测、攻击和发现网络。支持大量协议,可以轻松构建任意类型的数据包。强大的数据包嗅探和注入能力。可以对网络进行扫描、跟踪路由、probing、单元测试等。轻量快速,无需再编写底层代码。Scapy的上述特性使它成为网络安全专业人士和研究人员常用的工具,可以方便地进行数据包捕获与分析、漏洞利用、IDS测试等任务。
2024-06-20 21:40:49
1683
16
原创 网络网络层之(6)ICMPv6协议
ICMPv6是互联网控制消息协议第6版(Internet Control Message Protocol version 6)的缩写,它是IPv6协议族中的一个重要协议,与IPv4中的ICMPv4协议相对应。ICMPv6同样用于传递网络层的控制和错误信息,辅助IPv6协议完成高效、可靠的数据传输任务。与ICMPv4类似,ICMPv6报文封装在IPv6数据报中进行传输。报文主要由报头和数据部分组成。
2024-06-10 14:43:23
3429
144
原创 网络网络层之(6)ICMPv4协议
ICMPv4是IPv4协议族中的一个重要协议,它主要用于传递网络层的控制和错误信息。与IP数据报不同,ICMPv4报文并不直接用于传输用户数据,而是辅助IP协议更好地完成数据传输任务。ICMPv4报文封装在IP数据报中进行传输。报文主要由两部分组成:报头和数据部分。报头包含了类型、代码和校验和等重要信息,用于识别报文的类型和检测传输错误,数据部分携带了与具体报文类型相关的信息。根据功能,ICMPv4报文可以分为两大类:差错报告报文和查询报文。
2024-06-03 22:51:45
2940
186
原创 网络应用层之(1)DHCPv6协议
DHCPv6(Dynamic Host Configuration Protocol for IPv6)是一种用于IPv6网络的自动配置协议,它允许IPv6主机自动获取IP地址、DNS服务器、域名等网络配置信息。DHCPv6协议是DHCP协议的IPv6版本,它建立在IPv6协议之上,提供了更多的功能和灵活性。1998年,IETF(Internet Engineering Task Force)开始制定DHCPv6协议标准。
2024-05-26 18:48:02
2949
271
原创 DPDK实践之(1)dpdk基础使用
DPDK(Data Plane Development Kit)是一个由 Intel 开发并开源的软件库和驱动集合,用于在 commodity hardware(通用硬件)上进行快速封包处理。DPDK 可以极大提高数据包处理速度和吞吐量,使得网络应用能够高效地在 CPU 上运行,而无需依赖昂贵的专有硬件或专门的网络处理设备。:提供了一组用于处理数据包的核心库,包括内存、队列、缓冲池、端口和流量管理等功能。:这些是为各种网络接口卡(NICs)编写的轮询模式驱动程序,可以绕过内核,直接在用户空间处理数据包。
2024-05-21 21:27:59
1400
216
原创 网络应用层之(1)DHCPv4协议
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种网络管理协议,用于自动为加入网络的设备分配IP地址和其他网络配置参数。它简化了网络管理,使得设备可以即插即用,无需手动配置。DHCP的前身是BOOTP(Bootstrap Protocol)(RFC0951),由Bill Croft和John Gilmore于1985年开发,用于无盘工作站的IP地址分配。1993年,DHCP作为BOOTP的增强版被提出,由Ralph Droms主要设计和开发。
2024-05-19 00:08:27
2131
187
原创 网络网络层之(5)IPv6协议
随着互联网的快速发展,IPv4地址空间面临耗尽的问题。为了解决这一问题,互联网工程任务组(IETF)在20世纪90年代初开始研究下一代互联网协议。经过多年的努力,IPv6协议最终于1998年12月由IETF正式发布。IPv6(互联网协议版本6)是互联网协议(IP)的最新版本,旨在解决IPv4地址枯竭问题,并为未来互联网的发展提供更好的支持。巨大的地址空间:IPv6使用128位地址,总地址数量是2的128次方,理论上可以说地址数量近乎无限,IPv6可以给地球上的每粒沙子都分到1个地址。简化的报文头。
2024-05-14 00:06:48
2258
157
原创 网络网络层之(4)IPv4协议
网际协议版本4(IPv4)是网际协议(IP)的第四版,也是第一个被广泛应用的版本。IPv4的设计和开发始于20世纪70年代,目的是为了连接不同的网络,实现网际互连。IPv4使用32位(4字节)地址,理论上可以提供约43亿个唯一IP地址。然而,由于互联网的快速发展,IPv4地址在21世纪初已经面临耗尽的问题。为了解决这一问题,互联网工程任务组(IETF)开发了IPv6协议,使用128位(16字节)地址,提供了更大的地址空间。
2024-05-07 23:21:26
3956
141
原创 代码训练LeetCode(17)存在重复元素
本题主要考查对数组遍历和哈希表的应用能力。通过使用哈希表存储元素的最新索引,我们能够有效检查是否有符合条件的索引对。这种方法利用了哈希表快速查找和插入的特性,使得时间复杂度控制在 O(n) 内,适合处理大规模数据。
2024-05-07 23:18:08
1235
11
原创 网络应用层之(6)L2TP协议详解
第二层隧道(L2TP)协议,即,是一种常见的网络通讯协议,用于支持虚拟私人网络(VPN)的功能。它允许用户通过一个公共网络(如互联网)创建一个安全的虚拟专用通道来连接到远程网络,这种方式在远程工作和数据保密方面非常重要。L2TP是在1999年由因特网工程任务组(IETF)公布的,它结合了微软的PPTP(Point-to-Point Tunneling Protocol)和思科系统的L2F(Layer 2 Forwarding)技术的特点。
2024-05-01 21:44:24
4690
148
原创 代码训练LeetCode(16)只出现一次的数字
此题主要考查候选人对位运算的理解及应用,尤其是异或运算的性质。掌握这类技巧可以有效解决数组和数字相关的问题,且有助于提高代码的效率和性能。
2024-05-01 21:28:29
739
9
原创 代码训练LeetCode(15)买卖股票
这个问题考察了对数组遍历和简单逻辑判断的应用,以及如何从实际问题中抽象出有效的解决方案。通过这种问题,可以加强对简单贪心算法的理解和应用。
2024-04-22 22:52:12
2448
61
原创 Linux之ebpf(1)基础使用
eBPF (extended Berkeley Packet Filter) 是一种先进的技术,允许在无需更改内核源代码或加载内核模块的情况下,以安全的方式动态地在内核中执行预编译和沙箱化的程序。它最初是为了能够在内核层面高效地过滤网络包而设计的,但现在它的用途已经大大扩展,可以用于各种系统级编程任务。eBPF 是 Berkeley Packet Filter (BPF) 的扩展,BPF 最初是在 1992 年为了提高网络包过滤的效率而引入的。
2024-04-22 21:59:05
3622
118
原创 网络运输层之(3)GRE协议
GRE通用路由封装协议(Generic Rrouting Encapsulation)是一种网络协议,主要用于封装不同网络协议的数据包。这种技术允许数据包在一个异种网络中被传输,即使这些网络原生不支持正在传输的数据包协议。GRE支持对组播报文的封装,这是一些其他隧道技术(如IPsec)无法做到的。GRE可以运行动态路由协议,允许异地设备之间动态地交换路由信息,这对于维护大规模分布式网络的连通性至关重要。GRE本身不提供加密或其他安全保护,因而通常不会单独使用于需要高安全性的环境。
2024-04-18 20:20:48
6156
137
原创 Linux错误(3)Linux里IP套接字sendmsg出现EPERM错误
Linux中使用sendmsg系统调用通过IP socket发送数据时,如果出现EPERM错误,通常有以下几种可能原因,进程没有足够的权限,使用了无效的socket选项....
2024-04-18 20:14:44
1114
25
原创 网络网络层之(2)ARP协议
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议,负责将IP地址映射为物理地址.通常所说的以太网的网卡是不识别IP地址的,而是通过识别MAC地址来判断该帧是否是给本机的。因此就需要提供一个机制根据目的主机的IP翻译出它的MAC地址。注意:像点对点链路(如PPP协议)是不需要MAC,也就不需要地址解析协议。历史上还有一个RARP协议 ,即逆地址解析协议,根据MAC解析出IP地址,现在已有DHCP协议代替。
2024-04-14 23:54:11
4124
63
原创 Linux之bpfjit(2)使用分析和mini-tcpdump实现
BPF(Berkeley Packet Filter)最初设计用于数据包过滤,即网络封包的捕获与筛选。随着时间的发展,BPF已经演变成为一个更加通用、功能强大的技术,尤其是在Linux内核中,它已经被扩展为eBPF(extended Berkeley Packet Filter)。BPF:最初的设计目的是提高网络封包处理的效率,通过在用户空间与内核空间之间提供一个灵活的数据包过滤机制。eBPF:是BPF的扩展版本,不仅能够进行数据包过滤,还能进行性能监控、网络监控、安全审计等多种功能。
2024-04-13 18:42:55
3909
143
原创 代码训练LeetCode(14)整数反转
这个任务是一个数字处理问题,我们要把一个32位有符号整数中的数字翻转过来,并且要注意处理溢出的情况。如果翻转后的整数超过了给定的32位有符号整数范围,就返回0。
2024-04-13 18:38:22
926
6
原创 网络网络层之(7)PPPOE协议
PPPoE,全称为点对点协议通过以太网(Point-to-Point Protocol over Ethernet),是一种在以太网上运行的封装协议,它允许将点对点协议(PPP)帧通过以太网封装并传输。这种技术最早是为了实现通过简单的以太网连接来接入互联网的宽带接入服务,尤其是在DSL(数字用户线)服务中得到了广泛应用。PPPoE结合了以太网和PPP的特点,既有以太网简单的网络搭建特性,又有PPP支持的认证、加密和压缩功能。
2024-04-09 23:53:58
3729
117
原创 代码训练LeetCode(13)颠倒二进制位
实现一个函数,输入是一个32位无符号整数,输出也是一个32位无符号整数,它是输入数字二进制表示的颠倒。
2024-04-09 22:49:14
730
4
原创 Git(8)之分支间同步特定提交
`git cherry-pick`是一个非常实用的Git命令,它允许选择性地将某个分支上的单个提交(或一系列提交)应用到当前分支上。这个命令的名称来源于“挑选樱桃”的比喻,意味着可以从众多提交中精选出需要的那几个。
2024-04-07 23:02:09
1457
29
原创 网络网络层之(3)IPv6地址
IPv6地址是互联网协议第六版(Internet Protocol Version 6)的一部分,它是为了解决IPv4地址耗尽问题而设计的新一代互联网地址协议。IPv6地址使用128位地址长度,相较于IPv4的32位,大幅增加了地址空间,可以为地球上几乎每一粒沙子分配一个唯一的网络地址。它通常使用十六进制表示,并且通过冒号(:)分隔成8组,每组4个十六进制数。。IPv6很多地方规则与IPv4一致,因此本文不再描述那些与IPv4一样的内容,而是谈谈IPv6比较独特的地方。
2024-04-06 17:43:04
3241
123
原创 网络网络层之(1)IPv4地址
IP地址,全称是互联网协议地址(Internet Protocol Address),可以看作是互联网上的门牌号码。IP地址是TCP/IP网络中的主机(或称为节点) 的惟一地址。IP地址是网络层的逻辑地址。IP地址是一组32位长的二进制数字,用点分十进制表示(如8.8.8.8)。IP地由网络地址主机地址组成。IP地址可由互联网名字和数字分配机构ICANN进行分配。CIDR是在1990年代初提出的一种IP地址分配和路由寻址的方法。
2024-04-06 17:33:34
1577
原创 网络以太网之(2)VLAN协议
VLAN(Virtual Local Area Network)又称虚拟局域网,是一种将局域网设备从逻辑上划分成一个个网段,从而实现虚拟工作组的新兴数据交换技术。一个VLAN组成一个逻辑子网,即一个逻辑广播域,它可以覆盖多个网络设备,允许处于不同地理位置的网络用户加入到一个逻辑子网中。VLAN工作在OSI参考模型的第2层和第3层,IEEE标准为 802.1Q,VLAN之间的通信是通过第3层的路由来完成的。
2024-04-01 21:09:58
2798
136
原创 网络以太网之(1)基础概念
以太网是一种共享介质的局域网技术,多个站点链接到同一个共享介质上,同一时间只能有一个站点发送数据,这种链路连接着多个终端,就是多路访问。
2024-04-01 21:03:28
828
12
原创 网络链路层之(2)PPP协议
ppp是一个协议集合,包含三部分:将IP数据报封装到串行链路的方法。一系列的链路控制协议(Link Control Protocol,LCP),用来建立、配置和测试数据链路连接。以及NCP(网络控制协议),每一个协议支持不同的网络层协议,如IP、OSI的网络层,DECnet,以及AppleTalk等。PPP对物理层链路有最低要求,即必须支持双向操作,以及异步或同步操作。ppp基本帧格式借用了HDLC的格式。
2024-03-27 23:36:21
2299
95
原创 网络链路层之(1)基础概念
数据链路层,将网络层交下来的IP数据报组装成帧(frame),在两个相邻的链路节点上传输。该层还可以对帧进行检错甚至纠正。数据链路层主要使用两种类型的信道:点对点信道,使用1对1的通信方式。广播信道,使用1对多的广播通信模式。**链路(link)**是从一个结点到相邻结点之间的一段物理线路,中间没有任何其他的交换结点。数据链路(data link),在链路通信,所需要的硬件和软件协议,总和在一起就构成了数据链路。也就是现在所属的网络适配器。
2024-03-27 23:21:01
1396
4
原创 python之(19)CPU性能分析常见工具
计算机科学界的大牛Donald Knuth的一句名言:“我们应该忘掉小的效率问题,大约97%的时间:过早的优化是万恶之源。”这句话的核心思想是警告程序员不要在编程初期就过分追求代码的优化,因为那时往往还没有清晰的性能瓶颈证据,盲目优化可能会导致代码的复杂性上升,反而带来更多问题。Python性能分析,顾名思义,是指对Python程序进行性能评估,以确定代码中的瓶颈所在,进而优化程序的运行效率。性能分析不仅能帮助我们找到最耗时的部分,而且能为我们提供决策依据,让我们知道何时以及在哪里优化。
2024-03-24 16:52:31
1857
38
原创 Python界面库Flet(1)介绍和快速使用
在Python领域中,图形用户界面(GUI)库让开发者可以创建直观的桌面应用程序。常见的Python GUI库包括Tkinter、wxPython、PyQt和Kivy等。Tkinter是Python的标准GUI库,它的一个显著优点是随Python安装包一同发行,因此无需额外安装即可使用。Tkinter适用于小型应用程序,由于它的简单性,对于新手来说是一个很好的起点。但是,它的界面风格显得有些过时,且功能上不如其他库强大。wxPython是基于wxWidgets C++库的封装,提供了更加原生的用户界面。
2024-03-23 23:27:04
2881
12
Autotool Tutorial(epita.fr) - Autorools使用教程PDF文档
2023-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人