自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 tcp常用网络接口 linux环境

TCP(传输控制协议)网络通信是常见的网络应用形式,它提供了面向连接的、可靠的数据传输服务。

2024-08-06 23:17:16 423

原创 udp常用函数介绍 linux环境

UDP是一种无连接的协议,与TCP不同,它不提供错误恢复、重传机制或顺序保证。socket()

2024-08-06 22:07:35 594

原创 vs code解决报错 (c/c++的配置环境 远端机器为Linux ubuntu)

可以按照步骤确定那一步不对,如果一个可以就不用往下看了。

2024-07-24 10:59:14 533

原创 c++11的特性

可以简单先以能不能取地址做区分,如果能取地址就是左值,不能就是右值。

2024-07-18 14:08:09 925

原创 动静态库链接

return x+y;return x-y;int main()int a=2;int b=3;return 0;mymath.exeadd(2,3)=5mymath.exe//mymath.exelibmath.somymath.cmymath.exeadd(2,3)=5。

2024-07-11 00:02:20 452

原创 简单shell

fork是 Linux 和许多其他类 Unix 系统中的一个重要系统调用,它用于创建一个新的进程,这个新进程是当前进程的复制品,称为子进程。子进程会获得父进程当前状态的副本,包括父进程的内存布局、环境变量、打开的文件描述符等。但是,子进程和父进程是两个独立的执行线程,它们可以独立地运行程序的不同部分。以下是关于forkforkforkwaitwaitpid需要注意的是,虽然fork是一个强大的工具,但它也有一些限制和开销。例如,由于需要复制父进程的状态,因此fork的开销通常比创建线程要大。

2024-06-30 16:04:45 646

原创 unordered_map和unordered_set

顺序查找时间复杂度为O(N),平衡树中为树的高度,即 O($log_2 N$),搜索的效率取决于搜索过程中元素的比较次数。开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地 址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链 接起来,各链表的头结点存储在哈希表中。该方式即为哈希(散列)方法,哈希方法中使用的转换函数称为哈希(散列)函数,构造出来的结构称 为哈希表(Hash Table)(或者称散列表)两种方法:闭散列和开散列。

2024-06-29 11:57:16 554

原创 深入理解C++红黑树

红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,它可以在插入、删除和查找操作中保持相对高效的性能。由于其独特的性质,红黑树在计算机科学中得到了广泛的应用,特别是在需要动态维护有序数据集合的场景中。本文将详细介绍红黑树的基本概念、性质、实现以及应用。红黑树的实现涉及到节点定义、插入操作、删除操作以及旋转和颜色调整等辅助操作。红黑树的性质保证了它在插入、删除和查找操作中的高效性。

2024-06-22 22:24:55 855

原创 深入探索C++中的AVL树

AVL树作为一种平衡二叉搜索树,在维护其平衡性质的同时,也保证了高效的查找、插入和删除操作。通过旋转操作,AVL树能够在插入或删除节点后迅速恢复其平衡状态。在C++中,我们可以使用类和结构体来方便地实现AVL树,并将其应用到各种需要高效数据访问的场景中。

2024-06-21 22:41:19 417

原创 c++中map和set的简单使用

默认情况下,map和set使用操作符进行元素间的比较。但你也可以通过提供自定义的比较函数或函数对象来改变排序规则。这在处理自定义类型或需要非标准排序方式时非常有用。// 比较逻辑,例如按照绝对值升序排序// 使用自定义比较函数来创建map或set对象// 添加元素到map或set// 遍历map或setreturn 0;// 比较逻辑,例如按照绝对值升序排序// 使用自定义函数对象来创建map或set对象。

2024-06-12 15:33:42 294

原创 二叉搜索树

若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;任意节点的左、右子树也分别为二叉搜索树。本文介绍了二叉搜索树的基本概念和C++实现方法,包括节点定义、插入、检索和删除操作。BST在数据检索中具有很高的效率,但需要注意的是,在最坏情况下(树退化为链表),BST的性能会大大降低。因此,在实际应用中,我们可能需要对BST进行平衡操作,以提高其性能。常见的平衡二叉搜索树有AVL树、红黑树等。

2024-06-12 01:05:46 337

原创 c++多态

多态的概念以及原理,以及原理

2024-06-11 12:10:41 930

原创 c++中的继承

在C++中,继承是通过冒号(:)和访问修饰符(如publicprotectedprivate)来定义的。子类通过继承可以获取基类的公有和保护成员,但无法直接访问基类的私有成员。虚函数是基类中声明为virtual的成员函数。它允许派生类覆盖该函数并提供自己的实现。通过基类指针或引用调用虚函数时,将执行与指针或引用实际指向的对象类型相对应的版本(即动态绑定)。继承:子类继承基类的属性和方法。组合(聚合):一个类的对象包含另一个类的对象作为其成员。

