- 博客(22)
- 资源 (18)
- 收藏
- 关注
原创 IO多路复用-select系统调用
一、IO多路复用 IO多路复用允许进程同时检查多个文件描述符,检查其中任意一个是否可以执行IO操作。有两个功能几乎相同的系统调用来执行IO多路复用,一是select,二是poll,历史上select的使用更为广泛。这两个系统调用可以检查普通文件、终端、伪终端、管道、FIFO、套接字等,允许进程要么一直等待文件描述符成为就绪态,要么指定一个超时时间。这里简单记录下select的使用二、se...
2018-06-20 15:33:15
578
原创 信号
1、概述 信号是事件发生时对进程的通知机制,有时也称之为软件中断,会中断程序的正常执行流程。进程能够向自己也可以向其它进程发送信号,多数情况下信号都是源于内核,引发内核产生信号的事件可能有以下几种:硬件发生异常。硬件异常的例子包括执行一条异常的机器语言指令,诸如被0除,引用无法访问的内存等。键入能产生信号的字符。如ctrl+c等发生了软件事件。比如子进程退出,定时器到期等。 ...
2018-05-17 14:45:56
300
原创 监控文件事件
有时应用程序需要对某个文件或目录进行监控,以便判断是否发生了特定事件,比如文件删除、新增、修改等。典型例子就是文件管理应用。Linux自内核2.6.13起提供inotify机制供应用程序监控文件事件。1、概述使用inotify API有以下关键步骤:使用inotify_init()创建一个inotify实例,返回的文件描述符用于后续操作中指代该实例。使用inotify_add_...
2018-04-09 19:49:35
992
原创 进程的创建和终止
1、概述 系统调用fork允许一个进程(父进程)创建一个新进程(子进程)。通过fork,子进程几乎是父进程的复制版本,子进程获得父进程的栈、数据段、堆和执行文本段的拷贝。通常,调用fork产生子进程后,子进程随便会调用execve函数簇执行新的任务,随后执行exit相关函数退出。而父进程则通常会调用wait函数等待子进程终止。 库函数exit(status)终止一进程,将进程占用的资源...
2018-03-30 11:04:26
1857
原创 文件IO缓冲
出于速度和效率考虑,系统IO调用和标准C语言库函数在操作磁盘文件时会对数据进行缓冲。1、文件IO的内核缓冲 read和write系统调用在操作磁盘文件时不会直接发起磁盘访问,而仅是在用户空间缓冲区和内核缓冲区之间复制数据。 write调用后会立即返回,在后续某个时刻内核才会将缓冲区中的数据写入磁盘,即系统调用和磁盘操作并不同步。如果在此期间,另一进程试图读取文件的这几个字节,那...
2018-03-17 15:27:09
545
原创 文件IO
一、概述 所有执行I/O操作的系统调用都以文件描述符,一个非负整数来指代打开的文件。文件描述符用以表示所有类型的已打开文件,包括管道,FIFO,socket,终端,设备和普通文件。本文主要介绍IO相关的接口。二、通用接口 通常,shell会替所有程序打开三种标准的文件描述符。如下表:文件描述符 用途 POSIX名称 stdio流0标准输入...
2018-03-17 15:25:40
309
原创 进程
定义:进程是由内核定义的抽象的实体,并为该实体分配用以执行程序和各项系统资源。从内核角度看,进程由用户内存空间和一系列内核数据结构组成,其中用户内存空间包含了程序代码及代码所使用的变量,而内核数据结构则用于维护进程状态信息。1、进程内存布局每个进程所分配的内存由多个部分组成,通常称之为段,主要有以下段:文本段 文本段包含进程运行的机器语言指令。具有只读属性,防止被意外修改。...
2018-03-12 08:59:01
223
原创 多个数组的排列组合
前言:本文旨在记录工作中遇到的一个算法问题,有参考其它地方,但已找不到出处,见谅。问题:有一组数组,数组个数不定,每个数组的元素个数不定,从每个数组中取一个元素组成一个新的数组,需要求出所有的可能组合。思路:因为数组个数及元素个数都不定,显然不能用循环,因此只能用递归实现。代码:#include<iostream>#include<vector>using names...
2018-02-24 10:24:37
3988
1
原创 通讯录T9搜索算法实现
通讯录T9搜索算法引言:本人是做车机的,由于项目需要,手机与车机通过蓝牙连接后,需要在车机上实现T9键盘的通讯录搜索功能,算法实现参考了网上的一些想法,但是代码每一行都是自己写的,没有参考过其他人的代码,本人深信自己实现比看懂别人的代码来得快。算法原理:T9键盘相信大家都有用过,每个数字键上有0个,3个或4个字母,最常规的想法是将所输入的数字所对应的所有组合罗列出来,再进行
2017-07-13 15:39:32
2853
原创 OpenCV学习笔记七:几何变换
介绍简单的图像几何变换,主要包括缩放,移动,旋转,仿射变换,透视变换等一、扩展缩放 扩展缩放只改变图像的尺寸大小。OpenCV提供了函数resize()可以实现这个功能。可以通过指定缩放因子也可以直接指定尺寸来设置图像的大小。扩展缩放时,可以选择不同的插值方法,扩展时推荐使用INTER_CUBIC和INTER_LINEAR,缩放时推荐使用INTER_AREA。默认情况下,扩展和缩放使用的都是INT
2017-04-04 21:38:08
836
原创 OpenCV学习笔记六:直方图(2)
一、反投影响直方图查找物体直方图反向投影可以用来做图像分割,或者在图像中找寻我们感兴趣的部分。简单来说,它会输出与输入图像同样大小的图像,其中的每一个像素值代表了输入图像上对应点属于我们感兴趣的目标图像的概率。输出图像中像素值越高(越白)的点就越可能代表我们要搜索的目标。
2017-03-26 14:55:06
447
原创 局部加权线性回归
线性回归的一个问题是可能出现欠拟合现象。显而易见,模型欠拟合就不能取得好的预测效果,一个常见的解决方法是局部加权回归。该算法的思想是给待预测点附近的每一个点赋予一定的权重(离待预测点越近权重越大,越远权重越小,即以待预测点附近点的一个子集来进行普通的线性回归) 普通线性回归与局部加权线性回归的区别在于,普通线性回归是选择合适的参数θ\theta最小化∑i(y(i)−θTx(i))\sum_{
2017-03-22 23:15:29
954
原创 OpenCV学习笔记五:直方图
图像由不同颜色值的像素组成,像素值在图像中的分布情况是图像的一个重要特征。一、计算图像的直方图直方图是一个简单的表,它给出了图像中各个像素值的数目(归一化后则为相应的比例),在OpenCV中可以使用cv::calcHist计算图像的直方图,这是一个通用函数,可以计算一张或一组任意像素类型的多通道图像。void calcHist(const Mat* arrays, int narrays, cons
2017-03-20 21:39:00
437
原创 线性回归
回归问题的目标是在给定N维输入变量xx的情况下,预测一个或多个连续目标变量的值。回归问题中最简单的就是线性回归,即目标变量和输入参数之间的关系是线性关系,许多非线性回归问题可以通过在线性回归的基础上引入层级结构或高维映射得到,因此线性回归是许多回归问题的基础,函数模型为:hθ(x)=θ0+θ1x1+θ2x2+......θnxnh_\theta(x) = \theta_0 + \theta_1x_1
2017-03-14 20:56:58
544
原创 OpenCV学习笔记四:绘图
1、利用函数绘图函数原型:1、直线void line(Mat& img, Point pt1,Point pt2, const Scalar& color, int thickness=1, int lineType=8,int shift=0)img – 图像.pt1 – 起点.pt2 – 终点.color – 颜色.thickness – 线宽.lineType – 线型(4联通,8
2017-03-12 22:11:14
522
原创 OpenCV学习笔记三:视频读取
为了处理视频,需要读取视频的每一帧,OpenCV提供了一个非常易用的框架以读取视频文件或从摄像头中读取。一、读取视频文件读取视频文件,只需要创建VideoCapture实例,然后循环读取并处理每一帧就行了。示例#include#include#include using namespace std;using namespace cv;int main(){
2017-03-09 20:05:27
709
原创 OpenCV学习笔记二:操作像素
一、存取像素值Mat的成员函数at(int x,int y)用于存取第x行,第y例的像素值。存取像素值时必须知道图像的数据类型,因此at函数实现为模板函数,调用时需指定类型,例如对单通道图和彩色图://注:指定的数据类型一定要与图像的实际类型吻合//单通道image.at< uchar >(x,y) = 255;//双通道image.at<Vec3b>(x,y)[channel] = 255
2017-03-08 19:26:12
619
原创 OpenCV学习笔记一:图像基础操作
一、图像的读取、显示和保存1、Mat imread(const string& filename, int flags=1)filename:读入图像的完整路径flags:读入图像的方式CV_LOAD_IMAGE_GRAYSCALE:单通道灰度图CV_LOAD_IMAGE_COLOR:三通道彩色图CV_LOAD_IMAGE_UNCHANGED保持不变Mat image = imread("i
2017-03-07 20:27:34
722
原创 openCV-Python笔记二:视频捕获
一、从摄像头捕获视频从摄像头捕获视频,应先创建VideoCapture对象,参数为设备索引号,对于笔记本电脑,传0表示使用其内置摄像头。
2016-08-10 23:20:08
12111
1
原创 openCV-Python笔记一:图像的读取、显示和保存
使用cv2.imread(),cv2.imshow(),cv2.imwrite()读取、显示和保存图像
2016-08-02 20:52:46
41722
2
原创 iOS图表绘制 - YMGraphView
YMGraphView用于图表绘制,可作散点图,饼图,柱状图,折线图等。可以自动处理坐标问题,只需将所需作图的点封装进数组即可。
2016-07-26 10:02:05
555
HTML5权威指南
2015-10-11
精通Matlab与C C++混合程序设计
2014-11-07
ARM体系结构与编程
2014-11-07
Python网络编程基础
2014-11-07
c++编程思想第二卷中文版
2013-04-23
算法导论Introduction to Algorithms
2013-04-23
TCPIP协议及网络编程技术
2013-03-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人