日常笔记整理

1、#pragma的作用是什么:设置编译器的

2、p++ 是先自增p(++p),在进行解引用,他等价于 (p++) :因为后缀++和–操作符的优先级比前缀一目操作的优先级高,
若要自增p所指向的值:(*p)++;如果副作用的顺序无关紧要,也可以使用++*p;

3、int**a[3][4] 该式表示的是指向指针的指针数组,每个元素存放的是二级指针,每个指针在32位执行系统下占4个字节的内存,
则共占内存3*4*4=48字节;数组中的每个元素都是int*类型的指针

4、指针在32位执行系统下占4个字节, 指针在64位执行系统下占8个字节,(注意:这里的32/64位执行系统并不是我们平常所说的32/64

位操作系统)

5、访问vector中的数据,有两种方法:
1、vector::at() 它会进行边界检查
2、vector::operator[] 他主要是为了与C语言兼容,他可以像C语言数组一样操作,但at是我们的首选

6、
void func(char *p)
{
p=p+1;
}
int main()
{
char s[]={‘1’,’2’,’3’,’4’};
func(s);
printf(“%c”,*s);
return 0;
}
该题最后的结果为 1;
指针传指针还是相当于值传递,要想起到改变&s(整个数组的地址)的值则需要指针的指针eg:
&s 的类型为:char(*)[4]
s 的类型为:char *
void func(char **p)
{
*p=*p+1;
}
int main()
{
char s[]={‘1’,’2’,’3’,’4’};
func(&s);
printf(“%c”,*s);//此时输出2
return 0;
}

7、n&=(n-1) 执行一次将相当于把二进制的n的最右位的1置为0,可应用于求一个人进制树内有多少个1;
n=n|(n+1) eg:可应用于求一个二进制数内有多少个0;

8、80X86是小端模式,
小端:数据的低位保存在内存的 低 地址中,数据的高位保存在内存的 高 地址中,(内存:低地址–>高地址)
大端:数据的低位保存在内存的 高 地址中,数据的高位保存在内存的 低 地址中,

9、测试时间函数:

         clock_t s1,s2;
         s1=clock();
         func();
         s2=clock();
         cout<<s2-s1<<endl;

10、a++ 与 a+1 的区别(a++改变了a本来的值,a+1并没有该别a本来的值)

    int i = 1;
    i++;
    cout << i<<endl;//2
    cout << i + 1 << endl;//3
    cout << i << endl;//2

11、IP地址::={<网络号>,<主机号>};
A类、B类、C类地址的网络号字段(前1-3)位的类别位
A类:0—(1–127)A类网络(1 - 126) 缺省子网掩码:255·0·0·0
A类地址的网络标识由第一组8位二进制数表示,
A类地址的特点是网络标识的第一位二进制数取值必须为”0”。 比如:
1.x.y.z = 0000 0001.x.y.z
10.x.y.z = 0000 1010.x.y.z
27.x.y.z = 0001 1011.x.y.z
102.x.y.z = 0110 0110.x.y.z
127.x.y.z = 0111 1111.x.y.z
B类:10—(128–191)B类网络(128 - 191) 缺省子网掩码:255·255·0·0
128.x.y.z = 1000 0000.x.y.z
151.x.y.z = 1001 0111.x.y.z
165.x.y.z = 1010 0101.x.y.z
191.x.y.z = 1011 1111.x.y.z
C类:110—(192)C类网络(192 - 223) 缺省子网掩码:255·255·255·0
192.x.y.z = 11000000.x.y.z
200.x.y.z = 11001000.x.y.z
210.x.y.z = 11010010.x.y.z
223.x.y.z = 1101 1111.x.y.z
D类:1110—
E类:1111—

