当前位置: 首页 > news >正文

【C++设计模式】单例模式singleton

C++ 设计模式–单例模式singleton

单例模式

单例模式是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。

优点:内存中只有一个实例,减少内存开销;避免对资源多重占用;设置全局访问点,严格控制访问。
缺点:没有接口,扩展困难;如果要扩展单例对象,只有修改代码,没有其他途径,不符合程序的开闭原则。

饿汉式单例模式

饿汉式单例模式在类加载的时候就立即初始化,并且创建单例对象。它绝对线程安全,在线程还没出现以前就实例化了,不可能存在访问安全问题。

  • 优点:不用加锁就能保证线程安全。
  • 缺点:内存浪费。

懒汉式单例模式

该模式的特点是类加载时没有生成单例,只有当第一次使用时才去创建这个单例。

  • 优点:避免内存浪费。
  • 缺点:必须加锁才能保证线程安全,加锁则会影响性能。

单例模式封装类singleton

#ifndef __RADIXUN_SINGLETION_H__
#define __RADIXUN_SINGLETION_H__namespace radixun{/*** @brief 单例模式封装类* @details T 类型*          X 为了创造多个实例对应的Tag*          N 同一个Tag创造多个实例索引*/
template<class T, class X = void, int N = 0>
class Singleton {
public:/*** @brief 返回单例裸指针*/static T* GetInstance() {static T v;return &v;}
};/*** @brief 单例模式智能指针封装类* @details T 类型*          X 为了创造多个实例对应的Tag*          N 同一个Tag创造多个实例索引*/
template<class T, class X = void, int N = 0>
class SingletonPtr {
public:/*** @brief 返回单例智能指针*/static std::shared_ptr<T> GetInstance() {static std::shared_ptr<T> v(new T);return v;}
};}#endif

相关文章:

【C++设计模式】单例模式singleton

C 设计模式–单例模式singleton 单例模式 单例模式是指确保一个类在任何情况下都绝对只有一个实例&#xff0c;并提供一个全局访问点。 优点&#xff1a;内存中只有一个实例&#xff0c;减少内存开销&#xff1b;避免对资源多重占用&#xff1b;设置全局访问点&#xff0c;严…...

CVPR 2023 精选论文学习笔记:Post-Training Quantization on Diffusion Models

基于MECE原则,我们给出以下四种分类依据: 1. 模型类型 生成模型用于生成与其训练数据相似的新数据。它们通常用于图像生成、文本生成和音乐生成等任务。语言模型用于理解和生成人类语言。它们通常用于机器翻译、聊天机器人和文本摘要等任务。其他模型用于各种任务,例如图像…...

Python基础语法之学习字符串快速格式化

Python基础语法之学习字符串快速格式化 一、代码二、效果 一、代码 # 通过f"{占位}"控制字符串快速格式化,不做精度控制 name "张三" age 13 money 12.5 text f"姓名是{name},年龄是{age},钱是{money}" print(text)二、效果 每一天都是一个…...

Ubuntu22.04 server版本关闭DHCP,手动设置ip

在Ubuntu 22.04 中&#xff0c;网络配置已迁移到 Netplan&#xff0c;因此可以使用 Netplan 配置文件来手动设置 IP 地址并关闭 DHCP。 以下是在 Ubuntu 22.04 上手动设置 IP 地址并禁用 DHCP 的步骤&#xff1a; 打开终端&#xff0c;使用 root 权限或 sudo 执行以下命令&…...

贪心算法(新坑)

贪心入门 概述&#xff1a; 贪心算法是一种在每一步选择中都采取当前最优解的策略&#xff0c;希望最终能够得到全局最优解的算法。简单来说&#xff0c;它会不断地做出局部最优的选择&#xff0c;相信通过这种选择最终能够达到全局最优。 举个例子来说明。假设你要从一个迷…...

C 语言头文件

C 语言头文件 头文件是扩展名为 .h 的文件&#xff0c;包含了 C 函数声明和宏定义&#xff0c;被多个源文件中引用共享。有两种类型的头文件&#xff1a;程序员编写的头文件和编译器自带的头文件。 在程序中要使用头文件&#xff0c;需要使用 C 预处理指令 #include 来引用它…...

MySQL中自增id用完怎么办?

