自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

转载 Haaris角点检测

项目的一个问题:图像矩形检测,当然,一开始可能会想到霍夫变换,还有就是这个haaris角点检测。 haaris角点检测在一个或者是两个相机进行标定的时候常常用到,Opencv和matlab中都有现成的命令和程序可循。为了解角点检测的原理,自己动手查看资料并写matlab程序实现,相信这是记忆最快最深刻的方法。       角点的位置就是图像中在x和y方向变化都很大的那个交点处。为了

2015-11-30 14:53:58 2946

转载 UNIX网络编程——Posix共享内存区和System V共享内存区

Posix提供了两种在无亲缘关系进程间共享内存区的方法:(1)内存映射文件:先有open函数打开,然后调用mmap函数把得到的描述符映射到当前进程地址空间中的一个文件。(2)共享内存区对象:先有shm_open打开一个Posix IPC名字(也可以是文件系统中的一个路径名),然后调用mmap将返回的描述符映射到当前进程的地址空间。两种方法多需要调用mmap,差别在于作为mm

2015-11-29 17:23:56 1215

转载 信号量、互斥锁,读写锁和条件变量的区别

信号量强调的是线程(或进程)间的同步:“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在sem_wait的时候,就阻塞在那里)。当信号量为单值信号量是,也可以完成一个资源的互斥访问。有名信号量:可以用于不同进程间或多线程间的互斥与同步  创建打开有名信号量  sem_t *sem_open(const char *name

2015-11-29 16:24:36 543

转载 System V信号量

System V 信号量在内核中维护,其中包括二值信号量 、计数信号量、计数信号量集。二值信号量 : 其值只有0、1 两种选择,0表示资源被锁,1表示资源可用;计数信号量:其值在0 和某个限定值之间,不限定资源数只在0 1 之间;计数信号量集 :多个信号量的集合组成信号量集创建一个信号量或访问一个已经存在的信号量集。int semget(key_t key, int nsems

2015-11-29 16:05:36 307

原创 UNIX网络编程——Posix信号量

信号量(semaphore)是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语。信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。Posix信号量分为有名信号量和无名信号量(也叫基于内存的信号量)。

2015-11-27 16:21:33 247

原创 UNIX网络编程——记录上锁

记录锁是读写锁的一种扩展类型,可用于亲缘关系或无亲缘关系的进程之间共享某个文件的读与写。被锁住的文件通过文件描述符进行访问,执行上锁的操作函数是fcntl,这种类型的锁通常在内核中维护。  记录锁的功能是:一个进程正在读或修改文件的某个部分时,可以阻止其他进程修改同一文件区,即其锁定的是文件的一个区域或整个文件。记录锁有两种类型:共享读锁,独占写锁。基本规则是:多个进程在一个给定的字节上可

2015-11-27 15:12:04 311

原创 UNIX网络编程——读写锁

读写锁比起mutex具有更高的适用性,具有更高的并行性,可以有多个线程同时占用读模式的读写锁,但是只能有一个线程占用写模式的读写锁,读写锁的三种状态:1.当读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞2.当读写锁在读加锁状态时,所有试图以读模式对它进行加锁的线程都可以得到访问权,但是以写模式对它进行加锁的线程将会被阻塞3.当读写锁在读模式的锁状态时,如

2015-11-27 09:41:11 303

转载 如何配置gethub(linux)

1.First : 安装:ubuntu 下,终端输入命令:sudo apt-get install git-core git-gui git-docNext : 设置SSH Key检查是否已经有SSH Key。$cd ~/.ssh如果说没有这个目录,就直接看第三步备份生成一个新的SSH。$ssh-keygen -t rsa

2015-11-25 15:20:35 954

原创 UNIX编程——互斥锁和条件变量

在线程和进程的实现中,完成数据共享需要同步的,互斥锁和条件变量是很重要的组成部分。1.互斥锁互斥锁是用来保护临界区资源,实际上保护的是临界区中被操纵的数据,互斥锁通常用于保护由多个线程或多进程分享的共享数据。一般是一些可供线程间使用的全局变量,来达到线程同步的目的,即保证任何时刻只有一个线程或进程在执行其中的代码。

2015-11-24 16:41:48 600

转载 STL的底层实现和优缺点

1.STL的底层实现:STL底层数据结构实现C++ STL 的实现:1.vector      底层数据结构为数组 ,支持快速随机访问2.list            底层数据结构为双向链表,支持快速增删3.deque       底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(

2015-11-24 15:40:03 2096

原创 UNIX网络编程——System V 消息队列

消息队列可以认为是一个消息链表,System V 消息队列使用消息队列标识符标识。具有足够特权的任何进程都可以往一个队列放置一个消息,具有足够特权的任何进程都可以从一个给定队列读出一个消息。在某个进程往一个队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达。System V 消息队列是随内核持续的,只有在内核重起或者显示删除一个消息队列时,该消息队列才会真正被删除。对于系统中没个消

2015-11-24 10:20:14 511

原创 UNIX网络编程——Posix 消息队列

消息队列可以认为是一个消息链表,某个进程往一个消息队列中写入消息之前,不需要另外某个进程在该队列上等待消息的达到,这一点与管道和FIFO相反。消息队列是随着内核的持续性的,而管道只是随着进程的持续性。这意味着管道在进程结束时,留在管道内的数据将会被丢弃。Posix消息队列与System V消息队列的区别如下:1. 对Posix消息队列的读总是返回最高优先级的最早消息,对Syst

2015-11-23 09:28:59 271

原创 UNIX编程——管道和FIFO

进程间的通信有三种形式:管道/FIFO、Posix(Portable Operating System Interface,可移植操作系统接口)消息队列、System V 消息队列,先来介绍第一种通信方式,也是最开始的一种通信方式:管道/FIFO1.对于管道而言,它的局限在于没有名字,从而只能有秦缘关系的进程使用,但是后面有发展出FIFO(这种又被称为有名管道),一般使用的是read和writ

2015-11-21 20:43:06 991

原创 在java中高效复制一个文件夹里面所有的内容

在接的一个外包项目里面:有一个二维码扫描仪的二次开发的项目,在这里面有个问题就是需要将一个比较大的文件夹里面的所有内容复制到另外一个文件夹中,由于文件夹里面的内容还比较多,所以需要一点高效的方法。当然传统的方法是按照字节去复制一个可以直接copy的文件,这样的速度还是挺慢的,对于我们那个200M的文件,大概需要2min的时间,这个有点长,公司那边希望时间短点,所以看到一个比较高效的方法,留着以

2015-11-21 09:42:39 7197

原创 C++面试——linux常用指令

文件系统操作命令: 1. cat:可以显示文件的内容(经常和more搭配使用),或将多个文件合并成一个文件。 2. chgrp:用来改变文件或目录所属的用户组,命令的参数以空格分开的要改变属组的文件列表,文件名支持通配符,如果用户不是该文件的所有者,则不能改变该文件的所属组。 3. chmod:用于改变文件或目录的访问权限,该命令有两种用法:一种是使用图形化的方法,另一种是数字设置法。

2015-11-21 09:35:58 510

原创 c++面试——数据库基本知识

1.表的创建和删除用的是create和delete2.数据库的三大完整性:实体完整性、参照完整性、用户定义完整性实体完整性是指:表的主键不能为空。参照完整性:除主键外的外键可以为空,但不能为错误。用户定义完整性:用户自己定义的3.SQL的插入语句:insert into 表名(键名)values(键值)4.检索数据:用select来改变标题名:select name as

2015-11-20 16:11:50 730

原创 Unix网络编程——简介

1.IPC 进程间通信方式:1.管道 2.System V 消息队列 3.Posix消息队列 4.远程过程调用2.保持进程间的同步操作:1.文件系统 2.记录上锁 3.System V信号量  4. Posix 信号量 5.互斥锁  6.读写锁3.进程间的信息共享:1.穿过内核,访问文件系统的文件信息  2.共享驻留于内核的信息   3.共享内存区4.IPC对象的持续性:1.随着文件系

2015-11-20 10:52:09 441

原创 计算机网络——应用层

1.域名系统DNS1.域名到IP地址的解析过程:当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS的请求报文中,以UDP用户数据报方式发给本地域名服务器。本地域名服务器在查找到域名后,将相应的IP地址返回回答报文中。应用进程获取相应的IP地址后开始通信。2.文件传输协议(FTP)、简单文件传输协议(TFTP)TFTP

2015-11-18 16:05:06 328

原创 计算机网络——运输层

这里要讨论TCP/IP协议中最重要的两个协议TCP/UDP,而TCP的各种机制也是相对比较复杂的,也是面试常考的。

2015-11-17 16:47:28 495

原创 计算机网络——数据链路层、网络层

1.数据链路层1.数据链路层的两种类型:点对点信道(一对一),广播信道(一对多)在数据链路层中,最重要的概念就是帧,数据是一帧一帧在链路中进行传输的,在这层的协议比较多,但是有三个基本问题是:封装成帧,透明传输,差错检测。2.为了解决非ASCII码的数据进行传输可能会出现非透明传输,引进了字节填充的方法,在可能出现“SOH”或“EOT”的前面插入转义字符“ESC”。3.现在用的差错

2015-11-17 11:00:51 840

原创 计算机网络——因特网

1.在网络的边缘系统中运行的程序之间的通信方式通常可以划分为:客户服务器方式(c/s),对等方式(p2p)。客服服务器的一种特殊形式是浏览器服务器(B/S)。2.Internet的核心组成部分是路由器,因为路由器实现了分组交换。3.分组交换的主要特点:分组交换采用储存转发技术,我们把要发送的数据称为一个报文,在发送报文之前,把较长的报文分成一个个更小的等长数据段,每个数据段加上控制信息就成

2015-11-17 09:58:27 504

原创 剑指offer(六)

1.反转链表#include using namespace std;struct List{ int data; List* next; List(int num) :data(num),next(NULL){};};List* init_list(int *a,int n){ List *head=new List(a[0]); List *q=head; for

2015-11-12 14:45:55 221

原创 剑指offer(五)

1.打印1到最大的N位数(对N个位置0到9进行全排列)

2015-11-07 09:43:33 208

原创 剑指offer(四)

1.菲波那切数列:(循环实现,非递归)#include #include using namespace std;int Feb(int n){ if(n==0) return 0; if(n==1) return 1; int sum=0,last1=0,last2=1; for (int i=1;i<n;i++) { sum=last1+last2; last2

2015-11-07 09:42:13 285

原创 剑指offer(三)

1.链表从后面往前面打印链表#include #include #include #include using namespace std;void revert_list_print(list l1){ stack l2; for (list::iterator ite=l1.begin();ite!=l1.end();ite++) l2.push(*ite); whi

2015-11-05 15:48:35 317

转载 什么是堆和栈,它们在哪儿

问题描述编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看)?在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗?它们的作用范围是什么?它们的大小由什么决定?哪个更快?

2015-11-05 11:39:22 271

原创 剑指offer(二)

1.在32位系统中,输出结果:#include using namespace std;int getsize(int a[]){ return sizeof(a);}int main(){ int a[]={1,2,3,4,5}; int t1=sizeof(a);//20 int *b=a; int t2=sizeof(b);//4 int t3=getsize(a)

2015-11-05 11:10:15 213

原创 剑指offer笔记(一)

1.定义一个空的类型,里面没有任何变量和成员函数,对该类型求sizeof,得到的结果是1,如果加构造和析构函数,结果还是1,如果是虚析构的话,就是4.(32位的系统)32位系统,vc编译器中,short占 2 字节,int 、float、long 都占 4 字节,只有double 占8 字节2.程序题:#include using namespace std;cl

2015-11-05 09:32:11 255

原创 c++的知识点

1.在类内申明函数是必须的,而定义则是可选的,在类内定义的函数默认为inline函数。

2015-11-04 15:32:58 226

原创 c陷阱和缺陷——链接、预处理、库函数、可移植性缺陷

1.链接1.命名冲突和static修饰符:如果若干个函数需要共享一组外部对象,可以将这些函数放到一个源文件中,把它们需要用到的对象都在同一个源文件中以static修饰。static同时也适合函数,如果函数g被函数h调用,

2015-11-01 16:17:21 327

原创 c陷阱与缺陷——陷阱

1.词法陷阱例1:if(x=y) break;  这就话的意思就是把y赋值x,判断x是否为0,实则是在判断y是否为0;例2:while(c=' '|| c=='\t' || c=='\n')这句话的意思就是' '|| c=='\t' || c=='\n‘赋值给c,而有’ ‘符本身就是不为0的数,所以这就是while(1)的意思。例3: int x=4,*p=new int ;  *p=

2015-11-01 15:43:36 345

空空如也

空空如也

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

TA关注的人

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