java知识体系
2020-07-01 21:29:37 0 举报
AI智能生成
个人技能体系,用于关注自己情况,提升自己能力
作者其他创作
大纲/内容
工具框架
redis
数据类型
string
set
zset
map
list
集群
基本操作
rabbitmq
基本操作
数据类型
概念
elasticsearch
数据类型
基本操作
zookeeper
子主题
子主题
kibana
maven
git
svn
docker
镜像
docker pull 镜像名
docker search 镜像名
docekr rmi 镜像名
docker save 镜像名
容器
docker run --name 自定义容器名 -v 本地路径:容器路径 -p 本地端口:容器端口 -d 镜像名
docker ps
docker ps -a
docker rm 容器名
守护程序
k8s
idea
myeclipse
tomcat
nginx
jetty
kafka
Jenkins
软件工程相关能力
业务流程分析
er图
uml图
实现功能进行梳理
框架
spring
ioc
BeanFactory
DefaultListableBeanFactory
ApplicationContext
ClassPathXMLApplicationContext
FileSystemXMLApplicationContext
AnnotationConfigApplicationContext
di
aop
切入点
前置通知
@Before
后置通知
@After
后置返回通知
@AfterReturning
后置异常通知
@AfterException
环绕通知
@Around
启动aop
启动注解AOP
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
使用xml配置aop
<aop:config>
事务
@Transactional
设置事务隔离级别:isolation
isolation = Isolation.REPEATABLE_READ
DEFAULT
READ_UNCOMMITTED
READ_COMMITTED
REPEATABLE_READ
SERIALIZABLE
设置事务传递方式:propagation
propagation= Propagation.REQUIRED
SUPPORTS
MANDATORY
REQUIRES_NEW
NOT_SUPPORTED
NEVER
NESTED
创建元数据的方式
XML配置
<beans>
<bean>
<context:component-scan>
包扫描
注解
@Component
@Bean
@Import
JavaConfig
@Configuration
设置为主配置
@ComponentScan
包扫描
@Autowired
自动注入
SpringMVC
@RequestMapping
@ResponseBody
@Parameter
SpringBoot
mybatis
druid
Dubbo
struts2
Hibernate
Swagger
@Api
@Api
JUtil
@Test
slf4j
Logger
LoggerFactory
语言
java
数据类型
基本数据类型
boolean
char
byte
short
int
long
float
double
集合
map
hashMap
ConcurrentHashMap
hashtable
TreeMap
collection
list
ArrayList
LinkedList
set
HashSet
TreeSet
queue
stack
常规类
String
封装类
自定义类
大数据类
BigDecimal
BigInteger
枚举
Enum
注解
Annotation
基本语法
if
while
swatch
for
操作权限
private
default
protected
public
API
Collections
Math
Arrays
sort
Random
并发编程
锁
共享锁
子主题
排他锁
Lock
synchronized
显式锁
Lock
ReentrantLock
lock()
unlock()
隐式锁
synchronized
无锁
偏向锁
轻量级锁
自旋锁
重量级锁
volatile
不保证原子性
保证内存可见性
一致性原则
JMM
内存模型
缓存一致性协议
网络编程
IO
BIO
NIO
AIO
JVM
内存模型
线程共享区域
堆
old
eden
survivor
配置参数
-Xms
-Xmn
方法区/元空间
资源共享池
类元信息
线程独享区域
线程栈
栈帧
局部变量表
操作数栈
动态链接
方法出口
栈帧...
本地方法栈
程序计数器
垃圾回收算法
标记清除算法
标记整理算法
复制算法
垃圾回收器
CMS
并行
对标记类的操作进行分层
初始标记
再次标记
并发标记
子主题
-XX:+UseConcMarkSweepGC
G1
并行
控制stw的时间
优化体验
ZGC
串行
serial
暂停所有工作单线程进行内存回收
年轻代用复制算法
老年代用标记整理算法
-XX:+UseSerialGC
serialOld
serial的老年代版本回收器
-XX:+UseSerialOldGC
并发
parNew
用于和CMS配合,用来回收年轻代的垃圾回收器
回收年轻代使用复制算法
-XX:+UseParNewGC
parallelOld
用来回收老年代的回收算法
使用标记整理算法进行垃圾回收
存在stw
parallel
暂停所有工作,多线程进行垃圾回收
存在stw
年轻代用复制算法
老年代用标记整理算法
对象创建流程
类加载检查
加载类
分配内存
初始化
设置对象头
执行init方法
lamda
函数式编程
函数式接口:接口中只有一个方法,可以使用@FunctionalInterface
使用方式
(参数)->单行语句
(参数)->{多行语句}
(参数)->表达式;
JavaScript
jQuery
easyUI
vue
React
nodejs
python
shell
dos
php
html
go
数据库
mysql
基础操作
索引
主键索引
ALTER TABLE table_name ADD PRIMARY KEY (column_list);
唯一索引
ALTER TABLE table_name ADD UNIQUE (column_list);
联合索引
普通索引
ALTER TABLE table_name ADD INDEX index_name (column_list);
删除索引
DROP INDEX index_name ON talbe_name;
查看索引
show index from 表名称
引擎
InnoDB
聚集型引擎
主键索引或者唯一索引与数据存放在一起
支持事务
支持表锁,行锁,页锁
子主题
MyISMA
非聚集性引擎
主键索引或唯一索引与数据是分离开的
不支持事务
只有表锁
MVCC
一致性快照读
实现原理
隐式字段
DBTRXID
记录修改当前表的事务id
DBROLLRPT
记录当前记录对应的回滚使用undo日志指针
undo日志
undo日志是逻辑日志。可以这样认为,当delete一条记录时,undo log中会记录一条对应的insert记录,当update一条记录时,它记录一条对应相反的update记录。
快照读&当前读
快照读
读取的是记录数据的可见版本(有旧的版本),不加锁,普通的select语句都是快照读
当前读
读取的是记录数据的最新版本,显示加锁的都是当前读
for update
share mode
readView
事务
隔离级别
读未提交:read uncommitted
采取读不加锁,写加锁,事务写阻塞其他事务的写
读已提交:read committed
通过MVCC实现
每次进行操作都创建一次快照
(默认)可重复读:repeatable read
通过MVCC实现
在事务的第一个执行开始创建一个快照直到事务结束
串行化:serializable
读写均加锁
读加共享锁,写加排它锁,读写互斥,如果有未提交的事务正在修改某些行,所有select这些行的语句都会被阻塞
查看当前隔离级别
show variables like 'tx_isolation'
设置事务隔离级别
set tx_isolation='REPEATABLE-READ'
使用
启用事务:begin
提交事务:commit
回滚事务:rollback
锁
共享锁:读取数据时加S锁
共享锁之间不互斥
排它锁:修改数据时加X锁
排他锁与任何锁互斥
优化
查看执行计划
explain
explain select * from table where a=b
查看执行计划选择
trace
set session optimizer_trace="enabled=on",end_markers_in_json=on;
select * from table where a=b
select * from information_schema.OPTIMIZER_TRACE;
set session optimizer_trace="enabled=off";
优化方法
使用索引
不要给大量重复的数据建立索引
一张表的索引数量不要超过5个
不要对text等大数据类型加索引
最左前缀原则
in 和 exists
优化原则小表驱动大表
in尽量保证in后内容要少
exists要保证主表限定后的数据少
不要使用not in
不要使用null去做为默认值和进行比较
不要在索引列上使用mysql内置函数
覆盖索引
limit的优化
当要进行特别大值的翻页时,考虑优先使用覆盖索引获取出需要的数据id,然后再通过这个id去进行全部数据获取
尽量使用union all 替换 union
join的优化
小表驱动大表
count(*)的优化
子主题
尽量不使用select*要明确自己要查询的字段内容
要避免or的使用
like时要考虑最左前缀原则
避免使用!=
对于排序内容要考虑联合索引的顺序
慎用distinct
删除无用多余的索引
删除大量数据,要进行分流
一个sql中尽量减少join的表数量
子主题
oracle
基础操作
索引
表空间
优化
查看执行计划
EXPLAIN PLAN FOR select * from G_GAMBLING gamb where gamb.active=1
select * from table(DBMS_XPLAN.DISPLAY)
redis
mongodb
elasticsearch
Memcache
业务体系,应用场景
旅游
客户
合作关系
客户信息
账务信息
供应商
供应商信息
合作关系
签订合同
财务信息
游客
游客信息
签证信息
行程
起止日期
途径城市
参加活动
产品分类
住宿
膳食
交通
签证
活动
人员/导游/司机
金融
其他
核心目标
让游客更简单的享受旅行
ERP
流程管理
业务管理
人员管理
上下游管理
供应商
客户
产品管理
电商
用户注册
商品搜索
商品展示
加入购物车
创建订单
进行支付
进行仓库配送
进行物流派送
收货
完成订单
售后
退款
退货
换货
投诉
评论
爬虫
即时通讯
支付
认证
搜索
分词
倒排索引
搜索引擎
0 条评论
下一页