-
Java序列化详解
如果我们需要持久化 Java 对象,比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。序列化需要使用到序列化器 在Java中,Serializer(序列化器)是一个广义的概念,指的是将对象状态转换为可存储或可传输格式的过程的工具或组件。它并不是特指某一个框架,而是一种设计模式或功能,可以由不同的库或框架提供。 Java提供了内置的序列化机制(实现j... -
从JVM的内存结构出发,探究Java的值传递
1.Java中只有值传递相较于其他程序设计语言(比如 C++、 Pascal)提供的两种参数传递的方式,在 Java 中只有值传递。 值传递:方法接收的是实参值的拷贝,会创建副本。 引用传递:方法接收的直接是实参的地址,而不是实参内的值,这就是指针,此时形参就是实参,对形参的任何修改都会反应到实参,包括重新赋值。 2.一段Java程序是如何运行的在讨论Java的值传递之前,先来看看一段J... -
JMM及其相关
Java 内存模型(Java Memory Model,简称 JMM)是 Java 并发编程的基础。它不是真实存在的物理内存布局,而是一套由 Java 虚拟机(JVM)定义的规范和协议。 JMM 决定了一个线程对共享变量的写入何时对另一个线程可见,旨在屏蔽硬件和操作系统的内存访问差异,实现 Java 程序在各种平台下一致的并发行为。 1. 为什么需要 JMM?在现代计算机体系中,为了弥补 C... -
Redis中缓存的穿透,击穿,雪崩
1. 缓存穿透现象: 指查询一个根本不存在的数据。缓存中没有,数据库中也没有。由于数据库里查不到,也就没法写回缓存,导致每次请求这个“不存在”的数据都要去冲击数据库。 诱因: 恶意攻击(故意查询不存在的 ID)或业务逻辑失误。 后果: 数据库压力激增,甚至崩溃。 解决方案: 布隆过滤器 (Bloom Filter): 在缓存之前增加一个屏障,记录所有可能存在的 Key。如果布隆过滤器判...
1