zoukankan      html  css  js  c++  java
  • JAVA_学习笔记

    -verbose:class  //查看类的加载顺序
    类的加载:
    bootstrap class loader //核心类加载器,由机器本地语言编写
    extesion class loader //扩展的类加载器,用于加载jre/lib/ext下的jar包
    application class loader //用于加载用户定义的类,application class loader 被 extesion class loader加载
    URLClassLoader //用户加载网络类,例如applet程序
    //java中有非常多的类加载器

    ISO七层参考模型:
    物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
    TCP/IP四层参考模型:
    网络接口层、网络层、传输层、应用层

    应用层协议:
    telnet、ftp、http、dns、smtp、pop3

    传输层协议:
    TCP: 面向连接的可靠的传输协议,应用于高完整性的传输应用。
    UDP:是无连接的,不可靠的传输协议,应用于视频传输等实时性高的应用,http是udp发送。

    网络层协议:
    ip

    1. InputStream 和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象,
    2. Reader和 Writer.两个是为字符流(一个字符占两个字节)设计的,主要用来处理字符或字符串.
    字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。

    InputStream
    FileInputStream
    ByteArrayInputStream
    FilterInputStream //过虑流类
    DataInputStream
    BufferedInputStream
    LineNumberInputStream(开发java编译器使用)
    PushbackInputStream(开发java编译器使用)
    ObjectInputStream
    PipcdInputStream
    SquenceInputStream
    StringBufferInputStream

    OutputStream
    FileOutpuStream
    ByteArrayOutputStream
    FilterOutputStream//过虑流类
    DataOutputStream
    BufferedOutputStream
    PrintStream
    ObjectOutputStream
    PipcdInputStream

    io缓冲区:在内存中分配一块区域,等区域满了之后再写入到硬盘
    flush:强制缓冲区被写出
    BufferedOutputStream 需要关闭,不然可能缓冲区未满导致字节没有被写入,而是在内存缓存区。
    new BufferedOutputStream(new FileOutputStream("2.txt"),5); //5是字节数,一个汉字俩字节
    DataOuputStream、DataInputStream 用于读写java中的基本数据类型
    PipedInputStream、PipedOutputStream 用于输入和输出的管道
    java采用unicode编码,unicode编码是用两个字节长度来表示数值

    Reader
    BufferedReader
    LineNumberReader
    CharArrayReader
    FilterReader
    PushbackReader
    InputStreamReader //实现字节流转化为字符流
    FileReader
    PipedReader
    StringReader

    Writer
    BufferedWriter
    CharArrayWriter
    FilterWriter
    OutputStreamWriter//实现字节流转化为字符流
    FileWriter
    PipedWriter
    PrintWriter
    StringWriter

    java采用unicode编码,而console(标准输入输出设备)的编码格式由操作系统决定,所有会产生乱码。

    serializable时不会保存类非静态成员变量,如果类中有其它类的引用,那么其它类也被serializable
    如果其它类没有实现serializable接口,则保存不成功。可以使用transient关键字排除其它类。

    UML常用单词
    realization 实现
    association 联合
    dependency 继承

    线程睡眠是帮助其它线程运行的最好方法
    线程睡眠到期会自动苏醒,并返回可运行状态,不是运行状态。
    sleep()中指定的只是最短不运行时间。sleep不能保证睡眠到期后立即执行。
    sleep是静态方法,只能对当前运行的线程睡眠。
    线程睡眠时,它所持的任何锁都不会释放
    Thread.yield()方法作用是暂停当前正在执行的线程对象,并执行其他线程。
    大多数情况下yield()将导致线程从运行状态转到可运行状态,但也可能再次被jvm调用为运行状态

    new StringBuffer(int length); //初始字节长度
    Object.clone(); //需要派生类实现Cloneable接口、如果派生类中有其它引用类,则其它类也需要现实Cloneable接口.
    String 类是不会被克隆的,因为它被声明为final

    Arrays.binarySearch(a, key); //需要对象已经排序,String默认实现了Comparable<String>

    在类中private或static自然就是final

    Runtime.gc(); //显示调用java垃圾内存回收。gc会调用对象的finalize()

    java中类只能单继承,但是接口可以同时继承多个接口

    内部类文件名: OuterClassName$InnerClassName

    静态内部类,可以有静态方法。非静态内部类,不能有静态方法

    在try,catch,finally中,如果执行System.exit(0);finally将不会被执行

    java中的位运算符: & | ^ ~
    & 1 1
    | 0 0
    ^ 1 0 、0 1
    ~ 取反
    向左移相当于乘二 向右移相当于除二
  • 相关阅读:
    Executors提供的四种线程池和自定义线程池
    ava8并发教程:Threads和Executors
    Java 信号量 Semaphore 介绍
    Condition-线程通信更高效的方式
    ReentrantLock详解 以及与synchronized的区别
    FutureTask 源码解析
    Java多线程编程:Callable、Future和FutureTask浅析
    Callable 和 Runnable 的区别
    javascript之url转义escape()、encodeURI()和decodeURI()
    yii2.0安装ElasticSearch及使用
  • 原文地址:https://www.cnblogs.com/BigIdiot/p/2299522.html
Copyright © 2011-2022 走看看