C++ 机器人行业
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
一、项目背景 最近在做一个人脸检测项目,需要接入百度AI的系统进行识别和检测。主要流程就是往指定的URL上post图片上去,之后接收检测结果就好了。 百度的检测结果包含这样的信息: left - 人脸区域离左边界的距离 top - 人脸区域离上边界的距离 width - 人脸区域的宽度 height - 人脸区域的高度 ratation 人脸框相对于竖直方向的顺时针旋转角[-180, 180]. 如果我想把人脸框出来,很容易想到的是以(left, top)为左上顶点,以width 为宽,height为高,画一个矩形就好了。
需求:在vs2013上配置支持https协议的libcurl。 环境:win7(64位),vs2013 一、安装openssl: 需要先安装nasm和ActivePerl。 nasm需要手动配置环境变量。
说明:我之前在网上看到这篇文章觉得非常好,于是把它翻译了下来。当然很多地方翻译的很渣,见笑了。温馨提示,文章有点长。 原文链接: https://medium.com/the-aspiring-programmer-journal/the-10-operating-system-concepts...
参考:http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html 几乎是照抄参考过来的,只不过后面自己调试一下代码。 这里主要介绍Valgrind的一些简单用法。
滑动窗口协议 还可以看我的另一篇博客,有更详细的介绍:http://www.cnblogs.com/xcywt/p/8401523.html 属于TCP协议中的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生。
网上看了一篇关于HTTP的博客,觉得还不错,这里就记下来了。 参考:https://www.cnblogs.com/guguli/p/4758937.html 一、主要特点1.支持客户/服务器模式2.简单快速:客户向服务器请求服务时,只需请求方法和路径。
第八章 查找 定义:查找就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 8.2 查找概论 查找表(Search table):是由同一类型的数据元素构成的集合。 关键字(key):是数据元素中某个数据项的值,又称为键值。
第六章 树 6.2 树的定义 树(Tree)的n个结点的有限集。当n=0时,称为空树。 任意一个非空树中: 1)有且仅有一个特定的称为根(root)的结点 2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2 …… 、Tm。
第一章 数据结构绪论 1.4 基本概念和术语 1.4.1 数据 数据:描述客观事物的符号,是计算机中可以操作的对象,是能被极端及识别,并输入给计算机处理的符号集合。 1.4.2 数据元素 数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理(也叫记录) 1.4.3 数据项 数据项:一个数据元素可以由若干个数据项组成 数据项是数据不可分割的最小单位 1.4.4 数据对象 数据对象:是性质相同的数据元素的集合,是数据的子集。
21.1 引言 可靠性的保证之一就是超时重传 前面两个超时重传的例子 1) ICMP端口不能到达时,TFTP客户使用UDP实现了一个简单的超时和重传机制,假定5s是一个适当是时间间隔,并每隔5s进行重传 2) 在向一个不存在的主机发送ARP的 例子中,可看到当TCP试图建立连接的时候,在每个重传之间使用一个较长的时延来重传SYN 对于每个连接,TCP管理4个不同的定时器: 1) 重传定时器使用于当希望收到另一端的确认 2) 坚持(persist)定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口。
19.1 引言 成块数据:比如ftp、电子邮件、Usenet新闻 交互数据:Telnet、Rlogin 成块数据的报文段基本上都是满长度(full-size)的,而交互数据小的多(Telnet和Rlogin分组中通常约90%左右的用户数据小于10个字节)。
第十八章 TCP的建立与终止 tcpdump Tcpdump可以将网络中传送的数据报完截获下来进行分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息 就有点像Wireshark那个工具一样,只不过是命令行的,这里不作详细分析,直接给个实例: 每行输出格式如下: 源 > 目的:标志 这里的标志就是TCP首部中6个标志比特中的4个,下面是标志中5个字符的含义: ack和urg将做特殊显示。
17.2 TCP的服务 TCP提供了一种面向连接的、可靠的字节流服务。两个使用TCP的应用在彼此交换数据之前必须先建立一个TCP连接。 TCP通过下列方式来提供可靠性: 1) 应用数据被分割成TCP认为最合适发送的数据块 2) 当TCP发送一个段后,它会启动一个定时器,等待目的端确认。
第一章概述 1.2 分层 网络编程通常分不同层次进行开发,每一层负责不同的通信功能。 一个协议族比如TCP/IP,通常是一组不同层次上多个协议的组合。一般可以认为是是四层协议系统: 链路层:有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。
一,前提说明 最近搞了一个阿里云服务器玩玩,打算自己搞一个小网站什么的。 然后再阿里云上花9.9买了半年的服务器。 服务器版本是 ubuntu_16_04。 二、目标是往阿里云服务器上上传本地文件。
参考:http://www.cnblogs.com/skywang12345/p/3576373.html 这里主要就是自己实现的代码,删除动作有点不一样: #ifndef __BSTREE_H__ #define __BSTREE_H__ /* 参考:http://www.
一.类 类(class)封装了数据和行为,是面向对象的重要组成部分,他是具有相同操作、属性、关系的对象集合的总称。 在软件运行时,类被实例化成对象(object),对象对应某个具体的事物,是类的实例(instance) 类图(class diagram)使用出现在系统中的不同类来描述系统的静态结构,它用来描述不同的类以及它们之间的关系。
1.顺序程序与并发程序的特征1)顺序程序特征:顺序性、封闭性(运行环境的封闭性)、确定性、可再现性。2)并发程序特征:共享性、并发性、随机性。2.进程互斥1)由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源。
1.消息队列1)消息队列提供了一个从进程向另外一个进程发送一块是数据的方法2)每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型不足之处:每个消息的最大长度是有限制的。MSGMAX每个消息队列的总的字节数也是有上限。
7.2 main函数 1.C程序总是从main函数开始执行的,原型:int main(int argc,char *argv[]);argc是命令行参数的个数argc是指向参数的各个指针所构成的数组2.内核执行C程序时,在调用main前先调用一个特殊的启动例程。
关于什么是UNIX域套接字可以参考:http://www.cnblogs.com/xcywt/p/8185597.html这里主要介绍非命名的UNIX域套接字的用法。1.socketpair函数先看man手册: SYNOPSIS #include /* See ...
这里主要介绍命名UNIX域套接字 1.什么是UNIX域套接字Unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务通信的一种方式。是进程间通信(IPC)的一种方式。它提供了两类套接字:字节流套接字(有点像TCP)和数据报套接字(有点像UDP)UNIX域数据报服务是可靠的,不会丢失消息,也不会传递出错。
参考(原文简直超赞):https://zhidao.baidu.com/question/687563051895364284.html下面是我结合原文写的,为了便于自己理解:关于阻塞和非阻塞的理解可以看这个:http://www.cnblogs.com/xcywt/p/8146123.html 1.举例子说明假设你在读大学,有个朋友F来找你,你住在A栋。
在网络编程中通常需要处理很多个连接,可以用select和poll来处理多个连接。但是select都受进程能打开的最大文件描述符个数的限制。并且select和poll效率会随着监听fd的数目增多而下降。
我们知道TCP是全双工的,可以在接收数据的同时发送数据。假设有主机A在和主机B通信,可以认为是在两者之间存在两个管道。就像这样:A ---------> BA
1.先说select在多路IO中的限制:1)linux中每个程序能够打开的最多文件描述符是有限制的。默认是1024.可以通过ulimit -n进行查看和修改: xcy@xcy-virtual-machine:~/test/sock10_poll$ ulimit -n1024xcy@xcy-vi...
fork可以在linux中创建子进程。先看man手册里面的东西: SYNOPSIS #include pid_t fork(void);DESCRIPTION fork() creates a new process by duplicating the calling process.
1、先看man手册 SYNOPSIS /* According to POSIX.1-2001 */ #include /* According to earlier standards */ #include #include ...
我们知道TCP是面向连接的,我们只知道有连接断开,其实内部还有一些比较复杂的状态。去了解各个状态之间的切换有助于我们更加深入的了解TCP。下面我们就来分析各个状态。 1、如下图示(图源百度)图中显示出了10种状态。
1、TCP的特点: 基于字节流面向连接可靠传输缓冲传输全双工流量控制 2、头部格式和说明 图源百度。如下图示,就是TCP包的头部结构。可以看到这个头部最少有4x5=20个字节。 另外还需要理解TCP协议是承载在IP协议中的。
关于七层模型和四层模型可以参考这个:http://www.cnblogs.com/xcywt/p/5027277.html 因为四层模型用的比较多,这里只拿四层模型来分析。 1、四层模型中的最下层是链路层,传输的是以太网数据帧。
一、gethostname,gethostbyname的用法 这两个函数可以用来获取主机的信息。gethostname:获取主机的名字gethostbyname:通过名字获取其他的信息(比如ip) 1.
直接上代码,亲测有用。 #ifndef __DLINK_H__ #define __DLINK_H__ /* [phead] -> [index0] -> [index1] -> [index2] -> .
一,关于编译链接编译指的的把编译单元生成目标文件的过程链接是把目标文件链接到一起的过程编译单元:可以认为是一个.c或者.cpp文件。每个编译单元经过预处理会得到一个临时的编译单元。预处理会间接包含其他文件还会展开宏调用。
1、干货 Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
我的博客即将同步至腾讯云+社区,邀请大家一同入驻。
26.1 发送消息 26.1.1 功能分析 1.确定系统中都有谁 $who 给出的信息包括用户名 用户所在终端 用户登入系统的时间 2.启用消息功能 用户可以禁止别人给我发消息,所以需要先检查一下是否允许发送消息。
25.1 MySQL数据库 /* 但是我在虚拟机上安装的时候居然不提示输入密码。 这个可以参考http://blog.csdn.net/sinat_21302587/article/details/76870457 导致登录的时候不知道账号密码。
第二十三章 使用其他shell bash shell是linux发行版中最广泛使用的shell。但是它并不是唯一的选择,还有其他的shell可以供你选择。 23.1 什么是dash shell 百度百科上说:Dash shell是一个Unix shell,比Bash shell小的多,符合POSIX标准。
gawk是一门功能丰富的编程语言,你可以通过它所提供的各种特性来编写好几程序处理数据。 22.1 使用变量 gawk编程语言支持两种不同类型的变量: 内建变量和自定义变量 22.1.1 内建变量 gawk程序使用内建变量来引用程序数据里的一些特殊功能 1.字段和记录分隔符变量 数据字段变量:允许你使用美元符和字段在该记录中的位置值来引用记录对应的字段。
本章介绍一些sed编辑器提供的高级特性。 21.1 多行命令 按照之前的知识,所有的sed编辑器命令都是针对单行数据执行操作的。 在sed编辑器读取数据流时,它会基于换行符的位置将数据分成行,一次处理一行数据。
20.1 什么是正则表达式 20.1.1 定义 正则表达式是你所定义的模式模板。linux工具可以用它来过滤文本。 正则表达式利用通配符来描述数据流中第一个或多个字符。 正则表达式模式含有文本或特殊字符,为sed编辑器和gawk程序定义了一个匹配数据时采用的模板。
这两个工具能够极大简化需要进行的数据处理任务。 19.1 文本处理 能轻松实现自动格式化、插入、修改或删除文本元素的简单命令行编辑。 sed和gawk就具备上述功能 19.1.1 sed编辑器 被称为流编辑器。
参考: http://www.cnblogs.com/skywang12345/p/3596746.html 下面上代码: #include using namespace std; void quicksort(int *arr, int left, int right) ...
18.1 创建文本菜单 直接上例子吧: 1 #!/bin/bash 2 function menu 3 { 4 clear 5 echo 6 echo -e "\t\t\tSys Admin Menu\n" 7 echo -e "\t1.
可以将shell脚本代码放进函数中封装起来,这样就能在脚本中的任何地方多次使用它了。 17.1 基本的脚本函数 函数:是一个脚本代码块,可以为其命名并在代码中任何位置重用。 17.1.1 创建函数 有两种格式:name 是函数名 1) function name { commands } 2)这种就比较接近c语言风格了 name() { commands } 17.1.2 使用函数 跟其他shell命令一样,在行中指定函数名就好了。
1. 我们知道Makefile中的语法是这样: target ... : prerequisites ... command … … 2. 假如编译两个文件可以这么写: a.o:a.c gcc -c a.c b.o:b.c gcc -c b.c Test: a.o b.o gcc -o Test a.o b.oclean: rm *.o 我们可以单独这么运行:make a.o或者make b.o或者make clean注意上面三个的区别。
一些控制脚本的方式:向脚本发送信号、修改脚本优先级,在脚本运行时切换到运行模式 16.1 处理信号 linux利用信号与运行在系统中的进程进行通信。 也可以通过对脚本进行编程,使其在收到特定信号时执行某些命令。