深入解析长沙

2025-01-06

深入解析长沙(精选6篇)

1.深入解析长沙 篇一

长沙网络营销解析企业品牌数字营销变迁特点

通过上文《长沙网络营销解析企业品牌数字营销背景》的介绍,相信大家对企业品牌走上数字营销之路的必然性有了极大的认可。下面,长沙网络营销奇谋天下在这里针对这种数字营销带来的变迁特点做一简单说明。

第一,信息传播模式的变化

从单向的1.0,即一对多的传播到互动的2.0,即多对多传播,再到有更多的圈层和融合关系的交叉扩散和聚合的3.0的传播,进入一个所有人对所有人传播,以及没有中心的点对点的传播时代。

第二,信息形式和载体的变化

信息从文本信息、图片的信息变成图文+视频的信息。

第三,信息依赖主体的变化

过去消费者在网上寻找信息,更多依赖网站上提供的文本图像的信息,但是现在消费者却更多依赖人,什么网站不再是核心,而是什么人说的很重要,如果是关系圈中的人说的,或者是自己崇拜的人说的,对于消费者就是一言九鼎,消费者更关心自己所熟悉的人的消费体验和所发表的意见。

长沙网络营销奇谋天下认为,在这样的一个“社交化”的时代,无论是作为传播渠道的媒体还是作为广告主的企业,都需要应对社交媒体带来的影响。媒体不具备社交化的属性,消费者的黏性就很难建立,因此现在无论是像新浪这样的门户,还是像淘宝这样的电子商务平台,都在加入社交化元素来提升用户价值。而消费者的变化以及媒介

行为的习惯变化,也在进一步改变企业原有的营销模式,今天的企业已经无法通过单纯的广告传播去控制和左右品牌的声誉,在SNS、微博等社交媒体上,常可能由于一个小事件引发品牌的大危机,因此对于今天的企业而言,不了解社交媒体,不接触社会化媒体营销,已经很难跟得上消费者的步伐。

接下来,长沙网络营销奇谋天下再来谈谈消费者的社会化特点:第一,消费信息和所知新闻来源主要通过社会化媒体网站;

第二,越来越多的人通过社会化媒体知悉喜欢品牌的新产品; 第三,消费者更渴望与品牌进行互动交流;

第四,消费者相信社会化媒体上人们对于品牌的评价;

第五,消费者期待品牌保持活跃度,并希望品牌能倾听他们的需求,能快速做出正确反应。

2.深入解析长沙 篇二

1.1 什么是VITC

VITC, 全称Vertical Interval Time Code, 又叫场逆程时间码。

VITC码是在亮度 (Y) 信号调频之前, 在场消隐期间的某两行上 (可自定义, 通常在场均衡脉冲之后及测试行信号之前加入, 如加在11和13行) 与亮度信号一同经过调频, 利用视频磁头记录在视频磁迹上。由于使用的是视频磁头, VITC码仅局限于录制视频信号的同时录制时间码, 也就是说, 伴随视频信号的VITC码一旦产生便不会改变, 而在此之前或之后都不能单独将VITC记录到磁带上去。需要注意的是VITC不能录制在音频轨上, 所以音频磁带不能使用。

1.2 VITC码的特性

VITC码记录在磁带上, 对应每一帧图像的时间地址码, 以00:00:00:00 (即××小时××分钟××秒××帧) 的形式表示磁带的具体位置。VITC码每一场记录两行, 每帧记录4行, 这4行代表该帧的码值, 具有完全一样的码型内容, 大大减少了由于磁粉脱落造成的误差。每个VITC码统一规定为90bit, 故VITC码的码率 (PAL制) 为90 (比特/行) ×4 (行/帧) ×25 (帧/秒) =9kb/s, 记录频率为50Hz, 其精度达到1场。

1.3 VITC码的优缺点

VITC码的优点在于不仅具有绝对性和唯一性, 无积累误差, 而且其精度达到场精度, 使它在节目素材管理、非线性编辑系统和自动播出系统中获得广泛使用。此外, VITC码在VTR录像机慢放 (逐帧搜索) 或暂停过程中也可正常输出, (因为此时磁鼓的转速是基本不变的) 。

其不足之处是:由于它是利用视频磁头来录放, 在快放时 (如10倍正常带速以上) 因视频磁头不能准确地跟踪磁迹而有可能丢失时间码。

2 VITC的解码

2.1 BT.1366标准VITC的位置和定时

VITC, 由BT.1366标准所定义, 是调制在场消隐区的一行的, 这一行共有115个VITC位, 有效的90位。VITC的起始位置, 在行同步前沿之后11.2μs处。低电平与消隐电平一致, 高电平比消隐电平高0.56V。90比特所占的时间为49.655μs。如图1。

2.2 VITC位的定义

表1给出了VITC 90个有效位的定义, 从表中可看出每10的头2位为同步位, 格式固定为“1”“0”。此外, 2-5位为帧个位, 取值范围为0-9;12-13为帧十位, 取值范围为0-2;22-25位为秒个位, 取值范围为0-9;32-34为秒十位, 取值范围为0-5;42-45位为分个位, 取值范围为0-9;52-54位为分十位, 取值范围为0-5;62-65位为小时个位, 取值范围为0-9;72-73位为小时十位, 取值范围为0-2。由这些位组成VITC的显示格式00:00:00:00。

2.3 SDI信号内VITC码的解码原理

