java设计模式 -【单例模式】

单例模式的定义

单例模式(Singleton Pattern)是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。常用于需要控制资源或共享状态的场景,例如数据库连接、日志记录器等

单例模式的实现方式

饿汉式(Eager Initialization)

在类加载时直接创建实例,线程安全但可能造成资源浪费

public class EagerSingleton {private static final EagerSingleton instance = new EagerSingleton();private EagerSingleton() {}public static EagerSingleton getInstance() {return instance;}
}

懒汉式(Lazy Initialization)

在第一次调用时创建实例,需加锁保证线程安全

public class LazySingleton {private static LazySingleton instance;private LazySingleton() {}public static synchronized LazySingleton getInstance() {if (instance == null) {instance = new LazySingleton();}return instance;}
}

双重检查锁(Double-Checked Locking)

减少同步开销,仅在实例未初始化时加锁

public class DoubleCheckedSingleton {private static volatile DoubleCheckedSingleton instance;private DoubleCheckedSingleton() {}public static DoubleCheckedSingleton getInstance() {if (instance == null) {synchronized (DoubleCheckedSingleton.class) {if (instance == null) {instance = new DoubleCheckedSingleton();}}}return instance;}
}

静态内部类(Static Nested Class)

利用类加载机制保证线程安全,且延迟初始化

