<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[turn__back的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/turn__back</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; turn__back]]></copyright><item><title><![CDATA[nginx源码-执行流程图]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/90644171</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/90644171</guid><author>turn__back</author><pubDate>Tue, 28 May 2019 17:53:27 +0800</pubDate><description><![CDATA[图片较大，点击放大拖拽，或者下载到本地


]]></description><category></category></item><item><title><![CDATA[TCP可靠传输的工作原理-停止等待&连续的ARQ（一）]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/73743641</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/73743641</guid><author>turn__back</author><pubDate>Mon, 26 Jun 2017 20:10:24 +0800</pubDate><description><![CDATA[停止等待协议，TCP的可靠传输，连续的ARQ协议]]></description><category></category></item><item><title><![CDATA[容易被忽略的网络传输层小知识点]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/73468110</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/73468110</guid><author>turn__back</author><pubDate>Mon, 19 Jun 2017 17:33:13 +0800</pubDate><description><![CDATA[一、端口号的分类以及用途
    众所周知，一个ip地址对应了唯一的主机。而端口号对应了唯一的一台主机的唯一一个网络进程。
    而这两者联系起来就叫套接字。因此套接字对应了唯一的一个网络进程。
    那么，什么是端口号？
    端口号其实就是一个为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口，只具有本地意义。
    因此，两台计算机之间交互，不仅要知道双方的ip地]]></description><category></category></item><item><title><![CDATA[网络模型（OSI七层和TCP/IP四层）]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/73302420</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/73302420</guid><author>turn__back</author><pubDate>Thu, 15 Jun 2017 20:47:17 +0800</pubDate><description><![CDATA[看了有关方面的网络书籍以及大牛们的博客，总结一张图如下，如有问题，请多多指出。]]></description><category></category></item><item><title><![CDATA[使用gdb如何调试多进程和多线程]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/73289288</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/73289288</guid><author>turn__back</author><pubDate>Thu, 15 Jun 2017 16:33:37 +0800</pubDate><description><![CDATA[一、gdb调试的一些常用指令。
1、首先，要想对一个程序进行调试，就必须在编译的时候加-g选项（生成Debug版本），默认为Release版本。
2、运行该程序：run（简写r）
3、查看代码：list（简写l）
4、打断点：break（简写b）后跟行号（或者函数名、文件名：行号）
5、查看所有断点：info b
6、跳转到下一断点处：continue（简写c）
7、删除断点：del]]></description><category></category></item><item><title><![CDATA[Linux-消息队列]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/73129888</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/73129888</guid><author>turn__back</author><pubDate>Mon, 12 Jun 2017 19:41:49 +0800</pubDate><description><![CDATA[消息队列是进程间通信System V版本（消息队列、信号量、共享内存）之一。
所谓System V版本就是其生命周期随内核（及时进程结束，消息队列也不会被删除），这是与管道的不同。
还有一个不同点就是：管道是以数据流方式来发送（接受）数据，而消息队列是以数据块的方式来发送（接受）数据。
首先，下面是有关消息队列的系统调用：
1、int msgget(key_t key, int msgfl]]></description><category></category></item><item><title><![CDATA[匿名管道和命名管道]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/71749307</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/71749307</guid><author>turn__back</author><pubDate>Fri, 12 May 2017 20:48:52 +0800</pubDate><description><![CDATA[一：匿名管道（pipe）。
    是一种最基本的IPC机制,由pipe函数创建。
    调用pipe函数时在内核中开辟一块缓冲区用于通信。而我们把这块缓冲区叫做管道。
  
    #include
    int pipe(int fd[2]);
    其参数：为一个输出型的参数。其中fd[0]中保存读端口的文件描述符，fd[1]中保存写端口的文件描述符。
    其返回值：]]></description><category></category></item><item><title><![CDATA[僵尸进程和孤儿进程]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/70173548</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/70173548</guid><author>turn__back</author><pubDate>Fri, 14 Apr 2017 17:11:53 +0800</pubDate><description><![CDATA[什么是僵尸进程？
       一个子进程在其父进程没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。如果其父进程还存在而一直不调用wait，则该僵尸进程将无法回收，等到父进程结束后，会被init回收。
验证：
#include
#include
#include

int main()
{
    pid_t id=fork();
    if(0 == id)]]></description><category></category></item><item><title><![CDATA[STL-空间配置器]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/66975669</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/66975669</guid><author>turn__back</author><pubDate>Mon, 27 Mar 2017 20:15:27 +0800</pubDate><description><![CDATA[STL空间配置器的底层原理：
维护了一个狭义的内存池，并且用一个自由链表来维护该内存池。该自由链表比较类似于哈希的开链法的存储结构。


源代码：
#pragma once

using namespace std;

#define __THROW_BAD_ALLOC  cerr << "out of memory" << endl; exit(1)

typedef void*(*F]]></description><category></category></item><item><title><![CDATA[JSON的解析与反解析]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/64460298</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/64460298</guid><author>turn__back</author><pubDate>Tue, 21 Mar 2017 18:13:55 +0800</pubDate><description><![CDATA[JSON.h




#ifndef __JSON__H__
#define __JSON__H__

#include &lt;stdio.h&gt;

typedef enum  //表示7种数据类型
{
	LEPT_NULL,  //null
	LEPT_FALSE, //false
	LEPT_TRUE,  //true
	LEPT_NUMBER,//数字
	LEPT_STRING,//...]]></description><category></category></item><item><title><![CDATA[数据结构-排序算法集合（包含所有排序）]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/60958517</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/60958517</guid><author>turn__back</author><pubDate>Thu, 09 Mar 2017 13:27:35 +0800</pubDate><description><![CDATA[1.比较排序：
    1）.插入排序（直接插入排序、希尔排序）
    2）.选择排序（选择排序、堆排序）
    3）.交换排序（冒泡排序、快速排序）
    4）.归并排序（归并排序）
2.非比较排序：
    1）.计数排序
    2）.基数排序（LSD、MSD）]]></description><category></category></item><item><title><![CDATA[数据结构-红黑树（RBTree）]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/60869275</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/60869275</guid><author>turn__back</author><pubDate>Wed, 08 Mar 2017 11:29:32 +0800</pubDate><description><![CDATA[#pragma once


enum Color
{
	RED,
	BLACK
};

template 
struct RBTreeNode
{
	K _key;
	V _value;

	Color _col;

	RBTreeNode* _left;
	RBTreeNode* _right;
	RBTreeNode* _parent;

	RBTreeNode(const K& key,]]></description><category></category></item><item><title><![CDATA[数据结构-二叉搜索树]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/60769830</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/60769830</guid><author>turn__back</author><pubDate>Tue, 07 Mar 2017 17:17:47 +0800</pubDate><description><![CDATA[#pragma once
//K/V模型(key/value) 
//运用：英汉互译  

template
struct SearchBinaryTreeNode
{
	SearchBinaryTreeNode* _left;
	SearchBinaryTreeNode* _right;

	const K _key;  //eg：英译汉
	V _value;

	SearchBinaryTre]]></description><category></category></item><item><title><![CDATA[数据结构-堆（Heap）]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/60609666</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/60609666</guid><author>turn__back</author><pubDate>Mon, 06 Mar 2017 23:09:41 +0800</pubDate><description><![CDATA[#include 
#include 

using namespace std;

template
struct Bigger
{
	bool operator()(T left, T right)
	{
		return left > right;
	}
};

template
struct Lower
{
	bool operator()(T left, T right)
	{
		re]]></description><category></category></item><item><title><![CDATA[数据结构-二叉树线索化迭代器（续上节）]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/60470150</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/60470150</guid><author>turn__back</author><pubDate>Sun, 05 Mar 2017 19:12:57 +0800</pubDate><description><![CDATA[#pragma once

#include 

using namespace std;

enum Type
{
	LINK,  //指针指向的是一颗子树
	THREAD //指针指向的是线索化
};

template
struct BinaryTreeThdNode    //二叉树的节点结构
{
	T _data;
	BinaryTreeThdNode* _left;
	BinaryTr]]></description><category></category></item><item><title><![CDATA[数据结构-二叉树的线索化]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/60467705</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/60467705</guid><author>turn__back</author><pubDate>Sun, 05 Mar 2017 15:33:15 +0800</pubDate><description><![CDATA[主要代码实现：
#pragma once

#include 

using namespace std;

enum Type
{
	LINK,  //指针指向的是一颗子树
	THREAD //指针指向的是线索化
};

template
struct BinaryTreeThdNode
{
	T _data;
	BinaryTreeThdNode* _left;
	BinaryTreeThd]]></description><category></category></item><item><title><![CDATA[数据结构-广义表]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/60339374</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/60339374</guid><author>turn__back</author><pubDate>Sat, 04 Mar 2017 19:39:55 +0800</pubDate><description><![CDATA[广义表是非线性的结构，是线性表的一种扩展，是有n个元素组成有限序列。
广义表的定义是递归的，因为在表的描述中又得到了表，允许表中有表。   
 A = () 
 B = (a,b)
 C = (a,b,(c,d))
 D = (a,b,(c,d),(e,(f),h))
 E = (((),()))



主要代码：
//广义表结构（链表套链表）
#pragma once

#]]></description><category></category></item><item><title><![CDATA[数据结构-二叉树（包含递归和非递归版本）]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/57089543</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/57089543</guid><author>turn__back</author><pubDate>Sat, 25 Feb 2017 19:09:38 +0800</pubDate><description><![CDATA[#pragma once

#include 
#include 

#include 

using namespace std;

template 
struct BinaryTreeNode
{
	T _value;
	BinaryTreeNode* _leftchild;
	BinaryTreeNode* _rightchild;

	BinaryTreeNode(const T& x)]]></description><category></category></item><item><title><![CDATA[STL-模拟实现list]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/56960517</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/56960517</guid><author>turn__back</author><pubDate>Fri, 24 Feb 2017 23:19:56 +0800</pubDate><description><![CDATA[STL中list的模拟实现，以及迭代器实现]]></description><category></category></item><item><title><![CDATA[STL-模拟实现List]]></title><link>https://blog.youkuaiyun.com/turn__back/article/details/56960210</link><guid>https://blog.youkuaiyun.com/turn__back/article/details/56960210</guid><author>turn__back</author><pubDate>Fri, 24 Feb 2017 23:16:28 +0800</pubDate><description><![CDATA[模拟实现STL中的list]]></description><category></category></item></channel></rss>