<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[blame_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/blame_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; blame_]]></copyright><item><title><![CDATA[替换空格]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/107524956</link><guid>https://blog.youkuaiyun.com/blame_/article/details/107524956</guid><author>blame_</author><pubDate>Wed, 22 Jul 2020 22:25:10 +0800</pubDate><description><![CDATA[请实现一个函数，将一个字符串中的每个空格替换成“%20”。例如，当字符串为We Are
Happy.则经过替换之后的字符串为We%20Are%20Happy。

解题思路：
遍历字符串，计算出空格的个数，然后扩容字符串，使指针指向扩容后的大小的位置(一个空格替换成三个字符，所以应该原大小加2*空格个数)。然后使用前后指针，一个指向源字符串末尾，一个指向修改后的末尾，依次拷贝，遇到空格则替换。（将末尾的‘\0’一并拷贝进来）
class Solution {
public:
	void replaceSpa.]]></description><category></category></item><item><title><![CDATA[二维数组中的查找]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/107524577</link><guid>https://blog.youkuaiyun.com/blame_/article/details/107524577</guid><author>blame_</author><pubDate>Wed, 22 Jul 2020 22:06:32 +0800</pubDate><description><![CDATA[在一个二维数组中（每个一维数组的长度相同），每一行都按照从左到右递增的顺序排序，每一列都按照从上到下递增的顺序排序。请完成一个函数，输入这样的一个二维数组和一个整数，判断数组中是否含有该整数。

解决思路：
从二维数组的第一行的最后一个元素开始查找，如果大于这个数组元素，则排除第一行；如果小于这个数组元素，则派出最后一列。依次推进。
class Solution {
public:
    bool Find(int target, vector&lt;vector&lt;int&gt; &gt; arr.]]></description><category></category></item><item><title><![CDATA[LRU算法]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/107178550</link><guid>https://blog.youkuaiyun.com/blame_/article/details/107178550</guid><author>blame_</author><pubDate>Tue, 07 Jul 2020 11:56:03 +0800</pubDate><description><![CDATA[LRU算法：最近最少使用算法。大意就是根据最近访问的记录，对缓存的数据进行淘汰。如果一个数据最近被访问，或经常访问。则把数据放到列表的前面，而数据很久未访问，或者访问率较低，就会被放在后面，在列表内存不足的时候，将其移除缓存列表。
#include &lt;iostream&gt;
#include &lt;unordered_map&gt;
#include &lt;algorithm&gt;
using namespace std;

//双向链表结构
struct DLinkedNode {
	//保]]></description><category></category></item><item><title><![CDATA[组队竞赛问题]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/106484228</link><guid>https://blog.youkuaiyun.com/blame_/article/details/106484228</guid><author>blame_</author><pubDate>Mon, 01 Jun 2020 23:16:28 +0800</pubDate><description><![CDATA[题目说明

时间限制：1秒空间限制：32768K 牛牛举办了一次编程比赛, 参加比赛的有3*n个选手,
每个选手都有一个水平值a_i.现在要将这些选手进行组队, 一共组成n个队伍,
即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。 例如 : 一个队伍三个队员的水平值分别是3, 3,
3.那么队伍的水平值是3 一个队伍三个队员的水平值分别是3, 2, 3.那么队伍的水平值是3 一个队伍三个队员的水平值分别是1, 5, 2.那么队伍的水平值是2 为了让比赛更有看点, 牛牛想安排队伍使所有队伍的]]></description><category></category></item><item><title><![CDATA[典型IO模型之四]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/105757669</link><guid>https://blog.youkuaiyun.com/blame_/article/details/105757669</guid><author>blame_</author><pubDate>Sat, 25 Apr 2020 21:51:36 +0800</pubDate><description><![CDATA[任何的IO过程，都包含两个步骤，第一是等待，第二是拷贝。而且在实际的应用场景中，等待消耗的时间往往都远远高于拷贝的时间。为了让IO更加高效，最核心的绑法就是让等待的时间尽量少。
阻塞IO：
在内核将数据准备好之前，系统调用会一直等待。所有的套接字默认都是阻塞方式。
阻塞IO的流程非常简单，一次只能进行一个IO，多个IO的情况下，过程是串行的。
缺点：进程对CPU利用率不够高(因为可能有大量的时间在...]]></description><category></category></item><item><title><![CDATA[排序算法之交换排序]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/105695306</link><guid>https://blog.youkuaiyun.com/blame_/article/details/105695306</guid><author>blame_</author><pubDate>Wed, 22 Apr 2020 22:46:33 +0800</pubDate><description><![CDATA[交换排序有：冒泡排序和快速排序
冒泡排序
算法思想：
冒泡遍历所有的数据，每次对相邻元素进行两两比较，如果顺序和预定规定的顺序不一致，则进行位置交换；这样依次遍历会将最大或最小的数据上浮到顶端，之后对于其他元素重复相同的操作，直到所有的数据有序。
即：如果要升序排序的话，就每次两两比较，将较大的元素交换到后面，这样每一轮都会选择一个元素放到它规定的位置。
#include &lt;iostream...]]></description><category></category></item><item><title><![CDATA[排序算法之选择排序]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/105648607</link><guid>https://blog.youkuaiyun.com/blame_/article/details/105648607</guid><author>blame_</author><pubDate>Tue, 21 Apr 2020 00:24:54 +0800</pubDate><description><![CDATA[选择排序分为：简单选择排序和堆排序
简单选择排序的大概思想是选出最小的数和第一个数交换，再在剩余的数中又选择最小的和第二个数交换，以此类推。
堆排序的大概思想是：比如是个升序的堆，利用小根堆的性质(堆顶元素最小)不断输出最小元素，直到堆中没有元素。
简单选择排序：
简单选择排序的算法步骤为：
每次选择最小的元素归位。

从需要排序的序列中找到最小的元素；
将找到的最小的元素和第一个元素交换；
往后...]]></description><category></category></item><item><title><![CDATA[排序算法之插入排序]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/105624536</link><guid>https://blog.youkuaiyun.com/blame_/article/details/105624536</guid><author>blame_</author><pubDate>Sun, 19 Apr 2020 22:58:25 +0800</pubDate><description><![CDATA[排序算法分为外部排序和内部排序，插入排序属于内部排序，内部排序即整个排序过程不需要访问外存，仅在内存中就能完成，这类问题成为内部排序。
插入排序又分为两种：直接插入排序，希尔排序。
直接插入排序：
将第一个和第二个元素排好序，然后将第3个元素插入到已经排好序的元素中，一次类推(插入排序最好的情况就是数组已经有序了)
直接插入排序的算法思想：
将数组中的所有元素依次从该元素所在位置往前和前面已经排好...]]></description><category></category></item><item><title><![CDATA[左右最值最大差]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/105591060</link><guid>https://blog.youkuaiyun.com/blame_/article/details/105591060</guid><author>blame_</author><pubDate>Fri, 17 Apr 2020 23:34:02 +0800</pubDate><description><![CDATA[题目描述：

给定一个长度为n(n &gt; 1)的整型数组a，可以将a划分成左右两个部分，左部分a[0…k]，右部分a[k + 1…n -
1]，k可以取值的范围[0, n -
2]。求这么多划分方案中，左部分中的最大值减去右部分最大值的绝对值，最大是多少？给定整数数组a和数组的大小n，请返回题目所求的答案。

解题思路
题目可以理解为，a中的最大元素值减去a[0]或者a[n-1]。
因为max...]]></description><category></category></item><item><title><![CDATA[网络层IP协议]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/105462387</link><guid>https://blog.youkuaiyun.com/blame_/article/details/105462387</guid><author>blame_</author><pubDate>Sat, 11 Apr 2020 23:41:18 +0800</pubDate><description><![CDATA[网络层：负责地址管理与路由选择；	典型协议：IP
IP协议格式


4位协议版本：IPV4 / IPV6
4位首部长度：记录IP报头长度(以四字节为单位)，4字节最多表示15，所有IP报头最大长度是60字节
8位服务类型(TOS)：3位优先权字段(已经弃用),一位保留位(必须置0),4位TOS位分别表示：最小延时，最大吞吐量，最高可靠性，最小成本；这四者互相冲突，只能选择一个。
16位总长度：IP...]]></description><category></category></item><item><title><![CDATA[TCP浅析(2)]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/105448231</link><guid>https://blog.youkuaiyun.com/blame_/article/details/105448231</guid><author>blame_</author><pubDate>Sat, 11 Apr 2020 12:00:35 +0800</pubDate><description><![CDATA[TCP协议如何实现可靠传输
TCP协议实现可靠传输的主要依仗就是它具有以下能力：

连接管理：通过连接管理保证双方都具有数据收发的能力；
确认应答机制：发送的每一个数据，都要求对方进行确认回复(通过协议字段中的序号和确认
序号实现)
超时重传机制：发送数据后一段时间内没有收到确认回复，则认为数据丢失，进行重传。
协议中校验和字段:通过协议字段中的校验和校验数据一致性，若不一致则要求对方进行重传；
...]]></description><category></category></item><item><title><![CDATA[【牛客网】字符串计数]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/105377228</link><guid>https://blog.youkuaiyun.com/blame_/article/details/105377228</guid><author>blame_</author><pubDate>Tue, 07 Apr 2020 23:51:12 +0800</pubDate><description><![CDATA[题目描述

求字典序在s1和s2之间的，长度在len1到len2之间的字符串个数，结果 mod 1000007.

输入描述

每组数据包涵s1(长度小于100)，s2(长度小于100)，len1(小于100000)，len2(大于len1,小于100000)

解题思路
算出两个字符串各自每位s[i]-'a’的值，得出总的字典序和Count，然后Count(s2)-Count(s1)-1
#in...]]></description><category></category></item><item><title><![CDATA[TCP浅析(1)]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/105362367</link><guid>https://blog.youkuaiyun.com/blame_/article/details/105362367</guid><author>blame_</author><pubDate>Tue, 07 Apr 2020 13:16:51 +0800</pubDate><description><![CDATA[TCP：
TCP是面向连接，可靠传输，面向字节流的传输层协议。

面向连接：通过三次握手建立连接，四次挥手释放连接，以及状态的连接管理实现面向连接。tcp是一个有状态的协议。
可靠传输：保证数据有序并且可靠的到达对端；
面向字节流：可靠的，有序的，双向的,基于连接的字节流传输(不限制上层发送/接收的数据大小)

协议格式：

16位源端口 / 目的端口：负责实现应用程序之间的数据传输。
32位序号...]]></description><category></category></item><item><title><![CDATA[UDP协议浅析]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/105362271</link><guid>https://blog.youkuaiyun.com/blame_/article/details/105362271</guid><author>blame_</author><pubDate>Tue, 07 Apr 2020 13:09:06 +0800</pubDate><description><![CDATA[传输层：负责应用程序之间的数据传输； 典型协议 UDP / TCP
UDP：
无连接，不可靠，面向数据包的传输协议。


无连接：知道对方的地址就可以发送数据，不需要建立连接；


不可靠：udp并不保证数据可靠的到达对端，只管数据发送出去，不关心会不会丢失。


面向数据包：无连接的，不可靠，有最大长度限制的数据传输。(小于64k)


协议格式


16位源端口 / 16位目的端口：
负责应用...]]></description><category></category></item><item><title><![CDATA[【Linux】基础IO接口]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/105102184</link><guid>https://blog.youkuaiyun.com/blame_/article/details/105102184</guid><author>blame_</author><pubDate>Wed, 25 Mar 2020 19:05:17 +0800</pubDate><description><![CDATA[基础IO：
常用头文件 &lt; fcntl.h&gt;
标准库IO接口
c 默认会打开三个输入输出流， 分别是 stdin , stdout,  stderr
这三个流的类型都是FILE*， fopen返回值类型，是个文件指针。
FILE* fopen(const char* path, const char* mode);
//path：文件路径名
//mode：
// r   只读     ...]]></description><category></category></item><item><title><![CDATA[【Linux】socket套接字接口(TCP)]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/105102129</link><guid>https://blog.youkuaiyun.com/blame_/article/details/105102129</guid><author>blame_</author><pubDate>Wed, 25 Mar 2020 19:02:08 +0800</pubDate><description><![CDATA[TCP 通信流程
tcp协议特性：面向连接，可靠传输，面向字节流。
服务端：

创建套接字
在内核中创建socket结构体与网卡建立联系，描述协议版本，传输类型，协议类型。
为套接字绑定地址信息
给socket描述源端地址信息。
开始监听
告诉操作系统可以开始接收客户端的连接请求(客户端与服务端进行TCP通信必须首先建立
连接，确保双方都具有数据收发的能力).
当服务端收到了客户端的连接请求，连接...]]></description><category></category></item><item><title><![CDATA[【Linux】socket套接字接口(UDP)]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/104946272</link><guid>https://blog.youkuaiyun.com/blame_/article/details/104946272</guid><author>blame_</author><pubDate>Wed, 18 Mar 2020 15:49:35 +0800</pubDate><description><![CDATA[UDP：用户数据包协议，特性是 无连接，不可靠，面向数据包；
应用场景：数据的实时性要求高于安全性的通信场景。例如：视频传输
socket套接字编程
套接字编程主要是： TCP通信程序和UDP通信程序的编写
应用程序是程序员开发的，应用协议是程序员自己定的，但是从传输层开始往下都是操作系统实现的。网络编程通常也叫做套接字编程，套接字实际上就是一套网络通信编程的接口，程序员可以通过这套接口，并且提供...]]></description><category></category></item><item><title><![CDATA[【Linux】网络基础1]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/104768635</link><guid>https://blog.youkuaiyun.com/blame_/article/details/104768635</guid><author>blame_</author><pubDate>Tue, 10 Mar 2020 10:25:39 +0800</pubDate><description><![CDATA[网络基础
交换机：实现主机之间的数据交换
路由器：不但实现数据交换，并且实现数据的路径选择
网络的划分：局域网 ，城域网， 广域网           互联网 / 因特网
组网的方式：以太网 / 令牌环网
IP 和 PORT
在复杂的网络通信中，必须保证每个主机都有自己唯一的标识，只有这样才是实现精确的
点对点的通信。
IP地址：网络通信中主机的唯一标识
IPV4: uint32_t --无符号四...]]></description><category></category></item><item><title><![CDATA[【Linux】进程间通信]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/103391286</link><guid>https://blog.youkuaiyun.com/blame_/article/details/103391286</guid><author>blame_</author><pubDate>Wed, 04 Dec 2019 20:29:27 +0800</pubDate><description><![CDATA[进程间通信
进程间因为每个进程都有一个独有的虚拟地址空间，在保证了进程独立性的同时，却使得进程间无法直接通信。为了能使进程间可以通信，操作系统提供了进程间通信的方式，因为通信场景的不同，提供的方法也有多种。
进程间通信的目的

数据传输：一个进程需要将它的数据发送给另一个进程；
资源共享：多个进程之间共享同样的资源；
通知事件：一个进程需要向另一个或者另一组进程发送消息，通知他们发生了某种事件。
...]]></description><category></category></item><item><title><![CDATA[【牛客网】洗牌问题]]></title><link>https://blog.youkuaiyun.com/blame_/article/details/103319621</link><guid>https://blog.youkuaiyun.com/blame_/article/details/103319621</guid><author>blame_</author><pubDate>Fri, 29 Nov 2019 23:47:51 +0800</pubDate><description><![CDATA[问题描述

洗牌在生活中十分常见，现在需要写一个程序模拟洗牌的过程。
现在需要洗2n张牌，从上到下依次是第1张，第2张，第3张一直到第2n张。首先，我们把这2n张牌分成两堆，左手拿着第1张到第n张（上半堆），右手拿
着第n+1张到第2n张（下半堆）。接着就开始洗牌的过程，先放下右手的最后一张牌，再放下左手的最后一张牌，接着放下右手的倒数第二张牌，再放下左手的
倒数第二张牌，直到最后放下左手的第一张...]]></description><category></category></item></channel></rss>