g2f
工程相关 :
一 版本控制 git
1.Git 协议 : 四种 local(局域网) ssh http git(不推荐 暴露9481)
拉去使用http哑协议,然后push使用 ssh 来自 StackFlow
注:http Smart 协议 是基于 CGI 配合GIT git-http-backend 脚本进行使用,配置较复杂,现在一般不会这么去做,而是采用gitlab 、gogs 之类的web管理进行代替
2. merge 和 rebase 区别 依赖commit (https://blog.csdn.net/liuxiaoheng1992/article/details/79108233)
合并相关命令一共存在共同祖先以及指针的概念。
git merge : 祖先 ,当前分支与要被合并分支的公共祖先commit ,当前分支公共祖先最新commit,被合并分支公共祖先最新commit。三者合一
git rebase: 祖先,当前分支与要合并分支的公共祖先commit的修改,master指针指向被合并分支最新更改commit,然后放到当前分支与要合并分支的公共祖先commit的修改
二 maven,sornar,idea,jenkins,nexus
1.maven 【默认规则】当中的测试类又做了约定,约定必须是Test开头的类名与test 开头的方法才会执行【也可以定制规则】 sonar做测试覆盖 jacoco 插件
1. Maven 生命周期 与插件
clean Lifecycle :清理生命周期,用于于清理项目
default Lifecycle:默认生命周期,用于编译、打包、测试、部署等
site Lifecycle 站点文档生成,用于构建站点文档
2.依赖规则
依赖传播、依赖优先原则、可选依赖、排除依赖、依赖范围
3.聚合继承
2.idea 快捷键
3.jenkins 聊聊 自己学的自动化脚本 Mac vagrant 上有
二.运维 linux,nginx,tomcat,
1.linux
1.目录操作 crud
2.文件操作 crud
tail -100 ./logs/catalina.out | grep 'copy' —color 与 tail -f
top, free, df -h, ps -ef , env,netstat -tuln,route -n
vim技巧
linux 内核 TODO 用户空间 内核空间
2.nginx 架构图
1.架构 两个进程 ,主进程 加载配置,启动工作进程,联系netty。非停升级。
子进程(可配置多个work),核心模块 网络读写,存储读写以及 传输。 run-loop 定义 mail,http,config模块。
高并发,异步非阻塞。 底层c++
2.使用
1.动静分离,黑白名单,防盗链,日志配置,下载限速
2.反向代理
Upstream a {} proxy_pass {http://a}
参数 weigtht ,权重 负载均衡算法。ll+weight. ip_hash session 一致性. (Ur_hash 最小链接,最小响应)
参数 max_fails 最大失败次数 ,踢出
fail_timeout 踢出后重新探测时间
backup 备用服务
max_conns 允许最大连接数
slow_start 当节点恢复,不立即加入,而是等待 slow_start 后加入服务对列。
3.高速缓存 proxy_cache_path 模块配置 以及 ng_cache_purge引入清除
3.tomcat 架构图 (责任链)
1.IO 模型。4种
2.NIO 和 IO区别。源码 JIOEndPoint 与 NioEndPoint 多个poller线程 多路复用 多个线程回调通信
三.ssm
1.mybatis 架构图 组件 按着jdbc方式 源码 太熟悉了
Spring 和 springmvc。
2.Spring
IOC
1.为什么使用 spring ioc
2.创建bean的几种方式
基于Class构建
构造方法构建
静态工厂方法创建
FactoryBean创建
3.依赖注入方式
set方法注入
构造方法注入
自动注入(byName、byType)
方法注入(lookup-method)
4.Bean创建流程
AOP。织入业务逻辑。 读写数据源,日志,接口限流等。
切面,切点, 连接点,通知。 默认jdk代理,可指定cglib。
jdk和cglib的不同,一个接口一个实现。 故 this 在 jdk中 不能使用,因为this是 接口和proxy, 在cglib中能使用,因为继承
声明式事务
acid ,因为高并发完全达到acid 只能是串行化,但是带来很多负面影响。 故出现 隔离级别
读未提交【脏读,不可重复读,幻读】,读已提交【不可重复读,幻读】,可重复读【幻读】,串行化。mysql默认 可重复读,oracle 默认是读已提交
传播行为 required。required_new ,not_support ,同一个类 默认 代理只走一个(aop)可通过暴露和AopContext 达到目的
3.springMVC流程 架构图
(5天)5. juc,jdk集合,
(10天)6.算法 4 设计模式 2 jvm mysql相关 2
JUC
为啥会用juc
1 多线程---单线程
2 共享变量---线程私有
3 原子操作---原子类i++ i=i+1
多线程的目的,就是最大限度地利用 cpu 资源,比如说1个线程一个io操作,另一个线程此时可以利用cpu。
2.线程状态图 架构图
Thread,Runnable,Callable
3.线程池 工作原理 及架构图, 吹设计模式
fixed cache single
- 主存 跟不上 cpu 频率。出现缓存,缓存不同步 MESI解决
5.java 内存模型 出现工作内存。
同步 就是一个原子操作
线程八锁
原子性
synchronized 几种使用及底层jvm监视器,
lock 重入锁 condition 通信 AQS同步器 队列加双向链表,UNSAFE JNI
countdownlatch semaphore
cas ABA
可见性 volaite顺序性 。happen-before 指令重排。单例【】
定时线程池 默认与 scheduleAtFixedRate。scheduleWithFixedDelay 的相互区别 ,一个等待停止 一个不等待
jdk相关
集合架构图。比较器两种
1.hashMap 1.7 1.8
数据结构 默认大小, 因子 ,线程是否安全,null值 ,扩容2倍 , 1.8 深度为8 红黑树
2.hashTable 与 concurrentHashMap( IOC容器)
3.ArrayList.copyOnWriteArraylist 默认10 扩容 手写
jvm相关
1.JVM 组成。 运行时架构图
2.类加载过程 【加载,连接与校验,准备 初始化。】 及 类加载器 全盘委托机制【相关类默认】双亲委派 【沙箱安全,重复加载】
3.栈 结构
4.堆 结构
5.调优jvm jinfo。jstat。jmap。jstack。jvisualvm
6.堆 回收算法 分段GC策略
首先分配到伊甸园区
大对象直接分配到老年代 分配担保机制
多次yangGC 幸存 分配到老年代 15岁
7.如何判断对象被回收,1.引用计数,2.可达性算法GCRoot 与 finalize 两次标记
8.几种收集器 及特点
9.调优步骤 及 常用参数
mysql 相关
1.查询 由机器磁盘原理, 巡道 (非常慢)和 旋转。故出现索引
2.索引 myisam 和 innodb 的结构 主键索引 非主键索引 对应区别 联合索引
3.索引优化
算法相关 TODO
(30天)4.分布式相关 netty,dubbo,zk, 10
redis,rocketmq,kafka ,8 elk,ss,mongodb 10 协议网关等 2
1.Netty
netty 创建和启动流程,架构图
tcp粘包问题处理,
序列化
空轮训
线程中的 双向链表结构
内存分配 的 二叉树
2.zk
分布式 cap。base。基本可以 软状态 最终一致
zab 联系 一致性协议 2pc 3pc paxos
事件通知
选举算法.
角色
节点类型
集群模式
水平扩展
3.dubbo
分布式演变
dubbo架构图
dubbo协议
dubbo组件
dubbo注册中心
在生产端可配置消费端的参数
1)timeout:方法调用超时
2)retries:失败重试次数,默认重试 2 次
3)loadbalance:负载均衡算法,默认随机
4)actives 消费者端,最大并发调用限制
Dubbo默认序列化 及其他序列化
dubbo默认通信 及 其他通信 Mina
dubbo负载均衡算法
多种实现分组
同步阻塞调用,及异步调用流程
提供者失效踢出
管理控制台作用
4.redis
Redis 快的原因
redis 恢复
redis 缓存淘汰策略
redis 实用场景。redis分布式锁
redis集群原理。槽位,重定向跳转,网络抖动
5.rocketmq
架构图
生产端 消息类型 同步 异步
消费端 如何消费(push pull )顺序消费,重复消费,
服务端 NameServ 和 Broker
6.kafka
选举
模式:单播 多播
存储 : 元信息 zk,消息信息 文件
发送方式 ,分区,hash,轮训
选举策略
生产流程 同步异步生产,
消费 是否自动提交消费
7.elk
Nignx 白名单 Htppasswd
8.ss
9.mongodb
(待定)六.微服务 springboot spirngcloud,docker 1。
九.(待定)项目