Cookie和session的区别
- cookie存储在客户但,session存储在服务端
- Cookie大小有限制,session一般没有限制
- Sessionx相对于cookie来说更安全一些
session存储在服务端哪里
- 一般是在内存中
- 可以持久化到内存中
- 可以放到分布式缓存中
数据库使用了哪些索引?
普通索引,唯一索引,全文索引,覆盖索引,联合索引
使用联合索引要注意什么?
- 尽量把区分度高的字段放在左边
- 避免索引失效
Spring中用到了哪些设计模式?
- 工厂模式:使用BeanFactory来管理Bean实例
- 模板方法模式:JDBCtemplate、Redistemplate等待
- 单例模式:默认将bean以单例管理,只有一个实例
- 代理模式:AOP
- 适配器模式:SPringMVC中的Handleradapter
- 建造者模式:简化对象构造过程
MAVEN常用命令
清理:clear
编译:compile
测试:test
打包:package
安装:install
部署:depoly
NIO
NIO是同步非阻塞IO模型
三个核心组件:buffer。Cannel。Selector。
Epoll的水平触发和边缘触发
水平触发: 只要一个文件描述符准备好进行 I/O 操作,epoll_wait() 就会报告该事件。即使应用程序没有处理该事件,只要条件仍然满足,epoll_wait() 在后续的调用中仍会报告相同的事件。
特点: 重复报告。 易于实现。 容错性强。
边缘触发:当一个文件描述符的状态从"未准备就绪"变成"准备就绪"的时候,epoll_wait() 会报告一次事件。如果应用程序没有及时处理事件,并且在此期间状态没有再次改变,则该事件不会再被报告。
特点: 仅报告一次。 效率更高。 要求严格。
TCP拥塞控制算法
慢开始、拥塞避免、快恢复、快重传
JMM模型
定义Java并发编程的一套规范,目的是简化多线程编程,增强程序可移植性
spring中有哪些事务传播行为?
Propagation_required:如果存在事务就加入,否则创建一个新事务
Propagation_requires-new:创建一个新的事务,如果当前有事务,挂起当前事务
Propagation_nested:如果存在事务,创建一个事务当作当前事务的嵌套事务,否则创建一个新事务
Propagation_Mandatory:存在加入,否则异常
如何保证消息顺序消费?
- 可以使用单个消费者
- 通过设置消息优先级,优先级高的先被消费
- 在消息上设置id,消费者端拿到消息后先进行排序
- 使用插件或者自定义交换机
Es有哪些重要的模块?
索引模块、查询模块、聚合模块、发现模块、存储模块、协调模块
es和mysql的比较
- mysql是关系型数据库,es是文档数据库
- mysql主要用来存储数据,es主要用来进行检索
- mysql使用b树和B+树等索引结构,es主要是倒排索引
- mysql使用sql查询语句,es使用DSL
创建线程的方式
- 继承thread类,重写run方法
- 实现Runnable接口,重写run方法
- 实现Callable接口,重写run方法,可以拿到返回值
- 使用excutors创建线程池
- 使用completablefuture类执行异步任务
- 基于Threadgroup线程组
- 使用futuretask匿名创建
- 使用timer定时器
- 使用forkjoinpool或许stream并行流