本文将以如何获得SDI信号内的VITC为例, 来说明怎样对VITC进行解码。该方法以TI的SEED-DAVINCI_EVM板为硬件平台。

A) 硬件平台描述

SEED-DAVINCI_EVM板使用了TI最新的达芬奇技术。达芬奇技术充分利用了TI 25年的数字信号处理与集成电路专业技术来提供系统级芯片 (SOC) , 这种系统针对灵活的数字视频实施而进行了精心优化, 拥有业界领先的性能并集成了可编程数字信号处理器 (DSP) 内核、ARM处理器以及视频加速协处理器。凭借高效的处理能力、存储器、I/O带宽、平衡的内部互连以及专用外设组合, 基于达芬奇技术的SOC能够以最低的成本为视频应用提供理想的核心动力。选用此硬件将大大简化SDI信号中每一帧的抓取, 集成DSP和ARM的双核CPU也将提供更强大的计算能力, 提高检测精度。

B) VITC的调制方式

在开始介绍VITC解码原理前, 我们先了解一点小知识, 即VITC是使用什么方式调制到亮度信号中去的, 这对解码VITC很重要。在实际应用中, VITC采用了不归零调制方式 (NRZ) 。NRZ码的逻辑“0”并非是真正的“0”电平 (如0m V) , 而仅是输出的低电平。同样逻辑“1”也并不是真正的“1”电平 (如300m V) , 而仅是输出的高电平而已。所以对于表1中VITC位的值, 我们不能当做二进制数, 而是代表“高电平”和“低电平”。具体如何处理, 我们将在下面做详细说明。

C) 获得VITC所在行的地址 (代码略)

在Davinci板的内存中建立并初始化一输入缓冲区, 使缓冲区大小刚好为一帧图像大小, 即864*625。通过调用Davinci板硬件功能, 抓取一帧图像并将相应图像的SDI数据存入输入缓冲区, 因为VITC码所在行是固定位置, 故可以计算出VITC码所在行的相对地址, 将该地址加上输入缓冲区的首地址即可获得VITC行的实际物理地址。

D) 检测VITC中同步信号并获得有效VITC位地址

(注:以后同步信号均指VITC中的同步信号)

在获得VITC行地址后, 我们就可以取得VITC码数据并进行解码。从表1中我们可以看出, 在VITC码中每10位有一个同步信号, 对于每10位我们应该都去校正一下数据位置。由图1, 我们可计算出VITC中每位所占长度约为864/115≈7.5像素, 因为VITC位和单一像素的地址并不是完全对应, 如果我们只校正第一个同步信号, 而忽略后续的同步信号, 那么随着往后误差累积增大, 将导致对有效VITC位定位错误, 从而引起解码错误, 甚至于无法解码。

同步信号位地址是可以通过计算获得, 但我们测试发现该理论值和实际值是有些许误差的, 比较简单可行的方法是直接抓取VITC的图像, 从中获取同步信号位的地址。图2是使用Davinci抓出的黑场信号中一行VITC, 其中粗白线表示VITC中的高电平, 细白线表示的是低电平。从图像上我们可以获得每个VITC位中高电平 (同步信号是以高电平起) 前的低电平大概对应的像素值, 由该点进行一定长度误差检测即可得到准确的同步信号地址, 从而得到有效VITC位的地址。我们经过多次测试, 得到的VITC码中每10位的起始位置 (在SAV之后) 分别是25, 99, 174, 248, 323, 397, 472, 546, 621, 单位是像素。

确定起始位置后, 现在可以开始检测VITC码中的同步信号了。如表1所示, 同步信号的格式为1位高电平, 紧接着是1位低电平。因VITC码采用的是NRZ码, 而NRZ码对极性很敏感, 传送中产生的噪声电平都会产生错误的“1”和“0”。为了避免将噪声误判为同步信号, 我们仅在检测到了一定宽度的连续的高电平后, 又检测到了一定宽度的连续的低电平, 才认为是一个合法的同步信号, 而其它非连续的电平则作为噪声过滤。如果找到了一个合法的同步信号, 则由图1可计算出同步信号后的第7个像素值就是我们寻找已久的需要显示的有效VITC位地址。如果未能在一定宽度内找到合法的同步信号, 则说明该SDI信号未包含VITC码或VITC码不在检测的行内。

下面代码及流程图说明如何判断同步信号及获得有效VITC位地址:

E) 解码同步信号后的8个有效VITC位

由图1可计算出VITC码中1个VITC位约等于7.5个像素宽, 由于误差的存在, 为了不影响解码结果, 我们每VITC位仅取中间的5个像素, 两边的像素则忽略。在SDI信号中, 每个像素值中高16位是亮度信号, 低16位是色度信号。通过VITC码定义, 我们知道VITC码是调制到亮度信号中的。所以我们只要判断出5个像素的高16位超过2个是高电平还是低电平, 即可得到该VITC位是高电平还是低电平。同理, 我们可解码出同步信号后8个有效VITC位。

下面代码表明如何解码出一个有效VITC位

F) 获得标准显示VITC (代码略)

结合B和C的方法, 我们可解码得到全部72位有效VITC位的16进制值。根据2.2节说明, 我们可将小时、分、秒、帧所对应的VITC位的16进制值转化为10进制值, 按照00:00:00:00 (即××小时××分钟××秒××帧) 的形式显示出来, 即可得到我们日常所见到的标准VITC。

3 VITC码的新应用

