<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Jacoob1024的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Jacoob1024</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Jacoob1024]]></copyright><item><title><![CDATA[ros话题编程之如何自定义消息]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/85138689</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/85138689</guid><author>Jacoob1024</author><pubDate>Thu, 20 Dec 2018 20:43:08 +0800</pubDate><description><![CDATA[以learning_communication为例，在该包文件目录下新建一个msg文件夹

然后在该文件夹下创建一个person.msg文件（在该文件中可以定义常量）

然后去xml文件中添加依赖（generation类型）以及cmakelist文件中添加编译依赖，具体添加内容参考古月系列教程的ppt，添加完成后catkin_make

 ...]]></description><category></category></item><item><title><![CDATA[ros之话题编程]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/85135047</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/85135047</guid><author>Jacoob1024</author><pubDate>Thu, 20 Dec 2018 20:15:44 +0800</pubDate><description><![CDATA[话题编程的流程：

创建发布者

创建订阅者

添加编译选项

运行可执行程序（实现功能）

如何实现一个发布者：

初始化ros节点

向ros master注册节点信息，包括发布的话题名以及话题中的消息类型（字符串型、整型等）

按照一定频率循环发布消息

如何实现一个订阅者：

初始化ros节点

向ros master注册节点并订阅需要的话题

循环等待话题消息，接收到消息后进入回调函数
...]]></description><category></category></item><item><title><![CDATA[ROS中的工作空间与文件结构编程基础等总结]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/85109020</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/85109020</guid><author>Jacoob1024</author><pubDate>Thu, 20 Dec 2018 15:53:16 +0800</pubDate><description><![CDATA[一个完整的工作空间主要由以下几个文件夹组成：

src：代码空间

build：编译空间

devel：开发空间

install：安装空间（与devel在ros2中合并了，用于存放编译完成的一些可执行文件）

下图为一个工作空间的文件结构



创建工作空间：

mkdir -p ～/catkin_ws/src    cd ~/catkin_ws/src       catkin_init_wo...]]></description><category></category></item><item><title><![CDATA[ros中常用的命令总结]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/85108314</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/85108314</guid><author>Jacoob1024</author><pubDate>Wed, 19 Dec 2018 21:45:38 +0800</pubDate><description><![CDATA[catkin_create_pkg：创建功能包

rospack：获取功能包信息

catkin_make：编译工作空间中的功能包

rosdep：自动安装功能包依赖的其他功能包

roscd：功能包目录之间的跳转

roscp：拷贝功能包中的文件

rosed：编辑功能包中的文件（相当于vim）

rosrun：运行功能包中的可执行文件

roslaunch：运行功能包中的启动文件

rosru...]]></description><category></category></item><item><title><![CDATA[常用的机器人相关技术网站]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/85107120</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/85107120</guid><author>Jacoob1024</author><pubDate>Wed, 19 Dec 2018 20:05:57 +0800</pubDate><description><![CDATA[ros wiki：wiki.ros.org

ros answer:answer.ros.org

简单粗暴：www.google.com
寻找ros代码的github网页：https://github.com/ros-infrastructure/robots.ros.org

一位技术博主：http://www.guyuehome.com/blog/ros

 ...]]></description><category></category></item><item><title><![CDATA[MATLAB2013b安装robotics toolbox方法总结]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/84971192</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/84971192</guid><author>Jacoob1024</author><pubDate>Fri, 14 Dec 2018 20:59:47 +0800</pubDate><description><![CDATA[第一步

         下载robotics toolbox工具包（访问链接http://petercorke.com/wordpress/toolboxes/robotics-toolbox，有两种格式，第一种是mltbx（双击按照步骤一步一步进行即可安装），我在本次 过程中下载的是zip格式的文件（第一次下载的10.3版本的安装后运行出现了问题，最后下载了9.10版本解决问题）

第二步
...]]></description><category></category></item><item><title><![CDATA[计算机网络总结1（错误码说明）]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/82262938</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/82262938</guid><author>Jacoob1024</author><pubDate>Fri, 31 Aug 2018 22:57:13 +0800</pubDate><description><![CDATA[

1xx（临时响应）
表示临时响应并需要请求者继续执行操作的状态代码。
代码 说明
100 （继续） 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分，正在等待其余部分。 
101 （切换协议） 请求者已要求服务器切换协议，服务器已确认并准备切换。
2xx （成功）
表示成功处理了请求的状态代码。
代码 说明
200 （成功） 服务器已成功处理了请求。通常，这表示服务器提供了请求...]]></description><category></category></item><item><title><![CDATA[网络层协议总结]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/81662848</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/81662848</guid><author>Jacoob1024</author><pubDate>Tue, 14 Aug 2018 14:33:40 +0800</pubDate><description><![CDATA[        连接在Internet中的每台主机（或者路由器）都分配一个32bit的全球唯一标识符，即IP地址（IPv4是32bit，IPv6是128bit）。IP地址的编码方法有三种：分类的IP地址、子网的划分和CIDR。传统的IP地址是分类的地址，分为A、B、C、D、E五类。无论是哪一类的IP地址，都有网络号和主机号两部分组成。其中，网络号表示主机所连接到的网络，主机号表示该主机或者路由器在...]]></description><category></category></item><item><title><![CDATA[TCP与UDP的区别与应用场景]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/81633004</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/81633004</guid><author>Jacoob1024</author><pubDate>Mon, 13 Aug 2018 16:54:39 +0800</pubDate><description><![CDATA[TCP和UDP

两者都是通信协议，TCP和UDP都是传输层协议，但是他们的通信机制和应用场景不同。

TCP

TCP（Transmission Control Protocol）又叫传输控制协议，TCP是面向连接的，并且是一种可靠的协议，在基于TCP进行通信时，通信双方需要建立TCP连接，建立连接需要经过三次握手，握手成功才可以通信。

UDP

UDP是一种面向无连接，切不可靠的协议，在通信...]]></description><category></category></item><item><title><![CDATA[memset函数]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/81632475</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/81632475</guid><author>Jacoob1024</author><pubDate>Mon, 13 Aug 2018 16:34:21 +0800</pubDate><description><![CDATA[1. memset()函数原型是extern void *memset(void *buffer, int c, int count)        buffer：为指针或是数组,

              c：是赋给buffer的值,

       count：是buffer的长度.


       这个函数在socket中多用于清空数组.如:原型是memset(buffer, 0, s...]]></description><category></category></item><item><title><![CDATA[TCP状态转换图]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/81624023</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/81624023</guid><author>Jacoob1024</author><pubDate>Mon, 13 Aug 2018 10:49:59 +0800</pubDate><description><![CDATA[        TCP为一个连接定义了11中状态，并且TCP规则规定如何基于当前状态及在该状态下所接受的分节从一个状态转换到另一个状态，举例，当某个应用进程在CLOSED状态下执行主动打开时，TCP将发送一个SYN，且新的状态是SYN_SENT。如果这个TCP接着接收到一个带ACK的SYN，那么它将发送一个ACK，且新的状态是ESTABLISHED。这个最终状态是绝大多数数据传送发生的状态。

 ...]]></description><category></category></item><item><title><![CDATA[朴素贝叶斯分类器]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/80064927</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/80064927</guid><author>Jacoob1024</author><pubDate>Mon, 13 Aug 2018 09:02:12 +0800</pubDate><description><![CDATA[      朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的数据集，首先基于特征条件独立假设学习输入/输出的联合概率分布；然后基于这种模型，对于给定的输入x，利用贝叶斯定理求出后验概率最大的输出y，朴素贝叶斯法实现简单，学习与预测概率都还可以，可用于很多分类场景。

    给定数据集T={（x1，y1），（x2，y2），、、、、（xN，yN）}，通过训练数据集学习联合概率分布...]]></description><category></category></item><item><title><![CDATA[TCP协议中的四次挥手释放连接]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/81563964</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/81563964</guid><author>Jacoob1024</author><pubDate>Fri, 10 Aug 2018 16:58:22 +0800</pubDate><description><![CDATA[建立一个连接需要三次握手，而终止一个连接需要四次挥手。这是由TCP的半关闭造成的。既然一个TCP连接是全双工（数据能在两个方向上同时传递），因此每个方向必须单独的进行关闭。现在我们介绍TCP的四次挥手释放连接的过程，整体示意图如下所示：

·

1. 某个应用程序首先调用close，我们称这一端执行主动关闭。这一端的TCP于是发送一个FIN M分节，表示数据发送完毕；

2. 另一端接收到FIN ...]]></description><category></category></item><item><title><![CDATA[TCP三次握手建立过程]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/81562963</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/81562963</guid><author>Jacoob1024</author><pubDate>Fri, 10 Aug 2018 15:11:04 +0800</pubDate><description><![CDATA[下图给出了TCP连接过程中的一些名词的意义



三次握手建立过程

1. 客户端向服务器发送一个SYN J；

2. 服务器向客户端响应一个SYN K，并对SYN J进行确认ACK  J+1；

3. 客户端再向服务器发一个确认ACK K+1.



1. 从图中可以看出，服务器必须准备好接受外来的连接。这通过socket、bind和listen函数来完成，称为被动打开。

客户端通过调用con...]]></description><category></category></item><item><title><![CDATA[TCP连接的建立与终止]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/81560848</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/81560848</guid><author>Jacoob1024</author><pubDate>Fri, 10 Aug 2018 14:32:17 +0800</pubDate><description><![CDATA[下图给出了一个TCP协议的服务端与客户端的套接口函数（图片来自网络资源）



服务器端：服务器先调用socket函数，返回一个套接字，然后套接字与地址、端口绑定（bind），对端口进行监听（listen），调用accept进行阻塞，直到建立连接。

客户端：如果这时候有个客户端调用socket（返回套接字）函数，然后连接服务器，如果连接成功，这时候服务端客户端的连接就建立了。客户端发送数据请求，...]]></description><category></category></item><item><title><![CDATA[计算机网络之TCP与UDP]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/81559584</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/81559584</guid><author>Jacoob1024</author><pubDate>Fri, 10 Aug 2018 11:32:56 +0800</pubDate><description><![CDATA[首先，在这里简单总结一下二者的区别：

1. TCP（传输控制协议）是一种面向连接的协议，提供客户与服务器的连接。而UDP（数据包协议），是一种无连接的协议，因为UDP客户端与服务器不存在长期的关系，例如一个UDP客户端创建一个套接字发送数据报给一个服务器，然后立刻用同一个套接字发送另一个数据报给另一个服务器。同样，一个UDP服务器也可以用一个UDP套接字同多个不同的客户端接收多个数据报。

UD...]]></description><category></category></item><item><title><![CDATA[操作系统之死锁]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/81535963</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/81535963</guid><author>Jacoob1024</author><pubDate>Thu, 09 Aug 2018 15:52:10 +0800</pubDate><description><![CDATA[通俗的讲，死锁是指多个进程因竞争资源而造成的一种僵局（互相等待），无外力作用，这些进程都将无法向前推进。

死锁产生的原因如下：

1. 系统资源的竞争

2.进程推进顺序非法

死锁产生的必要条件：

产生死锁必须同时满足以下四个条件，只要其中一个条件不成立，死锁就不会发生

1. 互斥条件：进程要求对所分配的资源进行排他性控制，即在一段时间内某资源仅为一个进程所占有，此时若有其他进程请求该资源...]]></description><category></category></item><item><title><![CDATA[一个典型的多进程情况]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/81531396</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/81531396</guid><author>Jacoob1024</author><pubDate>Thu, 09 Aug 2018 11:10:32 +0800</pubDate><description><![CDATA[问题描述：假设我们有三个程序，每个程序花费80%的时间进行I/O，20%的时间使用CPU，每个程序启动时间和其需要使用进行计算的分钟数如下，不考虑进程切换时间：

程序编号              启动时间                 需要CPU时间（分钟）

   1                            00:00                            3...]]></description><category></category></item><item><title><![CDATA[进程通信与进程同步]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/81515078</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/81515078</guid><author>Jacoob1024</author><pubDate>Wed, 08 Aug 2018 21:20:15 +0800</pubDate><description><![CDATA[多个进程可以共享系统中的各种资源，但其中许多资源一次只能为一个进程使用，我们把一次仅允许一个进程使用的资源称为临界资源。（许多物理设备都属于临界资源，如打印机等）

对临界资源的访问必须互斥进行，在每个进程中，访问临界资源的那段代码称为临界区。

进程通信与同步的目的主要有下面：

（1）数据传输：一个进程需要将他的数据发送给另一个进程；

（2）共享数据：多个进程想要操作共享数据，一个进程对共享...]]></description><category></category></item><item><title><![CDATA[多线程之分离态与非分离态（detached与joinable）]]></title><link>https://blog.youkuaiyun.com/Jacoob1024/article/details/81321042</link><guid>https://blog.youkuaiyun.com/Jacoob1024/article/details/81321042</guid><author>Jacoob1024</author><pubDate>Tue, 31 Jul 2018 21:26:32 +0800</pubDate><description><![CDATA[线程的分离状态决定一个线程以什么样的方式来终止自己

    非分离 【joinable】     分离 【detached】

非分离的线程能够被其他线程收回其资源和杀死；在被其他线程回收之前，它的存储器资源（如栈）是不释放的【默认状态】

分离的线程是不能被其他线程回收或杀死的，它的存储器资源在它终止时由系统自动释放

 

这里要注意的一点是，如果设置一个线程为分离线程，而这个线程运行又非常...]]></description><category></category></item></channel></rss>