- 博客(35)
- 资源 (5)
- 收藏
- 关注
原创 c++运算符的重载
(1)只能使用成员函数重载的运算符有:=、()、[]、->、new、delete。(2)单目运算符最好重载为成员函数。(3) 对于复合的赋值运算符如+=、-=、*=、/=、&=、!=、~=、%=、>>=、<<=建议重载为成员函数。(4) 对于其它运算符,建议重载为友元函数。运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说
2016-06-29 07:39:20 577
原创 C++中32位单精度浮点数有效数字是多少位?
单精度浮点数的有效位数是7位。双精度浮点数的有效位数是16位一个浮点数由三部分组成:符号位S、指数部分E(阶码)以及尾数部分M。单精度浮点数(float)总共用32位来表示浮点数,其中尾数用23位存储,加上小数点前有一位隐藏的1(IEEE754规约数表示法),`2^(23+1) = 16777216。因为 10^7 < 16777216 < 10^8,`所以说单精度浮点数的有效位数是7位。考
2016-06-29 07:36:00 12837
原创 进程与线程的区别
线程是指进程内的一个执行单元,也是进程内的可调度实体。线程与进程的区别:(1)地址空间:进程内的一个执行单元,进程至少一个线程,他们共享进程的地址空间,而进程有自己独立的地址空间(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程资源(3)线程是处理器调度的基本单位,但进程不是(4)二者皆可并发执行 进程和线程都是操作系统的程序运行的基本单元,系统利用该基本单元实现系统对应用的
2016-06-29 07:02:48 358
原创 ImportError: cannot import name mkdtemp
问题: 以前是没问题的 今天突然python导入cv2和caffe却开始报错,如题。解决办法:pip install -U numpy更新numpy即可
2016-06-28 14:28:51 3198 1
原创 单缓冲 vs 双缓冲 处理数据时间计算方法
对于单缓冲:假定从磁盘把一块数据输入到缓冲区的时间为T,操作系统将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一块数据处理的时间为 C。由于T和C是可以并行的,当T>C时,系统对每一块数据的处理时间为M十T,反之则为M+C,故可把系统对每一块数据的处理时间表示为Max(C, T)+M。对于双缓冲:系统处理一块数据的时间可以粗略地认为是MAC(C, T)。如果C<T,可使块设备连续输入(图中
2016-06-28 07:07:07 9458
原创 柔性数组
对于变长数组和变长结构体,这是在C99才加入标准的。 对于变长数组,举个例子就能解释了:int main() { int n = 10; int arr[n];}对于变长结构体就比较复杂一点(也不算很复杂:))。很多人其实会有这种疑惑,就是为什么不用指针去代替变长结构体,比如:structNode{ intsize; char*data;//不用指针,二用柔性数组实
2016-06-28 07:03:29 470
原创 负数的二进制表示
1. 简单介绍:原码: 正数原码就是其二进制。 负数的原码就是其二进制,并将最高位作为符号位设为1。 eg: -1 原码为:1000 0001 复数进行运算时用补码表示 负数补码 = 负数原码不考虑最高符号位的原码的反码 + 1 eg: -1 的补码为:1111 1110(反码) +1 = 1111 11112. 详细介绍:在二进制码中,为了区分正负数,采用最高
2016-06-26 19:49:23 5860
原创 分区存储管理方法
首次适应法:从空闲 分区表 的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高 地址空间 保留大的空闲区。最佳适应算法:从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区的一种计算方法,这种方法能使碎片尽量小。
2016-06-25 08:54:42 2437
原创 不能声明为虚函数的情况
虚函数是为了实现动态绑定,不能声明为虚函数的有:静态成员函数 类外的普通函数 构造函数友元函数此外,还有一些函数可以声明为虚函数,但是没有意义,但编译器不会报错,如:赋值运算符的重载成员函数: 因为复制操作符的重载函数往往要求形参与类本身的类型一致才能实现函数功能,故形参类型往往是基类的类型,因此即使声明为虚函数,也把虚函数当普通基类普通函数使用。内联函数:内联函数目的是在代码中直接展
2016-06-22 07:46:41 373
转载 32位和64位系统区别及int字节数
一)64位系统和32位有什么区别? 1、64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。 什么是64位处理器?之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(C
2016-06-21 22:43:51 1056
原创 进程和线程的关系
线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程;进程和线程的关系:一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。资源分配给进程,同一进程的所有线程共享该进程的所有资源。线程在执行过程中,需要协作同步
2016-06-21 06:56:55 431
原创 临界资源 & 临界区
临界资源是指每次仅允许一个进程访问的资源。 属于临界资源的硬件有打印机、磁带机等,软件有消息缓冲队列、变量、数组、缓冲区等。 诸进程间应采取互斥方式,实现对这种资源的共享。 临界区每个进程中访问临界资源的那段代码称为临界区。一个临界资源可以对应多个临界区(right)显然,若能保证诸进程互斥地进入自己的临界区,便可实现诸进程对临界资源的互斥访问。为此,每个进程在进入临界区之前,应先对欲访问的临界资
2016-06-20 08:02:57 2105
原创 windows下运行caffe例子:cifar10图像训练生成caffemodel
硕士毕业论文第二点扯到了CNN上,准备用caffe框架来做,装好windows下caffe后运行了第一个经典例子LeNet :参考:http://blog.csdn.net/tianrolin/article/details/51434687 运行第二个cifar10例子时,不会写bat文件,运行也各种错误,这里总结一下我遇到的问题和解决办法。亲测有用! 一、数据集准备 到官网中下载cifar
2016-06-19 18:36:40 3614 4
原创 线程与进程共享的资源种类
线程占有的都是不共享的,其中包括:栈、寄存器、状态、程序计数器线程间共享的有:堆,全局变量,静态变量;进程占有的资源有:地址空间,全局变量,打开的文件,子进程,信号量、账户信息。
2016-06-18 09:28:55 916
原创 不发生死锁的设备最小数
题目: 某系统有 n 台互斥使用的同类设备,3 个并发进程需要 3,4,5 台设备,可确保系统不发生死锁的设备数 n 最小为?分析:假设3个进程分别为A,B,C,那么需要的最大的情况为:2,3,4此时再多一个资源就可以打破死锁的环境,所以为2+3+4+1=10详细说:极端状态下: 进程1(3台):申请到2台,无法工作; 进程2(4台):申请到3台,无法工作; 进程3(5台):申请到4
2016-06-17 08:30:50 10236 1
原创 C语言中short 到 int 的扩展
C语言中变量以补码形式存放在内存中,正数的补码与原码相同,负数求补码方式为(符号位不变,其余各位取反,最后末尾加1); 32位机器:int 32位,short 16位。 x = 127,正数,原码:0111 1111,补码:0111 1111,扩展到32位高位补0,结果为0000007FH; Y = -9,负数,原码:1000 1001,补码:1111 01
2016-06-16 23:12:26 2940
转载 C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)1、cin 2、cin.get() 3、cin.getline() 4、getline() 5、gets() 6、getchar()附:cin.ignore();cin.get()//跳过一个字符,例如不
2016-06-16 08:26:10 300
转载 C++中map操作
C++中map容器提供一个键值对容器,map与multimap差别仅仅在于multiple允许一个键对应多个值。 一、map的说明 1 头文件 #include 2 定义 map my_Map; 或者是typedef map MY_MAP; MY_MAP my_Map; 3 插入
2016-06-16 07:53:48 368
原创 虚拟内存 知识点整理
1.虚拟内存的大小虚存容量“极端情况下”受以下条件限制:内+外存总量计算机总线长度(地址寄存器位大小)故取1,2的最小值即为虚拟内存的大小 eg. 题目:段的逻辑地址形式是段号10位,段内地址20位,内存1MB,辅存10GB。那么虚拟存储器最大实际容量可能是解: 虚拟存储器最大实际容量= min(计算机地址,内存+辅存)。计算机地址= 2^ 10* 2^20=1024M 外存+辅存 =
2016-06-16 07:35:59 1959
转载 Char转为int时高位符号扩展的问题
代码示例: static get_utili(constchar*p){intutil;…while(isspace((int)*p))//跳过空格++p;util=(int)*p++;…}现象&后果: 当传入的参数p指向的内容为0x9A、0XAB等内容(最高位为1)时,得到的int型变量util的值将会出错,因为char会进行符号扩展,使得0x9A(十进制的154)变成了-102
2016-06-15 21:50:04 2856 1
原创 C++中的0长数组(柔性数组)
在标准C和C++中0长数组如charArray[0]是不允许使用的,因为这从语义逻辑上看,是完全没有意义的。但是,GUN中却允许使用,而且,很多时候,应用在了变长结构体中,如:StructPacket{Int state;Int len;Char cData[0]; //这里的0长结构体就为变长结构体提供了非常好的支持};首先对0长数组做一个解释:用途 :长度为0的数组的主要用途是为了满足需要变长
2016-06-14 09:09:43 669
转载 C++逗号运算符的作用
总的来说:逗号表达式没那么难,也很常用:逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中。详细介绍如下:C++将赋值表达式作为表达式的一种,使赋值操作不仅可以出现在赋值语句中,而且可以以表达式形式出现在其他语句(如输出语句、循环语句等)中。这是C++语
2016-06-13 19:30:35 8870
原创 公有、私有、保护总结
公用(public):访问权限最高;除派生类外,外部函数也可以直接访问(无论是成员变量还是成员函数)。私有(private):访问权限最低;只能是该类内部函数互相调用,派生类、外部函数都不能访问。保护(protect):访问权限中间;该类内部函数、派生类都能访问,外部类、外部函数不能访问 我们这样来记会更加容易一些,在继承时:不管采用哪种形式(public, protected或privat
2016-06-13 19:10:45 3689 1
原创 RAID磁盘阵列
RAID 0:无差错控制的带区组要实现RAID0必须要有两个以上硬盘驱动器,RAID0实现了带区组,数据并不是保存在一个硬盘上,而是分成数据块保存在不同驱动器上。在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能的,如果一个磁盘(物理)损坏,则所有的数据都无法使用。RAID 1:镜象结构当主硬盘损坏时,镜像硬盘就可以代替主硬盘工作。镜像硬盘相当于一
2016-06-13 08:31:18 334
原创 二维数组名与地址的对应
已知int a[3][4];则下列能表示a[1][2]元素值的是?在多维数组中,数组名是第一个数组的地址.注意这里a不是第一个元素的地址,而是第一个维数组(即a[0],a[0]是一个4元素的数组)的地址,a[0][0]才是表示的一维数组第一个元素的地址.数组名 + 1表示向下移一层. 本题中,a是一个三行四列的数组 *(a+1)表示第二行的首地址,和a[1]一样。 *(a+1)+
2016-06-11 08:55:13 6027
原创 进程状态改变及其原因
一次I/O操作结束 -> 由阻塞太进入就绪态 运行进程需作I/O操作 -> 应该是由运行态进入阻塞态 程序运行结束 -> 由运行态进去终止状态 出现了比现运行进程优先权更高的进程 -> 如果是抢占式系统,有可能从运行态进去就绪态
2016-06-10 08:59:23 3145
原创 进程与线程共享的内容整理
线程共享的内容包括:进程 代码段进程 数据段进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户 ID 与进程组 ID 线程独有的内容包括:线程 ID寄存器组的值线程的堆栈错误返回码线程的信号屏蔽码
2016-06-06 21:55:41 534
原创 进程三状态转换图
(1)运行:当一个进程在处理机上运行时,则称该进程处于运行状态。处于此状态的进程的数目小于等于处理器的数目,对于单处理机系统,处于运行状态的进程只有一个。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。 (2)就绪:当一个进程获得了除处理机以外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。就绪进程可以按多个优先级来划分队列。例如,当一个进
2016-06-06 07:42:25 12658
原创 位操心常见经典用法
位操作包括: 与 & 或 | 非(取反)~ 异或 ^ 左移 << 右移 >> 使用位操作实现常用功能1 快速判断偶数,判断最低位是0还是1即可,比求模运算快 x%2 != 0 // x正负都可以判断;不能用x%2 == 1,因为如果x为负奇数,x%2=-1 x&0x1 == 0 //最好最快的方法,使用与正负数都可 2 交换两个数,不用
2016-06-05 11:03:59 1550
原创 C与C++结构体的区别
C与C++结构体的区别。C中的结构体没有函数 但是C++的结构体可以有函数;C++结构体和类的区别C++的结构体可以被类取代,因为类相对于结构体 具有封装性等优势。C++中结构体与类的区别:结构体中的成员访问权限不声明时候默认是 公开的;而类默认 是私有的
2016-06-04 09:21:44 403
原创 死锁的产生、预防、以及接触方法整理,一目了然
产生死锁的4个必要条件:1.互斥条件2.请求和保持条件3.不可抢占4.循环等待条件预防死锁主要分为三种:1.破坏请求和保持条件2.破坏不可抢占条件3.破坏循环等待条件避免死锁同样属于事先预防的策略,但并不是事先采取某种限制措施,破坏产生思索的必要条件,而是在资源动态分配过程中,防止系统进入不安全状态,以避免发生死锁。 避免死锁的基本思想就是确保系统始终处于安全状态。最具有代表性的避免
2016-06-04 09:13:41 1070
原创 页面置换算法整理
地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。常见的置换算法有:1. 最佳置换算法(OPT)(理想置换算法,无法实现)这是一种理想情况下的页面置换算法,但实际上是不可能实现的。该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页将很
2016-06-03 08:39:43 575
原创 重载、覆盖、隐藏的区别
重载: 只有在 同一类定义中的同名成员函数才存在重载关系 ,主要特点是 函数的参数类型和数目有所不同 ,但 不能出现函数参数的个数和类型均相同 ,仅仅依靠返回值类型不同来区分的函数,这和普通函数的重载是完全一致的。另外,重载和成员函数是否是虚函数无关覆盖: 在派生类中覆盖基类中的同名函数,要求两个函数的参数个数、参数类型、返回类型都相同,且基类函数必须是虚函数。隐藏: 派生类中的函数
2016-06-03 08:27:49 350
原创 类的大小计算(sizeof())
class A{};//sizeof(A) =1; 空类大小为1class B{ char ch; int x;};//sizeof(B) =8; 1+3(内存补齐)+4 = 8class C{public: void Print(void){}};//sizeof(C) =1;类大小只与非静态成员变量和虚函数有关,与普通成员函数和构造、析构函数无关;类外空
2016-06-02 07:34:58 719
原创 LRU计算缺页方法
在一个请求页式存储管理中,一个程序的页面走向为 3、4、2、1、4、5、3、4、5、1、2,并采用 LRU 算法。设分配给该程序的存储块数 S 分别为 3 和 4,在该访问中发生的缺页次数 F 是 ?解:LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面上次被访问以来所经历的时间t,当需要淘汰一个页面时,选择现有页面中其t值最大的。以下用x表示缺
2016-06-02 07:22:39 18448 2
《Color Transfer Based on Normalized Cumulative Hue Histograms》代码实现
2015-04-16
opencv 摄像机标定程序 已调试成功 附带畸变图片
2014-11-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人