从url到页面显示过程
- 浏览器先查找浏览器缓存,系统缓存,路由器缓存,有则直接显示,没有则下一步
- 经过域名解析,获得相应的ip地址
- 浏览器向服务器发送tcp,以滑动窗口形式进行三次握手
- 握手成功后发送http请求
- 服务器收到请求,并返回数据包
- 浏览器对数据进行解析和渲染,生成最终页面
索引失效
- 隐式转换
- 对索引列运算,加减乘除和比较运算,like
- 对索引列使用内部函数
- 条件有or
Spring事务
- [ ] 声明式事务:
TransactionManager,配置传播行为隔离级别 - [ ] 编程式:@Transaction(propagation isolation rollback for
-xx:+UseConcMarkSweepGC
-xx:+UseParallelGC
-xx:+UseParallelOldGC
-xx:+UseSerialGC
jvm工具:jstat visualvm
解决跨域:1.控制台修改浏览器属性 2.使用jsonp解决xhr类型限制 3.给浏览器增加字段
jsonp弊端:1.改动服务器代码 2.只支持get请求 3.不能发送xhr格式
http
- [ ] 支持cs模式
- [ ] 简单快速,一次请求,一次响应
- [ ] 传输任意对象
- [ ] 无连接,交互完成不保持连接
- [ ] 无事务
请求内容 - [ ] 请求行,消息头,消息体
响应内容 - [ ] 状态行,消息头,消息体
https - [ ] 发送https请求
- [ ] 返回证书
- [ ] 信息检验
- [ ] 发送对称密钥
- [ ] 服务器解析对称密钥
- [ ] 协商使用此对称密钥
dry不要重复
kiss简单之美
ddd领域驱动设计
前序:根左右
中序:左根右
后序:左右根
三范式
- [ ] 每列原子性
- [ ] 确保每列和主键相关
- [ ] 确保每列和主键直接相关
Spring冲突:构造时相互依赖,无法完成
序列到头了:循环
mybatis直接从String输入sql:无法进行预编译,防注入机制
redis
- [ ] rename重命名
- [ ] expire ttl设置生存时间
- [ ] type查看类型
- [ ] select切换数据库
- [ ] 事务multi.exec.discard
- [ ] 持久rdb方便 ,aof安全管理
jvm加载机制
- [ ] 加载:加载到内存,数据放方法区,并在堆生成Class对象,以便类加载器访问方法区
- [ ] 验证:符合jvm规范
- [ ] 准备:静态变量初始化为初始值
- [ ] 解析:把字面引用解析为指针
- [ ] 初始化:执行构造器
- [ ] 使用:执行main方法形成栈帧,调用其他方法会压栈,先在栈生成A对象的引用a为null,后通过new执行构造器,生成堆里的A对象,并把地址赋值给a,通过a调用方法区的数据
- [ ] 卸载:垃圾回收
MySQL引擎区别:
- [ ] innodb:支持事务,外键,行级锁
- [ ] Myisam:高性能读取
Zookeeper:
- [ ] 三种角色:领导者,学习者,客户端
- [ ] zab协议实现原子广播,保证服务的同步
- [ ] 运行三种状态:looking,leading,following
- [ ] zxid标识事务
Hibernate事务隔离
- [ ] 1,读未提交,虚读,不可重复读,脏读
- [ ] 2,读已提交,虚读,不可重复读
- [ ] 4,可重读,虚读
- [ ] 8,可串行化
- [ ] 乐观锁解决并发问题,添加版本号
悲观锁:一锁二查三更新
乐观锁:当取锁失败多的情况不如悲观锁
脏读:读到的数据被回滚
虚读:读到了不一样的数据,多或少一个数据
不可重复读:同上,但相同的数据值变了
事务传播行为
- [ ] 1required默认,有就用,没有就创建
- [ ] 2supports,有就用,没有就不用
- [ ] 3mandatory,有就用,没有就抛异常
- [ ] 4requiresnew,永远使用新事务
- [ ] 5notsupported,永远不使用事务
- [ ] 6never,不使用事务,如果有就抛异常
- [ ] 7nested,有就嵌套,没有就创建
分布式:一个业务拆分多个子业务
集群:一个子业务部署在多个服务器
厨师与主厨的区别
Struts基于类的多例
Springmvc基于方法的单例
shiro流程
- [ ] 构建securitymanager环境
- [ ] subject.login提交认证
- [ ] 调用securitymanager.login提交认证
- [ ] Authentication 验证
- [ ] realm验证
tomcat只让servlet生成一次
nginx负载均衡机制:
- [ ] 轮询:默认
- [ ] 最少连接:least_conn
- [ ] ip哈希:ip_hash
- [ ] 权重:weight
- [ ] 健康监测:fail_timeout max_fails
Callable区别
- [ ] call方法取代run,可以返回future,可以抛出异常
- [ ] 调用get方法,返回future对象记录线程运行状况
前端优化
- [ ] css放js前面
- [ ] 懒加载
- [ ] 静态资源压缩和缓存
- [ ] 使用cdn选择最近的服务器
- [ ] 使用ssr后端渲染
- [ ] 减少dom操作
- [ ] 多内存,少io
jvm结构
- [ ] 年轻代:一个eden区,两个survivor区,from和to。当ygc时,会移动到另一个s区,然后转换角色,to始终保持空的,用于复制算法
- [ ] 老年代:存放年龄大的对象,15岁
- [ ] 永久代:存放静态文件
- [ ] fullgc:老年代和永久代满,调用gc方法
- [ ]
jvm调优 - [ ] xms.xmx调整堆初始值和最大值
- [ ] xmn设置初始年轻代大小
- [ ] xx:PermGen,MaxPermGen设置永久代初始和最大
- [ ] xx:SurvivorRatio设置eden和survivor空间比例,默认8
- [ ] xx:NewRatio设置老年代和年轻代空间比例,默认2
- [ ] xx:MaxTenuringThreshold设置年龄
gc调优
- [ ] 使用visual gc插件提供可视化界面
- [ ] permgenspace,提高永久代内存空间
- [ ] fullgc,提高老年代内存空间
- [ ] 降低youngGC的频率、减少fullGC的次数。
gc算法 - [ ] 标记清除
- [ ] 复制
- [ ] 标记整理
- [ ] 增量回收
- [ ] 分代清除
- [ ] 并发回收
- [ ] 并行回收
tomcat调优
- [ ] 增加jvm初始值xmsxmx
- [ ] 优化connector.xml超时时间,最小最大链接,排队长度
- [ ] 安装插件apr,tomcat nativejiukan
{}和${}
- [ ] $是文本占位符,静态文本替换${string}
- [ ] #是参数占位符,会进行预编译成?
常见标签
resultMap parameterMap
sql include
selectKey trim
where set
foreach
if choose
when otherwise
bind
MyBatisDAO工作原理
- [ ] 接口映射给配置文件,解析为一个MappedStatement
- [ ] 交给动态代理执行
Mybatis内部之间的关系
- [ ] 配置封装到Configuration内部
- [ ] 〈parameterMap〉解析为parameterMap对象,子元素解析为parameterMapping对象
- [ ] 〈resultMap〉解析为resultMap对象,子元素解析为resultMapping对象
- [ ] 增删改差标签解析为MappedStatement对象,sql解析为BoundSql对象
自定义注解
- [ ] @documented @target @inherited @retention
HashMap工作原理
- [ ] 基于hashing算法
- [ ] put()先调用hashcode方法,找到bucket位置储存entry对象,get根据key的哈西找到
- [ ] hashcode相同,会储存bucket链表中,链表太长会转为二叉树,取值时找到正确的bucket用equals依次比较o1退化ologn
10层架构
- [ ] Service 服务
- [ ] Config 配置
- [ ] Proxy 代理
- [ ] Registry 注册
- [ ] Cluster 集群
- [ ] Monitor 监控
- [ ] Protocol 远程调用
- [ ] Exchange 信息交换
- [ ] Transport网络传输
- [ ] Serialize序列化
网络7层
- [ ] 应用层
- [ ] 表示层
- [ ] 会话层
- [ ] 传输层
- [ ] 网络层
- [ ] 数据链路层
- [ ] 物理层
调用流程
- [ ] 提供者发送服务到注册中心
- [ ] 消费者从注册中心订阅服务
- [ ] 消费者调用已经注册的服务
tair是键值对的解决方案
从url到页面显示过程
- 浏览器先查找浏览器缓存,系统缓存,路由器缓存,有则直接显示,没有则下一步
- 经过域名解析,获得相应的ip地址
- 浏览器向服务器发送tcp,以滑动窗口形式进行三次握手
- 握手成功后发送http请求
- 服务器收到请求,并返回数据包
- 浏览器对数据进行解析和渲染,生成最终页面
索引失效
- 隐式转换
- 对索引列运算,加减乘除和比较运算,like
- 对索引列使用内部函数
- 条件有or
Spring事务
- [ ] 声明式事务:
TransactionManager,配置传播行为隔离级别 - [ ] 编程式:@Transaction(propagation isolation rollback for
-xx:+UseConcMarkSweepGC
-xx:+UseParallelGC
-xx:+UseParallelOldGC
-xx:+UseSerialGC
jvm工具:jstat visualvm
解决跨域:1.控制台修改浏览器属性 2.使用jsonp解决xhr类型限制 3.给浏览器增加字段
jsonp弊端:1.改动服务器代码 2.只支持get请求 3.不能发送xhr格式