⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 day14.txt

📁 达内科技上课的 java学习笔记 分为18天学完
💻 TXT
字号:
                       CoreJava(day14) 2007-12-20  -- 李艳





对象的序列化接口Serializable(课堂代码:Person.java,TestObjectOutput.java,TestObjectInput.java)



	想要在网络中传递对象就必须要序列化。

	Serializable接口没有方法,是标识接口

	serialVersionUID的静态常量,在接受传输的数据时会自动检查该值,保证版本的相同。



	包名、类名、属性可以被序列化

	方法、构造器不会序列化

	所有的静态属性都不会被序列化



	属性会被递归序列化,即一个序列化对象内部属性的对象也需要序列化。若内部属性不支持序列化,就会抛出不能序列化异常。

			

	多态,在序列化时用的是实际的对象。



	加上transient关键字的属性不被序列化,用于保护序列化时的敏感数据。



	

java.nio包  (课堂代码:TestCharBuffer.java) 

	

	当有大的文件需要处理的时候,为了不影响性能建议用直接缓冲。

	Buffer有直接缓冲和间接缓冲两种。

	只有ByteBuffer类提供了直接缓冲。使用直接缓冲,不影响程序。其它类想用直接缓冲需要进行转换。



	java.nio.*; 块

	java.nio.channels;通道---读写通道

	java.nio.charset;编码---字符集、编码、解码



	java.nio.Buffer:一种用于特定的基本类型数据的容器

		

	java.nio.ByteBuffer:字节缓冲区,

	java.nio.CharBuffer:字符缓冲区 



	java.nio.MappedByteBuffer:是特殊的ByteBuffer。直接字节缓冲区,其内容是文件的内存映射区域



	缓冲--->数组(类型匹配) ,8位,

	容量代表内存开辟部分

	界限代表可用部分

	位置代表当前指针

		

	容量>=界限>=位置

		

	nio称为无阻塞的IO(经过优化的IO)

	

	获得类对象的方式:

		1、new 本类构造                    (看API的构造部分)

		2、new 子类构造(多态)            (API实现子类部分)

		3、本类static方法                  (API方法部分)

		4、用其它类对象调用方法的返回值。  (API另请参见)

	

	flip()相当于截断没有用的空间,然后把指针移向开头

	

		

java.nio.channels:  (课堂代码:TestChannel.java) 



	1、先建立IO流(FileInputStream)

	   stream.FileOutputStream

	  读写流RandomAccessFile

	2、IO流.getChannel()获得通道	

	

	3、创建大小合适的ByteBuffer(用这个allocate(int))	

	4、通道:read(buffer)---输入

		write(buffer)---输出

	5、关闭所有的流和通道,先关通道,后关流。

	6、如果有多线程并发,可以使用通道.lock()方法,获得FileLock对象用FileLock.release()释放。

	7、当遇到编码问题,使用Charset、CharsetDecoder、CharsetEncoder解决。

	   方法(forName,encode,decode).

	

	java.nio.charset.Charset---编码类

	java.nio.charset.CharsetDecoder---解码器

	java.nio.charset.CharsetEncoder---编码器-->行为

	

	  

网络编程:



	URL:网址

	OSI网络参考模型(理论性较强的模型)                      

   		七层,应用层、表示层、会话层、传输层、网络层、数据链路层、物理层:



		网络层:寻址、路由(指如何到达地址的过程)

		传输层:端口连接

		TCP模型:应用层/传输层/网络层/网络接口

			层与层之间是单向依赖关系,上层依赖于下层,下层不依赖于上层,层与层之间的连接是虚连接。对等层之间建立协议。

		端口是一种抽象的软件结构,与协议相关:TCP23端口和UDT23端口为两个不同的概念。

		端口应该用1024以上的端口,以下的端口都已经设定功能。



	TCP/IP模型



	应用层:Application

			(FTP,HTTP,TELNET,POP3,SMPT)

	传输层:Transport

			(TCP,UDP)

	网络层:Network

			(IP,ICMP,ARP,RARP)

			IP:起名协议

			ARP:地址解析协议

	物理+数据层:Link:

			(Device driver,….)	



	手机短信:点对点式

			

	A类:0--127

	B类:128-191

	C类:192-223

	D类:224--

	

	IP地址是由4个255数字组成。

	

	127.0.0.1是本机地址

	

	端口:由计算机硬件、软件模拟而成,与协议相关,ip+端口才能交互,端口有0--6成多数字,保留端口是0--1023,稳定端口:1024--4万多,动态:4万多---



		保留端口和动态端口不要用。

		

		例:21是FTP的端口,7是ECHO的端口,80是HTTP端口(网页),7001:WebLogic服务器,8080:Oracle Http,Tomcat服务器,1521:Oracle的监听外来连接端口



	TCP:传输层协议



		保证地址、主机一一对应(ip地址+网卡地址)

	



	java.net.InetAddress:IP地址类

		

	创建网络连接:

		ServerSocket等待连接

		Socket()连接上交互

		网络流传递:

			OutputStream

			InputStream



		关闭时两个连接都要关闭

	

	网络流传递时的原则:你读我写,一读一写

	

	socket(套接字)就是ip+port.

	

	Server端编码的步骤:(课堂代码:TestServer.java)

		1、new ServerSocket 打开端口

		2、调ServerSocket的accept()等待客户连接,当连接成功返回交互的Socket。

		3、调用Socket.getInputStream,getOutputStream获得服务器端的IO流

		4、用处理流封装后与客户端交互,记住你读我写,一读一写。

		5、关闭单一客户端调用Socket的close(),关闭服务器调ServerSocket的close();

	

	Socket端编码步骤:(课堂代码:TestClient.java)

		1、new Socket(Server ip,Server port)试图连接,如成功才有对象

		2、其它参照server端的3,4,5步骤

		3、关闭,只有Socket的close()方法。



	

	

	

	

		

		      

		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -