JAVA高阶知识点汇总
2020-04-09 17:40:35 0 举报
AI智能生成
Java高阶知识点持续更新
作者其他创作
大纲/内容
多线程
创建线程
继承Thread类重写run方法
实现Runnable接口重写run方法
实现Callable<T>接口重新call方法
返回类型Future<T>
可以在线程执行完成后得到结果
Thread类方法
对象方法
start() - 启动线程
setPriority(int)/getPriority() - 设置/获取优先级
setDaemon(boolean) - 设置守护线程(后台线程)
interrupt() - 中断线程
join() - 等待该线程结束
静态方法
sleep(long) - 线程休眠
yield() - 让出cpu,暂停现在执行其他线程
currentThread() - 获得正在执行的线程
线程同步
什么时候同步
存在临界资源(多线程访问同一个对象)
对资源的访问是互斥的(排他的)
如何同步
锁种类与概念
互斥锁/读写锁
悲观锁/乐观锁
分段锁
偏向锁/轻量级锁/重量级锁
自旋锁
synchronized
(synchronized(this/obj/Class))
(synchronized(this/obj/Class))
wait()
notify()
notifyAll()
lock
ReetrantLock
(通过AQS的来实现线程调度)
(互斥锁、独享锁)
(通过AQS的来实现线程调度)
(互斥锁、独享锁)
lock() - 加锁
unlock() - 释放锁
trylock() - 尝试获得锁
ReadWriteLock - 读写锁
(read共享锁,write独享锁)
(read共享锁,write独享锁)
并发工具类
CountDownLatch - 倒计数器
CyclicBarrier - 循环循环栅栏计数器
LockSupport - 线程阻塞工具类
Semaphore - 信号量
Exchange - 用于线程间交换数据
线程通信
基于共享内存的通信
共享上下文
内部类
管道
基于线程调度的通信
wait() - 线程暂停等待
notify()/notifyAll() - 唤醒等待的线程
Condition(ReentrantLock)
await() - 线程等待
signal()/signalAll() - 唤醒等待的线程
awaitUnInterruptify()
awaitUtil(Date)
awaitNanos(long)
线程池
用空间换时间,实现创建好多个线程放入池中,节省创建和销毁线程时间上的开销
创建线程池子
Executors工具类(返回ExecutorService)
newSingleThreadExecutor()
newCachedThreadPool()
newFixedThreadPool(int)
newScheduledThreadPool
自定义线程池ThreadPoolTaskExecutor
CorePoll
MaxPool
RejectedExecutionHandler
ExecutorService
execute(Runnable) - 启动线程分配任务
submit(Callable<T>) - 启动线程分配任务
Funture<T> 可获取执行结果
shutsown() - 等待线程池中线程执行完毕关闭线程池
shutdownNow() - 立刻关闭线程池并返回等待执行的线程
isterminated() - 是否执行完所有线程
线程的几种状态
NEW - 新建(new)
WAITING - 等待(start)
RUNNABLE - 运行/就绪(获取cpu资源后)
BLOCKED - 阻塞/冻结
TIME-WAITING - 超时等待,超时自动返回
TERMINATED - 销毁(run结束或调用stop())
泛型/容器(集合框架)
容器
Collection<E>
list<T>
ArrayList
LinkedList
Set<T>
HashSet
重写equal
重写hashcode
TreeSet
Queue
离散时间模拟
Map<K,V>
HashMap<K,v>
键值类必须重写hashcode和equals
TreeMap<K,v>
键值必须comparable接口的子类
容器的遍历
for-each
Iterator<T> 迭代器
并发容器
ConcurrentHashMap:并发版HashMap
CopyOnWriteArrayList:并发版ArrayList
CopyOnWriteArraySet:并发Set
ConcurrentLinkedQueue:并发队列(基于链表)
ConcurrentLinkedDeque:并发队列(基于双向链表)
ConcurrentSkipListMap:基于跳表的并发Map
ConcurrentSkipListSet:基于跳表的并发Set
阻塞队列
DelayQueue:延时队列
LinkedTransferQueue:基于链表的数据交换队列
SynchronousQueue:读写成对的队列
LinkedBlockingDeque:阻塞队列(基于双向链表)
PriorityBlockingQueue:线程安全的优先队列
LinkedBlockingQueue:阻塞队列(基于链表)
ArrayBlockingQueue:阻塞队列(基于数组)
实用工具类
Collections
binarySearch - 折半查找
sort
copy
emptyXXX() -得到空容器
max / min
replaceAll()
reverse
shuffle
org.apache.commons.io.FileUtils
deleteDirectory:删除文件夹
readFileToString:以字符形式读取文件内容
deleteQueitly:删除文件或文件夹且不会抛出异常
copyFile:复制文件
writeStringToFile:把字符写到目标文件,如果文件不存在,则创建
forceMkdir:强制创建文件夹,如果该文件夹父级目录不存在,则创建父级
write:把字符写到指定文件中
listFiles:列举某个目录下的文件(根据过滤器)
copyDirectory:复制文件夹
forceDelete:强制删除文件
org.apache.commons.io.FilenameUtils
getExtension:返回文件后缀名
getBaseName:返回文件名,不包含后缀名
getName:返回文件全名
concat:按命令行风格组合文件路径(详见方法注释)
removeExtension:删除后缀名
normalize:使路径正常化
wildcardMatch:匹配通配符
seperatorToUnix:路径分隔符改成unix系统格式的,即/
getFullPath:获取文件路径,不包括文件名
isExtension:检查文件后缀名是不是传入参数(List<String>)中的一个
org.apache.commons.lang.StringUtils
isBlank:字符串是否为空 (trim后判断)
isEmpty:字符串是否为空 (不trim并判断)
equals:字符串是否相等
join:合并数组为单一字符串,可传分隔符
split:分割字符串
EMPTY:返回空字符串
trimToNull:trim后为空字符串则转换为null
replace:替换字符串
org.springframework.util.StringUtils
hasText:检查字符串中是否包含文本
hasLength:检测字符串是否长度大于0
isEmpty:检测字符串是否为空(若传入为对象,则判断对象是否为null)
commaDelimitedStringToArray:逗号分隔的String转换为数组
collectionToDelimitedString:把集合转为CSV格式字符串
replace 替换字符串
delimitedListToStringArray:相当于split
uncapitalize:首字母小写
collectionToDelimitedCommaString:把集合转为CSV格式字符串
tokenizeToStringArray:和split基本一样,但能自动去掉空白的单词
hasLength:检测字符串是否长度大于0
isEmpty:检测字符串是否为空(若传入为对象,则判断对象是否为null)
commaDelimitedStringToArray:逗号分隔的String转换为数组
collectionToDelimitedString:把集合转为CSV格式字符串
replace 替换字符串
delimitedListToStringArray:相当于split
uncapitalize:首字母小写
collectionToDelimitedCommaString:把集合转为CSV格式字符串
tokenizeToStringArray:和split基本一样,但能自动去掉空白的单词
org.apache.commons.lang.ArrayUtils
contains:是否包含某字符串
addAll:添加整个数组
clone:克隆一个数组
isEmpty:是否空数组
add:向数组添加元素
subarray:截取数组
indexOf:查找某个元素的下标
isEquals:比较数组是否相等
toObject:基础类型数据数组转换为对应的Object数组
addAll:添加整个数组
clone:克隆一个数组
isEmpty:是否空数组
add:向数组添加元素
subarray:截取数组
indexOf:查找某个元素的下标
isEquals:比较数组是否相等
toObject:基础类型数据数组转换为对应的Object数组
org.apache.commons.lang3.ArrayUtils
contains:是否包含某个字符串
addAll:添加整个数组
clone:克隆一个数组
isEmpty:是否空数组
add:向数组添加元素
subarray:截取数组
indexOf:查找某个元素的下标
isEquals:比较数组是否相等
toObject:基础类型数据数组转换为对应的Object数组
addAll:添加整个数组
clone:克隆一个数组
isEmpty:是否空数组
add:向数组添加元素
subarray:截取数组
indexOf:查找某个元素的下标
isEquals:比较数组是否相等
toObject:基础类型数据数组转换为对应的Object数组
org.apache.commons.codec.digest.DigestUtils
md5Hex:MD5加密,返回32位字符串
sha1Hex:SHA-1加密
sha256Hex:SHA-256加密
sha512Hex:SHA-512加密
md5:MD5加密,返回16位字符串
sha1Hex:SHA-1加密
sha256Hex:SHA-256加密
sha512Hex:SHA-512加密
md5:MD5加密,返回16位字符串
org.apache.commons.collections.CollectionUtils
isEmpty:是否为空
select:根据条件筛选集合元素
transform:根据指定方法处理集合元素,类似List的map()
filter:过滤元素,雷瑟List的filter()
find:基本和select一样
collect:和transform 差不多一样,但是返回新数组
forAllDo:调用每个元素的指定方法
isEqualCollection:判断两个集合是否一致
select:根据条件筛选集合元素
transform:根据指定方法处理集合元素,类似List的map()
filter:过滤元素,雷瑟List的filter()
find:基本和select一样
collect:和transform 差不多一样,但是返回新数组
forAllDo:调用每个元素的指定方法
isEqualCollection:判断两个集合是否一致
org.apache.commons.beanutils.PropertyUtils
getProperty:获取对象属性值
setProperty:设置对象属性值
getPropertyDiscriptor:获取属性描述器
isReadable:检查属性是否可访问
copyProperties:复制属性值,从一个对象到另一个对象
getPropertyDiscriptors:获取所有属性描述器
isWriteable:检查属性是否可写
getPropertyType:获取对象属性类型
setProperty:设置对象属性值
getPropertyDiscriptor:获取属性描述器
isReadable:检查属性是否可访问
copyProperties:复制属性值,从一个对象到另一个对象
getPropertyDiscriptors:获取所有属性描述器
isWriteable:检查属性是否可写
getPropertyType:获取对象属性类型
org.apache.commons.lang3.StringEscapeUtils
unescapeHtml4:转义html
escapeHtml4:反转义html
escapeXml:转义xml
unescapeXml:反转义xml
escapeJava:转义unicode编码
escapeEcmaScript:转义EcmaScript字符
unescapeJava:反转义unicode编码
escapeJson:转义json字符
escapeXml10:转义Xml10
escapeHtml4:反转义html
escapeXml:转义xml
unescapeXml:反转义xml
escapeJava:转义unicode编码
escapeEcmaScript:转义EcmaScript字符
unescapeJava:反转义unicode编码
escapeJson:转义json字符
escapeXml10:转义Xml10
org.apache.commons.beanutils.BeanUtils
copyPeoperties:复制属性值,从一个对象到另一个对象
getProperty:获取对象属性值
setProperty:设置对象属性值
populate:根据Map给属性复制
copyPeoperty:复制单个值,从一个对象到另一个对象
cloneBean:克隆bean实例
getProperty:获取对象属性值
setProperty:设置对象属性值
populate:根据Map给属性复制
copyPeoperty:复制单个值,从一个对象到另一个对象
cloneBean:克隆bean实例
java语法进阶
Java中关于try、catch、finally中的细节分析
命名规范
正则表达式
创建正则表达式
pattern.compile(正则字符串,[int])
使用正则表达式
Pattern.matcher方法
完全匹配 Matcher.matches
局部匹配 Matcher.find
String类提供的方法
matches(正则)
replaceAll
split
replaceFirst
正则符号
特殊符号
.
^
$
\d - 数字
\w - 字母数字下划线
\s - 空白字符
\b - 单词边界
反义
\D
\W
\S
\B
[^]
替换
|
转义
\
字符类
[]
两次重复
*
?
+
(n,m)
(n,)
(n)
分组
()
(exp)匹配并捕捉文本到自动命名组里面
(?<name>exp) 匹配exp并捕捉文本到名为name的组里
(?:exp)匹配但不捕获文本
位置指定
(?=exp)匹配exp前面的位置
(?<=exp)匹配exp后面的位置
(?!=exp)匹配后面不是exp的位置
(?<!exp)匹配前面不是exp的位置
注释
(?#comment)
惰性量词(单尽可能少)
*?
+?
??
(n,m)?
(n,)?
类加载与反射
类加载器(classLoader)
过程
加载
连接
初始化
PDM(父亲委托机制)
根加载器
扩展加载器
委托加载器
Class对象
类名.class
对象的getclass
Class.forName("包名")
反射
通过反射可以获取的类的信息
getDeclaredFileds
getMethods
getConstructors
getSuperclass
getInterfaces
getSimpleName
getCanonicalName
动态创建对象
newInstance
Constructor
newInstance(object...)
返回类对象
forName("类的完全名")
设置成员变量的值
field
set(Object target,Object value)
Object get()
调用方法
method
invoke(Object target,Object arg)
java8新特性
Stream - 流
构建流
值创建流
数组创建流
函数生成流
collect - 收集数据
收集
汇总
counting
summingInt ,summingLong ,summingDouble
averagingInt,averagingLong,averagingDouble
summarizingInt,summarizingLong,summarizingDouble
取最值
joining 连接字符串
groupingBy 分组
example
多级分组
List分组归类
partitioningBy 分区
并行
filter(T -> boolean)
example
map(T -> R)
example
sorted() / sorted((T, T) -> int)
example
distinct() - 去重复
limit(long n)
skip(long n) - 去除前几个
example
tips
example
anyMatch(T -> boolean) - 是否有一个元素匹配给定的 T -> boolean 条件
example
allMatch(T -> boolean) -是否所有元素都匹配给定的 T -> boolean 条件
noneMatch(T -> boolean) - 是否没有元素匹配给定的 T -> boolean 条件
findAny() 和 findFirst()
reduce((T, T) -> T) 和 reduce(T, (T, T) -> T)
example
count()
collect()
forEach()
example
数值流
流转换为数值流
数值流转换为流
数值流方法
sum()
max()
min()
average() 等...
max()
min()
average() 等...
数值范围
注意点
转换成stream流后只能使用一次
效率问题
Operational
isPresent() :值存在时返回 true,反之 flase
get() :返回当前值,若值不存在会抛出异常
orElse(T) :值存在时返回该值,否则返回 T 的值
日期-时间 API
LocalDate类
获取当前日期以及年、月、日
获取指定的日期
比较两个时间的先后顺序以及是否相等
对日期做加减运算
获取日期间隔的天数
LocalTime类
获取当前时间以及自定义时间
比较两个时间的先后顺序
对时间做加减运算
LocalDateTime类
获取当前日期时间以及自定义日期时间
转化为日期和时间
网络编程
收藏
0 条评论
下一页