1 操作系统中同步个异步的区别?分别用在什么场合?
同步是就是调用者发出一个功能调用时,在没有得到结果之前,该调用就不会返回;异步就是调用者发出一个功能调用后,调用者不能立刻得到返回结果,当处 理这个调用的部件完成后,通过状态,通知或回调来通知调用者。
B/S模式 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事。
AJAX技术 异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
A: 原子性 C: 一致性 I: 隔离性 D: 持久性
主要区别是UDP不能提供可靠的数据传输,而TCP提供可靠的数据传输。
当强调传输的完整性,可靠性,可控性而不是时传输性能时,选择TCP;当强调传输的性能而不是完整性时,如传输视频和多媒体应用,明显选择UDP,在传输数据的时间很短时,也适合用UDP,如DNS.
栈区:由编译器自动分配和释放,速度快,但不受程序员控制,一般存放函数的参数指,局部变量值等。其操作方式类似于数据结构中的栈。
堆区:一般由程序员分配和释放,速度较慢,容易产生内部碎片,若程序员不释放,最终可能由操作系统释放。类似Java语言的话,也会由gc回收释放。
栈是向下增长的,堆是向上增长的。
5. 进程和线程的区别?
一个程序至少有一个进程,一个进程至少有一个线程。
进程在运行时有独立的内存空间,而多个线程共享内存空间。从而极大的提高了程序的执行效率。
在一个应用程序中,有多个执行部分可以通过多个线程同时执行,但是操作系统并没有把这多个线程当多个独立的应用程序,来实现进程的调度和管理以及资 源分配。这是进程和线程的重要区别。
进程是系统进行资源分配和调度的一个独立单位。
线程没有独立的系统资源,它的资源来自系统给进程分配的资源。
#include<>用于标准库文件或系统提供的头文件,区存放他们的位置去查找他们。
#include""用于用户自定义的头文件,在当前目录下没有找到时,才会去标准库文件中查找。
因为抽象类没有提供实例化它的构造方法。
单例模式:确保一个类只有一个对象,并且它自己实例化这个对象后在整个系统中提供。
工厂模式:主要是为创建对象提供过渡性接口,以便将创建对象的过程屏蔽起来,达到提高灵活性的目的。
开放定址法:一旦发生了冲突了,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入。
再散列函数:用一种散列函数发生冲突了,就再使用下一种散列函数,再冲突了,再换一种散列函数,相信总有一个散列函数会解 决冲突。这种方法使得关键字不产生聚集,但相应的增加了计算的时间。
链地址法:将所有的冲突的记录存储在一个单链表中,无论有多少个冲突,都只是在当前的位置给单链表增加一个节点。但它查找 时需要遍历单链表,性能会下降。
公共溢出区法:就是将冲突的关键字建立一个公共的溢出区来存放。
10.头文件中的ifndef/define/endif的作用?
C语言进行预处理,防止头文件被重复引用。
11.#if和#endif作用?
他们在编译时决定,如果条件成立就编译里面的内容,如果不成立,就不编译。
12.IP组播有哪些好处?
组播是一种允许一个或多个发送者(组播源)发送单一的数据包到多个接受者的网络技术。组播可以大大的节约网络带宽,因为无论有多少个网络地址,在整个网络的任何一条链路上只传送单一的数据包。所以说组播技术的核心就是在节约网络资源的前提下保证服务质量。
13.动态链接库的两种方式?
载入时动态链接和运行时动态链接。
14.各种网络协议
15.程序什么时候使用线程?什么时候单线程效率高?
耗时的操作使用线程,提高程序响应。
并行操作使用线程。
在多CPU线程中,使用线程提高CPU的利用率。
改善程序结构,一个既长又复杂的进程,可以考虑分成几个单独的部分,让多个线程区执行他们,这样有利于程序的修改和理解。
其他情况用单线程。