1、B树和B- B+树什么区别
B树就是B-树,B+树只在叶子节点里存值,b树中间节点也存值。
2.mqsql索引有哪些规则
频率高,勿滥用索引。
3.数据库事务
主要针对脏读、幻读、不可重复读
oracle默认read committed,允许幻读 不可重复读,不允许脏读
mysql默认read repeat,允许幻读 幻读是insert 不可重复读是update 脏读是提交失败
4.数据库锁
悲观锁 乐观锁
5.分布式事务
数据库XA,本地消息表,mq事务消息
在业务方法内要想消息队列提交两次请求,一次发送消息和一次确认消息。如果确认消息发送失败了RocketMQ会定期扫描消息集群中的事务消息,这时候发现了Prepared消息,它会向消息发送者确认,所以生产方需要实现一个check接口,RocketMQ会根据发送端设置的策略来决定是回滚还是继续发送确认消息。这样就保证了消息发送与本地事务同时成功或同时失败。
6.redis和memcached比较
Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储
7.redis主从复制
配从不配主,再同步
8.redis集群
master-slave 哨兵模式
9.分布式锁
乐观锁、redis的setnx,zookeeper目录节点
10.redis持久化
Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。
11.redis过期策略
LRU算法
12.zk原理 paxos
结合选举
13.nio bio aio
Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,
14.concurrentHashmap
结合1.8jdk
15.线程池参数
ThreadPoolExecutor mExecutor = new ThreadPoolExecutor(corePoolSize,// 核心线程数
maximumPoolSize, // 最大线程数
keepAliveTime, // 闲置线程存活时间
TimeUnit.MILLISECONDS,// 时间单位
new LinkedBlockingDeque<Runnable>(),// 线程队列
Executors.defaultThreadFactory(),// 线程工厂
new AbortPolicy()// 队列已满,而且当前线程数已经超过最大线程数时的异常处理策略
);
16.lock synchronize区别
用法区别,retreentlock用了cas
17.synchronize对象锁 全局锁
锁了class对象和静态方法是全局锁
18.volatile
结合可见性和内存模型
19.cas
compare and swap
20.spring ioc di aop
21.cglib 动态代理
22.jvm内存模型
堆 栈 方法区 程序计数器 直接内存 常量池
23.类加载机制
加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为连接(Linking)
24.类加载器
spring
25.mq高可用 顺序性和不被重复消费
26.es提升查询效率
索引分片 索引合并
27.限流 降级 熔断
28.mongdb hbase
B树就是B-树,B+树只在叶子节点里存值,b树中间节点也存值。
2.mqsql索引有哪些规则
频率高,勿滥用索引。
3.数据库事务
主要针对脏读、幻读、不可重复读
oracle默认read committed,允许幻读 不可重复读,不允许脏读
mysql默认read repeat,允许幻读 幻读是insert 不可重复读是update 脏读是提交失败
4.数据库锁
悲观锁 乐观锁
5.分布式事务
数据库XA,本地消息表,mq事务消息
在业务方法内要想消息队列提交两次请求,一次发送消息和一次确认消息。如果确认消息发送失败了RocketMQ会定期扫描消息集群中的事务消息,这时候发现了Prepared消息,它会向消息发送者确认,所以生产方需要实现一个check接口,RocketMQ会根据发送端设置的策略来决定是回滚还是继续发送确认消息。这样就保证了消息发送与本地事务同时成功或同时失败。
6.redis和memcached比较
Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储
7.redis主从复制
配从不配主,再同步
8.redis集群
master-slave 哨兵模式
9.分布式锁
乐观锁、redis的setnx,zookeeper目录节点
10.redis持久化
Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。
11.redis过期策略
LRU算法
12.zk原理 paxos
结合选举
13.nio bio aio
Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,
14.concurrentHashmap
结合1.8jdk
15.线程池参数
ThreadPoolExecutor mExecutor = new ThreadPoolExecutor(corePoolSize,// 核心线程数
maximumPoolSize, // 最大线程数
keepAliveTime, // 闲置线程存活时间
TimeUnit.MILLISECONDS,// 时间单位
new LinkedBlockingDeque<Runnable>(),// 线程队列
Executors.defaultThreadFactory(),// 线程工厂
new AbortPolicy()// 队列已满,而且当前线程数已经超过最大线程数时的异常处理策略
);
16.lock synchronize区别
用法区别,retreentlock用了cas
17.synchronize对象锁 全局锁
锁了class对象和静态方法是全局锁
18.volatile
结合可见性和内存模型
19.cas
compare and swap
20.spring ioc di aop
21.cglib 动态代理
22.jvm内存模型
堆 栈 方法区 程序计数器 直接内存 常量池
23.类加载机制
加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为连接(Linking)
24.类加载器
spring
25.mq高可用 顺序性和不被重复消费
26.es提升查询效率
索引分片 索引合并
27.限流 降级 熔断
28.mongdb hbase