一. java 反射
1.反射三个特性:运行时生成对象,运行期间调用方法,运行时更改属性。
2.java在编译时并不确定是哪个类被加载了,而是在程序运行的时候才加载,探知和使用。
3.反射功能:在运行时判断,调用任一个对象,类的方法和属性,常用类【Class类,Field类,Method类,Constructor类】
4.反射获取类的信息:常用forName("类完整包名")Class cls = Class.forName("");
5.从Class对象获取信息: 包括构造方法(getDeclaredConstructor),方法(getMethods),属性(getField),注释(getAnnotation)
6. 创建对象:Class对象的newInstance()
7.访问属性要设置权限setAccessible(),访问类的方法invoke(Object obj)
二.多线程
1.继承Thread类和实现Runable方法创建线程
2.线程4种状态:新生状态,可运行状态,阻塞状态和死亡状态
3.线程调度方法
join():暂停当前线程,等调用该方法的线程结束在执行本线程。
sleep():线程由运行中状态进入不可运行时间睡眠时间过了会再进入可运行状态。
yield():暂停当前线程执行,允许其他线程执行,该线程仍处于可运行状态,不转为阻塞状态。选择优先级更高的线程若无该线程继续执行。
4.synchronized方法声明同步,同步代码块synchronized(syncObject){}
5.线程间通信:wait()会挂起当前线程,并释放共享资源的锁;notify():随机解除一个wait()方法阻塞的线程,要等到线程获得锁才真正执行。notifyAll()全部解除阻塞。
三.网络编程
1,网络分层模型
物理层(建立,维护和断开物理连接),数据链路层(建立逻辑连接,进行硬件地址寻址,差错校验),网络层(进行逻辑寻址,实现不同网络之间的路径选择),传输层(定义传输数据的协议端口,记忆流控和差错校验),会话层(建立,管理和终止会话),表示层(数据的表示,安全和压缩),应用层(网络服务和最终用户的接口)
2.基于Socket的编程
客户端:建立连接new Socket(ip,port),打开输入输出流getOutputStream()和getInputStream(),向输出流写入信息write(),向输入流读取响应信息,关闭流
服务端:建立连接,监听端口new ServerSocket(port),使用accept()等待客户端出发通信,打开输入输出流,向输出流写信息,从输入流读信息,关闭流