一,对象的序列化和反序列化,怎么理解的?
可以通过这两个流对象直接操作已有对象并将对象进行本地持久化存储。
存储后的对象可以进行网络传输。
Serializable接口有什么用?
Serializable:该接口其实就是一个没有方法的标记接口。
用于给类指定一个UID。该UID是通过类中的可序列化成员的数字签名运算出来的一个long型的值。
只要是这些成员没有变化,那么该值每次运算都一样。
该值用于判断被序列化的对象和类文件是否兼容。
非静态数据不需要序列化,如何解决?
对应非静态也不想被序列化的成员而言,可以通过transient关键字修饰。
二,RandomAccessFile的特点?
特点:
1:该对象即可读取,又可写入。
2:该对象中的定义了一个大型的byte数组,通过定义指针来操作这个数组 。
3:可以通过该对象的getFilePointer()获取指针的位置,通过seek()方法设置指针的位置。
4:该对象能操作的源和目的必须是文件。
5:其实该对象内部封装了字节读取流和字节写入流。
完成随机访问的原理?
该对象最有特点的方法:
skipBytes():跳过指定的字节数。
seek():指定指针的位置。
getFilePointer():获取指针的位置。
通过这些方法,就可以完成对一个文件数据的随机的访问。
三,管道流的特点?
管道读取流和管道写入流可以像管道一样对接上。管道读取流就可以读取管道写入流写入的数据。
四,操作基本数据类型是哪两个对象?
DateInputStream
DateOutputStream
通常只要操作基本数据类型的数据。就需要通过DataStram进行包装。
通常成对使用。
五,对应内存设备的流对象?
CharArrayReader
CharArrayWriter
对于这些流,源是内存。目的也是内存。
而且这些流并未调用系统资源。使用的就是内存中的数组。
六,编码解码,字符串和字节数组之间的转换。
常见的码表有哪些,都有什么特点?
ASCII:美国标准信息交换码。使用的是1个字节的7位来表示该表中的字符。
ISO8859-1:拉丁码表。使用1个字节来表示。
GB2312:简体中文码表。
GBK:简体中文码表,比GB2312融入更多的中文文件和符号。
unicode:国际标准码表。都用两个字节表示一个字符。
UTF-8:对unicode进行优化,每一个字节都加入了标识头。
编解码的原则:编对解错,编错。
如果编错了,没救!
如果编对了,解错了,有可能还有救!
String s = "你好";
//编码。
byte[] b = s.getBytes("GBK");
//解码。
String s1 = new String(b,"iso8859-1");
System.out.println(s1);//????JAVA 改变 生活
//想要还原。
/*
对s1先进行一次解码码表的编码。获取原字节数据。
然后在对原字节数据进行指定编码表的解码。
*/
byte[] b1 = s1.getBytes("iso8859-1");
String s2 = new String(b1,"gbk");
System.out.println(s2);//你好。
当涉及向服务端提交中文数据时,服务器是iso8859-1的码表,如何获取正确的中文?
因为tomcat服务器默认是iso8859-1的编码表。
所以客户端通过浏览器向服务端通过get提交方式提交中文数据时,
服务端获取到会使用ISO8859-1进行中文数据的解码。会出现乱码。
这时就必须要对获取的数据进行iso8859-1编码。然后在按照页面指定的编码表进行解码即可
而对于post提交,这种方法也通用。但是post有更好的解决方式。
request.setCharacterEncoding("utf-8");即可。
所以建立客户端提交使用post提交方式。
联通是怎么回事?