2024-05-29 22:08:05 1349

原创 僵尸进程与孤儿进程

fork()是 Unix 和 Unix-like 操作系统(如 Linux)中的一个系统调用,它用于创建一个新的进程,这个新的进程被称为子进程(child process),而原有的进程则被称为父进程(parent process)。

2024-05-16 19:46:41 859

原创 c++ 仿函数与优先队列

仿函数是一种特殊的类,其对象可以像函数那样被调用。在C++中,我们只需要重载类的operator(),就可以将该类的对象当作函数来使用。仿函数的一个常见用途是作为算法的谓词(predicate),比如排序和搜索算法中的比较函数。是一个容器适配器,它提供队列的所有操作,包括pushpoptop等,但其内部元素总是按照特定的顺序进行排序。默认情况下,最大元素总是在顶部(即最先被pop出来),但我们可以通过提供自定义的比较函数或仿函数来改变这个行为。

2024-05-08 10:29:06 282

原创 c++ stl list

迭代器失效即迭代器所指向的节点的无效,即该节点被删除了。因为list的底层结构为带头结点的双向循环链表,因此在list中进行插入时是不会导致list的迭代 器失效的,只有在删除时才会失效,并且失效的只是指向被删除节点的迭代器,其他迭代器不会受到影响。

2024-05-07 10:38:59 268

原创 c++ stl vector

(constructor)构造函数声明接口说明vector()(重点)无参构造构造并初始化n个val(重点)拷贝构造使用迭代器进行初始化构造。

2024-05-06 08:17:50 216

原创 c++ string

链接: https://pan.baidu.com/s/1l81qfp8GgqX6JJMhrnq0Sw。

2024-04-29 22:26:58 309

原创 linux工具

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 下载新的centos-base文件。直接把它删了就好 rm -rf /home/ggg/.local/share/nvim/swap//%home%ggg%123.txt.swp。:关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!//把所有.repo为后缀的文件移到当前路径下的bar目录。

2024-04-10 19:13:50 915

原创 C++内存管理

int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间//还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;注意。

2024-04-09 18:12:52 768

原创 友元函数

