架构知识(项目管理)
2021-08-24 20:32:54 16 举报
AI智能生成
java工发想成为架构师的明灯
作者其他创作
大纲/内容
架构师筑基
并发编程
线程基础、线程之间的共享和协作
基础概念
启动和终止线程
线程间的共享
线程间协作
线程的并发工具类
Fork/join
CountDownLatch作用
cyclicBarrier作用,应用场景和实战
CountDownLatch和cyclicBarrier辨析
Semaphore作用,应用场景和实战
Exchange作用,应用场景和实战
Callable,Future和FutureTask
原子操作CAS
CAS的原理
CAS的问题
原子操作类的使用
显式锁和AQS
显式锁
LockSupport工具
AbstractQueuedSynchronizer实现及源码分析
并发容器
ConcurrenHashMap
其他并发容器
阻塞队列
线程池
什么是线程池?为什么要用线程池?
实现一个我们自己的线程池
JDK中的线程池
线程池工作机制
合理配置线程池
系统为我们预定义的线程池
Executor框架
CompletionService
并发安全
类的线程安全
如何做到类的线程安全
线程不安全引发的问题
线程安全的单例模式
实战项目
并发任务执行框架
应用性能优化实战
JMM和底层实现原理
现代计算机物理上的内存模型
java内存模型
JVM性能调优
java内存区域
虚拟机的历史
未来的java技术
运行时数据区域
深入辨析堆栈
方法的出入栈
虚拟机中的对象
堆参数设置和内存溢出实战
子主题
网络编程与高效IO
演变交付生命周期
属性驱动设计法
按架构组织开发团队
开发骨架系统
利用商用构件进行开发
Tomcat系统进阶
目录结构
配置文件
lib
logs
webapps
容器
Engine
Pipeline
AccessLog
Realm
jasper解析器
Connector链接器
Endpoint
Processor
CoyoteAdapter
Mapper
线程模型
阻塞式(BIO)
非阻塞式(NIO)
源码解读
源码环境搭建
源码架构分析
核心组件分析
源码调试
嵌入式Tomcat
Tomcat的API
Tomcat的Maven插件
手写嵌入式Tomcat
Tomcat优化实战
Mysql深度优化
Mysql逻辑架构入门
存储引擎
MyISAM
Innodb
Archive
Memory
Federated
业务设计
锁
事务
逻辑设计
物理设计
查询以及索引
慢查询
索引
执行计划
Sql优化
Linux基础与进阶
Linux入门安装
Linux注意事项
Linux基础指令
Linux JDK1.8环境安装和操作指令
Linux Tomcat安装与停启
设计模式实战
java8
Java8新特性
速度更快
代码更少(增加了lambda表达试)
强大的Stream API
便于并行
最大化减少空指针异常 Optional
lambda
内置的四大核心函数式接口
Consumer<T>:消费型接口
void accept(T t)
Supplier<T>: 供给型接口
T get()
Function<T,R>: function型接口
R apply(T t)
Predicate<T>: 断言型接口
boolean test(T t)
方法引用
对象::实例方法
类::静态方法
类::实例方法
构造器引用
ClassName::new
Function<Integer,MyClass> fun=(n)-> new MyClass(n);
Function<Intger,MyClass> fun=MyClass::new;
Function<Intger,MyClass> fun=MyClass::new;
数组引用
type[] :: new
Stream API
注意
Stream 自己不会存储元素
Stream 不会改变源对象
Stream 操作是延迟执行的
Stream 三个步骤
创建 Stream
iterate
generate
中间操作
筛选与切片
filter(Predicate p)
distinct()
limit(long maxSize)
skip(long n)
映射
map(Function f)
mapToDouble(ToDoubleFunction f)
mapToInt(ToIntFunction f)
mapToLong(ToLongFunction f)
flatMap(Function f)
排序
sorted()
sorted(Comparator comp)
终止操作(终端操作)
查找与匹配
allMatch(Predicate p)
anyMatch(Predicate p)
noneMatch(Predicate p)
findFirst()
findAny()
count()
max(Comparator c)
forEach(Consumer c)
归约
reduce(T iden, BinaryOperator b)
reduce(BinaryOperator b)
收集
collect(Collector c)
并行流与串行流
parallel、sequential
Fork/Join
新时间日期 API
LocalDate\LocalTime\LocalDateTime
DateTimeFormatter
Instant
Duration
Period
TemporalAdjuster
ZonedDate、ZonedTime、ZonedDateTime : 带时区的时间或日期
接口中的默认方法与静态方法
类优先
Optional 类
Optional.of(T t) : 创建一个 Optional 实例
Optional.empty() : 创建一个空的 Optional 实例
Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例
isPresent() : 判断是否包含值
orElse(T t) : 如果调用对象包含值,返回该值,否则返回t
orElseGet(Supplier s) :如果调用对象包含值,返回该值,否则返回 s 获取的值
map(Function f): 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty()
flatMap(Function mapper):与 map 类似,要求返回值必须是Optional
重复注解与类型注解
java9
模块化系统
Modularity
jshell
/list
/vars
/open
/exit
常用算法
开源框架解析
Spring5
IOC容器及源码解读
窗口启动及配置类加载流程
组件添加
组件赋值
组件注入
后置处理器
声明式事务源码解读
Spring5容器源码解读
AOP使用与分析
@EnableAspectJAutoProxy注解
切面注解使用解析
AOP源码解读实战
SrpingMVC
Servlet3.0的注解实现
ServletContainerlnitaializer容器初始化
ServletRegistration注册
FilterRegistoration过滤器
ServletContext
性能实战
基于servlet3.0异步
Callable异步
DeferredResult异步
手写SpringMVC实战
Mybatis
概述
为什么要用ORM
为什么使用MyBatis
MyBatis快速入门
进阶
MyBatis的配置
映射器的配置
动态SQL
与Spring的集成
缓存
关联查询
代码生成器
高级
源码分析
插件开发
分页插件使用与源码分析
实战
快速入门
与Spring的集成
多对多级联
源码分析作业
手写一个MyBatis框架
高性能架构
分布式架构思维
大型互联网架演进过程
架构师应具备的分布知识
主流分布式架构设计详解
分布式协调和分流
Zookeeper分布式环境指挥官
zk的入门
zk开发基础
zookeeper应用实战
协议及算法分析
Nginx高并发分流进阶实战
nginx安装
正反向代理
nginx进程模型
核心配置结构
日志配置及切割
rewrite的使用
动静分离实战
反向代理实战
跨域配置实战
缓存配置及Gzip配置实战
https配置实战
横向拓展带来的问题
LVS实战
异步与消息中间件
概述
什么是消息中间件?和RPC有何区别?
消息中间件使用场景介绍
消息中间件简介及对比
ActiveMQ
RabbitMQ
RocketMQ
消息中间件的编年史
ActiveMq消息中间件
JMS规范
ActiveMQ使用
ActiveMQ高级特性和用法
实战:限时订单
企业级高可用集群部署方案
RabbitMQ消息中间件
AMQP规范和RabbitMQ基本概念
安装
原生java客户端使用
消息发布时的权衡
消息消费时的权衡
消息的拒绝
控制队列
消息的属性
与SPring集成
集群化与镜像队列
Kafka百万级吞吐实战
Kafka入门
Kafka的安装和配置参数
Kafka的集群
Kafka的生产者和消费者
整合Spring
深入理解Kafka
保证Kafka的可靠数据传递
大数据
削峰填谷
RocketMQ
缓存和NoSQL
Redis高生能级存数据库
Redis初入门及介绍
String
set
setnx:有添返回0,没有添加返回ok
setex:设置当前key的有效时间
setrange:从什么位置开始替换
mset:一次添加多个值
msetnx:添加多个,不会覆盖以存在的值
get
getset:返回之前的值,并且添加新值
getrange:取String
mget:批量取值
incr(不存在默认加1)
incr:加1
incrby:加指定数值
decr
decr:减1
decrby:减指定数值
append:向String后追加元素
strlen:计算string的长度
hash
hset:hset user:001 name mym
hsetnx:存在返回0不存在返回1
hmset:hmset user:003 name mym age 29
hget:hget user:001 name
hmget user:003 mym age
hincrby user:003 age -10
hexists user:004 age(判断字段是否在这个hash表中)
hlen user:003
hdel user:003 age
hkeys user:003(查所有的keys)
hvals user:003(查所有的values)
hgetall user:003(返回所有)
list
lpush:向左添加
rpush:向右添加
lpop:弹出左边第一个(删除)
rpop:弹出右边第一个(删除)
lrange:取值0开始,最后一个可以是-1
lrem:lrem mym 1 a(删除一个值)
lindex:取下标
llen:list的长度
set
无序set
sadd
scard:集合个数
diff:减集
siner:交集
sunion:并集
member
smembers:取全部
srandmember:随机取一个
sismember:集合是否存在,有返回1无返回0
有序z
zadd
zcard:集合个数
zrank:取当前元素在set中的序号
zrange:取值0开始,zrange class 0 -1 withscores(拿出排名idnex)
flush
flushdb:清除所在当前位置的数据库表
flushall:清除所有数据库中的表
select:切换数据库
scan: scan 0 match *(0:带表偏离量)有点像分页查找
java客户端
Redis常用命令及多项目设计实战
数据一致性
Redis性能优化
Redis主从模式
Redis持久化
哨兵核心机制
高可用集群
MongoDB进阶
mongodb入门
nosql与sql使用场景分析
基础概念
mongodb进阶
常用命令
快速入门
mongodb客户端驱动
增删改查与聚合
安全控制
mongodb高级知识
存储引擎
索引
高可用
最佳实践
缓存解决方案实战
缓存的概念
SpringCache的用法
缓存的一致性策略
缓存雪崩方案
缓存穿透方案
高可靠数据存储
Mysql高性能存储实战
Mycat进阶
FastDFS分布式文件存储实战
文件存储实战
文件同步实战
文件查询实战
分布式部署实战
分布式常见场景解决方案实战
事务概念
事务与锁
分布式事务产生背景
X/OpenDTP事务模型
标准分布式事务
分布式事务解决方案
两阶段提交
BASE理论柔性事务
TCC方案
补偿性方案
异步确保型与最大努力型
单点登陆方案
单点登陆的问题背景
页面跨域问题
session跨域共享方案
session的扩展
分布式任务调试方案
Quartz调度的用法
Elastic-job示例
分布式调试的疑难点
Quartz集群定制化分布式调试
算法
微服务架构专题
RPC原理
RMI的实现
原理
服务注册与发布
动态代理
序列化与反射
手写RPC框架
Dubbo应用及源码解读
Dubbo简介
分布式中rpc调用的痛点
dubbo主要解决哪些rpc问题
dubbo涉及的概念
dubbo的部署安装
dubbo的配置使用
xml方式
注解方式
api方式
dobbo中各元素属性学习
dubbo在项目的用法
类与类的依赖关系说明
项目之间的依赖划分
实战拆解分布式
duboo源码解析
dubbo的模块及层级
dubbo的初始化过程
dubbo的服务暴露
dubbo的服务引用
dubbo的服务拦截
服务的注册与发现
springBoot底层探析
SpringBoot快速入门
SpringBoot与微服务之间的关系
环境搭建
集成SpringMVC
集成mybatis
整合日志
集成JSP
全局异常
打包部署
热部署
集成Swagger构建API管理体系
核心组件
starter
actuator
auto-configuration
cli
jta+atomikos分布式事务
性能优化
jvm参数
扫包优化
undertow容器
@SpringBootApplication源码解读
纯手写SpringBoot雏形
SpringCloud高级进阶
Zuu路由网关详解及源码探析
Ribbon客户端负载均衡原理与算法,与服务端负载均衡区别
Feign声明式服务调用方式实现
Hystrix服务熔断及服务降级实战
Eureka注册中心构件分析
Config配置服务中心与SVN,git快速集成
BUS消息总线技术
Sleuth调用链路跟踪
Stream消息驱动的微服务
Docker虚拟化技术
Docke介绍,安装与使用
Docke组成
镜像
容器
私有仓库
Docker Compose部署脚本
Docker Redis分布式集群部署
Docker File构建
通Mave插件打包Docker镜像
Docker部署及运行应用程序
Kubernetes编配
基于Docker构建Mysql集群实战
高可用SpringCloud微服务与Docker集成实现动态扩容实战
团队协作开发
GIT
Git基本工作原理
与SVN对比
基本动作流程
Git常用扣作及问题处理
工程初始化及吉隆
文件提交
分支与常用标签应用
远程仓库管理
合并与冲突解决
架构师职责:git Flow必备技能
常用指令
客户端
初始化一个git项目
git init
git clone [url]
添加文件至暂存区
git add [file1] [file2] ...
git rm -cache [file1] ...
git rm --cached -r <dir>
git status
提交代码至本地仓库
git commit -m "the commit message"
git commit [file1] .. -m [message]
git commit -a -m [message]
git commit --amend -m [message]
分支管理
git branch
git branch [branchName]
git checkout [branchName]
git checkout -b dev origin/dev
git branch --track [branch] [remote-branch]
git branch --set-upstream-to=origin/test test
git branch -d [branchname]
git push origin --delete [branchname]
git branch -dr [remote/branch]
标签管理
git tag
git tag [tagname]
git tag -d [tagname]
git show [tagname]
git push [remote] [tagname]
状态信息展示
git status
git log
远程仓库
git remote -v
git remote add origin [URL]
git remote add [shortname] [url]
git push [shortname] [branch]
git pull [shortname] [branch]
--allow-unrelated-histories
Maven
实装和配置
使用入门
编写POM
编写主代码
编写测试代码
打包和运行
坐标和依赖
Maven坐标以及详解
依赖的配置
依赖的范围
传递性依赖和依赖调解
聚合与继承
聚合
继承
聚合与继承的关系
约定优于配置
反应堆
生命周期与插件
clean生命周期
default生命周期
site生命周期
命令行与生命周期
插件目标
插件绑定
插件配置
常用插件
仓库
本地仓库
远程仓库
中央仓库
快照版本
去程版本
远程仓库的配置
快照版本与镜像
版本管理
版本号定义约定
主干标签与分支
私服- Nexus
实装Nexus
Nexus的仓库与仓库组
Nexus使用上传配置
Maven实战与手写自己的插件
jenkins
环境搭建
jekins安装
jenkins Tomcat实装
jenkins Git实装
jenkings Maven安装
配置管理
jenkins配置
jenkins管理
jenkins配置程序作来
jenkins配置单元测试
jenkins配置自动化测试
部署分析
jenkins配置邮件通知
jenkins配置报表
jenkins代码分析
jenkins分布式构建
jenkins自动部署
高级进阶
jenkins指标与趋势
jenkins服务器维护
jenkins持续部署
jenkins插件管理
jenkins备份
jenkins远程测试
DevOps
TAPD
架构师
操作系统
数据库系统
数据通信与计算机网络
系统性能评价
开发方法
系统计划
系统分析与设计方法
软件架构设计
设计模式
测试评审方法
基于中间件的开发
安全性和保密性设计
应用数学
信息系统基础知识
架构设计师考试内容(2020)
linux性能优化
学习方法
项目管理
PMP
高项
系统分析师
右上角可以点赞,点赞5k免费克隆
0 条评论
下一页