<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[月黑风高云游诗人的博客]]></title><description><![CDATA[君子不器  Albert scn]]></description><link>https://blog.csdn.net/lqygame</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; lqygame]]></copyright><item><title><![CDATA[网络中出现TCP、UDP粘包、分包的两点解决办法]]></title><link>https://blog.csdn.net/lqygame/article/details/77316261</link><guid>https://blog.csdn.net/lqygame/article/details/77316261</guid><author>lqygame</author><pubDate>Thu, 17 Aug 2017 10:55:15 +0800</pubDate><description><![CDATA[粘包产生原因： 
先说TCP：由于TCP协议本身的机制（面向连接的可靠地协议-三次握手机制）客户端与服务器会维持一个连接（Channel），数据在连接不断开的情况下，可以持续不断地将多个数据包发往服务器，但是如果发送的网络数据包太小，那么他本身会启用Nagle算法（可配置是否启用）对较小的数据包进行合并（基于此，TCP的网络延迟要UDP的高些）然后再发送（超时或者包大小足够）。那么这样的话，服务器在]]></description><category></category></item><item><title><![CDATA[vector中的resize()函数 VS reserve()函数]]></title><link>https://blog.csdn.net/lqygame/article/details/77169746</link><guid>https://blog.csdn.net/lqygame/article/details/77169746</guid><author>lqygame</author><pubDate>Mon, 14 Aug 2017 20:48:46 +0800</pubDate><description><![CDATA[转自http://www.cnblogs.com/biyeymyhjob/archive/2013/05/11/3072893.html 
C++：vector中的resize()函数 VS reserve()函数 
http://www.cplusplus.com/reference/vector/vector/vector/写代码的时候无意错用了这两个函数 导致测试的时候，程序运行崩溃 发现这两]]></description><category></category></item><item><title><![CDATA[开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别]]></title><link>https://blog.csdn.net/lqygame/article/details/75258044</link><guid>https://blog.csdn.net/lqygame/article/details/75258044</guid><author>lqygame</author><pubDate>Mon, 17 Jul 2017 17:30:24 +0800</pubDate><description><![CDATA[开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别 
首先借用有心人士的一张相当直观清晰的图来划分各种协议：开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别 
 
以下是上述协议的简单介绍： 
BSD开源协议 
BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用，修改源代码，也可以将修改后的代码作为开源]]></description><category></category></item><item><title><![CDATA[寻路算法A*和Dijkstra]]></title><link>https://blog.csdn.net/lqygame/article/details/74502704</link><guid>https://blog.csdn.net/lqygame/article/details/74502704</guid><author>lqygame</author><pubDate>Wed, 05 Jul 2017 21:19:24 +0800</pubDate><description><![CDATA[网上找了很多A*和Dijkstra算法的解析，很多都很难理解，下面这两篇非常清晰。 
A*算法http://blog.csdn.net/zgwangbo/article/details/52078338 
Dijkstra(迪杰斯特拉)算法http://blog.csdn.net/mu399/article/details/50903876/*****************************]]></description><category></category></item><item><title><![CDATA[TCP协议相关问题]]></title><link>https://blog.csdn.net/lqygame/article/details/74357030</link><guid>https://blog.csdn.net/lqygame/article/details/74357030</guid><author>lqygame</author><pubDate>Tue, 04 Jul 2017 21:14:13 +0800</pubDate><description><![CDATA[当多个连接请求同时到达server，会怎么样？1.TCP存在一个连接队列，对于新的连接请求，该TCP监听的端口的连接队列中还有空间则TCP模块对SYN进行确认并完成连接的建立，丢进连接队列。应用层只在三次握手的第三个报文收到后才知道这个新连接。
2.对于新的连接请求，连接队列中如果没有空间，TCP将不理会收到的SYN，也不发送RST。
3.应用层指明队列大小，积压值。TCP时延确认问题TCP在处理交]]></description><category></category></item><item><title><![CDATA[epoll源码实现分析[整理]]]></title><link>https://blog.csdn.net/lqygame/article/details/73927908</link><guid>https://blog.csdn.net/lqygame/article/details/73927908</guid><author>lqygame</author><pubDate>Thu, 29 Jun 2017 20:46:45 +0800</pubDate><description><![CDATA[转自http://www.360doc.com/userhome.aspx?userid=14513665&cid=3 
epoll用法回顾先简单回顾下如何使用C库封装的3个epoll相关的系统调用。更详细的用法参见http://www.cnblogs.com/apprentice89/archive/2013/05/06/3063039.htmlint epoll_create(int size)]]></description><category></category></item><item><title><![CDATA[poll、select和epoll的区别]]></title><link>https://blog.csdn.net/lqygame/article/details/73851039</link><guid>https://blog.csdn.net/lqygame/article/details/73851039</guid><author>lqygame</author><pubDate>Wed, 28 Jun 2017 17:31:44 +0800</pubDate><description><![CDATA[poll、select和epoll的区别 
select原理概述 
调用select时，会发生以下事情： 
  1. 从用户空间拷贝fd_set到内核空间； 
  2. 注册回调函数__pollwait； 
  3. 遍历所有fd，对全部指定设备做一次poll（这里的poll是一个文件操作，它有两个参数，一个是文件fd本身，一个是当设备尚未就绪时调用的回调函数__pollwait，这个函数把设备自己]]></description><category></category></item><item><title><![CDATA[《操作系统真象还原》-阅读笔记（下）]]></title><link>https://blog.csdn.net/lqygame/article/details/73850249</link><guid>https://blog.csdn.net/lqygame/article/details/73850249</guid><author>lqygame</author><pubDate>Wed, 28 Jun 2017 16:46:36 +0800</pubDate><description><![CDATA[第十一章任意进程的页目录表第0~767个页目录项属于用户空间，指向用户页表。第768~1023个页目录项指向内核页表。每创建一个新的用户进程,就将内核页目录项复制到用户进程的页目录表，其次需要把用户页目录表中最后一个页目录项更新为用户进程自己的页目录表的物理地址。 
