归档

2023 年 08 月

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

2023 年 07 月

2023-07-31

java的封装类也叫包装类,可以将基本数据类型转化为对象进行处理,并连接相关的方法。 为什么要包装类? Java的基本类型是不具备对象的性质,为了让基本类型也有对象的特征。其实就相当于把基本数据类型包装了起来,丰富了基本类型操作。 区别: 声明方式不同,包装类需要new关键字在堆内存中分配空间…
1.成员变量,局部变量 局部变量定义在: 1.方法内 2.代码块内 3.方法的参数(形参) 局部变量如果定义在代码块内那么就只在代码块内起作用,方法内也是同理。超出代码块会报错 if (5 > 3) { int s = 3; // 声明一个 int 类型的局部变量 System.out.println("s=" + s);…
[toc] 概述 Slf4j简介 Java的简单日志记录外观(Simple Logging Facade for Java…
[toc] 简介 往往当我们谈论多线程的时候,总会提起一个词“异步”,其实多线程不应该等于异步,异步意味着解耦,虽然多线程本身解耦,但是能实现异步的方式实在太多太多了,如发布/订阅,mq……,所以,一般来说我更倾向于将多线程划归实现异步的一种方式。 我们以B/S架构下的系统开发作为背景,在实际开发过程中我们在什么场景需要用到多线程呢?…
上一页 下一页