Java核心技术卷II知识点总结

流与文件:
        可以从中读入一个字节序列的对象称作输入流,而可以向其中写入一个字节序列的对象称作输出流。这个字节序列的来源地和目的地可以是文件、网络连接或者内存卡。
        InputStream和OutputStream构成了有层次结构的输入/输出类的基础。因为面向字节的流不便于处理Unicode形式的信息,因为Unicode中的每个字符都使用了多个字节来表示,所以从抽象类Reader和Writer中继承了专门处理Unicode字符的类,这些类拥有读入和写出操作都是基于两个字节的Unicode码元,而不是基于单字节的字符。
            Inputstream和Outputstream的read和write方法在执行时都将阻塞直至字节确实被读入或写出,即如果流不能被立即访问,那么当前线程被阻塞,使得这段时间内,其他线程有机会执行。而它的available方法可以检查当前可用于读入的字节数量,所以我们可以先检测>0再读入。可以使用close关闭资源,flush清空缓存(将数据发往目的地)。
            FileOutputStream可以创建一个新的文件输出流。BufferedInputStream和BufferedOutputStream则可以创建带缓冲区的流,该流不会每次都对设备访问,而是为空/满时读入或者写出。
            OutputStreamWriter将Unicode字符流转换成字节流。InputStreamReader将包含字节的输入流转换成Unicode字符的读入器。
        字符集:java.nio包引入了Charset类统一了字符集的转换。可以创建它的对象,然后将Unicode字符串转换成另一种编码的字节序列。
        对象流与序列化:ObjectOutputStream写出指定的对象到它,它的writeObject方法将存储指定对象的类、类的签名和这个类及其超类中所有非静态和非瞬时的域值,对象必须实现Serializable。ObjectInputStream创建一个用于从指定的InputStream中读回对象信息。它的readObject方法将读入一个对象,包含对象的类、类的签名及这个类和超类中所有的非静态和非瞬时的域值,它执行的反序列化允许恢复多个对象引用。
        文件管理:上面是从文件中读写数据。而File类则封装了处理文件系统所需的功能。如File对象最简单接受一个完全文件名,将提供一个在当前目录下具有这个名字的文件对象(这个构造器的调用不会再指定文件不存在情况下创建这个文件名的文件,这个任务是由文件流泪的构造器或类中的createNewFile方法完成)。File对象既可以表示文件,也可以表示目录。File.separtor是根据操作系统不同而不同的分隔符。
    NI/O:
        内存映射文件:channel
        缓冲区charbuffer、bytebuffer
        文件锁:FileLock
        正则表达式:
            字符类:在括号里的可选字符集[Jj]、[0-9]等
            预定字符类:\d数字、\D非数字、X+1个或多个、X*0个或多个、X?0个或1个。使用时1Pattern p = Pattern.compile(patternString); Matcher m = p.matcher(input); if(m.matchers()){}
网络:
    套接字:使用TCP封装连接:Socket s = new Socket("www.baidu.com",80);s.setSoTimeout(5000); InputStream stream = s.getInputStream();从套接字读取信息时,在可以访问数据之前,读操作将被阻塞。
    因特网地址:IPv4由四个字节组成,IPv6由16个字节。如果需要主机名和因特网地址之间进行转换,可以使用InetAddress类,它的静态getByName方法可以返回代表某主机的InetAddress对象。
    服务器端:ServerSocket s = new ServerSocket(8189);用于建立一个负责监控端口8189的服务器。Socket incoming = s.accept();用于不停等待,直到客户端连接。一旦通过网络向该端口发送了正确请求连接,该方法返回一个表示连接已建立的Socket对象,可使用此对象得到输入流和输出流。
    半关闭:提供套接字连接的一端可以终止其输出,但仍旧可以接收来自另一端的数据。
    可中断套接字:中断套接字,Java.nio提供了一个特性SocketChannel类。SocketChannel channel = SocketChannel.open(new InetSocketAddress(host, port));通过调用静态方法从通道中获得输出流OutputStream out=Channels.newOutputStream,如果线程正在执行打开等操作而中断,那么不会阻塞,而是以抛出异常的方式结束。
    建立URL连接:URL、URLConnection
数据库编程:
分布式对象:RMI,Java的远程方法调用技术,支持Java的分布式对象之间的方法调用,是专门针对Java应用之间的通信。
        存根:当客户代码要在远程对象上调用一个远程方法时,实际上调用的是代理对象上的一个普通方法,称此代理对象为存根(stub)。存根位于客户端机器上,而非服务器上。存根将远程方法所需的参数打包成一组字节,对参数编码的过程称为参数编组,目的是将参数转换成适合在虚拟机之间传递的格式。在RMI协议中,对象是使用序列化机制进行编码的。
        远程方法调用:远程对象的接口必须扩展Remote接口。在服务器端,必须提供实现了在远程接口中声明的工作,这个类是远程方法调用的目标,继承UnicastRemoteObject。
        
        
        
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值