月黑风高云游诗人的博客

君子不器 Albert scn

网络中出现TCP、UDP粘包、分包的两点解决办法

粘包产生原因: 先说TCP:由于TCP协议本身的机制(面向连接的可靠地协议-三次握手机制)客户端与服务器会维持一个连接(Channel),数据在连接不断开的情况下,可以持续不断地将多个数据包发往服务器,但是如果发送的网络数据包太小,那么他本身会启用Nagle算法(可配置是否启用)对较小的数据包进...

2017-08-17 10:55:15

阅读数:182

评论数:0

vector中的resize()函数 VS reserve()函数

转自http://www.cnblogs.com/biyeymyhjob/archive/2013/05/11/3072893.html C++:vector中的resize()函数 VS reserve()函数 http://www.cplusplus.com/reference/vecto...

2017-08-14 20:48:46

阅读数:174

评论数:0

开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别 首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别 以下是上述协议的简单介绍: BSD开源协议 BSD开源协议是一个给于使用...

2017-07-17 17:30:24

阅读数:455

评论数:0

寻路算法A*和Dijkstra

网上找了很多A*和Dijkstra算法的解析,很多都很难理解,下面这两篇非常清晰。 A*算法http://blog.csdn.net/zgwangbo/article/details/52078338 Dijkstra(迪杰斯特拉)算法http://blog.csdn.net/mu399/ar...

2017-07-05 21:19:24

阅读数:755

评论数:1

TCP协议相关问题

当多个连接请求同时到达server,会怎么样?1.TCP存在一个连接队列,对于新的连接请求,该TCP监听的端口的连接队列中还有空间则TCP模块对SYN进行确认并完成连接的建立,丢进连接队列。应用层只在三次握手的第三个报文收到后才知道这个新连接。 2.对于新的连接请求,连接队列中如果没有空间,TCP...

2017-07-04 21:14:13

阅读数:217

评论数:0

epoll源码实现分析[整理]

转自http://www.360doc.com/userhome.aspx?userid=14513665&cid=3 epoll用法回顾先简单回顾下如何使用C库封装的3个epoll相关的系统调用。更详细的用法参见http://www.cnblogs.com/apprentice89/a...

2017-06-29 20:46:45

阅读数:249

评论数:0

poll、select和epoll的区别

poll、select和epoll的区别 select原理概述 调用select时,会发生以下事情: 1. 从用户空间拷贝fd_set到内核空间; 2. 注册回调函数__pollwait; 3. 遍历所有fd,对全部指定设备做一次poll(这里的poll是一个文件操作,它有两...

2017-06-28 17:31:44

阅读数:279

评论数:0

《操作系统真象还原》-阅读笔记(下)

第十一章任意进程的页目录表第0~767个页目录项属于用户空间,指向用户页表。第768~1023个页目录项指向内核页表。每创建一个新的用户进程,就将内核页目录项复制到用户进程的页目录表,其次需要把用户页目录表中最后一个页目录项更新为用户进程自己的页目录表的物理地址。 每个进程有自己单独的位图,存储...

2017-06-28 16:46:36

阅读数:410

评论数:0

《操作系统真象还原》-阅读笔记(中)

第七章操作系统是由中断驱动的。 中断分为外部中断和内部中断。 外部中断分为可屏蔽中断和不可屏蔽中断,内部中断分为软中断和异常。 外部中断 来自CPU外部的中断。 可屏蔽中断:通过INTR引脚进入CPU,外部设备如硬盘、网卡、打印机等发出的中断 CPU可以不理会,因为不会宕机。 Lin...

2017-06-27 23:07:24

阅读数:1015

评论数:0

《操作系统真象还原》-阅读笔记(上)

第一章配置bochs,进入bochs simulator后一直是黑屏,原来默认是调试模式,需要输入C(continue)来让调试继续。第二章主讲MBR及进入MBR前的步骤 1.实模式只能访问1MB的内存空间。 2.BIOS在ROM中。 3.开机上电后CS:IP指向内存0xfff0,这里有个跳...

2017-06-27 16:17:58

阅读数:1398

评论数:0

ROS导航小车无故倒退问题分析

之前用ROS+激光雷达做小车室内导航时,遇到个问题,就是在RVIZ中给定目的地后小车总是会倒退行走,这个行走速度就是base_local_planner_params.yaml里配置的escape_vel逃逸速度,调整了其他参数无用,看看源代码 在trajectory_planner.cpp中 ...

2017-06-25 13:33:25

阅读数:1077

评论数:0

linux信号实现机制详解

1 信号本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程...

2017-06-21 20:47:18

阅读数:279

评论数:0

C++四种强制转换

reinterpret_cast/* reinterpret_cast converts any pointer type to any other pointer type, even of unrelated classes. The operation result is a sim...

2017-06-21 16:04:42

阅读数:158

评论数:0

C++中虚函数表存放位置

转自http://www.cnblogs.com/laiqun/p/5887372.html我们都知道,虚函数是多态机制的基础,就是在程序在运行期根据调用的对象来判断具体调用哪个函数,现在我们来说说它的具体实现原理,主要说一下我自己的理解,如果有什么不对的地方请指正 在每个包含有虚函数的类的对象...

2017-06-17 16:48:58

阅读数:312

评论数:0

字符编码笔记:ASCII,Unicode和UTF-8

转自http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合...

2017-06-09 16:34:27

阅读数:126

评论数:0

linux线程之pthread_join和pthread_detach

转自http://www.cnblogs.com/chris-cp/p/3510167.html 在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死。在 被其他线程回收之前,它的存储器资源(例如栈)是不释放的。相...

2017-06-09 15:38:49

阅读数:287

评论数:0

理解TIME_WAIT

理解TIME_WAIT 转自http://www.firefoxbug.com/index.php/archives/2795/前言TIME_WAIT 是在TCP协议中很模糊的概念,它可能使socke能陷入的一种时间相对比较长的状态,过多的TIME_WAIT会影响新socket的建立。TIME_...

2017-06-09 10:13:06

阅读数:223

评论数:0

TCP慢启动、拥塞避免、快速重传、快速回复

转自:http://blog.csdn.NET/itmacar/article/details/12278769 为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Co...

2017-06-08 11:30:42

阅读数:294

评论数:0

STL源码学习----内存管理

1, allocator SGI STL 的头文件defalloc.h中有一个符合标准的名为allocator的内存分配器,它只是简单地将::operator new 和::operator delete做了一层薄薄的封装。在SGI STL的容器和算法部分从来没有用到这个内存分配器。在此略过...

2017-06-07 19:29:44

阅读数:169

评论数:0

进程的用户栈和内核栈

进程是程序的一次执行过程。用剧本和演出来类比,程序相当于剧本,而进程则相当于剧本的一次演出,舞台、灯光则相当于进程的运行环境。 进程的堆栈 每个进程都有自己的堆栈,内核在创建一个新的进程时,在创建进程控制块task_struct的同时,也为进程创建自己堆栈。一个进程 有2个堆栈,用户堆栈和系统...

2017-06-07 11:37:52

阅读数:534

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