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

C++设计思想-001-设计模式-单例模式

1.单例模式优点

保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享;

实现:

1.1 单例模式的类只提供私有的构造函数

1.2类定义中含有一个该类的静态私有对象

1.3该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象

2.单例模式分为饿汉、懒汉模式,多线程下考虑用懒汉模式,一般都用懒汉模式

2.1饿汉模式

特点:开始即初始化单例对象
优点:不用担心多线程问题
缺点:可能程序没有用到该单例对象,造成浪费

#include <iostream>
using namespace std;
class Singleton {
public:static Singleton* GetInstance() {return &singleton_;}private:Singleton(){}static Singleton singleton_;
};Singleton Singleton::singleton_;
int main() {auto p1 = Singleton::GetInstance();auto p2 = Singleton::GetInstance();bool result = (p1 == p2);cout << result << endl;return 0;
}

2.2懒汉模式

特点:需要时再实例化单例对象
优点:在不使用到单例对象时不会造成资源浪费
“缺点”:需要考虑多线程问题,稍微复杂一点(加锁解决)

#include <iostream>
#include <mutex>
using namespace std;
class Singleton {
public:static Singleton* GetInstance() {//判断是否已存在实例if (p_singleton_ == nullptr) {//加锁lock_guard<mutex> lock(mux_);//可能两个线程同时通过第一次检查,一个线程获得锁,可能另外一个线程已经实例化if (p_singleton_ == nullptr) {p_singleton_ = new Singleton();

相关文章:

C++设计思想-001-设计模式-单例模式

1.单例模式优点 保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享; 实现: 1.1 单例模式的类只提供私有的构造函数 1.2类定义中含有一个该类的静态私有对象 1.3该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象 2.单…...

远程连接服务器

1、远程连接服务器简介 ssh secure shell 非对称加密&#xff1a;一对公钥私钥 对称加密&#xff1a;加密和解密使用的是同一把密钥&#xff1b;(同一秘钥既可以进行加密也可以进行解密 )优势&#xff1a;使用一个秘钥它的加密效率高一些&#xff08;快一些&#xff09; …...

【分布式技术】ES扩展知识-Elasticsearch分词器的知识与选择

ES知识扩展 分词器有哪些&#xff1f;1. 标准分词器&#xff08;Standard Analyzer&#xff09;&#xff1a;示例示例文本分析配置参数与自定义应用场景 2. Simple Analyzer&#xff1a;示例示例文本分析应用场景与限制结论 3. Whitespace Analyzer&#xff1a;示例示例文本分析…...

【网络安全 | 漏洞挖掘】通过密码重置污染实现账户接管

未经许可,不得转载。 文章目录 密码重置污染攻击漏洞挖掘的过程目标选择与初步测试绕过 Cloudflare 的尝试发现两个域名利用 Origin 头部污染实现账户接管攻击流程总结在今天的文章中,我们将深入探讨一种 账户接管 漏洞,并详细分析如何绕过 Cloudflare 的保护机制,利用密码…...

【Nginx从入门到精通】01 、教程简介

讲师&#xff1a;张一鸣老师 课程简介 重量级课程 由浅入深&#xff0c;内容非常广泛 几十个线上的实战案例(图谱)&#xff0c;几乎涵盖当前所有互联网主流应用场景 性能&#xff1a;由压测得出结果 调优&#xff1a;从操作系统开始&#xff0c;使你对高并发系统架构的技…...

MySQL面试之底层架构与库表设计

华子目录 mysql的底层架构客户端连接服务端连接的本质&#xff0c;连接用完会立马丢弃吗解析器和优化器的作用sql执行前会发生什么客户端的连接池和服务端的连接池数据库的三范式 mysql的底层架构 客户端连接服务端 连接的本质&#xff0c;连接用完会立马丢弃吗 解析器和优化器…...

C2 追踪器:监控指挥与控制的重要性

12 款暗网监控工具 20 款免费网络安全工具 移动取证软件&#xff1a;为什么 Belkasoft X 应该是您的首选工具 网络安全已成为不断演变的威胁形势中的关键领域。 网络攻击者经常使用命令和控制 (C2) 基础设施来执行和管理攻击。 这些基础设施使恶意软件和攻击者能够与受害设…...

二、神经网络基础与搭建

神经网络基础 前言一、神经网络1.1 基本概念1.2 工作原理 二、激活函数2.1 sigmoid激活函数2.1.1 公式2.1.2 注意事项 2.2 tanh激活函数2.2.1 公式2.2.2 注意事项 2.3 ReLU激活函数2.3.1 公式2.3.2 注意事项 2.4 SoftMax激活函数2.4.1 公式2.4.2 Softmax的性质2.4.3 Softmax的应…...

java导出pdf

引入包 <properties><itext.version>8.0.5</itext.version></properties><dependencies><dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>${itext.version}</…...

muduo之线程同步CountDownLatch

简介 CountDownLatch称为门阀&#xff0c;用于等待另外线程执行完成 结构 #mermaid-svg-6Azuu15vhIS2hCP1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6Azuu15vhIS2hCP1 .error-icon{fill:#552222;}#mermaid-s…...

【Python系列】Python中打印详细堆栈信息的技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

SpringBoot中监听器、过滤器、拦截器和AOP详解

SpringBoot中监听器、过滤器、拦截器和AOP详解 在构建 Spring Boot 应用程序时&#xff0c;监听器&#xff08;Listener&#xff09;、过滤器&#xff08;Filter&#xff09;、拦截器&#xff08;Interceptor&#xff09;和面向切面编程&#xff08;AOP&#xff09;是四种常用…...

如何让手机ip变成动态

在数字化浪潮中&#xff0c;手机已成为我们日常生活中不可或缺的一部分。无论是浏览网页、使用社交媒体还是进行在线购物&#xff0c;手机都扮演着举足轻重的角色。然而&#xff0c;在享受网络带来的便利时&#xff0c;我们也需要关注网络安全和隐私保护。静态IP地址可能让手机…...

[Qt platform plugin问题] Could not load the Qt platform plugin “xcb“

Qt platform plugin 是 Qt 应用程序启动时加载的插件。不同的平台有不同的插件。 常见的插件有:linuxfb Wayland xcb 简单来说就是启动一个GUI程序, 离不开这些插件.选择其中一个就好 出现这个问题要么就是没有插件&#xff0c;要么就是插件依赖的库没有。 要么就是插件选则的…...

嵌入式开发人员如何选择合适的开源前端框架进行Web开发

在嵌入式系统的Web开发中&#xff0c;前端框架的选择对于项目的成败有着决定性的影响。一个合适的框架不仅能提高开发效率&#xff0c;还能保证系统的稳定性和可扩展性。本文将介绍几款适用于嵌入式Web开发的开源前端框架&#xff0c;并探讨它们的优缺点。 1. Element Plus V…...

MySQL数据库(七)----查询相关操作(子查询)

子查询是指在一个查询语句&#xff08;主查询&#xff09;内部嵌套的另一个查询语句。子查询可以出现在 SELECT、FROM、WHERE、HAVING 等子句中。它可以将一个复杂的查询问题分解为多个简单的查询步骤&#xff0c;从而更方便地获取所需的数据。 引入子查询&#xff1a; -- 查…...

01_Spring开胃菜

一、 为什么是Spring? 在正式进入Spring内容前我们先看看我们以往经典的程序设计。 当我们去登录时,会调用后端的Controller,Controller接收到用户的请求后会调用业务层的Service进行登录的业务处理,Service业务处理过程中会调用Dao层向DB获取数进行判断。 接下来我们用代…...

SpringBoot使用AspectJ的@Around注解实现AOP全局记录接口:请求日志、响应日志、异常日志

Spring 面向切面编程(AOP),系列文章: 《Spring面向切面编程(AOP)的简单实例》 《Spring使用AspectJ的注解式实现AOP面向切面编程》 《SpringBoot使用AspectJ实现AOP记录接口:请求日志、响应日志、异常日志》 《SpringBoot使用AspectJ的@Around注解实现AOP全局记录接口:…...

WPF下播放Rtmp的解决方案

介绍 在实际的开发过程中&#xff0c;需要在应用内部内嵌播放器进行视频的播放。官方默认的MediaElement控件只能播放有限的视频格式&#xff0c;也不能播放网络流。比较流行的解决方式是vlc的库&#xff0c;但是在实际使用过程中发现有很多问题。这里给大家推荐另一个比较好的…...

7.高可用集群架构Keepalived双主热备原理

一. 高可用集群架构Keepalived双主热备原理 (1)主机+备机keepalived配置(192.168.1.171) ! Configuration File for keepalivedglobal_defs {# 路由id:当前安装keepalived节点主机的标识符,全局唯一router_id keep_101 } #计算机节点(主机配置) vrrp_instance VI_1 {</...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...