<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Marvinem13的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Marvinem13</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Marvinem13]]></copyright><item><title><![CDATA[[系统编程]#2 文件I/O]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/149648391</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/149648391</guid><author>Marvinem13</author><pubDate>Fri, 25 Jul 2025 20:42:22 +0800</pubDate><description><![CDATA[例如，在Python中，可以使用内置的open()函数来打开文件，并通过返回的文件对象调用.read(), .write()等方法进行读写操作；完成所有对文件的操作后，应该及时关闭文件。这一步很重要，因为它可以释放与文件关联的资源，并确保所有未写入的数据都被正确地保存到磁盘上。在对文件进行任何操作之前，首先需要通过编程语言提供的相应函数或方法打开文件。打开一个文件用于追加数据。根据实际的应用场景和使用的编程语言，具体的实现细节可能会有所不同。在处理文件时，务必注意错误处理，比如文件不存在、权限不足等情况。]]></description><category></category></item><item><title><![CDATA[[系统编程]#1 标准I/O]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/149614921</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/149614921</guid><author>Marvinem13</author><pubDate>Thu, 24 Jul 2025 21:04:54 +0800</pubDate><description><![CDATA[标准I/O（Standard I/O）是指在计算机编程中处理输入和输出的一种机制，它提供了一种与平台无关的方式来读取输入数据、写入输出数据以及进行错误处理。标准I/O通常涉及到三个基本的流：标准输入（stdin）：默认情况下从键盘接收输入。标准输出（stdout）：默认情况下将输出打印到屏幕（终端）。标准错误（stderr）：用于输出错误信息，默认也是输出到屏幕。标准I/O库：在C语言中，标准I/O是通过标准库<stdio.h>提供的函数来实现的。]]></description><category></category></item><item><title><![CDATA[[数据结构]#7 哈希表]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/149614788</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/149614788</guid><author>Marvinem13</author><pubDate>Thu, 24 Jul 2025 20:43:08 +0800</pubDate><description><![CDATA[（Hash Table），有时也称为散列表，是一种数据结构，它提供了一种快速存取数据的方法。哈希表利用一个被称为的机制将键映射到表中的一个位置来直接访问记录，以此加快查找的速度。哈希表通常支持非常快的插入、删除和查找操作，平均情况下这些操作的时间复杂度为O(1)。]]></description><category></category></item><item><title><![CDATA[[数据结构]#6 树]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/149609136</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/149609136</guid><author>Marvinem13</author><pubDate>Thu, 24 Jul 2025 20:29:54 +0800</pubDate><description><![CDATA[树是一种非线性的数据结构，它由节点组成，并且这些节点之间通过边连接。树的每个节点可以有一个或多个子节点，并且有一个特殊的节点叫做根节点（没有父节点）。树在计算机科学中应用广泛，尤其是在数据库索引、编译器设计和搜索算法等方面。]]></description><category></category></item><item><title><![CDATA[[数据结构]#5 队列]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/149509582</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/149509582</guid><author>Marvinem13</author><pubDate>Thu, 24 Jul 2025 16:48:43 +0800</pubDate><description><![CDATA[队列（Queue）是一种遵循先进先出（First In First Out, FIFO）原则的线性数据结构，即最早加入队列的元素会最先被移除。它类似于现实生活中排队的概念，如排队买票，先到的人排在前面，先完成服务。]]></description><category></category></item><item><title><![CDATA[[数据结构]#4 用链表实现的栈结构]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/149368383</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/149368383</guid><author>Marvinem13</author><pubDate>Mon, 21 Jul 2025 15:33:00 +0800</pubDate><description><![CDATA[它由一系列节点组成，每个节点包含两部分：数据域和指针域（指向下一个节点）。对于单向链表来说，每个节点只有一个指向后续节点的链接。在链表的头部（head）是开始访问链表的入口点，在实现栈时，我们通常将链表头视为栈顶。3.Peek/Top（查看栈顶元素）：返回栈顶元素但不将其移除。4.IsEmpty（判断栈是否为空）：检查栈中是否有元素。1.Push（入栈）：向栈中添加一个元素。2.Pop（出栈）：从栈中移除顶部的元素。]]></description><category></category></item><item><title><![CDATA[[数据结构]#3 循环链表/双向链表]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/149367238</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/149367238</guid><author>Marvinem13</author><pubDate>Tue, 15 Jul 2025 20:46:02 +0800</pubDate><description><![CDATA[简单的来说，就是将原来单链表中最有一个元素的next指针指向第一个元素或头结点，链表就成了一个环，头尾相连，就成了循环链表——circultlar linker list。我们再结合单向链表的结构，则可得到更加实用的双向链表——double link list。注意非空表，和空表。]]></description><category></category></item><item><title><![CDATA[[数据结构]#2 链表]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/149077802</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/149077802</guid><author>Marvinem13</author><pubDate>Tue, 15 Jul 2025 11:49:08 +0800</pubDate><description><![CDATA[为了表示每个数据元素，a[i]与其后边的数据元素a[i+1]之间的逻辑关系，对a[i]来说，除了存储它自身的信息之外，还需要存一个指示后续的信息。线性表链式存储的结构，特点是一组任意的存储单位存储线性表的数据元素，存储单元可以是连续的，也可以是不连续的，可以被存储在任意内存未被占用的位置上。所以单就这方面来说，顺序表只需要存储数据元素信息就可以了，在链式结构中还需要一个元素存储下一个元素的地址。而为了解决顺序存储的缺点，即插入删除和动态存储的问题，我们将使用更加健壮的链表。2.时间性能（时间复杂度）]]></description><category></category></item><item><title><![CDATA[[数据结构]#1 数据结构、算法简介&顺序表]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/148900187</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/148900187</guid><author>Marvinem13</author><pubDate>Mon, 30 Jun 2025 19:06:07 +0800</pubDate><description><![CDATA[把这两者分开，单谈两者其一都无法很完备地将这些概念介绍出来，在数据结构中，我们谈及算法，也是为了更好地帮助理解数据结构。]]></description><category></category></item><item><title><![CDATA[【补充】[Linux基础学习]#6 指针]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/148850387</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/148850387</guid><author>Marvinem13</author><pubDate>Mon, 23 Jun 2025 20:27:58 +0800</pubDate><description><![CDATA[指针操作二维数组，还是一样，获得数组数组首元素地址即可区别于一维数组：二维数组的本质是一维数组的数组。所以从一维数组角度看，元素类型又是一个一维数组a[0]    理解为： int[4]&a[0]  理解为： int[4] *通过指针访问到二维数组中的具体元素。]]></description><category></category></item><item><title><![CDATA[【补充】[Linux基础]#5 指针]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/148617539</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/148617539</guid><author>Marvinem13</author><pubDate>Thu, 12 Jun 2025 20:45:45 +0800</pubDate><description><![CDATA[这是指针部分初学时，经典且极易混淆的一个知识点。此时的【int *a】中的【a】是一个指向 int 类型的指针变量，它保存的是数组第一个元素的地址。类比于：int *p = &a[0]；中的p，而基于数组的特性，我们只需要获得了首元素的地址，就可以将整个数组表示出来。·a是一个指向数组首元素的指针；·*(a + i)就等价于a[i]；·*a就是a[0]；·a自身是一个指针，保存的是地址。]]></description><category></category></item><item><title><![CDATA[【补充】[Linux基础]#4 函数]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/148566935</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/148566935</guid><author>Marvinem13</author><pubDate>Tue, 10 Jun 2025 20:03:36 +0800</pubDate><description><![CDATA[从目的字符串dest的结束符位置开始，将src中的字符一一拼接到dest中，并检查是否补充了结束符。将src中的字符分别复制到dest中，直到遇到结束符'\0'为止，且要在dest中补充结束符。当两字符串同一位置为相同字符，或者两者之一没有遇到结束符'\0'时，执行比较字符大小的操作。即计算在结束符'\0'前的所有字符个数。]]></description><category></category></item><item><title><![CDATA[【补充】[Linux基础]#3 函数]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/148541988</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/148541988</guid><author>Marvinem13</author><pubDate>Mon, 09 Jun 2025 20:39:20 +0800</pubDate><description><![CDATA[解决问题的基本思想是，问题n的解决，而要看n的解决，则需要看问题n-1的解决......以此类推，直到问题最开始阶段的结果，整体看来为从后往前推。1.函数返回值，如果不需要，则此时设计为void——表示空、没有。也可以放在main函数之中——但是这种不是标准C语言的做法（是 GNU gcc的标准）可以放在 main函数之后——此时使用之前，一定要做函数的声明，即函数原型。3.函数返回值类型与返回值代表的数据类型不一致时，以设计的返回值类型为准。需要根据函数的形参变量来确定，函数传参——类型匹配，个数相同。]]></description><category></category></item><item><title><![CDATA[【补充】[Linux基础]#2 数组]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/148451820</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/148451820</guid><author>Marvinem13</author><pubDate>Thu, 05 Jun 2025 20:32:18 +0800</pubDate><description><![CDATA[每次从拿到中间位置上值 和 要查找的值比较，但前提是数据本身必须是有序的。字符串的长度，即'\0' 字符之前的字符个数——字符串的长度为5个字符。在一个有序的数列中，找到合适的位置，插入正确顺序的数据。其中s代表的是char类型的一个数组，数组长度为10。因为字符串是一种独特的字符数组，他有自己的结束标志——'\0'用来处理字符串数据——可以用来存放字符串数据。而字符串的形式则为： "hello" ——我们称为字符串常量。形如char s[10];数组特点为：连续性、单一性、有序性。]]></description><category></category></item><item><title><![CDATA[【补充】[Linux基础]#1 数组]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/148434481</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/148434481</guid><author>Marvinem13</author><pubDate>Wed, 04 Jun 2025 20:50:55 +0800</pubDate><description><![CDATA[冒泡排序的中心思想与选择不同，即将相邻两元素进行比较，以默认从小到大排序标准为例，若前一元素比后一元素大，则交换两元素位置，若一共有5个元素，则第一个元素需要比较4次才可确认一个数的准确位置，这一过程为完成一趟比较；选择排序，顾名思义，选择合适的数放进合适的位置，以默认从小到大为例，假设乱序数组的第一个元素为最小值，其他元素与其依次比较，直到确认最小值，将其放在第一个位置。其余元素则将第二个位置对应元素假设为最小值，将未排序元素与其比较，直到确认最小值，将其放在第二个位置。]]></description><category></category></item><item><title><![CDATA[[Linux基础学习]#18 标准I/O操作文件_2]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/145749383</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/145749383</guid><author>Marvinem13</author><pubDate>Thu, 20 Feb 2025 16:35:47 +0800</pubDate><description><![CDATA[offset<0        不能超过这个文件开头。offset < 0      不能超过这个文件开头。time_t time(time_t *t)   可以获得一个时间的秒数。主要应用在文件中有固定格式的场景，程序运行都是在内存中运行的。先创建空洞文件——重建一个和源文件 一样大小的空洞文件。SEEK_SET   相对于文件开头的。界面交互    出错处理。]]></description><category></category></item><item><title><![CDATA[[Linux基础学习]#17 标准I/O操作文件]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/145727954</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/145727954</guid><author>Marvinem13</author><pubDate>Wed, 19 Feb 2025 20:55:45 +0800</pubDate><description><![CDATA[Linux操作系统当中IO都是对文件的操作，包含C一部分，任何支持标准C的系统都可使用标准IO实现文件存储标准IO在UNIX上是对文件的操作。一般都是对普通文件操作是一种有缓存的IO 在文件IO和用户程序之间，加入缓冲区，可有效减少系统调用的次数，节省系统IO调度资源。我们由文件的概念引出，文件是一组相关数据的集合，名称形如:   01.sh   ，则可称为其文件名。说明: 带r的 要求，文件必须存在 ，如果不存在，就会报错。打开(新建)，输入(写数据)，阅读(读取)，删除，插入，修改，关闭 (保存)。]]></description><category></category></item><item><title><![CDATA[[Linux基础学习]#16 linux系统编程——shell]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/145674450</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/145674450</guid><author>Marvinem13</author><pubDate>Mon, 17 Feb 2025 19:35:50 +0800</pubDate><description><![CDATA[shell发展简介：sh...我们用的是:bash，也就是 Bourne Again Shell，由于易用和免费，Bash 在日常工作中被广泛使用。同时，Bash 也是大多数Linux 系统默认的 Shell。在一般情况下，人们并不区分 Bourne Shell 和 Bourne Again Shell，所以，像 #!/bin/sh，它同样也可以改为 #!/bin/bash。]]></description><category></category></item><item><title><![CDATA[[Linux基础学习]#15 共用体&枚举、位运算]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/145553568</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/145553568</guid><author>Marvinem13</author><pubDate>Mon, 17 Feb 2025 09:02:02 +0800</pubDate><description><![CDATA[在早期，因计算机的硬件资源有限，所以考虑到，能不能让多个成员变量共用同一块空间，如此就能让有限的硬件资源效用最大化。位运算实际上指的是二进制位上的运算，他在嵌入式当中的运用非常普遍，是操作硬件时不可缺少的重要步骤。192.168.0.59     ip地址——网络环境中——实际对应是一个32位的数值。枚举类型本质是用int型数据表示的，这是枚举类型设计的不严谨的地方。所谓"枚举"是指将变量的值一一列举出来，变量的值只限于列举出来的值的范围内。2.共用体初始化，只能写一个值，这个值是给第一个成员变量的值。]]></description><category></category></item><item><title><![CDATA[[Linux基础学习]#14 结构体]]></title><link>https://blog.youkuaiyun.com/Marvinem13/article/details/145514454</link><guid>https://blog.youkuaiyun.com/Marvinem13/article/details/145514454</guid><author>Marvinem13</author><pubDate>Wed, 12 Feb 2025 16:33:03 +0800</pubDate><description><![CDATA[形式1:  先定义类型,  后定义变量struct stu类型定义定义变量形式2:  定义类型的同时定义变量struct stu}s;定义类型的同时定义变量形式3 定义类型的同时定义变量，没有结构体名struct}s;定义类型的同时定义变量——只用一次的时候int tno;int age;]]></description><category></category></item></channel></rss>