自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 轻松搞定面试中的二叉树题目

版权所有,转载请注明出处,谢谢!http://blog.csdn.net/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树

2017-02-24 11:13:05 265

原创 计算结构体的字节数

结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。看下面这样的一个结构体:  struct stu1  {  int i;  char c;  int j;  };  先介绍一个相关的概念——偏移量。偏移量

2017-02-21 21:20:26 2260

原创 Belady现象

Belady现象:采用FIFO算法时,如果对—个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象。Belady现象的描述:一个进程P要访问M个页,OS分配N(NFIFO是最早出现的页置换算法之一。Belady现象的原因是FIFO算法的置换特征与进程访问内存的动态特征是矛盾的,即被置换的页面并不是进程不会访问的,因而FIFO并不是一个好的置

2017-02-21 17:31:19 21227 3

原创 Linux的inode的理解

文件名 -> inode -> device block 转自:http://www.ruanyifeng.com/blog/2011/12/inode.htmlhttp://blog.s135.com/post/295/ http://hi.baidu.com/leejun_2005/blog/item/d9aa13a53b3af6e99152ee7e.html 

2017-02-21 16:20:12 529

原创 SPOOLING技术

SPOOLING技术(Simultaneous Peripheral Operating On Line)同时联机外围操作技术,它是关于慢速字符设备如何与计算机主机进行数据交换的一种技术,通常又称假脱机技术。在多道程序环境下,利用多道程序中的一道或者两道程序来模拟脱机输入/输出中的外围控制机的功能,以达到“脱机”输入/输出的目的。利用这种技术可把独占设备转变成共享的虚拟设备

2017-02-21 15:54:41 1766 1

原创 何时发生隐式类型转换

链接:https://www.nowcoder.com/test/question/done?tid=6629168&qid=2922#summary来源:牛客网1. 在混合类型的表达式中,操作数会被转换为相同类型 int ival; double dval;ival >= dval; // ival converted to double2. 条件表

2017-02-20 16:27:15 825

原创 死锁与饥饿

在多道程序系统中,同时有多个进程并发运行,共享系统资源,从而提高了系统资源利用率,提高了系统的处理能力。但是,若对资源的管理、分配和使用不当,则会产生死锁或是饥饿。所谓死锁是指在多道程序系统中,一组进程中的每一个进程军无限期等待被该组进程中的另一个进程所占有且永远不会释放的资源。饥饿是指系统不能保证某个进程的等待时间上界,从而使该进程长时间等待,当等待时间给进程推进和响应带来明显影响时,称发生了进

2017-02-15 19:39:01 416

原创 编程之美:求二进制中1的个数

1.问题描述实现一个函数,输入一个无符号整数,输出该数二进制中的1的个数。例如把9表示成二进制是1001,有2位是1,因此如果输入9,该函数输出2 2.分析与解法解法1:利用十进制和二进制相互转化的规则,依次除余操作的结果是否为1  代码如下:int Count1(unsigned int v){ int num = 0;

2017-02-15 19:02:57 302

原创 二进制平行算法

接下来开始分析改算法是如何实现二进制表示中1的个数统计的,为了方便理解,我们把代码改成如下的形式:int func(unsigned int i){    unsigned int temp = i;    temp = (temp & 0x55555555) + ((temp>> 1) & 0x55555555);  //temp相邻位相加      temp = (te

2017-02-15 17:29:04 730

原创 printf()函数

一、printf()函数  printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出  信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:  printf("", );  其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原  样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符,  用来确定输

2017-02-15 16:55:29 470

转载 《More Effective C++》条款27:如何让类对象只在栈(堆)上分配空间?

一般情况下,编写一个类,是可以在栈或者堆分配空间。但有些时候,你想编写一个只能在栈或者只能在堆上面分配空间的类。这能不能实现呢?仔细想想,其实也是可以滴。在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。1、静态建立类对象:是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在

2017-02-15 16:29:17 181

转载 深拷贝与浅拷贝

对深拷贝与浅拷贝的再次理解    记得11年底找工作的时候,面试时曾经遇到有面试官问的对深拷贝与浅拷贝的理解,那时候自己回来查了资料,写了篇博客,感觉自己理解了,其实理解的不深刻,最近在调试bug的时候,再次遇到深拷贝与浅拷贝,认真分析了,写写自己的心得吧。    先说下自己的理解吧,浅拷贝,即在定义一个类A,使用类似A obj;  A obj1(obj);或者A obj1

2017-02-13 11:07:07 178

原创 new VS malloc

1、new 是c++中的操作符,malloc是c 中的一个函数 2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数 3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。 4、new 和 ma

2016-12-20 11:03:38 264

原创 kNN(K-Nearest Neighbor)最邻近规则分类

K最近邻分类算法方法的思路:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于这一类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分类样本所属的类别。KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,

2016-12-07 15:50:18 3689

转载 C++类静态成员与类静态成员函数详解

静态成员不可在类体内进行赋值,因为它是被所有该类的对象所共享的。你在一个对象里给它赋值,其他对象里的该成员也会发生变化。为了避免混乱,所以不可在类体内进行赋值当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的,

2016-12-05 15:37:55 649

转载 java中的多线程

java中的多线程在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。对于直接继承Thread的类来说,代码大致框架是:123456789101112class 类名 extends Thread{方法1;方法2;…public v

2016-10-30 13:38:31 209

转载 深入理解Java的接口和抽象类

深入理解Java的接口和抽象类  对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲:  一.抽象类  二.接口  三.抽象类和接口

2016-10-30 13:36:05 175

转载 设计模式之 代理模式

/** * @author Rollen-Holt 设计模式之 代理模式 */ interface NetWork{    public abstract void browser();} /** * Real 类代表用户上网的实际动作,比如查看网页 * */class Real implement

2016-10-30 13:35:17 174

转载 算法的时间复杂度和空间复杂度

没有挤公交来上班过,就不知道生活的压力有多大。算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中

2016-10-29 21:15:54 240

转载 浅析Java中的final关键字

浅析Java中的final关键字浅析Java中的final关键字  谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。下面是本文的目录大纲:  一.final关键字的基本用法  二.深入理解final关键字  若

2016-10-29 21:02:36 206

原创 C++中,两个头文件互相引用怎么办

两个头文件相互包含会导致超前引用的问题,所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。发生这种情况是无法编译通过的,不过可以采取一些手段解决该问题 超前引用导致的错误有以下几种处理办法: 1) 使用类声明 在超前引用一个类之前,首先用一个特殊的语句说明该标识符是一个类名,即将被超前引用。其使用方法是: a) 用class ClassB;声

2016-10-14 00:29:45 1969

转载 [C++]前置声明和头文件

假设有一个Date类Date.h[cpp] view plain copyclass Date {  private:      int year, month, day;  };  如果有个Task类的定义要用到Date类,有两种写法其一Task1.h[cpp] v

2016-10-14 00:27:20 280

原创 全局变量和静态局部变量有什么区别?

全局变量和静态局部变量有什么区别? 存储的地方是一样的,不同之处在于它们的作用域不同:全局变量基本上在程序的任何地方都能被看到而静态局部变量只能在其指定的范围内被使用比如int i ; // 全局变量class C{public:static int i_C; // 静态局部变量}void main(){i = 1; // 合法

2016-10-12 15:20:30 643

原创 const在函数前与函数后的区别

const在函数前与函数后的区别一   const基础         如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:         int   b   =   500;     const   int*   a   =   &b;              [1]     int   const   *a   =   &b;    

2016-10-09 22:02:47 294

原创 C++流概述

C++流概述在程序设计中,数据输入/输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作是通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。C++流涉及以下概念:标准I/O流:内存与标准输入输出设备之间信息的传递;文件I/O流:

2016-10-09 21:37:34 3313

原创 关于typedef的用法总结

不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别

2016-09-26 00:44:19 216

原创 C语言结构体(struct)

今天复习一下struct,顺便挖掘一下以前没注意的小细节:基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量。结构体定义:第一种:只有结构体定义struct stuff{ char job[20]; in

2016-09-26 00:30:47 525

原创 C++类和new、delete操作符

在C++中,你可以像定义变量一样来创建对象,如:Student stu; //对象已被实例化,已分配内存空间,可以使用了stu.say(); //调用成员函数这种情况下,系统会在栈区为对象分配内存。栈区是内存中的一块区域,由系统自动分配和释放,程序员无法操控,一般用来存放函数的参数值、局部变量、局部对象等。当发生函数调用时,系统将函数参数、局部变量、局部对象依次

2016-09-22 12:32:36 318

原创 const 和 #define区别

(1) 编译器处理方式不同  define宏是在预处理阶段展开。  const常量是编译运行阶段使用。(2) 类型和安全检查不同  define宏没有类型,不做任何类型检查,仅仅是展开。  const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同  define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。

2016-08-29 21:55:39 338

转载 C++ 常量类型 const 详解

1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:) 2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。 3、cons有什么主要的作用?(1)可以定义const常量,具有不可变性。 例如: const int Max=10

2016-08-25 16:15:09 911

转载 C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区

堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。堆可以动态地扩展和收缩。(new 动态分配 delete 释放)栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户

2016-08-25 15:09:45 322

原创 如何关闭linux防火墙

1.即时生效,重启后失效开启:service iptables start关闭:service iptables stop2 重启后生效开启:chkconfig iptables on关闭:chkconfig iptables off

2016-08-03 13:50:15 248

转载 运算符重载详解

1.运算符重载定义: C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。 运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将要进

2016-07-13 20:11:48 484

转载 C++中this指针的用法详解

this指针的用处:   一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。      例如

2016-07-13 19:56:30 245

转载 C++中typename和class的区别

在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 相信学习C++的人对class这个关键字都非常明白,class用于定义类,在模板引入c++后,最初定义模板的方法为: template…… 在 这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typen

2016-07-13 10:44:42 234

转载 K-means算法

算法描述:1>    从N个数据中选出K个元素作为质心,即数据将被分成K簇2>    依次计算剩下的每一个元素到K个元素的相异度,一般是计算距离,将这些元素分别划分到相异度最低的簇中去3>    根据聚类结果分别重新计算k个簇各自的中心,计算方法是取簇中各维度的算术平均值。4>    将D的全部元素按照新的中心重新聚类。5>    重复第四步,直到聚类结果不

2016-07-11 19:01:29 2506

转载 运算符重载__ERZE

1. 运算符重载介绍1)之前的函数重载,允许多个同名不同参数类型的函数; 运算符重载允许程序员如何使用运算符(如+、-、==、=和!)来处理不同类型的数据类型; 对于基本数据类型,运算符是可以使用的: 对于自定义数据类型: 如果为对自定义MyString的运算符+定义,会出现编译错误。 当一个运算符重载时,对于C++将会根据数据的类型,选择合适的重载运算符; C++中除了arit

2016-07-10 02:01:40 351

原创 C++中的friend友元函数详细解析

友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。友元函数的特点是能够访问类中的私有成员的非成员函数。友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend。我们已知道类

2016-07-10 01:24:51 1077

原创 const成员函数、const类对象、mutable数据成员

1. const成员函数 只是告诉编译器,表明不修改类对象. 但是并不能阻止程序员可能做到的所有修改动作,比如对指针的修改,编译器可能无法检测到2. 类体外定义的const成员函数,在定义和声明处都需要const修饰符1 class classname 2 { 3 public: 4     classname() {} 5     ~classname();

2016-07-08 00:59:15 342

原创 C++ 函数后加const

**1、非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误) 2、表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中, 任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用); 3、唯一的例外是对于mutable修饰的成员。 加了const的成员函数可以被非const对象和const对象调用

2016-07-08 00:56:18 301

空空如也

空空如也

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

TA关注的人

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