朋友圈网站广告怎么做挂网站需要什么服务器

web/2025/10/2 2:06:21/文章来源:
朋友圈网站广告怎么做,挂网站需要什么服务器,设计欣赏心得体会,wordpress电影影视主题公园C之单例模式 前言介绍1、单例模式是什么#xff1f;1.1 实现单例模式的三个要点1.2 单例模式分类 2. 懒汉式2.1 懒汉实现#xff1a;基础方法2.2 懒汉实现#xff1a;基于单锁2.3 懒汉实现#xff1a;基于双重检测锁2.4 懒汉实现#xff1a;基于双重检测锁和资源管理2.4.1… C之单例模式 前言介绍1、单例模式是什么1.1 实现单例模式的三个要点1.2 单例模式分类 2. 懒汉式2.1 懒汉实现基础方法2.2 懒汉实现基于单锁2.3 懒汉实现基于双重检测锁2.4 懒汉实现基于双重检测锁和资源管理2.4.1 智能指针方式2.4.2 静态嵌套类方式 2.5 懒汉实现基于局部静态对象 3. 饿汉式3.1 饿汉实现基础方法 4. 总结 前言 单例模式Singleton Pattern是 面向对象中最简单的设计模式之一。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类该类负责创建自己的对象同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式可以直接访问不需要实例化该类的对象。 单例模式是一种创建型设计模式它确保一个类只有一个实例并提供了一个全局访问点来访问该实例。 优点通过单例模式的设计使得创建的类在当前进程中只有一个实例并提供一个全局性的访问点这样可以规避因频繁创建对象而导致的 内存飙升 情况。 介绍 意图保证一个类仅有一个实例并提供一个访问它的全局访问点。 主要解决一个全局使用的类频繁地创建与销毁。 何时使用当您想控制实例数目节省系统资源的时候。 如何解决判断系统是否已经有这个单例如果有则返回如果没有则创建。 关键代码构造函数是私有的。 优点 1、在内存里只有一个实例减少了内存的开销尤其是频繁的创建和销毁实例比如管理学院首页页面缓存。 2、避免对资源的多重占用比如写文件操作。 缺点没有接口不能继承与单一职责原则冲突一个类应该只关心内部逻辑而不关心外面怎么样来实例化。 1、单例模式是什么 在面向对象编程中有时候我们希望一个类只有一个实例化的对象比如线程池缓存等。这些类有且只有一个唯一的实例这种设计模式被称为单例模式。 1.1 实现单例模式的三个要点 1私有化构造函数这样外界就无法自由地创建类对象进而阻止了多个实例的产生。 2类定义中含有该类的唯一静态私有对象静态变量存放在全局存储区且是唯一的供所有对象使用。 3用公有的静态函数来获取该实例提供了访问接口。 1.2 单例模式分类 单例模式有两种主要实现方法懒汉模式和饿汉模式。 懒汉模式特点是当外界调用时才进行实例化饿汉模式特点是一开始就对实例进行初始化调用时直接返回这个构建好的实例。 2. 懒汉式 懒汉模式特点是当外界调用时才进行实例化。 2.1 懒汉实现基础方法 是否多线程安全否 实现难度易 描述这种方式是最基本的实现方式这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized所以严格意义上它并不算单例模式。 缺点一个是线程安全另一个是内存泄漏。 线程安全是因为在多线程场景下有可能出现多个线程同时进行new操作的情况没通过加锁来限制。 内存泄漏是因为使用了new在堆上分配了资源那么在程序结束时也应该进行delete确保堆中数据释放。 public class Singleton { // 静态私有对象private static Singleton instance; // 私有构造函数private Singleton (){} // 公有接口获取唯一实例public static Singleton getInstance() { if (instance null) { instance new Singleton(); } return instance; } }这种方式在单线程下没有问题但是如果多线程模式下当唯一实例还没有创建两个线程同时调用getinstance就可能同时创建对象导致错误。 2.2 懒汉实现基于单锁 是否多线程安全是 实现难度较易 描述这种方式采用单锁机制有可能造成阻塞。 Singleton*Singleton::getInstance(){m.lock();if (_instance nullptr)_instance new Singleton;m.unlock();return _instance; }加锁又会带来另外的性能问题如果每个线程每次获取实例都加锁有可能造成阻塞的发生。实际上上锁的目的是为了防止有多个线程在实例未被初始化的情况下同时对他进行初始化如果实例已经被创建了就不需要考虑这个问题了所以就可以采用二次加锁的方法来提高程序的性能。 2.3 懒汉实现基于双重检测锁 是否多线程安全是 实现难度较复杂 描述这种方式采用双锁机制可以确保线程安全且在多线程情况下能保持高性能。 getInstance() 的性能对应用程序很关键。 Singleton*Singleton::getInstance(){if (_instance nullptr){m.lock();if (_instance nullptr){_instance new Singleton;}m.unlock();}return _instance; }接下来我们再解决内存泄漏(资源释放)问题对懒汉式实现进行进一步的改进。 2.4 懒汉实现基于双重检测锁和资源管理 是否多线程安全是 实现难度较复杂 描述这种方式采用双锁机制可以确保线程安全且在多线程情况下能保持高性能。并且加入资源管理机制以达到对资源的释放的目的。 我们加入资源管理机制以达到对资源的释放的目的解决方法有两个智能指针静态嵌套类。 2.4.1 智能指针方式 将实例指针更换为智能指针另外智能指针在初始化时还需要人为添加公有的毁灭函数因为析构函数私有化了。 #include iostream #include mutex using namespace std;// 单例模式演示类 class Singleton { public: // 公有接口获取唯一实例static shared_ptrSingleton getInstance() { // 若为空则创建if (instance nullptr) { // 加锁保证线程安全 // 如果两个线程同时进行到这一步一个线程继续向下执行时另一个线程被堵塞 // 等锁解除后被堵塞的线程就会跳过下面的if了因为此时实例已经构建完毕lock_guardmutex l(m_mutex);if (instance nullptr) {cout 实例为空开始创建。 endl;instance.reset(new Singleton(), destoryInstance);cout 地址为: instance endl;cout 创建结束。 endl;}}else {cout 已有实例返回。 endl;}return instance; } // 毁灭实例 static void destoryInstance(Singleton* x) {cout 自定义释放实例 endl;delete x; }private: // 私有构造函数 Singleton() {cout 构造函数启动。 endl; };// 私有析构函数 ~Singleton() {cout 析构函数启动。 endl; };private: // 静态私有对象 static shared_ptrSingleton instance; // 锁 static mutex m_mutex; };// 初始化 shared_ptrSingleton Singleton::instance; mutex Singleton::m_mutex;应用智能指针后在程序结束时它自动进行资源的释放解决了内存泄漏的问题。 2.4.2 静态嵌套类方式 类中定义一个嵌套类初始化该类的静态对象当程序结束时该对象进行析构的同时将单例实例也删除了。 #include iostream #include mutex using namespace std;// 单例模式演示类 class Singleton { public: // 公有接口获取唯一实例 static Singleton* getInstance() { // 若为空则创建if (instance nullptr) { // 加锁保证线程安全 // 如果两个线程同时进行到这一步一个线程继续向下执行时另一个线程被堵塞 // 等锁解除后被堵塞的线程就会跳过下面的if了因为此时实例已经构建完毕lock_guardmutex l(m_mutex);if (instance nullptr) {cout 实例为空开始创建。 endl;instance new Singleton();cout 地址为: instance endl;cout 创建结束。 endl;}}else {cout 已有实例返回。 endl;}return instance; }private: // 私有构造函数 Singleton() {cout 构造函数启动。 endl;};// 私有析构函数 ~Singleton() { cout 析构函数启动。 endl; };// 定义一个删除器 class Deleter { public: Deleter() {}; ~Deleter() { if (instance ! nullptr) {cout 删除器启动。 endl;delete instance;instance nullptr;} } };// 删除器是嵌套类,当该静态对象销毁的时候也会将单例实例销毁 static Deleter m_deleter; private: // 静态私有对象 static Singleton* instance; // 锁 static mutex m_mutex; };// 初始化 Singleton* Singleton::instance nullptr; mutex Singleton::m_mutex; Singleton::Deleter Singleton::m_deleter;2.5 懒汉实现基于局部静态对象 是否多线程安全是 实现难度一般 描述C11后规定了局部静态对象在多线程场景下的初始化行为只有在首次访问时才会创建实例后续不再创建而是获取。若未创建成功其他的线程在进行到这步时会自动等待。注意C11前的版本不是这样的。 因为有上述的改动所以出现了一种更简洁方便优雅的实现方法基于局部静态对象实现。 #include iostream #include mutex using namespace std;// 单例模式演示类 class Singleton { public: // 公有接口获取唯一实例 static Singleton getInstance() {cout 获取实例 endl;static Singleton instance;cout 地址为: instance endl;return instance;} private: // 私有构造函数 Singleton() {cout 构造函数启动。 endl;};// 私有析构函数 ~Singleton() {cout 析构函数启动。 endl;}; };3. 饿汉式 饿汉模式特点是一开始就对实例进行初始化调用时直接返回这个构建好的实例。 3.1 饿汉实现基础方法 是否多线程安全是 实现难度易 描述这种方式比较常用但容易产生垃圾对象。 优点没有加锁执行效率会提高。第一次调用才初始化避免内存浪费。 缺点类加载时就初始化浪费内存。必须加锁 synchronized 才能保证单例但加锁会影响效率。 它基于 classloader 机制避免了多线程的同步问题不过instance 在类装载时就实例化虽然导致类装载的原因有很多种在单例模式中大多数都是调用 getInstance 方法 但是也不能确定有其他的方式或者其他的静态方法导致类装载这时候初始化 instance 显然没有达到 lazy loading 的效果。 #include iostream #include mutex using namespace std;// 单例模式演示类 class Singleton { public: // 公有接口获取唯一实例 static Singleton* getInstance() {cout 获取实例 endl;cout 地址为: instance endl;return instance;} private: // 私有构造函数 Singleton() {cout 构造函数启动。 endl; };// 私有析构函数 ~Singleton() {cout 析构函数启动。 endl; };private: // 静态私有对象 static Singleton* instance; };// 初始化 Singleton* Singleton::instance new Singleton();main还没开始实例就已经构建完毕获取实例的函数也不需要进行判空操作因此也就不用双重检测锁来保证线程安全了它本身已经是线程安全状态了。 但是内存泄漏的问题还是要解决的这点同懒汉是一样的。可以通过智能指针和静态嵌套实现。 4. 总结 一般情况下建议使用基于双重检测锁和资源管理搭配智能指针的懒汉方式。

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

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

