网站建设尺寸网页设计与制作期末作品

diannao/2026/1/22 12:42:20/文章来源:
网站建设尺寸,网页设计与制作期末作品,卓伊科技网站建设,汉唐皓月网站推广方案1.什么是RAII#xff1f; RAII#xff08;Resource Acquisition Is Initialization#xff09;机制是Bjarne Stroustrup首先提出的#xff0c;也称直译为“资源获取就是初始化”#xff0c;是C语言的一种管理资源、避免泄漏的机制。 C标准保证任何情况下#xff0c;已构…1.什么是RAII RAIIResource Acquisition Is Initialization机制是Bjarne Stroustrup首先提出的也称直译为“资源获取就是初始化”是C语言的一种管理资源、避免泄漏的机制。 C标准保证任何情况下已构造的对象最终会销毁即它的析构函数最终会被调用。 RAII 机制就是利用了C的上述特性,在需要获取使用资源RES的时候构造一个临时对象(T)在其构造T时获取资源在T生命期控制对RES的访问使之始终保持有效最后在T析构的时候释放资源。以达到安全管理资源对象避免资源泄漏的目的。 2.为什么要使用RAII 那么我们经常所说的资源是如何定义的说到资源,我们立刻能想到的就是内存啊文件句柄等等啊但只有这些吗 对于资源的概念不要想象的太狭隘在计算机系统中资源是个定义宽泛的概念所有数量有限且对系统正常运行具有一定作用的元素都是资源。比如网络套接字、互斥锁、文件句柄、内存、数据库记录等等它们属于系统资源。由于系统的资源是有限的就好比自然界的石油铁矿一样不是取之不尽用之不竭的。 所以我们在编程使用系统资源时都必须遵循一个步骤 1.申请资源 2.使用资源 3.释放资源。 第一步和第三步缺一不可因为资源必须要申请才能使用的使用完成以后必须要释放如果不释放的话就会造成资源泄漏。 3.实战应用 3.1一个简单的例子指针申请空间释放空间 void Func() { int *ip new int[10]; //operations //operations //operations delete[] ip;//if not free mem, memory overflow } 使用RAII技术后 templateclass PointerType class My_Pointer { public: My_Pointer(PointerType* _ptr, size_t sz) { _ptr new PointerType[sz]; m_ptr _ptr; } ~My_Pointer() { delete []m_ptr; } protected: PointerType m_ptr; } 3.2 scope lock (局部锁技术) 在很多时候为了实现多线程之间的数据同步我们会使用到 mutex,critical section,event,singal 等技术。但在使用过程中由于各种原因有时候我们会遇到一个问题由于忘记释放Unlock锁产生死锁现象。 采用RAII 就可以很好的解决这个问题,使用着不必担心释放锁的问题. 示例代码如下: My_scope_lock 为实现 局部锁的模板类. LockType 抽象代表具体的锁类 .如基于 mutex 实现 mutex_lock 类 templateclass LockType class My_scope_lock { public: My_scope_lock(LockType _lock):m_lock(_lock) { m_lock.occupy(); } ~My_scope_lock() { m_lock.relase(); } protected: LockType m_lock; } 使用的时候 //global vars int counter 0; void routine(); mutex_lock m_mutex_lock; void routine() { My_scope_lock l_lock(m_mutex_lock); counter; //others... } 我们可以根据上面的例子类推出好多这样例子。如读写文件的时候很容易忘记关闭文件如果借用 RAII技术,就可以规避这种错误。再如对数据库的访问忘记断开数据库连接等等都可以借助RAII 技术也解决。 4.RAII模板化实现 按照上节的做法,如果你有很多个资源对象要用RAII方式管理按这个办法就要为每个类写一个RAII类。 想到这里我瞬间觉得好烦燥都是类似的代码却要一遍一遍的重复,就不能有个通用的方法让我少写点代码嘛 于是我利用C11的新特性(类型推导、右值引用、移动语义、类型萃取、function/bind、lambda表达式等等)写了一个通用化的RAII机制,满足各种类型资源的管理需求。 // // RAII.h // // Library: Foundation // Package: Core // Module: RAII // // Definition of the RAII template class and friends. // //#include Wishbone/Foundation.h #include type_traits #include functionalnamespace Wishbone {/* 元模板如果是const类型则去除const修饰符 */templatetypename Tstruct no_const{using type typename std::conditionalstd::is_constT::value, typename std::remove_constT::type, T::type;};/// RAII方式管理申请和释放资源的类/// 对象创建时,执行acquire(申请资源)动作(可以为空函数[]{})/// 对象析构时,执行release(释放资源)动作/// 禁止对象拷贝和赋值class RAII{public:typedef std::functionvoid() FunctionType;/// release: 析构时执行的函数/// acquire: 构造函数执行的函数/// default_com:_commit,默认值,可以通过commit()函数重新设置explicit RAII(FunctionType release, FunctionType acquire [] {}, bool default_com true) noexcept :_commit(default_com),_release(release){acquire();}/// 对象析构时根据_commit标志执行_release函数~RAII() noexcept{if (_commit)_release();}/// 移动构造函数 允许右值赋值RAII(RAII rv) noexcept : _commit(rv._commit),_release(rv._release){rv._commit false;};///RAII commit(bool c true) noexcept;protected:std::functionvoid() _release;private:RAII(const RAII);RAII operator(const RAII) delete;bool _commit;}; /* RAII *//// inlinsinline RAII RAII::commit(bool c true) noexcept{ _commit c; return *this; };/// 用于实体资源的RAII管理类/// T为资源类型/// acquire为申请资源动作返回资源T/// release为释放资源动作,释放资源Ttemplatetypename Tclass RAIIVar{public:typedef std::functionT() AcquireType;typedef std::functionvoid(T ) ReleaseType;///explicit RAIIVar(AcquireType acquire, ReleaseType release) noexcept :_resource(acquire()),_release(release){}/// 移动构造函数RAIIVar(RAIIVar rv) :_resource(std::move(rv._resource)),_release(std::move(rv._release)){rv._commit false;//控制右值对象析构时不再执行_release}/// 对象析构时根据_commit标志执行_release函数~RAIIVar() noexcept{if (_commit)_release(_resource);}RAIIVarT commit(bool c true) noexcept{ _commit c; return *this;};T get() noexcept{return _resource; }T operator*() noexcept{return get();}templatetypename _T Ttypename std::enable_ifstd::is_pointer_T::value, _T::type operator-() const noexcept{return _resource;}templatetypename _T Ttypename std::enable_ifstd::is_class_T::value, _T*::type operator-() const noexcept{return std::addressof(_resource);}private:bool _commit true;T _resource;ReleaseType _release;};/// 创建 RAII 对象,/// 用std::bind将M_REL,M_ACQ封装成std::functionvoid()创建RAII对象/// RES 资源类型/// M_REL 释放资源的成员函数地址/// M_ACQ 申请资源的成员函数地址templatetypename RES, typename M_REL, typename M_ACQRAII make_raii(RES res, M_REL rel, M_ACQ acq, bool default_com true) noexcept{static_assert(std::is_classRES::value, RES is not a class or struct type.);static_assert(std::is_member_function_pointerM_REL::value, M_REL is not a member function.);static_assert(std::is_member_function_pointerM_ACQ::value, M_ACQ is not a member function.);assert(nullptr ! rel nullptr ! acq);auto p_res std::addressof(const_casttypename no_constRES::type(res));return RAII(std::bind(rel, p_res), std::bind(acq, p_res), default_com);}templatetypename RES, typename M_RELRAII make_raii(RES res, M_REL rel, bool default_com true) noexcept{static_assert(std::is_classRES::value, RES is not a class or struct type.);static_assert(std::is_member_function_pointerM_REL::value, M_REL is not a member function.);assert(nullptr ! rel);auto p_res std::addressof(const_casttypename no_constRES::type(res));return RAII(std::bind(rel, p_res), [] {}, default_com);}} // namespace Wishbone

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

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

