摘要:
阅读全文
摘要:
如下: Id: 每个select语句就会有一个对应的Id,值越大,其执行顺序越优先,由上面所示,总共有3个select语句 select_type: primary: 复杂查询最外层的的查询 DERIVED: 衍生类型,如果from的语句是子查询,则这里就是衍生类型,衍生产生的表 <derived3 阅读全文
摘要:
一.字符串常量池存放的地方 字符串常量池:在jdk1.6时,它存在于永久代 jdk1.7之后: 怎么验证:思路,我们只要不断的创建字符串对象,让其内存溢出,看看报错是在哪一块内存中即可 /** * jdk6:‐Xms6M ‐Xmx6M ‐XX:PermSize=6M ‐XX:MaxPermSize= 阅读全文
摘要:
1.jps 查询当前服务器启动了哪些java项目 2.jmap -histo 16332>./histo.log 3.jmap -heap 16632查询堆的信息 4.jmap ‐dump:format=b,file=kk.hprof 16332 堆栈导出, 线上环境可以设置内存溢出时自动导出堆信息 阅读全文
摘要:
总体概览: 1.吞吐量和低延迟的关系 吞吐量=用户线程的时间/(用户线程的时间+GC的时间),从公式可以看出,GC的总时间越小,吞吐量越大 低延迟:指的是每次GC的停顿时间,停顿越短,延迟越低,用户感觉就越不卡 举个例子:假如只有2个线程,垃圾收集分为2个阶段:标记阶段+清除阶段 方案1:现在这2个 阅读全文
摘要:
1.内存模式概览: 2.主要参数设置: 堆:初始化堆内存-Xms 最大堆内存 -Xmx 新生代:-Xmn 如:Xmx2048M 元空间:元空间使用的是直接内存,默认大小是21M,超过该值会触发FullGC,同时会扩容,因此为了启动时,更快,需要设置该值: - XX:MaxMetaspaceSize 阅读全文
摘要:
背景:我们的商家端有个商品删除接口,某个时间段,突然被大量访问,经过调查发现,是有人通过脚本来刷我们的接口,因为正常的接口只要获取到登录的token就可以不断的调用接口: 现在我们的思路是使用令牌限流方法,令牌就是一个UUID 通过上图知道,对方要刷我们接口,必须知道需要先调用获取token的接口, 阅读全文
摘要:
1.bean的生命周期:Class-》推断构造器-》实例化-》属性赋值-》初始化-》aop-》bean 2. 单例bean和单例模式的区别:单例模式只会有一个实例对象,单例Bean可以有多个实例对象,但一个beanName只能对应一个实例对象 3.@Autowried注解:先byType-》在byN 阅读全文
摘要:
1.copyOnWrite思想,可以保证读写高并发,同时使用阻塞队列和单线程来保证数据一致性 阅读全文
摘要:
说到分布式锁,我们都会想到setNx命令,存在就不更新,不存在就更新成功,根据这个命令,看如下代码有啥问题? 1.上面的分布式锁实现会出现的问题: 如果代码执行到减库存的操作,此时服务挂了,如断电了,那么就会导致死锁,其他线程永远都进不来了 解决方案:加个过期时间,如加了10s 2. 上面加了过期时 阅读全文