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