- 博客(28)
- 收藏
- 关注
原创 Linux操作系统 文件读写
想要链接Linux的文件系统,那么对于Linux系统中对于文件操作的接口就必须要了解,在 Linux 操作系统中,文件读写是程序设计的重要组成部分。可以通过两种主要方式完成:使用提供的文件操作函数(),或者直接调用进行底层文件操作。
2024-12-11 20:05:48
1006
原创 计算机网络编程(Linux):I/O多路转接(1) select,poll
select函数nfds:指定待检测的文件描述符范围,它的值应该是所有文件描述符中最大值加 1。select会检查文件描述符从0到nfds-1的状态。未使用的文件描述符范围无需浪费资源。分别是读,写,异常的文件描述符的位图,我们需要关心哪一个事件,就把对应的文件描述符加入到其位图结构中,传入进函数。// 秒// 微秒select函数的超时事件,select每一次会返回我们设置超时事件的剩余事件,例如,5秒,运行一秒后会返回4秒。同时,我们可以把参数设置为NULL 阻塞。
2024-12-09 21:36:14
685
原创 Linux 操作系统中的 main 函数参数和环境变量
刚学习c语言的时候,我们一定解除了很多main函数的形式,最后我们肯定是最多使用无参数类型的main函数,那么那些main函数里带参数的形式,到底是干什么的呢,有这些形式,肯定不是无用的。argc。
2024-10-06 11:54:44
924
原创 C++11特性(2)
在传统的 C 语言中,函数参数传递和对象赋值通常依赖于值传递,也就是说,当我们传递参数时,除非是使用指针,否则会对参数进行一份完整的复制,这在处理大型对象或容器时会导致较大的内存和性能开销。为了优化这种情况,C++ 引入了“引用”机制,允许在一定作用域内通过引用传递对象,避免不必要的拷贝。然而,引用只能绑定到左值,也就是那些在调用周期内仍然存在的对象。但是在实际编程中,很多情况下我们只需要临时使用某个值,例如函数内创建的对象或表达式中的临时变量,这些对象的生命周期无法支持他们在后续代码中重复使用。
2024-09-24 10:52:55
700
原创 C++11 特性(1)
C++11作为C++发展历程中的里程碑,它引入了许多新特性,极大地提高了编程效率和代码可读性。这些新特性包括但不限于列表初始化、自动类型推导(auto)、decltype、可变参数模板、lambda表达式、智能指针、右值引用等。
2024-09-19 09:30:16
830
1
原创 C++继承中的多态
就类如 dog 类重写,将叫声输出为“ 汪汪汪”,那么这个函数就叫做虚函数,虚函数允许子类重写基类的函数,从而在运行时通过多态机制调用子类的具体实现。
2024-09-13 20:32:46
1333
3
原创 Linux 操作系统 进程(2)
在Linux对PCB的定义中可以看到...state就是进程的运行状态,Linux中定义了表示各种状态的宏#define TASK_RUNNING 0x0000 // 运行态#define TASK_INTERRUPTIBLE 0x0001 // 可中断的睡眠态#define TASK_UNINTERRUPTIBLE 0x0002 // 不可中断的睡眠态#define TASK_STOPPED 0x0004 // 停止态#define TASK_TRACED 0x0008 // 被跟踪态。
2024-09-11 11:26:04
1279
原创 C++ 模板
C++模板可以看作是一种创建泛型函数或类的工具,它允许你定义针对任意类型的操作。通过模板,函数或类可以处理不同数据类型,而不需要为每种数据类型分别重写代码。函数模板类模板在C++中,模板的编译和定义通常是在同一个文件中进行的,这种方式称为模板实例化。但是,为了将模板定义与编译分离,C++98 引入了 export关键字,用来允许模板的定义在一个单独的实现文件中,而模板的声明可以放在头文件中。然而,export。
2024-09-10 10:50:14
686
2
原创 Linux 操作系统 进程(1)
进程是操作系统中执行程序的一个实例,它包含了程序运行所需的所有信息和资源。简单来说,进程就是操作系统为运行中的程序提供的一个执行环境,包括程序代码、数据、打开的文件、内存空间和处理器时间等。一个程序在操作系统中可能运行多个实例,每个实例就是一个独立的进程。可执行程序代码:程序的二进制指令。进程的内存空间:包括堆、栈、数据段等。进程状态信息:CPU寄存器、程序计数器等,记录当前进程执行的具体状态。调度信息:操作系统需要的信息,用来决定何时执行该进程。
2024-09-08 11:06:54
1408
2
原创 不同结构体之间的链接
然而,在更复杂的场景中,例如操作系统内核或某些嵌入式系统中,数据结构不仅要能处理相同类型的数据,还需要能够链接不同类型的数据结构。通过计算结构体内成员的偏移量,可以有效地实现这一点,允许在同一个链表或队列中链接不同类型的结构体。将链表节点嵌入不同的结构体中是一种常见的做法,但当我们遍历链表时,仅仅通过节点指针,并不知道该节点对应的是哪个结构体。在这类结构中,通常不需要担心不同类型的结构体之间的链接问题,因为它们是统一的、同质的元素。恢复其对应的完整结构体,就需要计算该节点在结构体中的偏移量。
2024-09-07 15:00:24
953
原创 AVL 树的旋转
AVL 树是一种自平衡二叉搜索树(Binary Search Tree, BST),以其发明者 G. M. Adelson-Velsky 和 E. M. Landis 的名字命名。它的特点是对于任意一个节点,其左右子树的高度差(平衡因子)不超过 1,这确保了 AVL 树的高度在 O(log n) 的范围内,从而保证了插入、删除和查找操作的时间复杂度都是 O(log n)。
2024-09-06 12:00:12
495
原创 二叉搜索树
二叉搜索树(BST)是一种NNNBST具有良好的性能特性,对于有序数据的插入、查找和删除操作,在理想情况下都可以达到O(log n)的时间复杂度。因此,BST广泛用于需要动态数据集合的场景中,如数据库查询、排序等。以一个数组为为例子。
2024-09-05 11:15:13
656
原创 Linux 基础开发工具 : Vim编辑器
Vim 是 Linux 和其他类 Unix 系统上广泛使用的文本编辑器之一。它基于更早的 vi 编辑器,但添加了许多增强功能和扩展。Vim 是“Vi IMproved”的缩写,意为“改进的 Vi”,我们常使用Vim编辑器编写c/c++代码。
2024-07-22 17:53:05
487
原创 Linux 权限
在Linux操作系统中,权限管理是一个至关重要的概念,它确保了系统的安全性和稳定性。同时可以在工作中,设置对象的权限,就算我们很多人使用一台服务器,我们也可以让别人看不到我们文件的内容,或者让别人无法对自己的文件进行操作!
2024-07-18 17:51:14
775
1
原创 数据结构:堆
这张网络上的图片很形象的展示了一棵具有多个分支的独特树木,其分支模式类似于(甚至于是完美)二叉树的结构。我们可以将这棵树的形态作为引入二叉树概念的一个隐喻。在二叉树中,每个节点最多有两个子节点,这与树木的分支方式相似,其中每个分支都可以进一步分为两个更小的分支。二叉树是计算机科学中常用的数据结构,它的每个节点最多有两个子节点,通常被称为左子节点和右子节点。二叉树的这种结构使得它在执行搜索和排序操作时非常高效,也广泛应用于各种算法中,如二叉搜索树、堆和平衡二叉树等。
2024-04-19 17:13:31
1672
1
原创 c语言文件操作
C语言文件操作函数的探索C语言作为计算机科学领域的基石之一,其强大的功能和灵活性使其成为系统编程和硬件接口编程的首选语言。在C语言的众多特性中,文件操作功能是最为基础且重要的一部分。本文将深入探讨C语言中的文件操作函数,为读者提供一个全面的介绍。
2024-04-19 15:51:13
884
1
原创 数据结构:栈
当我们谈论栈时,我们指的是一种在计算机科学中常见的数据结构,它遵循“后进先出”(Last In First Out,LIFO)的原则。这意味着最后进入栈的元素会首先被移除。
2024-04-10 18:49:48
558
1
原创 类和对象(基础)
class Datepublic://公有,声明函数private://私有,保存对象的数据int _year;int _month;int _day;一个类通常包含两部分private 和 public他们包含的数据也就向他们的单词意思一样,私有 和 公有。
2024-04-10 11:26:07
486
1
原创 链表和顺序表
顺序表(Sequential List)是一种使用顺序存储结构实现的线性表,它将线性表的元素存储在一段连续的存储单元中。顺序表的特点是元素在内存中的存储位置是连续的,通过元素在存储单元中的相对位置来表示元素之间的逻辑顺序。顺序表通常由以下几个要素组成:1. 数据存储区:顺序表中用来存储元素的一段连续存储空间,通常使用数组来实现。2. 表长度:记录当前顺序表中元素的个数。3. 最大容量:记录顺序表所分配的存储空间的最大容量,防止数组越界。
2024-04-07 21:07:21
770
原创 C语言自定义类型
在学习 C 语言的早期阶段,我们首先熟悉了基本的数据类型,如 int、double、float 等。然而,随着我们深入学习,逐渐认识到这些基本类型有时无法完整地表达一些复杂概念,比如时间。时间的表示需要涵盖年、月、日、时、分、秒等诸多信息,这显然超出了基本数据类型的限制。因此,为了更准确地描述时间,我们可以利用结构体的特性创建自定义类型,其中包含多个成员变量,用于存储各种时间信息。这一时刻,自定义类型成为我们未来学习道路上不可或缺的利器。
2024-04-07 18:13:22
1664
原创 C++基础
这两段代码很容易看出他们的区别,他们很相似,但是 引用只用于在作用域不会消失的变量,比如,函数传参,但是函数内定义的变量,就类似与这两段代码中的temp 他们在函数结束后,就会消失,但是 p1 p2 不会。在C语言学习中,这个符号叫做 按位与运算符,在C++中他还有其他的作用,总所周知,C语言的指针,非常重要,但也很容易引起意外,因此,C++祖师爷在设计的时候,用& 引用保护学习者。3. 返回类型可以相同也可以不同:重载的函数可以具有相同的返回类型,也可以有不同的返回类型。重载时不考虑返回类型。
2024-04-07 17:48:52
376
原创 基本排序算法
该文章用虽然用C++实现,但是基本逻辑都一样//c++类class Sortpublic:int _size;Sort();~Sort();//插入希尔////交换////前后指针//非递归////冒泡////归并//非递归////计数private:int* _data;//_size是数组大小,_data是存放数据的数组。
2024-04-07 12:45:35
697
原创 深入了解C语言数据类型
我们学习数学的时候,数学会将数字定义成各种各样的类型,例如:小数,分数,整数.....在我们c语言学习中,c语言对于不同的数据同样也定义的不同的类型,计算机是不懂我们定义的这些数据类型,他只能读取0或者1,这样就导致在c语言定义的数据类型就是让计算机在读取我们定义的数据的时候读取的0或者1的个数,例如int类型是4个字节,32个bit。(32位机器环境)
2024-01-17 15:41:45
909
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人