自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

转载 相机尺寸(变换)

1英寸=2.54厘米1/2.3英寸CCD相机传感器,对角线约1.1厘米。宽:8.8mm;高:6.6mm。(近似值,仅供参考)所谓的 1/2.7,1/2.5,1/1.8,1/1.7,1/1.6,2/3等,里面的分子1是一个标准,分母越大,CCD越小。所以,你说的尺寸中2/3英寸是最大的,到底有多大呢?衡量比例必须有一个标准,这个标准是沿用最早CCD应用在摄像机上的标准,指长12.8m

2017-10-14 20:56:10 6277

原创 摄像头测距原理与代码实现

外界3D影像投射到摄像头传感器的原理其实就是针孔成像原理。针孔成像原理,如图所示:       f为摄像头的焦距,c为镜头光心模型的主要依据公式为f/d=h/H,设物体所在平面与相机平面的距离为d,物体实际高度为H,在传感器上的高度为h根据这个模型,我们就能求出目标物体与我们的摄像头平面的距离。分两种情况,但是这两种情况的条件都是假设实际物体与摄像机所在平面平行。一

2017-10-14 20:15:11 16639 1

原创 关于linux socket通讯的accept函数的第三个参数剖析

第三参数是指struct sockaddr这个结构体的大小,socklen_t 是unsigned int类型,这个变量是需要初始化的,并不是函数填充返回的变量,当有客户端连接请求时,函数会根据addrlen这个参数的值的大小往addr所指向的地址里写信息,值的大小会影响到addr被填充的正确与否。

2017-06-15 21:18:11 3986

原创 uboot内核传参—cmdline常用参数

