科学网

 找回密码
  注册

tag 标签: 关键字

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

SQL 高级教程---SQL LEFT JOIN 关键字(18)
helloating1990 2016-1-7 16:50
SQL LEFT JOIN 关键字 LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。 LEFT JOIN 关键字语法SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name 注释: 在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。 原始的表 (用在例子中的): Persons 表: Id_P LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York 3 Carter Thomas Changan Street Beijing Orders 表: Id_O OrderNo Id_P 1 77895 3 2 44678 3 3 22456 1 4 24562 1 5 34764 65 左连接(LEFT JOIN)实例 现在,我们希望列出所有的人,以及他们的定购 - 如果有的话。 您可以使用下面的 SELECT 语句: SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName 结果集: LastName FirstName OrderNo Adams John 22456 Adams John 24562 Carter Thomas 77895 Carter Thomas 44678 Bush George LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。
个人分类: 数据库|644 次阅读|0 个评论
SQL 高级教程--- SQL INNER JOIN 关键字(17)
helloating1990 2016-1-7 16:49
SQL INNER JOIN 关键字 在表中存在至少一个匹配时,INNER JOIN 关键字返回行。 INNER JOIN 关键字语法SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name 注释: INNER JOIN 与 JOIN 是相同的。 原始的表 (用在例子中的): Persons 表: Id_P LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York 3 Carter Thomas Changan Street Beijing Orders 表: Id_O OrderNo Id_P 1 77895 3 2 44678 3 3 22456 1 4 24562 1 5 34764 65 内连接(INNER JOIN)实例 现在,我们希望列出所有人的定购。 您可以使用下面的 SELECT 语句: SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName 结果集: LastName FirstName OrderNo Adams John 22456 Adams John 24562 Carter Thomas 77895 Carter Thomas 44678 INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 Persons 中的行在 Orders 中没有匹配,就不会列出这些行。
个人分类: 数据库|761 次阅读|0 个评论
[转载]C/C++中static关键字详解
weiweishi 2015-9-11 09:44
C/C++中static关键字详解 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。 用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量。这个对象将只在执行线程第一次到达它的定义使初始化。 用法2:局部静态对象 对于局部静态对象,构造函数是在控制线程第一次通过该对象的定义时调用。在程序结束时,局部静态对象的析构函数将按照他们被构造的相反顺序逐一调用,没有规定确切时间。 用法3:静态成员和静态成员函数 如果一个变量是类的一部分,但却不是该类的各个对象的一部分,它就被成为是一个static静态成员。一个static成员只有唯一的一份副本,而不像常规的非static成员那样在每个对象里各有一份副本。同理,一个需要访问类成员,而不需要针对特定对象去调用的函数,也被称为一个static成员函数。 类的静态成员函数只能访问类的静态成员(变量或函数)。 进一步详细解释如下: 1.先来介绍它的第一条也是最重要的一条:隐藏 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c. 下面是a.c的内容: char a = 'A'; // global variable void msg() { printf(Hello\n); } 下面是main.c的内容: int main(void) { extern char a; // extern variable must be declared before use printf(%c , a); (void)msg(); return 0; } 程序的运行结果是: A Hello 你可能会问:为什么在a.c中定义的全局变量a和函数msg能在main.c中使用?前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的。 如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用。 2. static的第二个作用是保持变量内容的持久 存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。虽然这种用法不常见,但我还是举一个例子。 #include <stdio.h> int fun(void){ static int count = 10; // 事实上此赋值语句从来没有执行过 return count--; } int count = 1; int main(void) { printf(global\t\tlocal static\n); for(; count <= 10; ++count) printf(%d\t\t%d\n, count, fun()); return 0; } 程序的运行结果是: global local static 1 10 2 9 3 8 4 7 5 6 6 5 7 4 8 3 9 2 10 1 3. static的第三个作用是默认初始化为0.其实全局变量也具备这一属性,因为全局变量也存储在静态数据区 在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。比如初始化一个稀疏矩阵,我们可以一个一个地把所有元素都置0,然后把不是0的几个元素赋值。如果定义成静态的,就省去了一开始置0的操作。再比如要把一个字符数组当字符串来用,但又觉得每次在字符数组末尾加‘\0’太麻烦。如果把字符串定义成静态的,就省去了这个麻烦,因为那里本来就是‘\0’。不妨做个小实验验证一下。 #include <stdio.h> int a; int main(void){ int i; static char str ; printf(integer: %d; string: (begin)%s(end), a, str); return 0; } 程序的运行结果如下integer: 0; string: (begin)(end) 最后对static的三条作用做一句话总结。首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0. 4. 用static声明的函数和变量小结 static 声明的变量在C语言中有两方面的特征: 1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。 2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。 Tips: A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度; B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度; C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题; D.如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数) E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。 函数前加static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。 扩展分析: 术语static有着不寻常的历史.起初,在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量。随后,static在C中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。为了避免引入新的关键字,所以仍使用static关键字来表示这第二种含义。最后,C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量和函数(与Java中此关键字的含义相同)。 全局变量、静态全局变量、静态局部变量和局部变量的区别 变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。 (1) 按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。 (2) 按作用域分, 全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。 全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。 (1) static 函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件 (2) static全局变量与普通的全局变量有什么区别:static全局变量只初始化一次,防止在其他文件单元中被引用; (3) static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; (4) static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝. (5) 全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。 5. C++的static C++的static有两种用法:面向过程程序设计的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 (1)、面向过程设计中的static 1)、静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1 #include iostream.h void fn(); static int n; //定义静态全局变量 void main() { n=20; coutnendl; fn(); } void fn() { n++; coutnendl; } 静态全局变量有以下特点: i ) 该变量在全局数据区分配内存; ii ) 未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化); iii ) 静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的; 静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。对于一个完整的程序,在内存中的分布情况如下图: 代码区 全局数据区 堆区 栈区   一般程序的由new产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。细心的读者可能会发现,Example 1中的代码中将 static int n; //定义静态全局变量 改为 int n; //定义全局变量 程序照样正常运行。的确,定义全局变量就可以实现变量在文件中的共享,但定义静态全局变量还有以下好处: 1) 静态全局变量不能被其它文件所用; 2) 其它文件中可以定义相同名字的变量,不会发生冲突; 您可以将上述示例代码改为如下: //Example 2 //File1 #include iostream.h void fn(); static int n; //定义静态全局变量 void main() { n=20; coutnendl; fn(); } //File2 #include iostream.h extern int n; void fn() { n++; coutnendl; } 编译并运行Example 2,您就会发现上述代码可以分别通过编译,但运行时出现错误。试着将 static int n; //定义静态全局变量 改为 int n; //定义全局变量 再次编译运行程序,细心体会全局变量和静态全局变量的区别。 (2)、静态局部变量 在局部变量前,加上关键字static,该变量就被定义成为一个静态局部变量。 我们先举一个静态局部变量的例子,如下: //Example 3 #include iostream.h void fn(); void main() { fn(); fn(); fn(); } void fn() { static n=10; coutnendl; n++; }   通常,在函数体内定义了一个变量,每当程序运行到该语句时都会给该局部变量分配栈内存。但随着程序退出函数体,系统就会收回栈内存,局部变量也相应失效。但是有时候我们需要在两次调用之间对变量的值进行保存。通常的想法是定义一个全局变量来实现。但这样一来,变量已经不再属于函数本身了,不再仅受函数的控制,给程序的维护带来不便。  静态局部变量正好可以解决这个问题。静态局部变量保存在全局数据区,而不是保存在栈中,每次的值保持到下
个人分类: 学习资料|698 次阅读|0 个评论
科学网博文关键字TOP300【科网智图】
热度 11 outcrop 2015-6-12 15:06
=============================== 关于【科网智图】 =============================== 上一篇博文《 开始整理科学网博文知识地图 》提到建立一个科学网知识地图,于是开辟一个科学网博文智慧、知识地图栏目:科网智图,将分类聚合整理一些科学网博主们的智力成果。 也欢迎对此有兴趣的朋友或博友加入科学网博友QQ群:115359850,便于交流。 =============================== 关于本文 =============================== “科学网博文关键字TOP300”的数据基于科学网做过“关键词”标记的博文,获取了22万左右关键字,并做了计数;这个统计算是对科学网博文内容结构做一个初步的了解和评估。从获取博文的关键字来看,可以发现科研、教育等话题,还是科学网的主流话题;这里列出整理后的科学网TOP300关键字。 因为习惯标记关键词的博主并不多,因此这个关键词频度表并不能作为科学网所有博文关键词频度的排名,但算是第一步:提取关键词。比如“菜根谭”这个关键词,大部分源于我的菜根谭系列博文。 关键词:统计频次 中国 8525 美国 4696 地震 4211 科研 3999 大学 3575 潮汐组合 3495 研究生 3416 论文 3271 科学 2734 教育 2728 创新 2552 转基因 2404 北京 2364 科学网 2344 科学家 2332 博客 2236 反面教材 2140 博士 2105 文章 2012 人生 1815 教授 1741 日本 1666 生活 1611 历史 1575 照片 1549 数学 1497 厄尔尼诺 1493 中国人 1484 中医 1417 工作 1393 方舟子 1369 如何 1349 健康 1330 科普 1310 诺贝尔奖 1293 技术 1278 期刊 1253 教学 1229 国家 1208 原创 1198 评论 1157 文化 1089 实验室 1049 时间 1030 摄影 1030 院士 1017 动物保护 988 基金 986 人才 970 中科院 959 学习 957 哲学 944 2012 943 毛泽东 916 拉尼娜 910 SCI 896 故事 891 网络 885 影响因子 877 新疆 869 教师 861 教育部 850 朋友 847 科学研究 844 博士生 837 导师 835 会议 834 老师 834 信息 829 微博 827 图书馆 825 安全 788 大学生 777 知识 776 国际 761 中国科学院 755 爱情 755 学生 747 高校 744 经济 743 2011 741 世界 737 旅游 735 上海 734 雾霾 733 杂谈 732 杨文祥 732 博士后 730 医学 721 诗词 717 高绪仁 700 钓鱼岛 697 娱乐 696 管理 695 清华大学 691 自然科学 691 下载地址 684 德国 683 读书 679 孩子 676 英国 666 物理 657 幸福 652 食品安全 646 台湾 636 科技 635 地球 629 计算机 624 项目 622 影响 615 成功 614 诺贝尔 612 生态 601 植物 601 拉马德雷 597 可拓学 596 社会 595 高考 590 生物技术 584 爱因斯坦 583 生物学 582 研究所 580 学术 579 化学 578 干旱 571 物理学 560 编辑 559 知识分子 559 创业 552 艺术 548 研讨会 546 新闻 545 英语 537 计划 535 钱学森 532 国务院 524 全球变暖 524 气候变化 523 软件 521 俄罗斯 521 科学技术 520 统计 518 科技导报 517 民主 516 改革 512 北京大学 508 环境 505 空间 503 研究 503 图片 501 动物 498 北大 492 能力 492 诗歌 487 论坛 484 经济学 482 互联网 481 花 479 未来 477 校园 477 素食 476 预测 475 相对论 475 SCI投稿 475 腐败 474 社会主义 472 毕业 470 资源 465 癌症 463 博文 463 工程 461 奥巴马 459 年轻人 458 科学院 454 学校 451 青年 450 佛教 450 房价 443 菜根谭 443 饶毅 442 肖传国 439 清华 436 毛宁波 435 专业 432 情感 428 就业 424 基因 423 春节 422 农村 418 火山 418 提要 417 本科生 416 高等教育 415 法律 415 价值 413 投稿 413 水资源 410 翻译 410 国际会议 407 2013 406 合作 405 生命 405 都 401 抄袭 397 数据库 396 电影 396 硕士 392 人民日报 392 香港 392 春天 391 专家 389 书 388 发展 387 专利 386 自然 386 生物 385 杂志 384 阅读 382 情报学 381 环保 381 自由 377 matlab 370 加拿大 370 系统 370 中文 368 物理学家 368 2014 367 动态 366 政治 365 温度 365 信仰 364 出版 364 暴雨 362 音乐 360 中国经济 360 道德 359 伪科学 359 网站 358 模型 357 污染 353 微软雅黑 350 诗 350 风景 350 研究生教育 350 教师节 349 课程 348 降温 347 欧洲 346 科学主义 346 传统文化 345 2010 344 考研 342 委员会 341 青春 340 目录 339 肿瘤 339 南京 338 招聘 336 手机 336 食品 336 拉马德雷冷位相 335 留学 333 程序 333 地质 333 科研人员 333 进化 333 文明 331 Google 331 战争 330 转基因食品 330 经典 329 视频 326 英文 326 毕业生 326 蓝天 326 领域 325 宇宙 325 设计 324 爱 323 心理 323 宗教 323 传统 322 问题 321 儿童 319 物联网 317 考试 315 流感 315 博物馆 313 力学 311 机器人 311 农业 311 网 311 孔子 311 博主 309 中国大学 308 基因组 308 女人 307 复旦大学 306 关节镜 306 理想 305 文末附件是程序提取的关键字,未做任何人工整理的文本数据。格式为:关键字,频次。 alltags_1.zip
个人分类: 科网智图|5285 次阅读|32 个评论
房山区108国道宝水段地面塌陷成因分析
huangly 2015-5-21 11:23
摘 要: 北京西部山区的地面塌陷的形成主要与长期以来的地下采煤密切相关,地下采煤活动形成的地下采空区塌落,导致地面的沉降、陷落,影响地面建筑,公路、铁路、管线、农田、林地等安全,甚至造成人员伤亡。 房山区蒲洼乡辖区内 108 国道宝水段曾发生地面塌陷灾害,本文在勘查的基础上论述了 108 国道宝水段地面塌陷灾害的特征,分析了产生塌陷的主要原因。 关键字: 房山区 108 国道 地面塌陷 特征 成因分析
1943 次阅读|0 个评论
[转载]宋海波:超声对循环功能的快速评估
songhaibo 2014-6-1 08:40
RAPID ASSESSMENT OF CIRCULATORY FUNCTION 关键字: TEE 循环功能 快速评估 2013-12-11 11:18 四川大学华西医院 麻醉科(胸心麻醉专业 主治医师 对广大临床医师而言,如何用超声监测循环功能,迅速解决临床问题,是一个现实而迫切的问题,但是,要获得心脏超声的知识和技能,不仅需要花费时间和精力去掌握解剖空间的概念,还要完成大量的操作训练,学习曲线长,效率不高,因此建立一个切实可行,让临床医师容易掌握,可用于快速评估循环功能的超声监测方法是当务之急。本文将对超声循环功能快速评估的方法进行阐述。   超声对循环功能的快速评估不同于一般心血管超声诊断,属于循环监测的范畴,目的是为了解决心血管相关问题而提供快捷、可靠的诊疗决策依据。典型的代表是在急诊、危重症超声中推广使用的FAST、FATE 等。这种基于临床问题的超声对循环功能的快速评估技术正在临床的各个领域逐渐拓展开来。   对广大临床医师而言,如何用超声监测循环功能,迅速解决临床问题,是一个现实而迫切的问题,但是,要获得心脏超声的知识和技能,不仅需要花费时间和精力去掌握解剖空间的概念,还要完成大量的操作训练,学习曲线长,效率不高,因此建立一个切实可行,让临床医师容易掌握,可用于快速评估循环功能的超声监测方法是当务之急。本文将对超声循环功能快速评估的方法进行阐述。   要快速评估循环功能,我们就必须简化心血管模型。在临床实践中,心血管系统可以被抽象为一条“能排血,能供血”的管道,正常状态下,它的壁是完整的,在内分泌和心电生理系统的双重控制下规律舒缩,随着壁的舒缩,腔可以“扩大、缩小”,配合瓣的有序开闭,单向驱动血流与大动脉耦合产生脉压,维持器官的搏动性灌注。病理状态下壁和瓣发生心脏固体成分的异常,腔和流发生流体成分的异常。超声可以从形态和功能两个方面评估循环系统,为相关的诊疗决策提供依据。   心血管超声切面不仅数量众多,所测量的参数也是五花八门、层出不穷。我们不禁要问自己,是不是每一个切面、每一种参数都对循环功能监测和术中诊疗决策起作用呢?以诊疗决策为目的的超声循环监测方法应该包括哪些内容?基本的思维方法是什么?   结合国内外临床超声发展的趋势和经验,我们提出:超声循环功能快速评估与监测必须在临床实践中实现规范化、标准化。下面以术中TEE为例,描述超声循环功能监测的基本思路:从影像资料的特征出发建立个体化的病理生理学模型,据此进行术中诊疗决策,管控相关风险。 一、切面的标准化   (一)标准化切面的介绍   麻醉、危重症和急诊医学的工作特点决定了超声影像技术在这些领域里应用的模式,超声技术从一开始进入临床,切面标准化工作就一直没有中断过,在TTE方面,出现了以FATE(Focused Assessed Transthertic Echocardiogray)为代表的临床超声基本切面 ,1999年确立了20个TEE标准切面 ,并在随后的临床实践中每隔3~4年不断更新和扩充内容。不仅有临床超声操作指南还有相关的超声培训指南。有些指南发表后也有人提出质疑和自己的见解 ,但是指南确立切面标准化的工作目标一直得到公认。值得注意的是,学科之间的协作成为临床超声推广工作的亮点,不仅有超声学会和麻醉学会两个学科之间的协作 ,也有包括心脏学会在内的三个学科之间的协作 ,更体现出各种指南中的培训目标和各学会的专科准入制度相结合的特点 。国外经验证明,临床超声要实现大家做,一起做,规范做的局面,必须根据临床需要制定标准和规范,并持续改进 。   2013年心血管麻醉学会和美国心脏超声协会将20个TEE标准切面简化到11个,双方共同发表联合声明,定义了TEE监测和TEE诊断的清晰界限(图1),也标志着超声监测循环功能进入到一个合作发展的新阶段 。   最近,中国麻醉医师术中TEE推广培训协作组提出了适用于麻醉急诊和术中循环监测的TEE-FOCUS/TTEFOCUS的概念,其基本切面有5个,切面的选择上有别于急诊常用的4个FATE基本切面,临床实践证明适用于术中循环的监测(图2)。   TEE-FOCUS/TTE-FOCUS涉及到5个基本切面中有4个关于心脏的基本切面和1个关于大血管的基本切面:1. 经胃底心室短轴切面,2. 食管中段四腔心切面,3. 左心室长轴切面,4. 右心室流入流出道切面,5. 腹主动脉和或下腔静脉短轴切面。   为了有效地推广TEE-FOCUS/TTE-FOCUS中关于心脏的标准切面,我们与中科院成都信息技术有限公司合作,推出了基于Android平台的手机APP教学软件(维思模-Vrsim)。   (二)标准化切面的应用   合理应用这些切面可有效地监测术中的循环事件,例如:骨科和泌尿外科手术常见的肺动脉栓塞,开颅手术常见的气体栓塞,低血容量,整体和局部左心功能评价,右心功能评价,基本的瓣膜疾病,成人简单的先心病,心包填塞,胸部创伤等如下所述。   1. 左心室长轴切面(图2基本切面左上):(1)左心房大小、房壁厚度是否正常,舒缩运动是否正常;(2)二尖瓣开闭运动是否正常,有无穿孔及赘生物;(3)左心室流入道是否通畅;(4)左心室,室壁厚度是否正常,舒缩运动是否正常;(5)左心室流出道是否有梗阻;(6)主动脉瓣开闭是否正常,有无赘生物;(7)升主动脉管壁、管腔是否正常;(8)腔内血流是否正常。   2. 右室流入流出道切面(图2基本切面右上):(1)右心房大小、房壁厚度是否正常,舒缩运动是否正常;(2)三尖瓣开闭运动是否正常,有无穿孔及赘生物;(3)右心室流入道是否通畅;(4)右心室大小,室壁厚度是否正常,舒缩运动是否正常;(5)右心室流出道是否有梗阻;(6)肺动脉瓣开闭是否正常,有无赘生物;(7)肺动脉管壁、管腔是否正常;(8)腔内血流是否正常。   3. 经胃左心室短轴切面(图2基本切面左下):(1)左、右心室腔大小及形态;(2)左、右心室比例及室间隔凸向哪一侧;(3)室壁厚度和搏动幅度;(4)腔内血流是否正常。   4. 食管中段四腔心切面(图2基本切面右下,图4):(1)各房室大小及其比例;(2)切面中心室壁的厚度、搏动幅度、连续性;(3)二尖瓣和三尖瓣的形态结构和开闭功能;(4)腔内血流是否正常。   5. 降主动脉短轴切面(图3右下):(1)降主动脉管腔大小及形态;(2)主动脉壁各层是否增厚,回声增强;(3)是否存在夹层或假性动脉瘤;(4)腔内血流是否正常。 二、从标准化切面和标准化测量中提取影像学特征   术中时间有限,需要麻醉医师迅速决定,往往来不及做精确的测量,所以我们首先应该明确要测什么,其次是怎么测量的问题。超声监测循环功能用到的参数不外乎壁、腔、瓣、流四个方面,壁就是房壁、室壁、血管壁,腔就是心房、心室腔和血管腔,瓣就是房、室之间的两个房室瓣、心室和大动脉之间的两个半月瓣,流就是心血管的正常和各种异常血流 。其基本的定性指标如表1,超声评价循环功能最重要的是将患者的心血管特征提取出来,用病理生理学模型解释,然后用于诊疗决策。   以左心室中段短轴切面为例,在这个切面上,可以观察左、右心室的心腔大小,室壁厚度。左心室正常值男性55 mm,女性50 mm,正常情况下左心室和右心室的比例关系大约是5∶2;而左心室舒张末面积(LVEDA)和左心室收缩末面积(LVESA)的比例大致是2∶1,我们将正常比例的心室舒缩关系形象而有趣地描述为“大眼瞪小眼”,还可以描述“大眼瞪大眼”为心衰,“小眼瞪小眼”为容量不足 ,室颤时心室舒缩功能丧失,趣称为“干瞪眼”。(图5)   生理学中左心室有两条曲线,心室的容积-时间曲线和压力-时间曲线,左心室容积-时间曲线的最大值点对应着左心室舒张末容积,最小值点对应着左心室收缩末容积,最大值点和最小值点之间的差值间接或直接地反映每博输出量(SV)。EF(射血分数)=SV/EDV。术中直接监测LVEDV尚不容易,直接测量LVEDV要用实时三维超声心动图技术、二维图像自动分割技术、结合辛普森法计算得到,这种方法用在术中直接监测左心室的容积-时间曲线成本较高。如果心室形态正常,我们还是推荐用M型超声测量LVEDD/LVESD,计算FS(FS=LVEDD-LVESD/LVEDD)或者左心室中段短轴2D切面测量计算FAC=LVEDA-LVESA/LVEDA;EF≈2FS。 三、从超声影像学特征出发从而建立个体化的病理生理模型   (一)超声循环监测的正常值   正常值是描述正常心脏结构和功能的基础,最重要的参数莫过于心血管腔的内径和房室、血管壁的厚度。通过将测量值与正常值(表2)作出比较,即可以提取心血管的影像学特征。   (二)常见的循环系统病理类型的超声形态特征   有了正常值,就可以对常见的循环系统病理类型进行区分和归纳,下面阐述常见的循环系统病理类型的超声形态特征与常见病理类型的关系 。   1. 心室腔小壁厚:左室长轴、短轴切面,可见室壁增厚,心腔缩小(图6上左、右)常见于高血压病,主动脉瓣狭窄,左室流出道梗阻,肥厚型心肌病,心肌糖原沉积病;右室肥厚-法洛氏四联症,肺动脉闭锁,肺动脉高压。   肥厚心室的顺应性降低,前负荷对心房收缩功能的依赖性增加,心肌氧供对后负荷依赖性增加,硬膜外或腰麻可降低外周血管阻力,如盲目进行麻醉可能带来灾难性后果。一般情况下不需要主动增强心肌收缩力,合并流出道梗阻还要减低心肌收缩力,增加外周血管阻力(图6红色箭头所示)和血容量。   2. 左心室腔大壁薄:心尖四腔、心室短轴切面,心腔扩大,室壁变薄,搏幅减低,这类心脏左室舒张末压升高(图7红色箭头所示),造成冠脉灌注压降低,心肌缺血。这类患者若诱导期如出现心跳骤停,心肺复苏极为困难。常见于扩张型心肌病,主动脉瓣反流,缺血性心肌病,容量过负荷等。处理上要保持心率/律稳定,合适的前负荷,减轻后负荷,增强心肌收缩力。   3. 右房右室大,左房左室小(图8):肺栓塞,右室心梗,肺动脉高压,大房缺,二尖瓣狭窄晚期,三尖瓣重度反流,肺静脉异位引流。这类心脏右心室舒张末压升高,如遇到左房压急性升高的因素(急性左心衰、突发心房颤动、二尖瓣急性关闭不全),发生心跳骤停的风险很高。 四、常见心脏病的超声影像特征   (一)单纯瓣膜病的超声影像特征   单纯瓣膜病术中管理风险由大到小依次为:主动脉瓣反流,主动脉瓣狭窄,二尖瓣反流,二尖瓣狭窄。其超声影像特征见表3。   (二)常见先心病的超声影像特征   常见的先天性疾病按照病理生理学特征可分为两种类型,“肺血多”型和“肺血少”型(图9)。两类疾病的超声要点、麻醉要点和外科要点都有各自的特点。   1. 以肺血多为主要表现的疾病有:房间隔缺损,室间隔缺损,动脉导管未闭 ,主、肺动脉窗等疾病。早期表现为左向右分流(图10中虚线所示),胸片显示肺纹理增多。虚线表示相应心血管节段存在无效循环,无效循环经过的心、血管腔增大,无效循环未经过的心血管腔不增大。肺充血后血管床扩张,容易发生感染和急性肺动脉高压危象。体外循环术后容易发生鱼精蛋白过敏,严重者甚至会发生心脏停搏。   房间隔缺损、室间隔缺损、动脉导管未闭的患者长期肺充血可导致肺动脉高压,肺小动脉管壁增厚、闭塞直至艾森曼格综合征。艾森曼格综合征的患者行剖宫产手术时要注意维持体循环阻力和血容量,降低肺循环阻力。   2. 以肺血少为主要表现的疾病有:法洛氏四联症、肺动脉闭锁等(图10)。这类疾病肺血管树发育差,胸片肺纹稀疏,早期表现为右向左分流,术中血氧饱和度下降的原因是体循环阻力下降,右向左分流增加,肺血减少,表现为“血压依赖性氧合”,如遇到右室流出道动力性梗阻,会出现严重的低氧血症,称为缺氧发作。“肺血少”的先心病通常无肺动脉高压,不容易发生鱼精蛋白过敏,不发生艾森曼格综合征,左房压低,左心室容积偏低,术后需要避免容量过负荷。这类患者因为肺血少,因此吸入麻醉效果差,由于在发育期间形成了大量的体肺侧枝(MAPCUS),增加肺血流量,这些侧枝循环在术后常会带来间质性肺水肿,因此需要做杂交手术,在矫正肺动脉狭窄/闭锁的同时行侧枝封堵。 五、小 结   循环功能监测是麻醉风险管理的重要内容(图11),将超声用于循环功能监测是麻醉学发展的需要,近年来,越来越多的麻醉医师认识到没有超声循环功能监测,心血管麻醉的安全将得不到保障。未来,超声快速评价和监测心血管功能将成为非心脏专科麻醉医师的必备能力。   我国临床超声监测技术的发展比较迅速,已经成立了中国麻醉医师术中TEE推广培训协作组,协作组在中华医学会麻醉学分会刘进主委的直接领导下,凝聚海内外华人麻醉医师的积极性和创造性,积极开展培训和推广工作 ,我们有理由相信,随着中国国力的增强和住院医师规范化培训的推进,临床超声在中国将出现多学科协作的新局面,全面推广将成为不可逆转的趋势。   参考文献    Smith ZA, Wood D. Emergency focussed assessment with sonography in trauma(FAST) and haemodynamic stability. Emerg Med J, 2013, Feb 13    Jensen MB, Sloth E, Larsen KM, Schmidt MB. Transthoracic echocardiography for cardiopulmonary monitoring in intensive care. Eur J Anaesthesiol, 2004 Sep, 21(9): 700-707    Practice guidelines for perioperative transesophageal echocardiography. A report by the American Society of Anesthesiologists and the Society of Cardiovascular Anesthesiologists Task Force on Transesophageal Echocardiography. Anesthesiology, 1996 Apr, 84(4): 986-1006    Shanewise JS, Cheung AT, Aronson S et al. ASE/SCA guidelines for performing a comprehensive intraoperative multiplane transesophageal echocardiography examination: recommendations of the American Society of Echocardiography Council for Intraoperative Echocardiography and the Society of Cardiovascular Anesthesiologists Task Force for Certification in Perioperative Transesophageal Echocardiography. Anesth Analg, 1999 Oct, 89(4): 870-884    Shiga T, Ogawa R. Five-grade scoring system is still confusing: does ASE/SCA set up a double standard? Anesth Analg, 2000 May, 90(5): 1248-1249    Cahalan MK, Abel M, Goldman M, Pearlman A, Sears-Rogan P, Russell I, Shanewise J, Stewart W, Troianos C, American Society of Echocardiography, Society of Cardiovascular Anesthesiologists. American Society of Echocardiography and Society of Cardiovascular Anesthesiologists task force guidelines for training in perioperative echocardiography. Anesth Analg, 2002 Jun, 94(6): 1384-1388    Cheitlin MD, Armstrong WF, Aurigemma GP, et al, ACC/AHA/ASE 2003 guideline update for the clinical application of echocardiography: summary article: a report of the American College of Cardiology/American Heart Association Task Force on Practice Guidelines (ACC/AHA/ASE Committee to Update the 1997 Guidelines for the Clinical Application of Echocardiography). Circulation, 2003, 108: 1146-1162    Mathew JP, Glas K, Troianos CA, Sears-Rogan P, Savage R, Shanewise J, Kisslo J, Aronson S, Shernan S, American Society of Echocardiography, Society of Cardiovascular Anesthesiologists. American Society of Echocardiography/Society of Cardiovascular Anesthesiologists recommendations and guidelines for continuous quality improvement in perioperative echocardiography.J Am Soc Echocardiogr, 2006 Nov, 19(11): 1303-1313    American Society of Anesthesiologists and Society of Cardiovascular Anesthesiologists Task Force on Transesophageal Echocardiography. Practice guidelines for perioperative transesophageal echocardiography: An updated report by the American Society of Anesthesiologists and the Society of Cardiovascular Anesthesiologists Task Force on Transesophageal Echocardiography. Anesthesiology, 2010, 112: 1084-1096    Reeves ST, Finley AC, Skubas NJ, Swaminathan M, Whitley WS, Glas KE, Hahn RT, Shanewise JS, Adams MS, Shernan SK, Council on Perioperative Echocardiography of the American Society of Echocardiography, Society of Cardiovascular Anesthesiologists. Basic perioperative transesophageal echocardiography examination: a consensus statement of the American Society of Echocardiography and the Society of Cardiovascular Anesthesiologists. J Am Soc Echocardiogr, 2013 May, 26(5): 443-456    Pai RG, Bansal RC, Shah PM. Doppler-derived rate of left ventricular pressure rise. Its correlation with the postoperative left ventricular function in mitral regurgitation. Circulation, 1990 Aug, 82(2): 514-520    Vincent JL, De Backer D. Circulatory shock. N Engl J Med, 2013 Oct 31, 369(18): 1726-1734    Leung JM, Levine EH. Left ventricular end-systolic cavity obliteration as an estimate of intraoperative hypovolemia. Anesthesiology, 1994 Nov, 81(5): 1102-1109    Liu F, Hsiung MC, Song H, Dian K, Tang H, Liu J. Unexpected co-arctation ofaorta detected by transesophageal echocardiography during patent ductus arteriosus ligation. Front Med, 2013 Jun, 7(2): 270-273    Song H, Liu F, Dian K, Liu J. Echo rounds: intraoperative transesophageal echocardiography-guided patent ductus arteriosus ligation in an asymptomatic nonbacterial endocarditis patient. Anesth Analg, 2010 Oct, 111(4): 878-880    Song H, Peng YG, Liu J. Innovative transesophageal echocardiography training and competency assessment for Chinese anesthesiologists: role of transesophageal echocardiography simulation training. Curr Opin Anaesthesiol, 2012 Dec, 25(6): 686-691 (责任编辑:姜旭晖)
个人分类: 术中超声教学|1876 次阅读|0 个评论
[转载]中国麻醉医师术中TEE推广协作
songhaibo 2014-6-1 08:33
宋海波:中国麻醉医师术中TEE推广协作 PROMOTION AND COLLABORATION OF TEE 关键字: TEE 监测 影像 2014-05-26 09:27 四川大学华西医院 麻醉科(胸心麻醉专业 主治医师   《门诊》:目前国内绝大部分综合性医院的术中TEE监测都是由超声科医师或心内科医师来完成的,然而在美国TEE监测已经被受过培训的心胸专科麻醉医师熟练掌握,请您简单阐述麻醉医师掌握TEE技术的重要意义。   宋海波医师: 首先,我们需要明确麻醉医师所做的术中TEE监测和超声科医师所做的TEE超声学检查是内涵接近,外延不同的两个概念。第一,麻醉科医师所做的TEE监测不是超声科医师工作的简单重复,其监测内容除心脏手术对循环系统的影响之外,还包括非心脏手术对循环系统形态和功能的影响。第二,麻醉医师需要根据手术前后患者病情的变化和手术中即刻的血流动力学特点选择适合麻醉医师使用的标准超声切面,系统地、规范地进行心功能评估,麻醉学对循环系统的评估和监测是以确保手术安全为目的,直接影响麻醉实施的一种专科技术。第三,TEE监测其重要意义在于“监测”两字,“监测”是将关注点放在外科操作前后、麻醉实施前后患者血流动力学发生的变化过程,而不只是关注某个特定时刻的局部心脏解剖结构和血流情况。通过术中可视化地评估血流动力学的数据,根据血流动力学异常的数据和突发事件,及时地进行治疗和处理,甚至指导手术进程,其重要意义在于降低麻醉和手术风险,提高外科手术的安全性和有效性。   心内科医师的工作场所不在手术室,一旦手术中需要紧急的TEE检查,他们赶赴手术室紧急会诊,这个过程需要时间。然而手术过程中情况瞬息万变,需要快捷有效的监测和及时的处理,这一点心内科医师难以做到。且心内科医师对于麻醉药物的使用以及麻醉药物对于患者血流动力学影响的知识也很有限,所以麻醉科医师和心内科医师、超声科医师相比是术中TEE监测的最佳人选。   总的来说,麻醉医师通过术前对患者病情的了解,在术中及时观测患者心脏形态学改变和功能变化,关注患者的通气、氧合、器官灌注的实时变化,结合麻醉药物和心血管活性药物的使用,从而全面、系统地监控外科手术进程,确保患者的安全,提高手术质量。   《门诊》:TEE监测是将超声探头置入患者食管内,从心脏后方向前近距离探查心脏深部结构的技术。麻醉医师掌握TEE技术需要哪些设备和技术支持?   宋海波医师: 我想将这个话题延伸到TEE和TTE两方面来谈,因为这两个技术都是围术期常用的心脏超声检测手段,而且所需的设备和技术支持基本相同。   第一,设备支持。超声主机和超声探头,主机称为医用彩色多普勒超声诊断仪,探头包括经胸心脏超声探头和经食管超声探头。   第二,技术支持。学习TEE监测需要接受系统化的技能培训,经过培训后获得经过相关培训机构认证的培训合格证书,在此基础上获得国家医疗仪器操作资格证书和所在医院医务处的许可和备案。   《门诊》:为了TEE技术推广的系统化和规范化,美国超声协会联合心胸麻醉协会共同发表了第一个为麻醉医师制定的TEE临床培训和实践指南,随后又对此培训指南做了多次修改和更新,目前已有一大批麻醉医师获得NBE颁发的资格证书。请问国内TEE推广培训的途径是什么?   宋海波医师: 首先我们必须清楚地认识到,获得境外培训机构的培训合格证书或资格证书仍然需要获得国家的医疗仪器操作资格证书,才能在境内合法地为患者服务。目前国内现有的培训途径包括境内培训和境外培训两大方面:第一,境内培训主要是在早期开展术中TEE监测已经累积丰富经验,并形成系统而规范的培训体系的教学医院开设的培训班。上述医院利用深厚的临床和教学经验和丰富的病例资源,完善的培训方法以及与国外便捷的沟通途径,迅速达到或者接近境外的培训水准;第二,境外培训是将国内的医师送到国外医院进行培训。这种途径有利有弊,其优势在于这种培训可以与国外成熟的培训对接,但是由于国外医疗制度的限制,国内的医师在国外医院进修学习时没有很多动手实践的机会,这也就限制了他们的学习过程。一些境外学员主动到境内培训,原因是他们的病例太少。也有一些到境外培训的国内学员为了获得境外的合格证书,不得不返回国内,完成规定的病例数,将病例资料提交后方可获得境外的合格证书。我们不建议将国内基层医院的医师送到国外培训,尤其不要去语言沟通有障碍的国家做TEE技术培训。   我们知道TEE技术的学习过程需要麻醉医师培养手眼协调能力并在此基础上积累丰富的决策经验,如果在学习的过程中,麻醉医师不通过这项技能服务于一个患者,就很难得到诊疗决策能力的提升,或者说麻醉医师的岗位意识不强,那么他获得的TEE技术临床应用经验就会受到限制。   TEE临床监测及其培训需要将麻醉实施和超声操作结合起来,我们的目标是让最广大的青年麻醉医师掌握TEE操作技术,那么我们的当务之急是大力发展和提高中国医院自己的培训能力,同时保持和国外优秀培训资源的交流和合作,做到真正意义上的无缝对接,为国内的患者造福。   《门诊》:美国已经有成熟的初级和高级TEE培训大纲,中国的TEE初级和高级培训大纲是参照美国的?还是建设有“中国特色”的TEE培训体系?   宋海波医师: 我首先来回答第二个问题,培训体系的概念远远超过培训大纲,建立TEE培训体系的任务比建立培训大纲更为繁重,培训大纲是培训体系的核心。   目前我们的当务之急是建立中国自己的TEE培训大纲。在与国外的培训基地保持良好沟通的条件下,我们完全可以借鉴国外优秀的培训资源,利用中国的后发优势,结合国外的优秀经验和国内积累的培训经验,建立我们自己的TEE培训大纲。   谈到建设有“中国特色”的TEE培训体系,就不得不谈到国情的不同。第一,中国有全世界最大数量的受训人群,TEE培训资源仍然是非常稀缺的资源,而且大量的以教学为目的的TEE操作会给患者带来没有必要的损失。第二,中国麻醉医师的临床麻醉工作非常繁重,其学习时间也很有限,学习机会非常宝贵。因此我们必须以缩短青年医师临床超声培训的学习曲线为目的,建设规范的临床超声培训体系来完成这项工作。   我个人认为TEE模拟教学,就具有明显的“中国特色”,模拟教学在中国古代医学规范化教学中发挥了作用,例如,北宋王唯一发明的针灸铜人,在针灸技能规范化教学中具有不可替代的作用。四川大学华西医院自主研发的TEE模拟教学系统经过6年的升级完善,已经在TEE模拟培训中得到应用,多次到境外交流获得国内外同行的一致肯定,认为中国同行开发的模拟教学系统可以有效地整合临床病例资料,具有更大的教学价值。实践证明TEE模拟教学与传统教学相比,具有显著的优势,可以在短时间内快速提升学员的操作能力,强化临床思维和空间想象能力,同时还可以规避非诊疗操作带来的潜在的医患矛盾。   《门诊》:四川大学华西医院所设立的TEE培训中心是一个优秀的TEE培训的范例,请您简单介绍贵院TEE培训中心的情况。   宋海波医师: 四川大学华西医院麻醉科主任刘进教授十多年来带领我们始终如一地坚持TEE培训环境的建设,我们科为术中TEE配置的设备包括:3部便携式超声机、3部台式超声机、16只TEE探头、5间心血管麻醉手术室,每年2500例心血管手术全程进行TEE监测。为建立TEE培训中心打下了良好的硬件基础。   其次,刘进教授指导我们开发了TEE模拟教学系统,根据指南和大纲设计了一系列的培训课程,让学员入训早期就建立了良好的心脏空间模型概念,结合华西医院丰富的病例资源(青年医师在心血管麻醉小组轮转3个月可以实践180个左右的病例数),积极培养他们的临床决策能力。我们中心的培训理念是,强化多学科培训环境的建设,强调多学科团队合作下的培训(心血管外科医师、心血管麻醉医师、超声科医师组成的团队);不仅对操作者本人进行手、眼、脑的技能训练,而且培训学员的团队协作,严密的流程,整个团队参与到心血管手术前的讨论,手术中的决策和手术后效果的即刻诊断中,这种理念对于未来全国住院医师培训来说意义重大。   我们的模拟教学系统已经培训了将近80位来自全国各地的学员和一名境外学员,大部分是全国各大医院的技术骨干,还有少部分是大型教学医院的学科带头人,他们都将成为中国麻醉医师术中TEE培训推广的中坚力量。 (责任编辑:姜旭晖)
个人分类: 观点|2026 次阅读|0 个评论
[转载]【网络编程】【JavaScript语言参考手册】
lcj2212916 2014-5-29 23:09
【名稱】:JavaScript语言参考手册 【作者】:--- 【大小】:583K 【格式】:CHM 【語言】:簡體中文 【內容簡介】: 这些方便实用的信息将帮助您了解 JScript 的各个部分。 在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示该标题所包含的项目列表。再从该列表中选择要查看的主题。在打开所选主题后,就可以方便地链接到相关章节。 请尽情浏览 JScript 语言参考的各个部分,你会发现 JScript 语言有多么丰富。 【下載載點】: http://www.400gb.com/file/65545876
1412 次阅读|0 个评论
[转载]覆盖重载隐藏
EnergeticYi 2013-9-7 15:52
C++中重载,覆盖,隐藏的区别 彭海 发表于2009年05月14日 19:24 阅读(0) 评论(0) 分类: 计算机学习 举报 写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide)。在早期的C++书籍中,可能翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的,他们是英语专业的),常常把重载(overload)和覆盖(override)搞错!   我们先来看一些代码及其编译结果。   实例一:      #include stdafx.h   #include iostream.h   class CB   {   public:     void f(int)     {        cout CB::f(int) endl;      }   };   class CD : public CB   {   public:      void f(int,int)     {       cout CD::f(int,int) endl;     }     void test()     {      f(1);     }   };  int main(int argc, char* argv ) {  return 0; }   这么写当然是没问题了,在这里我不多费口舌了,这是很简单的,多态,虚函数,然后什么指向基类的指针指向派生类对象阿,通过引用调用虚函数阿什么的,属性多的很咯,什么??你不明白??随便找本C++的书,对会讲多态和虚函数机制的哦!!   这种情况我们叫覆盖(override)!覆盖指的是派生类的虚拟函数覆盖了基类的同名且参数相同的函数!   在这里,我要强调的是,这种覆盖,要满足两个条件  (a)有virtual关键字,在基类中函数声明的时候加上就可以了  (b)基类CB中的函数和派生类CD中的函数要一模一样,什么叫一模一样,函数名,参数,返回类型三个条件。   有人可能会对(b)中的说法质疑,说返回类型也要一样??   是,覆盖的话必须一样,我试了试,如果在基类中,把f的声明改成virtual int f(int),编译出错了   error C2555: 'CD::f' : overriding virtual function differs from 'CB::f' only by return type or calling convention   所以,覆盖的话,必须要满足上述的(a)(b)条件   那么如果基类CB中的函数f有关键字virtual ,但是参数和派生类CD中的函数f参数不一样呢, 实例三: #include stdafx.h #include iostream.h class CB {  public:    virtual void f(int)    {      cout CB::f(int) endl;    } } ; class CD : public CB { public:    void f(int,int)   {     cout CD::f(int,int) endl;   }   void test()   {      f(1);   } } ; int main(int argc, char* argv[]) { return 0; } 编译出错了, error C2660: 'f' : function does not take 1 parameters   咦??好面熟的错??对,和实例一中的情况一样哦,结论也是基类中的函数被隐藏了。   通过上面三个例子,得出一个简单的结论 如果基类中的函数和派生类中的两个名字一样的函数f 满足下面的两个条件 (a)在基类中函数声明的时候有virtual关键字 (b)基类CB中的函数和派生类CD中的函数一模一样,函数名,参数,返回类型都一样。 那么这就是叫做覆盖(override),这也就是虚函数,多态的性质 那么其他的情况呢??只要名字一样,不满足上面覆盖的条件,就是隐藏了。 下面我要讲最关键的地方了,好多人认为,基类CB中的f(int)会继承下来和CD中的f(int,int)在派生类CD中构成重载,就像实例一中想像的那样。   对吗?我们先看重载的定义   重载(overload):   必须在一个域中,函数名称相同但是函数参数不同,重载的作用就是同一个函数有不同的行为,因此不是在一个域中的函数是无法构成重载的,这个是重载的重要特征   必须在一个域中,而继承明显是在两个类中了哦,所以上面的想法是不成立的,我们测试的结构也是这样,派生类中的f(int,int)把基类中的f(int)隐藏了   所以,相同的函数名的函数,在基类和派生类中的关系只能是覆盖或者隐藏。   在文章中,我把重载和覆盖的定义都给了出来了,但是一直没有给隐藏的定义,在最后,我把他给出来,这段话是网上google来的,比较长,你可以简单的理解成,在派生类域中,看不到基类中的那个同名函数了,或者说,是并没有继承下来给你用,呵呵,如实例一 那样。    隐藏(hide): 指的是派生类的成员函数隐藏了基类函数的成员函数.隐藏一词可以这么理解:在调用一个类的成员函数的时候,编译器会沿着类的继承链逐级的向上查找函数的定义,如果找到了那么就停止查找了,所以如果一个派生类和一个基类都有同一个同名(暂且不论参数是否相同)的函数,而编译器最终选择了在派生类中的函数,那么我们就说这个派生类的成员函数隐藏了基类的成员函数,也就是说它阻止了编译器继续向上查找函数的定义
2 次阅读|0 个评论
科学网博文的文字云
热度 1 longxie1983 2012-8-20 17:42
科学网博文的文字云
前一篇博文,可视化了一下科学网博文的网络,这次玩玩博文内容。 对每篇博文选10个左右的关注字,然后统计这些关键字出现的频次。选最高的150关键字左右构建文字云(使用 http://www.tagxedo.com/ ) 热门博文 精选博文 最后,要感谢张继来同学在数据清洗上的卓越工作
个人分类: 科研工具|12264 次阅读|5 个评论
[转载]哈希结构学习
sndccc 2012-6-5 10:33
哈希元素包含两部分,一个关键字和一个值,以%(百分号)标识。 一、将数据填入哈希结构 对哈希元素赋值:$HashName{'key'}=value或$HashName{key}=value; 对哈希结构赋值:%HashName=('key','value',...)或使用=运算符%HashName=('key'='value',...)或%HashName=(key='value',...)。 二、从哈希结构中取数据 $HashNam('key')。 keys函数返回的哈希结构的所有关键字。 foreach $HashName (keys %HashName){}用以遍历整个哈希结构。 values函数返回哈希结构中存放的所有值。 reverse函数将交换哈希结构key和value的顺序,重复的value值被忽略。 三、列表与哈希结构 当哈希结构用于列表环境中,哈希结构重新变为关键字和值组成的普通列表。 几个哈希结构可以组合成一个哈希结构,若关键字有重复的,则后一关键字值对取代前一对的值。 四、哈希结构的补充说明 1.测试哈希结构中的关键字 exists函数用于测试哈希结构中是否存在关键字。 2.从哈希结构中删除关键字 delete函数用于从哈希结构中删除关键字。 五、哈希结构的用处 1.确定频率分布 记录频度 while() { while(/(\w *)/g) { $Words{$1}++; } } 查看频度 foreach(keys %Words) { print " $_ $Words{$_}\n"; } 2.在数组中寻找唯一元素 %seen = (); foreach(@fishwords) { $seen{$_}=1; } @uniquewords=keys %seen; 3.寻找数组间的交汇部分和不同部分 寻找交汇部分 %seen=(); foreach(@stars) { $seen{$_}=1; } @intersection=grep{$seen{$_},@pols} 寻找不同部分 @intersection=grep{!$seen{$_},@pols} 4.哈希结构排序 按字母顺序排列:sort keys %words 按频率顺序排列:sort {$words{$a} = $words{$b} keys %words}。 转载自: http://hankundev.blog.sohu.com/76183942.html
2218 次阅读|0 个评论
[转载]进化树的构建
wal2020 2012-5-2 15:08
序列比对建议用ClustalX 建NJ或MP树,用MEGA就可以了,非常方便 若要建ML树推荐用phyML 建Bayes树推荐用Parallel MrBayes @ BioHPC 如果不是专业建树的话,MEGA足够用了,建议参考下面这篇文章: 一、引言 开始动笔写这篇短文之前,我问自己,为什么要写这样的文章?写这样的文章有实际的意义吗?我希望能够解决什么样的问题?带着这样的疑惑,我随手在丁香园(DXY)上以关键字“进化 分析 求助”进行了搜索,居然有289篇相关的帖子(2006年9月12日)。而以关键字“进化分析”和“进化”为关键字搜索,分别找到2,733和7,724篇相关的帖子。考虑到有些帖子的内容与分子进化无关,这里我保守的估计,大约有 3,000~4,000篇帖子的内容,是关于分子进化的。粗略地归纳一下,我大致将提出的问题分为下述的几类: 1.涉及基本概念 例如,“分子进化与生物进化是不是一个概念”,“关于微卫星进化模型有没有什么新的进展”以及“关于Kruglyak的模型有没有改进的出现”,等等。 2.关于构建进化树的方法的选择 例如,“用boostrap NJ得到XX图,请问该怎样理解?能否应用于文章?用boostrap test中的ME法得到的是XXX树,请问与上个树比,哪个更好”,等等。 3.关于软件的选择 例如,“想做一个进化树,不知道什么软件能更好的使用且可以说明问题,并且有没有说明如何做”,“拿到了16sr RNA数据,打算做一个系统进化树分析,可是原来没有做过这方面的工作啊,都要什么软件”,“请问各位高手用ClustalX做出来的进化树与 phylip做的有什么区别”,“请问有做过进化树分析的朋友,能不能提供一下,做树的时候参数的设置,以及代表的意思。还有各个分支等数值的意思,说明的问题等”,等等。 4.蛋白家族的分类问题 例如,“搜集所有的关于一个特定domain的序列,共141条,做的进化树不知具体怎么分析”,等等。 5.新基因功能的推断 例如,“根据一个新基因A氨基酸序列构建的系统发生树,这个进化树能否说明这个新基因A和B同源,属于同一基因家族”,等等。 6.计算基因分化的年代 例如,“想在基因组水平比较两个或三个比较接近物种之间的进化年代的远近,具体推算出他们之间的分歧时间”,“如何估计病毒进化中变异所需时间”,等等。 7.进化树的编辑 例如生成的进化树图片,如何进行后续的编辑,比如希望在图片上标注某些特定的内容,等等。 由于相关的帖子太多,作者在这里对无法阅读全部的相关内容而致以歉意。同时,作者归纳的这七个问题也并不完全代表所有的提问。对于问题1所涉及到的基本的概念,作者推荐读者可参考由Masatoshi Nei与Sudhir Kumar所撰写的《分子进化与系统发育》(Molecular Evolution and Phylogenetics)一书,以及相关的分子进化方面的最新文献。对于问题7,作者之一lylover一般使用Powerpoint进行编辑,而 Photoshop、Illustrator及Windows自带的画图工具等都可以使用。 这里,作者在这里对问题2-6进行简要地解释和讨论,并希望能够初步地解答初学者的一些疑问。 二、方法的选择 首先是方法的选择。基于距离的方法有UPGMA、ME(Minimum Evolution,最小进化法)和NJ(Neighbor-Joining,邻接法)等。其他的几种方法包括MP(Maximum parsimony,最大简约法)、ML(Maximum likelihood,最大似然法)以及贝叶斯(Bayesian)推断等方法。其中UPGMA法已经较少使用。 一般来讲,如果模型合适,ML的效果较好。对近缘序列,有人喜欢MP,因为用的假设最少。MP一般不用在远缘序列上,这时一般用NJ或ML。对相似度很低的序列,NJ往往出现Long-branch attraction(LBA,长枝吸引现象),有时严重干扰进化树的构建。贝叶斯的方法则太慢。对于各种方法构建分子进化树的准确性,一篇综述(Hall BG. Mol Biol Evol 2005, 22(3):792-802)认为贝叶斯的方法最好,其次是ML,然后是MP。其实如果序列的相似性较高,各种方法都会得到不错的结果,模型间的差别也不大。 对于NJ和ML,是需要选择模型的。对于各种模型之间的理论上的区别,这里不作深入的探讨,可以参看Nei的书。对于蛋白质序列以及DNA序列,两者模型的选择是不同的。以作者的经验来说,对于蛋白质的序列,一般选择Poisson Correction(泊松修正)这一模型。而对于核酸序列,一般选择Kimura 2-parameter(Kimura-2参数)模型。如果对各种模型的理解并不深入,作者并不推荐初学者使用其他复杂的模型。 Bootstrap几乎是一个必须的选项。一般Bootstrap的值70,则认为构建的进化树较为可靠。如果Bootstrap的值太低,则有可能进化树的拓扑结构有错误,进化树是不可靠的。 对于进化树的构建,如果对理论的了解并不深入,作者推荐使用缺省的参数。需要选择模型的时候(例如用NJ或者ML建树),对于蛋白序列使用Poisson Correction模型,对于核酸序列使用Kimura-2参数模型。另外需要做Bootstrap检验,当Bootstrap值过低时,所构建的进化树其拓扑结构可能存在问题。并且,一般推荐用两种不同的方法构建进化树,如果所得到的进化树类似,则结果较为可靠。 三、软件的选择 表1中列出了一些与构建分子进化树相关的软件。 构建NJ树,可以用PHYLIP(写得有点问题,例如比较慢,并且Bootstrap检验不方便)或者MEGA。MEGA是Nei开发的方法并设计的图形化的软件,使用非常方便。作者推荐MEGA软件为初学者的首选。虽然多雪列比对工具ClustalW/X自带了一个NJ的建树程序,但是该程序只有p- distance模型,而且构建的树不够准确,一般不用来构建进化树。 构建MP树,最好的工具是PAUP,但该程序属于商业软件,并不对学术免费。因此,作者并不建议使用PAUP。而MEGA和PHYLIP也可以用来构建进化树。这里,作者推荐使用MEGA来构建MP树。理由是,MEGA是图形化的软件,使用方便,而PHYLIP则是命令行格式的软件,使用较为繁琐。对于近缘序列的进化树构建,MP方法几乎是最好的。 构建ML树可以使用PHYML,速度最快。或者使用Tree-puzzle,速度也较快,并且该程序做蛋白质序列的进化树效果比较好。而PAML则并不适合构建进化树。ML的模型选择是看构出的树的likelihood值,从参数少,简单的模型试起,到likelihood值最大为止。ML也可以使用 PAUP或者PHYLIP来构建。这里作者推荐的工具是BioEdit。BioEdit集成了一些PHYLIP的程序,用来构建进化树。Tree- puzzle是另外一个不错的选择,不过该程序是命令行格式的,需要学习DOS命令。PHYML的不足之处是没有win32的版本,只有适用于64位的版本,因此不推荐使用。值得注意的是,构建ML树,不需要事先的多序列比对,而直接使用FASTA格式的序列即可。 贝叶斯的算法以MrBayes为代表,不过速度较慢。一般的进化树分析中较少应用。由于该方法需要很多背景的知识,这里不作介绍。 表1 构建分子进化树相关的软件 软件 网址 说明 ClustalX 图形化的多序列比对工具 ClustalW 命令行格式的多序列比对工具 GeneDoc 多序列比对结果的美化工具(可以导入fasta格式的文件,出来的图可用于发表,我用过) BioEdit 序列分析的综合工具 MEGA 图形化、集成的进化分析工具,不包括ML PAUP 商业软件,集成的进化分析工具 PHYLIP 免费的、集成的进化分析工具 PHYML 最快的ML建树工具 PAML ML建树工具 Tree-puzzle 较快的ML建树工具 MrBayes 基于贝叶斯方法的建树工具 MAC5 基于贝叶斯方法的建树工具 TreeView 进化树显示工具 (加红色标注的为最通用的分析软件) 需要注意的几个问题是,其一,如果对核酸序列进行分析,并且是CDS编码区的核酸序列,一般需要将核酸序列分别先翻译成氨基酸序列,进行比对,然后再对应到核酸序列上。这一流程可以通过MEGA 3.0以后的版本实现。MEGA3现在允许两条核苷酸,先翻成蛋白序列比对之后再倒回去,做后续计算。 其二,无论是核酸序列还是蛋白序列,一般应当先做成 FASTA格式。FASTA格式的序列,第一行由符号“”开头,后面跟着序列的名称,可以自定义,例如user1,protein1等等。将所有的FASTA格式的序列存放在同一个文件中。文件的编辑可用Windows自带的记事本工具,或者EditPlus(google搜索可得)来操作。 另外,构建NJ或者MP树需要先将序列做多序列比对的处理。作者推荐使用ClustalX进行多序列比对的分析。多序列比对的结果有时需要后续处理并应用于文章中,这里作者推荐使用GeneDoc工具。而构建ML树则不需要预先的多序列比对。 因此,作者推荐的软件组合为:MEGA + ClustalX + GeneDoc + BioEdit。 四、数据分析及结果推断 一般碰到的几类问题是,(1)推断基因/蛋白的功能;(2)基因/蛋白家族分类;(3)计算基因分化的年代。关于这方面的文献非常多,这里作者仅做简要的介绍。 推断基因/蛋白的功能,一般先用Blast工具搜索同一物种中与不同物种的同源序列,这包括直向同源物(ortholog)和旁系同源物(paralog)。如何界定这两种同源物,网上有很多详细的介绍,这里不作讨论。然后得到这些同源物的序列,做成FASTA格式的文件。一般通过NJ构建进化树,并且进行Bootstrap分析所得到的结果已足够。如果序列近缘,可以再使用MP构建进化树,进行比较。如果序列较远源,则可以做ML树比较。使用两种方法得到的树,如果差别不大,并且Bootstrap总体较高,则得到的进化树较为可靠。 基因/蛋白家族分类。这方面可以细分为两个问题。一是对一个大的家族进行分类,另一个就是将特定的一个或多个基因/蛋白定位到已知的大的家族上,看看属于哪个亚家族。例如,对驱动蛋白(kinesin)超家族进行分类,属于第一个问题。而假如得到一个新的驱动蛋白的序列,想分析该序列究竟属于驱动蛋白超家族的14个亚家族中的哪一个,则属于后一个问题。这里,一般不推荐使用MP的方法。大多数的基因/蛋白家族起源较早,序列分化程度较大,相互之间较为远源。这里一般使用NJ、ME或者ML的方法。 计算基因分化的年代。这个一般需要知道物种的核苷酸替代率。常见物种的核苷酸替代率需要查找相关的文献。这里不作过多的介绍。一般对于这样的问题,序列多数是近缘的,选择NJ或者MP即可。 如果使用MEGA进行分析,选项中有一项是“Gaps/Missing Data”,一般选择“Pairwise Deletion”。其他多数的选项保持缺省的参数。 五、总结 在实用中,只要方法、模型合理,建出的树都有意义,可以任意选择自己认为好一个。最重要的问题是:你需要解决什么样的问题?如果分析的结果能够解决你现有的问题,那么,这样的分析足够了。因此,在做进化分析前,可能需要很好的考虑一下自己的问题所在,这样所作的分析才有针对性。 六、致谢 本文由mediocrebeing在2005年9月8日所发起的讨论《关于建树的经验》扩充、修改而来。文章的作者按原贴ID出现先后排名,由 lylover执笔。作者同时感谢所有参与讨论的战友。作者lylover感谢中国科大细胞动力学实验室的金长江博士所给的一些有益的建议。 来源:丁香园(mediocrebeing, rodger, lylover , klaus, oldfish, yzwpf)
5300 次阅读|0 个评论
[转载]tag与关键字区别
baiyunrui 2011-11-21 15:25
这是jiangwei在我的 webnote 上的留言: 国内并非没有人研究tag技术,以《Tags,无序,分类和家族相似》这篇文章为例,我用计算机自动提炼的tag如下:信息分类 检索语言 分类检索 Tag 维特根施坦 标签△ 关键字△ 逻辑△ 家族△ 本质 实证主义△ ,觉得计算机提炼得如何?特别指出的是:信息分类是原文中没有的词语,这个tag是计算机自动抽象概括出来的主题。 这是我的回复: 电脑提炼的只能算关键字或主题词,不是tag。比如同样是你提到的那篇文章,如果是人来给它设置tag,可能会是:tagsresearch, opinion, folksonomy, etc. tag表现的是普通人的思维而不是机器的思维,它要求的不是精确,而是方便自己找到。 我之前也 说过 ,“很多人习惯性地把tag理解成关键字,实际上tag不是关键字。”比如机器就没有办法提取一张照片的关键字,但人可以给它设定一个或多个tag。 zheng 也谈到过tag与关键字的问题: 标签和关键词比起来,除了更近乎个人的知识体系之外,在功能上也强大的多。标签和目录在功能上一致,而关键词却不同于目录,因此也不同于标签。 但是在信息的索引找寻上,标签和关键词却有相通的地方。关键词标注内容的主题,而标签则是在对内容的个人理解上的私人标注,未必针对的是主题,比如我可能关注的是时间,或者是内容中某个和通篇主题无关的观点。因此标签的设定要比关键词自由的多,也要方便得多,就好像我把东西到处乱放,但我总能找到我需要的东西。因为那是我自己地盘的坐标。标签就是自己关注/存储内容的坐标。 比如中网的老板万平国的办公桌上总是乱七八糟,东西堆得像座山,但他总能找到他想找的东西,不管是一本书,还是一封信,因为他已经在脑子里为那个东西贴上了标签,他知道那东西在哪儿。但别人把他的桌子收拾干净以后,他却发现,很多东西找不到了。 zheng还 认为 ,“就算是有着悠久历史的分类法下的信息,它所能展现的,远远落后于信息本身所产生的,因为它有着严重的时滞。” 人的思维常常是无序的,跳跃的,同时也是活跃的;但严格的分类法把这种无序的状态进行规整化以后,同时也损失了这种无序所承载的信息量。关键字技术当然是有用的,基于文章的语义分析未来可能产生大量有价值的应用。但,人并不总是需要精确。就像你爱上了一个姑娘,并不是因为她完全符合你事先确定的那些规格,其中一定有很多不可言说的成分。 tag是人产生的,又是通过机器实现的,所以它天然地带有人和机器的双重性格。它无法替代关键字和主题词,但同时,机械的关键字和主题词也无法替代tag。 Update 1: 刚刚又在MSN上跟jiangwei聊了几句,他在政府部门从事语义挖掘方面的工作。像很多人一样,他或许也认为tag这种民间分类的价值被高估了。不过我的看法是,语言学和图书馆学关注的中心是物,是无生命的文本,而民间分类关注的中心是人,tag是一种人类活动,而不完全是一种分类方法。 Update 2: xuer 对tag与关键字的评论,是我见过的最形象的评论: Tag与关键字之别不仅仅是人机之别,说到底还是人与人的主客观念之别,都是人的东西,机器只是一种反映,无非:Tag是以主观之,关键字是以客观之;Tag是我的,关键字是别人的;Tag用“心”,关键字用“聪明”;Tag是乐,关键字是音;Tag是曲,关键字是词;Tag是诗歌,关键字是文字;Tag是情绪的,关键字是理智的;Tag是自由的,关键字是必然的;Tag是可爱的,关键字是可信的; Tag是“灯”,关键字是“镜子”……窃以为二者在帮助我们认识自我和认识世界时相辅相成,相得益彰,是不二的! 事实上,上次在读ooof对Isaac的访谈中提到的google策略与语义网策略时已隐约有这方面的感受。
1567 次阅读|0 个评论
[转载]怎样在Word2007表格中按英文字母大小写排序
zhao1198 2011-11-21 12:09
http://jingyan.baidu.com/article/f54ae2fcf225921e92b849c3.html 如果在Word2007表格中含有开头字母大小写不一的大量英文单词,并且对于开头字母相同的单词按照小写在前大写在后的顺序排序,则可以启用区分大小写的排序方式,操作步骤如下所述: 步骤/方法 第1步,打开Word2007文档窗口,在需要进行数据排序的表格中单击任意单元格。在“表格工具”功能区切换到“布局”选项卡,并单击“数据”分组中的“排序”按钮,如图2009021318所示。 图2009021318 单击“排序”按钮 第2步,打开“排序”对话框,分别设置“主要关键字”、“次要关键字”和“第三关键字”选项(详细设置方法请参阅教程《在Word2007表格中对数据进行排序》),并单击“选项”按钮,如图2009021319所示。 图2009021319 单击“选项”按钮 第3步,在打开的“排序选项”对话框中,选中“区分大小写”复选框,并单击“确定”按钮,如图2009021320所示。 图2009021320 选中“区分大小写”复选框 第4步,返回“排序”对话框,直接单击“确定”按钮即可对Word表格数据进行排序。
个人分类: MS|2284 次阅读|0 个评论
[转载]Restraint & Constraint in GMX
yuanhui80 2011-11-15 18:07
在分子模拟中,这两个词都表示限制,但是意义不同。通俗点讲,受到 Restraint 的分子或原子原则上可以运动;受到 Constraint 的分子原子原则上不能运动。 Restraint 通常的实现方法是给目标施加一个弹性势能,当目标偏离平衡位置时,弹性势能使目标恢复到平衡位置。Constraint 则直接使目标固定住,则施加无限大的弹性势能。 在 MD 软件如Gromacs中,Restraint 定义的弹性势能直接施加到指定原子上,并在 pores.itp 文件中列出。当 MDP (Molecular Dynamics Parameters) 文件使用关键字 “define = -DPOSRES” 时,引用该 pores.itp 文件。 Constraint 的实现则在MPD文件中定义 ”freezegrps “ 关键字,把需要进行 Constraint 的分子或原子直接添加到关键字中。 BTW: GMX 中 Restraint 和 Constraint 都具有方向性,即限制可以在某一个方向上实现。其他模拟软件雷同。
2093 次阅读|0 个评论
[转载]指针类型和存储区的关系
zhangjunjie 2011-11-1 18:14
指针类型和存储区的关系 对变量进行声明时可以指定变量的存储类型如: uchar data x和data uchar x相等价都是在内ram区分配一个字节的变量。 同样对于指针变量的声明,因涉及到指针变量本身的存储位置和指针所指向的存储区位置不同而进行相应的存储区类型关键字的 使用如: uchar xdata * data pstr 是指在内ram区分配一个指针变量("*"号后的data关键字的作用),而且这个指针本身指向xdata区("*"前xdata关键字的作用), 可能初学C51时有点不好懂也不好记。没关系,我们马上就可以看到对应“*”前后不同的关键字的使用在编译时出现什么情况。 ...... uchar xdata tmp ; //在外ram区开辟10个字节的内存空间,地址是外ram的0x0000-0x0009 ...... 第1种情况: uchar data * data pstr; pstr="tmp"; 首先要提醒大家这样的代码是有bug的, 他不能通过这种方式正确的访问到tmp空间。 为什么?我们把编译后看到下面的汇编 代码: MOV 0x08,#tmp(0x00) ;0x08是指针pstr的存储地址 看到了吗!本来访问外ram需要2 byte来寻址64k空间,但因为使用data关键字(在"*"号前的那个),所以按KeilC编译环境来说 就把他编译成指向内ram的指针变量了,这也是初学C51的朋友们不理解各个存储类型的关键字定义而造成的bug。特别是当工程中的 默认的存储区类为large时,又把tmp 声明为uchar tmp 时,这样的bug是很隐秘的不容易被发现。 第2种情况: uchar xdata * data pstr; pstr = tmp; 这种情况是没问题的,这样的使用方法是指在内ram分配一个指针变量("*"号后的data关键字的作用),而且这个指针本身指向 xdata区("*"前xdata关键字的作用)。编译后的汇编代码如下。 MOV 0x08,#tmp(0x00) ;0x08和0x09是在内ram区分配的pstr指针变量地址空间 MOV 0x09,#tmp(0x00) 这种情况应该是在这里所有介绍各种情况中效率最高的访问外ram的方法了,请大家记住他。 第3种情况: uchar xdata * xdata pstr; pstr="tmp"; 这中情况也是对的,但效率不如第2种情况。编译后的汇编代码如下。 MOV DPTR, #0x000A ;0x000A,0x000B是在外ram区分配的pstr指针变量地址空间 MOV A, #tmp(0x00) MOV @DPTR, A INC DPTR MOV A, #tmp(0x00) MOVX @DPTR, A 这种方式一般用在内ram资源相对紧张而且对效率要求不高的项目中。 第4种情况: uchar data * xdata pstr; pstr="tmp"; 如果详细看了第1种情况的读者发现这种写法和第1种很相似,是的,同第1 种情况一样这样也是有bug的,但是这次是把pstr分 配到了外ram区了。编译后的汇编代码如下。 MOV DPTR, #0x000A ;0x000A是在外ram区分配的pstr指针变量的地址空间 MOV A, #tmp(0x00) MOVX @DPTR, A 第5种情况: uchar * data pstr; pstr="tmp"; 大家注意到"*"前的关键字声明没有了,是的这样会发生什么事呢?下面这么写呢!对了用齐豫的一首老歌名来说就是 “请跟我 来”,请跟我来看看编译后的汇编代码,有人问这不是在讲C51吗?为什么还要给我们看汇编代码。C51要想用好就要尽可能提升C51 编译后的效率,看看编译后的汇编会帮助大家尽快成为生产高效C51代码的高手的。还是看代码吧! MOV 0x08, #0X01 ;0x08-0x0A是在内ram区分配的pstr指针变量的地址空间 MOV 0x09, #tmp(0x00) MOV 0x0A, #tmp(0x00) 注意:这是新介绍给大家的,大家会疑问为什么在前面的几种情况的pstr指针变量都用2 byte空间而到这里就用3 byte空间了 呢?这是KeilC的一个系统内部处理,在KeilC中一个指针变量最多占用 3 byte空间,对于没有声明指针指向存储空间类型的指针, 系统编译代码时都强制加载一个字节的指针类型分辩值。具体的对应关系可以参考KeilC的help中C51 User's Guide。 第6种情况: uchar * pstr; pstr="tmp"; 这是最直接最简单的指针变量声明,但他的效率也最低。还是那句话,大家一起说好吗!编译后的汇编代码如下。 MOV DPTR, #0x000A ;0x000A-0x000C是在外ram区分配的pstr指针变量地址空间 MOV A, #0x01 MOV @DPTR, A INC DPTR MOV DPTR, #0x000A MOV A, #tmp(0x00) MOV @DPTR, A INC DPTR MOV A, #tmp(0x00) MOVX @DPTR, A 这种情况很类似第5种和第3种情况的组合,既把pstr分配在外ram空间了又增加了指针类型的分辨值。 51系列中data,idata,xdata,pdata的区别 转载请注明出处,文章来源: http://www.threeway.cc/sitecn/InformationInfo.aspx?tid=1380pid=2139
个人分类: C8051|1485 次阅读|0 个评论
《软件》杂志(Computer Engineering & Software)2011-5;2011-6
geneculture 2011-10-13 02:20
《软件》杂志(Computer Engineering & Software)2011-5;2011-6
(乙方)------------- (一系列的中介方) --------- (甲方) Ⅰ . 机器语言 ≈形式语言≈程序语言≈计算语言≈ 自然语言 Ⅱ . 数学语言 ------------------- ∪ ------------------ 日常语言 Ⅰ和Ⅱ两种路径,已把究竟是复杂还是简单的Ⅰ和Ⅱ两种思维进路说得再清楚不过了。 ZouXiaohui 1:08:22 协同智能计算系统即“第三脑智”在理解自然语言方面独一无二的优势已表述得非常清楚了。 ZouXiaohui 1:09:58 中文标题 协同智能计算系统——理论模型及其应用 关键字 计算机;间接计算;间接形式化;软件 摘要 http://www.ccomsoft.com/news.asp?id=245 全文 http://www.ccomsoft.com/kanlist_c.asp?id=306 http://www.ccomsoft.com/kanlist_c.asp?id=306 图 1 协同智能计算模型及其原理和应用的直观示意图 图 2 协同智能计算模型及其汉语形式化计算实例示意图 图 3 自然语言文本理解双重技术路线中第二路径的特征示意图 图 4 收敛与发散、搜索与穷举在 n 2 矩阵格中均可表达的示意图 图 5 以汉语或中文组字成语的特点为例的语言分析示意图 图 6 以做和信两字为例揭示双语信息处理中取值与置信的关系示意图 图 7 以英汉汉英双语解释和双向机器翻译策略为例的语言处理示意图 图 8 仅以做这个字为例来说明双语信息处理中如何取值计算的示意图 全文 单击此处 附件下载观看 http://www.cnki.net/kcms/detail/12.1151.TP.20111004.1537.001.html 中文标题 间接计算模型和间接形式化方法 关键字 计算理论; 形式理论; 人机交互; 协同计算 摘要 http://www.ccomsoft.com/news.asp?id=241 全文 单击此处 附件下载观看 图 1 与优化数据结构和好算法配套的文化基因系统工程蓝图 图 2 理想分类集及其蕴含的各种可能的分合机理直观示意图 图 3 信息基本命题 示意图 图 4 从 a 到 c 逐渐收敛的孪生图灵机原理 示意图 图 5 实现间接形式化的言(字)和语(字组)关系数据库 图 6 针对八类数据的间接形式化方法原理 示意图 http://www.ccomsoft.com/kanlist_c.asp?id=272 http://www.ccomsoft.com/kanlist_c.asp?id=272 http://acad.cnki.net/kns55/oldNavi/n_CNKIPub.aspx?naviid=110BaseID=RJZZNaviLink=%e8%bd%af%e4%bb%b6 http://www.cnki.net/kcms/detail/detail.aspx?filename=RJZZ201105003DBName=cjfqtotaldbcode=cjfq
个人分类: 《软件》杂志|2211 次阅读|0 个评论
关键字竞价广告预算分配策略
kejidaobao 2011-2-12 13:27
2000年,关键字竞价广告作为搜索引擎营销领域的一种新型广告模式出现在大众视野中。根据HIS Screen Digest Research 2011年1月的统计结果,截止2010年底,全球搜索引擎广告市场规模已达304亿美元。 关键字竞价作为一种按点击付费的广告模式,其优点是能够进行目标人群定位,并采取有针对性的营销策略,以较少的支出获取较好的营销效果。 关键字竞价广告的基本机制和商业模式决定了推广活动的复杂性。参与者数量、出价的变化以及搜索引擎市场的快速发展等因素使关键字竞价活动具有动态性和不确定性。越来越多的学者意识到,关键字竞价是在一个不完全信息的博弈环境下进行的。 广告主在使用关键字竞价广告进行推广时,预算分配与调整贯穿于整个推广生命周期,而且往往同时需要在多个竞价推广系统进行推广。如何分配广告预算以获得最大收益成为一个至关重要的问题。合理有效的预算分配策略有助于广告主节约成本,提升广告效果,增加收益。 中国科学院杨彦武、王飞跃等认为,在关键字竞价广告中,预算分配不是一个孤立的问题,而是与关键字投标价、投资组合和广告投放目标预测等其他策略高度依赖。一个有效的关键字竞价广告预算分配策略需要在3个层次上进行综合考虑。在推广系统层次,需要将总预算分配到每个搜索引擎推广市场;在广告计划层次,广告主需要将预算分配到一系列推广时段;在关键字层次,需要根据广告的推广效果对预算进行实时调整。这3个层次的预算分配活动相互联系,互相影响,形成一个闭环回馈的过程性策略。 本期第18~24页刊登了杨彦武、王飞跃等的论文“跨搜索引擎关键字竞价广告预算分配策略”,封面图片为关键字竞价广告预算分配示意图,由该课题组张培训提供。 (责任编辑 代丽)
个人分类: 栏目:封面图片说明|3420 次阅读|0 个评论
关键字与科学网的博客
lhj701 2010-12-11 16:55
科学网的博客丰富多彩、内容繁多,很想通过一篇博客看到一系列相关内容的博客,就像读一篇论文,根据论文的引用文献可以搜寻到一大批相关的文献,从而可以快速看到一个问题的全貌。 科学网的关键字索引好像在实现这个功能,另外自己感觉好像关键字是越少越好。是不是这样呢? 另外一个问题是如何选择关键字?或者说选择那些与预先设定的关键字接近的关键字? 当然,如果是那样的话,能不能设计一些智能化的关键字选择提示,比如根据博客题目,提示一些关键字? 如果您知道问题的答案,请留言,谢谢!
个人分类: 健康|3158 次阅读|3 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-10 08:00

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部