自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 Trunk和Access分析

基于场景分析trunk和access的区别

2022-10-19 10:59:21 2549

原创 IPv6 Dhcpv6 DUID

无线网卡的 IPv6 DHCP 客户端的 DUID 最后几位通常不是简单的 MAC 地址,这是由于 DUID 的类型多样性、隐私保护需求以及无线网卡的特殊配置等因素导致的。在实际应用中,DUID 的设计旨在提供一个全局唯一且具有一定灵活性的标识符,以适应不同的网络环境和应用场景。

2025-03-28 16:43:45 545

原创 文件的打开与关闭

文件操作是程序与外部世界交互的重要手段,而文件的打开与关闭则是文件操作的基础。通过fopen()打开文件,指定文件访问模式,操作系统会为文件分配必要的资源;通过fclose()关闭文件,释放这些资源。在实际编程中,了解文件操作的原理及实现方式能帮助我们写出更高效、安全的代码。在处理文件时,务必确保每次打开的文件都能够成功关闭,以避免文件资源泄漏和数据丢失。

2025-03-27 23:06:50 450

原创 C语言文件操作简介:从文件打开到文件读写

在之前的文章中,我们已经学习了C语言的基础知识,包括变量、数据类型、控制结构、函数、指针等核心概念。今天,我们将进入C语言中的另一个非常重要的主题——文件操作。在许多实际编程应用中,我们常常需要与文件进行交互,从文件中读取数据,或者将程序的输出保存到文件中。为了实现这些功能,C语言提供了一系列的文件操作函数。本文将详细介绍C语言中的文件操作,包括文件的打开与关闭、文件的读写、文件指针的使用、错误处理以及二进制文件和文本文件的区别。希望通过本文的讲解,大家能够掌握如何在C语言中进行文件操作。

2025-03-27 23:00:09 377

原创 动态内存分配与内存对齐

在程序运行过程中,所需的内存大小往往是不可预见的。静态内存分配(如栈上的局部变量)在编译时就已经确定了内存大小。而动态内存分配(如堆上的内存分配)则在程序运行时根据实际需求分配内存空间。malloc:分配指定大小的内存空间,返回一个指向该内存区域的指针。calloc:分配指定数量的内存块,每个块的大小相同,且初始化为零。realloc:重新分配之前分配的内存块,可以增加或减少其大小。free:释放之前分配的内存空间。

2025-03-27 22:55:07 548

原创 联合体(Union)的使用与应用场景

联合体(Union)是一个数据结构,它允许不同类型的变量共享同一块内存空间。与结构体不同,结构体中的每个成员都有各自独立的内存空间,而联合体中的所有成员共享同一个内存区域。联合体的大小等于其最大成员的大小,这意味着在同一时间内,联合体只能存储一个成员的值。在 C/C++ 中,联合体的定义方式与结构体非常相似,但有一些关键的区别。联合体通过union关键字定义,结构体则使用struct关键字。// 定义联合体int i;float f;// 访问联合体成员。

2025-03-27 22:51:17 535

原创 C语言修饰符汇总详解

C语言的修饰符种类繁多,每个修饰符都有特定的功能,能够控制变量、函数或数据类型的行为。了解这些修饰符对于编写高效、健壮的程序非常重要。常用的修饰符包括signedunsignedconstvolatilestaticexternregister等,它们各自应用于不同的场景中。掌握修饰符的使用,将大大增强你在C语言编程中的能力,尤其是在涉及多线程编程、嵌入式开发和优化代码时,修饰符能够帮助程序更高效地管理内存和资源。

2025-03-17 22:54:21 569

原创 C语言中的结构体指针

在C语言中,结构体是一种用户自定义的数据类型,可以将不同类型的变量组合在一起形成一个更复杂的数据结构。而结构体指针则是指向结构体变量地址的指针。通过结构体指针,我们可以动态访问结构体成员、传递结构体到函数以及进行内存管理等操作。结构体指针提供了一个更加灵活和高效的方式来操作结构体,特别是在处理大型数据结构时,指针的使用可以节省内存并提高程序性能。结构体指针是C语言中非常重要的概念,它使得我们能够更加高效、灵活地操作结构体。通过结构体指针,我们可以动态创建结构体、传递结构体到函数中、优化内存使用等。

2025-03-17 22:49:45 1334

原创 C语言中的结构体数组