MySQL中自增id用完怎么办&#xff1f; MySQL里有很多自增的id&#xff0c;每个自增id都是定义了初始值&#xff0c;然后不停地往上加步长。虽然自然数是没有上限的&#xff0c;但是在计算机里&#xff0c;只要定义了表示这个数的字节长度&#xff0c;那它就有上限。比如&#…...

C语言常见算法

算法&#xff08;Algorithm&#xff09;&#xff1a;计算机解题的基本思想方法和步骤。算法的描述&#xff1a;是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述&#xff0c;包括需要什么数据&#xff08;输入什么数据、输出什么结果&#xff09;、采用什么结构、使…...

0-1背包的初始化问题

题目链接 这道题的状态转移方程比较易于确定。dp[i][j]表示能放前i个物品的情况下&#xff0c;容量为j时能放物品的数量&#xff08;这道题歌曲数量对应物品数量&#xff0c;容量对应时间&#xff09;。 技巧&#xff08;收获&#xff09; 二维dp数组可以视情况优化为一维dp数组…...

API之 要求接口上传pdf 以 合同PDF的二进制数据,multpart方式上传

实现 //时间戳13位毫秒private function getMillisecond() {list($s1,$s2) explode( ,microtime());return (float)sprintf(%.0f,(floatval($s1) floatval($s2)) * 1000);}// 组装参数private function gysscPost1($url,$data){// $data[timestamp] 1694402111964;$data[tim…...

C语言-求阶乘序列前N项和

本题要求编写程序&#xff0c;计算序列 1!2!3!⋯ 的前N项之和。 输入格式: 输入在一行中给出一个不超过12的正整数N。 输出格式: 在一行中输出整数结果。 输入样例: 5输出样例: 153 #include "stdio.h" int main(){int n;int sum 0;scanf("%d",&a…...

3:kotlin 逻辑控制(Control flow)

像其他语言一样&#xff0c;kotlin也有循环和逻辑控制 条件判断&#xff08;Conditional expressions&#xff09; kotlin使用if和when来进行条件判断 如果纠结选择if还是when&#xff0c;建议使用when&#xff0c;因为它更能提高程序的健壮性 if 普通写法 fun main() {val…...

Linux系统之一次性计划任务at命令的基本使用

Linux系统之一次性计划任务at命令的基本使用 一、at命令介绍二、at命令的使用帮助2.1 at命令的help帮助信息2.2 at命令的语法解释 三、at命令的日常使用3.1 立即执行一次性任务3.2 指定时间执行一次性任务3.3 查询计划任务3.4 其他指定时间用法3.5 删除已经设置的计划任务3.6 显…...

记录:Unity脚本的编写8.0

目录 需求分析设计GUI包含账号和密码输入栏&#xff0c;包括登录和注册按键添加背景音乐编写脚本控制音乐 退出按钮编写脚本 背景图片完整代码 一个小demo&#xff0c;登录和注册的实现&#xff08;包括GUI和数据库操控&#xff09; 需求分析 自行设计GUI&#xff0c;要求 1.包…...

OpenCV | 模版匹配

import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline 模版匹配 模版匹配和卷积原理很像&#xff0c;模版在原图像上从原点开始滑动&#xff0c;计算模版与&#xff08;图像被模版覆盖的地方&#xff…...

【算法刷题】Day7

文章目录 283. 移动零1089. 复写零 283. 移动零 原题链接 看到题目&#xff0c;首先看一下题干的要求&#xff0c;是在原数组内进行操作&#xff0c;平切保持非零元素的相对顺序 这个时候我们看到了示例一&#xff1a; [ 0, 1, 0, 3,12 ] 这个时候输出成为了 [ 1, 3, 12, 0, …...

前端 | iframe框架标签应用

文章目录 &#x1f4da;嵌入方式&#x1f4da;图表加载显示&#x1f4da;100%嵌入及滑动条问题&#x1f4da;加载动画保留 前情提要&#xff1a; 计划用iframe把画好的home1.html&#xff08;echarts各种图表组成的html数据大屏&#xff09;嵌入整合到index.html&#xff08;搭…...

linux -系统通用命令查询

有时候内网环境下&#xff0c;系统有些命令没有安装因此掌握一些通用的linux 命令也可以帮助我们解决一些问题查看 1.查看系统内核版本 uname -r2.查看系统版本 cat /etc/os-release3. 查看cpu 配置 lscpu4.查看内存信息 free [参数] 中各个数值的解释如下表 数值解释t…...