在我们日常工作中, VITC码常用于视频编辑, 其它方面很少使用。其实在播出中我们同样可以使用VITC码, 利用VITC的特性来满足我们的一些特定要求。当然, 这些的前提就是播出的视频素材必须含有VITC码才行。

3.1 VITC码的录制

要将VITC码加入到需播出的视频素材中, 只需将上载端的录像机中的相应设置打开即可。按录像机的MENU键, 可在显示器上出现设置菜单。找到500 VITC BLANK, 将其值置为0001 THRU, 此时视频服务器录制的素材将包含VITC码。然后将501 VITC—POS1和502VITC—POS2分别置为11和13, 即将VITC码加到SDI信号的11行和13行。按SET键, 将刚刚的设置保存在存储器中。这样, 由录像机上载到视频服务器的素材都将带有VITC码。同时, 播出视频服务器也能根据需要, 设定输出信号中VITC码的产生方式。

3.2 使用VITC码参与静帧判断

已贵州电视台为例, 在贵州电视台的围棋频道播出中, 常会碰到这样的情况。在转播围棋比赛时, 由于围棋赛事的特性, 棋手常常处于思考中, 此时电视画面将较长时间保持静止。

虽然此时节目正常, 但是播出系统中一些辅助检测信号的设备却开始发出静帧报警。如图4, 过于频繁的误报, 将大大降低值机人员对检测设备的信任度, 甚至于忽略其报警, 而导致错过及时发现真正的故障。

对于这种情况, 如果素材包含VITC码, 使用VITC参与判断将能够非常轻松的解决问题。VITC的特点决定了其具有的唯一性, 对于一个非静帧的画面, 虽然画面类似静帧效果, 但实际上其VITC码是在不断变化的;而对于一个设备故障引起的静帧故障, 画面不动的同时VITC码也将保持不变。所以我们能够通过对VITC是否变化来有效判断图像的静帧与否。

图5是我们采用自行研发的SDI电视信号检测装置对上例同一素材进行检测, 在静帧检测中打开VITC参与后所获得的结果, 此时将不再报静帧故障, 效果完美。

贵州电视台目前使用该设备进行播出信号检测报警, 完全避免了对于电视图像中正常的画面静止误报, 其性能完全超过了现有的各种检测设备。事实说明, 对于加入VITC参与静帧判断的功能将更有助于提高安全播出。改变思路, 换位思考, 技术的合理利用, 我们将有可能取得丰盛的结果。

摘要:本文阐述了VITC的基本原理, 并以TI的SEED-DAVINCIEVM板为平台, 详细说明了如何从SDI信号中解码出正确的VITC码的原理和方法, 以及介绍了VITC在实际使用中的录制和新应用。

3.深入解析“短打王” 篇三

采访对象:陈士龙

职位:明基中国营销总部投影

机事业部高级产品经理

《数码》:请问明基如何对“短打王”MP512ST进行的市场定位?它都具有哪些新的功能和特点呢?

陈:这款“短打王”主要定位的用户是家庭游戏玩家。它采用BenQ独有的短焦鱼眼技术,可在最短1.5米的距离投射出80英寸的影像面积。对于一般家庭用户而言,客厅宽度很少超过3.5米,拥有这样一款短焦投影机,便可彻底突破家居空间的限制。“短打王”MP512ST亮度达到2200流明,玩游戏时室内无须关灯便可获得清晰的投影画面。另外,“短打王”充分考虑家庭用户的需求,将互动游戏的趣味放到最大,创新性地将音箱纳入投影机中。它左右配备两个5W音箱,拥有3D环绕效果,可媲美家庭普通电视的音响效果。这不但节省家庭用户购置音箱的成本,而且省去了外接音箱线缆缠绕的繁琐。

《数码》:如今数码更新很快,投影机市场竞争也很激烈。您认为“短打王”MP512sT在市场上的销售持续时间会有多长?目前是否已经开始在研发它的升级版呢?

陈:现在投影机市场的确更新很快,我们规划的大概周期是9个月,“短打王”在市场上的持续时间我们也会根据市场的反馈来进行调整。我们明年会推出多款短焦新品,这其中也会有它的升级版,定位会广一些,部分会面对家庭用户,部分会面对商务办公。

《数码》:根据“短打王”的特点,它与小巧的商务型投影机很相似,请问您认为该怎样区分家用游戏型和便携商务型投影机呢?

陈:就“短打王”来看,它和那种小型的商务机的确很难区分开来,其实商务办公更注重价格因素,因此去掉一些多余的功能,能降低成本。今年晚些时候我们会出一款XGA投影机22ST,它去掉了HDMI接口,就是主打商务领域,小型办公室用最适合,价格肯定比这款“短打王”便宜。

《数码》:您认为明基目前在国内投影机行业的排名是多少?请预测一下明基的投影事业在今后一年里会有怎样的前景?

4.深入解析长沙 篇四

饭店排油烟风机及管道噪声对居民区的影响是日常生活中比较常见的生活噪声污染问题,本例针对网友提出的饭店排油烟机振动噪声问题,E路风机网小编予以技术上的建议,希望对碰到类似问题的朋友有帮助。

