java技能图
2020-06-16 10:06:02 0 举报
AI智能生成
Java技能图
作者其他创作
大纲/内容
jdk基础
集合
Map
HashMap
1:HashMap的实现原理
数组+链表+红黑树
2:HashMap怎么防止Hash冲突
3:HashMap怎么实现扩容的
4:HahMap和HashTable的区别
5:自己实现一个HashMap
TreeMap
HashTable
HashTable和HashMap的比较
HashTable是线程安全的
HashMap是线程不安全的
HashTable不允许key和value为null,HashMap可以
List
ArrayList
1:数据结构是使用对象数组来实现的
2:在往数组指定下标插入元素或者删除元素的时候使用的是System.arraycopy()函数
LinkedList
1:内部使用链表来实现的
2:获取指定索引值下标的元素值,内部做了优化,如果下标值小于链表元素大小的一半,从头结点开始查找,否则从尾节点开始查找
3:LinkedList比较适合做插入,删除操作,不太适合做查找
4:实现了栈和队列
队列相关的操作
add():往队尾插入元素
offer():往队尾插入元素
poll():返回队列的头部并且移除
element():返回队列头部,和peek()的区别是如果队列是空的,抛异常
peek():返回队列头部
栈相关的操作
pop():出栈操作
push():入栈操作
Set
HashSet
1:数据结构是使用HashMap来实现的
分支主题
set集合和list集合的比较
1:set集合不包含重复的元素,list可以包含重复的元素
2:set集合是无序的,list集合是有序的
Stack
继承了vector
queue
Vector
1:线程安全的
2:当数据元素大于他的容量时,可以按指定数量扩容,如果指定数量小于等于0,每次按照double扩容
Vector和ArrayList的区别
1:继承关系都是一样的
2:数据结构都是使用对象数据来实现的
3:vector是线程安全的,每个方法基本都加了synchronized
4:vector当数据元素大于他的容量时,可以按指定数量扩容,default每次按照两倍扩容
工具类
数组工具类
Arrays
sort():
parallelSort()
binarySearch():二分搜索法
fill(long[] a, long val):将数组每一个元素的值替换成指定的值
copyOf()
asList()
集合工具类
Collections
sort()
binarySearch
reverse()
shuffle()
swap()
fill()
copy()
min()
max()
rotate()
unmodifiableCollection()
synchronizedCollection()
singletonList()
disjoint()
系统工具类
System
setIn()
setOut()
setErr()
currentTimeMillis()
arraycopy()
getProperty()
getenv()
exit()
gc()
runFinalization()
Runtime
addShutdownHook
exec()
availableProcessors
freeMemory
totalMemory()
maxMemory()
Shutdown
SecurityManager
Unsafe
对象父类
Object
getClass()
hashCode()
equals()
clone()
toString()
wait
notify
notifyAll
finalize()
线程
实现线程两种方式
继承Thread类
currentThread()
yield()
sleep()
interrupt()
isInterrupted()
interrupted
isAlive
join
dumpStack
setDaemon
holdsLock
实现Runnable接口
TheadLocal
实现原理
1:内部是使用TheadLocalMap来实现的
2:每个线程都会拥有独自属于自己的TheadLocalMap
使用场景
线程上下文传递数据,记录一个请求过程的调用时间;记录一个完整调用过程日志
java对象引用
强引用
通过new创建一个对象,然后赋值给一个对象变量,该对象变量就是对该对象的一个强引用,只要存在强引用,该对象就不会被垃圾回收掉
软引用
SoftReference
当对象只存在软引用对象时,只有内存不足时才会垃圾回收器才会释放该对象
弱引用
WeakReference
与软引用不同的是,当对象只存在弱引用对象时,内存充足垃圾回收器也会回收该对象
虚引用
PhantomReference
虚引用通过get返回的永远都是null,虚引用存在的唯一作用就是当它指向的对象被回收后,虚引用本身会被加入到引用队列中,用作记录它指向的对象已被销毁
并发
基本类型原子包装类
锁
堵塞队列
并发集合
线程池
volatile
从内存模型分析
主内存
工作内存
代理
静态代理
动态代理
cglib代理
jdk8新特性
函数接口
设计模式
算法
排序算法
查找算法
负载均衡算法
LRU:最近最久未使用
可以通过LinkedHashMap来实现
LFU:最不经常使用
轮训
随机
一致性hash
拷贝
深拷贝
浅拷贝
类的加载过程
反射
nio
io
fork/join并行计算框架
JNI
异常处理策略
Mbean
锁
jdk锁
数据库锁
redis分布式锁
原理是redis setNX和setex命令来实现
spring
ioc
aop
springMvc
spring用到的设计模式
spring生命周期接口
一元秒杀设计
Linux
命令
awk
wc
sort
uniq
ulimit
ulimit -a 查看当前系统的所有限制值
ulimit -n 查看当前的最大打开文件数
大型网站技术架构
性能调优
jvm
linux性能调优
分布式
微服务框架
springCloud
springBoot
dubbo
分布式算法
分布式理论
CAP
BASE
分布式事物
分库分表
分布式中间件
MQ
各种消息队列比对
使用场景
异步请求
系统解耦
提高系统吞吐量
可拓展性
顺序性
冗余
可恢复性
原理
MQ模型
发布订阅模式,使用topic作为通信载体
点对点,使用queue作为通信载体
MQ组成
Broker
producer
Consumer
Topic
Queue
Message
常用协议
AMQP
MQTT协议
STOMP
XMPP协议
MQ选型
RabbitMQ
RocketMQ
Kafka
ActiveMQ
zookeeper
redis
五种数据结构
命令
分布式锁
集群实现方案
基于redis集群实现session共享
订单自动过期
redis和mysql怎么保证数据一致性
elasticsearch
CAT
sharingjdbc
微服务持续集成工具
Jenkins
maven
Http
http状态码
0 条评论
下一页