前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。…
我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题: 假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒?…
背景介绍 在处理大规模数据和高并发负载时,安全、一致性和高可用性是关键问题。由此引发了我们在这个项目中所面临的挑战。我们需要一个自主开发的安全、一致性和高可用性的键值存储系统,能够在任何规模下提供低延迟(单位为毫秒级)的性能。 项目介绍 JunoDB 是 PayPal…
引子 在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话: “Debug一下吧。” “线上机器,没开Debug端口。” “看日志,看看请求值和返回值分别是什么?” “那段代码没打印日志。” “改代码,加日志,重新发布一次。” “怀疑是线程池的问题,重启会破坏现场。”…
背景 为了更好地实现对项目的管理,我们将组内一个项目迁移到MDP框架(基于Spring Boot),随后我们就发现系统会频繁报出Swap区域使用量过高的异常。笔者被叫去帮忙查看原因,发现配置了4G堆内内存,但是实际使用的物理内存竟然高达7G,确实不正常。JVM参数配置是“-XX:MetaspaceSize=256M…
1.成员变量,局部变量 局部变量定义在: 1.方法内 2.代码块内 3.方法的参数(形参) 局部变量如果定义在代码块内那么就只在代码块内起作用,方法内也是同理。超出代码块会报错 if (5 > 3) { int s = 3; // 声明一个 int 类型的局部变量 System.out.println("s=" + s);…