目录
SpringMVC工作流程
Mybatis中当实体类中的属性名和表中的字段名不一样,怎么办?
三种解决方案:
- 写SQL语句时起别名,比如:select last_name lastName from table
- 在MyBatis的全局配置文件中开启驼峰命名规则 mapUnderscoreToCamelCase
- 在Mapper映射文件中使用resultMap来自定义映射规则
git命令
创建分支 git branch <分支名>
切换分支 git checkout -b <分支名>
合并分支名 git merge <分支名> 先切换到主干 git checkout master
删除分支名 git branch -D <分支名> 先切换到主干
Redis持久化
1: RDB–在指定的时间间隔内将内存中的数据集快照写入磁盘,恢复文件的时候是将快照文件直接读到内存
RDB通过fork一个子进程进行持久化,将数据写入一个临时文件,持久化结束后替换掉原来的文件-----当然最后一次持久化的数据可能会丢失
全量备份非常耗性能。
2:AOF–增量备份,备份更稳定,丢失率低。但是占用磁盘高,且恢复慢
MySQL什么时候适合建立索引?
适合建立索引的:
- 主键默认建立索引
- 频繁作为查询条件的字段应该建
- 多表连接要建立外键索引
- 组合索引比单键索引效率更好
- 需要排序的字段建立索引
- 统计或者分组的字段要建立索引
不需要建立索引的:
—>表记录少的,经常要增删改的,where条件里用不到的不需要,过滤性不好的不适合
JVM垃圾回收机制,GC发生在JVM哪部分,有几种GC,他们的算法是什么
GC发生在堆里
GC有几种:
- 次数上频繁收集的Young区 Minor GC
- 次数上较少收集的Old区 Full GC
- 基本不动的Perm区
GC四大算法:
4. 引用计数法-----只要对象之间有引用,GC就不回收(已淘汰)----每次对对象赋值都要维护引用计数器,引用计数器本身也有一定消耗;而且较难处理循环引用
5. 复制算法-------年轻代中使用的是Minor GC,这种GC算法就采用的复制算法–Copying
1) 原理:从根节点GC root开始,通过Tracing从From中找到存活对象,拷贝到To中;
From,To交换身份,下次内存分配从To开始
2) 优缺点:复制肯定需要双倍空间,但是效率高,没有内存碎片
- 标记清除算法------老年代使用;从根集合开始扫描,对存货的对象进行标记;扫描整个内存空间,回收未被标记的对象,并用free-list记录
优缺点:扫描两次内存,会产生内存碎片-----但是不需要额外的空间 - 标记压缩------老年代使用;和标记清除一样要先标记,在进行压缩,压缩的时候也是扫描一遍内存,再向一端华东存货对象
优缺点:没有内存碎片,但是需要移动对象的成本 - 标记-清除-压缩
Redis在项目中使用的场景
数据类型 | 使用场景 |
---|---|
String | 比如要记录访问次数时可以使用 |
Hash | 可以存储用户信息 |
List | 实现最新消息的排名,还能当成消息队列来使用 |
Set | 可以自动重排序,而且不能重复,可以用来存好友列表,还能利用与操作快速求出共同好友 |
Zset | 以某一条件为权重,进行排序。比如商品详情都会可以按照个性化要求进行排名 |
Elasticsearch和solr的区别
背景:都是基于Lucene搜索服务器基础之上开发,一款高性能的企业级搜索服务器。都是基于分词技术构建的倒排索引的方式进行查询
都是java开发。
Solr:2004年
Es:2010年–功能更强大
区别:
- 当实时建立索引的时候,Solr会产生io阻塞,而Es不会,Es查询效率高于Solr
- 在不断动态添加数据的时候,Solr的检索效率会变低,而Es没有变化
- Solr利用Zookeeper进行分布式管理,而Es自身带有分布式管理功能。Solr一般要部署到web服务器上,比如tomact。启动tomact的时候需要配置tomact和Solr关联。----Solr本质是一个动态web项目、
- Solr支持更多的数据格式【xml,json,csv等】,而Es仅支持json文件格式
- Solr是传统搜索应用的有利解决方案,但是Es更适用于新型的实时搜索应用-----单纯对已有数据进行检索Solr效率更好
- Solr官方提供的功能更多,而Es更注重核心功能,高级功能要用第三方插件
单点登录
一处登录,多出使用!
前提是:单点登录多使用在分布式系统中
Demo—参观动物园流程:
检票员
- 我直接带着大家去动物园,则会被检票员拦住【看我们有没有票】,没有【售票处买票】登录=买票
- 我去买票【带着票,带着大家准备去动物园】检票员check【邮票】Token=票
- 进入动物园,嗨皮
token—在cookie中
购物车实现过程
购物车:
- 购物车跟用户的关系:一个用户对应一个购物车,一对一的关系;单点登录一定在购物车之前。
- 跟购物车有关的操作:
- 添加购物车:
用户未登录状态—添加操作保存在哪里?
1. Redis?-----京东
2. Cookie?----自己开发项目的时候【如果浏览器禁用了Cookie】–localstorage
用户登录状态—
1. Redis缓存中【读写速度快】–Hash存
2. 存储在数据库中【Oracle,MySQL】 - 展示购物车
- 未登录状态展示----直接从Cookie中获取数据展示
- 登录状态
用户一旦登录,必须显示数据库redis+cookie中购物车的数据
- 添加购物车: