自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 树、二叉树、森林之间的转化

树、森林和二叉树之间的转换 树转换为二叉树1. 加线     在所有兄弟结点之间加一条连线。2. 去线     树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线。3. 层次调整    以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点

2017-04-30 20:04:43 392 2

转载 结构体内存对齐

一个结构体变量定义完之后,其在内存中的存储并不等于其所包含元素的宽度之和。例一:                                      #include                                       using namespace std;                                       

2017-04-29 15:34:34 255

原创 类的派生与继承

private,public,protected方法的访问范围.(public继承下)private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问. protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问 public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问注:友元函数包括

2017-04-29 14:23:59 320

转载 虚函数 析构函数

1.第一段代码#includeusing namespace std;class ClxBase{public:    ClxBase() {};    ~ClxBase() {cout     void DoSomething() { cout };class ClxDerived : public ClxBase{public:    C

2017-04-27 17:29:56 336

转载 虚函数实现原理

虚函数是很多编程语言中一个特性,比如c#,java,当然在c++语言中也有。这三种语言都是面向对象的语言。我们都知道面向对象语言有三个最基本的特征就是:继承,多态,封装。在c++语言中,这种多态的特征就是通过虚函数(virtual)来实现的。这种实现方法在其它语言中(比如c#)中也是如此。   我要说的就是虚函数到底是怎么实现的。还是以例子来说明。我引用了上一篇随笔中的代码。

2017-04-27 17:05:47 2828 1

原创 腾讯后台开发面经+答案

作者:WAWAWA链接:https://www.nowcoder.com/discuss/19487?type=2&order=0&pos=21&page=1来源:牛客网C++: 1 :C++多态的实现方式,虚函数的底层实现细节。 2:继承类调用构造函数顺序和析构函数顺序,什么时候要将 析构函数定义为虚函数。 3:引用与指针区别 4:new 与 malloc的异同处。 5:结构体内

2017-04-27 16:30:40 8154 4

转载 深入理解数组名和指针

指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。魔幻数组名请看程序(本文程序在WIN32平台下编译):#include using namespace std;int main(){ char str[10]; char* pStr = str; c

2017-04-27 11:55:20 384 1

转载 用数组名作函数参数

可以用数组名作函数参数,此时实参与形参都应用数组名(或指针变量)。例2:有一个一维数组score,内放10个学生成绩,求平均成绩。float average(float array[10]){            int i;      float aver,sum=array[0];              for(i=1; i

2017-04-27 11:40:57 1616 2

转载 进程死锁算法——Peterson与Dekker

进来Bear正在学习巩固并行的基础知识,所以写下这篇基础的有关并行算法的文章。在讲述两个算法之前,需要明确一些概念性的问题,Race Condition(竞争条件),Situations  like  this,  where  two  or  more processes  are  reading or writing some shared data and the fin

2017-04-26 17:29:02 1209 1

转载 子进程与子线程的区别

1、相同点:(a)二者都具有ID,一组寄存器,状态,优先级以及所要遵循的调度策略。(b) 每个进程都有一个进程控制块,线程也拥有一个线程控制块。(c) 线程和子进程共享父进程中的资源;线程和子进程独立于它们的父进程,竞争使用处理器资源;线程和子进程的创建者可以在线程和子进程上实行某些控制,比如,创建者可以取消、挂起、继续和修改线程和子进程的优先级;线程和子进程可以改变其属性并创建新的资

2017-04-24 22:20:54 1329

转载 管道

关闭管道只是将两个文件描述符关闭即可,可以使用普通的close函数逐个关闭。无名管道读写     管道用于不同进程间通信。通常先创建一个管道,再通过fork函数创建一个子进程,该子进程会继承父进程创建的管道。注意事项:必须在系统调用fork()前调用pipe(),否则子进程将不会继承文件描述符。否则,会创建两个管道,因为父子进程共享同一段代码段,都会各自调用pipe(),即

2017-04-24 22:16:07 446

转载 静态重定位与动态重定位

地址重定位就是操作系统将逻辑地址转变为物理地址的过程。。。也就是对目标程序中的指令和数据进行修改的过程将逻辑地址空间重定位到物理地址空间的时机有三种:  1、程序编译连接时。  2、程序装入内存时。  3、程序执行时。以下内容转自:http://bbs.pediy.com/showthread.PHP?t=76876  在这之前我一直对地址重定位的细节不是很了解。以

2017-04-24 20:58:07 5315 3

转载 头指针 头结点 优点

1.先区分一下概念:头结点:在单链表第一个元素结点之前设置的一个结点,数据域可以不存任何信息,指针域指向单链表第一个元素的结点。对于单链表来说,头结点可有可无,但为了操作方便,一般情况下单链表都具有头结点,后面的分析将会区别一下有头结点和没有头结点的区别。优点:减少了单链表添加删除时特殊情况的判断,减少了程序的复杂性,主要是添加和删除在第一个有元素的结点(首元结点)上有区别,如果链

2017-04-24 15:23:59 1262

转载 链表、头指针、头结点

图1为线性表(ZHAO, QIAN, SUN, LI, ZHOU, WU, ZHENG, WANG)的逻辑状态。头指针 指示链表中第一个结点(即第一个数据元素的存储映像)的存储位置。同时,由于最后一个数据元素没有直接后继,则线性链表中最后一个结点的指针为“空”(NULL)。图1 线性链表的逻辑状态由上述描述可见,单链表可由头指针来唯一确定,在C语言中可用“结构指针”来描述。

2017-04-23 23:38:31 374

转载 深入理解指针

1    、我的总结:int *p;           指针的类型      【去掉p,剩下的】                  指针所指向的类型【去掉*p,剩下的】 2    、sizeof() 测试结果int (*ptr)[3]; //ptr代表指针,因此测得值为4int *ptr[3]; //ptr代表数组名,每个成员是int * ,因此占

2017-04-23 22:20:30 268

转载 内联函数

C++内联函数阅读目录什么是内联函数如何使函数内联为什么要使用内联函数inline函数的优缺点分析什么时候该使用内联函数 正文     在C语言中,我们使用宏定义函数这种借助编译器的优化技术来减少程序的执行时间,那么在C++中有没有相同的技术或者更好的实现方法呢?答案是有的,那就是内联函数。内联函数作为编译器优化手段的一种技术,在降低

2017-04-23 20:16:24 325

转载 虚函数与纯虚函数

首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:[cpp] view plain copy

2017-04-23 19:40:26 170

原创 单链表反转

单链表反转总结篇单链表的反转是常见的面试题目。本文总结了2种方法。1 定义单链表node的数据结构定义如下:class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; }}2 方法1:就地

