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

做网站干嘛在线gif图片制作

做网站干嘛,在线gif图片制作,python完整网站开发项目视频,大型网站怎么做seoQt使用单例模式读取xml文件 一、单例模式介绍1、什么是单例模式2、为什么使用单例模式3、什么情况下使用单例模式4、使用单例模式需要注意哪些问题线程安全 5、单例模式的类型6、单例类的特点 2、单例模式的实现2.1懒汉式2.2饿汉式 一、单例模式介绍 1、什么是单例模式 单例模… Qt使用单例模式读取xml文件 一、单例模式介绍1、什么是单例模式2、为什么使用单例模式3、什么情况下使用单例模式4、使用单例模式需要注意哪些问题线程安全 5、单例模式的类型6、单例类的特点 2、单例模式的实现2.1懒汉式2.2饿汉式 一、单例模式介绍 1、什么是单例模式 单例模式是指在整个系统生命周期内保证一个类只能产生一个实例确保该类的唯一性。 2、为什么使用单例模式 1、节省资源。一个类只有一个实例不存在多份实例节省资源。 2、方便控制。在一些操作公共资源的场景时避免了多个对象引起的复杂操作。 3、什么情况下使用单例模式 在程序中多次使用同一个对象且作用相同时为了防止频繁地创建对象使得内存飙升单例模式可以让程序仅在内存中创建一个对象让所有需要调用的地方都共享这一单例对象。 4、使用单例模式需要注意哪些问题 线程安全 什么是线程安全 在拥有共享数据的多条线程并行执行的程序中线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行不会出现数据污染等意外情况。 如何保证线程安全 1、给共享的资源加把锁保证每个资源变量每时每刻至多被一个线程占用。 2、让线程也拥有资源不用去共享进程中的资源。如使用threadlocal可以为每个线程维护一个私有的本地变量。 5、单例模式的类型 懒汉式 系统运行中实例并不存在只有当需要使用该实例时才会去创建并使用实例。这种方式要考虑线程安全。 饿汉式 系统一运行就初始化创建实例当需要时直接调用即可。这种方式本身就线程安全没有多线程的线程安全问题。 6、单例类的特点 构造函数和析构函数为私有类型目的是禁止外部构造和析构。拷贝构造函数和赋值构造函数是私有类型目的是禁止外部拷贝和赋值确保实例的唯一性。类中有一个获取实例的静态方法可以全局访问。 2、单例模式的实现 2.1懒汉式 Created with Raphaël 2.3.0 开始 使用单例对象 单例对象是否实例化? 返回单例对象 实例化单例对象 yes no 加锁的懒汉式单例线程安全 头文件 /// 加锁的懒汉式实现 //class SingleInstance {public:// 获取单实例对象static SingleInstance *GetInstance();//释放单实例进程退出时调用static void deleteInstance();//返回所有的IPQVariantList getIP(){return m_ips;}//获取XML文件bool initalize();// 打印实例地址void Print();private:// 将其构造和析构成为私有的, 禁止外部构造和析构SingleInstance();~SingleInstance();// 将其拷贝构造和赋值构造成为私有函数, 禁止外部拷贝和赋值SingleInstance(const SingleInstance signal);const SingleInstance operator(const SingleInstance signal);//解析xml中的内容void parseIP(const QDomNode root);private:// 唯一单实例对象指针static SingleInstance *m_SingleInstance;static std::mutex m_Mutex;//存储IPQVariantList m_ips; };源文件 //初始化静态成员变量 SingleInstance *SingleInstance::m_SingleInstance nullptr; std::mutex SingleInstance::m_Mutex;// 注意不能返回指针的引用否则存在外部被修改的风险 SingleInstance * SingleInstance::GetInstance() {// 这里使用了两个 if 判断语句的技术称为双检锁好处是只有判断指针为空的时候才加锁// 避免每次调用 GetInstance的方法都加锁锁的开销毕竟还是有点大的。if (m_SingleInstance nullptr) {std::unique_lockstd::mutex lock(m_Mutex); // 加锁if (m_SingleInstance nullptr){volatile auto temp new (std::nothrow) SingleInstance();m_SingleInstance temp;}}return m_SingleInstance; }void SingleInstance::deleteInstance() {std::unique_lockstd::mutex lock(m_Mutex); // 加锁if (m_SingleInstance){delete m_SingleInstance;m_SingleInstance nullptr;} }bool SingleInstance::initalize() {QString path(目录);QFile file(path);if(file.exists()){if(file.open(QIODevice::ReadOnly | QIODevice::Truncate)){QString error;QDomDocument document;document.setContent(file, error);file.close();if(document.isNull()){qDebug() QString(文件格式异常:1%).arg(error);return false;}QDomNode root document.firstChild();parseIP(root);}else{qDebug() QString(%1:文件不存在,:2%).arg(path).arg(file.errorString());}}else{qDebug() QString(%1:文件不存在!).arg(path);return false;}return !m_ips.isEmpty(); }void SingleInstance::Print() {std::cout 我的实例内存地址是: this std::endl; }SingleInstance::SingleInstance() {std::cout 构造函数 std::endl; }SingleInstance::~SingleInstance() {std::cout 析构函数 std::endl;deleteInstance(); }void SingleInstance::parseIP(const QDomNode root) {QDomNode startnode root.nextSibling();QDomNode node startnode.firstChild();while(!node.isNull()){QVariantMap ips;ips.clear();QDomElement element node.toElement();ips.insert(ip, element.attribute(ip));ips.insert(port, element.attribute(port));ips.insert(multiip, element.attribute(multiip));}}main.cpp if(Singleton::GetInstance()-initalize()) { ... }2.2饿汉式 头文件 // 饿汉实现 /class Singleton { public:// 获取单实例static Singleton* GetInstance();// 释放单实例进程退出时调用static void deleteInstance();//返回所有的IPQVariantList getIP(){return m_ips;}//获取XML文件bool initalize();// 打印实例地址void Print();private:// 将其构造和析构成为私有的, 禁止外部构造和析构Singleton();~Singleton();// 将其拷贝构造和赋值构造成为私有函数, 禁止外部拷贝和赋值Singleton(const Singleton signal);const Singleton operator(const Singleton signal);//解析xml中的内容void parseIP(const QDomNode root);private:// 唯一单实例对象指针static Singleton *g_pSingleton;//存储IPQVariantList m_ips; }; 源文件 // 代码一运行就初始化创建实例 本身就线程安全 Singleton* Singleton::g_pSingleton new (std::nothrow) Singleton();Singleton* Singleton::GetInstance() {return g_pSingleton; }void Singleton::deleteInstance() {if (g_pSingleton){delete g_pSingleton;g_pSingleton nullptr;} }bool SingleInstance::initalize() {QString path(目录);QFile file(path);if(file.exists()){if(file.open(QIODevice::ReadOnly | QIODevice::Truncate)){QString error;QDomDocument document;document.setContent(file, error);file.close();if(document.isNull()){qDebug() QString(文件格式异常:1%).arg(error);return false;}QDomNode root document.firstChild();parseIP(root);}else{qDebug() QString(%1:文件不存在,:2%).arg(path).arg(file.errorString());}}else{qDebug() QString(%1:文件不存在!).arg(path);return false;}return !m_ips.isEmpty(); }void Singleton::Print() {std::cout 我的实例内存地址是: this std::endl; }Singleton::Singleton() {std::cout 构造函数 std::endl; }Singleton::~Singleton() {std::cout 析构函数 std::endl;deleteInstance(); }void SingleInstance::parseIP(const QDomNode root) {QDomNode startnode root.nextSibling();QDomNode node startnode.firstChild();while(!node.isNull()){QVariantMap ips;ips.clear();QDomElement element node.toElement();ips.insert(ip, element.attribute(ip));ips.insert(port, element.attribute(port));ips.insert(multiip, element.attribute(multiip));}} main.cpp if(Singleton::GetInstance()-initalize()) { ... }xml说明 ?xml version1.0 encodingutf-8?XML声明是XML文档的第一句 ips ip ipxxx portxxx multiipxxx/ /ips
http://www.w-s-a.com/news/799593/

