如何一键转载360360个人图书馆如何加密文件夹中馆友的文件夹到自己360个人图书馆如何加密文件夹中?

volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。

用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。

没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取值,而不去内存中取值,是因为编译器优化代码的结果(访问cpu寄存器比访问ram快的多)。

以上两种情况的区别在于被编译成汇编代码之后,两者是不一样的。之所以这样做是因为变量i可能会经常变化,保证对特殊地址的稳定访问。

=====以下为转载======

volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改

,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的

代码就不再进行优化,从而可以提供对特殊地址的稳定访问。

使用该关键字的例子如下:
  当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即

使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。

  volatile 指出 i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编

译器生成的汇编代码会重新从i的地址读取数据放在b中。而优化做法是,由于编译器发现两次从

i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在b中。而不是重新

从i里面读。这样以来,如果i是一个寄存器变量或者表示一个端口数据就容易出错,所以说vola

tile可以保证对特殊地址的稳定访问。
  注意,在vc6中,一般调试模式没有进行代码优化,所以这个关键字的作用看不出来。下面

通过插入汇编代码,测试有无volatile关键字,对程序最终代码的影响:

volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。

这段程序等待内存变量flag的值变为1(怀疑此处是0,有点疑问,)之后才运行do2()。

变量flag的值由别的程序更改,这个程序可能是某个硬件中断服务程序。例如:如果某个按钮按下的话,就会对DSP产生中断,在按键中断程序中修改flag为1,这样上面的程序就能够得以继续运行。

但是,编译器并不知道flag的值会被别的程序修改,因此在它进行优化的时候,可能会把flag的值先读入某个寄存器,然后等待那个寄存器变为1。如果不幸进行了这样的优化,那么while循环就变成了死循环,因为寄存器的内容不可能被中断服务程序修改。

为了让程序每次都读取真正flag变量的值,就需要定义为如下形式:

需要注意的是,没有volatile也可能能正常运行,但是可能修改了编译器的优化级别之后就又不能正常运行了。因此经常会出现debug版本正常,但是release版本却不能正常的问题。所以为了安全起见,只要是等待别的程序修改某个变量的话,就加上volatile关键字。

volatile的本意是“易变的”

由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化。比如:

程序的本意是希望ISR_2中断产生时,在main当中调用do_something函数,但是,由于编译器判断在main函数里面没有修改过i,因此可能只执行一次对从i到某寄存器的读操作,然后每次if判断都只使用这个寄存器里面的“i副本”,导致do_something永远也不会被调用。

如果将将变量加上volatile修饰,则编译器保证对此变量的读写操作都不会被优化(肯定执行)。此例中i也应该如此说明。

  1、中断服务程序中修改的供其它程序检测的变量需要加volatile;

  2、多任务环境下各任务间共享的标志应该加volatile;

  3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;

  另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。

  volatile总是与优化有关,编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并,常量传播等优化,进一步可以死代码消除。但有时这些优化不是程序所需要的,这时可以用volatile关键字禁止做这些优化,volatile的字面含义是易变的,它有下面的作用:

 1 不会在两个操作之间把volatile变量缓存在寄存器中。在多任务、中断、甚至setjmp环境下,变量可能被其他的程序改变,编译器自己无法知道,volatile就是告诉编译器这种情况。

if的条件不会当作无条件真

  3 对volatile变量的读写不会被优化掉。如果你对一个变量赋值但后面没用到,编译器常常可以省略那个赋值操作,然而对Memory Mapped IO的处理是不能这样优化的。


 前面有人说volatile可以保证对内存操作的原子性,这种说法不大准确,其一,x86需要LOCK前缀才能在SMP下保证原子性,其二,RISC根本不能对内存直接运算,要保证原子性得用别的方法,如atomic_inc。

  对于jiffies,它已经声明为volatile变量,我认为直接用jiffies++就可以了,没必要用那种复杂的形式,因为那样也不能保证原子性。

你可能不知道在Pentium及后续CPU中,下面两组指令

作用相同,但一条指令反而不如三条指令快。

}

八月七日,国家图书馆及国家典籍博物馆展开“典藏智慧”行动,典藏著名学者龚鹏程的个人著作及手稿百余册。

参与此次活动的国图张志清副馆长、原大连图书馆张本义馆长、山东图书馆李西宁副馆长、中国古籍保护协会秘书长王红蕾等,均对国图此举和龚鹏程著作的重要学术价值,给予高度评价。

我生长于台湾,著作主要在台湾发行。可是2004年我去美国华盛顿,拜会国会图书馆。一进门,发现该馆居然把他们收藏的五十多本我的书都摆了出来,排在大厅,真是吃惊不小。一方面感到十分荣幸,另一方面也很感慨,发现美国在收藏世界智慧上所花的心力真是让人佩服。

