包名、类名和属性可以被序列化,方法和构造器不会被序列化的。

静态属性不会被序列化的。

属性会被递归序列化的,也就是一个类中有引用类型的属性,如果这个属性对应的类实现了Serializable接口,在对象序列化时,也同样会对这个类中的属性进行对象序列化,如果没有实现Serializable接口,则会抛出异常。

所有属性必须都是可序列化的,特别是当有些属性本身也是对象的时候,要尤其注意这一点。

网络中传递对象必须实现序列化。

nio无阻塞的I/O(优化的I/O)

java.nio   定义块

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

缓冲:就是块,用来存储内容。

容量:内存开辟的大小,根据类型的不同,有不同的空间。

界限:可用部分,即不应读取或写入的第一个元素的索引。

位置:当前指针的位置,从0开始。

容量>=界限>=位置

相关方法:

int capacity()

返回此缓冲区的容量。

int limit()

返回此缓冲区的界限。

int position()

返回此缓冲区的位置。

Buffer flip()

相当于截断没有用的空间,然后把指针移向开头,使limit=position,position=0

Buffer position(int newPosition)

设置此缓冲区的位置。

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

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

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

java.nio.channels    对块进行读写的通道,类似于以前的流

Channel接口:用于 I/O 操作的连接

编程步骤:

a. 先创建一个I/O流,

b. 使用I/O流.getChannel()方法,获得通道,

c. 创建大小合适的ByteBUffer,

d. 通道的对象.read(buffer)/write(buffer)进行读写,

e. 关闭所有的流和通道,

f. 如果有多线程并发,可以使用"通道.lock()"获得FileLock对象,用FileLock.release() 释放此锁定。

g. 当遇到编码问题,使用CharSet、CharsetDecoder、CharsetEncoder三个类去解决

注意:

在读之前需要调用一下clear()方法,帮助读操作清理缓冲;写之前需要调用flip()方法,帮助写操作清理缓冲。

java.nio.charset    字符集,进行编码解码

Charset类:编码类,编码的信息

forName(String charsetName)

生成一个CharSet实例。

decode(ByteBuffer bb)

将此 charset 中的字节解码成 Unicode 字符的便捷方法。

encode(CharBuffer cb)

将此 charset 中的 Unicode 字符编码成字节的便捷方法。

CharsetDecoder类:解码器

能够把特定 charset 中的字节序列转换成 16 位 Unicode 字符序列的引擎。

CharsetEncoder类:编码器,编码的行为

能够把 16 位 Unicode 字符序列转换成特定 charset 中字节序列的引擎。

网络编程:

网络基础知识

Mac地址:每个网卡专用地址,也是唯一的。

端口(port):应用程序(进程)的标识(网络通信程序)

OS中可以有65536(2^16)个端口,进程通过端口交换数据。

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

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

协议:为了进行网络中的数据交换而建立的约定,协议是为了保证通信的安全,不同层的协议是完全不同的。

TCP协议:传输层的协议,重发一切错误的信息

IP协议:保证地址和主机一一对应(ip地址+网卡地址)

TCP编程:

TCP是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。

1) 服务器分配一个端口号,服务器使用accept()方法等待客户端的信号,信号一到打开socket连接,从socket中取得OutputStream和InputStream。

2) 客户端提供主机地址和端口号使用socket端口建立连接,得到OutputStream和InputStream。

Server端编码的步骤:

1、new ServerSocket 打开端口

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

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

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

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

Socket端编码步骤:

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

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

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

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