相关文章:

  • 网站排版设计欣赏搭建公司介绍网站
  • 网站弹窗是怎么做的长沙智优营家
  • 手机网站菜单设计模板菜单网站图片素材
  • 浙江网站推广爱企查企业查询入口
  • 公司网站平台vs2012网站开发课程设计
  • 哪些方法可以建设网站做网站失败
  • 龙岗网站建设技术wordpress左右两栏
  • 电子商务网站开发与应用的介绍怎么查询域名是否备案
  • 想做一个自己设计公司的网站怎么做的权威发布型舆情回应
  • 做ppt用的音效网站python基础教程网易
  • 可以做免费广告的网站有哪些做视频赚钱的国外网站
  • 苏州做物流网站电话郑州网站高端网站设计
  • 网站建设音乐插件怎么弄wordpress添加数据库文件
  • 汽车行业做网站福建省第二电力建设公司网站
  • delphi做网站开发商城网站建设价位
  • 网站宣传片3 阐述网站建设的步骤过程 9分
  • 公司网站怎么做站外链接哪里有做胎儿dna亲子鉴定
  • 潍坊做电商的网站建设wordpress 特效主题
  • 做网站和app哪个难公司网上注册系统
  • 关于网站建设外文文献系部网站建设
  • 高端设计网站都有哪些月付网站空间提供商
  • 家政 东莞网站建设优化设计官方电子版
  • 做网站如何使用网页插件上海造价信息网
  • 承德网站制作加盟天津做优化的网站有多少家
  • 北京市保障性住建设投资中心网站首页专业做网站联系电话
  • 镇江网站建设方式优化单页面网站教程
  • 做手机网站公司北京网页设计公司兴田德润实惠
  • 域名申请好了 要怎么做网站百度推广开户渠道
  • 电商网站建设 数商云焦作黄河交通学院
  • 做一个网站成本多少太原网站维护