我住在三楼,一楼经营饭店,之前由于楼上住户共同反对,该饭店将排油烟机的电机从室内移到室外紧靠墙壁处(也就是饭店油烟地下排出管道出口处),电机下砌起了水泥墩支撑。去年刚开始移出的时候,三楼听不到什么噪声,但从今年过年起,只要饭店开动油烟机,我在房间就感到明显的轰鸣声,而且把窗户关起来,轰鸣声依旧,且离房屋主梁越近的地方,轰鸣声越大,由此我判断噪音是由电机工作时产生的震动造成。查阅了相关资料,说是低频振动。找了环保局到测量,声值达标。环保局也说目前低频噪声无法测量,一测量肯定达标。环保局人员到现在准备建议在电机四周挖槽,但是没法挖,电机四周有限制。准备将电机移远些,又认为不能移到人行道上。现在貌似所有办法都用尽了。难道就这么一直遭受低频噪声?呜呜,现在一回家就有阴影不可想象,以后在漫漫岁月中要在嗡嗡的直穿大脑的噪声中度过了!解决方案建议 方案一 基础软性支撑

通过更换基础减振处理,可以消除支撑固件与建筑结构连接,降低振动传递。方案二 排烟管道阻尼隔音包扎

针对这种情况,可能通过对排油烟机连接的管道进行阻尼隔音包扎,加厚管道壁面的阻尼性,减弱管道排烟自振。

一般由两层材料构成,内层为柔软的纤维类材料,起保温防水作用,外层用隔声毡材料,起隔声作用,管道阻尼隔音包扎方法,实施步骤:

第1步 测量绝缘管道包扎需要的管道长度和直径;

第2步 计算出所需管道包扎材料的宽度;公式如下:

宽度=∏ x(D +(2 xT))

如:

D=管道外直径

∏= 3.14

T=管道包扎材料的厚度

例如:

为100毫米的管道与25毫米泡沫管道包扎材料。

宽= 3.14×(100 +(2×25))= 471毫米

第3步 计算好宽度,用锯或剪刀将材料割开;

第4步 管道包扎,最后用装饰性的包装带扎牢。预期效果

通过以上两种方案的实施,可以有效消除饭店厨房排烟风机管道噪声对周边建筑及居民家里的影响。特别是基础的软支撑减振处理,把直接声源遏制在根源;结合管道壁的阻尼加强,有效消除管道抖动产生再生噪声。

5.深入解析长沙 篇五

关键词:名词性从句,定语从句,as的用法,比较分析

名词性从句和定语从句是英语语法学习的重点和难点, 很多学者对它们分别做过研究, 例如“WH-从句作为小句——兼论小句的语段性质” (满在江2011, 5:24) 是从Chomsky的转换生成理论研究名词性从句;“翻译教学的事件分析途径——定语从句的翻译” (邓跃平, 2011, 8:35) 从认知—功能视角研究限制性定语从句和非限制性定语从句;“英语定语从句译法补遗之补遗” (曹明伦, 2011, 3:83) 从语篇翻译角度把定语从句归纳成五类, 提出了相应的翻译原则。

一些美国学者也认为定语从句 (亦称关系从句) 对于英语学习者来说较难学习, 因此在亚利桑那州立大学面向英语初学者开设的“美国英语和文化课程”中, 教材Basic English Grammar (Azar, 1995) 里不包括关系从句。

大学英语四级考试和大学英语六级考试的“汉译英”这项试题始终是考生失分较多的地方。几乎在每次考试, 该项考题都有需要被翻译成定语从句或名词性从句的汉语原文, 而这正是考试的难点之一, 考生容易出错。“As”一词也是难点, 在一次测验中, 笔者要求学生用“as”翻译句子里的五个短语, 结果三个班的学生 (共计约180人) 平均得分不到60分, 由此可见, 我们有必要探讨一下, 是否可以用较简洁易懂的方式给学生讲解清楚这些语言点。

1 名词性从句

首先, 我们要弄清楚两个语法词汇, 即“句子”和“从句”。完整的句子 (指包含主谓宾的句子) 包括陈述句、一般疑问句和特殊疑问句。从句源于句子, 地位比句子低了一个层次, 只能作主句的一个成分。名词性从句是指具有名词性质的从句, 换句话说, 名词能作何种成分, 名词性从句就能作何种成分, 比如名词可以作主语、宾语、表语或同位语, 那么把名词性从句放在这些成分的位置, 就构成了主语从句、宾语从句、表语从句或同位语从句。句子变成从句, 原来的形式需要一些改动:陈述句需要在它的前面加个“that”;一般疑问句需要变回陈述句, 再在其前面加个“whether”;特殊疑问句疑问词不变, 后面的句子变成陈述语序。

主语从句顾名思义是把名词性从句放在主语的位置作主语, 但由于“英语在组织句子信息时强烈偏好句尾重 (endweight) ” (Yule, 2002:257) , 所以我们需要变动一下语序。例如:

A:It is hard to understand.

B:What?

A:He can’t support himself.

B:Oh, I see.That he can’t support himself is hard to understand for you.*

恰当的英语表达应该是把主语从句放在句子后面, 用形式主语it占主语的位置, 原句变成:It is hard for you to understand that he can’t support himself.

2 定语从句

定语从句 (亦称关系从句) , 是指从句作定语, 用来修饰名词 (先行词) 、部分句子或整个句子 (先行项) 。该从句由关系代词that, which, who, whom, whose和关系副词where, when, why和how加上缺一个成分的句子构成。关系代词在定语从句中作代词能作的成分, 例如主语、宾语、定语或表语, 关系副词在定语从句中作副词能作的成分, 例如时间状语、地点状语、原因状语或方式状语。关系代词和关系副词中“关系”一词的含义是指它们与被修饰成分 (先行词) 有关系, 通过它们的关系或联系, 先行词可以在该定语从句中取代该关系代词或关系副词所作的成分。这样就容易理解含有定语从句的长句子了, 这也是英译汉的方法之一。

