240 发简信
IP属地:江苏
  • 120
    ThreadLocal源码深入剖析

    一、简介  ThreadLocal 不知道大家有没有用过,但至少听说过,这篇文章主要讲解下ThreadLocal的源码以及应用场景; 来看下ThreadLocal的类描述: ...

  • ElasticSearch-磁盘空间不够引起的问题

    es 6.2.4版本logstash跑了一阵子之后不再同步数据了,日志信息如下: 检查elasticsearch日志如下:(日志没贴全,应该有超过flood_stage阈值的...

  • 我理解的这个就是关于锁的hb规则:对一个锁的解锁hb于后续对这个锁的加锁。
    ......
    System.out.print(i) (a)
    主线程设置flag=false (b)
    System.out.print(i) (c)
    System.out.print(i) (d)

    c 解锁,d加锁,所以d之后会看到flag=false 然后退出循环.

    System.out.println()对于内存可见性的影响

    群友发了一段代码,说变量没有加volatile,但是依旧可见,代码大致如下:public class StopThreadTest implements Runnable {...

  • 120
    2019-04-16|SwaggerUI界面model schema不生成问题

    今天同事遇到一个问题,swagger-ui界面每个接口的response的model schema 都没有生成,如下图所示: 用的swagger版本: 本地跑了下,发现启动就...

  • 120
    微信公众平台的ACCESS_TOKEN和模板消息

    最近项目用到了微信公众平台的模板消息,发现实现过程并不是一帆风顺的,所以这里做一下笔记。 阅读微信公众平台技术文档 相关章节之后,了解到要实现模板消息,与实际开发相关的有以...

  • 120
    DBLE(Mycat)连接池分析

    本文背景 去年11月我才接触mycat代码的时候,公司就有严重的连接泄露问题需要排查,本文是基于那次排查对代码的理解整理而成。 文中的连接池指的的是后端连接的连接池,因为前端...

  • 120
    AbstractQueuedSynchronizer(AQS)初探

    一、 Concurrent包的实现原理: 由于Java的CAS同时具有volatile读和volatile写的内存语义,因此Java线程之间的通信现在有了下面4种方式。1)A...

  • Zookeeper实现分布式锁

    利用Zookeeper来实现分布式锁,主要基于其临时(或临时有序)节点和watch机制. 为什么是临时节点? 临时节点的特性,在连接断开的情况下节点能被删除,所以即使客户端...

  • 废掉一个人最隐蔽的方式,是让他忙到没时间成长

    大家可能都看过一个观点「废掉一个人最快的方式,就是让他闲着」。 我认同么?非常认同。 但我今天想讲另一个角度,「废掉一个人最隐蔽的方式,是让他忙到没时间成长」。 而且我认为这...

  • RabbitMQ中的多租户VirtualHost

    官网简介 Virtual Hosts RabbitMQ is multi-tenant system: connections, exchanges, queues, bin...

  • “首先获取目标对象的Mark Word,根据锁的标识为epoch去判断当前是否处于可偏向的状态”—这里是说锁的标记位以及epoch一起来判断,epoch是为了解决ABA问题吧?

    深入剖析Java关键字之synchronized(原理篇)

    一、摘要  在《深入剖析Java关键字之volatile》的文章中,我们知道volatile关键字能够解决多线程编程中的可见性,顺序性这两大问题,但是不能解决原子性的问题。那...

  • 120
    深入剖析Java关键字之synchronized(源码篇)

    一、摘要  在《深入剖析Java关键字之synchronized(原理篇)》中,我们从使用和原理上面分析了synchronized关键字,我们知道,synchronized是...

  • 120
    深入剖析Java关键字之synchronized(原理篇)

    一、摘要  在《深入剖析Java关键字之volatile》的文章中,我们知道volatile关键字能够解决多线程编程中的可见性,顺序性这两大问题,但是不能解决原子性的问题。那...

  • Zookeeper基础

    Zookeeper:开源的分布式应用程序协调服务 1.Zookeeper的特性 一致性:数据一致性,最终一致性,数据按照顺序分批入库原子性:事物要么成功要么失败,不会局部化单...

  • 超棒!!
    1.VolatileFoo中没有用volatile修饰类变量的demo,多次测试结果不同,因为不确定cpu何时会把缓存中的值刷到内存中.所以读线程可能读到中间数据也可能读不到.等到缓存值刷到内存,程序就会终止了.
    --之前一直是这么认为的.但实际上这里没有缓存失效机制,所以读线程一直死循环了.
    2.缓存一致性那边,如果2个线程在2个核中运行,是会有可见性问题的.因为cpu一级缓存二级缓存都是核私有的,三级缓存是核共享的.
    3.关于缓存行的4种状态,假设现在有2个核上的2个线程A,B,有一个缓存行L,该缓存行L上的共享数据D=1
    开始状态->线程A修改数据D=2->线程B修改数据D=3 ->线程A想要查询数据D
    线程A S(假设) M(修改) 写入内存,I(失效) S
    线程B S(假设) I(失效) M(修改) 写入内存,状态变为S
    假设一开始2个线程各自将数据读到了cache中,所以初始状态都是S(共享)

    深入剖析Java关键字之volatile

    一、摘要  在《JMM之happens-before详解》这篇文章中,我们知道了happens-before规则中的有一条是volatile规则:对一个volatile域的写...

  • 120
    深入剖析Java关键字之volatile

    一、摘要  在《JMM之happens-before详解》这篇文章中,我们知道了happens-before规则中的有一条是volatile规则:对一个volatile域的写...

  • 代码1中我刚开始误以为输出结果只有update线程的原因是概率事件,错误的认为是update线程修改init_value的值没有刷新到主存,后来发现并不是。正确的原因是reader线程启动时已经读取了init_value的值到缓存,所以一直使用的是缓存值,陷入了死循环。添加volatile能使主存的值及时刷新到各个CPU的缓存。