相关文章

做防水怎么注册网站高校网站建设情况报告范文

03:10 按照视频里的顺序 我们从第6个网站开始倒数 点击本行文字或下方链接 进入查看 6大网站地址 网址查看链接: http://www.uzing.net/community_show-1962-48-48-35.html 06 Tectures Wood Fence 001 | 3D TEXTURES 简介:最大的纹理网站之一&#x…

通州建设局网站网站开发语言入门

Nodejs简介 Node.js 是一个开源和跨平台的 JavaScript 运行时环境。 它几乎是任何类型项目的流行工具! ( 运行环境,是不是很熟悉,对。就是 java JRE,Java 运行时环境) Node.js 在浏览器之外运行 V8 Java…

网站建设赶集网wordpress免费自定义模板装修教程

PID算法的通俗讲解 PID算法的江湖地位? PID算法在控制领域是非常常见的算法,小到控制温度,大到控制飞机的飞行姿态,基本上算是在控制领域万能的算法。 关于PID算法的生活小故事: 假设一辆慢点量的车,跑着跑…

门户网站的区别新年祝福语在线制作网站

一. 准备工作1.下载安装sts(springsource推荐使用), 毕竟人家的框架用他自家的ide是最好的,当然sts也是基本eclipse的, 下载地址: http://www.springsource.org/downloads/sts-ggts2.下载安装gradle, spring 源码构建加入了gradle支持. gradle下载: http://www.gradle.org/down…

