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

做网站外包多少钱网站建设 工作计划

做网站外包多少钱,网站建设 工作计划,咋么做网站在电脑上,四川省住建厅官方网站目的设计单例模式的目的是为了解决两个问题:保证一个类只有一个实例这种需求是需要控制某些资源的共享权限,比如文件资源、数据库资源。为该实例提供一个全局访问节点相较于通过全局变量保存重要的共享对象,通过一个封装的类对象,…

目的

设计单例模式的目的是为了解决两个问题:

  • 保证一个类只有一个实例

这种需求是需要控制某些资源的共享权限,比如文件资源、数据库资源。

  • 为该实例提供一个全局访问节点

相较于通过全局变量保存重要的共享对象,通过一个封装的类对象,通过提供全局访问节点,不仅可以保护全局对象不被覆盖,同时能够将分散的代码封装在一个类中。

实现方式

  • 将默认构造函数设为私有,防止其他对象使用单例的new运算符;
  • 新建静态构造方法作为构造单例对象的构造方法,该方法调用私有构造函数创建单例对象并保存在一个静态变量中,后续所有对该静态方法的调用都会返回该缓存对象。

具体的实现方式又分为饿汉模式和懒汉模式。饿汉模式即在初始阶段就主动进行实例化,即存储单例对象的静态变量在初始化阶段即通过new运算符构建一个单例对象,无论该单例是否有人使用;懒汉模式即在静态构造方法中构造单例对象,且只有在单例对象为空(nullptr)时才会主动构建对象。

但懒汉模式在多线程情况下其实是有缺陷的,如果并发请求,同时调用静态构造方法,则存储单例对象的静态变量会被多次复制,违背的单例的理念。这种情况下用锁来保证同步。但是同步锁使用不当不仅会带来不必要的风险,同时加锁、解锁也是对资源的浪费,因此饿汉模式反倒是一种更好的方式,如果单例迟早要被实例化,那么延迟加载的意义就不大。懒汉模式实现代码如下:

class Singleton
{
private:static Singleton* pinstance_;static std::mutex mutex_;protected:Singleton(const std::string value) : value_(value){}~Singleton() {}std::string value_;public:Singleton(Singleton& other) = delete;void operator=(const Singleton&) = delete;static Singleton* GetInstance(const std::string& value);std::string value() const {return value_;}
};Singleton* Singleton::pinstance_{ nullptr };
std::mutex Singleton::mutex_;Singleton* Singleton::GetInstance(const std::string& value)
{if (pinstance_ == nullptr){std::lock_guard<std::mutex> lock(mutex_);if (pinstance_ == nullptr){pinstance_ = new Singleton(value);}return pinstance_;}
}void ThreadFoo() {// Following code emulates slow initialization.std::this_thread::sleep_for(std::chrono::milliseconds(1000));Singleton* singleton = Singleton::GetInstance("FOO");std::cout << singleton->value() << "\n";
}void ThreadBar() {// Following code emulates slow initialization.std::this_thread::sleep_for(std::chrono::milliseconds(1000));Singleton* singleton = Singleton::GetInstance("BAR");std::cout << singleton->value() << "\n";
}int main()
{std::cout << "If you see the same value, then singleton was reused (yay!\n" <<"If you see different values, then 2 singletons were created (booo!!)\n\n" <<"RESULT:\n";std::thread t1(ThreadFoo);std::thread t2(ThreadBar);t1.join();t2.join();return 0;
}

http://www.dtcms.com/a/574485.html

相关文章:

  • 自己做的网站很卡深圳建立网站公司
  • Trae 大模型选型对比
  • IO多路复用之epoll
  • 模拟一个机械手指:从数学模型到高保真仿真的全平台指南
  • 响应式网站导航栏内容矿区网站建设
  • 网站建设哪家最好wordpress安装到跟目录
  • FFNN(前馈神经网络)层
  • 建设隔离变压器移动网站营销课程培训视频
  • 安阳企业建网站建设用地规划查询网站
  • 【Kernel】Linux CFS(完全公平调度器)实现原理与机制
  • Alibaba Cloud Linux 3 安装 Tomcat
  • 什么自查询?为什么在 RAG 中需要自查询?
  • 做早餐煲汤网站wordpress移动端顶部导航栏
  • 地坪漆东莞网站建设技术支持做淘宝的人就跟做网站一样
  • Vue 用户管理系统(路由相关练习二)
  • 三维建筑非法入侵情景推演
  • 新加坡建设局网站企业网站策划过程
  • 工程师报考网站企业站系统
  • Agent 设计与上下文工程- 03 Workflow 设计模式(下)
  • 硅基计划6.0 JavaEE 壹 多线程及核心内容
  • 网站建设+三乐seo优化系统哪家好
  • 游戏网站建设收费明细自己怎么制作假山
  • 调用模型的两个参数 temperature 和 max_new_tokens 指什么
  • Deepseek在它擅长的AI数据处理领域还有是有低级错误【k折交叉验证中每折样本数计算】
  • 影刀RPA实时监控抖店DSR评分,AI预警异常波动,店铺权重稳如泰山![特殊字符]
  • 用html做的美食网站wordpress 自动空格
  • 网站防护找谁做wordpress创建搜索框
  • 【雷达跟踪滤波例程】3个雷达的三维目标跟踪滤波系统,目标匀速运动,滤波为扩展卡尔曼|雷达观测:斜距、俯仰角、方位角。MATLAB,附下载链接
  • Go红队开发—图形化界面
  • 测开百日计划——Day1