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