2017-04-22 22:21:17 363

原创 MySQL ALTER语句

我们知道,MySQL数据库常常与PHP结合来开发出功能强大的应用程序。那么对于我们初学PHP编程的人来说,就很有必要了解一些MySQL数据库的简单操作了。本文我们对MySQL数据库使用alter table语句来修改表结构的知识进行了介绍,接下来就让我们来一起了解一下这部分内容。1. 增加列alter table tbl_name add col_name type例如, 

2017-04-22 20:29:24 2203

转载 集线器、交换机、路由器以及端口带宽区别

集线器-------集线器也叫Hub,工作在物理层(最底层),没有相匹配的软件系统,是纯硬件设备。集线器主要用来连接计算机等网络终端。集线器为共享式带宽,连接在集线器上的任何一个设备发送数据时,其他所有设备必须等待,此设备享有全部带宽,通讯完毕,再由其他设备使用带宽。正因此,集线器连接了一个冲突域的网络。所有设备相互交替使用,就好象大家一起过一根独木桥一样。集线器不能判断数据包的目

2017-04-22 19:11:45 9187

转载 希尔排序

希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率

2017-04-22 16:13:16 196

原创 静态成员与静态函数(2019.10.22)

3.一般成员变量会通过形参列表或默认的构造函数进行初始化因此只能在类内初始化。4.类定义时,因为无法使用构造函数,因而无法完成对对象的初始化。 当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的...

2017-04-21 14:16:12 329

转载 归并排序

