反射相关总结(socket编程)

概念: 进程,线程,主线程,用户线程,守护线程
每个线程都有独立的栈空间
创建线程的三种方式
线程的常用方法:
	Thread. activeCount()
	Thread. currentThread()
	getName()/setName(),,
	isDaemon(), setDaemon(true),
	isAlive(), getId(),
	getState() ,  NEW , RUNNABLE, WAITING, BLOCKED, TERMINATED
	
	getPriority()/setPriority(),  

Thread. sleep()
interrupt(), isInterrupted() / Thread.interrupted(),
join(),
Thread .yield()
stop()
线程同步

  1. 线程安全问题
  2. 出现了线程安全问题怎么办?
  3. 如何同步?
    synchronized( 锁对象 ){
    同步代码块
    }
  4. 线程同步的工作原理
  5. 线程要同步必须使用同一个锁对象, 只要使用了同一个锁对象的代码块就可以同步
  6. 同步方法
  7. 死锁

1 线程
1.1 生产者消费者设计模式
模拟企业的生产者与消费者
两个线程交替打印奇数与偶数
两个线程交替打印100个数和10个数

1.2 Timer定时器

1.3 总结遇到的线程安全的类
StringBuffer

Vector

HashTable
Collections.synchronizedXXX(XXX)
开发多线程程序,使用集合
ConcurrentHashMap<K,V>
ConcurrentSkipListMap<K,V>
ConcurrentSkipListSet
CopyOnWriteArrayList
CopyOnWriteArraySet

HashTable使用整个哈希表作为锁对象
ConcurrentHashMap<K,V>采用了分段锁协议, 默认分16段.

2 反射
2.1 概述
反射就是根据字节码文件,反射类的信息,字段/方法/构造方法等内容, 动态的创建对象/动态的调用方法的技术

反射依赖Class对象.
把所有小猫抽象为Cat类,把所有小狗抽象类Dog类, 把所有计算机抽象为Computer类, 把Dog类/Cat类/Computer类/String类等所有的类抽象为Class类. Class类描述所有类的信息
如何获得Class对象?
  1. 每个 类都有一个class属性,返回这个类的Class对象
  2. 每个对象都有一个getClass()方法,返回对象的运行时类
  3. Class类中有一个静态方法forName(完整类名) 返回Class对象

2.2 反射类的信息
class1.getModifiers() 类修饰符
class1.getSimpleName() 简易类名
class1.getSuperClass() 父类
class1.getInterfaces() 接口

2.3 反射类的内容
字段Field
class1.getDeclaredFields() 所有字段
class1.getField( 字段名 ) 指定名称的公共字段
class1.getDeclaredField( 字段名 ) 指定名称的字段

	field.getModifiers()		字段修饰符
	field.getType()			字段类型
	
方法
	class1.getDeclaredMethods()		所有方法
	class1.getMethod(方法名, 方法参数类型列表) 	指向指定签名的公共方法
	
		method.getModifiers()	方法修饰符
		method.getReturnType()	方法返回值类型
		method.getName()
		method.getParameterTypes()	方法参数列表数组
构造方法
	class1.getConstructor( 参数列表)  指向指定参数列表的公共构造方法

2.4 反射创建对象
class1.newInstance() 通过Class对象创建实例, 默认调用无参构造 ,如果没有无参构造,会出异常
constructor.newInstance( 构造方法的实参列表 )

2.5 访问字段
field.get( 实例名 ) 返回指定实例的字段值
filed.set( 实例名, 字段值) 设置实例的字段值
注意:
如果是静态字段, 在实例名位置传递null

2.6 反射调用方法
method.invoke( 实例名, 方法的实参 )
如果是静态方法, 实例名传递null

2.7 Properties+IO+Reflect实例

3Socket编程

  1. 应用程序的结构
    单机应用程序, 只能由一个用户使用.
    C/S结构, Client(客户端)/Server(服务器), 如QQ, 需要下载/安装/升级客户端, 客户端与服务器通讯, 现在手机的APP
    B/S结构, Browser(浏览器)/Server(服务器), 客户只需要安装一个浏览器即可,

  2. 开发网络程序三要素
    ip地址
    端口号, 每个 能上网的程序都有一个对应的端口号
    通讯协议

  3. Socket是一种套接字协议

  4. TCP/IP协议
    TCP 传输控制协议
    就类似于打电话
    三次握手
    UDP用户数据报协议
    类似于对讲机

代码
1)生产者消费者
2)反射调用方法
3)Properties+IO+Reflect

猜你喜欢

转载自blog.csdn.net/qq_30347133/article/details/83515657