《JAVA程序设计》第十一周学习总结
一、目录:
- 第十三章知识总结
- 上周错题
- 代码托管
- PSP
二、第十三章知识总结:Java网络编程
- URL类是
java.net
包中的一个重要的类,URL的实例封装着一个统一资源定位符,使用URL创建对象的应用程序称作客户端程序。 - 一个URL对象包含的三个基本信息:协议、地址和资源。
- 协议:必须是URL对象所在的Java虚拟机支持的协议,常用的有:Http、Ftp、File协议,由参数protocol指定。
- 地址:必须是能连接的有效IP地址或域名,由参数host指定。
- 资源:可以是主机上的任何一个文件,由参数file指定。
- 构造方法:
public URL (String spec) throws MalformedURLException
public URL(String protocol,String host,String file) throws MalformedURLException
- URL对象调用
InputStream()
方法返回一个指向对象包含的资源的输入流,可以用来读取信息。 - Internet上主机表示地址的两种方式:
- 域名
- IP地址
- 获取地址:
- 获取Internet上主机地址:
getByName(String s)
- 获取本地机地址:
getLocalHost()
- 获取Internet上主机地址:
- IntAdress类中两个实例方法:
public String getHostName()
获取对象所含的域名;public String getHostAdress()
获取对象所含的IP地址。
- 套接字中与mysocket相关的方法:
- getInputStream()获得一个输入流
- 用getInputStream()得到的输入流接到另一个DataInputStream数据流上
- getOutputStream()获得一个输出流
- 用getOutputStream()得到的输出流接到另一个DataOutputStream数据流上
- getInputStream()获得一个输入流
- Socket类的构造方法:
Socket(String host, int port)
- ServerSocket 的构造方法:
ServerSocket(int port)
- 使用方法
accept()
将客户端的套接字和服务器端的套接字连接起来
try{ Socket sc = serverForClient.accept();
}
catch(IOException e) {}
- 套接字通信的两个基本原则:
- 服务器要启动一个专门的线程与客户的套接字建立连接;
- 套接字的输入流在读取信息时可能发生阻塞,所以客户端与服务器端都需要在一个单独的线程中读取信息。
- 数据包的发送与接收:
- 使用
DatagramPacked
类的构造方法DatagramPacket([字节数组],[长度],[地址],[端口])
创建数据包对象 - 使用
DatagramSocket
类创建的对象调用send([数据包])
方法来发送数据包。
- 使用
- 数据包对象可以用DatagramSocket类得到构造方法DatagramPacket([字节数组],[长度])来创建数据包对象。
- Internet的地址是a.b.c.d的形式,计算机地址分为四大类:
②A类:a<128,则a表示网络地址,b,c,d表示主机地址;
②B类:128<=a<192,则a,b表示网络地址,c,d表示主机地址;
②B类:192<=a则a,b,c表示网络地址,d表示主机地址;
②B类:224.0.0.0~224.255.255.255是保留地址,称为D类地址。 - 远程调用的基本步骤是:客户程序请求远程对象调用方法,然后远程对象调用方法并返回必要的结果。
- RMI为标志远程对象,实现了
java.rmi
包中的Remote
接口,注意必须扩展这个接口,同时远程对象的类必须要实现Remote
接口。 - 远程对象创建之前,RMI要求远程服务器必须先启动注册
rmiregistry
。然后远程服务器使用java.rmi
包中的Naming
类调用类方法rebind(String name.Remote obj)
绑定一个远程对象到rmiregistry
所管理的注册表中。 - 存根是一种特殊的字节码,并让这个存根产生的对象作为远程对象的代理,其字节码后缀为
"_Stub"
。 - 代理的特点是它与远程对象实现了相同的接口。
三、上周错题:
- 错题一:
- 使用 Statement 来执行 SELECT 等查询用的 SQL 指令时,应使用下列哪个方法?
A .executeSQL()
B .executeQuery()
C .executeUpdate()
D .executeFind() - 答案:B
- 使用 Statement 来执行 SELECT 等查询用的 SQL 指令时,应使用下列哪个方法?
- 错题二:
- 哪些 JDBC 驱动程序可以有跨平台的特性?
A .TYPE 1
B .TYPE 2
C .TYPE 3
D .TYPE 4 - 答案:C,D
- 哪些 JDBC 驱动程序可以有跨平台的特性?
- 错题三:
- 关于 Connection 的描述,何者正确?
A .可以从 DriverManager 上取得 Connection
B .可以从 DataSource 上取得 Connection
C .在方法结束之后 Connection 会自动关闭
D .Connection 是线程安全( Thread-safe) - 答案:A,B
- 关于 Connection 的描述,何者正确?
- 错题四:
- 现有以下代码,哪个选项插入将输出“abc”?
class ForInTest {
static List list=new ArrayList();
public static void main (String [] args) {
list. add("a"); list. add("b");list. add( "c");
//insert code here
System.out.print (o);
}
}
A .for (Iterator o : list.iterator(); o.hasNext (); )
B .for (Iterator o : list)
C .for (Object o : list.iterator())
D .for (Object o : list)
- 答案:D
- 错题五:
- 现有以下代码,哪些选项插入到第5行可以通过编译?
1. import java.util.*;
2.
3. Class FindStuff {
4.public static void main (String[]args) {
5. //insert code here
6. c.put ("X", 123);
7. }
8. }
A .Map c= new SortedMap();
B .HashMap c= new HashMap();
C .HashMap c= new Hashtable();
D .SortedMap c= new TreeMap();
E .ArrayList c= new ArrayList();
F .Map c = new LinkedHashMap();
- 答案:B,D,F
四、代码托管:
https://gitee.com/sgm5/text1/commit/78388844e3273b54e50bfae9487d80dfa5816c52
五、PSP:
周数 | 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第十一周 | 4797/4057 | 1/12 | 19/110 |