240 发简信
IP属地:重庆
  • 没太搞懂prepare-promise阶段的目的是什么。既然后续的可以省去,第一轮的是不是也可以省去。为什么一定要有这个阶段呢?

    理解分布式一致性:Paxos协议之Multi-Paxos

    在前面一篇文章我们讲到了理解分布式一致性:Paxos协议之Basic Paxos,本篇文章我会讲解更加通用和普遍的Multi-Paxos协议。 在Basic Paxos协议中...

  • 如果走到saftpoint之前,遇到new(),但是已经进入GC状态了,就是说空余内存不够了,所以这个new()是完成不了的。这不就卡住了嘛?怎么办?

    JVM源码分析之安全点safepoint

    简书 占小狼转载请注明原创出处,谢谢! 上周有幸参加了一次关于JVM的小范围分享会,听完R大对虚拟机C2编译器的讲解,我的膝盖一直是肿的,能记住的实在有点少,能听进去也不多1...

  • 堆的地方:
    逃逸分析:通过逃逸分析来决定某些实例或者变量是否要在堆中进行分配,如果开启了逃逸分析,即可将这些变量直接在栈上进行分配,而非堆上进行分配。这些变量的指针可以被全局所引用,或者其其它线程所引用。

    在栈上分配还能被其他线程访问?逃逸分析的你理解有问题把,分析这个对象不会被其他线程访问到,才分配在栈上把

  • 120
    深入理解JVM-内存模型(jmm)和GC

    1 CPU和内存的交互 了解jvm内存模型前,了解下cpu和计算机内存的交互情况。【因为Java虚拟机内存模型定义的访问操作与计算机十分相似】 有篇很棒的文章,从cpu讲到内...

  • VarHandle的目标是取代Unsafe(在原子操作这件事上),AtomicInteger的实现现在还是用的Unsafe,将来会改成VarHandle(因为有个issue现在还没搞定)。那么有个问题是:在什么场景下还需要用FieldUpdater呢?它是不是就没有什么存在的必要了呢?

    Java 9 变量句柄-VarHandle

    Java 9的发布的新特性除了最主要的模块化之外,在API方面也为开发者们带来了很多有用的特性,本篇我们来探讨一下java 9提供的新的API-VarHandle 对 mem...

  • @泰迪的bagwell 那就是这个线程的所有缓存行了

    Java 9 变量句柄-VarHandle

    Java 9的发布的新特性除了最主要的模块化之外,在API方面也为开发者们带来了很多有用的特性,本篇我们来探讨一下java 9提供的新的API-VarHandle 对 mem...

  • Java 9:下划线不能用在变量名中。
    这是什么意思?没有这一条吧。

    Java 5,6,7,8,9,10,11新特性吐血总结

    作者:拔剑少年简书地址:https://www.jianshu.com/u/dad4d9675892博客地址:https://it18monkey.github.io转载请注...

  • @泰迪的bagwell 我是指fullFence()、loadLoadFence()、releaseFence()等5个static方法。它们是静态的,并不是“一个”VarHandle,所以我才好奇它们设置的fence(memory barrier)是针对哪些缓存行的。难道是对当前线程的整个cache加了一个barrier吗?

    Java 9 变量句柄-VarHandle

    Java 9的发布的新特性除了最主要的模块化之外,在API方面也为开发者们带来了很多有用的特性,本篇我们来探讨一下java 9提供的新的API-VarHandle 对 mem...

  • 内存屏障的几个方法,是static方法。那么它们到底针对的是那些变量(的缓存页)来设置屏障的呢?我一直没太懂。总不可能是所有的缓存页。也不可能是某一个变量所在的缓存页,因为一个VarHandle并不指向特定的某个变量,它需要传入一些coordinates才能找到要操作的目标变量。

    Java 9 变量句柄-VarHandle

    Java 9的发布的新特性除了最主要的模块化之外,在API方面也为开发者们带来了很多有用的特性,本篇我们来探讨一下java 9提供的新的API-VarHandle 对 mem...

  • Java 9 变量句柄-VarHandle

    Java 9的发布的新特性除了最主要的模块化之外,在API方面也为开发者们带来了很多有用的特性,本篇我们来探讨一下java 9提供的新的API-VarHandle 对 mem...

  • 120
    N个数取Top K的平均复杂度O(N)的算法

    n个数选top k,可以用快排剪枝来做。也就是说,进行一轮比较,给第n个数找位置(前面的都比它小,后面的都比它大),如果找到的位置i在k前面,就在i+1到n之间找top k-...

  • @泰迪的bagwell 另外,这种只有子任务(fork()出来的任务)才有worker线程的设计目的是:任务多的时候先把CPU资源执行已经在执行的任务,做完之后再去做新任务。
    worker线程的每一轮的工作,是先偷一个任务来做,然后把自己的队列一直执行到空。这个算法实现了:
    1. 忙的时候,每个线程执行自己的任务,互不干扰。
    2. 闲的时候,一有任务,所有线程都扑上去做。
    3. 忙的时候,先把已经接的外部任务做完,再去接新的外部任务来做。

    JUC源码分析-线程池篇(五):ForkJoinPool - 2

    通过上一篇(JUC源码分析-线程池篇(四):ForkJoinPool - 1)的讲解,相信同学们对 ForkJoinPool 已经有了一个大概的认识,本篇我们将通过分析源码的...

  • HashMap的小秘密

    Api文档里说: An instance of HashMap has two parameters that affect its performance: initial...