20220320 java学习笔记

字节流以字节(8bit)为单位,包含两个抽象类:InputStream(输入流)和OutputStream(输出流)。

字符流以字符(16bit)为单位,根据码表映射字符,一次可以读多个字节,它包含两个抽象类:Reader(输入流)和Writer(输出流)。

区别:

字节流和字符流最主要的区别为:字节流在处理输入输出时不会用到缓存,而字符流用到了缓存。

Java Socket:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端称为一个Socket。(套接字)虚拟机或计算机之间通讯

类型:

TCP:面向连接的Socket通信协议

UDP:面向无连接的Socket通信协议

特点:

任何一个Socket都是由IP地址和端口号唯一确定的

Selector实现了用一个线程来管理多个通道(采用了复用与解复用的方式使得一个线程能够管理多个通道,即可以把多个流合并成为一个流,或者把一个流分成多个流的方式),它类似于一个Observer(观察者)

Scoket的使用流程

accept:接受连接

read:读取数据

seldf:发送数据

close:关闭连接

NIO(非堵塞IO):

NIO原理图

Reactor(反应器):Reactor设计模式可以用来处理多个事件源 

对象持久化的方式:

(1)序列化(Serialization)序列化是一种将对象以一连串的字节描述的过程,用于解决在对对象流进行读写操作时所引发的问题

特点:

1.如果一个类能被序列化,那么它的子类也能够被序列化

2.static类的成员,transient声明一个实例变量,不能够序列化

常见的序列化接口:

ObjectOutput、ObjectInput,ObjectOutputStream和ObjectInputStream。

使用场景:

 1.需要通过网络来发送对象,或对象的状态需要被持久化到数据库或文件中。

 2.序列化能实现深复制,即可以复制引用的对象。

(2)外部序列化:来实现对象持久化

Collection

 

ArrayList、Vector、LinkedList类均在java.util包中,均为可伸缩数组,即可以动态改变长。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Royalreairman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值