java学习
2021-10-29 16:21:14 137 举报
AI智能生成
本人学习java做的一些整理工作(自用),不定时更新. @updateTime 2021/3/28
作者其他创作
大纲/内容
java基础
Java语法
修饰符
权限修饰符
default
private
public
protected
非权限修饰符
static
static变量
static方法
static常量代码块
final
final变量
final方法
final类
abstract
abstract类
abstract方法
synchronized
volatile
transient
类型转换
隐式类型转换
显式类型转换
引用类型转换
注解
元注解
@Target
@Retention
@Document
@Inherited
标准注解
@Override
@Deprecated
@SuppressWarnings
自定义注解
反射
容器
map
list
set
代理
静态代理
类型
基本数据类型
byte
short
int
long
float
double
boolean
char
类
封装类型
Integer
Long
Float
Double
Enum
Boolean
JDK自带类
HashTable
变量
table: Entry<?,?>[]
count: int
threshold: int
loadFactor: int
modCount: int=0
方法
rehash(): void
HashMap
方法
resize
treeifyBin
变量
size
table: Node<K,V>[]
HashSet
map: HashMap<>
ArrayList
LinkedList
接口
jdk自带接口
Serializable
序列化
序列化的用途
对象持久化
网络传输对象
serialVersionUID
作用
验证版本一致性
生成方式
指定值
编译器自动生成
静态变量序列化
Cloneable
JRE
JDK
SPI机制
Java8新特性
lambda表达式
函数式接口
四大函数式接口
Function
Predicate
Consumer
Supplier
stream流式计算
速度更快
Hashmap优化
concurrent优化
Optional
方法
of
ofNullable
orElse
orElseGet
Java 多线程
thread
创建线程
继承thread类
实现runnable方法
实现Callable接口
方法
run
start
setPriority
sleep
join
yield
interrupt
isAlive
线程状态
start
ready
run
block
dead
用户线程
守护线程
线程同步
synchronized
同步方法
同步块
lock
ReentrantLock
JUC
Lock
Condition
await
signal
8锁现象
集合类不安全
常见的辅助类
CountDownLatch
CyclicBarrier
Semaphore
acquire
release
读写锁
ReadWriteLock
同步容器
队列
BlockingQueue
阻塞队列API表格
SynchronousQueue
线程池
三大方法
七大参数
四种拒接策略
AbortPolicy
CallerRunsPolicy
DiscardPolicy
DiscardOldestPolicy
IO密集型和CPU密集型
ForkJoin
并行流
异步回调
Atomic类
AtomicStampedReference
AtomicReference
死锁
死锁解决
jps
CAS
ABA问题
自旋锁
JVM
JMM
堆
存放new的对象和数组
可以被所有的线程共享,不会存放别的对象引用
栈
存放基本变量类型(会包含这个基本类型的具体数值)
引用对象的变量(会存放这个引用在堆里面的具体地址)
方法区
可以被所有线程共享
包含了所有的class和static变量
JVM位置
JVM体系结构
沙箱安全机制
Native
PC寄存器
方法区
运行时常量池
Java虚拟机栈
本地方法栈
三种JVM
sun公司 HotSpot
BEA JRockit
IBM J9VM
堆
堆内存分配策略
对象访问定位
堆内存调优
GC
对象是否死亡
引用计数器算法
引用可达性算法
引用
强引用
软引用
弱引用
虚引用
分代假说
弱分代假说
强分代假说
跨代引用假说
划分堆
新生代
记忆集
老年代
收集策略
Partial GC
Minor GC/Young GC
Major GC/Old GC
Mixed GC
Full GC
垃圾收集算法
标记-清除算法
标记-复制算法
半区复制
Appel式回收
分配担保
标记-整理算法
”和稀泥式“解决方案
HotSpot虚拟机垃圾收集器
Serial收集器
ParNew收集器
Parallel Scavenge收集器
Serial Old收集器
直接内存
类文件及其加载
类文件结构
储存格式
无符号
表
Class文件格式图
魔数
版本号
常量池
字面量
符号引用
常量池项目类型图
类加载
类的生命周期
类的生命周期图
加载
验证
文件格式验证
元数据验证
字节码验证
符号引用验证
准备
解析
初始化
使用
卸载
类加载器
类加载器种类
虚拟机自带的加载器
启动类(根)加载器
扩展类加载器
应用程序(系统类)加载器
双亲委派机制
命名规约
网络编程
Linux
命令
Vim编辑器
命令模式
i
x
:
输入模式
底线命令模式
q
w
vim键盘图
账号管理
useradd
userdel
usermod
su
passwd
用户组管理
groupadd
groupdel
groupmod
newgrp
磁盘管理
df
du
mount
unmount
进程管理
ps
|
grep
pstree
kill
链接
硬链接
软链接
架构设计方法论
DDD(领域驱动设计)
分层架构
User Interface
Application
Domain
Infrastructure
DDD的分层结构图
javaWeb
Servlet
版本控制
git
git结构
git基本命令
.gitignore文件
git文件状态
开发框架
微服务框架
spring
spring cloud
openfeign
gateway
nacos
rabbitmq
spring boot
springboot2核心技术
基础入门
自动配置原理
maven管理
就近原则
依赖传递
自动配置
底层注解
@Configuration
@Bean
springboot2响应式编程
spring
IOC
过程
目的
实现方式
BeanFactory
ApplicationContext
Bean管理
实现方式
基于xml配置文件实现
基于xml方式创建对象
基于xml方式注入属性
xml自动装配
基于注解方式实现
spring针对bean管理提供的注解
@Service
@Component
@Controller
@Repository
基于注解方式实现对象创建
基于注解方式实现属性注入
@Autowired
@Qualifier
@Resource
@Value
完全注解开发
FactoryBean
scope
bean生命周期
AOP
底层原理
有接口
无接口
术语
连接点
切入点
通知(增强)
前置通知
后置通知
环绕通知
异常通知
最终通知
切面
操作
准备工作
AspectJ注解
@Before
@After
@AfterThrowing
@Around
@AfterReturning
jdbcTemplate
准备工作
常用函数
update
queryForObject
query
batchUpdate
事务
四个特性
原子性
一致性
隔离性
持久性
事务隔离级别
表格
三个读问题
脏读
不可重复读
虚(幻)读
timeout
readOnly
rollbackFor
noRollbackFor
@Transactional
spring5框架新功能
spring5框架整合Log4j2
spring5框架核心容器支持@Nullable注解
spring5核心容器支持函数式风格GenericApplicationContext
spring5支持整合Junit5
spring5框架新功能(Webflux)
异步非阻塞
特点
非阻塞式
函数式编程
响应式编程
观察者模式
java8中提供类
Observer
Observable
Reactor实现
实现类
Mono
Flux
三种数据信号
元素值
错误信号
完成信息
springMVC
持久层框架
mybatis
Hibernate
持久化概念
ORM
任务框架
quartz
子主题
API
Scheduler
Job
JobDetail
JobDataMap
@DisallowConcurrentExecution
@PersistJobDataAfterExecution
Trigger
公共属性
TriggerKey
jobKey
startTime
endTime
priority
misfire
calendar
子主题
SimpleTrigger
CronTrigger
CronExpression
Second
Minutes
Hours
Day-of-Month
Month
Day-of-Week
Year(optinal field)
JobBuilder
TriggerBuilder
TriggerListener
JobListener
SchedulerListener
Jobs
Triggers
SchedulerFactory
StdSchedulerFactory
DirectSchedulerFactory
JobStores
RAMJobStore
JDBCJobStore
设计模式
设计模式七大原则
单一职责原则
接口隔离原则
依赖倒转原则
里氏替换原则
开闭原则
迪米特法则
合成复用原则
设计模式目的
代码重用性
可读性
可扩展性
可靠性
高内聚,低耦合
设计原则思想
设计模式分类
创建型模式
单例模式
实现方式
饿汉式(静态变量)
饿汉式(静态代码块)
懒汉式(线程不安全)
懒汉式(线程安全,同步方法)
懒汉式(线程安全,同步代码块)
双重检查
静态内部类
枚举
抽象工厂模式
原型模式
类图
建造者模式
工厂模式
简单工厂模式
工厂方法模式
抽象工厂模式
结构型模式
适配器模式
类适配器
对象适配器
接口适配器
桥接模式
类图
过滤器模式
装饰者模式
组合模式
类图
外观模式
类图
享元模式
类图
代理模式
形式
静态代理
动态代理
Cglib代理
行为型模式
模板方法模式
命令模式
访问者模式
迭代器模式
观察者模式
中介者模式
备忘录模式
解释器模式(Interpreter模式)
状态模式
策略模式
职责链模式(责任链模式)
项目管理
maven
其他
IDEA插件
Free MyBatis plugin
Lombok
Maven Helper
elasticsearch
数据格式
倒排索引
数据存储格式图
index(索引)
Type(类型)
Decument(文档)
Field(字段)
概念
Mapping(映射)
Shards(分片)
Replicas(副本)
Allocation(分配)
docker
简介
docker是什么
为什么要有docker
docker镜像技术
docker理念
能干嘛
之前的虚拟机技术
容器虚拟化技术
开发/运维
更快速的应用交付和部署
更便捷的升级和扩缩容
更简单的系统运维
更高效的计算资源利用
官网
docker官网
docker中文网站
仓库
docker hub
基本组成
镜像(image)
是什么
UnionFS
docker镜像加载原理
特点
容器(container)
仓库(repository)
加速器
底层原理
工作原理
Docker与VM比较
常用命令
帮助命令
docker version
docker info
docker --help
镜像命令
docker images
OPTIONS
-a:列出本地所有的镜像(含中间映象层)
-q:只显示镜像ID
--digests:显示镜像的摘要信息
--no-trunc:显示完整的镜像信息
docker search <image.name>
OPTIONS
--no-trunc:显示完整的镜像描述
-s <n>:列出收藏数不小于指定值的镜像
--automated:只列出automated build类型的镜像
docker pull <image.name> [:TAG]:下载镜像
docker rmi <iamge.name>[:TAG]
docker rmi -f
docker rmi -f $(docker images -qa)
docker commit提交容器副本使之成为一个新的镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
容器命令
docker run [OPTIONS] image [COMMAND] [ARG...]
OPTION
--name="容器新名字":为容器指定一个名称
-d:后台运行容器,并返回容器ID,也即启动守护式容器
-i:以交互模式运行容器,通常与-t同时使用
-P:随机端口映射
-p:指定端口映射
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
启动交互式容器
docker ps [OPTIONS]
-a:列出当前所有正在的容器+历史上运行过的。
-l:显示最近创建的容器。
-n:显示最近n个创建的容器。
-q:静默模式,只显示容器编号。
--no-trunc:不截断输出。
exit:容器停止并退出。
ctrl+P+Q:容器不停止退出。
docker start <container.ID/container.name>:启动容器
docker restart <container.ID/container.name>:重启容器
docker stop <container.ID/container.name>:停止容器
docker kill <container.ID/container.name>:强制停止容器
docker rm <container.ID>:删除已停止的容器
docker rm -f ${docker ps -a -q}
docker ps -a -q| xargs docker rm
docker logs <container.ID>
-t:是加入时间戳
-f:跟随最新的日志打印
--tail <n>:显示最后n条
docker top <container.ID>:查看容器内运行的进程
docker inspect <container.ID>:查看容器内部的细节
docker exec -it <container.ID> bashshell
docker attach <container.ID>
docker cp <container.ID>:<dir.src> <host.dst>:从容器内拷贝文件到主机上
docker commit -m="描述信息" -a="作者" 容器id 要创建的目标镜像名:[标签名]
总结
Dockerfile
常用命令
ADD
ARG
CMD
COPY
ENTRYPOINT
ENV
EXPOSE
FROM
LABEL
MAINTAINER
RUN
USER
VOLUME
WORKDIR
容器数据卷
直接添加命令
docker run -it -v /<host.dir>:/<container.dir>[:ro] <images.name>
kubernetes
功能
自动装箱
自我修复
水平扩展
服务发现
滚动更新
版本回退
密钥和配置管理
存储编排
批处理
架构
架构图
基本组成
pod
controller
service
kafka
消息队列
优点
解耦
可恢复性
缓冲
灵活性&峰值处理能力
异步通信
模式
点对点模式
发布/订阅模式
基础架构
架构图
常用命令
bin/zookeeper-server-start.sh /config/zookeeper.properties
bin/kafka-server-start.sh [-daemon] /config/server.properties
kafka-topics.sh --list --zookeeper localhost:2181
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor <n> --partition <m> --topic <topic.name>
kafka-topics.sh --delete --zookeeper localhost:2181 --topic test
kafka-console-producer --broker-list localhost:9092 --topic test
kafka-console-consumer --bootstrap-server localhost:9092 --topic test [--from-beginning]
kafka-consumer-groups.sh --bootstrap-server 172.16.4.26:9092 --list
kafka-consumer-groups.sh --bootstrap-server 172.16.4.26:9092 --group consumer-group-pkiverifytopicreveiver --describe
kafka-topics.sh --zookeeper localhost:2181 --describe --topic test
kafka-topics.sh --zookeeper localhost:2181 --alter --topic test --partition <n>
bin/kafka-run-class.sh kafka.tools.DumpLogSegments --file <log.dir> --print-data-log
mqtt
基本概念
产品
设备
topic
topic类
主要特性
发布/订阅消息模式
对负载内容屏蔽的消息传输
使用TCP/IP提供网络连接
三种消息发布服务质量
小型传输
使用Last Will和Testment特性通知有关各方客户端异常中断的机制。
协议原理
MQTT协议实现方式
网络传输与应用消息
MQTT客户端
MQTT服务器
MQTT协议中的订阅、主题、会话
订阅(Subscription)
会话(Session)
主题名(Topic Name)
主题筛选器(Topic Filter)
负载(Payload)
nginx
常用功能
http代理
正向代理
反向代理
负载均衡
策略
内置策略
轮询
加权轮询
Ip hash
扩展策略
文件结构
全局块
events块
http块
server块
location块
常用命令
nginx -s signal
nginx
数据库
关系型数据库
mysql
mysql优化
设计
存储引擎
字段类型
范式
逆范式
功能
架构
合理SQL
法则
只返回需要的结构
确保查询使用了正确的索引
尽量避免使用子查询
不要使用OFFSET实现分页
了解SQL子句的逻辑执行顺序
mysql架构
客户端
server层
存储引擎层
物理文件层
存储引擎
myisam
innodb
表空间
独立表空间
共享表空间
……
事务
ACID
原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
永久性(Durability)
常见的事务
自动提交事务
显式事务
隐式事务
事务中常用的语句
Begin Transaction
Commit Transaction
Rollback Transaction
Save Transaction
索引
应该创建索引的字段
索引失效情况
没有必要使用索引的情况
锁
并发读取问题
脏读
不可重复读
幻读
隔离级别
Read uncommitted
Read committed
Repeatable read
Serializable
图片
非关系型数据库
redis
NoSql
行式数据库
列式数据库
Redis6
特性
单线程+多路IO复用
常用五大数据类型
key
命令
keys
*
set
exists
type
del
unlink
expire
ttl
select
dbsize
flushdb
flushall
String
数据结构
数据结构图
命令
get
append
strlen
setnx
incr
decr
incrby
decrby
mset
mget
msetnx
get range
set range
setex
getex
List
数据结构
数据结构图
命令
lpush/rpush
lpop/rpop
rpoplpush
lrange
lindex
llen
linsert
lrem
lset
Set
数据结构
对外
底层
命令
sadd
smembers
sismemeber
scard
srem
spop
srandmember
smove
sinter
sunion
sdiff
Hash
数据类型
对外
底层
命令
hset
hget
hmset
hexists
hkeys
hvals
hincrby
hsetnx
Zset
数据结构
对外
底层
跳跃表
结构图
命令
zadd
zrange
withscores
limit offset count
zrangebyscore
withscores
limit offset count
zrevrangebyscore
withscores
limit offset count
zincrby
zrem
zcount
zrank
Redis6配置文件详解
Redis的发布和订阅
Redis6新数据类型
Bitmaps
子主题
命令
setbit
getbit
bitcount
[start end]
bitop
HyperLogLog
用法
命令
pfadd
pfcount
pfmerge
Geospatial
命令
geoadd
geopos
geodist
georadius
Jedis操作Redis6
Redis6与Spring boot整合
引用依赖
application.properties
config
Redis6的事务操作
用法
命令
discard
exec
multi
unwatch
watch
Redis6持久化方式
AOF
异常恢复
Rewrite压缩
AOF流程
优势
劣势
RDB
优势
劣势
RDB流程
Redis6的主从复制
命令
info replication
slaveof <主机ip><port>
slaveof no one
特点
主从复制
薪火相传
反客为主
哨兵模式
选举过程
复制延时
Redis6集群
无中心化集群
配置
命令
redis-cli --cluster create --cluster-replicas 1 [*.*.*.*:*]
cluster keyslot [key]
cluster countkeysinslot [slot]
cluster getkeysinslot [slot] <count>
slots
故障恢复
Jedis操作
HostAndPort
JedisCluster
Redis6应用问题解决
缓存穿透
问题描述
图示
解决方案
对空值缓存
设置和访问的名单
采用布隆过滤器
进行实时监控
缓存击穿
问题描述
图示
解决方案
预先设置热门数据
实时调整
使用锁
缓存雪崩
问题描述
图示
解决方案
构建多级缓存架构
使用锁或队列
设置过期标志更新缓存
将缓存失效时间分散开
分布式锁
问题描述
命令
setnx
del
expire
Redis6新功能
ACL
命令
acl list
acl cat
acl cat <Type>
acl whoami
acl setuser
acl规则
IO多线程
工具支持cluster
缓存策略
旁路缓存
写操作
读操作
缺陷
读写穿透
写
读
异步直写
写
读
0 条评论
下一页