240 发简信
IP属地:广东
  • 120
    React的生命周期

    1. 挂载卸载过程1.1.constructor()1.2.componentWillMount()1.3.componentDidMount()1.4.componentW...

  • 120
    Unable to start NodeManager: no leveldbjni64-1.8 in java.library.path

    近日生产CDH5.7.2集群中的某一台机器在升级glibc和java后,Yarn NodeManager无法正常启动,提示报错如下: 处理该问题时还是走了一些的弯路,事后来看...

  • 120
    SpringApplication.run 到底做了什么?

    用过 SpringBoot 的同学都知道,其程序的启动类是在一个main方法中调用SpringApplication.run方法执行的,如: 那么,这里面到底做了什么呢?本篇...

  • Spring Boot @Autowired 注入失效问题

    1. 问题 最近在项目中添加了会话验证过滤器,该Filter中使用@Autowired自动装载了一些从数据库中获取的系统配置,调试的时候发现注入失败,返回为null。 2. ...

  • 120
    IDEA插件无法安装——网络代理设置

    1.网络代理设置 IDEA配置代理,是在File-> Setting-> plugins中设置 image.pngimage.pngimage.pngimage.png 查...

  • 原子性,对volatile变量的读写具有原子性,即单纯读和写的操作,都不会受到干扰。这里有误
    public class VolatileTest {
    private static volatile int INIT_VALUE = 0;

    private final static int MAX_LIMIT = 500;

    public static void main(String[] args) {
    new Thread(() -> {
    while (INIT_VALUE < MAX_LIMIT) {
    System.out.println("T1->" + (++INIT_VALUE));
    try {
    Thread.sleep(10);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }, "ADDER-1").start();

    new Thread(() -> {
    while (INIT_VALUE < MAX_LIMIT) {
    System.out.println("T2->" + (++INIT_VALUE));
    try {
    Thread.sleep(10);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }, "ADDER-2").start();
    }
    }

    部分打印结果:
    T1->19
    T2->20
    T1->21
    T1->22
    T2->23
    T1->24
    T2->25
    T1->26
    T2->26
    T1->27
    T2->27
    T2->28
    T1->28
    T1->29
    T2->30
    T1->32

    ++INIT_VALUE 操作分三步:
    a.读取变量 INIT_VALUE的值 -> 26
    INIT_VALUE 的值+1 -> 26+1
    将值赋予变量 INIT_VALUE -> INIT_VALUE=27
    由于这三步中的任意一步线程都可能放弃cpu执行权,其他线程获取到执行权后如果一步完成,就会出现上图的情况

  • 写这么多,真不容易

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

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

个人介绍
独立之精神,自由之思想