python炒股自动化(1),量化交易接口区别

要实现股票量化程序化自动化&#xff0c;就需要券商提供的API接口&#xff0c;重点是个人账户小散户可以申请开通&#xff0c;上手要简单&#xff0c;接口要足够全面&#xff0c;功能完善&#xff0c;首先&#xff0c;第一步就是要找对渠道和方法&#xff0c;这里我们不讨论量化…...

LeetCode(35)螺旋矩阵【矩阵】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 54. 螺旋矩阵 1.题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a…...

3分钟搞定iPhone USB网络共享:Windows苹果驱动极简安装指南

3分钟搞定iPhone USB网络共享&#xff1a;Windows苹果驱动极简安装指南 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/g…...

微信聊天记录永久保存的3种方法:WeChatMsg完整指南与实战技巧

微信聊天记录永久保存的3种方法&#xff1a;WeChatMsg完整指南与实战技巧 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/w…...

DamaiHelper抢票神器:从原理到实战的智能抢票全攻略

DamaiHelper抢票神器&#xff1a;从原理到实战的智能抢票全攻略 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper DamaiHelper是一款基于Python开发的大麦网自动化抢票工具&#xff0c;通过智能模拟…...

Oracle数据库sqlplus登录卡死问题排查与fast_recovery_area空间优化

1. 当sqlplus登录突然卡死时&#xff0c;我该从哪里入手&#xff1f; 上周五凌晨2点&#xff0c;我被一阵急促的电话铃声惊醒。客户的生产数据库突然无法登录&#xff0c;所有运维人员通过sqlplus连接时都卡在登录界面&#xff0c;连CtrlC都无法中断。这种场景对DBA来说就像半夜…...

毫秒级响应!Local SDXL-Turbo 实时绘画工具部署与使用指南

毫秒级响应&#xff01;Local SDXL-Turbo 实时绘画工具部署与使用指南 1. 颠覆性的实时绘画体验 传统的AI绘画工具需要等待数十秒才能看到生成结果&#xff0c;而Local SDXL-Turbo彻底改变了这一模式。这款基于StabilityAI SDXL-Turbo构建的工具实现了真正的"打字即出图…...

开箱即用!AI股票分析师快速部署指南:基于Ollama框架的完全私有化体验

开箱即用&#xff01;AI股票分析师快速部署指南&#xff1a;基于Ollama框架的完全私有化体验 1. 引言&#xff1a;为什么需要私有化AI股票分析工具 在金融投资领域&#xff0c;及时准确的股票分析是决策的关键。然而&#xff0c;传统分析工具存在几个痛点&#xff1a;一是依赖…...

微信聊天记录备份全攻略:从数据危机到永久保存的完整解决方案

微信聊天记录备份全攻略&#xff1a;从数据危机到永久保存的完整解决方案 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 核心痛点剖析&#xff1a;那些让我们痛失聊天记…...

CYBER-VISION零号协议C盘清理逻辑分析与智能建议生成

CYBER-VISION零号协议C盘清理逻辑分析与智能建议生成 每次看到C盘飘红&#xff0c;是不是都感觉一阵心慌&#xff1f;赶紧打开各种清理工具一顿猛扫&#xff0c;结果要么是清理不彻底&#xff0c;要么是误删了重要文件&#xff0c;系统直接罢工。这种“盲扫”式的清理&#xf…...

Qwen3.5-9B行业应用:法律文书生成(起诉状/答辩状/代理词)+类案推送

Qwen3.5-9B行业应用&#xff1a;法律文书生成&#xff08;起诉状/答辩状/代理词&#xff09;类案推送 1. 法律AI助手的新选择 在法律行业&#xff0c;文书撰写和案例检索占据了律师大量工作时间。传统方式下&#xff0c;一份标准的起诉状可能需要3-4小时完成初稿&#xff0c;…...

从原理到实践:深入理解react-native-fetch-blob的底层架构设计

从原理到实践&#xff1a;深入理解react-native-fetch-blob的底层架构设计 【免费下载链接】react-native-fetch-blob A project committed to making file access and data transfer easier, efficient for React Native developers. 项目地址: https://gitcode.com/gh_mirr…...