3 对比分析名词性从句与定语从句

从上文我们可以看出名词性从句本身是完整的句子, 不缺任何成分, 是陈述语序, 在主句中作名词能作的成分;定语从句是关系代词或关系副词加上一个缺一个成分的句子, 在主句中作定语, 前面有一个先行词或先行句。

举例说明:

Can you answer my question who your friend is?

I like the girl who is her sister.

1) 句划线部分是陈述语序的特殊疑问句, 作“question”的同位语, 因此是名词性从句中的同位语从句。

2) 句划线部分不是陈述语序的特殊疑问句, 前面有个名词“the girl”, 因此它是修饰该先行词的定语从句。

对比图如表1所示。

需补充一点, what一词较特殊, 它作关系代词时, 是“先行词和关系代词的结合体” (张道真, 2008:283) , 因此可以看作“先行词加that”的集合体, 后面加上缺少一个代词能作的成分的句子, 引出定语从句时, what前面就没有先行词了。例如:

I don’t know what your trouble is.

What worries me is that you can’t speak English well.

从以上例句我们可以看出, what作为关系代词引出的句子不像定语从句, 因为它身兼二职, 前面没有名词作先行词, 没起到作定语修饰名词的作用, 倒起到了名词的作用, 如在例句3) 里作宾语;在例句4) 里作主语, 因此有一些语法学家认为what引出的从句是名词性从句。但是张道真认为, 关系代词what引出的是定语从句或称关系从句。笔者认为, 这是给一种特殊词汇用法起了两个名称, 没有必要深究, 该文依然按照张道真的观点论述。

4“As”的用法

As作连词的一个意思是“由于”, 该文不在此赘述。根据2005年出版的《牛津现代英汉双解词典》里的解释, as可以作关系代词, “相当于that, who, which”, 例如:

5) He lost, as you know.

6) He is a writer, as is his wife.

张道真对as做了较全面地研究:“As作为关系代词, 只能用在限制性关系从句中, 只能用在such, same, as或so后面, 不能用作所有格” (张道真, 2008:282) .

7) Such a student as works hard will succeed. (张道真, 2008:282)

8) The same accident as happened to you, had happened to me. (张道真, 2008:282)

9) As many children as come will be admitted. (张道真, 2008:282)

As也可引出非限制性定语从句, 修饰前面部分句子或整个句子, 例如:

10) I advised my brother, as was my duty. (张道真, 2008:288)

11) He became crazy, as many could see. (张道真, 2008:288)

12) As has happened many times, children may get drowned in this river. (张道真, 2008:288)

13) The result, as may be expected, is poor. (张道真, 2008:288)

As引出的关系从句的谓语动词是be动词时, be动词可以省略, 例如:

14) The results as proclaimed in today’s newspapers are encouraging. (张道真, 2008:551)

15) His ability as displayed during the last three months was inadequate. (张道真, 2008:551)

16) I will tell you a story as told by my mother. (张道真, 2008:551)

As引出的关系从句的谓语动词与主句的谓语动词相同时, 关系从句可以省略谓语动词, 例如:

17) I had the same trouble as you.

从以上例句我们可以看出, as学起来确实不容易, 这个难度不单纯源于as复杂多样的用法, 更是由于词典对as的理解有些偏差。《牛津现代英汉双解词典》解释as是关系代词, 相当于“that, who, which”。然而, 笔者认为, as一词不能换成“that, who, which”, 因为as含有“像……”的意思, 而“that, who, which”不能表示“像……”的意思。此外, 如果as是关系代词, 引出定语从句, 那么定语从句应该修饰先行词, 先行词, 顾名思义, 是走在前面的词, 而定语从句则跟在它的后面, 但as引出的从句不都是跟在主句后面的。

因此笔者想出了一个较大胆的理解方法:as作关系代词时, 我们不妨把它理解成“like what”或“like+某人+who”, “like”在这里作介词, 表示“像”, 而as引出的从句可以理解成介词like加what引出的关系从句或like加某人加who引出的关系从句, 因此as及其引出的从句整体上可以看成介宾短语, 作主句的状语。

举例说明:

6) He is a writer, as is his wife.理解为:He is a writer, like the person who is his wife.

译文:他是一位作家, 正如他的妻子。

如果将“as”理解为“who”或“which”, 整句话就成了, “He is a writer, who is his wife.”或“He is a writer, which is his wife.”这些句子显然不合常理。

12) As has happened many times, children may get drowned in this river.理解为:Like what has happened many times, children may get drowned in this river.

译文:像这样的事已发生多次, 在这条河里, 儿童易溺水身亡。

13) The result, as may be expected, is poor.理解为:The result, like what may be expected, is poor.

译文:正如人们预料的那样, 结果很差。

15) His ability as displayed during the last three months was inadequate.理解为:His ability, like what was displayed during the last three months, was inadequate.

译文:像他在过去三个月所表现出的那种能力是不够的。

20) Canadian law requires that the Nexen deal must be submitted for review by Industry Canada under the terms of the Canada Investment Act, as is the case for all large foreign investments in the country. (Global Times, 2012, 9, 13:14)

