- 博客(34)
- 收藏
- 关注
原创 C语言——指针进阶应用
指针的进阶应用是 C 语言编程的核心技能之一。通过掌握多级指针、函数指针、指针数组等高级特性,你可以编写出更高效、更灵活的代码。同时,动态内存管理的高级技巧(如柔性数组和内存池)能显著提升程序的性能和稳定性。
2025-02-13 16:39:54
614
原创 C语言——指针基础知识
指针是 C 语言的灵魂,它直接操作内存的能力带来了极高的灵活性和效率,但也需要开发者谨慎使用。理解以下核心要点是关键:指针存储的是内存地址,通过解引用访问数据。指针运算以数据类型大小为单位。动态内存分配后必须手动释放。避免野指针和空指针解引用。《C和指针》
2025-02-13 16:12:51
1324
原创 GO语言基础知识
Go语言是一门简洁高效的现代编程语言,凭借其简洁的语法、强大的并发支持和高效的性能,逐渐成为许多开发者的首选编程语言之一。Go语言在云原生计算、微服务架构、分布式系统等领域得到了广泛应用。希望本文介绍的Go语言的核心特性、优势、应用场景和学习资源能够帮助大家更好地了解和掌握这门语言。
2025-02-12 18:19:40
1614
原创 虚拟机基础知识
A:安装增强工具(如 VMware Tools、VirtualBox Guest Additions),启用硬件加速(如 Intel VT-x/AMD-V)。虚拟机(Virtual Machine,VM)是一种通过软件模拟的计算机系统,能够在物理硬件上运行多个独立的操作系统和应用程序。:虚拟机的核心技术,允许将物理资源(CPU、内存、存储、网络)抽象为多个虚拟资源池,供多个虚拟机共享。:商业级(如 ESXi、Workstation),性能强,功能丰富。A:会,虚拟机占用物理资源,需合理分配以避免过载。
2025-02-12 14:37:34
464
原创 LINUX——基础指令
本文涵盖了 Linux 命令行最核心的操作指令,掌握这些内容可应对80% 的日常运维与开发需求。建议读者:熟记常用指令的高频参数组合多用man [命令]查看官方手册(如man grep善用 Tab 键补全和history命令提升操作效率。
2025-02-11 22:30:20
2546
原创 嵌入式心得
嵌入式开发是一个充满挑战和机遇的领域。通过合理的需求分析、硬件选型、软件架构设计、开发与调试以及测试与优化,可以提高嵌入式项目的成功率。
2025-02-11 22:21:44
526
原创 设备树基础知识
设备树是一种数据结构,用于描述硬件设备的拓扑结构、属性和连接关系。它以一种标准化的格式(通常是.dts或.dtb文件)来描述硬件设备,使得操作系统能够根据这些描述信息动态地初始化硬件设备并加载相应的驱动程序。设备树是一种用于描述硬件设备的机制,它在嵌入式系统开发中扮演着重要的角色。通过设备树,硬件平台与操作系统之间实现了解耦,使得硬件的初始化和驱动加载变得更加灵活和高效。本文介绍了设备树的基本概念、结构、编写方法以及在Linux内核中的使用,希望对大家有所帮助。
2025-02-10 19:00:53
796
原创 LINUX——内核
Linux 内核作为现代操作系统的核心,其设计哲学强调简洁性可移植性和高效性。通过本文的学习,你应该已经掌握:内核的核心功能与架构设计如何编译和配置自定义内核编写与调试内核模块的基本方法常用的内核调试工具内核开发是一个需要长期积累的领域,建议从阅读源码(如调度器代码)和参与社区(如LKML)开始,逐步深入探索。
2025-02-10 18:42:57
1507
原创 数据结构——图
图(Graph)是由顶点(Vertex)集合和边(Edge)集合组成的数据结构,通常表示为 G=(V,E),其中 V 是顶点集合,E 是边集合。无向图(Undirected Graph):图中的边没有方向,即边 (u,v) 和 (v,u) 是相同的。有向图(Directed Graph):图中的边有方向,即边 (u,v) 和 (v,u) 是不同的。加权图(Weighted Graph):图中的每条边都有一个权重(Weight),用于表示边的代价或距离。图是一种非常强大的数据结构,它能够表示复杂的对象关系。
2025-02-09 23:42:04
853
原创 数据结构——树
树是一种非线性数据结构,它由若干个节点(或顶点)和边组成。树具有以下特点:有一个特殊的节点称为根节点,它是树的起点,没有父节点。除了根节点外,每个节点有且仅有一个父节点。从根节点到任何其他节点的路径是唯一的。树中的节点可以有多个子节点。树是一种非常重要的数据结构,它在计算机科学的许多领域都有广泛的应用。本文介绍了树的基本概念、常见的树类型以及一些基本操作。通过这些内容,读者可以对树有一个初步的了解,并能够在实际编程中应用这些知识。希望本文能够帮助大家更好地掌握树这一数据结构。
2025-02-09 22:27:43
864
原创 数据结构——链表
链表通过指针的灵活链接,完美解决了数组的固定大小限制问题,是构建复杂动态系统的基石。掌握单链表、双向链表和循环链表的实现与适用场景,能够帮助你在实际开发中高效处理动态数据。尽管链表的随机访问效率较低,但其在插入、删除操作上的优势使其在特定场景下不可替代。
2025-02-08 22:14:24
1468
原创 数据结构——栈
栈是一种线性数据结构,它只允许在一端(栈顶)进行插入和删除操作。入栈(Push):将元素添加到栈顶。出栈(Pop):移除栈顶元素。查看栈顶元素(Peek/Top):获取栈顶元素的值,但不移除它。判断栈是否为空(IsEmpty):检查栈中是否有元素。栈的特性使其非常适合处理需要“后进先出”的场景。栈是一种简单但功能强大的数据结构,广泛应用于各种场景。通过本文的学习,你应该已经掌握了栈的基本概念、实现方式以及常见应用场景。无论是数组实现还是链表实现,栈的核心思想都是“后进先出”。
2025-02-08 17:22:42
603
原创 数据结构——队列
队列是一种线性数据结构,它只允许在一端(队尾)插入数据,在另一端(队头)删除数据。入队(Enqueue):将元素添加到队尾。出队(Dequeue):从队头移除元素。查看队头元素(Peek/Front):获取队头元素的值,但不移除它。判断队列是否为空(IsEmpty):检查队列中是否有元素。队列的特性使其非常适合处理需要按顺序处理数据的场景。队列是一种简单但功能强大的数据结构,广泛应用于各种场景。通过本文的学习,你应该已经掌握了队列的基本概念、实现方式以及常见应用场景。
2025-02-07 14:13:50
960
原创 LINUX——内核驱动程序
内核驱动程序是运行在Linux内核空间的一段代码,它直接与硬件设备交互,并为用户空间程序提供访问硬件的接口。初始化硬件设备:在系统启动时,驱动程序负责初始化硬件设备,使其处于可用状态。管理设备资源:驱动程序负责分配和管理硬件设备所需的资源,如内存、中断等。提供接口:驱动程序通过文件操作接口(如readwriteioctl等)向用户空间程序提供访问硬件的接口。处理中断:驱动程序需要处理硬件设备产生的中断,以响应设备的状态变化。
2025-02-07 00:37:24
718
原创 LINUX——内核移植、内核编译教程
Linux内核编译是一个将内核源代码转换成可在特定硬件架构上运行的二进制文件的过程。这些命令提供了一个图形界面来配置内核选项,配置完毕后,退出并保存。如果下载失败,需要检查网络配置问题,如通过ping ubuntu的地址查看是否可以连接上;10、bootm 0x30008000 启动这个地址处的代码,即拷贝过去的内核代码;所以,我们需要将入口地址向后偏移64字节,即偏移到:0x30008040处。解压完成后会生成一个文件夹,后续有些操作就在该文件夹顶层操作。:如果下载的是压缩包,使用。
2024-10-08 19:35:45
1527
1
原创 LINUX——进程
多线程(Multithreading):多进程(Multiprocessing):进程调度(Process Scheduling):同步机制(Synchronization Mechanisms):异步I/O(Asynchronous I/O):线程库(Thread Libraries):并发编程模型(Concurrency Models):工具和命令:编程语言支持:并发编程是一个复杂的话题,涉及到操作系统、硬件、编程语言和具体的应用场景。正确地实现并发可以显著提高程序的性能和响应速度,但同时也需要仔细处理
2024-08-31 22:22:10
1206
原创 linux高级编程——文件IO(常用函数大全)
Linux高级编程中的目录IO操作是文件系统编程的一个重要组成部分,主要涉及到目录的打开、读取、遍历和关闭等操作。以下是一些基本的目录IO操作和相关的系统调用函数。
2024-08-18 23:06:33
837
原创 linux高级编程——文件IO
Linux高级编程中的文件I/O(输入/输出)是操作系统编程中的一个重要部分。在Linux环境下,文件I/O操作通常涉及到对文件描述符(file descriptor)的管理和操作。
2024-08-13 21:59:59
1099
原创 【C语言】指针相关基础知识
指针是 语言中的一个重要概念,也是c语言的一个重要特色。正确而灵活地运用它可以有效地表示复杂的数据结构;能动态分配内存;方便地使用字符串;有效而方便地使用数组;在调用函数时能获得一个以上的结果;能直接处理内存单元地址等,这对设计系统软件是非常必要的。掌握指针的应用,可以使程序简洁、紧凑、高效。每一个学习和使用c语言的人,都应当深入地学习和掌握指针。可以说,不掌握指针就是没有掌握c语言的精华。
2024-08-06 19:28:22
943
原创 【c语言】预处理、宏定义相关知识
(a) : (b))定义了一个求最大值的宏,可以在代码中使用MAX(x, y)来获取两者中的最大值。总结起来,预处理是C语言编译过程中重要的一步,主要包括宏定义、文件包含和条件编译等操作。例如,#if OS == WINDOWS会判断OS是否等于WINDOWS,然后决定是否编译后续的代码。预处理主要包含宏定义、文件包含和条件编译等指令。在C语言中,预处理是一个重要环节,它用于在编译器的词法分析之前对源代码进行处理。在C/C++编程中,预处理和宏定义是两个不可或缺的概念,它们在源代码编译之前起到关键的作用。
2024-08-05 21:44:07
742
原创 【C语言】函数相关基础知识
函数的调用,有调用者和被调用者,其中main函数只能是调用者,函数之间可以相互调用,也可在函数中调用另一个函数,层层下去,这个叫函数的嵌套,但是注意,函数不支持函数的嵌套定义,只可嵌套调用。
2024-08-04 23:20:38
525
原创 【C语言】函数的相关基础知识
返回类型 函数名(参数列表)// 函数体代码// 可以包含变量声明、语句、控制结构(如if、for、while)等return 返回值;// 根据需要返回值;1、返回类型:例如,int、float、void等。如果返回值的类型与返回类型的数据类型不一致,以函数返回类型为主。如果不定义返回类型,则2、函数名:这是函数的唯一标识符,遵循C语言的命名规则。3、形式参数:表明该函数要用到的数据形参写法:数据类型形参变量名1,数据类型形参变量名2,数据类型形参变量名2。
2024-08-01 20:01:38
1650
原创 【C语言】strcpy函数,strcmp函数,strlen函数相关知识
在C语言中,strcpy函数是一个非常实用的字符串处理工具。它的基本作用是将一个字符串(source)复制到另一个字符串(destination)中。该操作在很多场景下都非常有用,如需要创建字符串的副本或者将用户输入的字符串保存起来时。然而,使用strcpy时必须确保目标数组有足够的空间来存储源字符串,包括结束符'\0'。否则,可能会导致缓冲区溢出,进而引发程序崩溃或安全隐患。
2024-07-31 23:29:00
318
原创 【C语言】二维数组
在大多数编程语言中,二维数组的定义需要指定两个维度的大小,例如在C语言中使用`int array[3][4];`来定义一个3行4列的整型数组。1.1初始化时,可以选择完全初始化、部分初始化或按行初始化等方式。例如:int arr[3][4] = {{1,2},{3,4},{5,6}};` 这是按行初始化的一个实例。二维数组在内存中的存储通常是连续的,且按照行优先顺序排列。这意味着同一行的元素在内存中相邻,不同行之间的元素也依次存储[^2^]。
2024-07-31 23:14:56
359
原创 【C语言】选择排序、冒泡排序、二分查找、插入排序的详解
/定义数组//求出数组长度for(i = 0;i++) // 控制循环次数for(j = 0;j++ )if(a[j] > a[j+1]) // 前面的数比后面的数大,所以交换for(j=0;j<len;j++) //打印return 0;int t,i,j;i = len;for(i=1;i<len;i++) // 控制循环次数t = a[i];j=i;
2024-07-30 21:15:42
1420
原创 【c语言】do while、for循环
语义:先执行语句,再判断表达式;真,继续执行语句,假,结束。流程图:while 与 do while区别1.while 先判断 后执行2.do while 先执行 后判断(循环体至少执行一次)
2024-07-29 21:19:01
328
原创 【C语言】语言中常见选择结构(if,switch)、循环结构(while,for)
c语言中提供了三种形式的if语句;注意: 花括号是学习前期便于读写代码,可以不加;if语句可以嵌套使用:表达式的类型不限于逻辑表达式,可以是任意的数值类型(包括整型、实型、字符型、指针型数据)
2024-07-28 21:30:00
303
原创 【C语言】输入、输出函数知识、getchar()、putchar()、 scanf()、printf()
1.定义:printf函数调用的一般形式:printf(格式控制字符串,输出表);3.格式控制字符串可以包含三种字符:格式说明符、转义字符和普通字符。注意:使用%c格式符按字符形式输出,输出前,系统会将该整数作为ASCII码转换为相应的字符。同样,一个字符型数据也可以用%d格式符以整数形式输出其对应的ASCII值。可以指定数据宽度和小数位数。m表示该浮点数整体所占的列数,包括整数部分、小数点和小数部分;n表示该浮点数中小数部分所占的列数,int a;return 0;
2024-07-26 20:42:45
1455
原创 【linux】vim命令模式下常用快捷操作
6、ctrl + r 反撤销,即若u多按了可以按反撤销恢复。注意:以上操作均在vim命令模式下进行,而不是插入模式。11、搜索字符串: shift + :+字符串。扩展:ndd 删除从光标开始的n行内容。扩展:nyy 复制从光标开始的n行内容。注意:此时只需按一下即可,与2、3点不同。10、查看帮助文档:vimtutor zh。扩展:mp m表示粘贴多少份。2、dd 删除光标所在行。1、x 删除光标所在位置。3、yy 复制光标所在行。7、wq 退出并保持。
2024-07-25 21:00:22
273
原创 【C语言中】类型转换、加减乘除、自增自减、赋值运算相关知识
思路:对50求余数:(rand)%50,让余数在0 ~ 49,然后再+50,所以余数就是50 ~ 99;1.高精度 => 低精度 double/float => 整型 ==> 精度丢失。2.从右向左 --- 必转。有符号短类型 =>长类型 //符号位扩展 (高位补符号位)++a //前置加加 --- 先加(让i自增) 后用(表达式的结果)a++ //后置加加 --- 先用(表达式的结果) 后加(让i自增)4、++ 自增 --- 表示一次增加1 (--自减与++自增概念类似)
2024-07-25 19:49:10
573
原创 【C语言】基本数据类型、常量变量
signed int 有符号整型 4字节 取值范围:-2^31 ~ 2^31-1。 第一位为符号位,1表示该符号为负,负数的反码:符号位不变,其余位取反。字符串常量: "hello" -> 'h''e''l''l''o''\0' 正数的原码,反码,补码一样。c语言中基本数据类型分为四类:整型,字符型,浮点型,枚举型。
2024-07-24 20:02:24
451
原创 linux常用基础命令
mkdir Desktop/2 Desktop/3 Desktop/4 (在Desktop下同时创建1 2 3文件夹)//若2文件不存在,则将1文件改名为2(改名功能)注意:cp -r 1 2 //若2目录不存在,则表示将1目录复制并改名为2。注意:mv 1 2 //若2文件存在,则将1文件剪切并放进2文件中(剪切功能)touch ~/3.txt ~/4.txt(在~下创建3.txt和4.txt文件)touch Desktop/1.txt (在Desktop下创建1.txt文件)
2024-07-23 20:32:37
581
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人