自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(221)
  • 资源 (5)
  • 收藏
  • 关注

原创 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 2939

转载 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 367

原创 虚拟内存 知识点整理

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 2854 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 8868

原创 公有、私有、保护总结

公用(public):访问权限最高;除派生类外,外部函数也可以直接访问(无论是成员变量还是成员函数)。私有(private):访问权限最低;只能是该类内部函数互相调用,派生类、外部函数都不能访问。保护(protect):访问权限中间;该类内部函数、派生类都能访问,外部类、外部函数不能访问 我们这样来记会更加容易一些,在继承时:不管采用哪种形式(public, protected或privat

2016-06-13 19:10:45 3677 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 12657

原创 位操心常见经典用法

位操作包括: 与 & 或 | 非(取反)~ 异或 ^ 左移 << 右移 >> 使用位操作实现常用功能1 快速判断偶数,判断最低位是0还是1即可,比求模运算快 x%2 != 0 // x正负都可以判断;不能用x%2 == 1,因为如果x为负奇数,x%2=-1 x&0x1 == 0 //最好最快的方法,使用与正负数都可 2 交换两个数,不用

2016-06-05 11:03:59 1549

原创 C与C++结构体的区别

C与C++结构体的区别。C中的结构体没有函数 但是C++的结构体可以有函数;C++结构体和类的区别C++的结构体可以被类取代,因为类相对于结构体 具有封装性等优势。C++中结构体与类的区别:结构体中的成员访问权限不声明时候默认是 公开的;而类默认 是私有的

2016-06-04 09:21:44 402

原创 死锁的产生、预防、以及接触方法整理,一目了然

产生死锁的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

原创 一道题讲清 小端模式和函数参数入栈

#include <stdio.h>int main(){ long long a = 1, b = 2, c = 3; printf("%d %d %d\n", a, b, c); return 0;}//输出是102,而不是123 1 printf()是一个库函数,C,C++中函数的参数是从右往左入栈的; 2 栈的生长方向是从高往低的 3 小端模式是低位存储

2016-05-31 07:41:05 413

原创 面向对象的五大基本原则-solid

面向对象五大基本原则,一个单词:立方体(solid),很好记!!!s( Single-Resposibility Principle ): 单一职责原则 一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。o( Open-Closed principle ): 开放封闭原则

2016-05-31 07:27:01 1658

转载 委托构造函数 (来自C++11)

委托构造函数delegating constructorHerb Sutter & Francis Glassborow1        问题的背景1.1     简介C++没有提供让一个构造函数去委托另一个构造函数执行构造操作的机制。这意味着不能(或不提倡)使用缺省参数,类的维护者不得不编写并维护多个构造函数。这会导致源代码和目标代码的重复,降低了可维护性(由于可能引起不一致

2016-05-31 07:17:27 10185

转载 修改const变量

一、结论声明:不同于C语言的const变量修改问题(可以通过指针间接修改const变量的值),这里只讨论C++ 里的const。C++ const 修饰符,表示常量,即如果以后保证不会修改则声明为const,否则若要修改,那一开始为什么还要声明为const呢?根据C++标准,对于修改const变量,属于:未定义行为(指行为不可预测的计算机代码),这样一来此行为取决于各种编译器的具体实现

2016-05-31 07:10:17 342

原创 程序的编译过程

源码 ->(扫描) 标记 ->(语法分析)语法树 ->(语义分析) 标识语义后的语法树 ->(源码优化)中间代码 ->(代码生成)目标机器代码 ->(目标代码优化) 最终目标代码

2016-05-30 07:36:30 300

原创 数组名作指针什么时候代表整个数组

int a[5]={1,2,3,4,5}; a表示int*, *(a+n) 表示a[n] &a表示int[] *,&a+1指向数组后的第一个位置,增加步长为一个数组的长度。int *ptr=(int*)(&a+1); ptr转换为int*指针,指向数组后的第一个位置,因为是int*类型指针,增加步长为一个`int“

2016-05-30 07:09:48 1301

转载 常用设计模式大全-详细介绍

设计模式(Design Patterns)                                  ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真

2016-05-29 08:30:03 2865

原创 线程安全和线程不安全

线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据===========================================================

2016-05-29 08:04:27 250

原创 C++ STL 的实现

C++ STL 的实现:vector 底层数据结构为数组 ,支持快速随机访问list 底层数据结构为双向链表,支持快速增删deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时queue 底层一般用2

2016-05-29 07:58:17 424

原创 表达式包含的隐式类型转换

表达式会包含隐式类型转换,它由编译器自动执行,不需程序员介入。何时发生隐式类型转换 1. 在混合类型的表达式中,操作数会被转换为相同类型int ival; double dval;ival >= dval; // ival converted to double2. 条件表达式会被转换为bool类型。int ival; if (ival) //

2016-05-28 08:10:47 611

原创 分段和分页 存储管理

一. 分页存储管理1.基本思想用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。2. 分页存储管理的地址机构15          12         11                  0     页号P                 页内位移量W

2016-05-28 08:02:37 1138

原创 static静态变量(静态全局和静态局部)

static int a=1;void fun1(void){ a=2; }void fun2(void){ int a=3; }void fun3(void){ static int a=4; }int main(int argc,char** args){ printf(“%d”,a); fun1( ); printf(“%d”,

2016-05-27 09:39:08 586

原创 设计模式一 工厂模式Factory

设计模式一 工厂模式Factory         在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些

2016-05-26 10:40:18 1755

原创 单例模式最完整的讲解

这是一篇我见过的讲单例模式最完整的,也是讲的最好的一篇博客文章。3. 1 单例模式的动机      对于一个软件系统的某些类而言,我们无须创建多个实例。举个大家都熟知的例子——Windows任务管理器,如图3-1所示,我们可以做一个这样的尝试,在Windows的“任务栏”的右键弹出菜单上多次点击“启动任务管理器”,看能否打开多个任务管理器窗口?如果你的桌面出现多个任务管理器,我

2016-05-26 10:23:57 916

原创 零食知识点整理

整理一些零散的知识点,当作零食吧数组作为参数时,[]里的数不起作用,传递的是首元素的地址,32位OS下是4个字节,数组具体有多少个元素,要自己指出。(数组名做形参,下标没有作用,数组退化为指针,传入的就是地址,通常可以写成指针char* str,指针的大小在32位系统中为4字节)

2016-05-25 07:02:40 487

原创 单道程序系统几个特点:

单道程序系统几个特点: 1. 资源独占性 任何时候,位于内存中的程序可以使用系统中的一切资源,不可能有其他程序与之竞争 2. 执行的顺序性 内存中只有一个程序,各个程序是按次序执行的。在做完一个程序的过程中,不可能夹杂进另一个程序执行 3. 结果的可再现性 只要执行环境和初始条件相同,重复执行一个程序,获得的结果总是一样的 4. 运行结果的无关性 程序的运行结果与程序执行的速度无关。

2016-05-25 06:59:36 10810

原创 单道批系统,响应比优先调度,平局周转时间的计算

单道批处理系统中有4个作业,J1的提交时间8.0,运行时间为2.0;J2的提交时间8.6,运行时间为0.6;J3提交时间8.8,运行时间为0.2;J4的提交时间9.0,运行时间为0.5。在采用响应比高者优先调度算法时,其平均周转时间为T为()小时?计算 周转时间=作业完成时间-作业提交时间 响应比=(作业等待时间+作业执行时间)/作业执行时间当提交J1时,只有J1作业,执行J1,J1的

2016-05-19 07:54:43 4652 1

原创 程序的链接的三种方式

程序的链接有以下三种方式:静态链接:在程序运行之前,先将各目标模块及它们所需的库函数链接成一个完整的可执行程序,以后不再拆开。装入时动态链接:将用户源程序编译后所得到的一组目标模块,在装入内存时,釆用边装入边链接的链接方式。运行时动态链接:对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行的链接。其优点是便于修改和更新,便于实现对目标模块的共享。内存的装入模块

2016-05-18 07:51:40 7700

原创 各种内存分配方式产生的动机

题干中的连续分配,应该是包括单一连续分配 和分区分配 两种分配策略。单一连续分配简单,适用于单用户、单任务的操作系统。 为了支持多道程序运行,引入了分区式内存分配,其又分为固定分区和动态分区,主要是围绕着内存碎片做了一些文章。为了改善内存利用率,引入了内存紧缩技术,通过内存数据搬移,把多个不连续的空闲内存拼起来。可想而知,CPU开销比较大。所以不连续分配的方式出现了,包括页式、段式和段页式。初衷

2016-05-17 14:26:06 560

原创 virtualbox中ubuntu和windows共享文件夹设置

系统平台:win8.1、virtualbox4.3.8、ubuntu12.041、安装VBoxGuestAdditions_4.3.8.iso增强工具,安装完毕后根据提示重启Ubuntu,具体操作如下:a、把VBoxGuestAdditions_4.3.8.iso镜像到Ubuntu中,存放在Ubuntu的/media目录中,操作如下:b、安装virtualbox增强包l

2016-05-16 18:14:53 823

Wing IDE 破解文件

Wing IDE 破解文件,获取注册码的脚本

2015-08-31

numpy-1.8.1-win32-superpack-python2.7

使用opencv的一个必须装的库,参考博客文章使用

2015-08-21

glut库文件

openGL 必备的库文件,自己已经在用了

2015-04-21

《Color Transfer Based on Normalized Cumulative Hue Histograms》代码实现

《Color Transfer Based on Normalized Cumulative Hue Histograms》代码实现,之前那个使用时有个小问题的,已修改,并增加了使用说明文档

2015-04-16

opencv 摄像机标定程序 已调试成功 附带畸变图片

课程大作业要求实现张正友的摄像机标定,opencv中有现成的函数.opencv自带的sample不太好调试,这个比较简单,但足以说明摄像机标定的过程

2014-11-08

空空如也

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

TA关注的人

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