译文:加拿大法律规定, 根据加拿大投资法案的条约, 尼克森交易必须提交加拿大工业协会审议, 正如对待所有在加拿大做大笔投资的公司一样。”

As一词有“像……”的含义, 表示“如同……一样的 (另一个) ……”;that, who, which则表示与先行词是“同一个……”, 例如:

17) I had the same trouble as you.理解为:I had the same trouble like what you had.

译文:我曾经遇到和你一样的麻烦。

18) This is the same watch as I lost. (It is not mine.) (张道真, 2008:282)

理解为:This is the same watch like what I lost.

译文:这块表像我曾经丢的那块表。

19) This is the same watch that I lost. (It is mine.) (张道真, 2008:282)

译文:这块表是我曾经丢的那块表。

每个词语的创造和存在都有它的独特的原因和意义, 如果as可以与“which, that, who”互换, 那么as还有何存在价值?通过以上诸多例句, 我们可以看到, as一词被词典解释为关系代词的这条用法可以表示“像什么那样”或“像某某那样”, 与“like what”或“like加某人加who”的意思和用法相同, 因此在理解句子意思时, 当as指某事或某物时, 可以用“like what”代替as;当as指某人时, 可以用“like加某人加who”代替as。这样理解, 就避免了将as等同于which, who或that所造成的语义理解偏差, 从而有助于英语学习者去准确理解进而正确运用。

参考文献

[1]Azar B S.Basic English Grammar[M].New Jersey:Prentice Hall Regents, 1993:3.

[2]Brown, Douglas.Investment Troubles[N].Global Times, 2012, 9 (13) :14.

[3]Yule, George.Explaining English Grammar[M].Shanghai:Shang hai Foreign Language Education Press, 2002:257.

[4]曹明伦.英语定语从句译法补译之补译[J].西安外国语大学学报, 2011 (3) :83.

[5]邓跃平.翻译教学的事件分析途径——定语从句的翻译[J].中国科技翻译, 2011 (8) :35.

[6]满在江.WH-从句作为小句——兼论小句的语段性质[J].山东外语教学, 2011 (5) :24-29.

6.深入解析长沙 篇六

关键词:多态;继承;方法;抽象类;接口

中图分类号:TP391文献标识码:A文章编号:1009-3044(2007)16-31069-02

Thoroughly Analyzes Java the Polymorphism Properties and the Applied Research

ZHANG Ke-jun

(Graduate Student Third RowMilitary Economical Institute,Wuhan 430035,Chnia)

Abstract:The polymorphism properties are one of object-oriented important characteristics. Using the polymorphic concept, may improve the procedure code the organization as well as the readability, but also can found "is easy to expand" the procedure. Through in-depth study of polymorphism Java Principle, analytic specific examples, the presentation of polymorphism in the process of the application.

Key words:polymorphism;Inherits;method;abstract class;connection

“polymorphism(多态)”一词来自希腊语,意为“多种形式”。多态在面向对象语言中是个很普遍的概念,同时也是对象开发软件的一个特殊特性,指的是一个程序中同名的不同方法共存的情况。Java语言支持两种类型的多态性:运行时的多态性和编译时的多态性。运行时的特性(动态多态性)是指Java中的动态多态性实现手段---覆盖(替换)基类中的同名成员函数(函数原型一致),其调用规则是依据对象在实例化时而非定义时的类型相应地调用对应类中的同名成员函数。编译时的特性(静态多态性)是指Java中的静态多态性实现手段-----重载函数,其调用规则是依据对象在定义时的类型相应地调用对应类中的重载函数。Java多态性的主要表现形式有:继承多态、抽象多态和接口多态。

1 继承实现的多态

在Java中,当一个类获取另一个类中所有非私有的数据和操作的定义作为自己的部分或全部成分时,就称这两个类之间具有「继承」关系。「继承」可分为「介面继承」和「实作继承」两类,「介面继承」就是只继承父类别的函数名称,然后子类别一定会实作取代之。所以当我们以父类别的指标「多型」于各子类别时,由于子类别一定会实作父类别的多型函数,所以每个子类别的实作都不一样,此时我们(使用父类别指标的人)并不知道此多型函数到底怎么完成,因之称为「黑箱设计」。而「实作继承」就是继承父类别的函数名称,子类别在实作时,也会用到父类别的函数实作。所以我们(使用父类别指标的人)知道此多型函数怎么完成工作,因为大概也跟父类别的函数实作差不多,因之称为「白箱设计」。

Java的类别继承为实作继承,子类别会用到父类别的实作(更正确地说应该是父类别有定义实作,所以子类别可能会使用到,即使不使用到也会遵循父类别实作的演算法),所以父类别与子类别有一定程度的相关性;Java的interface接口则是介面继承,因为接口只能定义函数名称,无法定义函数实作,所以子类别必须用「implements」关键字来实现继承,且每个继承同一介面的子类别当然彼此不知道对方如何实作,因此为一个黑箱设计。

1.1方法的覆盖

根据实作继承及动态多态性的特点,派生类(子类)将继承基类(父类)所有的方法、属性和事件。同时,我们可根据需要来重新定义基类的方法、属性和事件,甚至增加或者修改部分内容,以提供不同形式的实现。

代码示例一:

//定义父类superc

import java.io.*;

class superc

{public void sc()

{ System.out.println("This is superc!");

}}

//定义子类subc1

class subc1 extends superc

{public void sc()

{ System.out.println("This is subc1!!");

}}

