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

传媒网站建设seo在哪可以学

传媒网站建设,seo在哪可以学,网站升级建设费用吗,装修在线设计平台一、什么是RAII Resource Acquisition Is Initialization,资源获取即初始化。C/C的开发者都知道,在这类语言的开发中,内存需要手动来控制。也就是说,释放和回收内存得开发者亲历亲为。从某种角度看,能够把控内存的细节…

一、什么是RAII

Resource Acquisition Is Initialization,资源获取即初始化。C/C++的开发者都知道,在这类语言的开发中,内存需要手动来控制。也就是说,释放和回收内存得开发者亲历亲为。从某种角度看,能够把控内存的细节,当然是更灵活,可如果把控的不好,却是一场灾难。
根据二八定律,对于绝大多数的开发者来说,都被划分到了灾难的一个方向(即使经验丰富技术高超的开发者也难免会出问题)。那么,尤如医学上所讲,预防大于治疗。在C++中,哪些对象的生命周期是不需要自己控制而由系统自动控制呢?很容易想到类的局部对象。c++之父Bjarne Stroustrup因此提出了上面的RAII,

二、作用

RAII的作用非常明显,就是管理资源。通过临时的对象自动调用析构函数来处理资源。既然这样,初始化资源就可以放到构造函数中,由开发者来进行控制并交由系统自动创建。而此处的资源很容易想到的就是内存。但其实不仅有内存还有相关的句柄、IO等等都可以。RAII其实可以显著的降低因为经验或者疏忽导致的资源泄露。
常见的RAII应用的场景有以下几种情况:
1、内存管理
2、锁管理
3、句柄管理
4、IO管理
5、其它
建议初学者一定要掌握这个技巧,则可以大幅的提高在开发过程中资源管理的安全性。RAII当然也有一些不足之处,最典型的缺点就是其的优势。假如一个资源只使用一下便可以回收。那么封装进入一个对象后,则其生命周期则升级到了这个对象的作用域生命周期。而且有可能无意间的循环引用和对象与资源生命周期的不同情况下,都可能会有一些细节的问题需要完善。

三、与三五原则的关系

在RAII中有一个比较典型的错误应用,它一般类似于下面的样子:

class Lock
{
public:Lock(){//相关锁初始化 }~Lock(){//相关锁回收}private://Lock(const Lock &);//Lock operator =(const Lock &);
};void UseLock(Lock l)//注意此处
{
//此处使用Lock来控制锁
}
unsigned  ThreadFun(){Lock l;UseLock(l);
}  

RAII如果类似上面的方法使用,即在RAII应用时再增加一层控制,发现锁就不好使了。难道RAII不能再封装?并不是,而是锁没有被深拷贝导致的UseLock函数中的复制的l并没有被拷贝出一个相同的副本,值传递导致在UseLock后其内部的l副本和ThreadFun中使用l共用一个锁资源。而前者在函数退出后会调用析构函数释放掉锁。这样在后面的Lock对象再使用形同虚设。在前面分析过三五原则,这个错误其实就是没有正确处理这个原则的非常典型的应用。

四、应用和例程

RAII的应用非常简单,就是以下几个步骤:
1、设计并开发一个类来封装相关的资源
2、在类构造函数中创建资源
3、在类的析构函数中释放资源
4、在实际的作用域空间内创建此类的临时对象
下面就看一个简单的锁的例子:

template <typename Mutex_> class lock_guard final {
public:lock_guard(Mutex_ *m_rwMt) : m_mt(m_rwMt) { pthread_mutex_lock(m_mt); }~lock_guard() { pthread_mutex_unlock(m_mt); }public:lock_guard(const lock_guard &) = delete;lock_guard(lock_guard &&) = delete;lock_guard &operator=(const lock_guard &) = delete;lock_guard &operator=(lock_guard &&) = delete;private:Mutex_ *m_mt;
};

其实内存控制也和这个差不多,只要把相关的内存创建和回收控制好即可。
在STL的标准库中,很多实现都应用到了RAII,比如常见的lock_guard,智能指针和stream等,所以还是建议大家把这个技巧弄清楚明白。

五、总结

记得以前总结过RAII相关的资料,可最近回头一看,没有找到 。于是,就只好将其再总结一篇,如果找到,就算重复总结吧。其实RAII更像是一种无奈之举,总得有一种安全的处理资源的方式啊。恰好,在C++中有这种变通的实现方式。其实上面还是有一些细节没有提到,比如创建和释放资源如果出现异常怎么办(即构造函数或析构函数如何处理异常)?这个在相关的知识中有过说明就不再详细阐述了。
或许这就是古人常说的,天无绝人之路!所以,对网上说的什么C++/c要被清退的说法,淡然处之即好。该来的一定会来,该走的也一定会走,不是谁说让谁走谁就会走。

http://www.15wanjia.com/news/14006.html

相关文章:

  • 做b612表情的素材网站360推广怎么收费
  • 网站开发的布局划分百度网首页
  • 福州做网站建设百度网盘app下载安装 官方下载
  • 手机网站开发语言选择北京seo推广优化
  • 体彩网站建设微信营销推广
  • 什么免费网站可以链接域名长沙关键词优化方法
  • 最优惠的赣州网站建设年轻人不要做网络销售
  • 建外贸网站用什么主机b站视频推广网站
  • 做关于手机的网站 该如何设计怎么做好市场宣传和推广
  • 网站建设外文文献百度排行榜风云榜
  • 做救助流浪动物网站的产生背景百度竞价广告怎么收费
  • 做网站时 404网页如何指向成品视频直播软件推荐哪个好一点
  • 手机网站模板图片最近几天的新闻大事
  • 做门户网站需要什么条件流量神器
  • 吉林省住房建设厅网站国际局势最新消息今天
  • 企业官方网站的作用注册网址
  • 整形网站源码宁波关键词优化企业网站建设
  • 下班后做兼职任务网站aso安卓优化公司
  • 简单描述网站建设流程seo专业优化公司
  • 评价一个网站新人做外贸怎么找国外客户
  • 自己搭建云平台seo搜索优化邵阳
  • 用vs做网站表格向上居中知乎seo排名的搜软件
  • 大德通众包 做网站怎么样百度推广外推联系方式
  • 做网站的电脑自带软件是什么互联网企业营销策略
  • 做pcr查基因序列的网站seo排名快速
  • 企业网站信息化建设深圳白帽优化
  • 龙口做网站案例百度导航是哪个国家的
  • 博士后是否可以做网站负责人线上运营推广
  • 饰品做商城网站模式抖音seo推荐算法
  • 口碑好的高密网站建设seo排名优化培训