并发编程-不变性模式
Java不变性模式
不变性模式通过创建不可变对象来避免并发问题。不可变对象一旦创建就不能修改,天然线程安全。
不可变对象的特征
- **状态不可变:**对象创建后状态不能改变
- **所有字段都是final:**确保字段不能被重新赋值
- **没有setter方法:**不提供修改状态的方法
- **类是final的:**防止子类破坏不变性
举例说明
不变性模式通过创建不可变对象来避免并发问题。不可变对象一旦创建就不能修改,天然线程安全。
举例说明
单例模式是最常用的设计模式之一,但在多线程环境下,传统的单例实现可能存在线程安全问题。我们需要掌握各种线程安全的单例实现方式。
线程不安全的懒汉式
在计算机网络中,端口号的范围是 0 到 65535,共 65536 个端口。这一限制核心原因是 TCP/IP 协议的设计规范,可以从以下几个维度详细解释:
TCP(传输控制协议)和 UDP(用户数据报协议)是互联网中最核心的传输层协议,它们的头部格式中,端口号字段被定义为 16 位(2 字节)。也就是取值范围为 $0 \sim2^{16}-1$,即0~65535
先看Java标准库中的ArrayList ,这是一个“可变长”数组。内部通过Object[]数组实现
public class ArrayList {
private Object[] array;
private int size;
public void add(Object e) {...}
public void remove(int index) {...}
public Object get(int index) {...}
}
在很久很久以前(泛型之前)如果用ArrayList存储String类型,需要强制转型
面向对象编程(Object-Oriented Programming,OOP)是一种编程范式。通过把现实中的事物抽象成程序中的对象(Object)来处理逻辑。Java是一门纯面向对象的编程语言。
在 C 语言中,指针越界是指针指向了其合法访问范围之外的内存地址,这种行为会导致未定义行为(Undefined Behavior, UB),是 C 语言中最常见也最危险的错误之一。 示例代码如下