//定义子类subc2

class subc2 extends superc

{ public void sc()

{ System.out.println("This is subc2!!");

}}

class Test

{public static void main(String[] arg)

{superc a;

subc1 b=new subc1();

subc2 c=new subc2();

a=b;

a.sc();

a=c;

a.sc();

}}

程序运行结果为:

如上例所示,在父类superc中我们定义了方法SC(),其每一个子类都将继承这个方法。但是,这个方法在每个子类中的具体实现是各不相同的。

那么,Java编译器如何实现对同名方法函数的调用呢?面向对象程序开发中,我们将一个方法调用同一个方法主体连接到一起称为“绑定”(Binding)。Java中绑定的所有方法都采用后期绑定技术,即动态绑定:它意味着绑定在运行期间进行,以对象的类型为基础。若一种语言实现了后期绑定,同时必须提供一些机制,可在运行期间判断对象的类型,并分别调用适当的方法。也就是说,编译器此时依然不知道对象的类型,但方法调用机制能自己去调查,找到正确的方法主体。不同的语言对后期绑定的实现方法是有所区别的。但我们至少可以这样认为:它们都要在对象中安插某些特殊类型的信息,并可通过这些区别信息实现多态。由于动态绑定技术的支持,Java的程序在执行时灵活性就大大提高了。Java 的这种机制遵循如下原则:其一,当超类(父类)对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类(父类)中定义过的,也就是说被子类覆盖的方法。其二,每一个实例对象都自带一个虚拟函数表(virtualtable),这个表中存储的是指向虚函数的指针,实例对象通过这个表来调用虚函数,以实现多态。实际上,使用虚拟函数表的方法,表项在编译时便已固定,把函数映射为在虚拟函数表中的偏移,到了运行时,只知道“偏移、执行”,至于究竟是哪个函数,无从知晓。类似于查表的过程,在编译的时候一定是存在的,但不存在于运行时。对程序而言,从源码到运行是一个完整的过程,一些功能被某些语言放到了编译时,而在另一些语言中被放到了运行时,折衷的原则取决于语言设计。虚拟函数表的实现中,每个类的表中,不仅仅要保持自己的定义的方法,还要保持自己超类的方法。我们知道,在面向对象的语言中,子类对象常常要当作超类对象使用,而在运行时,要找某个方法,只知“偏移”,所以,子类的虚拟函数表必须完全兼容超类的虚拟函数表,才能保证整个系统的正常运行,而保证的方法就是保存超类的所有表项。这样带来的问题是,当子类增多,虚拟函数表就无可避免的会增多,即便子类只有一个属于自己的方法,但它仍要带有超类所有的方法,这是一个巨大的负担。所以,那些建议“不要定义太庞杂的继承系统”的说法,是有一定物理基础的。

1.2函数的重载

重载是同一类中定义同名方法的情况。这些方法同名的原因,是它们的最终功能和目的都相同,但是由于在完成同一功能时,可能遇到不同的具体情况,所以需要定义含不同的具体内容的方法,来代表多种具体实现形式。

Java支持用户定义的函数重载。一个类中可以有相同名字的方法,这些方法可以有不同的意义。但是,这些重载的方法中,必须满足参数数目不同,相同位置上的参数类型不同等等。这些不同可以帮助编译器区分不同版本的方法;根据静态多态性调用规则,编译器依据对象在定义时的类型相应地调用对应类中的重载函数。

构造函数的多态性就是典型函数重载情况。

代码示例二:

import java.io.*;

class Gz

{//第一种构造函数

publicGz(){System.out.println("这个构造函数的参数是:空");

}

publicGz(int s)

{//第二种构造函数

System.out.println("这个构造函数的参数是:整数");

}

publicGz(char m)

{//第三种构造函数

System.out.println("这个构造函数的参数是:字符型");

}

public static void main(String args[])

{//三个Gz类的对象实例

Gz aa=new Gz();

Gz bb=new Gz(2);

Gz cc=new Gz('a');

}}

运行结果:

上面的例子中,我们定义了若干个构造函数Gz(),当用户创建该类对象的语句时,编译器会自动根据给出的实际参数的数目、类型和顺序来确定调用哪个构造函数来完成对新对象的初始化工作。

同样地,子类也可以根据实际情况对其父类的构造函数进行覆盖,有异曲同工的效果。但应注意:子类如果有多个构造函数的时候,父类要么没有构造成函数,让编译器自动产生,那么在执行子类构造函数之前先执行编译器自动产生的父类缺省的构造函数;要么至少要有一个显式的缺省构造函数可以让子类的构造函数调用。

2 抽象类实现的多态

在很多Java程序应用中,类层次的顶层类并不具备下层类的一些功能和方法。我们可以在超类中将这些方法声明为没有实现的抽象方法,如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract即「抽象类」。使用abstract类型修饰符的抽象方法,属于一种不完整的方法,只含有一个声明,没有方法主体,基类不能实现它,必须由派生类过载实现,为其它子孙类用抽象机制实现多态性提供了统一的界面。对所有与基础类声明的签名相符的衍生类方法,都可以通过上面介绍过的动态绑定机制进行调用,该类未实现的方法由派生类提供,已实现的成员仍可被重写,并且派生类仍可以是抽象类或实现附加接口等功能。

代码示例三:

import java.util.*;

abstract class Animal {

//int i; // storage allocated for each

public abstract void Breath();

public String what() { return "Animal";}

public abstract void adjust();}

