1.redis的hash类型数据量太大会有什么问题?
hash类型最多存储元素有40多亿呢
2.final修饰的变量都是线程安全的吗?
线程安全的 底层用fianl修饰;执行+拼接的时候实际上是对StringBuilder进行追加数据然后调用toString()方法
3.@Transactional注解实现原理?事务失效的?
实现原理: Transactional是spring中定义的事务注解,在方法或类上加该注解开启事务。主要是通过反射获取bean的注解信息,利用AOP对编程式事务进行封装实现。
事务失效: 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解是不会生效的。
原因:spring 在扫描bean的时候会扫描方法上是否包含@Transactional注解,如果包含,spring会为这个bean动态地生成一个子
类(即代理类,proxy),代理类是继承原来那个bean的。此时,当这个有注解的方法被调用的时候,实际上是由代理类来调用
的,代理类在调用之前就会启动transaction。然而,如果这个有注解的方法是被同一个类中的其他方法调用的,那么该方法的
调用并没有通过代理类,而是直接通过原来的那个bean,所以就不会启动transaction,我们看到的现象就是@Transactional注
解无效。
了解了失效的原因,解决的方法就简单了(两种):
把这两个方法分开到不同的类中;
把注解加到类名上面;
4.数据库表百万级数据优化方案?
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描(最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库)
.3.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。
4.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎
5.java基本数据类型和每个类型站的位数?
类型 字节数
byte 1
short 2
int 4
long 8
boolean 1
char 2
float 4
double 8
6.rabbitMq重复消费?漏发怎么处理?vhost什么意思?
7.redis你们用的集群还是单机 主从复制还是哨兵?
8.list数据结构特性和扩容原理底?底层算法?
9.hashMap底层?,什么数据类型不能做key?,为什么?
10.事务失效的情况有遇到到过吗?怎么解决的?
11.java包下的concurrent的类都有哪些?