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

淘宝客做网站怎样推广/舆情服务网站

淘宝客做网站怎样推广,舆情服务网站,河津做网站,网站关于我们怎么做单页面Scott Meyers在《More Effective C》中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干…
Scott Meyers在《More Effective C++》中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要检查你是否在复习时,你才真正捡起课本看书。这就是“拖延战术”,直到你非要做的时候才去做。
 
当然,这种事情在现实生活中时往往会出事,但其在编程世界中摇身一变,就成为了最有用的技术,正如C++中的可以随处声明变量的特点一样,Scott Meyers推荐我们,在真正需要一个存储空间时才去声明变量(分配内存),这样会得到程序在运行时最小的内存花销。执行到那才会去做分配内存这种比较耗时的工作,这会给我们的程序在运行时有比较好的性能。必竟,20%的程序运行了80%的时间。
 
当然,拖延战术还并不只是这样一种类型,这种技术被我们广泛地应用着,特别是在操作系统当中,当一个程序运行结束时,操作系统并不会急着把其清除出内存,原因是有可能程序还会马上再运行一次(从磁盘把程序装入到内存是个很慢的过程),而只有当内存不够用了,才会把这些还驻留内存的程序清出。
 
写时才拷贝(Copy-On-Write)技术,就是编程界“懒惰行为”——拖延战术的产物。举个例子,比如我们有个程序要写文件,不断地根据网络传来的数据写,如果每一次fwrite或是fprintf都要进行一个磁盘的I/O操作的话,都简直就是性能上巨大的损失,因此通常的做法是,每次写文件操作都写在特定大小的一块内存中(磁盘缓存),只有当我们关闭文件时,才写到磁盘上(这就是为什么如果文件不关闭,所写的东西会丢失的原因)。更有甚者是文件关闭时都不写磁盘,而一直等到关机或是内存不够时才写磁盘,Unix就是这样一个系统,如果非正常退出,那么数据就会丢失,文件就会损坏。
 
呵呵,为了性能我们需要冒这样大的风险,还好我们的程序是不会忙得忘了还有一块数据需要写到磁盘上的,所以这种做法,还是很有必要的。
 
 

2、             标准C++std::stringCopy-On-Write

 
在我们经常使用的STL标准模板库中的string类,也是一个具有写时才拷贝技术的类。C++曾在性能问题上被广泛地质疑和指责过,为了提高性能,STL中的许多类都采用了Copy-On-Write技术。这种偷懒的行为的确使使用STL的程序有着比较高要性能。
 
这里,我想从C++类或是设计模式的角度为各位揭开Copy-On-Write技术在string中实现的面纱,以供各位在用C++进行类库设计时做一点参考。
 
在讲述这项技术之前,我想简单地说明一下string类内存分配的概念。通过常,string类中必有一个私有成员,其是一个char*,用户记录从堆上分配内存的地址,其在构造时分配内存,在析构时释放内存。因为是从堆上分配内存,所以string类在维护这块内存上是格外小心的,string类在返回这块内存地址时,只返回const char*,也就是只读的,如果你要写,你只能通过string提供的方法进行数据的改写。
 

2.1、         特性

 
由表及里,由感性到理性,我们先来看一看string类的Copy-On-Write的表面特征。让我们写下下面的一段程序:
 

#include
#include
using namespace std;
 
main()
{
       string str1 = "hello world";
       string str2 = str1;
      
       printf ("Sharing the memory:\n");
       printf ("\tstr1's address: %x\n", str1.c_str() );
       printf ("\tstr2's address: %x\n", str2.c_str() );
      
    str1[1]='q';
       str2[1]='w';
 
       printf ("After Copy-On-Write:\n");
       printf ("\tstr1's address: %x\n", str1.c_str() );
       printf ("\tstr2's address: %x\n", str2.c_str() );
 
       return 0;
}
 
这个程序的意图就是让第二个string通过第一个string构造,然后打印出其存放数据的内存地址,然后分别修改str1str2的内容,再查一下其存放内存的地址。程序的输出是这样的(我在VC6.0g++ 2.95都得到了同样的结果):
 

> g++ -o stringTest stringTest.cpp
> ./stringTest
Sharing the memory:
        str1's address: 343be9
        str2's address: 343be9
After Copy-On-Write:
        str1's address: 3407a9
        str2's address: 343be9
 
从结果中我们可以看到,在开始的两个语句后,str1str2存放数据的地址是一样的,而在修改内容后,str1的地址发生了变化,而str2的地址还是原来的。从这个例子,我们可以看到string类的Copy-On-Write技术。
链接地址:http://haoel.blog.51cto.com/313033/124638
http://www.lbrq.cn/news/1275391.html

相关文章:

  • 菏泽科技网站建设/张家界百度seo
  • 中国建设基础设施公司网站/百度seo优化公司
  • 注册网站获取网易邮箱安全码/企业网站推广的形式有哪些
  • 手机网站建设要注意哪些问题/老鬼seo
  • 新闻发布会是什么意思/seo排名点击工具
  • 外贸网站服务商/网络营销策略优化
  • flash网站导航条怎么做/怎么制作公司网站
  • 优化网站公司价格是多少钱/seo网站诊断顾问
  • 杭州网站建设过程/搜狗网站收录提交入口
  • 遵义水网站建设/百度推广竞价排名
  • jsp技术做网站有什么特点/线上网络平台推广
  • 枣庄市网站建设/指数分布的期望和方差
  • 手机网站flash/seo站内优化技巧
  • php网站开发账号密码/如何给公司做网络推广
  • 07年做网站/输入关键词自动生成标题
  • 幼儿园网站建设情况/2345网址导航电脑版
  • js图片展示网站/南昌关键词优化软件
  • 网页制作与网站建设实战大全/百度爱采购优化软件
  • 自己怎么做免费网站空间/市场营销活动策划方案
  • 网站的分辨率是多少/推广员是做什么的
  • 做微博网站/seo关键词词库
  • 信访举报网站建设情况总结/seo优化是指
  • wordpress电视主题/百度站长工具seo综合查询
  • 锦州网站建设最独特/windows11优化大师
  • 温州快建网站/河源新闻最新消息
  • 滑县住房城乡建设厅门户网站/湖南seo推广系统
  • 做网站去哪里/线上推广宣传方式有哪些
  • 网站 如何做用户统计/百度网址入口
  • 人妖和美女做视频网站/深圳高端seo外包公司
  • 网站开发流程可规划为那三个阶段/seo站长工具查询系统
  • Codeforces Round 1040 (Div. 2) E1 - E3 交互题 | 思维
  • 【刷题】东方博宜oj 1412-快速幂(零基础,简单易懂)
  • 物联网与AI深度融合,赋能企业多样化物联需求
  • python | numpy小记(八):理解 NumPy 中的 `np.meshgrid`
  • 【ESP32设备通信】-LAN8720与ESP32集成
  • 一篇文章读懂麦科信CP3008系列高频交直流电流探头