Java 基础总结

来源:互联网 发布:淘宝订单不付钱 编辑:程序博客网 时间:2024/05/21 14:43

Java 基础总结

  1. 特点 跨平台os
    1. jvm : java virtual machine ,java虚拟机
    2. jdk : java development kit, java软件开发包 = jvm + 开发工具
    3. jre : java runtime environment java运行时环境 = jvm + 核心类库
    4. 一次编译,多出运行
    5. .java —javac—- .class —-java —– APP
    6. javac -classpath ;;; Hello.java
  2. java oop
    1. 封装
    2. 继承,多层单重
    3. 多态
    4. 接口,可多重继承
    5. 抽象类
    6. final
    7. private protected public
    8. static ,与对象无关
    9. new Xxx(); 构造函数,抽象函数也有
      1. 第一句默认super();
    10. this 内置成员变量,还有super,
  3. 数据类型
    • [基本数据类型]
      1. byte : 1 , -128~127
      2. short : 2 , -32768 ~ 32767
      3. int : 4 , -
      4. long : 8
      5. float : 4
      6. double : 8
      7. boolean : 1
      8. char : 2 ‘\u0909’
    • [引用类型]
      1. class
      2. interface
  4. JVM
    • runtime data area:
    • Method area 所有线程共享
    • java stack
      • FILO
      • method frame
      • java -Xss1M 死递归
    • native method stack
    • heap(所有线程共享)
      • 数组 + 对象
      • java -Xmx100M -Xms100M
      • 年轻代(伊甸区,幸存一区,幸存二区) + 年老代 + 永久代(非堆)
    • program counter register
    • 静态代码块,在类加载时执行。
  5. 集合
    • List,Set继承Collection
      1. List
      2. 有序,重复,equals()
      3. ArrayList , 数组列表,查询快,insert()
      4. LinkedList , 链表,写入地,查询慢
      5. Set
      6. 无序,不可重复
      7. HashSet
      8. Map
      9. Key - Value(Entry:条目)
      10. HashMap 数组+表,判断hashcode是否相等,是否是同一对象,equals
      11. Hash , 散列
  6. 多线程
    1. implements Runnable
    2. extends Thread
    3. new Thread (new Runnable(...)).start();开辟java stack,一个线程一个java stack
    4. 线程状态
      1. NEW
      2. RUNNABLE
      3. WAITING //等待,队列、产生死锁,改用notifyAll()/wait(some time)
      4. TIMED_WAITING
      5. BLOCKED ,//阻塞
      6. TERMINATED //结束
      7. sleep wait
    5. 线程安全
      1. 同步代码块,synchronized(lock){…},串行,保证同步代码块执行时间短
      2. 同步方法,public static synchronized void xxx(){}
    6. yield() //放弃,谦让
    7. join() //等待线程执行完毕后,再继续执行其它线程
    8. daemon() //守护线程
  7. NIO
    1. 新 IO。
    2. 异步,非阻塞,ByteBuffer
    3. channel 通道
    4. ByteBuffer
      1. 0 <= mark <= position <= limit <= capacity
      2. ByteBuffer.allocate(size); //堆内存缓冲区 jvm heap
      3. ByteBuffer.allocateDirect(size); // 直接内存缓冲区 off-heap cleaner。clean()反射
    5. Selector 挑选器
    6. ch.register(sel,OP_ACCEPT|OP_READ|);
  8. IO
    1. Input/Output
    2. InputStream/OutputStream
    3. Reader/Writer
    4. BufferedInputStream
    5. BufferedReader
    6. InputStreamReader //转换流
    7. ByteArrayInputStream
    8. ByteArrayOutputStream
    9. ZipInputStream
    10. ZipOutputStream
    11. 串行化
      1. 将java对象转成字节数组。 implement java.io.Serializable{seri UID(反序列化)
      2. ObjectOutputStream oos = new ObjectOutputStream(baos);
      3. oos.writeObject(xxx);
      4. oos.close()
      5. byte[] arr = baos.toByteArray();
      6. ObjectInputStream
    12. 深度复制
      1. 复制整个对象图 , transient
    13. 装饰模式
      1. 增强类的功能
  9. 反射
    • 动态访问对象的属性和方法。破坏了封装规则
      1. Class //类类
      2. class.forName(); //加载类,放到方法区
      3. class.forName(xxx,”xxx”,false); 不执行静态代码快
      4. newInstance() 创建实例,通过Construct的空构造,
      5. Constructor //构造函数 setAccessibale(true);设置可访问性
      6. Method //方法
      7. Field //字段
      8. 创建对象不经过new,可通过反序列化
      9. [内省] 操纵javabean
      10. Introspector:javabean
      11. java.bean.BeanInfo
      12. PropertyDescriptor
      13. MethodDescriptor
  10. Socket编程
    1. TCP/IP
      1. 面向连接
      2. 安全
      3. 没有容量限制
    2. UDP
      1. 无连接
      2. 不安全
      3. 基于DatagramPacket 64K
      4. 拆包、切割、定制协议
    3. ServerSocket();
      1. accept() //阻塞的,引出NIO,一个线程轮询
    4. Socket
      1. new Socket(ip,port)
      2. getInputStream()
      3. getOutputStream()
    5. [UDP]
      1. Sender + receiver
      2. DatagramSocket
      3. Data
  11. Jdbc
    1. URL
    2. driverclass
    3. username
原创粉丝点击