Java进阶与Scocket通讯
1. RuntimeException是JAVA在处理异常时的一个类,继承于Exception类,负责运行时抛出异常。常见的RuntimeException有NullPointerException,ClassCastException,IllegalArgumentException。
用一个小程序捕获异常。
void transfer(double amount) throws OutOfMoney {
if (blance < amount)
throw new OutOfMoney(“OutOfMoney!”);
blance -= amount;
}
try
{
transfer(amount);
} catch (OutOfMoney exc) {
exc.printStackTrace();
} finally {
}
2.
3.不申明语法上不会出现问题,但是去掉后会导致try、catch语句无法捕获到这个异常。所以应该要申明。
4.客户端会出错。
在 Socket server = new Socket(args[0], Integer.parseInt(args[1]));出错。
5.客户端抛出一个异常。
7.不能支持两个或以上客户端。服务端程序不支持多线程。
8.进程是一种重量级任务,线程是一种轻量级任务。每一进程占有独立的地址空间,包括代码、数据以及其他资源,而一个进程中的多个线程可以共享该进程的这些空间。进程之间的通讯开销较大且受到很多限制,而线程可以通过共享的公共数据区进行通信,开销小且更简单。进程间切换开销大,线程间切换开销小。
9.使用Runnable创建线程可以节约JAVA程序中宝贵的单继承指标,而使用继承Thread类的方法创建线程可以更为简单地完成同样的事情。
10.synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种:
修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;
修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;
修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;
修改一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象。
11.不存在。不会序列化对象的transient的实例变量,也不会序列化静态变量。
13.假如我们有两个程序员,一个程序员在写程序的时候,需要使用第二个程序员所写的类,但第二个程序员并没完成他所写的类。那么第一个程序员的代码能否通过编译呢?这是不能通过编译的。利用Java反射的机制,就可以让第一个程序员在没有得到第二个程序员所写的类的时候,来完成自身代码的编译。
14.
静态代理类实现了AccountService,有个主机host,端口号port。其中实现了getAccount方法,里面运用Connector、RemoteCall。
15.静态代理在程序运行前,.class文件就已经存在。动态代理在程序运行时,.class文件运用反射机制创建。
个人学习小结:
熟悉了JAVA中关于Socket通讯的内容。
了解了反射机制,弄清反射存在的必要性。
对序列化与非序列化机制有个初步的认识。
熟悉了两种代理模式,了解了两者的异同。
对uml图的绘制以及案例的抽象有所了解。