---格式简介(1)格式就是由很多个项目用空格隔开依次排列,每个项目中都是项目名=项目值(2)整个cmdline会被内核启动时解析,解析成一个一个的项目名=项目值的字符串。这些字符串又会被再次解析从而影响启动过程。---root=(1)这个是用来指定根文件系统在哪里的(2)一般格式是root=/dev/xxx(一般如果是nandflash上则/dev/mtd

2017-04-21 20:26:23 3893

原创 并发式IO的解决方案---非阻塞式、多路复用和异步通知(异步IO)

---非阻塞式IO阻塞式读取键盘和鼠标:// 读取鼠标 int fd = -1; char buf[200]; fd = open("/dev/input/mouse1", O_RDONLY); if (fd 0) { perror("open:"); return -1; } memset(buf, 0, sizeof(buf)); printf("before

2017-04-13 21:12:39 370

原创 linux信号处理之signal、sigaction、alarm、pause函数

信号相关的东西都在  /usr/include/singnal.h里各种信号的定义的都在 /usr/include/i386-linux-gnu/bits/signum.h        3.5.2.常见信号介绍(1)SIGINT 2 Ctrl+C时OS送给前台进程组中每个进程(2)SIGABRT 6 调用abort函数,进程异常终止(3)SIGPO

2017-04-13 21:09:54 1455

原创 让进程不被多次重复运行(linux编程小技巧)

---让程序不能被多次运行---问题(1)因为守护进程是长时间运行而不退出,因此./a.out执行一次就有一个进程,执行多次就有多个进程。(2)这样并不是我们想要的。我们守护进程一般都是服务器,服务器程序只要运行一个就够了,多次同时运行并没有意义甚至会带来错误。(3)因此我们希望我们的程序具有一个单例运行的功能。意思就是说当我们./a.out去运行程序时,如果当前还没有这个程序的进

2017-04-13 21:08:00 8491 5

原创 linux之守护进程与操作编程

---常见守护进程(1)syslogd,系统日志守护进程,提供syslog功能。(2)cron,cron进程用来实现操作系统的时间管理,linux中实现定时执行程序的功能就要用到cron。---编写简单守护进程---任何一个进程都可以将自己实现成守护进程---create_daemon函数要素(1)子进程等待父进程退出(2)子进程使用setsid

2017-04-13 21:06:18 235

原创 linux之进程详解与操作编程

---程序终止(1)正常终止:return、exit、_exit(2)非正常终止:自己或他人发信号终止进程---atexit注册进程终止处理函数(1)实验演示(2)atexit注册多个进程终止处理函数,先注册的后执行(先进后出,和栈一样) atexit(func1);(2)return、exit和_exit的区别:return和e

2017-04-13 20:58:21 234

原创 自己制作静态和动态链接库并使用

自己制作静态链接库并使用(1)第一步:自己制作静态链接库    首先使用gcc -c只编译不连接,生成.o文件;然后使用ar工具进行打包成.a归档文件    库名不能随便乱起,一般是lib+库名称,后缀名是.a表示是一个归档文件注意:制作出来了静态库之后,发布时需要发布.a文件和.h文件。    gcc aston.c -o aston.o -c    ar -rc lib

2017-04-11 10:41:35 713

原创 常用字符串处理函数

4.6.8.4、函数库中库函数的使用(1)gcc中编译链接程序默认是使用动态库的,要想静态链接需要显式用-static来强制静态链接。(2)库函数的使用需要注意3点:第一,包含相应的头文件;第二,调用库函数时注意函数原型;第三,有些库函数链接时需要额外用-lxxx来指定链接;第四,如果是动态库,要注意-L指定动态库的地址。4.6.9.3、常用字符串处理函数(1)C库中字符串处理

2017-04-11 10:40:28 291

原创 linux系统中的时间API和函数库

GMT时间是以前使用的,近些年来越来越多的使用UTC时间。关于时间的计算,可以参考:http://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089456.htmllinux系统中的时间函数---jiffies的引入jiffies是linux内核中的一个全局变量,这个变量用来记录以内核的节拍时间为单位时间长度的

2017-04-10 21:37:34 2273

原创 安装交叉编译工具链

---交叉编译工具链的安装    步骤1:打开虚拟机,在/usr/local/下创建/usr/local/arm文件夹    步骤2:先将安装包从Windows中弄到linux中去。可以用共享文件夹,也可以用Samba,也可以cuteftp。    步骤3:解压。tar -jxvf arm-2009q3.tar.bz2    到此相当于程序已经安装完毕,真正的应用程序安装在/u

2017-04-09 13:21:42 477

原创 ssh配置与连接

ubuntu内安装openssh:(sudo apt-get install openssh-server)如果报错提示依赖错误,可以参考:http://www.cnblogs.com/mliudong/p/4094519.html(1)将Ubuntu设置成桥连的方式(两处)   (桥连到有线网卡)    将/etc/network/in

2017-04-09 12:08:05 508

转载 Linux重要目录详解

Linux重要目录详解/ 根目录,第一层目录,所有其他目录的根,一般根目录下只存放目录。包括:/bin,/boot, /dev, /etc, /home, /lib, /mnt, /opt, /proc, /root, /sbin, /sys, /tmp, /usr, /var.我们先来简单介绍各个目录的作用:/bin:/usr/bin: 可执行二进制文件的目录,如

2017-04-09 12:06:14 340

转载 linux压缩与解压缩

tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。 -z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 

2017-04-09 12:03:31 209

原创 linux常用指令整理

**(回车)**liunx下的回车键:“\n”windos下的回车键:"\r\n"**(退格)**:“\b”/abc/123/def.txt 是linux绝对路径abc/123/def.txt 不是linux绝对路径 (1) ls(list,列表)作用:使用列表把当前文件夹下所有文件显示出来ls -a 显示所有文件,包括隐藏文件ls -l 以详细

2017-04-09 11:59:20 291

原创 大小端

高字节对应高地址(大端模式)、高字节对应低地址(小端模式)union myUnion{int a;char b;}int is_little_endian(void)       //用共用体的方法写大小端检测     //如果是小端模式就输出1,如果是大端模式就输出0{union myUnion u1;u1.a=1;return u1.b;}int

2017-04-09 11:55:34 2634

原创 函数指针与typedef

---函数指针与typedef假设我们有个函数是:void func(void); 对应的函数指针:void (*p)(void); 类型是:void (*)(void);函数名和数组名最大的区别就是:函数名做右值时加不加&效果和意义都是一样的;但是数组名做右值时加不加&意义就不一样。写一个复杂的函数指针的实例:譬如函数是strcpy函数(char *strcpy(ch

2017-04-09 11:45:31 521

转载 存储类、作用域、生命周期、链接属性的关系

---linux下C程序的内存映像代码段、只读数据段(1)对应着程序中的代码(函数),代码段在linux中又叫文本段(.text)(2)只读数据段就是在程序运行期间只能读不能写的数据,const修饰的常量有可能是存在只读数据段的(但是不一定,const常量的实现方法在不同平台是不一样的)数据段、bss段(1)数据段存:1、显式初始化为非0的全局变量;2、显式初始化为非0的sta

2017-04-09 11:25:28 304

原创 堆内存杂记

按需分配。大块内存:堆内存管理者总量很大的操作系统内存块,各进程可以按需申请使用,使用完释放。程序手动申请&释放:手工意思是需要写代码去申请malloc和释放free。脏内存:堆内存也是反复使用的,而且使用者用完释放前不会清除,因此也是脏的。临时性:堆内存只在malloc和free之间属于我这个进程,而可以访问。在malloc之前和free之后都不能再访问,否则会有不可预料的后果。

2017-04-09 11:19:31 209

转载 双链表

---有效数据+2个指针的节点(双链表)(1)单链表的节点 = 有效数据 + 指针(指针指向后一个节点)(2)双向链表的节点 = 有效数据 + 2个指针(一个指向后一个节点,另一个指向前一个节点)---双链表的封装和编程实现    // 双链表的节点    struct node     {        int data;                   

2017-04-09 11:16:30 260

转载 单链表

(1)时刻谨记:链表就是用来解决数组的大小不能动态扩展的问题,所以链表其实就是当数组用的。直白点:链表能完成的任务用数组也能完成,数组能完成的任务用链表也能完成。但是灵活性不一样。(2)简单说:链表就是用来存储数据的。链表用来存数据相对于数组来说优点就是灵活性,需要多少个动态分配多少个,不占用额外的内存。数组的优势是使用简单(简单粗暴)。// 构建一个链表的节点struct nod

2017-04-09 11:08:32 236

原创 共用体

struct mystruct{int a;char b;};// a和b其实指向同一块内存空间,只是对这块内存空间的2种不同的解析方式。// 如果我们使用u1.a那么就按照int类型来解析这个内存空间;如果我们使用u1.b那么就按照char类型// 来解析这块内存空间。union myunion{int a;char b;};s

2017-04-09 11:04:00 214

原创 指针数组、数组指针、二重指针

---指针数组与数组指针(1)指针数组的实质是一个数组,这个数组中存储的内容全部是指针变量。(2)数组指针的实质是一个指针,这个指针指向的是一个数组。int *p[5]; int (*p)[5];    int *(p[5]);总结:(第一步:找核心);(第二步:找结合);(第三步:继续向外结合直到整个符号完)。第一个:int *p[5]; 核心是p,p是一个数组,数组有5个元

2017-04-09 10:55:00 1289

原创 C位操作

——取反:与1异或^(或整体取反用~)  置1:与1位于|  清0:与0位于&——左移《  右移》——获取bit3~bit7为1,同时bit23~bit25为1,其余位为0的数:((0x1f——获取bit4~bit10为0,其余位全部为1的数:~(0x7f---给定一个整型数a,设置a的bit3,保证其他位不变。a = a | (1或者 a |= (1---给定一个整形数a

2017-04-09 10:30:51 2480

原创 gcc结构体对齐

struct A a=      //gcc支持的一种结构体赋值方式,好处是可以单独赋值{                    //结构体变量对齐存放,所以a的大小为8字节    .a=4,    .b=555,}// 定义类型的同时定义变量,s1是一个变量。struct student{    char name[20];    int age;}s

2017-04-09 10:20:06 1795

apktool 反编译工具(windows版)

将这两个文件(apktool.jar&apktool.bat)移到到Windows目录(通常C://Windows),如果无权访问C://Windows,则可以将这两个文件放在任何位置,然后将该目录添加到环境变量系统PATH变量中 执行命令:apktool d xxx.apk,便可以将apk资源代码反编译到当前目录

2018-03-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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