在C语言中,**结构体(struct)**是一种自定义数据类型,它可以将不同类型的数据组合成一个单一的数据结构。结构体数组则是多个结构体元素按顺序存储在内存中的集合。通过结构体数组,可以存储多个相同类型的结构体,每个结构体都拥有自己独立的成员变量。结构体数组是对结构体类型的数组化,能够帮助我们更加高效地组织和管理数据,尤其在处理大量具有相同结构但内容不同的数据时,结构体数组的使用十分便利。结构体数组在C语言中是一个强大且高效的工具,能够帮助我们组织和管理大量相同结构的数据。

2025-03-17 22:47:53 1044

原创 联合体和结构体对比分析

结构体是C语言中的一种数据类型,它允许将不同类型的数据组织在一起形成一个新的复合数据类型。每个数据成员都有独立的内存空间,可以同时存储多个成员的值。struct 结构体名称 {数据类型 成员名称1;数据类型 成员名称2;...int x;int y;p1.x = 10;p1.y = 20;联合体是C语言中的另一种数据类型,它与结构体相似,但有一个显著的区别:联合体的所有成员共享同一块内存空间。也就是说,在任何时候,联合体中只能存储一个成员的值。联合体的定义与结构体类似,使用union。

2025-03-16 22:23:31 853

原创 联合体定义与应用

联合体(union)是一种特殊的数据类型,它允许多个不同类型的成员共享同一块内存区域。与结构体不同,结构体的成员在内存中是连续存储的,而联合体的所有成员共用同一块内存,因此一个联合体的大小是它所有成员中最大类型的大小。在C语言中,联合体的定义与结构体相似,只是使用union关键字来定义。union 联合体名称 {数据类型 成员名称1;数据类型 成员名称2;...int i;float f;此时,Datai(整数)、f(浮点数)和str(字符数组)。但是需要注意的是,if和str。

2025-03-16 22:20:30 907

原创 结构体定义与应用

结构体(struct)是C语言中的一种复合数据类型。它允许我们将不同类型的数据(如整型、浮点型、字符型等)组合在一起作为一个单元。这些数据项被称为结构体的成员,每个成员可以是任意数据类型。struct 结构体名称 {数据类型 成员名称1;数据类型 成员名称2;...结构体的定义包括结构体名和其成员的类型及名称。// 姓名int age;// 年龄// 成绩// 访问结构体成员return 0;结构体数组是存储多个相同类型结构体的一种方式。

2025-03-16 22:16:50 943

原创 内存泄漏的防范:检测与预防

内存泄漏是一个严重的编程问题,可能导致程序占用过多内存,降低系统性能,甚至崩溃。在每次动态分配内存后,确保正确释放内存。使用内存管理工具(如 Valgrind、AddressSanitizer 等)检测内存泄漏。使用良好的内存管理实践,如避免丢失指针引用、避免重复释放等。通过良好的编程习惯和工具辅助,可以大大降低内存泄漏的风险,确保程序的稳定性和效率。

2025-03-15 19:53:01 826

原创 C语言中的指针与函数

指针是C语言中的一种特殊变量,它存储的是另一个变量的内存地址,而不是变量的值。可以通过指针间接访问存储在该内存地址处的变量。这使得指针在动态内存分配、数组、链表等数据结构的实现中非常有用。指针和函数在C语言中是密切相关的,它们的结合为程序带来了极大的灵活性和控制力。通过指针传递函数参数,使用函数指针进行回调,或者通过指针实现动态内存管理,都是C语言编程中常见且重要的技巧。掌握指针和函数的使用方法,不仅能帮助你提高代码的效率和可维护性,还能让你在编程的道路上更加得心应手。

2025-03-15 19:48:47 584

原创 动态内存分配:基于C语言的详细解析与实践

在编写程序时,我们可能会遇到数据量不确定的情况。静态内存分配(例如声明数组时固定大小)显然不能应对这种需求。动态内存分配(Dynamic Memory Allocation)正是为了解决这种问题,它允许程序在运行时根据需要动态分配内存,而不是在编译时就固定大小。动态内存分配的一个重要特点是:程序员可以在程序运行时根据实际需求申请内存,使用完后及时释放,避免内存浪费。动态内存分配是 C 语言中一个至关重要的概念,它使得程序可以更加灵活地管理内存。虽然它为程序员提供了极大的自由,但也增加了内存管理的复杂性。

2025-03-15 19:45:37 781

原创 C语言中的字符串与数组的关系

在C语言中,字符串和数组之间的关系十分紧密。字符串本质上是字符数组,数组名是指向数组首元素的指针,而指针则可以用来遍历和操作字符串。理解字符串和数组之间的关系,以及如何通过指针高效地操作字符串,是学习C语言的一个重要部分。理解字符串与数组的差异也有助于避免一些常见的错误,例如对常量字符串的修改或数组越界访问等问题。同时能够在C语言中更加灵活地使用字符串和数组,编写更高效、更可维护的代码。

2025-03-14 21:37:39 1049

原创 C语言中的指针与数组:概念、关系与应用

指针和数组是C语言中最基本的概念之一,它们相互关联且具有强大的功能。通过指针,可以实现动态内存管理、操作数组、处理字符串等复杂任务。数组的名字本质上是一个指针,因此,指针和数组之间有很多巧妙的用法和相互转换。要深入掌握C语言,理解指针和数组的关系是非常重要的。指针使得C语言能够直接操作内存,而数组则提供了一种方便的方式来存储和操作多个数据元素。

2025-03-14 21:33:43 779

原创 C语言中的字符串处理

在这篇博文中,我们将详细分析C语言中字符串的处理方式,涉及字符串的定义、常见操作、内存管理以及常见的字符串处理函数。读取字符串时,如果没有为字符串分配足够的空间,就会导致缓冲区溢出,从而可能破坏程序的内存,甚至导致程序崩溃。此外,C语言中的字符串是基于栈或堆的字符数组,因此字符串的操作非常依赖于内存管理。通过掌握这些基础与高级技巧,将能够在C语言中高效地处理字符串,避免常见的错误和漏洞。在C语言中,字符串实际上是存储在内存中的一块连续空间。只能读取没有空格的字符串,如果输入的是带空格的字符串(如。

2025-03-13 22:09:07 844

原创 二维数组常见应用场景以及示例

继续之前提到的二维数组的应用场景,我们可以深入探讨一些实际的应用实例。这些实例可以帮助你更好地理解二维数组的操作方法及其实际用途。

2025-03-13 21:53:54 433

原创 二维数组基础

在 C 语言中,二维数组是一种数据结构,它可以存储表格形式的数据,或是矩阵形式的数据。二维数组可以被看作是一个包含多个一维数组的数组,因此它有两个维度:行和列。在 C 语言中,二维数组的定义形式如下::数组中元素的数据类型(如 , 等)。:数组的名称。:二维数组的行数。:二维数组的列数。例如,声明一个 行 列的整型二维数组:2. 二维数组的初始化可以通过两种方式来初始化二维数组:在声明二维数组的同时,可以直接给它赋初值。初始化时每一行用大括号包围:上面的例子中, 是一个 3 行 4

2025-03-13 21:51:50 511

原创 一维数组的增删改查:对元素的影响

在C语言中,一维数组的增、删、改、查操作是数组操作的基本组成部分。

2025-03-12 22:18:03 981

原创 C语言一维数组

一维度数组是数据结构中的一种,它是由相同类型的元素组成的线性集合,可以通过一个索引来访问每个元素。可以理解为一个单一的线性列表。与数学中的向量或列表相似,一维度数组表示的是一个具有固定长度的顺序集合。

2025-03-12 22:14:17 825

原创 指针的比较

指针比较是编程中的一个重要概念,特别是在 C 语言这类低级语言中。它不仅能帮助我们判断内存地址的关系,还能在动态内存分配、链表操作、数组管理等多种场景中发挥重要作用。掌握指针比较可以让你更灵活地控制内存访问,提高程序的效率和稳定性。

2025-03-11 22:59:45 870

原创 C语言指针战略意义

指针是 C 语言与其他高级语言的一个显著区别,尤其是在内存管理和数据访问的控制方面。C 语言给予开发者更多的灵活性,但也伴随着更多的责任和复杂性。而其他高级语言通过封装指针(如引用)或完全抽象掉指针机制,使得开发者的工作变得更加简单,但也牺牲了一些灵活性和性能。所以,指针虽然是 C 语言的一个关键特性。C 语言与其他高级语言的根本区别在于其对低级硬件的接近程度、内存控制的灵活性以及对开发者责任的要求。

2025-03-11 22:53:45 412

原创 C语言指针

指针是 C 语言中非常重要的概念,它允许直接操作内存,可以极大地提升程序的灵活性和效率。理解指针有助于你掌握 C 语言的更多特性,如数组、字符串、函数传参、动态内存管理等。

2025-03-11 22:48:42 722

原创 c语言库 strcpy函数介绍,以及实现

strcpy 是一个简单但有风险的字符串复制函数,使用时需要注意目标缓冲区的大小。使用时可以考虑更安全的函数,如 strncpy,它允许限制复制的字符数,避免溢出的风险。

2025-03-11 22:38:08 328

原创 in6_pktinfo找不到的问题

在 Rocky Linux 中,struct in6_pktinfo 的定义位于头文件 ‌<netinet/in.h>‌ 中‌。该结构体用于 IPv6 套接字编程,通常与 IPV6_PKTINFO 套接字选项配合使用,用于获取或设置数据包的源地址和接口索引信息‌。‌平台差异‌:Windows 中类似结构体 IN6_PKTINFO 定义于 ws2ipdef.h‌4,但 Linux 环境需统一使用 <netinet/in.h>‌1。‌编译选项‌:部分旧版库需启用 _GNU_SOURCE 宏(通过。

2025-03-11 11:44:49 148

原创 Linux tcpdump -any抓的包转换成标准的pcap

根本原因:tcpdump -any 的自动检测机制与标准 pcap 文件的严格链路层定义冲突。最佳实践:始终明确指定链路层类型(如 -l type radiotap),或使用 tshark 进行转换以确保兼容性。使用 -D 查看接口支持的链路层类型,再通过 -l 指定具体类型:bash根本原因:tcpdump -any 的自动检测机制与标准 pcap 文件的严格链路层定义冲突。

2025-03-11 09:44:08 1183

原创 C语言回调函数

回调函数(Callback Function)是指将一个函数作为参数传递给另一个函数,然后在适当的时候由被调用的函数执行该回调函数。回调函数是实现事件驱动编程、异步编程和灵活接口设计的核心工具。回调函数通常用于实现高阶函数,动态决定函数执行的具体逻辑。回调函数是实现灵活性、模块化和异步编程的重要工具。在事件驱动编程、异步操作、算法中都有广泛的应用。通过回调函数,我们能够动态地选择执行逻辑,解耦函数之间的关系,提升代码的可扩展性和可复用性。

2025-03-10 21:30:50 709

原创 C语言函数指针

函数指针本质上是一个指针变量,指向一个函数的入口地址。通过函数指针,我们可以间接地调用函数,而不必直接使用函数名。return_type:函数的返回类型。pointer_name:函数指针的名字。parameter_types:函数的参数类型。// 定义函数指针类型,指向返回int类型,参数为int的函数函数指针是C语言中非常重要的一种功能,它使得程序更具灵活性和可扩展性。通过函数指针,我们能够实现回调函数、事件处理、模块化编程等多种功能。

2025-03-10 21:23:48 1237

原创 autoreconf --install的作用

autoreconf 是一个用于自动重新生成 Autotools 项目所需配置脚本的工具。Autotools 是一组用于创建可移植构建系统的工具集合,主要包括 autoconf、automake 和 libtool。在开发或编译一个使用 Autotools 的项目时,可能需要根据不同的环境和需求重新生成配置脚本,autoreconf 就可以帮助完成这个任务。–install 选项的作用。

2025-03-10 19:02:50 929

原创 C 语言中的字符串详解

在 C 语言中,字符串是由一组字符组成的字符序列。字符串常常被用来表示文本信息。C 语言中没有专门的字符串数据类型,字符串实际上是字符数组的一种特例。// 定义一个字符数组,长度为 20这个 str 数组能够存储最多 19 个字符(因为最后一个位置要存储一个 ‘\0’ 字符)。在 C 语言中,字符串是以 ‘\0’(即空字符)结束的,因此它的长度通常等于数组大小减去 1。

2025-03-08 14:55:42 749

原创 C 语言中的数组详解

数组的定义方式包括数组大小的指定和元素类型的声明。在 C 语言中,数组是一个固定大小的结构,元素类型必须一致。int arr[5];// 定义一个整型数组,大小为 5char ch[5];// 定义一个字符串数组,大小为 5这会分配一个可以存储 5 个整数/字符串的数组。数组的索引从 0 开始,因此 arr[0] 到 arr[4] 是有效的元素。

2025-03-08 14:29:11 883

原创 字符编码:从 ASCII 到 UTF-8 和 GB2312

在计算机科学中,字符串通常指的是由一系列字符(如字母、数字、符号)组成的序列。在不同的编程语言中,字符串的表现方式可能不同。例如,在 C 语言中,字符串是以空字符 ‘\0’ 结尾的字符数组。

2025-03-08 14:11:17 769

原创 递归函数介绍

前面的文章介绍了函数的一些知识,今天单独介绍一种使用,如果是自己调用自己的这种函数–递归函数。递归函数是一种在函数定义中调用自身的编程技巧。它在许多算法和解决问题的方法中都起到了重要作用,尤其是在处理分治问题和树形结构时。

2025-03-08 13:54:57 328

原创 c语言简单效果展示

到这里为止,还差数组,字符串等操作,就基本可以实现一些简单的程序了,本文就给大家展示下,写一个最简单的五子棋。目标就只是给大家展示C语言的魅力,实现的思路就不赘述了。五子棋的基本规则是玩家轮流在一个15×15或19×19的棋盘上放置棋子,目标是第一个形成连续五个相同颜色棋子的玩家获胜。我们将实现一个简单的文本版五子棋,包括一个15x15的棋盘,玩家一次输入坐标来下棋,由程序判定胜负。

2025-03-06 20:50:17 282

原创 C语言中的形参与实参

形参是函数定义中声明的参数,用于接收实参的值或地址。实参是调用函数时传递的具体值或变量。在值传递中,形参是实参的副本,修改形参不会影响实参。在引用传递中,形参是实参的地址,修改形参会影响实参。理解形参和实参的关系,有助于编写高效、正确的函数代码。

2025-03-06 20:30:27 632

原创 C语言中的函数参数传递方式

值传递:传递的是实参的副本,函数内部对形参的修改不会影响实参。适用于不需要修改实参的场景。引用传递:通过指针传递实参的地址,函数内部可以直接修改实参。适用于需要修改实参或处理大型数据结构的场景。简单来说,使用函数会有两种场景,一种是需要改变进去的值,一种是不需要改变进去的值,这两种方式就是为了解决这两个场景设计的。下一篇,我们将继续分享这两种传递方式下的参数本身相关的知识点。

2025-03-06 20:18:03 368

原创 c语言函数的定义与调用

函数定义包含了函数的实现部分,它是由返回类型、函数名、参数列表和函数体构成的。返回类型 函数名(参数列表) {// 函数体// 函数执行的代码return 返回值;// 如果有返回类型// 函数声明// 调用函数return 0;// 函数定义在此例中,我们在 main 函数前声明了 add 函数,而在 main 函数之后定义了它。这是允许的,因为 add 函数已经被声明,编译器可以知道它的存在。函数的本质,其实就是一个“小小的魔法箱”。

2025-03-05 23:22:15 338

原创 C语言开发以及维护用到的工具简介

在软件开发中,Makefile和Meson是常见的构建系统,用于管理编译过程。下面是对Makefile和Meson的详细介绍Makefile是make构建工具使用的配置文件,用于定义如何编译和链接代码。它包含一组规则和依赖关系,用于自动化构建过程。Makefile 广泛用于 C 和 C++ 项目中,但也可以用于其他语言。Meson 是一个现代的构建系统,旨在比传统的构建工具(如 Make)更快速、更易用。Meson 主要使用 Ninja 作为其后台构建系统,能够大幅提高构建效率。

2025-03-05 20:30:07 1373

kea套装,包括dhcp服务器,中继和户端,dhcpv6服务器,客户端和中继,以及dns服务器等

kea套装,包括dhcp服务器,中继和户端,dhcpv6服务器,客户端和中继,以及dns服务器等,基于rocky可以直接编译通过使用

2025-03-13

suricate dpdk版本,内置dpdk,可以直接编译使用

suricate dpdk版本,内置dpdk,可以直接编译使用

2025-03-11

基于dpdk实现的网络协议栈

基于dpdk实现的开源协议栈,支持http,redis等常用服务

2025-03-07

dpdk源代码,国外资源站速度不好

dpdk源代码,可以基于rocky8.6直接编译过的。编译过程如下: 进入到dpdk目录: 1、创建build 2、cd build 3、meson 4、ninja

2025-03-06

网络故障排查指南以及部分工具

从应用到驱动,排查网络问题 1、网卡驱动: (1)、ring buffer (2)、网卡端口 (3)、流控 (4)、mac (5)、其他处理 2、驱动: (1)、接口 (2)、负载 (3)、环形缓冲区 3、协议栈 (1)、邻居子系统,arp (2)、ip层,地址,路由,防火墙,分片,mtu (3)、tcp:time外套,队列,syn攻击,超时,乱序,内存不足 (4)、UDP (5)、socket设置 分析工具: (1)、排障工具:tcpdump,wireshark (2)、抓包工具:wireshark (3)、分析工具: (4)、复现工具:tcpreplay,scapy,ipop,anysender,xcap (5)、打点工具:perf,systemtap

2023-06-06

redis常用功能梳理

redis基础全量梳理 1、redis简介 2、redis支持的数据类型 3、keys的基本操作 4、redis每种数据类型的操作 5、redis的备份机制 6、redis集群配置

2022-11-16

空空如也

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

TA关注的人

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