<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[MPF1230的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/MPF1230</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; MPF1230]]></copyright><item><title><![CDATA[_数据结构_堆_堆排序]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/106470591</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/106470591</guid><author>MPF1230</author><pubDate>Thu, 04 Jun 2020 18:06:32 +0800</pubDate><description><![CDATA[文章目录堆的概念
堆的概念
如果有一个关键码的集合K = {k0，k1， k2，…，kn-1}，把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中，并满足：Ki &lt;= K2i+1 且 Ki&lt;= K2i+2 (Ki &gt;= K2i+1 且 Ki &gt;= K2i+2) i = 0，1，2…，则称为小堆(或大堆)。
将根节点最大的堆叫做最大堆或大根堆，根节点最小的堆叫做最小堆或小根堆。

堆 一定是一棵 完全二叉树
当根结点为 i 时：
其左子结点为：2i+1； 右子结点为2i+2
]]></description><category></category></item><item><title><![CDATA[_数据结构_双向链表]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/106241296</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/106241296</guid><author>MPF1230</author><pubDate>Thu, 21 May 2020 10:40:25 +0800</pubDate><description><![CDATA[文章目录双向链表结点双向链表初始化双向链表的插入头插法
双向链表结点
单链表的链式储存只有一个指示后继的指针域，所以，从某个结点出发只能顺指针往后寻查其他结点。若要寻查结点的直接前端，则需要从表头指针出发。
&nbsp;&nbsp;&nbsp;&nbsp;为了克服单链表的单向性缺点，在双向链表的结点中有两个指针域，一个指向直接后继，一个指向直接前趋。
typedef struct double_list
{
	int val; //结点的值
	struct double_list* next; //后继结点]]></description><category></category></item><item><title><![CDATA[Linux搭建在线OJ服务器]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/105397384</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/105397384</guid><author>MPF1230</author><pubDate>Thu, 09 Apr 2020 14:00:38 +0800</pubDate><description><![CDATA[在线OJ服务器简介界面预览使用框架httplibctemplate前端all_questionsquestion服务器搭建oj_server.cpp在线编程下的GET和POST请求处理逻辑GETPOSToj_model.hppTestQues结构体OjModel类GetAllQuestionsGetOneQuestiontools.hppStringTools类FileOpen类UrlUtil类
...]]></description><category></category></item><item><title><![CDATA[<Linux>网络基础，TCP/IP模型]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104761199</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104761199</guid><author>MPF1230</author><pubDate>Tue, 10 Mar 2020 00:32:45 +0800</pubDate><description><![CDATA[了解TCP/IP五层结构(或四层，省略物理层)
TCP/IP结构中，每层有每层不同的职责，每一层都会在下一层所提供的网络来完成自己的需求

应用层： 应用层就是我们所使用的程序工作的层级，用来发送我们要传输的
        原始数据。
传输层： 传输层用传输协议控制信息，保证两天主机间的数据传输
网络层： 负责地址管理与路由选择，通过ip地址来识别主机，并通过路
        由表的方式规划两...]]></description><category></category></item><item><title><![CDATA[<CPP>LZ77实现文件压缩]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104734855</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104734855</guid><author>MPF1230</author><pubDate>Sun, 08 Mar 2020 20:16:47 +0800</pubDate><description><![CDATA[源代码获取：
https://github.com/akh5/C-/tree/master/LZ77

文件压缩LZ77简介LZ77原理介绍压缩标记长度距离对代码详解构建哈希表common.hhash_table.hppLZ77.hpp压缩方法解压方法
LZ77简介
LZ77是一种基于字典的算法，它将长字符串（也称为短语）编码成短小的标记，用小标记代替字典中的短语，从而达到压缩的目的。也就是说，...]]></description><category></category></item><item><title><![CDATA[<CPP>哈希思想，哈希表构造]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104731895</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104731895</guid><author>MPF1230</author><pubDate>Sun, 08 Mar 2020 15:42:39 +0800</pubDate><description><![CDATA[Hash，一般翻译做散列、杂凑，或音译为哈希，是把任意长度的输入（又叫做预映射pre-image）通过散列算法变换成固定长度的输出，该输出就是散列值。

哈希哈希概念哈希函数插入及搜索元素哈希冲突闭散列线性探测开散列
哈希概念
    构造一种储存结构，通过某种函数，使得其元素的储存位置与他的关键码之间能够建立一一映射关系，那么在查找时通过该函数很快找到相应元素
    简言之，就是设定某一固定...]]></description><category></category></item><item><title><![CDATA[<PHP>借书网站小项目]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104724548</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104724548</guid><author>MPF1230</author><pubDate>Sun, 08 Mar 2020 09:29:48 +0800</pubDate><description><![CDATA[网站的内容是在当当网上下载的图片作为页面的填充。
源代码获取：https://github.com/akh5/PHP/tree/master/library1.1
功能及实现代码简介所用技术及运行环境代码体量一览功能介绍轮播图模块登陆注册模块查看账户模块借书模块代码介绍FrameLibsVendorFrame.class.phpHomeControllerModel
简介
&nbsp;&nbsp...]]></description><category></category></item><item><title><![CDATA[<Linux>文件系统]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104632355</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104632355</guid><author>MPF1230</author><pubDate>Tue, 03 Mar 2020 16:06:29 +0800</pubDate><description><![CDATA[文件系统是操作系统用于明确存储设备（常见的是磁盘，也有基于NAND Flash的固态硬盘）或分区上的文件的方法和数据结构；即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统，简称文件系统。

我们用网上一张图作为介绍



从第三层开始就是文件系统

ext2文件系统会根据分区的大小划分为数个Block Group
其中数据块中存储当前的文件内容，而存储文件...]]></description><category></category></item><item><title><![CDATA[<Linux>文件描述符]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104620144</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104620144</guid><author>MPF1230</author><pubDate>Mon, 02 Mar 2020 23:04:34 +0800</pubDate><description><![CDATA[引出int open(constchar*pathname,intflags,mode_t mode)系统调用函数，通过open函数打开和操作文件
第一个参数 pathname 是文件的路径名，第二个参数为打开文件方式，第三个参数为文件的权限
函数的返回值是文件描述符数组的下标←(点击直接跳转到详解)。

这里第二个参数种打开文件的方式
必选参数




必选参数
功能




O_RDONLY
...]]></description><category></category></item><item><title><![CDATA[_数据结构_单链表构造，增删改查]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104443926</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104443926</guid><author>MPF1230</author><pubDate>Sat, 22 Feb 2020 15:41:29 +0800</pubDate><description><![CDATA[单链表是逻辑顺序结构，非物理顺序结构，是将存在不同地址的结点链接起来形成的。每个结点中的结构都相同，都是以，元素数据data和指向下一个结点*next的指针构成的


这里给出百度百科中的单链表逻辑结构

单链表构造单链表的结构单链表初始化结点头插查找结点任意位置插入删除结点链表反转源代码获取
单链表的结构
#include &lt;stdio.h&gt;
#include &lt;stdlib....]]></description><category></category></item><item><title><![CDATA[<Linux>进程程序替换]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104397393</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104397393</guid><author>MPF1230</author><pubDate>Wed, 19 Feb 2020 19:23:05 +0800</pubDate><description><![CDATA[进程程序替换为的是为了使父进程与子进程能够执行不同程序
因为父进程通过fork()创建的子进程，与父进程执行相同程序，当我们想让子进程执行不同的程序时，就需要使用exec函数将子进程与新程序替换
进程程序替换需要注意几点

程序替换不会创建新进程，也不会销毁进程
替换代的码和数据（从一个可执行文件中来）
替换后原有的堆和栈中的数据全都不要了，根据新的代码 的执行过程重新构建堆和栈的内同，类似于双击...]]></description><category></category></item><item><title><![CDATA[<PHP>SESSION]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104296077</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104296077</guid><author>MPF1230</author><pubDate>Thu, 13 Feb 2020 18:31:33 +0800</pubDate><description><![CDATA[SESSION"会话控制"何为SESSIONSession工作原理Session操作

Session对象存储特定用户会话所需的属性及配置信息。这样，当用户在应用程序的Web页之间跳转时，存储在Session对象中的变量将不会丢失，而是在整个用户会话中一直存在下去。

简单的说，session与cookie的作用相同，都是储存用户的一些固定信息只不过cookie是存储在客户端中，而session是...]]></description><category></category></item><item><title><![CDATA[<PHP>COOKIE]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104266466</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104266466</guid><author>MPF1230</author><pubDate>Tue, 11 Feb 2020 18:49:22 +0800</pubDate><description><![CDATA[cookie （储存在用户本地终端上的数据）什么是cookie举例cookie的方便性cookie工作原理cookie操作添加cookie数据设定cookie有效时间设定cookie有效路径设定cookie有效域名是否https安全连接发送cookie读取cookie数据删除cookie的方法将有效时间设定为过去的时刻将cookie值设为空或false
什么是cookie
cookie是服务器暂时...]]></description><category></category></item><item><title><![CDATA[_数据结构_单链表反转]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104255431</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104255431</guid><author>MPF1230</author><pubDate>Mon, 10 Feb 2020 22:02:29 +0800</pubDate><description><![CDATA[单链表逆置是数据结构中经常容易考到，也是一个重要的问题
这里采用从前往后，一个一个逆置的方法实现单链表的整个反转
源代码获取：
https://github.com/akh5/C-/tree/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E5%8D%95%E9%93%BE%E8%A1%A8
思路：

这里head指针是为了保证有一个结点一直指向表头
ol...]]></description><category></category></item><item><title><![CDATA[<Linux>进程控制_进程等待]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104201160</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104201160</guid><author>MPF1230</author><pubDate>Mon, 10 Feb 2020 17:21:23 +0800</pubDate><description><![CDATA[子进程退出时，父进程若不作处理就会造成僵尸进程的问题。所以子进程运行完成，需要知道它的结果是对是错，亦或是有没有正常退出。
父进程通过进程等待的方式，回收子进程资源，获取子进程退出信息

...]]></description><category></category></item><item><title><![CDATA[<Linux>进程控制_进程创建]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104196558</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104196558</guid><author>MPF1230</author><pubDate>Thu, 06 Feb 2020 17:51:20 +0800</pubDate><description><![CDATA[linux中的fork函数，用来给当前进程中创建一个新进程，新进程为子进程，原进程为父进程
Fork运行规则 : 以父进程为模板，创建子进程
进程调用fork后，内核做的事

分配新的内存块和内核数据结构给子进程
将父进程部分数据内容拷贝至子进程
添加子进程到系统进程列表中
fork返回，开始调度器调度

子进程会拷贝父进程的数据作为自己的

将父进程的PCB拷贝，并稍加修饰，成为子进程的PCB
...]]></description><category></category></item><item><title><![CDATA[<Linux>进程控制_进程终止]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104185892</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104185892</guid><author>MPF1230</author><pubDate>Wed, 05 Feb 2020 18:15:18 +0800</pubDate><description><![CDATA[进程退出的情况

代码执行完结果正确
代码执行完，结果不正确
代码没执行完，异常终止

当进程结束时，main函数会返回进程退出码，而通过退出码可以判断当前的运行结果是否正确

通过在终端输入 echo $? 就能查看上一个程序结束时返回的退出码


退出码为0，则表示结果正确
退出码非0，则表示结果不正确

而退出又分为正常退出与异常退出

正常退出
    通过main函数return结束程序...]]></description><category></category></item><item><title><![CDATA[<PHP>文件上传]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104182491</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104182491</guid><author>MPF1230</author><pubDate>Wed, 05 Feb 2020 15:01:08 +0800</pubDate><description><![CDATA[文件上传原理

将文件从浏览器传到服务器端
用form表单像服务器发送数据
method的属性必须是POST
enctype的属性必须是multipart/form-data
&lt;input type=‘file’ name=&gt;

超全局变量数组$_FILES
数组返回5个键值对

name=&gt;上传文件的源名称
type=&gt;文件类型
tmp_name=&gt;上床文件数据临时...]]></description><category></category></item><item><title><![CDATA[<CPP>STL——vector应用总结]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104159973</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104159973</guid><author>MPF1230</author><pubDate>Tue, 04 Feb 2020 10:51:24 +0800</pubDate><description><![CDATA[vector是可以储存任意类型的动态顺序表
vector中包含的接口构造与销毁构造的方式容量操作元素访问元素修改操作迭代器迭代器失效
构造与销毁
构造的方式

空构造
n个值位value的构造
区间构造
拷贝构造

容量操作




函数
功能




size()



capacity()



empty()



resize(n,data)



元素访问




函数
功能




o...]]></description><category></category></item><item><title><![CDATA[<PHP>图像验证码]]></title><link>https://blog.youkuaiyun.com/MPF1230/article/details/104155880</link><guid>https://blog.youkuaiyun.com/MPF1230/article/details/104155880</guid><author>MPF1230</author><pubDate>Mon, 03 Feb 2020 16:52:11 +0800</pubDate><description><![CDATA[PHP生成一个随机4个字符的图像验证码
源代码获取：
https://github.com/akh5/PHP/blob/master/identify_code.php
生成图像验证码大致需要5个步骤生成随机4位字符串
生成随机4位字符串
//将数字字母合并到一个数组
$arr = array_merge(range('A','Z'),range('a','z'),range('0','9'))...]]></description><category></category></item></channel></rss>