<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Waorange的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Jocker_D</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Jocker_D]]></copyright><item><title><![CDATA[lua和c/c++交互]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/89683565</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/89683565</guid><author>Jocker_D</author><pubDate>Sun, 05 May 2019 10:51:54 +0800</pubDate><description><![CDATA[lua 和c采用虚拟栈的方式传递数据，栈中的元素是以lua 数据结构的方式存储，

]]></description><category></category></item><item><title><![CDATA[实现一个简单的shell]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/88069173</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/88069173</guid><author>Jocker_D</author><pubDate>Fri, 01 Mar 2019 21:44:05 +0800</pubDate><description><![CDATA[#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;errno.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;sys/types.h&amp;gt;
#include &amp;lt;sys]]></description><category></category></item><item><title><![CDATA[Linux文件权限]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/87971927</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/87971927</guid><author>Jocker_D</author><pubDate>Wed, 27 Feb 2019 16:10:20 +0800</pubDate><description><![CDATA[通过ll命令查看文件的属性，主要分四部分

drwxr-xr-x
第一位为文件的类型，其中d 表示文件目录，-表示普通文件，l表示软链接文件（关于软硬链接后面说），b表示块设备，p表示管道文件，c表示字符文件
然后剩余9位分为三组，文件所属用户权限，文件所属组权限，其他用户权限，
其中w表示可写，r表示可读，x表示可运行。
对于目录来说，w表示具有可删除、移动目录的权限，x 表示具有可以进入目录的...]]></description><category></category></item><item><title><![CDATA[模板]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/87915368</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/87915368</guid><author>Jocker_D</author><pubDate>Mon, 25 Feb 2019 15:10:55 +0800</pubDate><description><![CDATA[模板是泛型编程的基础，通过模板可以编写与类型无关的代码，可以提高代码复用
模板分为函数模板和类模板
函数模板相当于一个函数族，编写一个函数模板，然后编译器根据这个模板对不同的参数类型生成不同的函数，
另外一种是类模板，其类成员是模板类型，在调用时通过，显示调用的方法实例化该类型
模板分为非类型模板参数，和类型模板参数
类型模板参数就是在传递时需要传递一个类型，而非类型模板参数就是在模板参数中可以出...]]></description><category></category></item><item><title><![CDATA[C++智能指针]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/87554787</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/87554787</guid><author>Jocker_D</author><pubDate>Sun, 24 Feb 2019 20:39:26 +0800</pubDate><description><![CDATA[为什么需要智能指针
首先是因为传统裸指针容易造成内存泄露问题，另外还有在使用异常时，如果在申请空间和释放空间之间抛异常，并且没在该函数处理，会造成内存泄露。因为这些原因引入了智能指针
智能指针原理
智能指针是使用了RAII的思想
RAII(Resource Acquisition is Initialization)直译为资源获取即初始化，即其在构造函数中获取资源，在析构函数中释放资源，因为C++...]]></description><category></category></item><item><title><![CDATA[站内搜索引擎]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/87638870</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/87638870</guid><author>Jocker_D</author><pubDate>Sat, 23 Feb 2019 17:59:52 +0800</pubDate><description><![CDATA[搜索引擎
目标：实现搜索boost库文档
实现
实现查找　倒排索引’
正排索引：给定编号，获取到文档的内容
倒排索引：给定一个词，能获取到这个词和那些文档编号相关
搜索引擎组织结构

数据处理模块：对待搜索的网页进行预处理（html转文本）
索引模块：根据数据处理模块的结果作为索引模块的输入，构建正排索引和倒排索引
搜索模块：根据用户输入的查询次，对索引进行查找，最终找到相关文档
分词：对查询进行...]]></description><category></category></item><item><title><![CDATA[C++虚继承]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/87552714</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/87552714</guid><author>Jocker_D</author><pubDate>Sun, 17 Feb 2019 19:52:47 +0800</pubDate><description><![CDATA[虚继承是为了解决菱形继承问题，菱形继承会产生数据冗余，并且容易产生二义性
一个菱形继承的例子
class A
{
public:
	int _a;
};
// class B : public A
class B : public A
{
public:
	int _b;
};

// class C : public A
class C : public A
{
public:
	int _c;...]]></description><category></category></item><item><title><![CDATA[C++多态]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/87537953</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/87537953</guid><author>Jocker_D</author><pubDate>Sun, 17 Feb 2019 17:42:46 +0800</pubDate><description><![CDATA[多态
多态即多种状态，在面向对象语言中，接口的多种不同的实现方式即为多态，多态分为两种一种为静态多态，一种为动态多态，静态多态是通过函数重载实现的，在程序链接期间已经绑定，动态多态是通过虚函数实现，在程序运行期间通过调用的对象决定执行的函数。
虚函数
虚函数是通过virtual定义的
要实现多态必须重写虚函数，重写是指在基类中有一个和子类返回值、函数名、参数相同的虚函数，子类的虚函数可以重写基类虚...]]></description><category></category></item><item><title><![CDATA[C和C++区别和联系]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/87460478</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/87460478</guid><author>Jocker_D</author><pubDate>Sat, 16 Feb 2019 21:05:05 +0800</pubDate><description><![CDATA[C++在最初的设计初衷要求兼容C语言，所以C++支持支持c的基本语法，C语言是面向过程的程序设计语言，其注重的是数据结构和算法的设计，即给问题然后分析解决问题的思路，通过函数将分析的步骤实现，而C++兼容C语言其也支持这种设计方式，另外C++支持面向对象程序设计，和泛型程序设计风格，面向对象注重的不再是一个一个步骤，而是对象在整个问题处理中的行为，每个对象有自己的属性，和自己处理的方法，这是C和C...]]></description><category></category></item><item><title><![CDATA[MySQL事务管理]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/87384673</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/87384673</guid><author>Jocker_D</author><pubDate>Fri, 15 Feb 2019 20:28:46 +0800</pubDate><description><![CDATA[事务是一组DML语句组成，这些语句在逻辑上存在相关性，这一组DML语句要么全部成功，要么全部失败，是一个整体
事务基本操作
开始事务  start transaction
结束事务 commit 提交事务 或 rollback 回滚到事务开始
保存点 	savepoint pointName
回到保存点  rollback to pointName
事务操作注意事项

如果没有设置保存点，也可以回...]]></description><category></category></item><item><title><![CDATA[MySQL索引]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/87374109</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/87374109</guid><author>Jocker_D</author><pubDate>Fri, 15 Feb 2019 19:07:58 +0800</pubDate><description><![CDATA[索引是为了提高数据库的查询性能，提高效率特别高，其会降低插入效率不过相比查询提高的效率这些是值得的。
索引的类型：

主键索引(primary key)
唯一索引(unique)
普通索引(index)
全文索引(fulltext)

需要注意的是不同的存储引擎对索引的支持不一样，在旧的版本InnoDB不支持全文索引，全文索引只有MyISAM支持，不过新版的MySQL5.6.24上InnoDB引擎...]]></description><category></category></item><item><title><![CDATA[MySQL数据库的基本操作]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/87189995</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/87189995</guid><author>Jocker_D</author><pubDate>Wed, 13 Feb 2019 18:04:32 +0800</pubDate><description><![CDATA[在MySQL中可以使用help命令查看操作命令的使用。
下面使用一些示例记录操作，具体使用通过文档查看
创建数据库
创建名为db1的数据库
--IN NOT EXISTS不存在就建库，存在就忽略
CREATE DATABASE IN NOT EXISTS db1;

另外在创建数据库时可以设置字符集和校验规则
CREATE DATABASE IN NOT EXISTS db2 charset=ut...]]></description><category></category></item><item><title><![CDATA[从零开始的HTTP项目]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/86616988</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/86616988</guid><author>Jocker_D</author><pubDate>Thu, 24 Jan 2019 16:25:23 +0800</pubDate><description><![CDATA[这个项目是基于HTTP1.0版本的一个简单web服务器，主要用于练习网络编程和系统编程。
使用技术：
项目使用c++编写、cgi技术、多线程、 多进程(处理cgi)、socket网络编程
版本1采用线程池加任务队列的方式处理请求
版本2采用Reactor的设计模式，通过epoll + 线程池 + 就绪队列 + 事件池的方式编写，解决了版本1中处理cgi时工作线程阻塞等待问题。
注：该项目参考Tin...]]></description><category></category></item><item><title><![CDATA[IO多路复用--epoll]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/86565877</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/86565877</guid><author>Jocker_D</author><pubDate>Mon, 21 Jan 2019 18:17:59 +0800</pubDate><description><![CDATA[epoll
首先解释下为什么会有epoll，前面我们看了poll和select因为监听事件的增加会导致效率下降比较严重此时当处理大量IO时间时就需要一种效率比较高的处理模式，而epoll就是为了处理大批量句柄设计的IO多路复用模型。

...]]></description><category></category></item><item><title><![CDATA[IO多路复用--select/poll]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/86563293</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/86563293</guid><author>Jocker_D</author><pubDate>Sun, 20 Jan 2019 20:35:23 +0800</pubDate><description><![CDATA[IO多路复用是一种同步IO模型，在IO操作中，阻塞IO在等待IO操作时如果不满足条件会阻塞挂起，导致一个线程在同一时间只能处理一个IO，而非阻塞方式在进行轮训操作时，当有多个IO需要同时监听时，处理就会很麻烦。IＯ多路复用同一时间多个不同的IO操作，调用线程在调用时阻塞等待，当有任意监听的IO操作时就会返回。
select模型
采用Reactor模式实现
用户线程Reactor内核注册时间处理器s...]]></description><category></category></item><item><title><![CDATA[5种IO模型]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/86562161</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/86562161</guid><author>Jocker_D</author><pubDate>Sun, 20 Jan 2019 20:34:27 +0800</pubDate><description><![CDATA[阻塞IO
很常见的一种IO模型，即在进行IO操作时该进程或者线程阻塞挂起，等待IO操作完成返回结果如套接字、管道等默认均为阻塞IO,一个文件描述符, 默认都是阻塞IO。

非阻塞IO
非阻塞IO 即在调用时，如果不满足条件，如管道现在为空（前提是管道的写端没有关闭，否则阻塞和非阻塞在管道为空时去读均会返回0）或者接受缓存区为空时不会阻塞，直接返回并且设置错误码为EWOULDBLOCK

改变文件描...]]></description><category></category></item><item><title><![CDATA[Git使用]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/86545353</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/86545353</guid><author>Jocker_D</author><pubDate>Fri, 18 Jan 2019 21:42:45 +0800</pubDate><description><![CDATA[

git创建版本仓库
git init

创建一个文件夹或者使用一个已经存在的文件，在文件内运行git init


git仓库添加文件
添加文件， 可以多次添加之后然后再提交，在git add后可以通过git status查看添加的信息
git add [需要添加的文件]  //git add test.c
//如要添加整个文件夹呢内容可以使用 git add .
//.表示当前文件路径

托...]]></description><category></category></item><item><title><![CDATA[二维数组中的查找]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/86528423</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/86528423</guid><author>Jocker_D</author><pubDate>Thu, 17 Jan 2019 17:34:10 +0800</pubDate><description><![CDATA[题目描述
在一个二维数组中（每个一维数组的长度相同），每一行都按照从左到右递增的顺序排序，每一列都按照从上到下递增的顺序排序。请完成一个函数，输入这样的一个二维数组和一个整数，判断数组中是否含有该整数。
解题思路
第一种，刚开始用了二分查找，即在每一行用二分查找查看是否存在，算法复杂度为O(N*logN)
bool Find(int target, vector&amp;lt;vector&amp;lt;int&amp;...]]></description><category></category></item><item><title><![CDATA[TCP传输控制协议(4)--拥塞控制]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/86504778</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/86504778</guid><author>Jocker_D</author><pubDate>Wed, 16 Jan 2019 21:43:16 +0800</pubDate><description><![CDATA[拥塞控制
在前面说的流量控制指的是发送方和接收方端与端的调整，而拥塞是指网络中发生拥塞，该网络中所有主机发送的数据包大于网络吞吐量，拥塞控制就是为了防止过多的数据注入到网络中，这样可以使网络中的路由器或者链路不至于过载。另外如果产生报文段的速度大于TCP下层发送数据包速度会发生本地拥塞。
慢启动算法和拥塞避免算法
如果一开始将大量的数据发送到网络中如果网络不能容纳这么多的包势必会造成网络拥塞，因此...]]></description><category></category></item><item><title><![CDATA[TCP传输控制协议(3)--数据传输(滑动窗口)]]></title><link>https://blog.youkuaiyun.com/Jocker_D/article/details/86499650</link><guid>https://blog.youkuaiyun.com/Jocker_D/article/details/86499650</guid><author>Jocker_D</author><pubDate>Wed, 16 Jan 2019 21:42:11 +0800</pubDate><description><![CDATA[滑动窗口协议
TCP发送数据时滑动窗口协议维护两个窗口结构，发送窗口结构和接收窗口结构（均为抽象结构 ）

发送窗口结构如上，TCP通过字节大小维护窗口，即窗口大小(TCP头部中的窗口大小)和确认序号均为字节，SND.WND有接收方提供表示接受缓存区剩余大小(即当前能接受的数据大小)，左边界SND.UNA为接收方最新确认序号大小， 右边界为左边界加上窗口大小, SND.NXT则记录下次发送的数据序...]]></description><category></category></item></channel></rss>