圣斗士之家

  • 1个提问
  • 1067个回答
  • 0个收藏
  • 0个赞成
简介: 该用户没有自我介绍
  • 如何创建额外域和子域 

    0
    0
    主域与子域创建好后,它们就自动有了双向的信任关系。你注销一下应该可以看到,在区域选择时可用看到两个,一个是主域的域名、一个是子域的域名,你在主域上创建一个用户zhangsan,zhangsan可以在子域登录,但区域选择要选主域的域名。同样,在子域创建的用户lisi,也可以在主域上登录,选子域域名。
    10-01-09 编程 匿名
    2回答
  • 如何把excel里的纵列转换成横列 

    0
    0
    如果需要要将Excel按行(列)排列的数据,转换为按列(行)排列,可以通过“选择性粘贴”来实现。

      选中需要转换的数据区域,执行一下“复制”操作;选中保存数据的第一个单元格,执行“编辑选择性粘贴”命令,打开“选择性粘贴”对话框,选中其中的“转置”选项,确定返回即可。
    7回答
  • 调用fread的返回值,怎么调用? 

    0
    0
    realRead = fread(buf,item,count,fp)    (每次读item大小的数据块,分count次来读。)
    而是返回的是成功有效的读取的item元素的个数,而成功读入的字节数则是realRead * sizeof(item)
    一般说来realRead 是小于count的,很巧的情况就刚好为count.除非文件大小刚好为item大小的整数倍。
    返回的是真实读入item元素的个数,虽然读了count次,但是真正读到的有效个数为realRead个
    真实读入字节数就为realRead*sizeof(item)  
    RETURN VALUE
          fread  and  fwrite  return the number of items successfully read or written (i.e., not the number of
          characters).  If an error occurs, or the end-of-file is reached, the return value is  a  short  item
          count (or zero).
          fread does not distinguish between end-of-file and error, and callers must use feof(3) and ferror(3)
          to determine which occurred.
    fread(从文件流读取数据)  

    表头文件  #include<stdio.h>

    定义函数  size_t fread(void * ptr,size_t size,size_t count,FILE * stream);

    函数说明  fread()用来从文件流中读取数据。参数stream为已打开的文件指针,参数ptr 指向欲存放读取进来的数据空间,读取的字节数以参数size*count来决定。
    Fread()会返回实际读取到的count数目,如果此值比参数count来得小,则代表可能读到了文件尾了或者有错误发生(前者几率大),这时必须用feof()或ferror()来决定发生什么情况。

    返回值  返回实际读取到的count数目。
    fread返回的不是字节数,
    当且仅当下面这么用的时候,返回值才是字节数(当然因为恰好一个数据块大小为1个字节,相当于realRead*1)
    char buff[size];
    FILE *fp;
    ...
    realRead = fread(buff, 1, size, fp);
    ...
    如果是: fread(buff, size, 1, fp)
    ?......
    10-01-09 电脑软件 编程
    3回答
  • 程序可以存储在dsp中吗 

    0
    0
    程序存储器,数据存储器和I/O空间并不是属于片内存储器或者片外存储器,应该是片内片外的总和,也就是C54x的存储器空间的总和。而在这三个存储空间中任一个里,RAM,ROM,EPROM,EEPROM或者存储映象外围设备都可以驻留在片内或者片外,并且这三个空间的总地址范围为192K,就是你所说的64K * 3,所以这三个空间都是64K。(以上所注明的为TMS320C54x)

    0
    09-11-09 电脑软件 匿名
    2回答
  • 如何解析域名?  

    0
    0
     一个域名一般由英文字母和阿拉伯数字以及横"-"组成,最长可达67个字符(包括后缀),并且字母的大小写没有区别,每个层次最长不能超过22个字母。这些符号构成了域名的前缀,主体和后缀等几个部分,组合在一起构成一个完整的域名。
      以一个常见的域名为例说明。比如域名www.baidu.com ,是由二部分组成,“baidu”是这个域名的主体,也是主机名,而最后的“com”则是该域名的后缀,代表的这是一个com国际域名。而前面的www.是网络名,baidu.com 为www的域名。
      近年来,一些国家也纷纷开发使用采用本民族语言构成的域名,如德语,法语等。我国也开始使用中文域名,但可以预计的是,在我国国内今后相当长的时期内,以英语为基础的域名(即英文域名)仍然是主流。
    [编辑本段]域名基本类型
      一是国际域名(international top-level domain-names,简称iTDs),也叫国际顶级域名。这也是使用最早也最广泛的域名。例如表示工商企业的 .com,表示网络提供商的.net表示非盈利组织的.org等。二是国内域名,又称为国内顶级域名(national top-level domainnames,简称nTLDs),即按照国家的不同分配不同后缀,这些域名即为该国的国内顶级域名。目前200多个国家和地区都按照ISO3166国家代码分配了顶级域名,例如中国是cn,美国是us,日本是jp等。详细见下文。
      在实际使用和功能上,国际域名与国内域名没有任何区别,都是互联网上的具有唯一性的标识。只是在最终管理机构上,国际域名由美国商业部授权的互联网名称与数字地址分配机构(The Internet Corporation for Assigned Names and Numbers)即ICANN负责注册和管理;而国内域名则由中国互联网络管理中心 (China Internet Network Infomation Center) 即CNNIC负责注册和管理。
    [编辑本段]域名级别
      域名可分为不同级别,包括顶级域名、二级域名等。
      顶级域名又分为两类:一是国家顶级域名(national top-level domainnames,简称nTLDs),目前200多个国家都按照ISO3166国家代码分配了顶级域名,例如中国是cn,美国是us,日本是jp等;二是国际顶级域名(international top-level domain names,简称iTDs),例如表示工商企业的 .Com,表示网络提供商的.net表示非盈利组织的.org等。目前大多数域名争议都发生在com的顶级域名下,因为多数公司上网的目的都是为了赢利。为加强域名管理,解决域名资源的紧张,Internet协会、Internet分址机构及世界知识产权组织(WIPO)等国际组织经过广泛协商, 在原来三个国际通用顶级域名:(com.net.org)的基础上,新增加了7个国际通用顶级域名:firm(公司企业)、store(销售公司或企业)、Web(突出WWW活动的单位)、arts(突出文化、娱乐活动的单位)、rec (突出消遣、娱乐活动的单位)、info (提供信息服务的单位)、nom(个人),并在世界范围内选择新的注册机构来受理域名注册申请。
      二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称,例如 ibm,yahoo,microsoft等;在国家顶级域名下,它是表示注册企业类别的符号,例如com,edu,gov,net等。
      我国在国际互联网络信息中心(Inter NIC) 正式注册并运行的顶级域名是CN,这也是我国的一级域名。在顶级域名之下,我国的二级域名又分为类别域名和行政区域名两类。类别域名共6个, 包括用于科研机构的ac;用于工商金融企业的com;用于教育机构的edu;用于政府部门的 gov;用于互联网络信息中心和运行中心的net;用于非盈利组织的org。而行政区域名有34个,分别对应于我国各省、自治区和直辖市。三级域名用字母( A~Z,a~z,大小写等)、数字(0~9)和连接符(-)组成, 各级域名之间用实点(.)连接,三级域名的长度不能超过20个字符。 如无特殊原因,建议采用申请人的英文名(或者缩写)或者汉语拼音名 (或者缩写) 作为三级域名,以保持域名的清晰性和简洁性。
    [编辑本段]注册域名
      域名的注册遵循先申请先注册原则,管理机构对申请人提出的域名是否违反了第三方的权利不进行任何实质审查。同时,每一个域名的注册都是独一无二的、不可重复的。因此,在网络上,域名是一种相对有限的资源,它的价值将随着注册企业的增多而逐步为人们所重视。
      既然域名是一种有价值的资源,那么,它是否能够成为知识产权保护的客体呢?我们认为,在新的经济环境下,域名所具有的商业意义已远远大于其技术意义,而成为企业在新的科学技术条件下参与国际市场竞争的重要手段 ,它不仅代表了企业在网络上的独有的位置 ,也是企业的产品、服务范围、形象、商誉等的综合体现,是企业无形资产的一部分。同时,域名也是一种智力成果,它是有文字含义的商业性标记,与商标、商号类似,体现了相当的创造性。在域名的构思选择过程中,需要一定的创造性劳动,使得代表自己公司的域名简洁并具有吸引力,以便使公众熟知并对其访问,从而达到扩大企业知名度、促进经营发展的目的。可以说,域名不是简单的标识性符号,而是企业商誉的凝结和知名度的表彰,域名的使用对企业来说具有丰富的内涵,远非简单的“标识”二字可以穷尽。因此,目前不论学术界还是实际部门,大都倾向于将域名视为企业知识产权客体的一种。而且,从世界范围来看,尽管各国立法尚未把域名作为专有权加以保护,但国际域名协调制度是通过世界知识产权组织来制定,这足以说明人们已经把域名看做知识产权的一部分。
      当然,相对于传统的知识产权领域,域名是一种全新的客体,具有其自身的特性,例如 ,域名的使用是全球范围的 ,没有传统的严格地域性的限制;从时间性的角度看,域名一经获得即可永久使用,并且无须定期续展;域名在网络上是绝对唯一的,一旦取得注册,其他任何人不得注册、使用相同的域名,因此其专有性也是绝对的;另外,域名非经法定机构注册不得使用,这与传统的专利、商标等客体不同,等等。即使如此,把域名作为知识产权的客体也是科学和可行的,在实践中对于保护企业在网络上的相关合法权益是有利而无害的。
      域名注册机构
      最为通用的域名.com/.net的管理机构是ICANN,但ICANN并不负责域名注册,ICANN只是管理其授权的域名注册商(注册商如Godaddy、Enom,也包括国内的注册商如万网、新网等等),在ICANN和注册商之间还有一个Versign公司,注册商相当于从Verisign公司批发域名,但管理注册商的机构是ICANN。
      域名注册的价格也不等,这里有产品服务不同在其中,早期注册一个.com域名大概要几百美元,现在注册一个.com域名价格就几美元,国内注册.com域名价格也就100多元人民币,要是找注册商下面的代理商注册也就是50元左右(如代理:第二域名.com)。
      CN域名的管理机构是CNNIC,CNNIC授权注册商,在CNNIC和注册商之间就没有类似Verisign这样的公司,注册商是直接从ICANN批发域名。
    11回答
  • 用Dreamweave怎么做ASP页面,服务器要配置得上。  

    0
    0
    .最佳的制作效率
      Dreamweaver可以用最快速的方式将Fireworks,FreeHand,或Photoshop等档案移至网页上。使用检色吸管工具选择荧幕上的颜色可设定最接近的网页安全色。对于选单,快捷键与格式控制,都只要一个简单步骤便可完成。Dremweaver能与您喜爱的设计工具,如Playback Flash,Shockwave和外挂模组等搭配,不需离开Dreamweaver便可完成,整体运用流程自然顺畅。除此之外,只要单击便可使Dreamweaver自动开启Firework或Photoshop来进行编辑与设定图档的最佳化。
      2.网站管理
      使用网站地图可以快速制作网站雏形、设计、更新和重组网页。改变网页位置或档案名称,Dreamweaver 会自动更新所有连结。使用支援文字、HTML码、HTML属性标签和一般语法的搜寻及置换功能使得复杂的网站更新变得迅速又简单。
      3.无可比拟的控制能力
      Dreamweaver是唯一提供Roundtrip HTML、视觉化编辑与原始码编辑同步的设计工具。它包含HomeSite和BBEdit等主流文字编辑器。帧(frames)和表格的制作速度快的令您无法想像。进阶表格编辑功能使您简单的选择单格、行、栏或作未连续之选取。甚至可以排序或格式化表格群组,Dreamweaver 支援精准定位,利用可轻易转换成表格的图层以拖拉置放的方式进行版面配置。所见即所得 Dreamweaver成功整合动态式出版视觉编辑及电子商务功能,提供超强的支援能力给Third-party厂商,包含ASP, Apache,BroadVision, Cold Fusion,iCAT, Tango与自行发展的应用软体。当您正使用Dreamweaver在设计动态网页时,所见即所得的功能,让您不需要透过浏览器就能预览网页。梦幻样版和XML Dreamweaver将内容与设计分开,应用于快速网页更新和团队合作网页编辑。建立网页外观的样版,指定可编辑或不可编辑的部份,内容提供者可直接编辑以样式为主的内容却不会不小心改变既定之样式。您也可以使用样版正确地输入或输出XML内容。
      Dreamweaver还集成了程序开发语言,对ASP、.NET、PHP、JS的基本语言和连接操作数据库,都是完全支持的。
    [编辑本段]缺点
      一、 难以精确达到与浏览器完全一致的显示效果。也就是说您在所见即所得网页编辑器中制作的网页放到浏览器中是很难完全达到您真正想要的效果,这一点在结构复杂一些的网页(如分帧结构、动态网页结构)中便可以体现出来;
      二、 页面原始代码的难以控制性,比如您在所见即所得编辑器中制作一张表格也要几分钟,但您要它完全符合您要求可能需要几十分钟,甚至更多时间。而相比之下,非所见则所得的网页编辑器,就不存在这个问题,因为所有的HTML代码 都在您的监控下产生,但是由于非所见则所得编辑器的先天条件就注定了它的工作低效率。如何实现两者的完美结合,则既产生干净、准确的HTML代码,又具备则见则所得的高效率、直观性,一直是网页设计师梦想。在DREAMWEAVER之前,FRONTPAGE98一直被人们认为是最好的所见即所得网页编辑器,但是它同样继承了所见即所得的种种劣性。但是我说过这是在DREAMWEAVER之前,现在我无意说DREAMWEAVER已经实现网页设计师的梦想,但我觉得DREAMWEAVER正在努力向这个梦想一步步走去。
    [编辑本段]软件版本图片
      DreamWeaver3 及早期版本
      DreamWeaver3.0及早期版本
      DreamWeaver4
      DreamWeaver4.0
      DreamWeaverMX
      DreamWeaverMX
      DreamWeaverMX2004
      DreamWeaverMX2004
      DreamWeaver8
      DreamWeaver8.0
      Adobe DreamWeaverCS3
      (MacroMedia被Adobe收购后推出的第一个版本)
      DreamWeaverCS3
      Adobe DreamWeaverCS4
    [编辑本段]Dreamweaver快捷键
      新建(New)一个网页【Ctrl】+【N】
      打开(Open)一个存在的网页【Ctrl】+【O】
      在框架中打开(Open)...【Ctrl】+【Shift】+【O】
      关闭(closedoWn)当前网页【Ctrl】+【W】
      保存(Save)当前网页【Ctrl】+【S】
      将当前网页换名存盘SaveAs...【Ctrl】+【Shift】+【S】
      检查联接的有效性【Shift】+【F8】
      撤消上一步操作【Ctrl】+【Z】/【Alt】+【BackSpace】
      重复上一步操作【Ctrl】+【Y】/【Ctrl】+【Shift】+【Z】
      剪切到剪贴板【Ctrl】+【X】/【Shift】+【Del】
      拷贝(Copy)到剪贴板【Ctrl】+【C】/【Ctrl】+【Ins】
      将剪贴板的内容粘贴到当前文件中【Ctrl】+【V】/【Shift】+【Ins】
      拷贝(Copy)HTML代码【Ctrl】+【Shift】+【C】
      粘贴HTML代码【Ctrl】+【Shift】+【V】
      全部(All)选择【Ctrl】+【A】
      选择上一级标签【Ctrl】+【Shift】+【<】
      选择下一级标签【Ctrl】+【Shift】+【>】
      查找(Find)和替换...【Ctrl】+【F】/【Ctrl】+【H】
      查找下一个【F3】
      缩进代码【Ctrl】+【]】
      取消缩进代码【Ctrl】+【[】
      平衡背带【Ctrl】+【】
      设置断点(Breakpoint)【Ctrl】+【Alt】+【B】
      调用外部编辑器(ExternalEditor【Ctrl】+【E】
      参数设置(setUp)...【Ctrl】+【U】
      在编辑窗口和代码窗口间进行切换【Ctrl】+【Tab】
      刷新视窗显示【F5】
      显示/隐藏头文件【Ctrl】+【Shift】+【W】
      表格用标准显示方式【Ctrl】+【Shift】+【F6】
      表格显示为版面【Ctrl】+【F6】
      显示/隐藏不可见因素【Ctrl】+【Shift】+【I】
      显示/隐藏标尺(Rulers)【Ctrl】+【Alt】+【R】
      显示/隐藏网格【Ctrl】+【Alt】+【G】
      捕捉到网格(Grid)【Ctrl】+【Alt】+【Shift】+【G】
      播放(Play)外部插件【Ctrl】+【Alt】+【P】
      停止播放外部插件【Ctrl】+【Alt】+【X】
      播放所有的外部插件【Ctrl】+【Alt】+【Shift】+【P】
      停止所有外部插件【Ctrl】+【Alt】+【Shift】+【X】
      插入图像(Image)【Ctrl】+【Alt】+【I】
      插入Flash动画【Ctrl】+【Alt】+【F】
      插入Shockwave影片【Ctrl】+【Alt】+【D】
      插入表格(Table)【Ctrl】+【Alt】+【T】
      插入书签命名锚点(Anchor)【Ctrl】+【Alt】+【A】
      插入回车符号【Shift】+【Enter】
      插入非间断空格【Ctrl】+【Shift】+【Space】
      修改页面属性...【Ctrl】+【J】
      打开/关闭物体属性设置面板【Ctrl】+【Shift】+【J】
      快速代码编辑【Ctrl】+【T】
      新建链接(Link)...【Ctrl】+【L】
      删除链接(Link)【Ctrl】+【Shift】+【L】
      选择表格【Ctrl】+【A】
      合并(Merge)单元格【Ctrl】+【Alt】+【M】
      [1] 分离(Split)单元格...【Ctrl】+【Alt】+【S】
      插入一行【Ctrl】+【M】
      插入一列【Ctrl】+【Shift】+【A】
      删除一行【Ctrl】+【Shift】+【M】
      删除一列【Ctrl】+【Shift】+【-】
      增加单元格跨度【Ctrl】+【Shift】+【]】
      减少单元格跨度【Ctrl】+【Shift】+【[】
      左对齐选择物体【Ctrl】+【Shift】+【1】
      右对齐选择物体【Ctrl】+【Shift】+【3】
      顶对齐选择物体【Ctrl】+【Shift】+【4】
      底对齐选择物体【Ctrl】+【Shift】+【6】
      使宽度相同【Ctrl】+【Shift】+【7】
      使高度相同【Ctrl】+【Shift】+【9】
      将对象添加到库(Library)中【Ctrl】+【Shift】+【B】
      在模板中新建一个可编辑区域...【Ctrl】+【Alt】+【V】
      添加物体到时间线(Timeline)上【Ctrl】+【Alt】+【Shift】+【T】
      在时间线上添加关键帧【F6】
      删除时间线上的关键帧【Shift】+【F6】
      文本缩进【Ctrl】+【Alt】+【]】
      取消文本缩进【Ctrl】+【Alt】+【[】
      设置段落格式为无【Ctrl】+【0】
      设置段落格式为“Paragraph”【Ctrl】+【Shift】+【P】
      设置段落格式为“标题1”【Ctrl】+【1】
      设置段落格式为“标题2”【Ctrl】+【2】
      设置段落格式为“标题3”【Ctrl】+【3】
      设置段落格式为“标题4”【Ctrl】+【4】
      设置段落格式为“标题5”【Ctrl】+【5】
      设置段落格式为“标题6”【Ctrl】+【6】
      文字左(Left)对齐【Ctrl】+【Alt】+【Shift】+【L】
      文字居中(Center)对齐【Ctrl】+【Alt】+【Shift】+【C】
      文字右(Right)对齐【Ctrl】+【Alt】+【Shift】+【R】
      文本样式使用粗体(Bold)【Ctrl】+【B】
      文本样式使用斜体(Italic)【Ctrl】+【I】
      编辑(Edit)样式表...【Ctrl】+【Shift】+【E】
      拼写检查【Shift】+【F7】
      开始录制命令【Ctrl】+【Shift】+【X】
      播放(Play)录制好的命令【Ctrl】+【P】
      获取站【Ctrl】+【Shift】+【D】
      检查站点【Ctrl】+【Alt】+【Shift】+【D】
      放置(pUt)站点【Ctrl】+【Shift】+【U】
      登记站点【Ctrl】+【Alt】+【Shift】+【U】
      检查链接【Ctrl】+【F8】
      显示/隐藏面板和工具箱【F4】
      显示/隐藏上方工具栏(Toolbar)【Ctrl】+【Shift】+【T】
    6回答
  • sql如何修改某列为自增字段?  

    0
    0
    先删除,再加入

    create   table   #tb(id   int,   ident   int   identity(10000,   1))
    insert   into   #tb
    select   1000   union   all
    select   1001   union   all
    select   1002   union   all
    select   1003  


    alter   table   #tb
    drop   column   ident

    alter   table   #tb
    add   ident   int   identity(20000,1)


    select   *   from   #tb
    4回答
  • 关于取消按钮java应如何跳转 

    0
    0
    <script   language="javascript">  
       
     function   click_add()  
     {  
     var   form=document.mainform;  
     form.action="add.jsp";  
     form.submit();  
     return   true;  
     }  
       
     function   click_edit()  
     {  
     var   form=document.mainform;  
     form.action="modify.jsp";  
     form.submit();  
     return   true;  
     }  
     </script>  
       
     <form   method="post"   name="mainform">  
     <table   width="100%"   border="0"   cellspacing="0"   cellpadding="0">  
             <tr>  
                 <td><div   align="center">                      
                         <input   name="add"   type="button"   class="button"   value="增   加"   onClick="click_add();return   true;">  
                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
                         <input   name="edit"   type="button"   class="button"     value="修   改"   onClick="click_edit();return   true;">  
                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   &nbsp;  
                         <input   name="del"   type="button"   class="button"   value="删   除"   >  
                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
                         <input   name="reset"   type="reset"   class="button"   value="重   选">  
                     </div></td>  
             </tr>  
         </table>  
     </form>
    09-10-26 Java 匿名
    3回答
  • 如何用c++软件编写c程序 

    0
    0
    ----------------------env.c-----------------------------


    #include <errno.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>

    int main(void)
    {
           if (putenv("FOO=foo") != 0) {
                   perror("putenv error");
                   exit(1);
           }

           execl("/path/to/foo.sh", "foo.sh", 0);

           return 0;       /* should never reach here */
    }

    ------------------------env.c--------------------------


    --------foo.sh----------
    #!/bin/sh
    echo $FOO
    --------foo.sh----------



    eg. 2 要将shell script的变量“传”给一个C程序,你要在*当前*shell下:

    $ export BAR=bar (如果运行脚本的话,要用$ . /path/to/bar.sh, 而不要用$ /path/to/bar.sh)

    这样在C程序中调用getenv()可以得到这个环境变量。



    关于环境变量注意一点:子进程继承父进程的环境变量。
    (在第一个例子中你用fork/exec调用脚本也是能得到FOO环境变量的。)



     Re: 如何在C程序中使用脚本?  



    放在参数里就可以呀
    shell的话 $1 $2 an so on



     Re: 如何在C程序中使用脚本?  



    根据wandys兄的例子结果很显然是:foo
    但是如果在c程序里我对foo的定义是:char *foo = "testing";
    而我最终想看到的结果是:testing,该如何做?是在不好意思,小弟才疏学浅!



     Re: 如何在C程序中使用脚本?  



    >但是如果在c程序里我对foo的定义是:char *foo = "testing";
    >而我最终想看到的结果是:testing,该如何做?

    hehe, 那就先作一些准备工作呀。(最终的交流是通过环境变量进行。)

    char *foo="testing";
    char env[100]="FOO=";

    strcat(env, foo);
    if (putenv(env) != 0)
    ...
    09-10-26 编程 匿名
    7回答
  • c抽象方法可以有参数吗 

    0
    0
    、接口
    接口实现多重继承,弥补类之间只能是单重继承,接口需要关键字interface来代替关键字class,接口只声明方法或者参数列表,不会包含任何具体的方法实现。
    由于接口的这种特点,所以对于接口的实现类就可以有很多个平级的实现,这样就很容易的达到了多重继承,同时接口也是一种抽象封装,用户调用透明不需要知道里面的具体实现,利于java高效架构。
    下面我们来看简单的代码实现:
    - - - - - - - -- - 接口instrument- - - - - - - - -
    package lht.java.test;
    public interface Instrument {
       public void fun1(String str1,String str2);
       public void fun2(String str3,String str4);
    }
    - - - - - - - -- -接口实现1- - - - - - - -- - -----
    package lht.java.test;

    public class SystemPrint1 implements Instrument {
       public void fun1(String str1, String str2) {
           // TODO Auto-generated method stub
           System.out.println("这是接口Instrument的实现类SystemPrint1.fun1");
           System.out.println("str1"+str1+"str2"+str2);
       }

       public void fun2(String str3, String str4) {
           // TODO Auto-generated method stub
           System.out.println("这是接口Instrument的实现类SystemPrint1.fun2");
           System.out.println("str3"+str3+"str4"+str4);        
       }
    }
    - - - - - - - -- -接口实现2- - - - - - - -- -
    package lht.java.test;

    public class SystemPrint2 implements Instrument {
       public void fun1(String str1, String str2) {
           // TODO Auto-generated method stub
           System.out.println("这是接口Instrument的实现类SystemPrint2.fun1");
           System.out.println("str1"+str1+"str2"+str2);
       }
       public void fun2(String str3, String str4) {
           // TODO Auto-generated method stub
           System.out.println("这是接口Instrument的实现类SystemPrint2.fun2");
           System.out.println("str3"+str3+"str4"+str4);        
       }
    }
    - - - - - - - -- -JUNIT测试 - - - - - - -- -
    package lht.java.test;
    import junit.framework.TestCase;
    public class LhtJavaTest extends TestCase {
    public void testSystemPrint1(){
        Instrument i;
        i = new SystemPrint1();
        i.fun1("调用接口1", "调用接口1");
        i.fun2("调用接口1", "调用接口1");
    }
    public void testSystemPrint2(){
        Instrument i;
        i = new SystemPrint2();
        i.fun1("调用接口2", "调用接口2");
        i.fun2("调用接口2", "调用接口2");
    }
    }
    -----------------console输出------------------------------
    这是接口Instrument的实现类SystemPrint1.fun1
    str1调用接口1str2调用接口1
    这是接口Instrument的实现类SystemPrint1.fun2
    str3调用接口1str4调用接口1
    这是接口Instrument的实现类SystemPrint2.fun1
    str1调用接口2str2调用接口2
    这是接口Instrument的实现类SystemPrint2.fun2
    str3调用接口2str4调用接口2

    是不是实现了多重继承啊,你还可以实现更多方法,用接口来声明,然后通过接口来调用就可以了。

    2、工厂
    借口是实现多重继承的途径,而生成遵循某个接口的对象的典型方式就是工厂方法设计模式。
    package lht.java.test;
    public interface Service {
       void method1();
       void method2();
    }
    -----------------------
    package lht.java.test;

    public class Implementation1 implements Service {

       public void method1() {
           // TODO Auto-generated method stub
           System.out.println("Implementation1.method1");
       }

       public void method2() {
           // TODO Auto-generated method stub
           System.out.println("Implementation1.method2");
       }

    }
    -------------------
    package lht.java.test;

    public class Implementation2 implements Service {
       Implementation2(){};
       public void method1() {
           // TODO Auto-generated method stub
           System.out.println("Implementation2.method1");
       }
       public void method2() {
           // TODO Auto-generated method stub
           System.out.println("Implementation2.method2");
       }

    }
    ---------------
    package lht.java.test;

    public class Implementation1Factory implements ServiceFactory {

       public Service getService() {
           // TODO Auto-generated method stub
           return new Implementation1();
       }
       
    }
    ----------------
    package lht.java.test;

    public class Implementation2Factory implements ServiceFactory {

       public Service getService() {
           // TODO Auto-generated method stub
           return new Implementation2();
       }
       
    }
    ----------
    package lht.java.test;

    public class Factories {
       public static void ServiceConsumer(ServiceFactory fact){//可以试着把ServiceFactory 改成Implementation1Factory等你会发现出现的问题,测试中能看到代码得不到重用
           Service s = fact.getService();
           s.method1();
           s.method2();
       }
    }
    ----junit测试-----
    package lht.java.test;
    import junit.framework.TestCase;
    public class LhtJavaTest extends TestCase {
    public void testFactory(){
        Factories.ServiceConsumer(new Implementation1Factory());
        Factories.ServiceConsumer(new Implementation2Factory());
    }
    }

    你会发现,如果不是工厂方法,您的代码必须在某处指定将要创建的service确切类型;
    可以认为,工厂类对接口又做了一次封装,让你可以不直接和具体的类打交道,你可以不关service的确切类到底是什么。这对于实现一种框架有着很大的好处。
    3、抽象类
    使用关键字abstract定义的方法就称作抽象类,加了abstract的方法则为抽象方法。
    包含一个或者多个抽象方法的类就是抽象类,抽象类是不允许实例化的。
    看例子:

    abstract class A {    public abstract void doSomething();}class B extends A {    public void doSomething() {        System.out.println("do B");    }}class C extends A {    public void doSomething() {        System.out.println("do C");    }}public class Test {    public static void main(Stringp[] args) {        A a1 = new B();        A a2 = new C();        B b = new B();        C c = new C();        doSomething(a1); //这里        doSomething(a2); //这里         doSomething(b); //这里,如果下面的方法不是用抽象类作参数,比如用C c做参数,这里会有什么问题?         doSomething(c); //这里    }    public static void doSometing(A a) {//这里,用抽象类,为什么,LZ自己思考        a.doSomething();    }}可以说抽象类不是纯粹的接口实现,和接口的左右有很大相同之处,提高代码的扩展性和重用,抽象类中可以有抽象方法也可以有具体实现的方法体,接口则纯粹是方法声明,没有具体实现。
    09-10-26 编程 匿名
    1回答
  • 系统日志:事件类型: 警告 事件来源: b57w2k 怎么回事? 

    0
    0
    下面是事件日志:
    1.
    日志名称:系统
    事件类型:错误
    类别:无
    创建时间:2008-12-12 21:44:41
    用户:Administrator
    来源:DCOM
    描述:10005: DCOM 遇到错误“%1058”,试图以参数“”启动服务 StiSvc 以运行服务器:  {A1F4E726-8CF1-11D1-BF92-0060081ED811}  

    2.
    日志名称:系统
    事件类型:错误
    类别:无
    创建时间:2008-12-12 21:44:41
    用户:
    来源:Service Control Manager
    描述:7000: 由于下列错误,Parallel port driver 服务启动失败:   无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。  

    3.  
    日志名称:系统
    事件类型:错误
    类别:无
    创建时间:2008-12-12 21:44:41
    用户:
    来源:Service Control Manager
    描述:7023: HID Input Service 服务因下列错误而停止:   找不到指定的模块。

    4.
    日志名称:系统
    事件类型:错误
    类别:无
    创建时间:2008-12-12 22:05:16
    用户:
    来源:Service Control Manager
    描述:7024: Distributed Transaction Coordinator 服务因3221229584 (0xC0001010) 服务性错误而停止。
    1回答
  • j2ee中间件有哪些  

    0
    0
    eprint自定义打印是解决B/S模式下报表打印问题的一个工具,用于应对各种复杂的中国式报表打印。能够快速实现打印格式设计,格式维护,以及和用户系统的无缝集成,是web方式下实现报表打印的最快最佳的解决方案。    
         
               eprint自定义打印真正做到打印格式的完全自定义,采用和FastReport类似的布局来设计报表打印格式,通过数据集作为中间层和用户系统做接口,在设计报表打印格式时,选择数据结构(与字段信息类似)生成打印格式;在生成打印报表时,自动填充数据集中的记录数据,生成打印数据;同时支持打印纸型,打印方向,页边距等等打印参数的个性化定义。eprint自定义打印支持各种类型的复杂报表打印,真正做到“所见即所得”的图形化界面来设计打印格式,支持各种证件,票据套打等等。适用于j2ee,dotnet,linux等多种平台,通过中间层数据集和用户系统做关联,后台支持任意数据库环境。  
       
       
       eForm是一个页面设计工具,它既能完成静态HTML页面的设计,也能读写数据库完成动态页面设计。它采图形化可视化操作,所见即所得;通过拖拉即可完成表单设计。提供多种数据类型和Html控件,并预实现常见的业务逻辑功能(新增、删除、修改、查看、查询、报表、打印、图表等),用户无需编程或是修改代码,完全在界面上操作即可设计完页面;也能写一些事件的代码以完成复杂表单的设计。    
               eForm实际上就是一个构件库,它对大量实用的控件进行了结构化的封装和调试。通过简单的拖拉设置就可以实现控件所能实现的功能,从而大大减少了代码的编写和调试难度
    09-10-26 电脑软件 匿名
    4回答
  • 为什么导入数据库失败 

    0
    0
    (1)数据库的制表不符合规格,应该严格按照要求制表
    (2)学校中的所属教学中心代号按照现有的代号
    (3)严格按照用户身份代码定义参与者身份,2代表主持人,3代表演讲者,4代表参与者,也可以按顺序倒过来排
    (4)数据库的路径和文件名不能有汉字,然后检查所有的路径和文件名是否正确
    09-10-26 Java 编程 数据库
    4回答
  • word2003中如何实现前面输入后边替换呢 

    0
    0
    工具→选项→编辑,选中“键入内容替换所选内容”。
    09-10-26 编程 匿名
    1回答
  • 循环小数能被整除吗  

    0
    0
    有理数的概念:有理数由整数和分数组成。
    推论:任意一个有理数,都可以化成一个不可约分数,p/q,(p,q)=1,p,q∈Z[最大公约数为1,即互质,不可约]。

    显然你的问题是如果已经知道一个有理数p/q,(p,q)=1,p,q∈Z,如何判断p/q是不是循环小数

    其实挺简单的,若q是10的约数(2.5,10)的约数倍,即有(2,5,10)经过有限次乘运算能得到的,那么p/q是一个不循环小数,否则就是无限循环小数。

    现在证明一下:
    我先证明有理数的运算是封闭的,即有理数的加减乘除是有理数。
    令两个有理数,a/b,(a,b)=1 p/q,(p,q)=1,a,b,p,q∈Z
    a/b+p/q=(aq+bp)/bq这可能是一个可约分数,但一定可以表示成一个不可约分数,只要上下同时除以(aq+bo,bq),同理,它们的差(aq-bp)/bq,积ab/bq,商aq/bq可能是一个可约分数,但一定可以表示成一个不可约分数,所以,有理数的运算是封闭的。
    然后证明你的命题:
    1.把p分解质因数 q=2^n*5^m*x^y,x表示除2,5外的因数之积,若y=0,则p/q=10^(n+m)/10^(n+m)*2^n*5^m=1/10^(n+m)*2^m*5^n,是不循环小数
    2.若y≠0,即q含有除2,5外的因数,那么假定p/q的余数是r,即p不能整除q,只要证明p*10^n也不能整除q,就能证明p/q不是不循环小数,而它又是一个分数,那么只能是无限循环小数,对与这个问题“证明p*10^n也不能整除q”,我用数学归纳法.
    (1)当n=0时,余数是r,不能整除
    (2)当n=k时,假定余数是s
    (3)当n=k+1时,p*10^(k+1)/q=p^k/q*10,余数是10s,或者说和10s同余,但是10s显然不可能和0同余,因为q中含有除2,5外的因数,但无论s,10都不含有除2,5外的因数,所以10s不和0同余,仍然存在余数
    (4)综上,无论经过多少次运算,仍然存在余数,所以它有限循环小数

    至于是否是无限不循环小数,只要先把无理数化简,然后如果最简形式仍然存在无理数,那就是无限不循环小数。

    我们还可以证明无限循环小数可以表示成分数形式,也即无限循环小数为分数。
    令一个无限循环小数的小数部分为:S=0.a1a2..ana1a2..an...,即以序列a1a2..an无限循环。令k=0.a1a2...an,那么S=k+k/10^n+k/10^2n+...
    再令ai=k/10^[(i-1)*n] S=lim(n→+∞)∑ai=a1*(1-q^i)/1-q=a1/1-q=a1/1-1/10^n,而a1=k 所以S=k/(1-1/10^n)=10^nk/(10^n-1)=a1a2a3...an/10^n-1,这可能是一个可约分数,但一定可以表示成一个不可约分数,所以,无限循环小数为分数(有理数),而若一小数为S1=x.b1b2..bna1a2..ana1a2..an,即,不是从一开始就循环,那么不循环部,一定可以表示成b1b2b3...bn/10^n,一定是一个不可约分数,相加一定可表示成一个不可约分数,

    而无限不循环小数,无理数,成为超越数,它无法表示为代数方程的根,因而只能用级数的方法逼近。圆周率的定义是周长/直径,但是周长和直径中必然有一个不是有理数,所以他们相除,必为无限不循环小数。
    09-10-26 数学 匿名
    3回答
  • (VC++)在Combo Box控件的属性(Properties)的Data中输入数据,怎么输入? 

    0
    0
    一、初始化Combo Box控件

    (1)在资源视图中,选择控件的"Properties",然后在Data选项卡里为控件添加初始化数据,换行是按Ctrl+Enter,然后,再修改Style选项卡里的Type属性为Drop List。

    (2)在程序初始化时动态添加

    CString strTemp;
    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();//消除ID为IDC_COMBO_CF现有所有内容
    for(int i=1;i<=100;i++)
    {
      strTemp.Format("%d",i);
      ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp); //为控件添加初始化数据
    }
    (3)删除
    DeleteString( UINT nIndex )//删除指定行,
    (4)插入
    InsertString( int nIndex, LPCTSTR lpszItem )//将行插入到指定位置
    (5)查找
    FindString( int nStartAfter, LPCTSTR lpszItem )//可以在当前所有行中查找指定的字符传的位置,nStartAfter指明从那一行开始进行查找。
    int SelectString( int nStartAfter, LPCTSTR lpszItem )//可以选中包含指定字符串的行
    二、如何控制Combo Box的下拉长度

    1,首先要知道两点:一、那就是在设计界面里,点击一下Combo Box的下拉箭头,此时出现的调整框就是Combo Box的下拉调整框。
    2,二、属性里有个 No integral height 钩选项,表示最大长度为设计长度,如果实际内容比设计长度多,就出现滚动条,少就以实际长度显示。

    三、选择其中的某行
    (1)选中:
    int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel();//当前选中的行。
    (2)设置
    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->SetCurSel(n)//设置第n行内容为显示的内容。

    四、取得Combo Box框内容
    (1)取当前内容
    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp);//将获取的值存放到CString类型变量strTemp中。

    如果定义了关联的变量,例如m_combo,可以直接获取:m_combo->GetWindowText(strTemp);

    (2)取其他行内容
    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetLBText(n,strTemp); //其中n为从0开始的索引值

    五、获取当前选择的行数

    例如:((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel()返回的是当前选中值的行数,是整型。

    或者:UINT m_row = m_combo->GetCurSel()

    六、获得焦点

    通常要判断控件是否获得了焦点,可以用GetFocus()函数

    例如:if(GetFocus()==GetDlgItem(IDC_EDIT_VALUE2))//判断焦点是否在编辑框IDC_EDIT_VALUE2内。

    但是combobox 的焦点不同,因为它是由edit和listbox两部分组成的

    所以获得焦点要用GetParent():if ((GetFocus()->GetParent())==GetDlgItem(IDC_COMBO_CF))
    09-10-26 VC++ 编程
    2回答
  • 如何修改project的项目名称 

    0
    0
    1.  首先下载字体控件

    说明:分别为两个rar的压缩包,下载到本地后,选中任意一个压缩包直接点右键“释放到这里。。。”即可(因为压缩的方式为分卷压缩,实际是把一个文件分成两个部分压缩,解压时rar会自动把两部分合在一起,所以各位同学实在不必为另外一个没有解压而担心)。

    解压后的文件名是:TDClientUI.ocx(如果是TD8.0应为TDClientUI80.ocx)

    2. 然后进行控件替换

    l  关闭TD服务.

    l  关闭所有的浏览器.

    l  在目录‘InetPub\TDBIN\Install’中,用新的‘TDClientUI.xco’(改写下载文件的后缀)文件进行替换.

    l  在目录‘InetPub\TDBIN’中打开文件‘setup_a.ini’,找到节点‘[File_2]’中的‘CheckSize=******’改写CheckSize的大小为新‘TDClientUI.xco’文件的大小.

    l  进入C:\program files\common files\Mercury Interactive\TD2000目录,备份原TDClientUI.ocx文件.

    l  将下载的字体控件TDClientUI.ocx拷贝至C:\program files\common files\Mercury Interactive\TD2000目录.

    l  然后重启TD服务.

    三:TD如何新建一个新project

    1.进入‘Site Administrator’->‘DB Servers’,点击‘Create Project’,在‘Create Database Server’选择你要创建的项目名称,数据库的类型;

    2.在‘Site Administrator’->‘Projects’中选择一个域,然后点击‘Create Project’创建一个新project;

    创建一个新Project实际上是在数据库里新建了一个库.

    四:如何设置TD自动发送邮件

    1.进入‘Site Administrator’,选择一个项目.

    2.勾选上该项目的‘Send defect emails automatically’选项.

    3.进入‘Site Administrator’->‘TD Servers’,点击‘Mail Protocal’,选择你要使用的邮件服务器(最好方式是搭建一个邮件服务器,然后选择‘SMTP Server’选项,输入邮件服务器地址).

    五:TD如何自定义BUG字段选项

    1.进入‘CUSTOMIZE’->‘Customize Project Entities’,在‘Project Entities’中选择‘DEFECT’(其中System Fields为不可编辑和修改的,只能进行常规的操作,User Fields为可编辑的,因此在更多时候添加新的字段会选用User Fields)

    2.点击‘User Fields’->‘New Field’,在‘Field Settings’对你的新字段进行编辑

    l  Field Label:字段名称

    l  Field Type:字段的选择类型Number(整型)、String(字符型)、Lookup List(下拉框)、Date(日期类型)

    l  History:显示修改的历史记录

    l  Required:此字段为必填选项

    注:如果在Field Type选择了Lookup List选项,那么会让你编辑‘Lookup List’中的内容,其中下拉框里连接的其实为‘Customize Project Lists’内设定的值,也可以点击‘New List’建立一个新的与Lookup List中动态连接的值(具体参见‘Customize Project Lists’)

    六:TD如何对下拉框(Lookup List)中的字段进行编辑

    1.进入‘CUSTOMIZE’->‘Customize Project Lists’,在‘Lists’中选择你要编辑的字段

    2. 在‘List Items’中选择你要修改的值,然后进行修改

    七:TD如何对发送邮件的发送内容以及发送条件进行设置

    1. 进入‘CUSTOMIZE’->‘Configure Mail’,在‘Configure Mail’->‘Fields’中选择你要发送的邮件中所要包含的内容

    2.在‘Configure Mail’->‘Condition’中选择你要发送邮件给指定的条件的用户

    l  如果选择了‘Detected By’中的‘All Defects’那么这意味着,在用户提交bug时,在bug界面中Detected By字段被选中的用户将收到邮件

    l  如果选择了‘admin’ 中的‘All Defects’那么这意味着,所有bug的缺陷都会提交给用户‘admin’

    八:TD8.0中邮件标题过长导致邮件无法显示

    问题:

    发送bug邮件时,当BUG的标题超过22个字符出现就无法正确显示Html

    解决:

    1. 点击操作系统‘开始’->‘运行’,输入‘mecury.ini’,点击‘OK’按钮,打开以个名为mecury.ini的文本文档(或者打开<system drive>:\Winnt\mecury.ini进行修改)

    2.在mecury.ini文档中加上一段配置代码

    [SAQFORMAT]

    Project Name = Subject line

    例如:

    [SAQFORMAT]

    BBM(项目名称) = BBM.BBM - # ?BG_BUG_ID(标题名称,其中?BG_BUG_ID为BUG_ID的变量)

    九:打开TD提示:Error:Server is Not Available 的解决方法

    问题:

    在进入td的start_a.htm时提示Error:Server is Not Available,按确定,再提示:OTA server is not connected。使用TD的TestDirector Checker检查了一下,没有发现任何问题

    解决:

    1.在‘开始’->‘运行’中输入‘inetmgr’,打开IIS管理器

    2.点击站点‘TDBIN’,右键‘属性’->‘虚拟目录’查看‘Application name’的使用项为空且右边的按钮为‘Remove’而不是‘Create’。(证明此站点的应用设置有问题)

    3. 在‘Application Protection’中选择‘High(Isolated)’,提示error(证明IIS出现问题)

    4.在‘开始’->‘运行’中输入‘iisreset’,重新启动IIS服务

    5.再次进入站点‘TDBIN’,右键‘属性’->‘虚拟目录’,在‘Application Protection’ 中选择‘Low(IIS Process)’,然后点击‘Application name’使用项右边的按钮‘Create’(此时为Create)生成TD站点应用程序成功,可以继续使用TD.

    (我安装TD8.0 时出现了这个问题,我的运行环境是Window XP+SQL 2000个人版+ IIS 5.1. 后来运行环境换成window server 2003+SQL 2000+IIS 6.0此问题解决了.)

    十:在Windows XP中安装TD8.0后,IIS默认网站不可用

    在网上查找有关资料发现是XP系统补丁的漏洞,安装此补丁并重启机器后,winxp系统的IIS默认网站将会停止且无法启动。手动启动时报“服务没有及时响应启动或控制请求”,再进一步检查,World Wide Web Publishing服务不能启动所至,该服务报错为“错误号127,找不到指定的程序”,程序当然是存在的,删除IIS重装还是不行。

    解决办法:

    打开“控制面板”---“添加删除程序”,将顶部的“显示更新”前打上勾,然后找到2007年7月10日的补丁,卸载。(我安装TD8.0 时出现了这个问题,卸载补丁后系统不能启动. 安装运行环境window server 2003+SQL 2000+IIS 6.0此问题解决了.)

    十一:TD8.0连接SQL 2000,ping不通,也不能建立新的Project

    在TD的DBserver中ping SQL 2000,错误提示为:

     [DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied. | Unspecified error.

    主要原因是因为:SQL SERVER安装默认的别名是SQL SERVER,而TD 安装的时默认的数据库别名是TDSQLSERVER,两者不一致。

    解决方法:

    打开“SQL Server客户端网络实用工具”---别名:添加---服务器别名(TDSQLSERVER);服务器名称(TDSQLSERVER);管道名称(主机名);网络库(Named Pipes)保存后OK.

    十二: RPC server is unavailable  

    TD启动时提示:RPC server is unavailable.

    解决办法:

    1.重起TD(这种情况,可能是你安装的杀毒软件的原因;你的TD在启动时,加载不成功)

    2.把右下角的TD——start/stop重新启动一下或则再次刷新以下“Run as”选项

    3.最次的一个办法:把有关TD的各个启动项全部刷新.
    09-10-26 编程 匿名
    1回答
  • excel单元格有多少种属性 

    0
    0
     1.首先定制表格的基本框架

      黑色区域为数据输入区,红色区域为锁定区。如图1。



      2.设定非锁定区域

      此例是选中B3:F10,在鼠标右键菜单中选择“设置单元格格式...”,在“保护”选项卡中取消“锁定”项的选定(此项默认为选中状态),如果下面的“隐藏”被选中了,同样把它取消。在这个对话框中我们可以看到相关说明:只有在工作表被保护时,锁定单元格或隐藏公式或数据才有效。将来在进行工作表保护后,因为此区域的锁定状态已被取消,可以自由输入数据、或者对它们进行修改。如图2。



      3.设定保护区域

      选中图1中的红色区域,在图2的对话框中勾选“锁定”和“隐藏”。选中“隐藏”的目的是让单元格中的数据不在公式栏出现,从而避免其过长而遮掩下面的表格内容。当然,如果公式较短可以不选此项,好处是可以看到某一单元格中完整的公式,从而了解计算结果的来历。

      4.设定单元格格式

      因为考号可能较长、班级前面可能带“0”,为防止Excel把它们进行科学计数处理或省略“0”,所以将它们的数字格式设为“文本”;将“数学”、“语文”、“总分”、“平均分”相关区域设为“数值”,保留一位小数。

    以下我们来看如何自动计算显示相应的数据:

      5.在A3单元格中输入公式“=IF(OR(B3<>"",C3<>""),COUNTBLANK($A$2:A2)+COUNTA($A$2:A2),"")”,拖动A3右下角的填充柄向下填充至A10,意为以B3、C3单元格为参考,只要它们中有一个存在数据,则在A3格中显示相应的序号,否则不显示。

      6.在H3单元格中输入公式“=IF(OR(B3<>"",C3<>""),(E3+F3)/2,"")”,拖动H3右下角的填充柄向下填充至H10,显示每名学生的平均分

      7.在G3单元格中输入公式“=IF(OR(B3<>"",C3<>""),SUM(E3:F3),"")”,向下填充至G10,显示总分。

      8.在I3单元格中输入公式“=IF(OR(B3<>"",C3<>""),RANK(H3,$H$3:$H$10,0),"")”,向下填充至G10,动态显示排序结果。

      9..最关键的一步:“工具→保护→保护工作表”,在“保护工作表”对话框中保持“保护工作表及锁定的单元格内容”的选中状态,设定密码(可以设置为空),在下面“允许此工作表的所有用户进行:”中作如图3选择。



      在Excel 2000中缺少Excel 2003的“允许此工作表的所有用户进行:”选项,所以功能较差。而在此处选中“设置列格式”、“设置行格式”目的是为了在锁定状态下可以对表格的列框和行高进行调整,以便适应打印要求。

      好了,把做好的电子表格作为模板分发下去,如果有人想对红色的锁定区域进行修改编辑的话,马上就会弹出一个对话框,提示“只有撤销了工作表保护才能修改”。哈,我的地盘,听我的,如果想发挥,到你的自留地(黑色区域)去吧!

      输入数据、显示效果见图4。



      以上只是一个极简单的例子,实际应用中公式、函数的编制可能远比此例复杂的多,尤其是在某些财务报表中,一旦错误操作,牵一发而动全身,这时,这个单元格区域保护的功能就显得尤为实用了。
    09-10-23 编程 匿名
    3回答
  • sql写个游标同时插入几个表 

    0
    0
    declare
    n_count integer := 0;

     cursor cur_bak is
       select ID,
              MAC,
              IP,
              NETBAR_ID,
              LOGIN_TIMES,
              LOGIN_DATE,
              GAME_ID,
              PROVINCE,
              CITY
         from SYS_LOGIN_RECORDS_DETAIL_BAK;

    begin

     for i_cur_bak in cur_bak loop
       insert into SYS_LOGIN_RECORDS_DETAIL
         (ID,
          MAC,
          IP,
          NETBAR_ID,
          LOGIN_TIMES,
          LOGIN_DATE,
          GAME_ID,
          PROVINCE,
          CITY)
       values
         (i_cur_bak.id,
          i_cur_bak.MAC,
          i_cur_bak.IP,
          i_cur_bak.NETBAR_ID,
          i_cur_bak.LOGIN_TIMES,
          i_cur_bak.LOGIN_DATE,
          i_cur_bak.GAME_ID,
          i_cur_bak.PROVINCE,
          i_cur_bak.CITY);
     
       n_count := n_count + 1;
       if n_count >= 5000 then
         commit;
         n_count := 0;
       end if;
     end loop;
     commit;

    end;
    /
    09-10-23 编程 匿名
    2回答
  • 讲解从一个网页到一个网站的制作方法  

    0
    0
    站点上所有或部份的网页上一致地应用相同样式时,可使用外部样式表。在一个或多个外部样式表中定义样式,并将它们链接到所有网页,便能确保所有网页外观的一致性。如果您决定更改样式,您只需在外部样式表中作一次更改 ,则该更改就会反映到所有与该样式表相链接的网页上。通常外部样式表以 .css 做为文件扩展名,例如 1.css。

    下面就以如何把网页的所有文字设为流行的9磅字为例,给大家讲解如何运用以上两种方法。

      如果只设置当前页面,就要运用嵌入的样式表,这时只需进入html编辑页面,在与中加入以下代码:




      完成后即可见到效果。

      如果要使一些网页应用相同的设置,就要使用外部样式表。首先在frontpage中新建一个样式表,具体步骤是依次点击文件--新建--网页,在弹出窗口中点击样式表,并选择普通样式表。然后,键入以下代码:

    BODY {FONT-SIZE: 9pt}

    TH {FONT-SIZE: 9pt}

    TD {FONT-SIZE: 9pt}



      注意:如果直接拷贝进去,会产生多余代码。

      将此文件保存在站点目录下。编辑网页时,点击格式--样式表链接,在弹出窗口中选择以上文件即可。

      上面所讲述的仅仅是css的一些简单应用,只要你能够深入的了解css,并熟练的运用它,就能将你的网页创造得更加完美。
    09-10-23 互联网 匿名
    4回答
  • linux串口编程如何输入数据 

    0
    0
     串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。传输距离在码元畸变小于4%的情况下,传输电缆长度应为50英尺。

      Linux操作系统从一开始就对串行口提供了很好的支持,本文就Linux下的串行口通讯编程进行简单的介绍,如果要非常深入了解,建议看看本文所参考的《Serial Programming Guide for POSIX Operating Systems》

      串口操作

      串口操作需要的头文件

    #include     <stdio.h>      /*标准输入输出定义*/
    #include     <stdlib.h>     /*标准函数库定义*/
    #include     <unistd.h>     /*Unix 标准函数定义*/
    #include     <sys/types.h>  
    #include     <sys/stat.h>  
    #include     <fcntl.h>      /*文件控制定义*/
    #include     <termios.h>    /*PPSIX 终端控制定义*/
    #include     <errno.h>      /*错误号定义*/



    打开串口

    在 Linux 下串口文件是位于 /dev 下的。串口一 为 /dev/ttyS0,串口二 为 /dev/ttyS1。打开串口是通过使用标准的文件打开函数操作:

    int fd;
    /*以读写方式打开串口*/
    fd = open( "/dev/ttyS0", O_RDWR);
    if (-1 == fd){
    /* 不能打开串口一*/
    perror(" 提示错误!");
    }



    设置串口

    最基本的设置串口包括波特率设置,效验位和停止位设置。串口的设置主要是设置 struct termios 结构体的各成员值。

    struct termio
    { unsigned short  c_iflag; /* 输入模式标志 */
    unsigned short  c_oflag;  /* 输出模式标志 */
    unsigned short  c_cflag;  /* 控制模式标志*/
    unsigned short  c_lflag;  /* local mode flags */
    unsigned char  c_line;      /* line discipline */
    unsigned char  c_cc[NCC];    /* control characters */
    };



    设置这个结构体很复杂,我这里就只说说常见的一些设置:

    波特率设置 下面是修改波特率的代码:

    struct  termios Opt;
    tcgetattr(fd, &Opt);
    cfsetispeed(&Opt,B19200);     /*设置为19200Bps*/
    cfsetospeed(&Opt,B19200);
    tcsetattr(fd,TCANOW,&Opt);



    设置波特率的例子函数:

    /**
    *@brief  设置串口通信速率
    *@param  fd     类型 int  打开串口的文件句柄
    *@param  speed  类型 int  串口速度
    *@return  void
    */
    int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300,
     B38400, B19200, B9600, B4800, B2400, B1200, B300, };
    int name_arr[] = {38400,  19200,  9600,  4800,  2400,  1200,  300, 38400,  
      19200,  9600, 4800, 2400, 1200,  300, };
    void set_speed(int fd, int speed){
    int   i;
    int   status;
    struct termios   Opt;
    tcgetattr(fd, &Opt);
    for ( i= 0;  i < sizeof(speed_arr) / sizeof(int);  i++) {
     if  (speed == name_arr[i]) {    
      tcflush(fd, TCIOFLUSH);    
      cfsetispeed(&Opt, speed_arr[i]);  
      cfsetospeed(&Opt, speed_arr[i]);  
      status = tcsetattr(fd1, TCSANOW, &Opt);  
      if  (status != 0) {        
       perror("tcsetattr fd1");  
       return;    
      }    
      tcflush(fd,TCIOFLUSH);  
     }  
    }
    }



    设置效验的函数:

    /**
    *@brief   设置串口数据位,停止位和效验位
    *@param  fd     类型  int  打开的串口文件句柄
    *@param  databits 类型  int 数据位   取值 为 7 或者8
    *@param  stopbits 类型  int 停止位   取值为 1 或者2
    *@param  parity  类型  int  效验类型 取值为N,E,O,,S
    */
    int set_Parity(int fd,int databits,int stopbits,int parity)
    {
    struct termios options;
    if  ( tcgetattr( fd,&options)  !=  0) {
     perror("SetupSerial 1");    
     return(FALSE);  
    }
    options.c_cflag &= ~CSIZE;
    switch (databits) /*设置数据位数*/
    {  
    case 7:  
     options.c_cflag |= CS7;
     break;
    case 8:    
     options.c_cflag |= CS8;
     break;  
    default:    
     fprintf(stderr,"Unsupported data size\n"); return (FALSE);  
    }
    switch (parity)
    {  
    case 'n':
    case 'N':    
     options.c_cflag &= ~PARENB;   /* Clear parity enable */
     options.c_iflag &= ~INPCK;     /* Enable parity checking */
     break;  
    case 'o':  
    case 'O':    
     options.c_cflag |= (PARODD | PARENB); /* 设置为奇效验*/  
     options.c_iflag |= INPCK;             /* Disnable parity checking */
     break;  
    case 'e':  
    case 'E':  
     options.c_cflag |= PARENB;     /* Enable parity */    
     options.c_cflag &= ~PARODD;   /* 转换为偶效验*/    
     options.c_iflag |= INPCK;       /* Disnable parity checking */
     break;
    case 'S':
    case 's':  /*as no parity*/  
        options.c_cflag &= ~PARENB;
     options.c_cflag &= ~CSTOPB;break;  
    default:  
     fprintf(stderr,"Unsupported parity\n");    
     return (FALSE);  
    }  
    /* 设置停止位*/  
    switch (stopbits)
    {  
    case 1:    
     options.c_cflag &= ~CSTOPB;  
     break;  
    case 2:    
     options.c_cflag |= CSTOPB;  
       break;
    default:    
      fprintf(stderr,"Unsupported stop bits\n");  
      return (FALSE);
    }
    /* Set input parity option */
    if (parity != 'n')  
    options.c_iflag |= INPCK;
    tcflush(fd,TCIFLUSH);
    options.c_cc[VTIME] = 150; /* 设置超时15 seconds*/  
    options.c_cc[VMIN] = 0; /* Update the options and do it NOW */
    if (tcsetattr(fd,TCSANOW,&options) != 0)  
    {
    perror("SetupSerial 3");  
    return (FALSE);  
    }
    return (TRUE);  
    }



    需要注意的是: 如果不是开发终端之类的,只是串口传输数据,而不需要串口来处理,那么使用原始模式(Raw Mode)方式来通讯,设置方式如下:

    options.c_lflag  &= ~(ICANON | ECHO | ECHOE | ISIG);  /*Input*/
    options.c_oflag  &= ~OPOST;   /*Output*/



    读写串口

    设置好串口之后,读写串口就很容易了,把串口当作文件读写就是。

    ·发送数据

    char  buffer[1024];int    Length;int    nByte;nByte = write(fd, buffer ,Length)



    ·读取串口数据

    使用文件操作read函数读取,如果设置为原始模式(Raw Mode)传输数据,那么read函数返回的字符数是实际串口收到的字符数。可以使用操作文件的函数来实现异步读取,如fcntl,或者select等来操作。

    char  buff[1024];int    Len;int  readByte = read(fd,buff,Len);



    关闭串口

    关闭串口就是关闭文件。

    close(fd);



    例子

    下面是一个简单的读取串口数据的例子,使用了上面定义的一些函数和头文件

    /**********************************************************************
    代码说明:使用串口二测试的,发送的数据是字符,
    但是没有发送字符串结束符号,所以接收到后,后面加上了结束符号。
    我测试使用的是单片机发送数据到第二个串口,测试通过。
    **********************************************************************/
    #define FALSE  -1
    #define TRUE   0
    /*********************************************************************/
    int OpenDev(char *Dev)
    {
    int fd = open( Dev, O_RDWR );
           //| O_NOCTTY | O_NDELAY
    if (-1 == fd)
    {    
     perror("Can't Open Serial Port");
     return -1;  
    }
    else
     return fd;
    }
    int main(int argc, char **argv){
    int fd;
    int nread;
    char buff[512];
    char *dev  = "/dev/ttyS1"; //串口二
    fd = OpenDev(dev);
    set_speed(fd,19200);
    if (set_Parity(fd,8,1,'N') == FALSE)  {
     printf("Set Parity Error\n");
     exit (0);
    }
    while (1) //循环读取数据
    {  
    while((nread = read(fd, buff, 512))>0)
    {
     printf("\nLen %d\n",nread);
     buff[nread+1] = '\0';  
     printf( "\n%s", buff);  
    }
    }
    //close(fd);  
    // exit (0);
    }
    09-10-23 编程 匿名
    2回答
  • 怎样发布一个java网站 

    0
    0
    在发布Java Web程序到Internet之前,需具备如下前提条件(假设使用的是Tomcat服务器)。

    þ        拥有一台可连接到Internet的计算机,并且是固定IP(最好是公网的静态ip,要不然非同一局域网别人怎么访问)。

    þ        拥有一个域名。

    þ        在可连接到Internet的计算机上要有Java Web程序的运行环境,即已经成功安装了JDK和Tomcat服务器。

    þ        拥有一个可运行的Java Web应用程序。

    拥有了上述条件,就可以将已经拥有的Java Web程序发布到Internet了。发布步骤如下:

    (1)申请一个域名,例如www.yxq.com

    (2)将域名记录的IP指向自己的计算机的IP。

    (3)在本地计算机中创建一个目录用来存放Java Web程序,如D:\JSPWeb。

    (4)将Java Web程序复制到D:\JSPWeb目录下,可对其重命名,如命名为01_CityInfo。

    (5) 将Tomcat服务器端口改为80。修改方法为:打开Tomcat安装目录下conf目录下的server.xml文件,找到以下配置代码。

    <Connector port="8080" protocol="HTTP/1.1"

             connectionTimeout="20000"

             redirectPort="8443" />

    修改<Connector>元素中port属性的值为80。

    (6)建立虚拟主机,主机名为申请的域名。创建方法为:打开Tomcat安装目录下conf目录下的server.xml文件,找到<Host>元素并进行如下配置。

    <Host name="www.yxq.com"  appBase="D:/JSPWeb"

         unpackWARs="true" autoDeploy="true"

         xmlValidation="false" xmlNamespaceAware="false">

         <Context path="/city" docBase="01_CityInfo" debug='0' reaload="true"/>

    </Host>

    <Host>元素用来创建主机,name属性指定了主机名(域名),appBase属性指定了Java Web应用程序存放在本地计算机中的位置。<Context>元素用来配置主机的Web应用程序,path属性指定了访问主机中某个Web应用的路径,docBase属性指定了相对于D:/JSPWeb目录下的Java Web应用程序路径。所以,若访问www.yxq.com/city路径,既可访问D:/JSPWeb目录下的01_CityInfoWeb应用程序,也可以将path属性设置为“/”,这样直接访问www.yxq.com即可访问01_CityInfoWeb应用程序。

    (7)访问站点。启动Tomcat服务器,在浏览器地址栏中输入“http://www.yxq.com/city”,访问发布的Java Web应用程序。

    也可通过该方法将网站发布到局域网内,只不过在<Host>元素中name属性指定的是计算机名称,并且该计算机名称不能包含空格或“.”等非法字符,否则,局域网内的其他计算机将不能访问发布的网站。
    在发布Java Web程序到Internet之前,需具备如下前提条件(假设使用的是Tomcat服务器)。

    þ        拥有一台可连接到Internet的计算机,并且是固定IP(最好是公网的静态ip,要不然非同一局域网别人怎么访问)。

    þ        拥有一个域名。

    þ        在可连接到Internet的计算机上要有Java Web程序的运行环境,即已经成功安装了JDK和Tomcat服务器。

    þ        拥有一个可运行的Java Web应用程序。

    拥有了上述条件,就可以将已经拥有的Java Web程序发布到Internet了。发布步骤如下:

    (1)申请一个域名,例如www.yxq.com

    (2)将域名记录的IP指向自己的计算机的IP。

    (3)在本地计算机中创建一个目录用来存放Java Web程序,如D:\JSPWeb。

    (4)将Java Web程序复制到D:\JSPWeb目录下,可对其重命名,如命名为01_CityInfo。

    (5) 将Tomcat服务器端口改为80。修改方法为:打开Tomcat安装目录下conf目录下的server.xml文件,找到以下配置代码。

    <Connector port="8080" protocol="HTTP/1.1"

             connectionTimeout="20000"

             redirectPort="8443" />

    修改<Connector>元素中port属性的值为80。

    (6)建立虚拟主机,主机名为申请的域名。创建方法为:打开Tomcat安装目录下conf目录下的server.xml文件,找到<Host>元素并进行如下配置。

    <Host name="www.yxq.com"  appBase="D:/JSPWeb"

         unpackWARs="true" autoDeploy="true"

         xmlValidation="false" xmlNamespaceAware="false">

         <Context path="/city" docBase="01_CityInfo" debug='0' reaload="true"/>

    </Host>

    <Host>元素用来创建主机,name属性指定了主机名(域名),appBase属性指定了Java Web应用程序存放在本地计算机中的位置。<Context>元素用来配置主机的Web应用程序,path属性指定了访问主机中某个Web应用的路径,docBase属性指定了相对于D:/JSPWeb目录下的Java Web应用程序路径。所以,若访问www.yxq.com/city路径,既可访问D:/JSPWeb目录下的01_CityInfoWeb应用程序,也可以将path属性设置为“/”,这样直接访问www.yxq.com即可访问01_CityInfoWeb应用程序。

    (7)访问站点。启动Tomcat服务器,在浏览器地址栏中输入“http://www.yxq.com/city”,访问发布的Java Web应用程序。

    也可通过该方法将网站发布到局域网内,只不过在<Host>元素中name属性指定的是计算机名称,并且该计算机名称不能包含空格或“.”等非法字符,否则,局域网内的其他计算机将不能访问发布的网站。


    3
    09-10-23 Java 匿名
    6回答
  • asp二级树怎么实现? 

    0
    0
    1。tblcategory
    字段名 类型
    root binary 说明树关或开(目录的根)
    id 自动编号 关键字
    sort integer 识别该字段内容的整数(如果root是开状态sort为0)表示显示的目录的顺序
    name text(255)能包含html中的标识符
    href text(255) 允许空
    2。tblpages
    id 自动编号
    sort integer 关键字
    name text(255)
    href text(255)

    3.default.htm
    <html>
    <head>
    <title>javascript tree control template</title>
    </head>
    <frameset cols=""210,*"">
    ?<frame src=""tree.asp"" name=""toc"">
    ?<frame src=""main.htm"" name=""basefrm"">
    </frameset>
    </html>

    4.main.htm
    <head><title></title></head>
    <body>
    <h2>start page</h2>
    </body>
    </html>

    5.tree.asp
    set conn = server.createobject(""adodb.connection"")
    set rs = server.createobject(""adodb.recordset"")
    conn.open ""driver=microsoft access driver (*.mdb);dbq="" & server.mappath(""toc.mdb"")

    strsql = ""select tblcategory.root, tblcategory.[id], tblcategory.sort as catsort, tblpages.sort as linksort, tblcategory.[name] as catname, tblcategory.href as caturl, tblpages.[name] as linkname, tblpages.href as linkurl from tblcategory left join tblpages on tblcategory.[id] = tblpages.[id] order by tblcategory.root asc, tblcategory.sort, tblpages.sort""

    rs.open strsql, conn, 2, 2

    if not rs.eof then rs.movefirst
    currentid = """" %>
    <html>
    <head>
    <link rel=""stylesheet"" href=""ftie4style.css"">
    <!-- infrastructure code for the tree -->
    <script src=""ftiens4.js""></script>
    <!-- execution of the code that actually builds the specific tree -->
    <script>
    usetextlinks = 1
    <%
    do while not rs.eof
    if rs(""root"") = true then %>
    folderstree = gfld(""<%= rs(""catname"") %>"", ""<%= rs(""caturl"") %>"")
    <% else %>
    aux1 = insfld(folderstree, gfld(""<%= rs(""catname"") %>"", ""<%= rs(""caturl"") %>""))
    <% currentid = rs(""id"")
    savedid = rs(""id"")
    do while currentid = savedid and not rs.eof
    if rs(""linkname"") <> """" then %>
    insdoc(aux1, glnk(0, ""<%= rs(""linkname"") %>"", ""<%= rs(""linkurl"") %>""))
    <%
    end if
    rs.movenext
    if not rs.eof then currentid = rs(""id"")
    loop
    end if
    if currentid = """" then rs.movenext
    loop %>
    </script>
    <script>
    initializedocument()
    </script>
    <base target=""basefrm"">
    <title></title>
    </head>
    <body bgcolor=""white"">
    </body>
    </html>
    2回答
  • 如何将图片上的文字转换成word文档?这一过程必须要用到扫描仪吗? 

    0
    0
    因为OCR V7 .5文字识别软件只能使用TIF、BMP、PXC三种格式的黑白图像文件。而数码相机输出的文件一般有两种格式,TIF格式和JPEG格式。由于获得的是彩色图片,所以要把导出的文件处理一下。在Photoshop软件中,选择“图像”命令菜单的“调整”选项,然后选“阈值”命令,该命令可以将一张彩色或者是灰度图片根据指定的阈值转变成一张具有高反差的黑白图片。们可以根据图片的效果适当调整图片的阈值,就可把数码相机导出的照片变成高反差的黑白照片,但这还不是二值(黑白)图像,需要把图片另存为BMP格式文件,关闭Photoshop软件。打开操作系统中附件里的“画图”软件,打开保存好的BMP文件,另存为单色位图文件。这样数码相机所拍摄的图片经过处理很容易就变成了OCR V7.5文字识别软件可使用的BMP格式黑白图像文件。
    在OCR V7 .5文字识别软件中,在命令菜单中选择“打开”,在对话框的文件类型中选择“BMP格式”,打开文件,选好识别区域,就可识别文字,实际的识别效果非常不错。一页A4幅面的文稿只用几秒钟就可识别完成。
    最后强调的是,文字识别的成功与否主要取决于数码相机拍摄图片的质量,一是要合理选择数码相机的像素,现在200万像素以上的相机很普及,价格也不贵。而只有640×480的30万像素老数码相机拍摄的图片文字识别率很低,一般不能用来翻拍。二是要合理使用光源,光线尽可能用自然的散射光,还要关闭数码相机的闪光灯。翻拍白纸黑字的文稿时,要使用手动拍摄模式并增加曝光补偿,拍出的照片才会光线均匀,经过Photoshop软件处理后字迹清晰,如果图片拍摄的好,可以不用在Photoshop中调整图片的阈值。只需要在Photoshop中转换一下图片的文件格式,然后就可以直接在“画图”软件中把BMP格式的图片文件调入并保存为单色位图文件。
    5回答
  • cad鸟瞰视图什么意识 

    0
    0
    鸟瞰图是三维的,相当于你从天上往下看,所以要用cad里的三维技术画。
    具体怎么画呢很难说,你楼房的尺寸标注之类的图纸有的吧,没的话先确定尺寸。就根据楼房各种尺寸利用各种三维实体功能画图和编辑,然后一般都是使用布尔运算的交集、差集、并集之类的。建议你找一本三维教程中有画建筑的实例的书或者找这种视频教程,不难的。
    09-10-23 互联网 匿名
    1回答
  • 怎样在vb net中声明名称 

    0
    0
    如果代码引用已声明元素,则 Visual Basic 编译器将引用中的名称与该名称的相应声明进行匹配。如果元素是在代码之外定义的,或者使用同一名称声明了多个元素,则可能需要“限定”该名称,以使编译器能够解决任何可能的多义性或找到该元素。

    限定名称意味着要在源语句中该名称的前面提供信息,标识出定义目标元素的位置。此信息称为“限定字符串”。它可以包含一个或多个命名空间以及一个模块、类或结构。

    限定字符串应唯一地指定目标元素所在的模块、类或结构。容器依次位于另一个包含元素(通常是命名空间)中。限定字符串可能需要包含多个包含元素。

    通过限定名称访问已声明元素
    确定定义元素的位置。这可能包括一个命名空间,甚至一个命名空间层次结构。在最低层命名空间内,元素必须包含在模块、类或结构内。

    复制代码
    ' Assume the following hierarchy exists outside your code.
    Namespace outerSpace
       Namespace innerSpace
           Module holdsTotals
               Public Structure totals
                   Public thisTotal As Integer
                   Public Shared grandTotal As Long
               End Structure
           End Module
       End Namespace
    End Namespace
    基于目标元素的位置确定限定路径。从最高层命名空间开始,直到最低层命名空间,并以包含目标元素的模块、类或结构结束。路径中的每个元素都必须包含其后的元素。

    outerSpace → innerSpace → holdsTotals → totals

    准备目标元素的限定字符串。在路径中每个元素的后面放置一个句点 (.)。应用程序必须能够访问限定字符串中的每个元素。

    复制代码
    outerSpace.innerSpace.holdsTotals.totals.
    以常规方式编写引用目标元素的表达式或赋值语句。

    复制代码
    grandTotal = 9000
    在目标元素名前面放置限定字符串。元素名称应紧跟在包含该元素的模块、类或结构之后的句点 (.) 后面。

    复制代码
    ' Assume the following module is part of your code.
    Module accessGrandTotal
       Public Sub setGrandTotal()
           outerSpace.innerSpace.holdsTotals.totals.grandTotal = 9000
       End Sub
    End Module
    编译器使用限定字符串来查找可与目标元素引用匹配的明确、唯一的声明。
    09-10-23 编程 匿名
    3回答
  • 软件测试有什么基础知识学????? 

    0
    0
    (1) 程序的功能是否正确;(要求计算机知识)

    (2) 是否符合用户的使用习惯;(要求界面设计知识和换位思考能力)

    (3) 性能是否满足要求,例如长时间使用;稳定性;(要求深入的计算机知识)

    (4) 是否能够满足用户可能的不同操作系统的要求;(要求计算机知识)

    (5) 如果在全球发布,是否满足不同语言和文化的需求;(要求软件国际化测试知识)

    (6) 如何搭建测试环境;(动手能力,硬件知识)

    (7) 做代码检查;(比较深入的C语言知识)

    (8) …

    所以,各方面都了解一点,你在做测试的过程当中你会感觉顺手的多。如果某写方面还差一些,没有关系,计算机行业的特点就是边做边学,只要是个有心人,学习是很快的。

    其次,要掌握一门编程语言。有的朋友可能会说,我就是不愿意做编程才来做测试的,怎么测试还有这么一个要求?我要尝试说服你:)。我的理由有两个:

    1. 只有知道怎么做一个软件产品,才能真正懂得这个产品。而只有真正懂得了产品,才能做好测试。一行代码不会,你会始终是个门外汉。不要满足于点鼠标,而去尝试着打开我们面前的黑盒子。

    2. 自动化测试技术需要编程技术。自动化测试是软件测试的一个发展方向,一方面很多测试工具都需要人工干预,编写代码;另一方面在有的情况下需要自己编写测试工具。

    对于测试员来说,编程技术不要求精通,但要会。

    再次,学好英语。在现阶段,我们只能承认,在计算机方面,英语国家领先。有很多的资料都是英语的,如果仅仅局限在中文资料方面,会影响你的渊博程度:)。举一个简单的例子,Windows操作系统会捕捉到一些程序或者操作系统内部的异常,你可以根据这个异常到微软网站上去查找错误原因和解决办法,其中有很大一部分资料就是英文的,因为还没有翻译过来或者以后也不会翻译的。
    7回答
  • MAYA动画和一般的动画有区别吗? 

    0
    0
    一)材质球的使用特性(常用类型)

    Blinn / Phong / PhongE Lambert / Anisotropic / Shading Map / Surface Shader / Layered Shader

    给大家先介绍一下材质球,在maya或者是其他三维软件中一般都有以下几种材质:

    Lambert、Phong、phongE、Blinn、Anisotropic,另外还有LayeredShader、SurfaceShader、ShadingMaps、UseBackground等几种特殊的材质类型。


    1 Blinn:具有较好的软高光效果,是许多艺术家经常使用的材质,有高质量的镜面高光效果,所使用的参数是Eccentricity Specular roll off等值对高光的柔化程度和高光的亮度,这适用于一些有机表面。
      2 Lambert:它不包括任何任何镜面属性,对粗糙物体来说,这项属性是非常有用的,它不会反射出周围的环境。Lambert材质可以是透明的,在光线追踪渲染中发生折射,但是如果没有镜面属性,该类型就不会发生折射。平坦的磨光效果可以用于砖或混凝土表面。它多用于不光滑的表面,是一种自然材质,常用来表现自然界的物体材质,如:木头、岩石等。
      3 Phong:有明显的高光区,适用于湿滑的、表面具有光泽的物体。如:玻璃、水等.利用cosine Power对blinn材质的高光区域进行调节.
      4 PhongE:它能很好地根据材质的透明度为控制高光区的效果。如果要创建比较光泽的表面效果.它是Roughness属性,控制高亮节的柔和性,Whiteness属性,控制高亮的密度,以及Hightlight Size属性等。
      5 Layer shade:它可以将不同的材质节点合成在一起。每一层都具有其自己的属性,每种材质都可以单独设计,然后连接到分层底纹上。上层的透明度可以调整或者建立贴图,显示出下层的某个部分。在层材质中,白色的区域是完全透明的,黑色区域是完全不透明的。
      6 Anisotropic:各向异性:这种材质类型用于模拟具有微细凹槽的表面,镜面高亮与凹槽的方向接近于垂直。某些材质,例如:头发、斑点和CD盘片,都具有各向异性的高亮。
      7 shading map:给表面添加一个颜色,通常应用于非现实或卡通、阴影效果。
      8 Surface Shader:给材质节点赋以颜色,有些和shading map差不多,但是它除了颜色以外,还有透明度,辉光度还有光洁度,所以在目前的卡通材质的节点里,选择Surface Shader比较多
      9 Use Backgroud:有Specular和Reflectivity两个变量,用来作光影追踪,一般用来作合成的单色背景使用,来进行扣像.
      10 体积材质:

    体积材质主要是用于创建环境的气氛效果。
      Env Fog环境雾:它虽然是作为一种材质出现在MAYA对话框中,但在你使用它是最好不要把它当做材质来用,它相当于一种场景。它可以将Fog沿摄像机的角度铺满整个场景。
      Light Fog灯光雾:这种材质与环境雾的最大区别在于它所产生的雾效只分布于点光源和聚光源的照射区域范围中,而不是整个场景。这种材质十分类似3d Studio Max中的体积雾特效。
      Particle Cloud粒子云:这种材质大多与Particle Cloud粒子云粒子系统联合使用。作为一种材质,它有与粒子系统发射器相连接的接口,即可以生产稀薄气体的效果,又可以产生厚重的云。它可以为粒子设置相应的材质。
      Volume Fog体积雾:它有别于Env Fog环境雾,可以产生阴影化投射的效果。
      Volume Shader体积材质:这种材质表面类型中对应的是Surface Shader表面阴影材质,它们之间的区别在于Volume Shader材质能生成立体的阴影化投射效果。

      11 Displacement Materials:置换材质


    这主要是用于产生一种更加真实的明显的三维凹凸效果。它不同于我们在表面材质中所讲到的Bump mapping,Bump mapping在于它所产生的三维凹凸效果对物体边缘不会产生效果,而Displacement materials三维凹凸效果是真正的连边缘都有起伏的三维效果



    (二) 材质的属性

    材质基本属性在其材质编辑器中可以看到,并可以进行编辑,它一般分为:

    一般的材质都有通用属性和共享参数


    (1) 一般属性(也称为通用属性):

    一般的材质都有通用属性和共享参数

    通用材质属性:

    通用材质属性是指大部分的材质都具有的属性。基本上描叙了在开始所讲的物体表面的视觉元素的大部分内容,所不同的是在这里指出了它们在软件中的调节方法。


    Color:材质的颜色。

    Transparency:材质的颜色和透明度。例如:若Transparency的值为0(黑)表面完全不透明。若值为1(白)这为完全透明。要设定一个物体透明,可以设置Transparency的颜色为灰色,或者一材质的颜色同色。Transparency的默认值为0。

    Ambient Color ambient Color:的颜色缺省为黑色,这时它并不影响材质的颜色。当Ambient Color变亮时,它改变背照亮部分的颜色,并混合这两种颜色(主要是影响材质的阴影和中间调部分 。它是模拟环境对材质影响的效果,是一个被动的反映。)



    Incandescence:白炽,模仿白炽状态的物体发射的颜色和光亮(但并不照亮别的物体),默认值为0(黑)

    其典型的例子如模拟红彤彤的熔岩,可使用亮红色的Incandescence色。在制作树叶的时候,可以稍加以点Incandescence色使叶子看起来更生动。(同样也是影响阴影和中间调部分,但是它和环境光的区别是一个是被动受光,一个是本身主动发光,比如金属高温发热的状态。)


    Bump Mapping:通过对凹凸映射纹理的像素颜色强度的取值,在渲染时改变模型表面法线使它看上去产生凹凸的感觉。

    实际上给予了凹凸贴图的物体的表面并没有改变。如果你渲染一个有凹凸贴图的球,观察它的边缘,发现它仍是圆的。


    Diffuse:漫射,它是描述的是物体在各个方向反射光线的能力。Dlffuse值的作用好像一个比例因子。应用于Color设置,Diffuse的值越高,越接近设置的表面颜色。(它主要影响材质的中间调部分。)
    它的默认值为0.8,可用值为0~无穷。



    Translucence:半透明是指一种材质允许光线通过,但是并不透明的状态.这样的材质可以接受来自外部的光线,变得发光.常见的半透明材质还有蜡,一定质地的布,模糊

    玻璃以及花瓣和叶子. 表面的Translucence值在被无阴影投射灯光照亮时为0,或者无穷大。

    如果场景中有版透明物体和投射阴影的灯,若出现了锯齿状的暗部边缘,这时应该提高射灯的Dmap Filter Size或者降低Dmap Resolution。

    若设置物体具有较高的Translucence值,这时应该降低Dlffuse值以避免冲突。

    表面的实际半透明效果基于从光源处获得的照明。和它的透明性是无关的。但是当一个物体越透明时,其半透明和漫射也会得到调节。环境光对半透明(或者漫射)无影响。


    2) 高光属性(lambert没有此类属性):控制表面反射灯光或者表面炽热所产生的辉光的外观。

    它对于Lambert、Phong、phongE、Blinn、Anisotropic材质的用处很大。

    Eccentricity:它可以控制高广范围的大小

    Specular Roll off :是控制表面反射环境的能力

    Specular Color:是控制表面高光的颜色,黑色无表面高光
    (3)光学属性:

    Reflection:反射,可模拟自然界中的反射现象,可以在Reflected Color中进行贴图,可以通过Reflectivity控制其反射率。

    Refraction:折射,打开它时,计算光影追踪,但速度会变慢关闭它时,不计算光影追踪。


    Refractive Index:

    折射率,庙叙光线穿过透明物体时被弯曲的程度。(是光线多一种介质进入另一种介质时发生,如空气进入玻璃,离开水进入空气。折射率和两种介质有关)

    射率为1时不弯曲,常见物体的折射率如下:

    空气/空气 1

    空气/水 1。33

    空气/玻璃 1。44

    空气/石英 1。55

    空气/晶体 2。00

    空气/钻石 2。42

    Refraction Limit:光线被折射的最大次数,计算机低于六次就不计算折射了,一般就是6次,次数越多,运算速度就越慢,钻石折射次数一般算为12。如果Refraction Limit=10,则表示该表面折射的光线在之前已经过了9道折射或反射。该表面不折射前面已经过了10次或更多次折射或反射的光。它的取值为0~无穷,滑杆的值为0~10,缺省值为6。


    Translucence Depth:(半透明深度)半透明距离

    Light Absorbance:(光的吸收率)此值越大,反射与折射率越小

    Surface Thickness:(表面厚度)实际上是指介质的厚度,通过此项的调节,可以影响折射的范围

    Shadow Attenuation:(阴影衰减)是通过折射范围的不同而导致阴影范围的大小控制。

    Reflection Limit:光线被反射的最大次数,同上所叙。如果Reflection Limit=10,则表示该表面反射的光线在之前已经过了9道反射。该表面不反射前面已经过了10次或更多次反射的光。它的取值为0~无穷,滑杆的值为0~10,缺省值为。

    Reflected Color:反射颜色)一般都用于环境贴图,尤其是玻璃、水。

    Reflection Specularity:此属性用于Phong、phongE、Blinn、Anisotropic材质。


    Raytrace控制光阴追踪时的表面的外观,光影追踪可用于Lambert、Phong、phongE、Blinn、Anisotropic材质。


    (4)其他属性(渲染属性):

    Hide Source:使表面在渲染时不可见(如果Glow Intensity的值不为0),而只显示辉光的效果。默认为Off。

    Glow Intensity:控制表面辉光的亮度。范围为0~1,默认为0。

    Matte Opacity:用户可以在渲染中得到RGB图像,Alpha图像和Depth图像。这里我们也可以得到一个可以控制参数的Alpha,那么就要依赖Matte Opacity选项。


    其中有三个参数,分别是Opacity Gain、Solid Matte和Black Hole


    Opacity Gain:是Matte Opacity的默认设置,它可以用来缩放某个物体的遮罩参数,其公式是:物体的遮罩参数=渲染后遮罩数值*Matte Opacity

    Solid Matte:可以得到一个固定的遮罩数值.其公式是:物体的遮罩数值=Matte Opacity

    Black Hole:使物体的遮罩数为0 其公式是:物体的遮罩数值=0

    注:Opacity Gain和Solid Matte在一般的材质球上想看到效果是很难的,可以用Use background节点看到其效果的变化。它们的功用主要是体现在合成上的

    Hardware Texturing:它的主要作用就是更为清楚的显示某个材质属性。


    __________________

    Extra Attributes:可以添加一些属性编辑器中没有的属性,主要用来驱动关键帧和粒子数性的添加

    中主要分为Attribute Name(属性名称)、Data Type(数据类型)、Numeric Attribute Properties(数字属性的范围)


    Attribute Name:可以创建一个属性的名称(不能输入中文及数字)

    Data Type:共有六种数据类型

    1. Vector (矢量类型):它可以出现X、Y、Z世界坐标系的形式

    2. Float(浮点类型):它可以出现一个Slider(滑条),它可以以小数形式进行精确控制

    3. Integer(整数类型):同样也是一个滑条,但是只能够以整数形式控制。如1、2、3

    4. Boolean(布尔形式):可以出现一个ON/OFF按钮

    5. String(字符串形式):可以在提示符后输入数字或名称

    6. Enum(全称enumerated,列举形式):可以出现一个下拉菜单,可以在Enum Names(列举名称)中添加我们所需要的名称,如 Green、Blue、Red等

    Numeric Attribute Properties:可以输入最大值,最小值,及默认值,如果不输入任何值,将认为其范围是正无穷到负无穷。
    09-10-23
    2回答
  • 执行SQL语句出错 怎么解决 

    0
    0
    Private   m_objConn   As   ADODB.Connection  
     Private   m_objRs   As   ADODB.Recordset  
       
     '执行SQL语句  
     Public   Function   ExecuteSQL(ByVal   strSQL   As   String)   As   Recordset  
       
             On   Error   GoTo   ErrHandler  
               
             If   m_objConn.State   =   adStateClosed   Then   OpenDB   (strDBPata)  
             If   m_objRs.State   <>   adStateClosed   Then   m_objRs.Close  
             If   ExecuteSQL   Is   Nothing   Then   Set   ExecuteSQL   =   Nothing  
               
             '判断是否有记录集返回,如果有,则用Recordset对象执行  
             If   InStr(1,   strSQL,   "Select",   1)   >   0   Then  
                     If   m_objRs   Is   Nothing   Then   Set   m_objRs   =   New   ADODB.Recordset  
                     m_objRs.Open   strSQL,   m_objConn,   adOpenStatic,   adLockOptimistic  
                     Set   ExecuteSQL   =   m_objRs  
             Else  
                     '如果没有,则用Connection执行  
                     m_objConn.Execute   strSQL  
             End   If  
             Exit   Function  
       
     ErrHandler:  
             If   m_objRs.State   <>   adStateClosed   Then   m_objRs.Close  
             Set   ExecuteSQL   =   Nothing  
             m_strLastError   =   Err.Description  
               
     End   Function
    09-10-22 编程 匿名
    2回答
  • matlab中myfun函数怎么用 

    0
    0
    1. m文件函数
    以function关键字开头的m文件,并且通常函数名要与文件名相同。例如下面的内容保存为myfun2.m即是m文件函数,它用来求两数之和:
    function f=myfun2(x,y)
    f=x+y;
    2. 子函数
    matlab可以在m文件函数中定义一个函数和多个子函数,但是需要注意的是子函数只能由同一m文件中的函数调用。如下面的例子:
    function [max,min]=mypfun(x)  %主函数
    n=length(x);
    max=mysubfun1(x,n);
    min=mysubfun2(x);

    function r=mysubfun1(x,n) %子函数1
    x1=sort(x);
    r=x1(n);

    function r=mysubfun2(x)  %子函数2
    x1=sort(x);
    r=x1(1);
    3. 内联函数
    在函数文件内,m脚本和command窗口都可以用的一种定义函数的方式,但是要注意这种函数比较多的时候会占用比较多的内存空间。
    如:
    >> ci=inline('x.^2')
    ci =
        Inline function:
        ci(x) = x.^2
    4. 匿名函数
    使用matlab函数句柄操作符@,可以定义指向matlab内置函数和用户自定义函数的函数句柄,函数句柄也可以像函数一样的使用。例如:
    >>x=-pi:0.1:pi;
    >> fh={@cos,@sin};
    fh =
       @cos    @sin
    >>plot(fh{2}(x))
    09-10-22 编程 匿名
    3回答
1 2 3 4 5 6 7 8 9 10 11 ...下一页
意见反馈 帮助