进程间通信之-信号量semaphore--linux内核剖析(十) 注: 本文转自http://blog.csdn.net/gatieme信号量什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌...
底层文件I/O和ANSI标准I/O的区别 一、先来了解下什么是文件I/O和标准I/O:文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O)。不带缓存指的是每个read,write都调用内核中的一个系统调用。也就是一般所说的低级I/O——操作系统提供的基本IO服务,与os绑定,特定于linix或unix平台。标准I/O:标准I/O是ANSI C建立的一个标准I/O模型,是一个标准函数包和stdio.h头
Qt使用中遇到的问题及解决方案 1. 解决QSqlDatabasePrivate::removeDatabase: connection ‘myConnection’ is still in use, all queries will cease to work的问题该问题主要是因为没有关闭之前的数据库连接,然后又需要创建新的数据库连接导致。解决方案:必须释放该连接的所有查询,即删除所有与该连接有关的query;同时在释放该连接时
笔试题-计算图中黑色瓷砖数(深度优先遍历的使用) 题目:小明站在一间贴满黑白相间瓷砖的房间里,小明站在黑色瓷砖处,小明处于好奇,希望每次只向相邻黑色瓷砖移动,现在小明想知道自己最多可以踩到多少块黑色瓷砖。输入描述:第一行输入两个整数M、N,分别表示房间的长宽,也就是横竖瓷砖的数目从第二行开始接下来的M行N列输入瓷砖类型,*表示黑色瓷砖,.表示白色瓷砖,@符号表示小明当前所在的黑色瓷砖当输入的M,N都为0时,结束输入。代码:
笔试面试中指针的那些事 1.指针的大小如下代码: int main(){ char\* p = "hello"; cout<<sizeof(p)<<endl; } 请问输出是多少? 答:此处考点容易和字符串大小或者字符串长度混淆,此处sizeof求取的是指针p本身所占用的大小,我们知道指针保存的是地址值,那么在x86平台下,地址值占用4个字节的空间大小;在x64平台下,地址值占用8个字节的大小。默认是x
Qt中重定义的解决方案 利用Qt Creator开发时可能会遇到明明只是定义一次的变量或函数,偏偏报错重定义了!可能原因:1. 变量真正重定义了2. 文件重复包含3. 自己手动删除了旧文件,使用新文件替换了,但是pro文件中并没有更改!!!也就是说在pro文件中对某个文件多次包含导致了变量或者函数重定义了!这是最坑的!注意:删除项目文件时记得查看pro文件中是否同时删除了对应项!
C/C++常见笔试面试题之常考关键字 对笔试面试中C/C++常考关键字进行了整理,包括volatile、const、static、extern、new/delete和malloc/free等。希望这些知识点有帮助!
常见笔/面试题-之构造函数和析构函数 常见笔/面试题-之构造函数和析构函数构造函数是用来初始化一个对象的,而析构函数的作用则是释放对象占用的空间。如果将虚函数、构造函数和析构函数结合起来会有怎么样的效果呢?构造函数可以是虚函数吗?答:构造函数不可以是虚函数!基于以下几点原因:(1)构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间动态确定实际类型的。在构建一个对象时,构造函数执行期间,对象未完全构建完成,编译器无法知
C++虚继承与虚基类 C++的三大特性:封装,继承,多态。继承的目的是就是为了代码重用,避免的重复代码的编写。继承分为单继承和多继承,单继承就是每次继承的基类只能有一个,属于一对一的关系;多继承则是子类可以同时继承自多个基类,拥有多个基类的特性,属于一对多的关系!虚继承的定义在多继承中派生类不能多次直接继承同一个基类,但是派生类的直接基类可能派生自同一个基类。例如:定义一个雇员类Employee作为顶层基类;另
联编与多态(编译时多态和运行时多态) 联编在函数调用时,系统必须知道函数调用实际对应的函数实现(函数体)的地址,并把调用跟函数入口地址关联起来。这个过程称为联编,也叫作绑定(binding)。在编译的时候就能够确定函数的入口地址,这种联编方式叫做静态联编。由于这个过程是在编译时完成的,早于程序的执行,所以又叫做早期绑定/早期联编。我们最初使用(非虚函数)的无论是普通的全局函数,还是作为类成员的成员函数,或是运算符虫子啊函数
C/C++程序员应聘常见面试题深入剖析 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到 strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。 分
解决linux下cannot execute binary file: Exec format error 对于linux下cannot execute binary file: Exec format error明确说明是执行文件格式错误,可能情况:1.使用错误的命令,如gcc -c hello.c -o hello,这样得到的是.o文件,而不是可执行程序,此时使用./hello就会报上述错误!此时应改用gcc hello.c -o hello就可以啦!2.如果不是上述错误,就可能是版
二叉树中和为某一值的路径 题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶节点所经过的结点形成一条路径。二叉树的定义如下:struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right;};二叉树中我们最为熟悉操作莫过于各种遍历了,前序遍历(根左右),中序遍历(左根右)
ffmpeg多种码率控制方式的实现 ffmpeg是我们进行视频编解码常用的工具,而对于ffmpeg中编码时对码率的控制方式一直没找合适的教程,无意中在stackoverflow上发现了答案,在此进行总结备忘。视频编码器常用的码率控制方式包括abr(平均码率),crf(限制码率),cqp(固定质量),ffmpeg中AVCodecContext显示提供了码率大小的控制参数,但是并没有提供其他的控制方式。ffmpeg中码率控制方式分为
支持opencv的Mat图像采用x264等编码器编码的类 虽然在opencv中提供了videoWriter类可以将opencv图像编码成视频,但是由于自带的videoWriter支持的格式都是未经压缩的,具体参考如下:CV_FOURCC('P', 'I', 'M', '1') = MPEG-1 codecCV_FOURCC('M', 'J', 'P', 'G') = motion-jpeg codecCV_FOURCC('M', 'P', '
opencv中的Kmeans使用示例 kmeans是非常经典的聚类算法,至今也还保留着较强的生命力,图像处理中经常用到kmeans算法或者其改进算法进行图像分割操作,在数据挖掘中kmeans经常用来做数据预处理。opencv中提供了完整的kmeans算法,其函数原型为:double kmeans( InputArray data, int K, InputOutputArray bestLabels, TermCriteria
机器学习中常见的几种最优化方法 1. 梯度下降法(Gradient Descent)2. 牛顿法和拟牛顿法(Newton's method & Quasi-Newton Methods)3. 共轭梯度法(Conjugate Gradient)4. 启发式优化方法 5. 解决约束优化问题——拉格朗日乘数法我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“
简单的python爬虫(爬取百度百科词条) 本文是针对慕课网关于python爬虫课程的总结记录!1、简介一个完整的爬虫架构包括:调度程序、url管理器、网页下载器、网页解析器。调度程序:即爬虫的主函数url管理器:url管理的功能就是管理未爬取的url和已经爬取的url,常见的实现方式有:内存(使用python的set实现)、关系数据库、缓存数据库(菲关系型数据库,如redis)网页下载器:将互联网上的url对应的网页下
C++11新特性学习笔记(二) C++11引入了lambda(匿名函数),这样就可以在一个函数只需调用一次的地方使用了,类似内联函数。C++11 的 lambda 表达式规范如下:[ capture ] ( params ) mutable exception attribute -> ret { body }(1)[ capture ] ( params ) -> ret