中国城乡建中国城乡建设部网站sem和seo是什么

文章目录 🚀🚀🚀前言一、1️⃣ Orange Pi AIpro开发板相关介绍1.1 🎓 核心配置1.2 ✨开发板接口详情图1.3 ⭐️开箱展示 二、2️⃣配置开发板详细教程2.1 🎓 烧录镜像系统2.2 ✨配置网络2.3 ⭐️使用SSH连接主板 三、…

怎么做车载mp3下载网站网站备案可以更改吗

作为风变推出的python课程的一名学员,很幸运能与风变相遇,更庆幸自己选择学习python,我学习的是python基础课程和爬虫精进课程,目前已经学完了python基础课程,不得不说对我的感触很深,非常想要继续学下去&a…

网站开发用什么电脑wordpress 加ico

这是开博的第一篇,还要废话一下。我写的很多内容都是网上找资料然后自己总结出来的,原出处已经很难找到了,所以不会标出引用的内容。如果侵犯到您的版权,请和我联系,我会删改相关的内容。 cloudblob 是azure blob的一个…

企业网站建设 阿里云湖南响应式网站方案

目录 1.解决雪崩的方式有4种: 1.1.2超时处理: 1.1.3仓壁模式 1.1.4.断路器 1.1.5.限流 1.1.6.总结 1.2.服务保护技术对比 1.3.Sentinel介绍和安装 1.3.1.初识Sentinel 1.3.2.安装Sentinel 1.4.微服务整合Sentinel 2.流量控制 2.1.簇点链路 …