12、堆排序的特点:
a、是完全二叉树
b、分为大根堆、小根堆
c、树中任一非叶子结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。
d、堆排序只用作数组
e、它是不稳定的排序方法。(排序的稳定性是指如果在排序的序列中,
存在前后相同的两个元素的话,排序前和排序后他们的相对位置不发生变化)
f、二叉堆通常用数组来实现,它舍弃下标0,从下标1开始置数,则很容易满足,对于数组中任意
位置i上的元素,其左儿子的位置在2i上,右儿子的位置在2i+1上,双亲的位置则在i/2上。
g、堆排序的算法之一是把数组构建成二叉堆—-这只要增添一个长度为n+1的辅助空间,
然后把原数组的元素依次插入到二叉堆即可。然后删除二叉堆的根,把它作为排序后的数组
的第一个元素,然后使二叉堆的长度减1,并通过上移使得新得到的序列仍为二叉堆,再提取
新二叉堆的第一个元素到新数组。依此类推,直到提取最后一个元素,新得到的数组就是排序后的数组。

13、什么是LRU(最近最少使用算法)
内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,
Oracle会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。
举例说明:
LRU(least recently used)最少使用。
假设 序列为 4 3 4 2 3 1 4 2
物理块有3个 则:
首轮 4调入内存 4
次轮 3调入内存 3 4
之后 4调入内存 4 3
之后 2调入内存 2 4 3
之后 3调入内存 3 2 4
之后 1调入内存 1 3 2(因为最少使用的是4,所以丢弃4)
之后 4调入内存 4 1 3(原理同上)
最后 2调入内存 2 4 1

14、什么是MMU
MMU(Memory Management Unit)即内存管理单元,是中央处理器(CPU)
中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,
以及提供硬件机制的内存访问授权、多用户多进程操作系统。

15、硬链接与软连接(Linux文件相关)
硬链接:(克隆)格式:# ln 源文件 目标文件
a、ln 创建
b、文件的权限后面的那个数字就表示硬链接的个数
c、当其中一个硬连接的文件改变了,与其硬链接的所有文件也会跟着改变
d、当删除其中一个硬链接文件时,硬链接文件数减一,其他文件仍存在
e、硬链接文件的 inode(索引结点) 相同
f、硬链接不能为目录创建,只有文件能创建硬链接
g、当把硬链接的源文件删除之后,其他的硬链接文件内容还可以访问
h、硬连接的文件所属种类相同

软连接:(又称为:符号链接)格式:# ln -s 源文文件或目录 目标文件或目录
    a、ln -s 创建
    b、既可以为文件创建软连接文件也可以为目录创建软链接目录
    c、创建的软连接的文件或目录的 inode 与元文件或目录的 inode 不同
    d、源文件或目录的类型 与 常见的软连接的类型不同 软连接文件或目录的类型为 l... 
    e、源文件 与 软连接文件的权限不同
    f、源文件 与 软链接 的 硬链接个数相同 都为1
    g、修改(或访问、创建)时间不同;
    h、软连接只是源文件的一个标记,当源文件删除之后,(链接文件不能独立存在)他的软连接文件名虽然存在,但是文   

   件内容已经不能再被访问了
    i、当修改软连接文件时,源文件也会跟着改变
    j、我们可以看到软链接文件,其实只是源文件的一个标记,当源文件失去时,他也就不存在了。软链接文件只是占用了   

   inode来存储软链接文件属性等信息,但文件存储是指向源文件的。

 无论是软链接还是硬链接,都可以用rm来删除。rm工具是通用的。

16、局域网与广域网
什么是广域网(WAN、公网、外网),什么是局域网(LAN、私网、内网)?
广域网(WAN),就是我们通常所说的Internet,它是一个遍及全世界的网络。 局域网(LAN),相对于广域网(WAN)而言,主

要是指在小范围内的计算机互联网络。这个“小范围”可以是一个家庭,一所学校,一家公司,或者是一个政府部门。 BT中常常  

提到的公网、外网,即广域网(WAN);BT中常常提到私网、内网,即局域网(LAN)。 
广域网上的每一台电脑(或其他网络设备)都有一个或多个广域网IP地址(或者说公网、外网IP地址),广域网IP地址一般要到 

ISP处交费之后才能申请到,广域网IP地址不能重复;局域网(LAN)上的每一台电脑(或其他网络设备)都有一个或多个局域网    

IP地址(或者说私网、内网IP地址),局域网IP地址是局域网内部分配的,不同局域网的IP地址可以重复,不会相互影响。 
广域网(WAN、公网、外网)

