分布式计算(一)——Java进阶与Socket通讯

1.解释 RuntimeException。例举它的1-2个之类,并用一个小程序验证捕获并处理异常的过程。

错运行时异常都是 RuntimeException 类及其子类异常。这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理,但 程序应该从逻辑角度尽可能避免这类异常的发生。

如NullPointerException 、 IndexOutOfBoundsException 等

2.在生产实践中,每个业务模块都会定义一个异常基类,例如 Account 模块定义 AccountException 继承 Exception,然后在定义各种业务异常 如 OutOfMoneyException 继承 AccountException。请使用 UML 绘图工具 UMLet 绘制这些类及其关系。

3.类的方法中,如果抛出一个异常类型,方法声明中能否不申明?例如 public void transfer(double amount) throws OutOfMoney 去掉 throws OutOfMoney。去掉的后果是什么?

不行,在方法声明时throws的意思时将异常的抛出交给方法来做,若想要在类的方法中抛出异常就必须声明,若去掉则会报错。

4.Socket是两个进程联系的虚拟通道。如果服务器程序不启动,仅运行客户端,客户端会阻塞还是出错?在那条语句?

会出错。

在new Socket(args[0], Integer.parseInt(args[1]))处出错。

5.如果程序运行到一半,服务端意外退出,客户端会表现出什么行为?

没有任何表现。通信无反应。

6.(!)BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream())); 语句是典型的设计模式“装饰模式”,请检索自学“Decorator Pattern”,请使用 UML 绘图工具 UMLet 绘制涉及的类及其关系。

7.案例中 ServerSocket 能否支持两个或以上客户端?为什么?

不能。

因为Socket是由机器地址和端口号来区分/识别的,那么在一个特定的计算机网 络上,每一个Socket都是以此方式被唯一识别的。这就使得应用程序可以唯一地去定位网络上的另外一个位置的Socket。只能连一个客户端。

8.线程与进程的区别?

进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源。

通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。

由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。

线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。

9.Java 两个启动线程方法各有哪些优点、缺点?

优点:继承Thread类和实现Runnable接口。

缺点:继承是单继承,实现接口可以多继承,如果用继承Thread类的方式,就不可以继承其他类了,而实现接口的方式编程复杂,若访问当前线程,必须使用Thread。currentThread()方法。

10.(!)简述 Java 中 synchronized 的用法。

线程阻塞是实现线程之间通信与同步的基础,Java 语言为线程提供了多种阻塞机制,其中 由 synchronized 标识的同步代码段与 wait()/notify()机制是最重要的两类线程阻塞形式。

同步模块:

同步对象:

同步方法:

11.对象序列化二进制流中能否存在指针值(内存地址引用)?为什么?

可以存在指针值,但是一般序列化数据,因为序列化一般用于文件的读写以及数据的传输,而储存指针值在关闭程序后指针值就失效了没有意义。

12.(!)为了使序列化和反序列化变得易于理解,人们提出了使用 Json,XML,Yaml等格式的文本表示对象。请写一个小程序,选择其中一种格式,在控制台输出Account对象

 

13.instanceof 很好用,为什么需要反射技术呢?请结合案例简述反射的必要性。

Instanceof 用于判断对象是否为某一类或接口的实例,避免转换异常,但是放射技术可以用来传递类型,比如说远程方法的调用,服务器不知道客户端传过来的参数的类型,利用反射技术就可以通过字符串的形式告诉客户端参数类型。

14.代理模式(proxy pattern)的特征是代理类与委托类有同样的接口。请使用 UML 绘图工具 UMLet 绘制案例代理模式的 UML 图(图8),并用自然语言简单描述静态代理类 StaticServiceProxy 的工作过程。

StaticServiceProxy 初始化时传入用于连接的主机号以及端口,当调用getAccount方法并传入需要发送的数据时,开始连接服务器,连接成功则将数据打包并调用connector中的方法来进行远程调用。