相关文章

人力资源公司网站模板下载wordpress 默认字体

YOLOv10: 实时端到端的目标检测。 性能 YOLOv10比最先进的YOLOv9延迟时间更低,测试结果可以与YOLOv9媲美,可能会成为YOLO系列模型部署的“新选择”。 目录 1 数据准备 2 配置文件 3 训练 4 验证 5 预测 6 导出模型 7 ONNX模型的使用 官方论文地址…

广州正规网站制作维护wordpress淘宝联盟模板

比赛传送门 C,D,E,F题 《打水赛爱好者》 由于题目过水,所以A,B没有 C题 NK 题目描述 给定两个正整数 N , K N, K N,K,请你统计符合以下条件的正整数 x x x 的数量: 1 ≤ x ≤ N N 1 \leq x \leq N …

如何屏蔽网站ip网站建设培训 苏州

一、概念 数据存到内存中,程序退出、掉电数据就丢失了 数据存到硬盘中,就是存储在文件中,数据就不会因为掉电、程序退出就丢失。想要数据持久化,就要使用文件。 二、分类 什么是文件? 硬盘(磁盘&#…

杭州宣传片制作公司长沙seo计费管理

1.这个是因为有相关的lib包没有被引用进去 解决办法: 1. 2. 转载于:https://www.cnblogs.com/hcfan/p/6638980.html

怎么做自己的彩票网站怎么做充值网站

常用的几种大数据架构剖析 随着大数据技术的发展,数据挖掘、数据探索等专有名词曝光度越来越高,但是在类似于Hadoop系列的大数据分析系统大行其道之前,数据分析工作已经经历了长足的发展,尤其是以BI系统为主的数据分析&#xff0…

网站建设的面试要求浏阳网站开发建设

基本概念 1 计算机软件著作权是指自然人、法人或者其他组织对计算机软件作品享有的财产权利和精神权利的总称。通常语境下,计算机软件著作权又被简称为软件著作权、计算机软著或者软著。 图片 Part.02 权利主体 2 权利的主体即软件著作权人的概念,…

做网站设计收入男女直接做的视频网站

文章目录 引言Python列表常用内置方法count()功能介绍语法示例注意事项 index()功能介绍语法示例注意事项: insert()功能介绍语法示例注意事项总结 结束语 引言 亲爱的读者,你好!Python的列表在数据结构中占据着核心地位,对于学习…

做建筑机械网站那个网站好图片设计软件app

摘录自:http://blog.csdn.net/u012318074/article/details/71310553 第一步:安装完成后不要运行MyEclipse 第二步:下载对应的破解文件 第三步:解压并打开破解文件 第四步:打开文件夹patch,将里面的文件全部…

做网站的皮包公司无极官方网

简述: 当今互联网行业对于AI提示工程的需求日益增长,而《AI提示工程指南》是一本旨在满足这种需求的宝贵指南。本指南由一位对AI提示工程充满热情并自学而来的互联网从业者撰写,旨在为行业人员提供一个全面、易懂的参考手册。 这本指南将引领您踏上AI提示工程的旅程,深入探…

级a做爰片免费视网站设计logo免费生成器

最近马上要开始一个新项目的研发,作为第一次mvvm应用的尝试,我决定使用knockoutjs框架。作为学习的开始就从官网的Document翻译开始吧,这样会增加印象并加入自己的思考,说是翻译也并不是纯粹的翻译,会加入自己对知识点的思考以及自…

网站排版用什么软件wordpress 界面优化

文章目录 1、偏向锁出现的背景2、从共享对象的内存结构看偏向锁3、偏向锁的持有4、启动偏向锁5、sleep暂停来启动偏向锁6、偏向锁的撤销7、总体流程8、SinceJava15 偏向锁的废除 1、偏向锁出现的背景 如果一个线程连续几次抢到锁,仍然重复加锁解锁,就会…

营销型网站建设策划书营销方案包括哪些内容

问题:宽带下载网速本是30MB/s,经过路由器后速度仅10MB/s,这是为什么? 宽带下载测速可以到30MB/s,说明外线和光猫还有电脑是没有问题的。目前家庭的组网基本都是光纤入户了,你的测速瓶颈既然不在光猫&#…

社交网站开发阿里企业邮箱设置

之前发的丰富的经历我12年硕士毕业,历经华为,某芯片原厂外企,某芯片原厂国企,某手机公司,最后来到大疆,可以说是一个跳槽小能手,因为具有多家大企业的工作经历,我觉得谈下自己在各个…

帝国cms地方门户网站模板注册域名邮箱怎么弄

自动分配缓冲区类 Automatically Allocated Buffer Class. 这个类用于函数和方法中的临时缓冲区。如果临时缓冲区通常很小(几K的内存),但其大小取决于参数,则在堆栈上创建一个小的固定大小数组,并在足够大时使用它是有…

外贸网站平台都有哪些平台免费html5网站源码

案例中使用的软件版本 Unity2023.1.20.f1c1ARFoundtaion 5.1.0Apple ARKit XR Plugin 5.1.0 Google ARCore XR Plugin 5.1.0技术分析 我们可以实时检测用户手指触摸的屏幕位置,从触摸位置投射一条射线(Raycast),再射线命中的目标位置创建一个点,放置一个圆,手指拖动来设置…

建设网站要多久到账东阳实惠营销型网站建设

硬件介绍 淘宝上买的核心板,大概结构如上。 直接插入电脑usb,即可实现供电、下载(控制BOOT/EN)、串口通讯 固件包 1、环境配置 1.1串口 开发板使用了 CH340G 的 USB 转串口芯片,自行安装CH340串口驱动。 1.2编译环境…

做自己视频教程的网站改变网站的域名

摘要: 通过识别BERT对话情绪状态的实例,展现在昇思MindSpore AI框架中大语言模型的原理和实际使用方法、步骤。 一、环境配置 %%capture captured_output # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下…

去泰国做网站发网站深圳 网页制作

这几天做一个功能需要在手机上创建一个文件夹,然后往里面存储一些文件,首先得考虑用户有没有sdcard,如果有就在sdcard上创建一个指定的文件夹,如果没有则在你的工程所在的目录“/data/data/你的包名”下创建文件夹。用到的方法是&…

幕墙配件在那个网站做推广好江苏运营网站建设业务

效果图的渲染是建筑和室内设计领域中不可或缺的一步,随着技术的发展,云渲染作为一项新技术,正逐渐受到人们关注。今天,让我们深入探讨电脑渲染和云渲染这两种方法的优缺点以及它们的适用场景。 本地电脑渲染 本地电脑渲染是利用用…

网站底部友情链接做IP授权的一般看什么网站

当使用大型模型(如GPT-3.5)时,可以通过优化提示(prompt)来引导模型生成更加符合预期的内容。以下是一些调优提示词的建议: 1、清晰的问题陈述:确保你的问题或提示清晰、简明,能够准…