240 发简信
IP属地:浙江
  • 120
    Java9 后String 为什么使用byte[]而不是char?

    之前认知里面,java的String一直是使用char数组,但是今天点进去瞟了一眼,发现不对。源码如下: 这分明就是byte数组,哪里是char了?于是上网查了下,这个改动在...

  • Atomic就是原子性的意思,即能够保证在高并发的情况下只有一个线程能够访问这个属性值。(类似我们之前所说的volatile)
    ???
    建议作者再好好理解下吧

    理解AtomicBoolean

    这里我们就从AtomicBoolean开始说吧,自己正好也复习一下。对于官方的说明是: 可以用原子方式更新的 boolean 值。有关原子变量属性的描述,请参阅 java.u...

  • compareAndSet使用CAS机制主要是用于保证同一个线程执行完代码块后才能让其它线程执行,保证代码执行的顺序性。而作者所说的安全性不需要使用compareAndSet也能,因为底层源码声明了存储对象是volatile的整型。详情了解请参照该文章:https://baijiahao.baidu.com/s?id=1647915101064077163&;wfr=spider&for=pc

  • “Java方法执行一般会利用分层编译,先通过c1解释执行。方法执行编译等级逐渐提升,有机会通过JIT编译为特定平台汇编执行,以此获得最好的性能”。
    这句话不太严谨。
    JVM的执行模式为:解释器 + JIt(C1 + C2). C1(Client)隶属于JIT编译,而不是解释器。“方法执行编译等级逐级提升”,这句彻头彻尾的错,编译的几个层级,并不是单纯的递进关系,交互关系稍复杂。“编译为本地代码”只是编译器的优化手段之一,与之同等甚至更重要的方法内联(,不仅仅是减少了方法调用,更重要的是能够为逃逸分析做前置准备)、栈上分配、标量替换等....

    Java方法的JIT编译

    Java方法执行一般会利用分层编译,先通过c1解释执行。方法执行编译等级逐渐提升,有机会通过JIT编译为特定平台汇编执行,以此获得最好的性能。 方法执行除了达到一定热度外,是...

  • 战略?战术?分清了没有?

  • Java中的Unsafe

    简介 Java是一种安全的编程语言,可以防止程序员犯许多愚蠢的错误,其中大多数错误都是基于内存管理的。但是,有一种方法可以绕过这些限制,即使用 Unsafe class。可以...

  • 好听的乡村音乐合辑

    记录这些年来听过的好听乡村音乐,大部分是单身时期,习惯在夜深人静的时候听歌挖掘的 The Heart Won't Lie歌手:Reba McEntire专辑:Greatest...

  • 逻辑清晰,很透

    Java 8之HashMap理解

    简介 HashMap在工作中使用频率最高的用于映射(键值对)处理的数据类型。本文主要通过JDK1.8版本,深入探讨HashMap的结构实现和功能原理。 功能实现 一、传统 H...

  • 太酷了,超级无敌喜欢。

    Oozie

    为什么要有Oozie? 在数据业务场景,对于数据的处理往往是分阶段处理,而不同的阶段可能采用了不同的技术框架去完成这个业务需求,且可能在不同的阶段要干不同的事。 炒饭(锅) ...

  • 我是认真看文的。
    有个疑问,文末动图出自哪部电影?

    Java Agent简介

    这个是之前写类加载器篇时候挖的坑,来填坑了。 引言 以前在做后台服务开发的时候,SpringBoot每次改动代码都需要手动重启才能生效,感觉贼麻烦,后来使用Spring提供的...

  • return 和 defer不是同时执行,而是 在return更新完返回值之后再去执行defer,可以用这个特性来观察返回值,在go语言圣经5.8章 198叶可以查到,如果它没说错的话,所以坑1的原因是先更新返回值,再执行defer函数,因为返回值匿名,所以更新的是result变量,result没有赋值给返回值,而命名返回值的函数,一直操作的是返回值,在defer中也是操作的defer,所以最后在defer执行完毕返回的就是最新的返回值,跟你的结果差不多一致,但是原因不一样,按你的思路我想了2天还是无法说服自己,最后查了好多资料才搞懂。

  • 大哥,镜像都没拉下来,没发现吗?

    kubernetes1.13.0安装helm并部署Nginx Ingress及dashboard

    安装Helm Helm由客户端命helm令行工具和服务端tiller组成,Helm的安装十分简单。 下载helm命令行工具到master节点node1的/usr/local/...

  • “如果另一个客户端C5率先获取到锁,C4执行GETSET命令后将返回非过期时间,然后C4继续从头开始重新尝试获取锁。此操作C4将延长一点C5获取到的锁的过期时间,不过这不是什么大问题。”
    高并发问题下,该问题会被无限方法,“不是什么大问题”会变成莫名其妙令人郁闷的“大问题”

    RedisTemplate用SETNX命令实现分布式锁

    使用SETNX命令获取分布式锁的步骤: C1和C2线程同时检查时间戳获取锁,执行SETNX命令并都返回0,此时锁仍被C3持有,并且C3已经崩溃 C1 DEL锁 C1 使用SE...