<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[2302_80892233的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/2302_80892233</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; 2302_80892233]]></copyright><item><title><![CDATA[Linux：动静态库]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/148295683</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/148295683</guid><author>2302_80892233</author><pubDate>Sat, 31 May 2025 16:52:04 +0800</pubDate><description><![CDATA[库是写好的，现有的，成熟的可以复用的代码。现实中每个程序都要依赖很多基础的底层库，不可能每个人都从零开始写，因此库的存在一样非同寻常本质上库是一种可执行代码的二进制形式，可以被操作系统载入内存执行。静态库：.a[Linux]、.lib[Windows]动态库：.so[Linux]、.dll[Windows]]]></description><category></category></item><item><title><![CDATA[Linux：文件系统]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/148118967</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/148118967</guid><author>2302_80892233</author><pubDate>Wed, 28 May 2025 21:21:14 +0800</pubDate><description><![CDATA[在Linux中文件的内容和属性是分开存储的，而文件的内容存储在磁盘中的Data Blocks，属性则存储在磁盘的inode Table中，并且对于Linux下的一切文件，都要有自己的属性集合（结构体），大小固定为128字节，由于。，这是因为我们要通过inode编号查找对应的文件，而每一个目录下的文件名是唯一的，因此对应的inode编号就是唯一的，所以对于每一个分区来说只能有唯一的文件名和inode编号。因此，软连接相当于Windows下的快捷键，其文件内容就存储着指向目标文件的路径。]]></description><category></category></item><item><title><![CDATA[Linux：缓冲区]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/148072888</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/148072888</guid><author>2302_80892233</author><pubDate>Wed, 21 May 2025 15:58:31 +0800</pubDate><description><![CDATA[1823810 {1421 }2224 {2729 {32 }34 {37 }39 {42 }43 else44 {45 }464950 //创建文件52 }5355 {57 return;61 }6264 {65 //拷贝6869 //刷新71 {73 }75 }7678 {81 }]]></description><category></category></item><item><title><![CDATA[Linux:基础IO]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/147934326</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/147934326</guid><author>2302_80892233</author><pubDate>Sat, 17 May 2025 16:19:43 +0800</pubDate><description><![CDATA[文件存储在磁盘中，由于磁盘是永久性存储介质，因此文件在磁盘上的存储是永久性的；磁盘也是外设，因此磁盘上对文件的所有操作本质是对外设的输入和输出。]]></description><category></category></item><item><title><![CDATA[Linux：进程控制2]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/147772583</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/147772583</guid><author>2302_80892233</author><pubDate>Tue, 13 May 2025 21:07:09 +0800</pubDate><description><![CDATA[812151819 //最新退出码2123 {26 }2729 {32 }3335 {38 if(pwd!50 }5152 // / /a/b/c路径获取切分54 {58 {60 }65 }666769 {7073 }7475 //1.输出命令行提示符77 {82 }8384 //2、获取命令行86 {]]></description><category></category></item><item><title><![CDATA[Linux：进程控制1]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/147727440</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/147727440</guid><author>2302_80892233</author><pubDate>Wed, 07 May 2025 19:18:08 +0800</pubDate><description><![CDATA[在上面代码中，我们使用waitpid函数等待进程PID为id的子进程，状态为status，然后子进程的退出码我们设为为1，但是从下面结果我们可以看到status的值并不是1而是256，这是为什么呢？在上面代码中，我们期望使用fopen函数以只读方式打开一个不存在的文件"log.txt"，由于文件不存在所以程序虽然能正常执行完毕但却没有实现打开文件的功能，其退出码应该为2 ，但是由于我们自己设置了返回值为13，所以其退出码为13。如果等待子进程，子进程没有退出，父进程会一直阻塞在wait调用处。]]></description><category></category></item><item><title><![CDATA[Linux：进程优先级及环境]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/147620420</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/147620420</guid><author>2302_80892233</author><pubDate>Sat, 03 May 2025 16:23:36 +0800</pubDate><description><![CDATA[在Linux系统中，当一个进程创建了子进程后，如果父进程执行完毕或者提前退出而子进程还在运行，那么子进程就会成为孤儿进程。子进程就会被systemd（系统）进程收养，其pid为1myprocess.c代码


如上面myprocess.c代码所示，子进程会一直执行，而父进程执行三次之后就会退出，因此子进程就会成为孤儿进程，子进程就会变成后台进程 ，如下图所示 孤儿进程要想杀掉，不能使用Ctrl + C，只能同时打开两个XShell通过kill -9 + pid进程得到CPU资源的先后顺序就是进程优先级目标资]]></description><category></category></item><item><title><![CDATA[Linux：进程及进程状态]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/147534733</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/147534733</guid><author>2302_80892233</author><pubDate>Tue, 29 Apr 2025 08:58:53 +0800</pubDate><description><![CDATA[僵尸状态是为了获取退出信息，我们知道每一个子进程的创建都是让子进程完成某种事情的，因此在子进程完成任务退出之前必须让父进程获取到相关结果子进程才能退出，如果父进程没有回收子进程那么子进程就会一直存在，此时的状态则称为僵尸状态。如上图所示，如果程序中没有fork这行代码，那么程序的执行结果应该为第一行和第二行（他们的PID相同），但是由上图可知，使用fork创建了一个子进程，并且子进程的PID和之前的PID不一样。若创建进程成功，那么fork会返回子进程的进程ID（PID）给父进程，返回0给子进程；]]></description><category></category></item><item><title><![CDATA[Linux：git和gdb/cgdb]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/147429058</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/147429058</guid><author>2302_80892233</author><pubDate>Thu, 24 Apr 2025 21:24:02 +0800</pubDate><description><![CDATA[当我们不想使用display观察打印变量的值时，使用undisplay + 对应变量的编号就可以了，如下图所示，当我们不想观察result的值的时候，由于result的编号为2，执行undisplay 2命令就取消对result的值的观察打印了。如上图所示，分别有1,2，3三个断点编号的断点，当我们想要删除18行的断点时（即编号为2的断点） ，我们就可以直接使用命令的 d 2，然后我们在info查看断点信息，果然18行的断点就被删除了。，在演示中即将lesson4这个目录推送到仓库；]]></description><category></category></item><item><title><![CDATA[Linux进度条]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/147318874</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/147318874</guid><author>2302_80892233</author><pubDate>Tue, 22 Apr 2025 08:48:26 +0800</pubDate><description><![CDATA[库的含义：库是一套方法或者数据库，为我们开发提供最基本的保证（基本接口，功能），加速我们二次开发。在Linux中，以.so结尾的文件称为动态库。假设我们自己的程序在运行时需要调用库中的方法，程序运行到需要调用库中方法时代码会在库中找到该方法，并跳转到该方法中执行该段代码完之后返回才执行后序代码的链接方式称为动态链接。在Linux中，以.a结尾的文件称为静态库。 在程序编译时，将所有需要的库函数的代码直接复制到可执行文件中的链接方式称为静态链接。 make是一个命令makefile是一个文件，m既可以大写也可]]></description><category></category></item><item><title><![CDATA[Linux权限]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/143831334</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/143831334</guid><author>2302_80892233</author><pubDate>Thu, 17 Apr 2025 07:49:18 +0800</pubDate><description><![CDATA[如上图所示，对于text1.c，text2.c和text3.c这三个文件来说，所有者拥有读和写权限，所属组拥有读权限，其他用户拥有读权限。这里解释一下为什么777就拥有读、写和执行的权限，这是因为就所有者举例，所有者是否拥有读权限可以用二进制的0/1表示，所有者是否拥有写权限可以用二进制的0/1表示，所有者是否拥有执行权限也可以用二进制的0/1表示，因此，使用三个二进制数字就可以表示权限，按照二进制的权值我们可以知道，拥有读权限就是4，拥有写权限就是2，拥有执行权限就是1，不具有权限就是0。]]></description><category></category></item><item><title><![CDATA[Linux基本指令2]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/146133603</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/146133603</guid><author>2302_80892233</author><pubDate>Sun, 13 Apr 2025 15:43:49 +0800</pubDate><description><![CDATA[Ctrl + C：终止异常程序上下（↑↓）键：查看历史命令tab键：快速按两下，自动搜索补全命令如上图所示：在界面上输入wh之后然后快速按两下tab键，系统就会自动搜索出以wh开头的命令Ctrl + R：搜索历史命令如上图所示：在界面上按下Ctrl + R之后，就会出现第一张图所示的界面，然后我们就可以输入我们想要查找搜索的命令就行，如上图所示，我在界面上输入了wh之后就自动给我匹配了这条命令Ctrl + D：退出当前用户history：打印出历史上输入的命令。]]></description><category></category></item><item><title><![CDATA[Linux基本指令]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/146102957</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/146102957</guid><author>2302_80892233</author><pubDate>Sat, 08 Mar 2025 21:21:18 +0800</pubDate><description><![CDATA[如上图所示：echo "aaaa" > hello.c命令将“aaaa”输出重定向到hello.c这个普通文件中，>重定向符号，将原本输出在显示屏上的内容输出在hello.c这个文件中，当我们使用echo "hello" > hello.c命令后，就会将hello.c文件中的内容覆盖。通过echo>文件名，注意>两边没有空格会将文件内的内容清空，我们可以看到使用echo>hello.c命令后hello.c的大小由6变成了1，使用cat打印hello.c的内容时也是输出一行空白行。]]></description><category></category></item><item><title><![CDATA[Linux:基本开发工具]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/143657202</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/143657202</guid><author>2302_80892233</author><pubDate>Sun, 10 Nov 2024 15:44:00 +0800</pubDate><description><![CDATA[三种模式1.命令模式2.插入模式3.底行模式vim的操作打开，关闭，查看，查询，插入，删除，替换，撤销，复制，粘粘等操作。]]></description><category></category></item><item><title><![CDATA[C++：二叉搜索树]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/142285615</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/142285615</guid><author>2302_80892233</author><pubDate>Mon, 16 Sep 2024 11:23:58 +0800</pubDate><description><![CDATA[此时我们需要多定义两个指针，一个指向被替换节点，一个指向被替换节点的父节点，此时被替换节点replace节点指向要删除节点的右节点，如果replace节点不为空，那么一直更新replace节点的位置，直到找到右子树中的最左节点，此时replace节点就是最左节点，将cur节点的值和replace节点的值交换，如果replace节点位于其父节点的左侧，将replaceparent节点的左节点指向replace节点的右节点，否者将replaceparent节点的右节点指向replace节点的右节点。]]></description><category></category></item><item><title><![CDATA[C++：STL之vector]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/141226198</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/141226198</guid><author>2302_80892233</author><pubDate>Thu, 12 Sep 2024 21:15:33 +0800</pubDate><description><![CDATA[使用vector需要包含头文件 #include<vector>vector的构造（constructor）构造函数声明接口说明vector()  (重点)无参构造用n个val初始化并构造vector(const vector& x) (重点)拷贝构造使用迭代器进行初始化构造。]]></description><category></category></item><item><title><![CDATA[C++:string类]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/140874384</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/140874384</guid><author>2302_80892233</author><pubDate>Wed, 07 Aug 2024 20:45:23 +0800</pubDate><description><![CDATA[C++ std::string类介绍在C++中，std::string类是标准模板库（Standard  Template Library,STL）d 一部分，它提供了对字符串的封装，使得字符串的处理变动更加方安全和高效。与传统都C语言分隔字符串（字符串是以'\0'结尾的一些字符的合集）相比，std::string类提供了丰富的成员函数来执行各种字符串操作，如连接、查找、比较、替换等等，同时自动管理内存，减少了内存泄漏的风险。]]></description><category></category></item><item><title><![CDATA[C++：数据内存分布和模版]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/140737217</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/140737217</guid><author>2302_80892233</author><pubDate>Sat, 27 Jul 2024 19:01:31 +0800</pubDate><description><![CDATA[由上面两个例子的对比，我们可以看出当对自定义类型使用new来开辟空间时，编译器会自动调用构造函数。而对于内置类型malloc和new的几乎没有区别int main()free(p1);delete p2;return 0;delete p2;free(p3);]]></description><category></category></item><item><title><![CDATA[C++：类和对象2]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/140527217</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/140527217</guid><author>2302_80892233</author><pubDate>Thu, 25 Jul 2024 17:38:01 +0800</pubDate><description><![CDATA[6.我们不写编译器默认生成的构造，对内置类型成员变量的初始化没有要求，也就是说内置类型成员变量的初始化是不确定的，看编译器。要注意默认构造函数不只是编译器默认生成的那个构造函数，实际是上无参构造函全缺省构造函数也是默认构造函数。一个类，我们在不写的情况下编译器会默认生成6个默认成员函数，分别是构造函数，析构函数，拷贝构造函数，拷贝赋值运算符重载和取地址运算符重载。如果一个构造函数的第一个参数是自身类型的引用而且任何额外的参数都有默认值，则该构造函数也叫做拷贝构造函数，也就是说拷贝构造是一个特殊的构造函数。]]></description><category></category></item><item><title><![CDATA[C++：类和对象1]]></title><link>https://blog.youkuaiyun.com/2302_80892233/article/details/140418822</link><guid>https://blog.youkuaiyun.com/2302_80892233/article/details/140418822</guid><author>2302_80892233</author><pubDate>Mon, 15 Jul 2024 20:51:36 +0800</pubDate><description><![CDATA[类定义在面向对象编程中是一个核心概念，它定义了对象的结构和行为。在C++中，类定义包含类的名称、数据成员（也称为属性或者字段）和成员函数（也称为方法或者操作）多个部分。数据成员定义了对象的状态，而成员函数定义了对象可以执行的操作。下面我们将堆类定义的各个部分进行更加详细的认识。类域从类的左大括号 { 开始，到右大括号 } 结束。在这个范围内声明的所有成员都属于类域。]]></description><category></category></item></channel></rss>