一.基础语法
----------------------------------------------------------
byte //1 -128 ~ 127
short //2
int //4
long //8
float //4
double //8
boolean //1
char //2 unicode gbk utf8 ansi ascii
//'' 'abc' '\n' \r \t
char c = 'a' ;
c = 97 ;
c = '\u0061'
c = '' ;
String //常量."" null
StringBuffer(安全) | StringBuilder(不安全)
synchronized
二.OOP
-----------------------------------------------------------
封装
继承
多态:成员变量,
extends
implements
单层继承
面向接口编程:降低耦合。
抽象类:
类的成员:成员变量,成员函数,构造函数,构造代码块,静态代码块,内部类,
创建对象过程:1.开辟内存
2.初始化默认值.
3.构造代码块或成员变量的赋值。
4.构造函数。
final:
类 //不能继承
方法 //不能重写
字段 //只能被赋值一次。
abstract + final //非法
abstract + private //非法
abstrat + static //非法
final + private //不非法
三.IO
------------------------------------------------------------------
CharSet //
InputStream/OuputStream
Reader/Writer
BuffedInputStream/BufferedOutputStream(8k)
BufferedReader/BufferedWriter
InputStreamReader/OuputStreamWriter
new BufferedReader(new ...(System.in));
ObjectInputStream/ObjectOutputStream
ByteArrayOutputStream
将对象转换成byte[]
java.io.Serializable //标识性接口
//long serializableUID,反串行。
while((len = is.read()) != -1){
}
四.NIO
------------------------------------------------------------------
非阻塞
SelectionKey.OP.ACCEPT
Selector
ServerSocketChannel
SocketChannel
FileChannel
while(true)
{
sel.select();
}
ByteBuffer
ByteBuffer.allocate();
ByteBuffer.allocateDirect();
Cleaner.clean()
flip();
clear();
reset();
五.Socket
-----------------------------------------------------------------
TCP //
UDP
七层协议
--------------
物理层
数据链路层
网络层
传输层 //transfer control protocal,user datagram protoca.
会话层 //
表示层
应用层 //http(hyper text transfer ptotocal),ftp:file transfer pro, https smtp
ServerSocket //统配ip0.0.0.0 + port
Socket s = ss.accept() //阻塞
s.getInputStream() //SocketInputStream
s.getOutputStream() //SocketOutputStream
//全双工.
DatagramSocket //数据报套接字
DatagramPacket //数据报包,包里有地址。64K
六.JDBC
-----------------------------------------------------------------------
标准,接口。
//jdbc实现
driver.jar
//数据操纵语言
insert
update
select
delete
//数据定义语言
DDL:
//语句
statement
pararedStatement
callableStatement
//事务 transaction
A: 原子性
C: 一致性
I: 隔离性
D: 持久性
//
commit()
rollback()
savepoint()
//并发执行现象
脏读
不可重复读
幻读
//隔离级别
1.read uncommitted //读未提交,导致脏读 + 不可重复读 + 幻读
2.read committed //读已提交,避免脏读,导致不可重复读 + 幻读
3.repeatable read //可重复读,避免脏读,不可重复读,导致幻读
4.serilizable //串行化,避免脏读,不可重复读,幻读--悲观锁,并行变串行
//悲观锁
1.不能并发
2.加锁旗标: 0/1
//乐观锁
1.版本
2.时间戳
//共享读锁,独占写锁
1.A写,B不能写
2.A写,B可读
3.A读,B不一定能写(看A是否独占写锁,select for update或者隔离级别)
4.A读,B能读
//表级锁
lock table xx
unlock table;
//MVCC
多版本并发控制
七.反射
-----------------------------------------------------------
class
Method
Field
Constructor
setAccessible(true)
clazz.getDeclareMethods();
clazz.getMethods();
method.invoke();
field.get();
field.set();
Introspector //内省
Beaninfo
PropertyDscriptor
MethodDescriptor
read
write
Proxy //代理,不改变源码,增加功能
Proxy.newProxyInstance(classLoader, class[] , handler);
八.集合
---------------------------------------------------------------
List 有序可重复(equals)
-- ArrayList:封装数组
-- LinkedList:封装链表
Set 无序不重复(hash)
-- 底层是map
Map <k,v>
-- hash 散列
-- hashmap
-- 数组 + 链表
九.多线程
---------------------------------------------------------------
java.lang.Thread
java.lang.Runnable
new Thread().start();
yield() //放弃本次,回头立马开抢cpu
join() //直到join线程结束,当前线程才能继续执行
daemon() //守护线程,守护非守护线程
sleep() //休眠。
同步代码块 / 同步方法
线程状态
------------------------
new
runnable
blocked
wait
wait_timing
terminate
sleep
wait()
------------------------
1.进入锁旗标的等待队列
2.马上释放锁旗标
3.notify() :通知
4.notiflAll
5.wait(n)
十.JVM
-------------------------------------------------------------------
1.runtime data area
-- method area
-- heap
-- java stack
-- native method stack
-- program counter register
2.
-- heap //young(eden + s1 + s0) + old
-- non-heap //perment / metaspace
-- off-heap //jvm之外的,操作系统的内存,直接内存
3.
-- -Xmx
-- -Xms
-- -Xmn
-- -Xss 设置栈
-- -XX:NewSize
十一.异常
--------------------------------------------------------------
throw //抛异常
throws // 方法上,声明抛出异常
try{}
catch{}
finally{}