java面试第十四天相关推荐

  1. 2021-11-23----韩顺平Java入门第十四天

    韩顺平Java入门第十四天(排序.查找) 1.排序     1).排序的介绍:排序是将多个数据,依指定的顺序进行排列的过程.     2).内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序 ...

  2. Java面试题(十四)----- 如何获取父类的类名字 ? 如何获取当前运行类的类名

    Java面试题(十四)----- 如何获取父类的类名字 ? 如何获取当前运行类的类名 文章目录

  3. 【每天一个java设计模式(十四)】 - 解释器模式

    解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式.这种模式实现了一个表达式接口,该接口解释一个特定的上下文. 解释器模式主要包括以下几个部分: 抽象表达式角色:定义解释器的接口,约定解释 ...

  4. Java进阶(十四)单元测试、反射、注释、动态代理

    十四.单元测试.反射.注释.动态代理 需要学会什么? 单元测试:开发好的系统中存在很多的方法,如何对这些方法的正确性进行测试. 反射:如何在程序运行时去得到Class对象,然后去获取Class中的每个 ...

  5. JAVA笔记(十四)

    线程状态转换图(它有好几条路径) 线程组 Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制. 默认情况下,所有的线程都属于主线程组. ...

  6. Java从零开始学十四(包和访问控制)

    一.java中的包 Java文件的组织形式Windows中的文件功能类似 在开发比较大的项目时,不可能只涉及到一个java文件,可能要创建几十,甚至几百个java文件,这个时候,我们就可以使用包,把相 ...

  7. JAVA多线程提高十四: 面试题

    前面针对多线程相关知识点进行了学习,那么我们来来看看常见的面试题: 1. 空中网面试题1 package com.kongzhongwang.interview; import java.util.c ...

  8. java基础第十四天_IO

    1.定义函数,输出一个byte的二进制字符串. 2.定义工具类,完成int数和byte[]之间的相互转换. 3.阐述IO流. 输入输出流 字符字节流 缓冲和非缓冲流 转换流. 4.通过File对象打印 ...

  9. Java学习第二十四天

    目录 一.冒泡排序 第一步:思路 第二步:代码实现 二.查找 用到的知识 二维数组 通俗理解: 代码: 总结: 二维数组使用方式 使用方式1:动态初始化 二维数组在内存中的存在形式(重要!) 使用方式 ...

最新文章

  1. [ubuntu] 摆脱一直敲打‘Y'('yes')的困境
  2. Codeforces Round #180 (Div. 2) A. Snow Footprints 贪心
  3. DataGrip 2019.2.5 —— 中文列名(字段名)(columns name)乱码问题解决方案
  4. php 通过坐标获取省市,PHP根据经纬度获取在范围坐标的数据
  5. 关于memcpy和memmove两函数的区别
  6. js 操作table: insertRow(),deleteRow(),insertCell(),deleteCell()方法
  7. MySQL8.0.25命令行安装与配置
  8. php wecp 启动_U-boot启动详解
  9. 麟龙指标通达信指标公式源码_【通达信】麟龙量能饱合度指标公式源码
  10. AD09之与AD6版本使用不同对比
  11. sniffer Pro4.7.5最完整安装教程
  12. 京东商城发现了一枚Bug
  13. 【服务器风扇静音】确定风扇线序定义的通用方法——以IBM SystemX 3630 M4为例
  14. 建模方法(一)-博弈论中使用划线法求解纳什均衡
  15. Aras Innovator: 自定义TOC目录,Form的基本过程
  16. word分节符,分页符的区别,链接到上一页
  17. 我!程序媛!上家阿里巴巴,下家字节跳动!薪资翻番!选择裸辞躺平!无限期休息!...
  18. 视频云服务四路玩家,谁是最大赢家
  19. 近期尝试UR5和PhantomOmni的联动仿真出现的问题
  20. Docker 容器文件拷贝及目录挂载

热门文章

  1. C/C++之变长数组(VLA)和可伸缩型数组成员
  2. Wannafly挑战赛29题解
  3. Ubuntu虚拟机JeOS安装-2016.08.28
  4. Javaamp;amp;(面试题)初始化顺序总结
  5. 还有 13 天,苹果就要关上 HTTP 大门了
  6. jQuery实现父窗口的问题
  7. Java动态生成类以及动态添加属性 本篇文章来源于 Linux公社网站(www.linuxidc.c
  8. 怎样使用Secure CRT查看vcenter和esxi主机的日志文件
  9. SharePoint 2010 内容编辑器Web部件的使用方法
  10. Silverlight C# 游戏开发:Flyer01开发一个有趣的游戏