每个进程有自己单独的位图,存储在进程pcb中的userprog_vaddr中。 
LDT 
当前运行的任务，其LDT位于LDTR指向的]]></description><category></category></item><item><title><![CDATA[《操作系统真象还原》-阅读笔记（中）]]></title><link>https://blog.csdn.net/lqygame/article/details/73824702</link><guid>https://blog.csdn.net/lqygame/article/details/73824702</guid><author>lqygame</author><pubDate>Tue, 27 Jun 2017 23:07:24 +0800</pubDate><description><![CDATA[第七章操作系统是由中断驱动的。 
中断分为外部中断和内部中断。 
外部中断分为可屏蔽中断和不可屏蔽中断，内部中断分为软中断和异常。 
外部中断 
来自CPU外部的中断。 
可屏蔽中断：通过INTR引脚进入CPU，外部设备如硬盘、网卡、打印机等发出的中断 
CPU可以不理会，因为不会宕机。 
Linux把中断分为上半部和下半部分开处理，把中断立即需要执行的部分划分到上半部，不紧急的部分划分到下半部。上]]></description><category></category></item><item><title><![CDATA[《操作系统真象还原》-阅读笔记（上）]]></title><link>https://blog.csdn.net/lqygame/article/details/73801091</link><guid>https://blog.csdn.net/lqygame/article/details/73801091</guid><author>lqygame</author><pubDate>Tue, 27 Jun 2017 16:17:58 +0800</pubDate><description><![CDATA[第一章配置bochs，进入bochs simulator后一直是黑屏，原来默认是调试模式，需要输入C（continue）来让调试继续。第二章主讲MBR及进入MBR前的步骤 
1.实模式只能访问1MB的内存空间。 
2.BIOS在ROM中。 
3.开机上电后CS：IP指向内存0xfff0，这里有个跳转语句，转到fe05b才是真正的BIOS程序，之后检测内存，显卡灯，建立数据结构，中断向量表和填写中断例]]></description><category></category></item><item><title><![CDATA[ROS导航小车无故倒退问题分析]]></title><link>https://blog.csdn.net/lqygame/article/details/73716065</link><guid>https://blog.csdn.net/lqygame/article/details/73716065</guid><author>lqygame</author><pubDate>Sun, 25 Jun 2017 13:33:25 +0800</pubDate><description><![CDATA[之前用ROS+激光雷达做小车室内导航时，遇到个问题，就是在RVIZ中给定目的地后小车总是会倒退行走，这个行走速度就是base_local_planner_params.yaml里配置的escape_vel逃逸速度，调整了其他参数无用，看看源代码 
在trajectory_planner.cpp中 //and finally, if we can't do anything else, we want]]></description><category></category></item><item><title><![CDATA[linux信号实现机制详解]]></title><link>https://blog.csdn.net/lqygame/article/details/73555430</link><guid>https://blog.csdn.net/lqygame/article/details/73555430</guid><author>lqygame</author><pubDate>Wed, 21 Jun 2017 20:47:18 +0800</pubDate><description><![CDATA[1       信号本质 
软中断信号（signal，又简称为信号）用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟，在原理上，一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制，一个进程不必通过任何操作来等待信号的到达，事实上，进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件]]></description><category></category></item><item><title><![CDATA[C++四种强制转换]]></title><link>https://blog.csdn.net/lqygame/article/details/73550078</link><guid>https://blog.csdn.net/lqygame/article/details/73550078</guid><author>lqygame</author><pubDate>Wed, 21 Jun 2017 16:04:42 +0800</pubDate><description><![CDATA[reinterpret_cast/*  
reinterpret_cast converts any pointer type to any other pointer type, even of unrelated classes.  
The operation result is a simple binary copy of the value from one pointer to the]]></description><category></category></item><item><title><![CDATA[C++中虚函数表存放位置]]></title><link>https://blog.csdn.net/lqygame/article/details/73381610</link><guid>https://blog.csdn.net/lqygame/article/details/73381610</guid><author>lqygame</author><pubDate>Sat, 17 Jun 2017 16:48:58 +0800</pubDate><description><![CDATA[转自http://www.cnblogs.com/laiqun/p/5887372.html我们都知道，虚函数是多态机制的基础，就是在程序在运行期根据调用的对象来判断具体调用哪个函数，现在我们来说说它的具体实现原理，主要说一下我自己的理解，如果有什么不对的地方请指正 
在每个包含有虚函数的类的对象的最前面(是指这个对象对象内存布局的最前面，至于为什么是最前面，说来话长，这里就不说了，主要是考虑到效率]]></description><category></category></item><item><title><![CDATA[字符编码笔记：ASCII，Unicode和UTF-8]]></title><link>https://blog.csdn.net/lqygame/article/details/72963470</link><guid>https://blog.csdn.net/lqygame/article/details/72963470</guid><author>lqygame</author><pubDate>Fri, 09 Jun 2017 16:34:27 +0800</pubDate><description><![CDATA[转自http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 
1. ASCII码 
我们知道，在计算机内部，所有的信息最终都表示为一个二进制的字符串。每一个二进制位（bit）有0和1两种状态，因此八个二进制位就可以组合出256种状态，这被称为一个字节（byte）。也就是说，一个字节一共可以用来表示256种不同的状态，每一]]></description><category></category></item><item><title><![CDATA[linux线程之pthread_join和pthread_detach]]></title><link>https://blog.csdn.net/lqygame/article/details/72961354</link><guid>https://blog.csdn.net/lqygame/article/details/72961354</guid><author>lqygame</author><pubDate>Fri, 09 Jun 2017 15:38:49 +0800</pubDate><description><![CDATA[转自http://www.cnblogs.com/chris-cp/p/3510167.html 
在任何一个时间点上，线程是可结合的（joinable）或者是分离的（detached）。一个可结合的线程能够被其他线程收回其资源和杀死。在 被其他线程回收之前，它的存储器资源（例如栈）是不释放的。相反，一个分离的线程是不能被其他线程回收或杀死的，它的存储器资源在它终止时由系统自动释放。默认情况下，线程]]></description><category></category></item><item><title><![CDATA[理解TIME_WAIT]]></title><link>https://blog.csdn.net/lqygame/article/details/72954137</link><guid>https://blog.csdn.net/lqygame/article/details/72954137</guid><author>lqygame</author><pubDate>Fri, 09 Jun 2017 10:13:06 +0800</pubDate><description><![CDATA[理解TIME_WAIT 
转自http://www.firefoxbug.com/index.php/archives/2795/前言TIME_WAIT 是在TCP协议中很模糊的概念，它可能使socke能陷入的一种时间相对比较长的状态，过多的TIME_WAIT会影响新socket的建立。TIME_WAIT为什么会存在？它的作用又是什么？下面我们就来理解下TIME_WAIT。 
 
