Java知识结构大纲
2022-03-19 10:42:53 0 举报
AI智能生成
Java知识结构大纲
作者其他创作
大纲/内容
计算机基础
计算机网络
计算机组成结构
数据结构
操作系统
工具
开发工具
IDEA
Eclipse
VSCode
WebStorm
HTTP工具
PostMan
APIFox
APIPost
Navicat
SSH
XShell
XFtp
压测工具
APIFox
jmeter
jconsole
arthas
抓包工具
fiddler
Wireshark
代码管理
git
登录方式
ssh
https
提交
更新
分支
svn
代码管理平台
github
gitlab
gitee
腾讯 coding
阿里巴巴 codeup
华为云 代码仓库
git工具
github desktop
webstorm
团队协作
项目管理
Coding
TAPD
知识管理
腾讯文档
飞书
语雀
WPS
石墨文档
为知笔记
网盘类
百度网盘
阿里网盘
设计类
Master Go
蓝湖
阿里巴巴IConfont
工作方式
番茄工作法
工作四象限
后端知识
Java
基础入门
概念以及安装
安装与配置环境
Windows
Linux
Docker
Java历史
sun
oracle
oracle bone inscriptions(天谕)甲骨文
运算符
算术运算符
+
-
*
/
%
关系运算符
>
<
>=
<=
==
!=
逻辑运算符
||
&&
!
自增和自减
++
后++
前++
--
== 和 =
赋值运算符
+=
-=
*=
/=
条件运算符(三元表达式)
(条件)?true :false
& 和 &&
位运算符
进制的由来
java中的进制
进制的基本转化
位运算
子主题
子主题
转义运算符
\n
\b
\r
\t
修饰符
访问修饰符
private
protected
public
默认
类、方法、成员、局部
abstract(抽象)
static(静态)
八大基本数据类型
int
double
float
short
long
char
byte
boolean
循环
while
switch
for
do/while
结束语句
break
continue
return
选择语句
if/else if/else
switch
数组
一维数组
多维数组
注释
单行注释
多行注释
方法
静态方法
重载和重写
String
常量池
StringBuilder
StringBuffer
Object
==和equest hashCode
面向对象
面向对象三大特性
继承
封装
多态
类
接口
对象
继承
抽象
封装
多态
异常
Throws
Exception
RuntimeException
常见异常出现的原因
StackOverflowError
集合和数据结构和算法
数据结构
时间复杂度
o(1)
o(n)
o(log n)
算法
查找算法
线性查找法
二分查找法
排序算法
插入排序
直接插入排序
希尔排序
选择排序
简单选择排序
堆排序
交换排序
冒泡排序
快速排序
归并排序
基数排序
List
ArrayList
内部维护
数组
size
扩容缩容
默认容量为10
如果超出将扩容1.5倍
复制
System.copyArray
modCount作用防止数据乱
多线程情况出现问题
在遍历的时候,同时新增或者删除,会报错
如何解决(使用Iterator)
面试题
ArrayLis与Vector区别
相同点:都是基于数组,默认容量10
不同点:
1. ArrayList 线程不安全,Vector线程安全
2. 扩容的时候原来容量 ArrayList 是1.5 Vector是2倍
3.Vector可以设置capacityIncrement扩容量
1. ArrayList 线程不安全,Vector线程安全
2. 扩容的时候原来容量 ArrayList 是1.5 Vector是2倍
3.Vector可以设置capacityIncrement扩容量
LinkedList
底层原理
LinkedList底层是双向链表,可以保证key的有序性
HashMap底层是单向链表,不能保证key的有序性
HashMap底层是单向链表,不能保证key的有序性
代码示例
数组合链表区别
数组:
1.保证元素有序性 可以基于下标查询, 时间复杂度 o(1)
2.数组适合基于下标查询
1.保证元素有序性 可以基于下标查询, 时间复杂度 o(1)
2.数组适合基于下标查询
链表
1. 分为单向链表合双向链表, 查询时间复杂度o(n)
2.链表适合增删,更改指针关系
1. 分为单向链表合双向链表, 查询时间复杂度o(n)
2.链表适合增删,更改指针关系
LinkedList折半查找法原理
Linked为什么需要一个变量下头节点(后期方便遍历)
达到查询复杂度 o(log n)
Set
HashSet
HashSet为什么是无序的
因为HashMap遍历key也是无序的
HashSet底层
HashSet<String> set = new HashSet<>();
set.put("test");
set.put("test2");
底层是一个HashMap,key是存放的值,value是一个空的Object对象
set.put("test");
set.put("test2");
底层是一个HashMap,key是存放的值,value是一个空的Object对象
这种设计缺点:一个对象占用了16个字节
Map
HashMap
HashMap底层原理
数组 + 链表 + 红黑树
缩容:没有缩容,因为需要重新计算index值
HashMap怎么保证key不重复
hash值不相等
再比较equest方法不相等
基础知识
HashMap与HashTable之间的区别
异或运算^无符号右移>>>&与运算
底层实现方式
HashMap底层是有序存放的吗
JDK1.7
数组 + 链表
头插入方式(并发扩容死循环问题)
代码写法简单
JDK1.8
数组 + 链表 + 红黑树
尾插入
代码写法高大上
红黑树转换
数组容量 >= 64 & 链表长度大于8
红黑树节点个数<6转换链表
Hash函数计算
(h = key.hashCode()) ^ (h >>> 6)
i = (n - 1) & hash
时间复杂度
key没有冲突
Key产生冲突
链表存放则为o(N)
红黑树存放为O(log N)
hashcode碰撞问题
hashcode值相同,内容不同
性能优化
HashMap是如何解决Hash冲突问题的
JDK1.7版本
链表 增删效率非常高 查询效率非常低(o(n))
JDK1.8版本
链表+红黑树
在高并发的情况下如何使用HashMap集合?
HashMap 线程不安全---HashTable---线程安全 但是最终变成单线程
ConcurrentHashMap 1.7分段锁 1.8 node节点 cas+syn锁 取消分段锁设计
HashMap如何合理指定集合初始值大小
HashMap面试题
为什么重写equals还要重写hashcode方法
HashMap如何避免内存泄漏问题
HashMap1.7底层是如何实现的
HashMapKey为null存放在什么位置 0
HashMap如何解决Hash冲突问题
HashMap底层采用单链表还是双链表 单向链表
时间复杂度O(1)、O(N)、O(Logn)区别
HashMap根据key查询的时间复杂度
HashMap底层是有序存放的吗?无序 散列
为什么HashMap是无序的?
LinkedHashMap 和 TreeMap底层如何实现有序的?有序
LinkedListHashMap
有序,双向链表
两种排序方式
插入排序
访问排序
Redis缓存满了如何处理
缓存淘汰算法
LRU算法(最近少使用的)
方案一:访问key的时候,对count +1,效率非常低(因为HashMap排序慢)
方案二:基于LinkedHashMap实现,访问key的时候把这个key放在最后,那么最前面的就是最少使用的
HashTable
IO
正则表达式
序列化
克隆
动态
反射
注解
枚举
泛型
调用第三方
调用脚本语言
JS
Python
JSON
XML
Http
Mail
SSH
HTML
网络爬虫
JNode
日志
log4J
slfj
logback
加密解密
新特性
函数式编程
网络编程
Socket
TCP
UDP
http原理
servlet运行原理
GUI
awt
swing
JavaFX
Native
JNI
JNA
SPI机制
并发
JVM
消息队列
数据库
框架
Maven
Mybatis
SpringBoot
微服务
SpringCloud
SpringCloud Alibaba
zookeeper
dubbo
Nginx
Netty
架构
安全
高并发
设计模式
高可用
微服务
注册中心
配置中心
负载均衡
服务熔断
前端知识
基础
html
css
css3
html5
JS
前端概念
浏览器以及内核版本
单页面应用和多页面应用
前端工程化发展之路
PWA技术
SSR服务端渲染
es6
TypeScript
eslint 前端规范
CSS解析器
less
sass
构建工具
node
包管理器
npm
yarn
webpack
vite
框架
多页面应用
jquery
layui
bootstrap
单页面应用
vue
vue组件化
vuex存储
vue路由
vue3新特性
UI框架
Ant Design
Element UI
Arco Design
移动端开发
移动端概念
常见的布局
尺寸
h5开发
微信小程序
h5 +
框架
vant app
uniapp
图表制作
Canvas
Echats
地图
高德地图
百度地图
腾讯地图
3D
运维知识
Linux
Docker
Jenkins
K8S
收藏
0 条评论
下一页