东莞seo建站公司大连建设网查询水电费

IC认证是什么? IC是加拿大工业部Industry Canada的简称,作为政府机构,负责电子电器产品进入加拿大市场的认证事务。与美国的FCC相似,IC目前只在电磁干扰上做限制。一般规定:仅限制EMI,认证方式也与FCC相同…

建设银行网站维护淮南市住房与城乡建设部网站

Deep Knowledge-Aware Network for News Recommendation 类别:依次学习 首先使用知识图谱特征学习得到实体向量和关系向量,然后将这些低维向量引入推荐系统,学习得到用户向量和物品向量。 [论文下载链接]https://arxiv.org/abs/1801.08284…

正规的常州网站推广济南百度竞价开户

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

响应式企业展示型网站长春网站排名优化公司

1.jmeter的并发执行 并发执行:多个线程同时执行,不能确定谁先结束 以上案例中http请求里面没有写任何内容,只是为了看这个并发执行的效果 2.jmeter的顺序执行 顺序执行:多个线程顺序执行 再测试计划中勾选“独立运行每个线程组…

郑州网站建设与制作wordpress友情链接激活

Vue2.0 介绍 :::warning 注意 在学习 Vue 之前建议你已经学会了 HTML5、CSS3、Javascript、ES6、ESLint、Webpack、Sass、前端工程化等基础。否则你学习起来可能会有点吃力。 ::: 在我们传统模式中,都是通过 HTML5、CSS3、JavaScript 进行页面开发,但是…

汕头 网站设计权重高的网站是几

文章目录 概述经典算法自回归模型(Autoregressive model)变分自编码器(VAE)生成对抗网络(GAN)扩散模型(Diffusion model)总结 应用 概述 深度生成模型是一类使用深度学习技术构建的…

做招聘网站经营范围外国设计师素材网站

电气设备安装工程的组成通用电气设备安装项目是一个工程系统,通过接收电能,转换和分配电能,使用电能或从接收电能到分配给电气设备组成。根据其主要功能,它们分为电气照明系统,电源系统和配电系统。这种主要基于电能的…

idea建设完整的网站东莞常平房价

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…

广州微网站建设机构网站幻灯片 字段

本文尽可能精简的讲解openai的chatgpt 文章目录 前言一、chatgpt是什么?1. 基础架构2. 训练过程3. 应用场景4. 技术特点5. 局限性 二、树形图ChatGPT 大致架构 总结 前言 随着人工智能的不断发展,Ai对话工具的使用也越来越广泛。由国外openai推出的chatg…

网站建设开发报价明细百度搜索引擎推广步骤

指针 为了后续一些安排打基础,决定使用C/C作为算法主语言,所以从这篇文章开始,从指针开始总结 指针 -> 指针进阶 -> 字符串函数 -> 自定义类型 -> 动态内存管理 -> 数据结构 还有C一些基础语法的回顾(基于算法…

dedecms 资源类网站wordpress发文章后显示两篇

描述 判断两个字符串是否由相同的字符组成 分析 方法一,排序法。对两个字符串进行排序,然后在比较。 方法二,空间换时间。ascII字符共256个,对字符串1出现的字符在对应的数组里加1,对字符串1出现的字符在对应的数组里减…