17、什么是银行家算法http://baike.sogou.com/v696313.htm

银行家算法是一种最有代表性的  避免死锁  的算法。又被称为“资源分配拒绝”法。

算法原理:
我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向

银行家贷款。
为保证资金的安全,银行家规定:
(1)当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;
(2)顾客可以分期贷款,但贷款的总数不能超过最大需求量;
(3)当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款;
(4)当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金.
操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的    

资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程本    

次申请的资源数是否超过了该资源所剩余的总量。若超过则拒绝分配

数据结构:
1)可利用资源向量Available
是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Available[j]=K,则表示系统中现有Rj类资源K个
2)最大需求矩阵Max
这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资

源的最大数目为K。
3)分配矩阵Allocation
这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当  

前已分得Rj类资源的数目为K。
4)需求矩阵Need。
这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成   

其任务。Need[i,j]=Max[i,j]-Allocation[i,j]

18、静态变量与全局变量
a、变量可以分为:全局变量、静态全局变量、静态局部变量(前三种都存放在静态存储区中-数据段)和局部变量(栈)。
b、全局变量在整个工程内都有效,静态变量只在定义它的文件或函数内有效
c、静态变量只初始化一次
d、全局变量、静态全局变量、静态局部变量 若没有进行初始化,则系统默认初始为0,局部变量的值不可知
http://blog.csdn.net/mm_hh/article/details/77126878

19、指针数组与数组指针
int arr[10];//指针数组,一共含10元素,每个元素类型为int

int (*ptr)[10];//数组指针,指向含10个元素的数组,每个元素类型为int

int (*pfun)(char,int);//函数指针,指向函数的指针,该函数共有两个参数,\
                    第一个参数为char类型,第二个为int类型,\
                     返回值也为int类型   
int (*parr[5])(char,int);//函数指针数组,数组有5个元素,每个元素都\
                       是函数指针类型,该函数指针指向的函数共有\
                       两个参数,第一个参数为char类型,第二个为\

20、C++的三大特性:继承、封装、多态

---继承<http://blog.csdn.net/snow_5288/article/details/52910155>

1、基类的构造函数和析构函数是不能被继承的
2、派生类的构造函数和析构函数
    我们知道,基类的构造函数和析构函数是不能被继承的,鉴于这一点,派生类的构造函数和析构函数定义时需要注意那些问题呢    


派生类的构造函数:

(1)当基类显示地定义了缺省构造函数(即构造函数没有参数或全缺省)时,派生类可以显示定义自己的构造函数,也可以不定   

义,如果没有显示定义,编译器会自动替我们合成默认构造函数去调基类的构造函数。

(2)当基类有带参的构造函数时,派生类必须定义构造函数(即便函数体为空也必须定义),以提供吧参数传给基类构造函数的   

途径。

派生类构造函数的一般格式:
派生类名(参数总表):基类名(参数表)
{
        派生类新增数据成员的初始化语句;
}

(3)含有子对象的派生类的构造函数
派生类的数据成员中包含基类的对象时,此对象称为子对象,即对象中的对象。
当派生类中包含子对象时,其构造函数的一般格式:
派生类名(参数总表):基类名(参数表0),子对象名1(参数表1),...,子对象名n(参数表n)
{
        派生类新增数据成员的初始化语句;
}
在定义派生类对象时,构造函数的调用顺序:
先调用派生类的构造函数---->调用基类的构造函数并执行函数体---->调用子对象的构造函数并执行函数体---->调用派生类的构    

造函数体

1,子类对象可以直接赋值给父类对象(切片/割片)。
2,父类对象不能直接赋值给子类对象。
3,父类对象的引用或指针可以直接指向子类对象。
4,子类对象的引用或指针不可以直接指向父类对象。(强制类型转换可完成)

最后,需要注意的几点:
1、友元关系不能继承,因为友元关系不属于类的成员(就好比你朋友的女朋友并不是你的女朋友)。
2、如果类中包含静态成员,无论继承了多少派生类,静态成员都只保存一份。
3、析构函数和构造函数不能被继承下来。原因:派生类除了继承基类的成员外,还可以添加只属于自己的新成员,如果用继承来   