2004年以后,我在大陆又出版了许多书。这次非常感谢国家图书馆!为我的书劳动大家,花了很多时间整理,还举办了今天的仪式,非常荣幸,谢谢!图书馆是一个典藏智慧的地方,我的著作要到这里才能发挥最大的作用。

张志清(国图副馆长):

我代表国家图书馆向龚先生表示衷心的感谢!除了书库以外,国图还有一个近现代名家手稿专库,您的手稿也将会收录其中。

国图计划收藏龚先生的著作及手稿由来已久,早就向他表示希望能拥有他一整套著作。

其实龚先生在大陆的大部分著作,国图都已经买了。国图挑书很严,但龚先生的书几乎都有,可见龚先生的影响力。今天龚先生又补充给我们许多,我们感到特别荣幸,这将会给读者带来更多的便利。

龚先生的学问非常精深,视野广博,著作等身。在中华优秀传统文化中,任何领域,龚先生都游刃有余。

龚先生的书,多用大家都能看得懂的语言、简练的段落、明确的标题,来阐述非常深邃的道理。并且出入古今,东西方比较、儒释道兼通,非常了不起。您的著作捐赠,对国图来说也是荣耀。

龚先生从台湾来,是两岸交流的桥梁。我向台湾朋友,包括古籍保护界的朋友谈起您,大家都是有口皆碑。两岸间有共同的文化传统、思维方式,有龚先生作为桥梁和纽带,当然非常好。

马一浮先生说过,做学问关键是要通。龚先生的学问就非常通,不拘限于小处,而是把各方面的文化贯通起来。对此,我们很敬仰。我们对传统,一方面要保护,一方面要传承、利用。古代优秀典籍怎么让现代人明白,而且很通达的明白,是件非常难的事。这方面,龚先生做了非常多的努力,也有很大的成就,非常了不起。这和国图的功能有类似的地方,算是同道中人,希望龚先生给国图多提意见,一如继往的支持国图传播文化的事业。

龚先生的书入藏国图,意义重大。我们会一方面做好收藏工作,一方面做好服务工作,让更多读者通过龚先生的书来喜欢、认识中华优秀传统文化,促进我们文化事业的发展。

张本义(原大连图书馆馆长):

今天,我非常高兴,见证了一个读书人的庄重时刻。中国读书人讲究著作“藏之名山、流传久远”,我很荣幸见证了国图收藏龚先生著作的过程,祝贺龚先生著作能藏在国家图书馆这座名山。

我非常赞成张馆长刚才这番讲话,很有同感。我与龚先生交往了十几年,龚先生是我心中传统文人的楷模,是我学习的榜样。他在学问上,不光是文史哲,美学、书画,甚至是武术,几乎中国传统文化各个领域无所不通。他不是一般意义上的通家,只要他涉猎的领域,都能写出让人耳目一新的学术著作、发出振聋发聩的声音。他的著作有150余种,我只拜读了其中小小的一部分。但是龚先生的文章,凡是我能找到的都会读,每次读都有眼界大开的感觉。其实中国传统教育培养的本来就不是专家,是通家。龚先生的学问是方方面面的通,比方说中医、符

}

wps表格中怎样删除表格以外多余的行与列

行:用鼠标左键点击行数目码;按shift+ctrl+↓;按右键点击隐藏即可。

列:用鼠标左键点击列字母码;按shift+ctrl+→;按右键点击隐藏即可。

以上方法即简单又实用:-O

wps表格表怎样把格以外多余的行与列变成灰色

  在一些高手的示例文档中,我们经常会发现ET中只保留了有效的行和列,多余的行列都没有显示,呈灰色状态,甚至于连行号和列标都看不到(如图1)。

  一些初学者往往认为这是很高深的技巧,其实,用隐藏行和列的方法就可以轻松实现这一效果!下面以图1所示表格为例,谈谈如何实现。  把光标定位于ET的名称框中,并在其中输入“L:IV”(图2)并回车,这样就选中了L列以其之后的所有列(ET的最大列标为IV,也即第256列)。


  用鼠标从【格式】菜单中选择【列】→【隐藏】(图3),就隐藏了K列及其后的所有列。


  接着在“名称框”中输入“15:65536”并回车,选中第15行及其以后所有的行(ET支持的最大行号是65536),然后在【格式】菜单中选择【行】→【隐藏】,就隐藏了第15行以及以后所有的行,即呈现图1所示效果了。 小技巧:快速选中多余的行或列,先选中一行或一列,再Ctrl+Shift+方向键。

}

我要回帖

更多关于 360个人图书馆如何加密文件夹 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信