class Human extends Animal {

public void Breath() { System.out.println("Human is breathing.");}

public String what() { return "Human"; }

public void adjust() {}}

class Dog extends Animal {

public void Breath() { System.out.println("Dog is breathing.");}

public String what() { return "Dog"; }

public void adjust() {}}

class Bird extends Animal {

public void Breath() { System.out.println("Bird is breathing.");}

public String what() { return "Bird"; }

public void adjust() {}}

class Woman extends Human {

public void Breath() { System.out.println("Woman is breathing.");}

public void adjust() { System.out.println("I am woman.");}}

class Man extends Human {

public void play() { System.out.println("Man is breathing.");}

public String what() { return "Man"; }}

public class cxhs {// Doesn't care about type, so new types

// added to the system still work right:

static void tune(Animal i) {// ...

i.Breath();}

static void tuneAll(Animal[] e) {

for(int i = 0; i < e.length; i++)

tune(e[i]); }

public static void main(String[] args) {

Animal[] orchestra = new Animal[5];

int i = 0;

// Upcasting during addition to the array:

orchestra[i++] = new Human();

orchestra[i++] = new Dog();

orchestra[i++] = new Bird();

orchestra[i++] = new Woman();

orchestra[i++] = new Man();

tuneAll(orchestra); }}

运行结果:

其逻辑结构如下图:

由于抽象类是其所有子类的公共属性和方法的集合,它可以在类的某些属性和方法中提供不变的因素和功能,同时大大提高了类的其他过程的灵活性。从上面的例子可以看出,除基础类以外,实际并没有进行什么改变。创建抽象类和方法有时对我们非常有用,因为它们使一个类的抽象变成明显的事实,可明确告诉用户和编译器自己打算如何用它。

3 接口实现的多态

以上所谈到的多态行为均用到了类的继承关系所建立起来的子类型关系。Java接口同样支持用户定义的类型,可以实现类型的「界面继承」;并且Java的接口机制启动了建立在类型层次结构上的多态行为,能够实现接口的组合和扩充,一定程度上对Java类型及其功能进行了优化。Java中一个类只能有一个父类,但是单个类可以实现一个或多个接口,多个类可实现相同的“接口”。

“interface”(接口)关键字使接口的抽象概念更深入了一层,我们可将其想象为一个“纯”抽象类。接口常常被用来为具有相似功能的一组类,对外提供一致的服务接口,这一组类可以是相关的,也可以是不相关的,而抽象类则是主为一组相关的类提供一致的服务接口。所以说接口往往比抽象类具有更大的灵活性,它允许创建者规定一个类的基本形式、方法名、自变量列表以及返回类型,但不规定方法主体。接口也包含了基本数据类型的数据成员,但它们都默认为static和final。接口只提供一种形式,并不提供实施的细节,这也为其本身及子类提供了较广泛的空间。

如例三中把Animal定义为一个接口:

interface Animal1 {

// Compile-time constant:

int i = 5; // static & final

// Cannot have method definitions:

void Breath(); // Automatically public

String what();

void adjust();

}

其中的三个方法函数均没定义方法体;换言之,接口可以看成只定义了API的协议规范,相当于C++中的只含有纯虚抽象类。其子类Human、Dog、Bird继承时,必须使用关键字implements或extends从接口实现或继承。由于接口中只有方法原形,实现接口时无成员变量名字冲突问题,也没有对父类方法的重定义问题,也不存在重复继承问题,比一般类的多态度继承简单。接口继承形成的层次独立于类层次,因此允许不同层次中的类实现同一接口,这些实现接口的类支持公共的行为,但实现这些行为的方法可以不同,无须共享任何实现方式,呈现多样化。同时,这样的多态行为使Java的接口的功能的重大意义显得很明显。通过接口,每个类都可以自由决定其实现的细节;利用继承技术,可方便地为一个接口添加新的方法声明,也可以将几个接口合并成一个新接口。这样,实现某一接口的多个类或接口可以以不同的方式实现相同的接口,而每个类或接口仍支持同一组方法,当实例化这些类或实现接口后,就弥补了Java中“一个子类,只能有一个父类”的不足,实现了多态性的“一个接口,多种方法”。

4 结束语

“多态性”意味着“不同的形式”,是建立对象模型的有力工具。为充分使用多态性乃至面向对象的技术,我们必须将自己的编程视野扩展到不仅包括单独一个类的成员和消息,也要包括类与类之间的一致性以及它们的关系。因为只有这样才可真正有效地加快自己的编程速度、更好地组织代码、更容易做出包容面广的程序以及更易对自己的代码进行维护与扩展。本文对Java中的多态性及其实现原理进行了深入地解析,目的在于希望学习和使用Java语言的程序设计人员,能更好地掌握开发Java程序。

参考文献:

[1]印旻.Java语言与面向对象程序设计[M].北京:清华大学出版社,2000-09.

[2]Bruce Eckel(美). java编程思想[M].北京:机械工业出版社,1999-04.

[3]Bruce Eckel.Think in Java[OL].http://www.cncode.com/downinfo/1675.html.

[4]耿祥义.Java基础教程[M].北京:清华大学出版社,2004-9-1.

[5](美)Cay S.Horstmann,Gary Cornell.JAVA 2核心技术[M].北京:机械工业出版社,2006-05.

上一篇:招商活动协议下一篇:总服务台服务管理制度