15.简述静态代理和动态代理的区别。

静态代理所要调用的远程方法是已经确定的用户无法自定义的,而动态代理需要用户提供他们所想要调用的方法名称。

时间: 2024-10-28 08:23:08

分布式计算(一)——Java进阶与Socket通讯的相关文章

java进阶 ------ 基于Socket低层次网络编程

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] Socket通讯: 网络上的两个程序通过一个双向的通讯连接实现数据的交互,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接.Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定. 在传统的UNIX环境下可以操作TCP/IP协议的接口不止Socket一个,Socket所支持的协议种类不光

Java Socket通讯---网络基础

java socket 通讯 参考慕课网:http://www.imooc.com/learn/161 一.网络基础知识 1.1 通讯示意图 1.2 TCP/IP协议 TCP/IP是世界上应用最为广泛的协议 是以TCP/IP为基础的不同层次上多个协议的集合 也称TCP/IP协议簇 或 TCP/IP协议栈 TCP:Transmission Control Protocol, 传输控制协议 IP:Internet Protocol,互联网协议 1.3 TCP/IP模型 1.4 IP地址 为实现网络中

Java SSL Socket通讯示例

上一篇<OpenSSL与KeyStore指令小集>里面说到,最近研究SSL加密,会给出一个Java的小示例.复制一份可以运行的代码到生产上是非常不负责任的行为,不过小示例可以带我们入门,快速看清事物的本质.罗马不是一天建成的. 本文将给出一个Java SSL Socket的小例子,包括了Server和Client.希望大家上手之后,要多去研究相关的资料,理解基础概念.Java的优点是封装得比较彻底,需要介入的地方比较少,缺点是随着Java版本的升级和发展,会有很多新的概念和类涌出来,都要搞清楚

java代码实现socket接口通讯(堵塞I/O)

   传统的java实现socket通讯比较简单实现,不过它属于堵塞式的I/O流存取,只能由一个线程完成当前任务才能起下个一个线程,无法解决高并发:   1.简单的socketservice 对每一个Socket连接建立一个Handler处理线程,处理线程对inputstream流中的数据进行相应的处理后,将处理结果通过PrintWriter发送给客户端,在最后需要关闭输入流.输出流和socket套接字句柄资源. 1 public class TimeServer { 2 3 public st

Java进阶之路

Java进阶之路--从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题.希望这篇文章会是你看到过的最全面最权威的回答. 一: 编程基础 不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的.下面几篇文章从思想到实现,为你梳理出常用的数据结构和经典算法. 1-1 常

Java进阶书籍推荐

学习Java,书籍是必不可少的学习工具之一,尤其是对于自学者而言.废话不多说,下边就给广大程序猿们推荐一些Java进阶的好书. 第一部分:Java语言篇 1.<Java编程规范> 适合对象:初级.中级 介绍:这本书的作者是被誉为Java之父的James Gosling,入门者推荐阅读,对基础的讲解很不错. 2.<Java编程思想> 适合对象:初级.中级 介绍:豆瓣给出了9.1的评分,全球程序员广泛赞誉.有人说这本书不适合初学者,不过小编认为作者并没有对读者已有的知识经验有过多要求,

java网络编程socket解析

转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在C/S通信模式中,client需要主动创建于server连接的Socket(套接字).服务器端收到了客户端的连接请求,也会创建与客户连接的Socket.Socket可看做是通信两端的收发器.server与client都通过Socket来收发数据. 1.构造Socket 1.Socket() 2.So

转:java 进阶之路

转: https://www.zhihu.com/question/39139518 一.基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133 Java内存模型 1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具 jps, jstack, jmap, jconsole, jinfo, jhat, javap, … BTrace — Project Ken

Java开发之Socket编程详解

本文从3个方面对Socket编程进行详解: 一,网络编程中两个主要的问题 二,两类传输协议:TCP:UDP 三,基于Socket的java网络编程 一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机.而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要