1.encache和redis的区别?
(1)ehcache是存储在Jvm内部运行的,用来存放单个应用的缓存需求;
redis则是一个单独的服务,通过网络进行服务。
(2)ehcache是将数据存储在内存中,也支持持久化,但是持久化不是其核心功能:
redis也是将数据存储在内存中,但是他也支持将数据持久化保存到磁盘中,可以用于数据恢复或者重启保留数据。
(3)ehcache主要通过键值对来存储数据
redis则是提供了好几种数据存储的方式
(4)ehcache直接在JVM内运行,所以访问速度非常快,适用于需要极高读写速度的场景
redis依靠其高效的设计,依然能提供非常高的读写性能,并且适合跨应用的数据共享
(5)ehcacahe:更适合单机或单应用内的缓存需求,特别是当缓存内容较小且不需要跨应用共享时
redis:适用于需要高性能、可扩展性以及跨应用共享的缓存场景
2.使用联合索引,只查询a和c,会走索引吗
在使用联合索引(a, b, c)的情况下,如果你的查询条件只包含a和c(即忽略b),根据最左前缀原则,查询条件中必须包含联合索引的第一个字段(在这个例子中是a)才能利用到该索引。因此,如果查询条件中包含a字段,即使没有b字段而直接使用c字段,MySQL还是有可能使用这个联合索引来加速查询。
3.jdk1.8之后为什么采用红黑树数据结构?
(1)红黑树作为一种自平衡二叉搜索树,在最坏情况下能够保证O(log n)的时间复杂度进行查找、插入和删除操作
(2)红黑树的实现复杂度较高但可控
(3)红黑树在内存占用方面更加高效
4.mysql的索引通常使用B+树,B+树是一种平衡的多路查找数据结构,能够保证对树的插入查找和删除操作。所欲的数据都存在叶子节点上,内部节点只存放键值以及指向下一个节点的指针,我们只需要找到起始点,沿着叶子节点遍历即可。
5.jvm的内存模型(栈,堆,方法区)中都存储一些什么?
栈存储局部变量,计算过程中的中间结果,方法返回地址
堆一边拿用于存放对象实例对象实例和数组
方法区一般存放的是运行时常量,访问修饰符,类名,方法名以及静态变量,方法的引用
6.如果本地mysql的数据没有通过mq监听同步到es,导致mysql和es之间的数据不一致,怎么处理?
全量同步,增量同步(cannal),使用Logstach的同步工具,幂等性设计
1731

被折叠的 条评论
为什么被折叠?



