知识点汇总
PPP协议有两种认证方式,PAP(口令鉴别协议)方式和CHAP(口令握手鉴别协议)方式。PAP只需进行一次认证,并且只在链路初始状态时执行。而且用户名与密码的传送方式是明文的。CHAP采用周期性的验证,并且认证内容经过MD5加密后再传送,安全性要比PAP高。
- drop是完全删除表,包括表结构
- delete是删除表数据,保留表的结构,而且可以加where,只删除一行或者多行
- truncate 只能删除表数据,会保留表结构,而且不能加where
【c++不能重载的运算符】
1、.(点运算符,成员访问运算符)
2、::(域运算符)
3、.*(点星运算符,成员指针访问运算符)
4、?:(条件运算符)
5、sizeof(长度运算符)
malloc和new 都是在堆上请求内存空间的。
fseek函数的第一个参数是文件指针,第二个参数应是位移量,第三个参数是
起始点。故正确答案是B。
【计算机网络】
主动FTP:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 <- 服务器 20端口
被动FTP:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 -> 服务器 >1023端口
星型拓扑图:点到点式
环形式:点到点
树形:点到点
总线型:广播式;
网状:点到点和广播式
远古DHCP服务运行过程
客户端发现服务器
电脑的操作系统安装了TCP/IP协议栈,这个协议栈包括了一个DHCP客户端进程,这个客户端会广播一个发现服务器的报文。
类似于我们找工作的时候海量投简历服务器响应客户端
可能会有多个服务器响应这个发现报文,各个服务器从自己对 ip地址池里面选出合适的ip地址,子网掩码、默认网关等参数,以单播方式发送给客户端。
类似于投简历之后有多个公司回应你的简历客户端请求ip参数
当客户端收到这么一堆回复之后,从中挑选了一个合适的服务器,并发送请求报文,请求服务器提供的Ip参数。
好比我们收到了众多公司的面试通知,但是我们只选择去了一家服务器确认请求
服务器收到客服端的请求后,发送确认。
相当于找工作最后面试成功
调用Play函数需要将5隐式类型转换为Play函数中的形参b,会调用B的B(int i): data(i),打印“constructed by parameter5”。
Play函数返回时需要调用B的复制构造函数给对象temp初始化。
Play函数返回后需要调用b的析构函数,将Play函数的形参释放,打印“destructed”。
main函数返回后需要释放temp,打印“destructed”。
我们先来看一下指针常量是什么:指针是形容词,常量是名词。这回是以常量为中心的一个偏正结构短语。那么,指针常量的本质是一个常量,而用指针修饰它,那么说明这个常量的值是一个指针。
指针常量的值是指针,这个值因为是常量,所以不能被赋值。
回过来看本题:
A选项:NULL 是一个标准规定的宏定义,用来表示空指针常量。
B选项:C语言规定函数名就是函数的入口地址。符合指针常量的性质:值是一个指针,且不能修改。
C选项:数组的名字本质上与函数名是相同的,只不过一个指向了函数体,一个指向的数组。在一次运行中,数组名所指向的地址都是同一个地址,也符合指针常量的定义。
D选项:宏函数的名字则不是,原因在于宏在编译前先处理,类似于查找替换(支持正则表达式匹配),所以宏函数的名字只是简单的文本,并没有实际意义,所以不是指针常量。
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态 存储区和常量存储区。
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量 的存储区。里面的变量通常是局部变量、函数参数等。
堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应 用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉, 那么在程序结束后,操作系统会自动回收。
自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的, 不过它是用free来结束自己的生命的。
全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的 C语言中,全局变量又分为初始化的和未初始化的(初始化的全局变量和静态变 量在一块区域,未初始化的全局变量与静态变量在相邻的另一块区域,同时未被 初始化的对象存储区可以通过void*来访问和操纵,程序结束后由系统自行释 放),在C++里面没有这个区分了,他们共同占用同一块内存区。
常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许 修改(当然,你要通过非正当手段也可以修改,而且方法很多)
【计组知识点】CPU执行时间(执行一个程序所花的时间)=CPU时钟周期数/主频(CPU时钟频率,时钟周期的倒数)=(指令条数×CPI)/主频。CPI,Clock Cycle Per Instruction,每条指令执行所需要的时钟周期数。题干指令减少到原来的70%,CPI增加到原来的1.2倍,公式各部分看作未知数,时间将是原来20s的0.7×1.2=0.84倍,即16.8s
一层(物理层):网卡、集线器、中继器
二层(数据链路层):网桥、交换机
三层(网络层):路由器
传输层、应用层:网关。
1、fork
一个程序一调用fork函数,系统就为一个新的进程准备了前述三个段,首先,系统让新的进程与旧的进程使用同一个代码段,因为它们的程序还是相同的,对于数据段和堆栈段,系统则复制一份给新的进程,这样,父进程的所有数据都可以留给子进程,但是,子进程一旦开始运行,虽然它继承了父进程的一切数据,但实际上数据却已经分开,相互之间不再有影响了,也就是说,它们之间不再共享任何数据了。而如果两个进程要共享什么数据的话,就要使用另一套函数(shmget,shmat,shmdt等)来操作。现在,已经是两个进程了,对于父进程,fork函数返回了子程序的进程号,而对于子程序,fork函数则返回零,这样,对于程序,只要判断fork函数的返回值,就知道自己是处于父进程还是子进程中。事实上,目前大多数的unix系统在实现上并没有作真正的copy。一般的,CPU都是以“页”为单位分配空间的,象INTEL的CPU,其一页在通常情况下是4K字节大小,而无论是数据段还是堆栈段都是由许多“页”构成的,fork函数复制这两个段,只是“逻辑”上的,并非“物理”上的,也就是说,实际执行fork时,物理空间上两个进程的数据段和堆栈段都还是共享着的,当有一个进程写了某个数据时,这时两个进程之间的数据才有了区别,系统就将有区别的“页”从物理上也分开。系统在空间上的开销就可以达到最小。
2、exec
一个进程一旦调用exec类函数,它本身就“死亡”了,系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留下的,就是进程号,也就是说,对系统而言,还是同一个进程,不过已经是另一个程序了。不过exec类函数中有的还允许继承环境变量之类的信息,这个通过exec系列函数中的一部分函数的参数可以得到。
线性分类器有三大类:感知器准则函数、SVM、Fisher准则,而贝叶斯分类器不是线性分类器。
感知器准则函数:代价函数J=-(W*X+w0),分类的准则是最小化代价函数。感知器是神经网络(NN)的基础,网上有很多介绍。
SVM:支持向量机也是很经典的算法,优化目标是最大化间隔(margin),又称最大间隔分类器,是一种典型的线性分类器。(使用核函数可解决非线性问题)
Fisher准则:更广泛的称呼是线性判别分析(LDA),将所有样本投影到一条远点出发的直线,使得同类样本距离尽可能小,不同类样本距离尽可能大,具体为最大化“广义瑞利商”。
贝叶斯分类器:一种基于统计方法的分类器,要求先了解样本的分布特点(高斯、指数等),所以使用起来限制很多。在满足一些特定条件下,其优化目标与线性分类器有相同结构(同方差高斯分布等),其余条件下不是线性分类。
这道题的答案应该是B和D
首先,含有纯虚函数的类是抽象类,继承这个抽象类的子类可以覆盖也可以不覆盖纯虚函数。如果基类中的纯虚函数在子类中没有覆盖,那这个子类还是一个抽象类,不能实例化。A 错误
B就是抽象类的特性,B 正确
C选项中,纯虚函数是可以有函数体的,当我们希望基类不能产生对象,然而又希望将一些公用代码放在基类时,可以使用纯虚函数,并为纯虚函数定义函数体,只是纯虚函数函数体必须定义在类的外部,C 错误
D选项是抽象类的定义,D 正确
模板类的继承包括四种:
1.(普通类继承 模板类 )
2.(类模板继承了普通类(非常常见))
3.(类模板继承类模板)
4.(类模板继承 模板类,即继承模板参数给出的基类)
注:模板类是类模板的一个实例。即,类型参数T具体化。
substring实际是new,5字符
str3和4也都是new,每个5字符
分别都会创建新的对象
常量池是PermGen的
因此应该是一共15字符
.静态语句块中x为局部变量,不影响静态变量x的值
2.x和y为静态变量,默认初始值为0,属于当前类,其值得改变会影响整个类运行。
3.java中自增操作非原子性的
main方法中:
执行x--后 x=-1
调用myMethod方法,x执行x++结果为-1(后++),但x=0,++x结果1,x=1 ,则y=0
x+y+ ++x,先执行x+y,结果为1,执行++x结果为2,得到最终结果为3
构成C程序的基本单位是函数
关中断 2.保存断点 3.识别中断源 4.保存现场 5.中断事件处理 6.恢复现场 7.开中断 8.中断返回
什么是友元函数?
一个类的私有数据成员通常只能由类的函数成员来访问,而友元函数可以访问类的私有数据成员,也能访问其保护成员友元函数的用处体现在哪里?
2.1 使用友元函数可提高性能,如:用友元函数重载操作符和生成迭代器类
2.2 用友元函数可以访问两个或多个类的私有数据,较其它方法使人们更容易理解程序的逻辑关系使用友元函数前应注意:
3.1 类的友元函数在类作用域之外定义,但可以访问类的私有和保护成员
3.2 尽管类定义中有友元函数原型,友元函数仍然不是成员函数
3.3 由于友元函数不是任何类的成员函数,所以不能用句柄(对象)加点操作符来调用
3.4 public, private, protected成员访问符与友员关系的声明无关,因此友元关系声明可在类定义的任何位置,习惯上在类定义的开始位置
3.5 友元关系是指定的,不是获取的,如果让类B成为类A的友元类,类A必须显式声明类B为自己的友元类
3.6 友元关系不满足对称性和传递性
3.7 如果一个友元函数想与两个或更多类成为友元关系,在每个类中都必须声明为友元函数注:由于C++属于混合语言,常在同一个程序中采用两种函数调用且这两种函数调用往往是相反的。类C语言的调用将
基本数据或对象传递给函数,C++调用则是将函数(或信息)传递给对象
拷贝构造函数从来不显示调用,而是由编译器隐式地调用:
(1) 用类的一个对象去初始化另一个对象时;
(2) 当函数的形参是类的对象时(也就是值传递时),如果是引用传递则不会调用;
(3) 当函数的返回值是类的对象或引用时。
A,java是强类型语言,所有的方法必须放在类里面,包括main
B ,java中可以有多个重载的main方法,只有public static void main(String[] args){}是函数入口
C,内部类的类名一般与文件名不同
D,函数都必须用{}括起来,不管是一条语句还是多条语句
开环的作用是通过良好的网络系统设计来避免 网络拥塞。拥塞控制算法中,闭环控制是通过反馈机制来调整当前网络流量,使网络流量与网络可用资源和协调
电路交换:采用同步时分复用信号,将时间划分为基本时间单位,1帧占用时长125us,每帧分为若干个时隙,并按顺序编号,所有编号相同的时隙构成一个恒定速率的子信道,一个子信道传递一个话路的信息,称为位置化信道。
电路交换的资源分配采用静态分配策略,通信双方的电路连接中任何一点出现故障,需要重新拨号建立连接。
分组交换:普遍采用统计复用方法,采用逐段转发、出错重发,采用报文交换的“存储-转发”方式,基本单位是较短的、规格化的分组。分组便于在交换机中处理和存储,网络轻负载情况下时延短。分组交换的两种工作模式:数据报、虚电路。
帧中继:传输基本数据单元是帧。帧中继技术是传统的分组交换的一种改进方案,适合LAN(局域网)之间的数据互联。
ATM交换:本质上是一种“高速分组交换”,是电路交换和分组交换的结合。ATM交换的基本单元是ATM信元。每个固定长度的ATM信元包含5字节的信头和48字节的信息段,并使用空闲信元填充信道,既可以根据信头标志区分不同用户的数据,用户数据占有的时间位置不再受约束,又可以使得信道被分为等长的时间小段,为提供固定比特率和固定时延的电信业务创造类条件。
编译器将Java源代码编译成字节码class文件
类加载到JVM里面后,执行引擎把字节码转为可执行代码
执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行。
不应发送ICMP差错报文的几种情况:
1.对ICMP差错报文,不再发送ICMP差错报告报文。
2.对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文
3.对具有多播地址的数据报,都不发送ICMP差错报告报文
4.对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报,不发送ICMP差错报告报文
网络操作系统的基本任务:
- 屏蔽 本地资源与网络资源之间的差异
- 为用户提供基本的网络服务功能
- 管理网络系统的共享资源
- 提供网络系统的安全服务
运行时异常: 都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。
非运行时异常 (编译异常): 是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。
1.final修饰变量,则等同于常量
2.final修饰方法中的参数,称为最终参数。
3.final修饰类,则类不能被继承
4.final修饰方法,则方法不能被重写。
final 不能修饰抽象类
final修饰的方法可以被重载 但不能被重写
1.list 底层数据结构为双向链表,支持快速增删
2.vector 底层数据结构为数组,支持快速随机访问
3.map 底层数据结构为红黑树,除了hashmap无序,其他实现结构有序,不重复
4.set 底层数据结构为红黑树,除了hashset无序,其他实现结构有序,不重复
数组名不等价于指针,只有数组名作为函数参数时,才退化为指针,此时数组名的sizeof()就是指针大小,除了这种情况外,均是整个指整个数组的大小
纯虚函数除了有virtual 关键字外,还令它等于0,以表为纯虚函数。拥有纯虚函数的类称为 抽象类
A选项,快速排序的时间复杂度为O(nlogn),空间复杂度也是O(nlogn)。
B选项,归并排序的时间复杂度为O(nlogn),空间复杂度为O(n)。
C选项,堆排序的时间复杂度为O(nlogn),空间复杂度为O(1)。
D选项,选择排序的时间复杂度为O(n^2),空间复杂度为O(1)。
ICMP报文作为数据字段封装在IP分组中,因此,IP协议直接为ICMP提供服务。UDP和TCP都是传输层协议,为应用层提供服务。PPP协议是链路层协议,为网络层提供服务。