1、序言这是《漫谈经典排序算法系列》第四篇,解析了归并排序。 各种排序算法的解析请参考如下:《漫谈经典排序算法:一、从简单选择排序到堆排序的深度解析》《漫谈经典排序算法:二、各种插入排序解析及性能比较》《漫谈经典排序算法:三、冒泡排序 && 快速排序》《漫谈经典排序算法:四、归并排序》《漫谈经典排序算法:五、线性时间排序(计数、基数、桶排

2017-04-20 22:28:30 165

转载 指针与二维指针、引用

详解c++指针的指针和指针的引用展示一下使用指针的指针和指针的引用修改传递给方法的指针,以便更好的使用它。(这里说的指针的指针不是一个二维数组)为什么需要使用它们当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方法,也可以说传递指针是指针的值传递。如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改的指针的copy而不是指针本身,原来的指针还

2017-04-20 21:37:11 332

原创 wc命令

wc -l只输出文件行数Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。1.命令格式:wc [选项]文件...2.命令功能:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统

2017-04-19 22:58:46 434

原创 etc目录文件

/etc/services      文件是记录网络服务名和它们对应使用的端口号及协议。/etc/nsswitch.conf       规定通过哪些途径以及按照什么顺序通过这些途径来查找特定类型的信息。还可以指定某个方法奏效或失效时系统将采取什么动作。  /etc/hosts       是配置ip地址和其对应主机名的文件,这里可以记录本机的或其他主机的ip及其对应主机名。不同的

2017-04-19 22:01:20 410

原创 二元查找树

二元查找树是指一棵空树或者具有下列性质的二元树:若任意节点的左子树不空,则左子树上所有结点的值均小於它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大於它的根结点的值;任意节点的左、右子树也分别为二元搜寻树;没有键值相等的节点。

2017-04-19 15:03:50 920

原创 双向链表

双向链表是为了满足更加方便的查找前驱,而付出空间的代价的一个数据结构。双向链表的节点定义如下:1 typedef struct node2 {3 int x;4 struct node *prior,*next;5 }DLNode;双向链表的空间结构如下图所示:双向链表的创建如下: 1 //创建双向链表 2 DLNode *

2017-04-19 14:57:38 260

原创 SPOOLING假脱机技术

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

2017-04-19 11:27:35 5878

原创 需求矩阵

链接:https://www.nowcoder.com/questionTerminal/1ae37daa6de74caca937c5d497ce2e49来源:牛客网1)可利用资源向量Available 是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Available[j]=K,则表示系统中现有Rj类资源K个。 2)最大需求矩阵Max 这是一个n×m

2017-04-19 11:03:25 10402

原创 fork()函数

一、fork入门知识     一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新

2017-04-19 10:49:36 269

原创 程序计数器 寄存器

程序计数器: 冯 ·诺伊曼计算机体系结构的主要内容之一就是“程序预存储,计算机自动执行”!处理器要执行的程序(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再译码、执行,以完成整个程序的执行。为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条取指指令的地址。程序计数器(PC )正是起到这种作用,所以通常又称之为‘指令计数器’。

2017-04-19 10:05:38 4288 1

原创 中断调用与子程序调用

1、两过程定义与作用 子程序是微机基本程序结构中的1种,基本程序结构包括顺序(简单)、分支(判断)、循环、子程序和查表等5种。 子程序是一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子程序。子程序在功能上具有相对的独立性,在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。一般微机首先执行主程序,碰到调用指令就转去执行子程序,子程序执行完后,返回指令就返回主程

2017-04-19 09:46:11 8051

原创 文件组织方式

一、文件的基本概念( 识记 )  对数据结构来说, 文件 是性质相同的 记录 的集合 (这不同于我们说的操作系统中的文件概念) 。  与文件有关的概念还有: 记录 是文件中存取的 基本单位 , 数据项 是文件可使用的 最小单位 ,数据项有时称 字段 或者 属性 。主关键字项 (唯一标识一个记录的字段)、 次关键字项 、 主关键字 、 次关键字 。 单关键字文件 、 多关键字文件 等。 

2017-04-18 23:17:07 5849

原创 线程共享与私有

线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。    进程拥有这许多共性的同时,还拥有自己的个性。有了这些个性,线程才能实现并发性。这些个性包括:    1.线程ID      每个线程都有自己的线程ID,这个ID在本进程中是唯一的。

2017-04-18 17:32:45 1136 1

原创 new delete

c++中new和delete的使用方法http://www.jb51.net/article/49537.htm对于计算机程序设计而言,变量和对象在内存中的分配都是编译器在编译程序时安排好的,这带来了极大的不便,如数组必须大开小用,指针必须指向一个已经存在的变量或对象。对于不能确定需要占用多少内存的情况,动态内存分配解决了这个问题。    new和delete运算符是用

2017-04-17 22:15:26 235

原创 硬链接与软链接的联系与区别

硬链接与软链接的联系与区别我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata) 。用户数据,即文件数据块 (data block) ,数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号( inode 是文件元数据的一部分但

2017-04-17 20:53:35 4892

原创 中断类型

中断类型分为如下两大类: 一、强迫性中断:正在运行的程序所不期望的,来自硬件故障或外部请求。 1、I/O 中断:来自外部设备通道; 2、程序性中断:运行程序本身的中断,如 溢出、缺页中断、缺段中断、地址越界。 3、时钟中断 4、控制台中断 5、硬件故障 二、自愿性中断:用户在编程时要求操作系统提供的服务,使用访管指令或系统调用使中断发生。也称为访管中断。包括执行

2017-04-17 14:18:52 17425 1

原创 编译程序的工作过程

编译程序的工作过程一般划分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。词法分析:也就是从左到右一个一个的读入源程序,识别一个单词或符号,并进行归类。语法分析: 在词法分析的基础上,将单词序列分解成各类语法短语,如“程序”,“语句”,“表达式”等。语义分析:审查源程序是否有语义的错误,当不符合语言规范的时候,程序就会报错。中间代码生

2017-04-16 22:17:12 8057

原创 C++11 STL函数 UnorderedSet

一些简单操作UnorderedSetTest.cpp#include #include #include "../../Core/print.hpp"#include "UnorderedSetTest.h"using namespace std;void UnorderedSetTest::simpleOperation(){ // create an

2017-04-15 22:36:34 1675

空空如也

空空如也

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

TA关注的人

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