的构造函数初始化,只能初始化从基类继承来的那部分,而派生类本身新添加的那部分成员初始化不了。析构函数也是一样的,

初始化不到派生类新添加的成员,导致内存泄漏。

21、路由器工作在网络层(第三层),同时兼有交换机的功能

22、网络层(第三层)负责点到点的传输(点:主机/路由器)

23、传输层(第二层)负责端到端的传输(端:源主机端/目的主机端(两端))

24、网络:
(TCP/IP参考模型)分为四层
第一层:应用层(服务)
第二层:传输层(TCP、UDP)
第三层:网络层(IP、ICMP、IGMP)
第四层:数据链路层(主机到网络层/物理层)

(OSI参考模型分为7层)
第一层:应用层(服务)
第二层:表示层
第三层:会话层
第四层:传输层(TCP、UDP)
第五层:网络层(IP、ICMP、IGMP)
第六层:数据链路层
第七层:物理层

25、NAT – 网络地址转换
路由器将私有地址转换为公有地址使数据包能够发到因特网上,同时从因特网上接收数据包时,将公用地址转换为私有地址。 在

计算机网络中,网络地址转换(Network Address Translation或简称NAT,也叫做网络掩蔽或者IP掩蔽)是一种在IP数据包通过

路由器或防火墙时重写源IP地址或/和目的IP地址的技术。

26、IP地址 = 网络地址 + 主机地址

P地址是192.168.100.1,这个地址中包含了很多含义。如下所示:      
网络地址(相当于街道地址): 192.168.100.0       
主机地址(相当于各户的门号): 0.0.0.1        
IP地址(相当于住户地址): 网络地址+主机地址=192.168.100.1      
广播地址: 192.168.100.255
注:192.168.100.1是私有地址,不能直接在Internet网络中应用,上Internet要转为公有地址

用网线直接连接或通过HUB或普通交换机间连接的计算机之间要能够相互通,计算机必须要在同一网络,也就是说它们的网络地址  

必须相同,而且主机地址必须不一样。如果不在一个网络就无法通。
计算网络地址就是判断网络中的计算机是否在同一网络,在就能通,不在就不能通。注意,这里说的是否在同一网络指的是IP地   

址而不是物理连接

将IP地址和子网掩码都换算成二进制,然后进行与运算,结果就是网络地址。

(1)私有地址
上面提到IP地址在全世界范围内唯一,看到这句话你可能有这样的疑问,像192.168.0.1这样的地址在许多地方都能看到,并不唯

一,这是为何?Internet管理委员会规定如下地址段为私有地址,私有地址可以自己组网时用,但不能在Internet网上用       

Internet网没有这些地址的路由,有这些地址的计算机要上网必须转换成为合法的IP地址,也称为公网地址,这就像有许多的世界

公园,每个公园内都可命名相同的大街,如香榭丽舍大街,但对外我们只能看到公园的地址和真正的香榭丽舍大街。下面是A、B

、C类网络中的私有地址段。你自己组网时就可以用这些地址了。
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
(2)回送地址
A类网络地址127是一个保留地址,用于网络软件测试以及本地机进程间通信,叫做回送地址(loopback address)。无论什么程

序,一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输。含网络号127的分组不能出现在任何网络上。

(3)广播地址
TCP/IP规定,主机号全为”1”的网络地址用于广播之用,叫做广播地址。所谓广播,指同时向同一子网所有主机发送报文。
(4)网络地址
TCP/IP协议规定,各位全为”0”的网络号被解释成”本”网络。由上可以看出:一、含网络号127的分组不能出现在任何网络上;二

、主机和网关不能为该地址广播任何寻径信息。由以上规定可以看出,主机号全"0"全"1"的地址在TCP/IP协议中有特殊含义,一  

般不能用作一台主机的有效地址。  

子网掩码     
从上面的例子可以看出,子网掩码的作用就是和IP地址与运算后得出网络地址,子网掩码也是32bit,并且是一串1后跟随一串0        

组成,其中1表示在IP地址中的网络号对应的位数,而0表示在IP地址中主机对应的位数。

27、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值