operator>>同理。(友元关系是单向的,即如果类A声明类B为友元,那么类B并不自动将类A声明为友元。比如上述Time类和Date类,在Time类中声明Date类为其友元类,那么可以在Date类中直接 访问Time类的私有成员变量,但想在Time类中访问Date类中私有的成员变量则不行。友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在 类的内部声明,声明时需要加friend关键字。友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。

2024-04-07 21:46:31 391

原创 类与对象(下)

如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。

2024-02-15 16:27:49 443 1

原创 类和对象(上)

C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。

2024-02-13 17:51:07 344 1

原创 初始c++

namespace 名字......//写代码。

2024-02-03 21:37:13 396 1

原创 c语言排序

【代码】c语言排序。

2023-12-16 21:15:29 346 1

原创 Linux基础命令(三)

例子:chmod a+rwx 文件名 chmod a-rwx 文件名 chmod u/g/o+rwx 文件名 chmod u/g/o-rwx文件名 (这里的‘ / ’指的是其中一个u代表用户,g代表组,o代表其他人)-c :建立一个压缩文件的参数指令(create 的意思);常用选项:-R 递归修改文件或目录的所属组。

2023-12-10 19:23:22 883

原创 linux常用指令(二)

more 命令用于查看文件内容,每次显示一页,按空格键翻页,按 q 键退出。less 命令也用于查看文件内容,类似于 more 命令,但是比 more 命令更强大。例如,要在当前目录及其子目录中的所有文件中搜索包含字符串"example"的行,可以使用以下命令:grep -r "example" *管道符 | 将一个命令的标准输出(stdout)传递给另一个命令的标准输入(stdin),实现两个命令的联合使用。总体来说,less 命令比 more 命令更方便和强大,建议使用 less 命令来查看文件内容。

2023-11-26 00:36:22 769 1

原创

树是一种非线性数据结构,它由节点和边组成,其中每个节点可以有零个或多个子节点。树的结构特点如下:根节点:树的顶部节点,没有父节点。叶节点:没有子节点的节点称为叶节点,也称为终端节点。父节点和子节点:每个节点可以有一个父节点和多个子节点,父节点指向它的子节点。子树:在一个节点下面的所有子节点和它们的子节点形成的树称为该节点的子树。深度:从根节点到某个节点的唯一路径的长度称为该节点的深度。高度:从某个节点到它的子树中的任何叶节点的最长路径的长度称为该节点的高度。

2023-11-25 23:39:18 355

原创 Linux常用命令(一)

3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。1.-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。3.-p参数用于保留文件的属性信息,以确保复制后的文件和原来的文件具有相同的属性。-h:以人类可读的方式显示文件和目录的大小,例如,1K、1M等。-r:递归处理子目录,将子目录下的所有文件和目录都显示出来。

2023-11-21 23:07:31 88

原创 栈和队列

【代码】栈和队列。

2023-11-19 00:23:42 20

原创 预处理和宏

_FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义。

2023-10-19 17:50:14 18 1

原创 文件操作

文件(file)是计算机中存储数据的一种方式。文件可以是文本文件、图像文件、音频文件、视频文件等不同类型的数据。在计算机中,文件通常是以二进制数据的形式存储在磁盘或其他存储介质上的。每个文件都有一个文件名,用于在系统中标识和访问这个文件。文件名一般包含文件的实际名称和后缀名,后缀名用于指定文件的类型。通过程序,我们可以对文件进行读取、写入、追加等操作。同时,也可以进行文件的创建、删除、移动等管理操作。在操作系统中,文件是操作系统的基本组成单位之一,各种应用程序都会涉及到文件的读写和管理操作。

2023-10-15 16:46:49 22 1

原创 自定义结构体

按照一般的对齐方式,该结构体的对齐值为8字节(double类型的对齐值最大,为8),结构体总大小为24字节(按照a、b、c、d的顺序,分别为4、1、8、2字节)。b的位数为2,表示可以取0、1、2或3;4. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。位段是C语言中一种特殊的结构体成员,它允许将结构体中的一个整型变量分成几个不同位数的部分,每一部分成为一个位段,每个位段可以单独进行访问。

2023-09-25 22:55:10 25 1

原创 了解内存函数

memcpy用于内存区域的复制,memmove用于内存区域的移动和复制,memcmp用于内存区域的比较

2023-09-25 13:11:20 22 1

原创 c语言数据的存储

在大端存储中,高位字节会被存储在内存的低地址中,低位字节则会被存储在内存的高地址中。在小端存储中,低位字节会被存储在内存的低地址中,而高位字节则会被存储在内存的高地址中。不同的CPU和操作系统可能采用不同的大小端存储方式,因此在数据存储时需要考虑大小端存储的问题。大小端存储是指计算机在存储数据时,对于多个字节的数据,按照不同的顺序进行存储的方式。补码是将原码的符号位不变,而数值部分按位取反,再加1,得到的新数值再代表这个整数。数据是如何在计算机中存储的,在电脑中可是只有0和1,其他数据他是识别不了的。

2023-08-05 21:47:37 17 1

原创 扫雷小游戏

设计思路:我们可以先用一个数组储存游戏刚开始的界面,可以用*表示,然后再用另一个数组储存炸弹的位置和附近雷的数量,雷可以用#表示,当开始玩游戏的时候选择空的位置可以用while循环来不断查找没有雷的位置,直到排除完成,你就可以赢了,如果在过程中点开了雷的位置,那么很遗憾,你就输了。最后我们可以在某些地方加上system("cls")函数,它可以把屏幕清空,和system("pause"),它可以使你按一下任意键在继续往下执行。那我们现在不得开始把想看的位置看看是不是雷,那么我们就来看一下look()函数。

2023-07-28 21:55:41 19 1

原创 简单三子棋

2023-07-25 13:03:18 24

原创 初识c指针以及函数传参

指针是C语言中非常重要的概念之一,它是一种变量类型,用于存储其他变量的内存地址。指针变量本身也有自己的内存地址。在C语言中,指针变量使用一个星号(*)来声明,如:int *p;这里的p是一个指向整型变量的指针,它可以指向任何一个整型变量。我们可以使用“&”运算符来获取一个变量的内存地址,并将其赋值给指针变量,如:int a = 10;这里我们将变量a的地址赋给了指针变量p,p现在指向变量a。通过指针变量,我们可以访问该指针指向的变量,如:int b = *p;

2023-06-19 13:41:26 24

原创 初始c语言

咱们中文刚开始的时候用的也不是现在的文字,是象形文字,甲骨文等等,那计算机刚开始也不是就直接诞生C语言的,最刚开始的时候用的是0,1,科学家们嫌它太复杂了,于是汇编语言就出来了,汇编之后就是B语言,B语言之后才是C语言,C语言也是一门高级程序设计语言。在C程序中只能有一个函数入口,就是main函数,这里我们引用了<stdio.h>这个库,是为了调用printf这个库函数,printf这个函数是输出函数。那以.c为后缀的是怎么变成.exe的文件,我们先来看一下.c的文件,它是能用记事本打开的,

2023-06-10 18:29:49 22

空空如也

空空如也

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

TA关注的人

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