public class StaticNestedSingleton {private StaticNestedSingleton() {}private static class Holder {static final StaticNestedSingleton INSTANCE = new StaticNestedSingleton();}public static StaticNestedSingleton getInstance() {return Holder.INSTANCE;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/90367.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/90367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink 自定义类加载器和子优先类加载策略

子类优先加载Flink 默认采用了子优先(Child-First)的类加载策略来加载用户代码,以解决潜在的依赖冲突问题。我们可以通过源码来证明这一点。ChildFirstClassLoader 的实现Flink 中负责实现“子优先”加载逻辑的核心类是 ChildFirstClassLoade…

Nginx 安全加固:如何阻止 IP 直接访问,只允许域名访问

在部署网站或 Web 应用时,我们通常会通过域名来访问服务。然而,有时用户可能会尝试直接使用服务器的 IP 地址来访问,这不仅可能绕过我们的域名特定配置(如 SSL 证书、重定向规则等),还可能导致不必要的安全风险或管理混乱。本文将介绍如何配置 Nginx,使其在通过 IP 地址…

服务端处于 TIME_WAIT 状态的 TCP 连接,收到相同四元组的 SYN 后会发生什么?详解

文章目录一、先判断 SYN 是否合法1、开启「时间戳」机制1.1、合法 SYN1.2、非法 SYN2、关闭「时间戳」机制1.1、合法 SYN1.2、非法 SYN二、收到合法 SYN三、收到非法 SYN一、先判断 SYN 是否合法 1、开启「时间戳」机制 1.1、合法 SYN 客户端的 SYN「序列号」比服务端「期望…

数字化转型:一文读懂从单系统到智能架构(业务、应用、数据、技术架构)的跨越

在数字化浪潮席卷全球的今天,企业正经历从 “单系统孤岛” 到 “智能架构协同” 的范式革命。智能架构以业务敏捷化、应用服务化、数据价值化、技术云原生化为核心特征,通过四个维度的架构升级,破解传统 IT 系统的效率瓶颈,支撑企…

AUTOSAR进阶图解==>AUTOSAR_SRS_Transformer

AUTOSAR Transformer 详解 基于AUTOSAR 4.4.0标准的Transformer模块分析与说明目录 1. Transformer概述 1.1 Transformer的作用1.2 Transformer的基本特性 2. Transformer架构 2.1 整体架构2.2 类层次结构 3. Transformer类型 3.1 SOME/IP Transformer3.2 COM Based Transform…

【算法专题训练】05、最大单词长度乘积

1、题目信息 https://leetcode.cn/problems/aseY1I/description/ 给定一个字符串数组 words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值。假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串…

Tenable 利用 AI 升级漏洞评级系统,提升风险优先级排序能力

网络安全公司 Tenable Holdings Inc. 今日宣布对其漏洞优先级评级系统(Vulnerability Priority Rating,VPR)进行人工智能驱动的升级,旨在帮助机构更准确地识别和应对最具威胁性的漏洞。从60%到1.6%的精准聚焦Tenable VPR 系统于20…

安全插座项目规划书

安全插座项目规划书 一、项目概述 本项目旨在设计并开发一款安全插座,通过集成多种安全保护功能,有效预防因电气故障引发的安全问题,如过载、短路、漏电等,为用户提供更加可靠的用电环境。 二、技术架构 (一&#xff0…

Logcat日志分析

1. AndroidRuntime关键字(跟整个系统代码相关) 一、AndroidRuntime的核心作用 AndroidRuntime是Android系统负责启动和运行应用程序的核心组件,当应用因未处理的异常(如空指针、数组越界等)导致崩溃时,Andr…

Apache Ranger 权限管理

编译 mvn install package -DskipTests -Dfast -Drat.skiptrue -Dmaven.test.skiptrue -Dcheckstyle.skiptrue -Denforcer.skiptrueinstall.properties PYTHON_COMMAND_INVOKERpython#DB_FLAVORMYSQL|ORACLE|POSTGRES|MSSQL|SQLA DB_FLAVORMYSQL ## # Location of DB client l…

tailscale+GitLab

1. 查看当前 LFS 的远程地址 bash 复制 git lfs env | grep Endpoint 你会看到类似: Endpointhttp://192.168.3.36/makeup/classicparking.git/info/lfs (authbasic) 2. 修改 LFS 的远程地址 使用以下命令将 LFS 的地址改为 http://100.125.163.56&#xff1…

微信通话自动录音器

—————【下 载 地 址】——————— 【​本章下载一】:https://pan.xunlei.com/s/VOVvLpQuRxYadClkxTGwO2OnA1?pwdvind# 【​本章下载二】:https://pan.xunlei.com/s/VOVvLpQuRxYadClkxTGwO2OnA1?pwdvind# 【百款黑科技】:https://uc…

05.原型模式:从影分身术到细胞分裂的编程艺术

目录序幕:当复制对象成为战略需求一、原型工厂的核心装备库1.1 Java原生的浅克隆术二、深度克隆的炼金法则2.1 手工克隆大法(硬核派)2.2 序列化克隆术(魔法派)三、原型模式的工业级装配3.1 原型注册管理局3.2 Spring框…

[NLP]如何在 Synopsys VCS 仿真脚本中处理多个 UPF 文件的加载

如何在 Synopsys VCS 仿真脚本中处理多个 UPF 文件的加载 摘要:我将详细解释在 Synopsys VCS(VCS)模拟脚本中如何处理多个 UPF 文件的加载,包括原理、命令选项、示例脚本以及注意事项。这基于 VCS 的 native low power verification 支持(IEEE 1801 UPF 标准)。如…

DNF: Decouple and Feedback Network for Seeing in the Dark

DNF:用于暗光视觉的解耦与反馈网络 摘要 RAW 数据的独特属性在低光照图像增强方面展现出巨大潜力。然而,现有架构在单阶段和多阶段方法中的固有局限性限制了其性能。跨两个不同域(噪声到干净和 RAW 到 sRGB)的混合映射&#xff0c…

论文精读《Frequency domain watermarking: An overview》

1. 数字水印技术基础概念与发展背景 数字水印技术作为信息隐藏领域的核心分支,其发展历程可以追溯到20世纪90年代中期计算机网络和信息技术的快速发展时期。随着大量版权作品以数字文件形式存在,电子出版逐渐普及,传统的版权保护方法面临前所未有的挑战。数字水印技术应运而…

北斗短报文兜底、5G-A增强:AORO P1100三防平板构建应急通信网络

公网中断的灾区现场,泥石流阻断了最后一条光缆。一支救援队却在废墟间有序穿行,队长手中的三防平板正闪烁着北斗卫星信号,定位坐标与伤亡信息化作一行行短报文,穿透通信孤岛直达指挥中心。这是AORO P1100三防平板搭载的北斗短报文…

Java排序算法之<冒泡排序>

目录 1、冒泡排序介绍 2、算法步骤 3、Java 实现(带优化) 4、算法复杂度分析 5、优点与缺点 前言 排序算法的“进化路线”: 冒泡排序 → 选择排序 → 插入排序 → 希尔排序 → 快速排序 → 归并排序 → 堆排序↓Java 内置排序&#xff…

生活毫无头绪就毫无头绪吧(7.24)

最近好长一段时间没有记录了明显感觉自己陷入了混乱中作息规律,专注力,心流,营养的饭菜如今下笔也没有什么头绪,前些日子本有感想但是又疲于记录,忘了许许多多最近在写论文,但尝试了游泳——蛙泳感觉太神奇…

vulhub-master 靶场Apache(httpd)漏洞

apache_parsing_vulnerability 漏洞原理在Apache1.x/2.x中Apache 解析⽂件的规则是从右到左开始判断解析,如果后缀名为不可识别⽂件解析,就再往左判断。如 1.php.xxxxx,Apache会试图识别你的代码,从右往左一个一个试。漏洞攻略参加一个1.php.jpg文件&…