查漏补缺
Jayicee
这个作者很懒,什么都没留下…
展开
-
海量数据问题总结
文章目录海量数字里,找出topK海量数据里,返回出现频率最高的topK两个文件的数据,找出相同的部分在海量数据中快速定位一个数字是不是在里面海量数据中找到所有出现次数大于2次的海量数字里,找出topK找出topK,这个很明显想到可以用最大堆去做;而数据量过大的话,可以分而治之,就是把这些数据划分到多个文件里面,对每个文件找出topK,最后再合并到一起,找出总的topK至于怎么划分,可以使用一...原创 2020-03-31 20:52:02 · 257 阅读 · 0 评论 -
synchorinzed作用域反编译出来的一点东西
synchronized可以作用在方法上,也可以作用在代码块上,而从编译角度来说,这两者是有所区别的。如果作用在方法上,对对应的class文件使用javap进行反编译是这样的:对应方法的标记位上有ACC_SYNCHRONIZED的标记,JVM是通过这个标记来识别这是一个synchronized方法而如果作用在代码块上,反编译后发现,有一个monitorenter指令来控制线程进入同步代码块...原创 2020-03-18 19:21:16 · 285 阅读 · 0 评论 -
Redis线程模型
Redis它是基于Reactor模式来实现事件处理器。那Redis线程模型包括四个部分:客户端SocketIO多路复用模型。可以实现一个线程监听多个Socket的事件事件分派器。根据Socket中不同的事件来选择不同的事件处理器来执行事件处理器。用来解析相应的事件,并调用方法去处理事件那它的一个执行流程是这样的,客户端通过Socket连上Redis服务器,然后服务端就使用IO多路复用...原创 2020-03-18 17:51:16 · 309 阅读 · 0 评论 -
OutOfMemory排查
Java程序在运行的时候,因为一些代码问题,可能会出现OOM错误,那此时如何排查呢?可以分为几步第一步,就是找到Tomcat对应的一个进程号,可以使用ps-ef来找到对应的PID第二步,就是可以使用jmap-heap指令,跟上刚才查到的PID,来查看JVM堆内存的使用情况,主要是看survivor区和老年代的空间,如果survivor区和老年代一直是比较满的状态,可能就会有问题第三步,使用j...原创 2020-03-18 16:07:00 · 462 阅读 · 0 评论 -
final关键字内存语义
文章目录写final读final对于final修饰的变量,其实有两个与指重排相关的规则如果final变量在构造函数中赋值,那么就禁止这个赋值操作与构造函数的返回操作进行指令重排序如果一个对象中包含final变量,并且先访问这个对象,然后访问这个final变量,这两个操作不允许发生指令重排序我们所书写的代码顺序和JVM执行的指令顺序不一定是相同的,JVM会在不影响执行正确性的前提下对指令...原创 2020-03-12 00:09:45 · 302 阅读 · 0 评论 -
查漏补缺1:快速失败与安全失败
快速失败与安全失败都是在集合遍历中的概念快速失败快速失败的核心思想是维护一个modCount字段。其实就是相当于一个版本号的功能,每当有线程对集合进行修改时,都会修改modCount的值。那在对集合进行遍历的时候,每次调用hasNext之前,都会查看这个modCount字段,如果和预期值不一样,说明遍历期间有其他线程并发访问了。此时会抛出一个Concurrent ModificationExc...原创 2020-03-08 21:31:33 · 148 阅读 · 0 评论