这张图详细的列出了]]></description><category></category></item><item><title><![CDATA[TCP慢启动、拥塞避免、快速重传、快速回复]]></title><link>https://blog.csdn.net/lqygame/article/details/72911723</link><guid>https://blog.csdn.net/lqygame/article/details/72911723</guid><author>lqygame</author><pubDate>Thu, 08 Jun 2017 11:30:42 +0800</pubDate><description><![CDATA[转自：http://blog.csdn.NET/itmacar/article/details/12278769 
为了防止网络的拥塞现象，TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成，后来TCP Reno版本中又针对性的加入了“快速重传(Fa]]></description><category></category></item><item><title><![CDATA[STL源码学习----内存管理]]></title><link>https://blog.csdn.net/lqygame/article/details/72903133</link><guid>https://blog.csdn.net/lqygame/article/details/72903133</guid><author>lqygame</author><pubDate>Wed, 07 Jun 2017 19:29:44 +0800</pubDate><description><![CDATA[1， allocator 
  SGI STL 的头文件defalloc.h中有一个符合标准的名为allocator的内存分配器，它只是简单地将::operator new 和::operator delete做了一层薄薄的封装。在SGI STL的容器和算法部分从来没有用到这个内存分配器。在此略过。2， STL 的内存分配策略首先简要介绍一下STL中对内存分配的规划当用户用new构造一个对象的时候，]]></description><category></category></item><item><title><![CDATA[进程的用户栈和内核栈]]></title><link>https://blog.csdn.net/lqygame/article/details/72898069</link><guid>https://blog.csdn.net/lqygame/article/details/72898069</guid><author>lqygame</author><pubDate>Wed, 07 Jun 2017 11:37:52 +0800</pubDate><description><![CDATA[进程是程序的一次执行过程。用剧本和演出来类比，程序相当于剧本，而进程则相当于剧本的一次演出，舞台、灯光则相当于进程的运行环境。 
进程的堆栈 
每个进程都有自己的堆栈，内核在创建一个新的进程时，在创建进程控制块task_struct的同时，也为进程创建自己堆栈。一个进程 有2个堆栈，用户堆栈和系统堆栈；用户堆栈的空间指向用户地址空间，内核堆栈的空间指向内核地址空间。当进程在用户态运行时，CPU堆栈指]]></description><category></category></item></channel></rss>