Java 基础总结
特点 跨平台os
jvm : java virtual machine ,java虚拟机jdk : java development kit, java软件开发包 = jvm + 开发工具jre : java runtime environment java运行时环境 = jvm + 核心类库一次编译,多出运行.java —javac—- .class —-java —– APPjavac -classpath ;;; Hello.javajava oop
封装继承,多层单重多态接口,可多重继承抽象类finalprivate protected publicstatic ,与对象无关new Xxx(); 构造函数,抽象函数也有
第一句默认super();this 内置成员变量,还有super,数据类型
[基本数据类型]
byte : 1 , -128~127short : 2 , -32768 ~ 32767int : 4 , -long : 8float : 4double : 8boolean : 1char : 2 ‘\u0909’[引用类型]
classinterfaceJVM
runtime data area:Method area 所有线程共享java stack
FILOmethod framejava -Xss1M 死递归native method stackheap(所有线程共享)
数组 + 对象java -Xmx100M -Xms100M年轻代(伊甸区,幸存一区,幸存二区) + 年老代 + 永久代(非堆)program counter register静态代码块,在类加载时执行。集合
List,Set继承Collection
List有序,重复,equals()ArrayList , 数组列表,查询快,insert()LinkedList , 链表,写入地,查询慢Set无序,不可重复HashSetMapKey - Value(Entry:条目)HashMap 数组+表,判断hashcode是否相等,是否是同一对象,equalsHash , 散列多线程
implements Runnableextends Threadnew Thread (new Runnable(...)).start();开辟java stack,一个线程一个java stack线程状态
NEWRUNNABLEWAITING //等待,队列、产生死锁,改用notifyAll()/wait(some time)TIMED_WAITINGBLOCKED ,//阻塞TERMINATED //结束sleep wait线程安全
同步代码块,synchronized(lock){…},串行,保证同步代码块执行时间短同步方法,public static synchronized void xxx(){}yield() //放弃,谦让join() //等待线程执行完毕后,再继续执行其它线程daemon() //守护线程NIO
新 IO。异步,非阻塞,ByteBufferchannel 通道ByteBuffer
0 <= mark <= position <= limit <= capacityByteBuffer.allocate(size); //堆内存缓冲区 jvm heapByteBuffer.allocateDirect(size); // 直接内存缓冲区 off-heap cleaner。clean()反射Selector 挑选器ch.register(sel,OP_ACCEPT|OP_READ|);IO
Input/OutputInputStream/OutputStreamReader/WriterBufferedInputStreamBufferedReaderInputStreamReader //转换流ByteArrayInputStreamByteArrayOutputStreamZipInputStreamZipOutputStream串行化
将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,可通过反序列化[内省] 操纵javabeanIntrospector:javabeanjava.bean.BeanInfo PropertyDescriptorMethodDescriptorSocket编程
TCP/IP
面向连接安全没有容量限制UDP
无连接不安全基于DatagramPacket 64K拆包、切割、定制协议ServerSocket();
accept() //阻塞的,引出NIO,一个线程轮询Socket
new Socket(ip,port)getInputStream()getOutputStream()[UDP]
Sender + receiverDatagramSocketDataJdbc
URLdriverclassusername