参考地址:https://wenku.baidu.com/view/fe54feadbb0d4a7302768e9951e79b8969026844
java面试参考:https://www.cnblogs.com/jianmang/category/716009.html
IOC(控制反转(别名:依赖注入))原理: http://www.cnblogs.com/jianmang/articles/4947615.html
AOP(面向切面编程)原理:https://www.cnblogs.com/jianmang/articles/4947908.html
死锁的四个必要条件:
1.互斥条件:每个资源要么分配一个进程,要么就是可用的,也就是说一旦分配给一个
进程,那么他就不可用。
2.占有和等待条件:已经得到了某个资源的进程可以请求新的资源。
3.不可抢占条件:已分配给一个进程的资源不能强制性被抢占,他只能被占有它的进程
显示释放。
4.环路等待条件:死锁发生时,系统中一定有两个或两个以上的进程组成一条环路,该
环路中的每一个进程都在等待着下一个进程所占有的资源。
产生死锁:
N个哲学家面前都有一碗粉,哲学家需要两把叉子才能吃到粉,而每个哲学家面前只有一
吧叉子,哲学家有两种状态,进食和思考,当一个哲学家饿了的时候,会分两次拿起叉子,但不
分秩序,如果取到两根叉子,他就进食,进食完毕后进入思考状态。
产生死锁的解法:
当哲学家分别尝试拿起叉子的时候,如果叉子已经被使用,则进入阻塞,直到叉子空闲,当一个
哲学家拿到两把叉子,则进食,进食完毕后,放下叉子,进入思考状态;当所有哲学家都拿起一把叉子
的时候,就进入了死锁。
产生饥饿的解法:
当哲学家拿起左叉的时候,判断右叉是否可用,如果不可用,则放下叉子,进入等待,但如果所有的
哲学家都是拿起左叉,右同时放下左,如此往复,就会产生饥饿。
Tcp三次握手:1,客户端发送SYN报文段,指定要连接的端口和和初始序列号
2,服务器发送自己的SYN报文段作为相应,发送服务器初始序列号
3,客户端确认服务器SYN,返回确认号。
三次握手的意义:让通信双方了解一个连接正在建立,并利用数据包承载特殊信息,交换序列号。
socket编程:
TCP client: TCP service:
1.socket()建立ssocket 1.WSAStart()启动socket
2.connection()发出连接请求 2.socket()创建socket
3.send()向socket写入信息 3.bind()绑定到端口
4,。closesockrt();关闭连接 4.listen()开始监听
5. accept()等待客户连接
6.send()/recv()从socket读取字符
7.closesocket()关闭连接
面向对象的三大特征:封装,继承,多态
面向对象就是对事物的划分,吧一个事物抽象成类,具体的吧一个事物的静态特征和动态特征抽象成属性和
方法,也就是吧一类事物的算法和数据结构封装在一个类中,程序就是多个对象和互相之间通信组成的。
面向对象具有封装性,继承性,多态性,封装隐蔽了对象内部不需要暴露的细节,使得内部细节的变动跟外界脱离
,只依靠接口进行通信,封装性降低了编程的复杂性,通过继承,使得新建一个类变得容易,一个类从父类哪里获得
其非私有的方法和公用属性的繁琐工作交给了编译器。而继承和实现接口运行的类绑定所产生的多态,使得不同类所
昌盛的对象能够对相同的消息作出不同的反应,极大的提高了代码的通用性。 面向对象的特性特高了代码的重用性和
可维护性。