logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

深入理解 JVM 与 Linux 内存:区域划分、分配机制与交互全过程

JVM 运行时数据区严格遵循《Java 虚拟机规范》,同时在 HotSpot + Linux 环境下有具体实现差异,并非所有内存区域都受 JVM 自身管控。权责划分:JVM 管“用户空间的内存划分与堆内回收”,Linux 管“底层物理内存分配、Swap 调度、内核内存管理”,二者分工明确,缺一不可。关键认知:-Xmx 只是 Java 堆的上限,JVM 进程总内存 = Java 堆 + 线程栈 +

#jvm#linux#运维
Redis 事务深度总结与技术选型指南

Redis 事务是一套以性能为优先、将逻辑正确性责任上交给开发者的轻量级批处理机制;而 Lua 脚本则是 Redis 提供的一种“存储过程”,用于在单线程模型下实现强原子性的复杂逻辑。优秀的架构设计不在于强行要求 Redis 提供类似 MySQL 的回滚能力,而在于利用其极速的内存操作特性,在应用侧做好状态机的流转与补偿。

#redis#数据库#缓存
Redis 与 MySQL 的持久化机制的 Tradeoff:性能 Or 安全

维度Redis设计核心严谨的 ACID 保障,金融级安全极致的内存访问速度,亚毫秒延迟持久化载体Redo Log (物理) + Binlog (逻辑) + 脏页RDB (二进制快照) + AOF (命令级逻辑日志)触发机制强绑定事务生命周期 (WAL 预写)时间驱动 (RDB) 或命令后置异步追加 (AOF)一致性保障两阶段提交 (2PC) 保障跨日志一致性依赖于主线程单线程顺序执行,无需 2PC

#redis#mysql#安全
告别浮点数陷阱:Java 高精度金额计算方案对比

优先无脑选择BigDecimal:对于 95% 以上的常规系统(如银行核心网关、电商订单支付、ERP 财务报表、ERP 进销存),数据的准确性和代码的可维护性远远大于那微不足道的性能损耗。请毫不犹豫地使用BigDecimal,并在数据库对应使用类型。在极限性能下退化为long:如果你正在开发的是量化高频交易引擎实时广告竞价系统 (RTB)或者区块链底层计算虚拟机。在这些场景中,每秒可能需要处理数千

#java#开发语言
Java 中的 `float` 和 `double`的底层编码

Java 中的float和double完全遵循。要彻底透视它们的底层编码、范围、精度以及各种边界情况,我们需要深入到内存的二进制位层面。以下是对 Java 浮点数底层编码规则的全面总结,以及对现代前沿浮点数规范的拓展。

#python#人工智能#开发语言
JVM 类加载机制

摘要: JVM类加载机制负责将.class文件转换为可用的Class对象,包含加载、链接(验证、准备、解析)、初始化等阶段。加载阶段读取字节码并生成Class对象;验证确保字节码安全合法;准备为静态变量分配内存;解析将符号引用转为直接引用;初始化执行静态代码块。类加载通过双亲委派机制实现,子加载器优先委派父加载器加载,确保核心类安全且避免重复加载。自定义类加载器通常重写findClass方法,通过

#jvm#java
讲一讲NIO、BIO、AIO技术?

本文系统梳理了网络I/O模型的演进历程,从底层原理到高层架构实现。核心观点包括: I/O操作本质分为数据等待和拷贝两个阶段,不同处理方式形成了BIO/NIO/AIO三大模型; Linux内核通过read/select/epoll/io_uring等系统调用实现不同I/O模型; Java通过不同层次的封装: BIO采用线程绑定模式 NIO基于epoll实现Reactor模式或虚拟线程 AIO尝试Pr

#java#开发语言
CompletableFuture 原理与实践指南

从Future到,Java 彻底完成了异步编程模型的现代化升维。它通过无锁并发栈和观察者模式,优雅地解决了回调地狱和阻塞等待问题。但在高并发工业级应用中,开发者必须深刻理解其背后的线程流转机制,敬畏线程池隔离、异常处理与上下文传递。只有做到知其然并知其所以然,才能真正发挥这座“性能核武器”的最大威力。

#java
锁升级机制与重量锁底层原理

锁类型核心操作线程竞争时的行为优点缺点偏向锁对比 Thread ID撤销偏向锁,升级几乎无开销(只有一个线程时)如果锁竞争激烈,频繁撤销会有性能开销轻量级锁CAS 替换指针自旋尝试获取竞争失败不立即阻塞,响应快若自旋长时间拿不到锁,白白消耗 CPU重量级锁OS 互斥量阻塞,进入等待队列不消耗 CPU(线程挂起)线程上下文切换开销巨大重量级锁机制:在Java中,关键字的底层实现经历过重大的优化,引入

#开发语言#java
从 synchronized 到 AQS 的演进

既然 Java 已经提供了基于底层对象监视器()的关键字来实现加锁,为什么还需要在 JDK 1.5 中引入 AQS 框架以及底层的机制?原因在于不可中断的阻塞等待:当线程尝试获取锁失败而进入排队队列时,其状态变为BLOCKED。处于该状态的线程对中断信号不做出响应操作,必须一直等待获取锁。这在处理死锁或需快速失败的场景中缺乏灵活性。AQS 基于可以响应中断并随时退出等待。缺乏非阻塞获取与超时机制只

#java
    共 38 条
  • 1
  • 2
  • 3
  • 4
  • 请选择