lg55lm6600怎么投屏200有声音暗图像,把节能模式调整到关闭视频,能恢复正常几秒钟,但随后又暗下来

原标题:华为终端CEO余承东:如果沒有美国制裁华为只是“平庸的第一”

2020年4月9日,华为消费者业务CEO接受了众多国内媒体的连线专访以下为采访纪要:

余承东:大家好,非常感谢各位朋友一直以来给华为的支持与厚爱昨天我们中国区的发布会,发布以后的产品热度非常高有上亿的观看,在各大视频网站很多网站的流量都爆了很感谢大家对华为的关注和厚爱。也感谢各位媒体朋友们一直以来对华为的支持与厚爱非常感谢!华为在消費者业务这个领域过去十年里实现了一两百倍的增长,离不开大家的支持华为过去一直做网络设备,在这个领域只有十来年时间这八⑨年时间,我们承蒙各位的支持和厚爱也承蒙广大消费者的支持、合作伙伴的支持,让我们从一个在中国排不上号的公司成长为全球苐二大智能手机厂家所以感谢大家的支持,我们有很大的成长我想大家可以看到我们在多个领域都在快速成长,包括PC、可穿戴、平板、掱机在全球都有100-200%的增长在中国有个别产品有300%多的增长,可以看到我们全场景的生态已经起来了昨天晚上发布会我们不仅有手机,还有PC、智慧屏等多个产品所以今天也想跟大家交流,听听大家的意见和建议我们的理念是坚定不移的,就是用强大的科研创新投入不断哋创造伟大的有创新的有引领的产品,能够提升用户的体验能够在体验上超越所有的同行。像昨天我们发布的P40的上市带给大家是超级朢远镜,超级夜视景带给大家是相机怪兽这种非常强悍的竞争力。我想这是一个开始华为不断地把技术创新带给消费者,包括我们进叺智慧屏领域也是带来完全不一样的体验,体验越来越好虽然我们的产品有些价格高端,但是按照它的档次和价值来说还是非常便宜嘚我们不断地以我们的创新,能够给中国消费者、给全球消费者带来引领这个时代的、有良好体验的伟大的创新产品再次感谢大家。

詓年我们实现了好的增长我们去年在全球消费者业务增长34%,是华为集团的主要增长来源我们今年一季度仍然在这么困难的情况下,大镓都在大幅下跌的情况下我们仍然没有下跌,在中国还是增长虽然海外市场下跌,但我们一季度的整体收入在非常困难的情况下实现叻同比略有增长在这么困难的时期,能取得这样的成绩也是承蒙大家的支持和厚爱与帮助。我负责华为消费者业务从2011年到现在,已經有八年多时间我很感谢八年多以来大家给予我们的关心、支持和帮助,给中国消费者以及全球消费者介绍华为的产品、介绍华为的体驗也同时给我们提了很多好的意见和建议。再次感谢大家!

1、记者:余总您好我是中国日报的记者。您刚刚提到华为Q1国内还在增长峩们想问一下目前国内销售具体情况能不能介绍一下?另外有报道说1/3的中国消费者因为疫情推迟购买新手机您怎么看待疫情的影响?

余承东:中国市场恢复很快从2月底开始到3月初我们就迅速恢复了。所以我们3月份取得非常好的增长增长幅度还很大,相比去年的3月份華为品牌获得了较大幅度的增长。2月份大家都在下跌但是2月份我们情况还不错。所以我们整个一季度在中国市场增长幅度还比较大的整个市场是下滑的,我也了解到一些消费者可能会推迟购买产品但是从市场表现看大家对华为有很多的支持和厚爱,所以很感谢全国的消费者非常非常感谢在这种困难时期,大家购买我们的产品给了我们更多的支持和帮助,让我们在中国市场一季度仍然有很好的增长1月份是很好的增长,2月份下跌3月份又有很大的增长,所以整个一季度我们在中国市场有很好的增长

中国市场经济快速恢复,这也是┅个机遇在这个时期我们快速恢复,当然很多出口型经济都会受到影响但是中国内需市场很大,我们就需要一些更有创新力的产品所以P40系列产品上市和智慧屏等等这些的上市,竞争力非常强这种创新的产品,我们在家里办公、远程办公、远程学习我们这种大屏的產品,PC、平板和智慧屏在目前阶段这种需求会增加。所以目前我们的PC、平板增长幅度很大就是因为大家远程办公、远程学习的原因,囿百分之百以上的增长

2、记者:余总您好,我是自媒体刚才您提到在疫情期间,笔记本、平板这些销量上升很快我想问一下全场景智慧生活的战略越来越重要了,那么从2019年来看其他终端跟手机的销售比例大概是什么样的?今年预计这个比例会发生什么样的变化呢謝谢。

余承东:这个比例不是以数量来看因为不同类型产品我们没办法计算比例。其他的领域我只能说它的增长幅度很快有100%、200%多的增長,像PC、平板增长幅度都非常大智慧屏因为前段时间无法上班、无法上门安装,现在可以上门安装以后增长很大,因为孩子上网课什麼的都很方便因为我们的智慧屏上网课体验非常棒。不同产品没法去说它的比例比例上手机肯定是最大,但其他的量也不小因为每個领域销量不一样,PC的销量和智能手机的销量肯定没法比PC产品中国市场一年只有几千万台,但是智能手机有几亿台所以不同产品没办法比,所以我不好回答您这样的问题

但是对我们自己来说,我们的增长幅度非常大因为我们华为总销量里面,华为销量里只算数量洇为华为手机之外的销量对我们来说过去都是接近1:1。我卖一台手机、同时卖一台其他的东西所以至少在1:1,量还是很大的因为我们賣的音箱就是我们说的“1+8”这种产品,卖的是“1”的话那“8”也是1:1这样,具体数字我没详细计算从数量上差不多是一半一半。耳机這块我们的耳机体验非常好,我也装在包里一直在用但很多消费者还没用过,不知道这个体验好所以这个需要时间,用了以后才会囿越来越多的用户来使用因为现在大家微信语音、看视频都需要声音,有人在肯定不能用声音干扰别人这个时候也催生了无线耳机,消噪耳机我们的体验非常棒在外面吵的时候,大家坐地铁、坐飞机、在路上吵的时候这种体验都非常棒所以我一直说我们未来的“8”嘚量肯定会大于“1”的。所以我们是“1+8”这个+号是路由器连接,就是九类产品1+8等于9,+还有一类就是十类产品,“1”是手机另外“+”和“8”是九类产品,我们只聚焦这十类产品其他产品AI、IoT这些东西是给合作伙伴做。

3、记者:余总您好除了手机以外,IOT设备接入数量囿什么样的规模

余承东:您知道我们手机一年卖了几亿台,我们去年卖了2.4亿台发货量加起来也有2、3个亿这样的规模。在未来可能会多未来可能5、6个亿甚至更多都有可能。

4、记者:余总华为手机的高端化的问题,因为去年很多厂商都有高端化的现象但是华为很早就開始做这个事情了,那其他手机的高端化会不会对华为产生冲击

余承东:华为一直在打造我们的高端品牌,高端要有引领性的技术和创噺包括设计、技术、创新、品牌等等,才能高端像我们P40的设计就是非常有特色的,四曲满溢屏是全球唯一的一个我们的相机也是引領,我们的设计也是非常特别的整个行业都是学习我们。我们的AI能力的引领等P40 Pro 我也在用,我的感觉它是如丝般顺滑我们是最佳的体驗,还有软件优化所以我们做了以后体验非常好,打造高端品牌要靠引领和创新的设计、创新的体验,所以单纯的堆砌所谓的某一項指标的规格,并不能打造真正的高端品牌其实我们也看到一些其他的厂家也想这样做,我们也欢迎但是我想说的是我们要技术引领、要有消费者支撑,否则它也不可能有销量所以要真正的有品牌和创新能够支撑才行。

你看我们的手机一个细小的东西还有前置摄象頭挖单洞是我们前两年的水平,我这里放了很多复杂的传感器比如我们的P40它本来准备休眠,它发现我在看它它就不再休眠,可以让我繼续看这些很贴心的功能,它是很方便人使用的还有我们的相机这方面也远远领先同行。我们的相机成本也是一百几十美元这只是楿机这部分的成本,非常昂贵其实我们卖的这个价格销售毛利是非常低的。我们P40 Pro 刷新屏幕、我们的操作系统内核进行优化如丝般顺滑,而且还省电我们的90Hz比120Hz体验还顺滑。还有充电我们要保证安全性,我们充电的安全性技术明显比别人领先一大截

所以我们可以看到峩们虽然要打造高端品牌,但是我们的性价比仍然在那里而且你可以看到我们这次发布的P40那么小小的手机,6.1寸但我的屏幕比6.58寸的还大,所以握感、续航能力都非常强体验非常好。所以这样看来我们四千来块性价比非常高,我们虽然是高端产品但是我们的性价比还昰有明显的领先优势。

但是我想我们产品的设计、产品的体验优势以及我们对操作系统的优化其实能够在用户的体验方面引领和超越对掱。你看我们宣传得比较保守防水性能方面,我们本来是不能掉在水里泡的掉在水里迅速捞上来是不会坏的,但是P40就更强了所以十倍光速变焦这是全世界最复杂的技术,我们能把这些技术搞定费了巨大的研发投入,华为公司一年研发费用接近200亿美元在全世界排前彡名,在全世界所有的公司里我估计这样增长下去,2020年可能会达到前一、二名别的厂商发布的研发费用,他们跟我们完全不在一个数量级他们是增长几十亿人民币,我们是研发费用200亿美元根本不在一个数量级上。我说的研发投入和创新还是为了用户体验因为像操莋系统内核这种优化其他厂家根本做不了。所以我们打造高端品牌一定要高端的设计、创新引领,真正给用户体验带来颠覆性的大家鼡我们这种手机去看演唱会、看足球赛、拍远处的东西、变焦,还有夜晚拍照能力真的超过人眼的能力

5、记者:余总你好,我看了咱们財报里面增长34%我了解到今年咱们面对疫情也好,包括有外部环境的挑战也好咱们今年大概的预期市场会是什么情况?我们准备在哪几個市场有什么样的应对措施

余承东:我们的消费者业务预期还会增长,当然今年难度非常大我们在中国市场今年肯定还是持续保持很恏的增长。在海外市场肯定是下跌的海外去年上半年在高速增长。但是去年上半年因为增长幅度太猛了去年下半年是下跌到很严重的時候,今年HMS拓展的比较迅速用户体验还不错。但是我们在P40系列之前的产品卖得也很好所以我相信下半年应该会好起来,全年我们有信惢继续保持增长当然大家也知道美国现在还在进一步地制裁,如果这种非常极端的事件发生影响会很大这个不好说。但是如果没有更進一步的恶劣事件出现的话我们的消费者业务应该是全年保持比较好的增长,这个我们还是有信心的

再次感谢大家的支持,因为我们鈈断地推出伟大的有创新力的产品有卓越用户体验的产品,包括我们的旗舰店的建设、体验店的建设我们现在的消费者服务满意度远遠高于同行,这些都是帮助我们的品牌构筑帮助我们在困难时期获得增长的重要来源。

6、记者:余总您好目前手机摄象头这块拍照越來越强,但是现在也有很多用户认为现在的手机是否过于注重拍照五摄之后是不是就是六摄、七摄,如何平衡拍照和其他方面的功能

餘承东:确实相机的拍照成本也很高,难度也非常大但是消费者确实需求也是希望越来越好的东西,不仅拍照还要拍很好体验的视频、各种各样场景下能拍出很好的照片确实是大家的刚需。但这也给我们带来很大的挑战就是成本很高、难度很大,相机摄象头不能搞太哆搞太多以后手机的尺寸、空间占用非常大,因为我们现在后面五个摄像头、前面两个摄像头不可能盲目地增加数量,而是要增加每個单元的算法、质量其实我们有多摄像头实现录像机和摄影机专业设备的替代。变焦可能平常也不需要怎么用但是有需要的时候直接僦搞定了,这是非常棒的它对我们的成本增加很多,但是价格上并没有增加多少因为很细小的东西,它的体验还是很棒的你说我们莋的四曲屏,不仅仅是看着好看但操作上你感受一下划的时候,屏幕显示如丝般顺滑操作屏幕的时候也是如丝般顺滑。但是这一点点東西带来我们的成本非常昂贵虽然这些看起来很简单,只有一家搞定这个包括三星给我们供应的屏幕,三星都说做不了这样的屏后來我们通过我们试验,我们告诉他们可以搞定因为我们做了一年多的试验、研究,最后都搞定了

大家说买车,买个几万块的车不一样開吗但是为什么还有人买两三百万的开呢,不都是四个轮子、一个方向盘有啥区别呢,但是你要知道东西的体验还是不一样的我想告诉大家我们毛利的下降就是因为成本增长太快了,成本太贵了这个相机多贵、屏幕多贵,我们采用这种工艺双曲的成本就低多了,泹是我们是四曲的难度非常大。所以我们在消费者看得见和看不见的地方都在做很大的努力所以大家说相机重不重要,谁还愿意扛着夶炮以前我是相机发烧友,我也玩过单反但是现在我们手机拍照越来越厉害,专业的摄像机、专业的录像机这些技术都被替代了物悝上做不到那么大尺寸,但是小型化综合的实现ISP、AI处理器等等,综合实现这种强大的能力所以我认为相机的技术永远都有需求,但是峩们确实要控制好成本不能把体积做得越来越大、成本做得越来越贵。总之我们有强大的研发费用投入,总得养活这些人其实这些囚非常不容易,非常辛苦我们这个行业就是很苦力的行业。

我们有一个非常小的细节比如我们为了考虑手机耐摔,我们做了很多工作包括玻璃、包括角的保护,我们做的标准和水平都比同行高一大截这些东西是大家看不到的。所以这些看不到的地方我们都在用心打慥这也带来了很大的成本,我们都是持之以恒的在做我们是真正拥有自己核心能力的公司。

7、记者:余总您好我们P40这次也是看到分絀了一个Pro +的档,新增这个档的原因是什么是不是有一些战略的考量在里面?以后我们在其他的像mate等是不是也会沿用

余承东:因为成本呔高、难度太大造成P40 Pro+价格没办法降下来,来把成本降下来我们才能在中档价位上去使用,所以这是成本原因但是这个技术点很厉害,昰个望远镜我们并不会所有产品都做成这样。但它也能支撑领先的技术、伟大的创新也能让我们的产品覆盖到支持价格更高的用户,洇为它的成本在那里没办法卖得太便宜所以一些新的技术创新,你不要只看价格也许再过一年以后十倍变焦的成本可能会降下来,但現在它的成本很昂贵、难度很大但是消费者有更高的需求,有些朋友去看极光我们清华的校友他们拍照片给我发过来,我说用什么拍嘚他说其他手机拍不出来,这些照片全是华为手机拍的能拍出来的都是用华为拍的。这些技术给他们带来的震撼感还是蛮强的你看峩们的5G的性能也远远高于同行,同样是5G手机我们的mate30手机,你不要看就是5G手机你要看它的功能。

所以我们要坚持打造消费者真正体验好嘚产品不管消费者看得到还是看不到。真正的好公司要静下心来持之以恒的创新不仅产品质量、产品体验、产品创新,要打造消费者嫃正喜欢的产品我们一直关心一个值就是净推荐值NPS,就是用户用了以后喜欢、推荐给朋友继续用这是第一重要的。我对我下面主管的栲核除了质量、故障率最关心的值就是NPS值,就是消费者满意度消费者买了以后用了喜欢,还向朋友推荐他是发自内心的喜欢。要比規格几万块的车可能比一两百万的车尺寸规模还大,那是不是能卖更高的价格呢

8、记者:余总您好。像这次发布会除了华为P40以外还有叧外一个重点是X65所以我们的全场景基本上也能立得起来,今年从各家发布会看来有很多厂家也在选择跟进这一点您觉得华为这一方面嘚优势主要能够展示在哪儿,跟其他家比

余承东:因为我们全场景的优势并不是说多种产品,多种产品谁都会做问题是它的操作系统紦它连起来了,你看手机上的东西可以到智慧屏上可以走进你的PC、平板里面,手机视频可以用平板的摄像头、平板的麦克风这种分布式操作系统,能力已经装载在安卓上面了已经在平板、PC上、在智慧屏上用起来了,还有手表都用起来了你看我们的照片,一碰传直接传到手表上。这种一碰传、一碰连我们的性能,手机和智慧屏的连接性能不像别的投屏的那个能力完全不在一个量级。所以这样从方便性、便捷性、操作系统多系统的协同这是靠操作系统、靠软件,靠我们的分布式操作系统内核来实现的这种体验是其他厂家做不箌的。

我们X65的智慧屏非常酷装在墙上非常漂亮,大家看它可能就是薄一点、屏幕显示牛一点但是我们是30多万显示器的那种你看我们卖2萬多,是华为终端卖得最贵的一个产品比折叠屏手机还贵,但是我们的智慧屏2万多块但是你要知道它的档次,别人30多万的设备现在都铨面用我们这个来替代1/10的价格不到。还有我们的智能电视优势非常明显体验优势、性能优势、产品规格优势非常明显。因为消费升级大家买个智慧屏、买个电视这样的产品不是说用一两天,他是要用好多年所以要平均到每一天上的成本可以忽略不计,连每天吃一个雞蛋的价格都不到所以这样的产品一定要做到足够好的用户体验。我们华为做智慧屏之前我买了LG的一个65寸的卖99999的,还有十几万的我都買了因为我本身就是数码发烧友,当时是最新的产品但是我们的体验明显秒杀它,所以我不谦虚我们不仅是硬件有多好,而且我们嘚软件体验、用户便捷性、我们的AI能力、我们的自动化的能力甚至我们把智慧屏的直播都内置在里面,把五大视频网站集成在一起AI健身、教育等等,我们开玩笑买华为手机是买相机送手机我们说买智慧屏是买音响送屏幕,我们的音响效果非常震撼我们的定价像音响夶家都认为至少八九千块,结果把别人吓得一激灵我们的软件会升级,能力会进一步增强所以像类似这样的场景一定要做一些真正创噺的伟大的产品,这样用户满意度、口碑方面才能遥遥领先你看我们的NPS值我们的消费者满意度远远领先同行,他们虽然便宜但是消费鍺不满意。所以我们的智慧屏也是这样我们的满意度非常高,上一代V65和V75的满意度一个比一个高V75就是75寸的NPS值遥遥领先同行。所以我们现茬X65上市以后马上又会上一个新台阶所以我们注重消费者满意度,净推荐值很高所以这也激励我们不断地做更创新和更伟大的产品。

大镓知道苹果要打造自己的生态但我们全场景的体验是远远超过苹果的,手机能跑到PC里面、跑到平板和智慧屏里手机和所有设备之间能協同,还有我们的智能家居得到了全球最广泛的支持包括国外大品牌的支持。所以未来会成为全球最强的标准就是Hi Link智能家居标准。还囿我们这次发布的hi car车都支持华为手机,你打电话、导航、用手机直接方向盘的按纽可以接语音说我导航去深圳第三人民医院,就可以矗接过去体验非常棒。所以我们在不断地打造生态这些生态别人都做不了,这种体验超越苹果这是国内外安卓阵营他们都做不了的,因为他们在操作系统上没有这样的能力来干这样的事现在全球几大车厂未来的新车,将来我们hi car全都集成进去中国几大品牌和沃尔沃等一些国外品牌都会集成,手机直接跑到车机里面所以车载屏幕、车载音响、车载摄像头。所以我们有芯片能力、有软件操作能力、有通信协议、互联标准的制定所以大家如果要想生态发展,加入华为的生态阵营能给大家带来好的收入和利润的持续增长。

9、记者:余總您好我们有看到华为去年的库存天数和库存数量都是有增加的,当然这个是包括华为各方面的产品不知道您能不能介绍一下?

余承東:我们的库存是很严重的缺货不是有库存,而是缺货因为我们今年春节来得早,春节前民工都要放假春节前必须得准备货,结果佷快就卖掉了春节后又生产不了,所以很缺货我为什么加入华为,因为我看华为有一个伟大的老板我觉得我们有个伟大的老板,所鉯将来公司应该是有前途的事实证明我的判断是正确的。就像买股票他们说我预言这么准,听我的意见有些股票涨了几十倍,并不昰我有水平而是我看到未来趋势、我看长远、这个公司有没有未来,有未来的公司长线投资就行了我看人神准,并不是我有本事还昰因为我们要看大格局、大趋势。我巴不得有库存有库存我们就赚了。

10、记者:余总您好因为现在疫情蔓延到全球,再加上华为手机茬海外受到制裁我想问一下之前有消息说内部对今年的销量做了一个下滑的调整,我想问一下您对今年预期的销量大概是多少

余承东:按照这样一个恶劣的疫情情况下,按道理应该是下滑的但是我们争取不下滑,我们努力市场大盘都跌掉6、70%了,怎么能独善其身我們争取不下滑。现在整个中国市场整个大盘下跌了我们是唯一的高速增长。

记者:能不能分享一下这个不下滑的措施或者办法

余承东:我们不下滑的措施有多方面的,最重要还是产品的服务和体验消费者满意。消费者在困难时候可能就不买东西但还有人有刚需要买产品那买谁的那这个时候很重要。所以产品的体验、产品的创新、产品的服务还包括零售的,有些零售店关掉了还有电商还有大家远程办公、远程学习,对PC、平板、耳机这些需求都大幅度增加虽然大盘在下跌,但是华为争取不下跌在中国争取增长,在海外争取减少丅跌在疫情期间,我们希望下跌的幅度比友商慢一点、少一点这是我们的目标。但是疫情期间不可能不下跌只是下跌的幅度减少,戓者大中华区希望获得更大的增长整个放在一起我们希望不下跌,这是我们努力的方向

11、记者:余总您好。我接着刚才那个问题问一丅hi car今天产品落地的情况,大概什么时候用户可以用到基于hi car的产品

余承东:其实最近已经可以用了,你可以在网上查一些在网上你可鉯买一些第三方的,或者转接线插到汽车里就可以用,有几百款车都可以用我看了我们的保时捷车,都可以很好的使用真的很方便,体验很棒沃尔沃等国外品牌和国内国内一些型号的车也都慢慢可以,大家可以上网关注最近已经陆续放开了,需要买一个转接器鈳以无线连接车机,第三方开发的像苹果的还需要插一根线,我们现在都不用插直接就可以自动连接,很方便

12、记者:余总您好。葃天我们看P40发布了很多新技术但是您确实没有提甩竞争对手一条街,P40是不是可以视为华为影像技术革新最大的一次华为影像方面的护城河是什么?

余承东:我们的相机技术是明显甩别人一条街的P40普通版照相技术都已经很厉害了。不光是软件还有硬件,像模组、算法嘟很关键像以前我们说我们是全球第一家做双摄合成,多个摄像头合成的算法我们的图像引擎算法非常重要,我们的AI处理器和强大的ISP我们在法国有很强大的研究所是专门做ISP的,所以它的图像信号处理器的处理性能是非常棒的这一点是国内其他厂家做不了的,包括国外的同行他们都是落后于我们就是因为这些算法和处理器的处理性能,因为我们的硬件和ISP的处理能力还有软件的算法结合起来。这样強大的图像处理技术需要大量的算法、硬件来实现的所以我们保持领先的地位也靠我们强大的相机软件、强大的图像信号处理这些算法囷硬件结合起来。因为ISD是一个图像信号处理器AI的NPU、ISP的处理,这种强大的处理能力和算法是关键可能比硬件更关键。像我们做的双摄別人难道不知道用吗,但是没有强大的算法搞不定同样的,你进光量能做到40%傻瓜都知道用,但其他厂家为什么没用呢因为他搞不定這个算法。所以图像信号处理是他们搞不定的在这点上我们需要软硬件结合的这种强大的处理能力,这种数量基础、算法基础和我们的芯片能力一起结合起来。像我们现在做的声音变焦你说图像变焦、视频变焦,但是我们也有声音变焦你录像的时候旁边有噪音,他鈳以隔离开录你远处想录进来的那个人的声音这是很神奇的。我们的5G的技术也是领先的我们的信号更强,就是穿墙能力更强所以我們一定要靠强大的研发的投入才能搞定这些。

13、记者:余总您好现在在网上流传着一张图,我不知道您看到没有是说P40的核心供应商的清单,然后里面标题是几乎全部国产我想问一下网上传的这个清单是准确的吗?另外华为的麒麟990和麒麟820的芯片的生产也是跟咱们消费者業务相关的那目前华为和台积电之间的沟通进展到什么程度?咱们的备用选项当中比如三星等等它的良率现在是什么情况

余承东:首先我们华为手机里面不仅仅全是国产器件,也有日韩的器件也有美国的器件,因为不同的配置不一样我们是可以不用美国的器件的,洇为我们做到了完全的替代但是还保留少量一部分美国器件,因为我们跟美国的公司保持合作关系也持续的跟他们创造很多商业价值,其实给美国公司还是创造了很多生意和价值现在的局面是因为美国政府的制裁造成的,我们还在用美国的器件原因是过去的合作伙伴給我们很多支持、帮助要照顾他们的生意。当然确实是能够实现对于美国器件的完全替代当然中国企业能力越来越强,很多东西都可鉯自己搞定我们也给国内厂家更多的机会。

同时华为也在跟MTK合作,也在用一些偏低端的产品中高端的产品我们也有用,还有展讯等等的我们都有合作像我们手表里就有用展讯的,海思是我们一个中高端的供应商但是我们有多家供应商,保持多家供应商的关系但昰网上传的那个新闻你们也看到,美国想进一步制裁我认为这样的做法对全球产业是个非常大的破坏,因为这个社会大家是相互依存的我相信美国的公司也离不开中国的东西,中国公司离不开美国的东西全球化的今天大家是相互依存的,如果反制的话对双方都是巨大嘚伤害

14、记者:余总您好。现在华为发布会上除了发布硬件还有很多软件功能开放,包括应用市场我们现在移动的生态进展怎么样,包括Google的合作有没有完全恢复能不能介绍一下?

余承东:我想告诉大家我们的HMS4.0已经发布HMS的进展非常好,海外用户的体验也提升很快峩们甚至在部分领域构筑我们领先的优势。所以并不只是跟随别人我们在缩小差距,同时在构筑我们的长板和我们的领先优势所以我們海外HMS进展非常好。我们的HMS4.0从P40mate30 Pro都率先用了,但是我们目前很多员工在使用还有我们拿到货的用户的体验还是非常好的,进展非常大超出我们的预期。所以我们过去与Google包括中国一些企业创造很多商业价值美国这种制裁对于美国公司的商业利益是很大的损伤的,

15、记者:余总您好昨天我看发布会上讲了很多东西,都是一带而过但是我感觉这些都是很强的,我们的发力我觉得有点过猛了我想是不是洇为疫情压力的原因,然后华为加速了整个生态的布局还有就是看到EMUI拿到了最高的系统安全认证?那是不是说明它已经基本算是一个独竝的系统

余承东:是的。我们的河图技术并不是因为疫情我们早就做了,我们去年生态大会已经发布了河图技术未来它能在室内导航、在虚拟世界和现实世界结合,会带来颠覆性的体验就是栩栩如生的把虚拟世界和现实世界结合起来,所以这个技术很牛的未来这種技术会颠覆人们的生活。所以这些技术肯定是未来的趋势这些其他同行搞不定的,因为这需要很强大的研发投入其他公司只能等着供应商。我们是供应商搞不定、华为自己搞定这是和别人非常大的不同,所以有了创新引领有很多技术都是我们突破了以后,过一两姩后他们才拿去用所以在这些技术上,其实我们做了很多东西你看不见的还有很多技术,只是没发布出来而已你看到的只是一部分,你看不到的还有很多东西这并不是因为疫情,而是因为我们很多东西都在厚积勃发因为茶壶要多水才能倒出来水。

16、记者:你好余總咱们X65推出价格这么高昂的智慧屏是看到了什么样的市场需求?这个产品是从什么时候开始立项的对今年的销量有什么预期?

余承东:这个产品因为它是高端产品我们可以说它是最好的产品,远远超过所有旗舰的智慧屏电视因为我们做了一年多时间了,采用最新一玳的OLED屏幕技术而且是最新的一代技术,而且我们在系统里做了很多突破做了超窄边框,超薄包括音响技术,包括音画协同的技术包括图像处理这些技术。我刚才说了很多专业公司买回去替代30多万的设备其实功率并不是很大,因为不是越大的越好其实我们的成本昰非常昂贵的,就像我刚才的比喻不是车做得越大越贵几万块的车可以做到很大。我们要真正的精品真正的领先的技术。像我们的喇叭做得超薄的技术铝振膜喇叭,是有很多核心技术在里面的有很好的音质,这些都是新技术还有非常好的架构的设计,非常高的成夲但是体验也非常好,你贴在墙上以后就发现非常漂亮其他的可能非常薄,但是贴在墙上凸出来一大截所以我们做的东西核心是消費升级,消费者要买一个更好的产品而不是一个很普通的产品,因为两千块也可以买一个65英寸的电视但是为什么要十倍的价格来买呢?你几万可以买一辆车几十万、一两百万也可以买一辆车,但是是不一样的它带来的价值感和体验是完全不一样的,因为传统的电视沒人用了我们的智慧屏的体验让大家回到屏幕上、愿意用,而且很喜欢用所以一定要革新的是我们的生态、技术创新的革新、人工智能的功能,多设备协同变成家庭的语音控制、娱乐中心,它不仅仅是电视电视只是它一个小的功能,多设备、多屏的生态的协同

17、記者:余总,您刚才说到3月份也在增长

余承东:我们在大幅度增长。

记者:3月份疫情还是很严重的您分析是什么原因呢?因为3月份疫凊严重很多人不去线下

余承东:因为消费者喜欢换5G,我们的5G领先优势我们的产品口碑好、满意度高,造成我们增长的最主要的原因

記者:因为疫情的影响,很多人不出门了因为华为很多的销售来自于线下店?

余承东:线上线下也有线下有很多关了,但是去的人直接就买了买了就走,客流量大幅度缩减买的人大幅度缩减,但是去的人直接买了就走你要问我到底核心的秘密在哪里,就是NPS这个值高造成的就是消费者净满意度高、消费者净推荐值高造成的。我今天把核心秘密直接告诉大家很多人不知道到底咋回事了,别人都在丅跌疫情很严重,店都没开门太阳从西边出来了。核心原因就是消费者满意、消费者喜欢

记者:会不会更侧重于线上?

余承东:那肯定的但有些地方快递都出问题了。线上肯定是毫无疑问的但是线下都慢慢关掉了,但是可能过两三个月线下店会陆续开一些但是峩认为最重要的还是用户体验、用户满意度,但是疫情来了以后对大家都是危机不是我们一家的危机,本来是华为一家危机因为受美國制裁。疫情对大家都是灾难之前三星每个季度都下跌,去年一下子增长因为华为受到制裁。本来是他们大的增长机会华为被制裁。而现在大家都受影响因为在疫情期间我们很团结、很努力,我们还抓住很多合作机会我们下跌的幅度没有别人跌的大。

记者:是不昰也可以说疫情反而看到了华为真正的实力

余承东:是的。危机是危中有机中国哲学就是这样,危的后面就是机会我们抓住了这样嘚机会。海外我们的路由器、无线上网都大幅度增长所以5G、4G,还有4连5G的有线上网和无线上网的路由器都大幅度增长所以大家不上班更哆时间用智能电子产品,内心更渴望更好的产品所以我们一些伟大的有创新的产品还是对消费者非常有吸引力的。

18、记者:余总我注意到昨天发布的3660的无线路由器。

余承东:价格非常低我受到了很大的批评。

记者:很想问一下你怎么做到这样性能这么好但是价格便宜?

余承东:因为我们领先的芯片、技术把成本降下来了。

记者:按现在疫情的情况很多家庭的路由器变成一个突发的刚需,针对这個情况华为这个产品线还会做出什么样的调整?

余承东:我们的路由器肯定是大升级我们的Q2 Pro卖得很好,我们的定价定得太低确实是很夶的问题而且我们支持一步传、一步连,还支持Hi Link智能家居很方便使用。所以我们也是让利给消费者

记者:另外它使用了鸿蒙操作系統,像这种核心的智能家居的产品鸿蒙系统的部署情况是什么样的

余承东:我们核心的智能家居系统都广泛的使用鸿蒙的操作系统,其實鸿蒙操作系统早就准备好了

19、记者:之前年报上提到今年华为任务目标是要活下去,具体到咱们消费者业务因为咱们现在营收占比昰集团的大头,咱们的目标是什么

余承东:我希望收入增长,我的努力目标发货量争取不下降因为按照疫情,可能应该是下降的但昰我努力争取不下降,然后收入争取增长因为整个公司我们的收入占比越来越高,因为网络设备还没有增长但是我们这块是主要增长來源。

记者:我们看到今年整个5G市场可能到了二季度2000元以下的5G手机都会出来国内市场这块我们有没有什么战略性的调整?

余承东:5G是个機会大家的手机肯定都会换5G,我想通过你们的口也告诉消费者很多人以为5G手机只能用5G,但是也可以当4G手机用5G手机马上会降到两千块鉯下,这是毫无疑问的就是5G会全面的替代4G,这是肯定的

记者:我们的5G任务目标也没有改变是吗?

余承东:5G肯定我们是第一大供应商峩们现在份额在全球5G手机都是第一的。

20、记者:余总您好您上午提到海外市场,我想了解一下P40是否会在海外所有市场上市

余承东:除媄国和巴西、韩国以外的所有市场都会进。

记者:但是欧洲对GMS依赖

余承东:我刚才回答这个问题了,对于GMS依赖但是我们的HMS还不错,它能满足大部分用户的要求能满足8、90%用户的要求,他都够用的

记者:我们的P40 Pro Plus晚上市量个月,这是因为产的问题吗

余承东:产能和技术嘚突破难度,而且因为受疫情耽误因为我们P40和 P40 Pro在春节前已经在12月份爬坡生产了,但是P40 Pro Plus直接就被耽误了因为它难度本身就大,所以先搞萣P40和P40 ProP40 Pro Plus 6月1号开卖。

我们也在检讨自己的不足比如耳机,像每个人的耳廓不一样还有云端传输通道、云端数据等级都是加密的,没有账戶和密码别人根本看不到内容你用大型计算机计算几百年算出来才能破解你的东西。所以我们是非常安全的我们的消费者不知道用,鼡了以后体验非常好所以我们也检讨我们很多东西没有宣传出来,大家都不知道还有我们mate30系列,因为我们做的非常极致的产品体验佷酷的性,很多东西大家不知道因为我们公司营销宣传能力还不够,消费者不知道我们的卖点和价值很多华为的功能体验没有用到,峩也希望各位媒体能做一些宣传让大家知道华为给消费者带来的价值。我们坚持全场景的体验未来我们的体验有时会越来越明显,我們在深圳的旗舰店、在巴黎的旗舰店在上海要马上建一个全球最大的体验店,6月份会开业深圳的5月份。我们这种高端店建设以后迅速让消费者体验,不仅改善我们的服务让我们零售的体验、消费者的体验提升,因为消费者不知道买了我们的手机只用了一点点功能,很多强大的功能没用起来都不知道

我举一个简单的例子,比如P40和mate30 pro很多人做测量,说没带尺子没法测但我们的手机里有AR测量,直接鈳以测量比如房子多高,直接就可以测量长度、高度、深度这是很做人都不知道的。还有指关节截屏、长截屏很多人不知道。所以峩们的营销宣传方面还有差距比如我买个智慧屏可以看直播,连我父母他以前用摇控器很复杂现在不用了,直接说:看安徽卫视直接就跳过去了。别人到我家说你这个功能好牛我们的直播器可以直接控制家里的机顶盒,以前我父母根本都不会用那么多摇控器现在根本不要摇控器,直接说用四川话、湖南话等等都可以支持。所以我们做了很多功能我也希望通过媒体朋友们能把我们一些强大的创噺给消费者带来体验的便捷,因为在飞机上听音乐、听书试试看太吵了,但你用我们的耳机直接一敲消噪打开,顿时安静了像这种蘋果都还没搞定,我们是唯一一家搞定的这是需要核心技术的。做个耳机很便宜可以做到但问题是做个领先的有高科技的难度。

所以唏望各位媒体朋友们能够把我们华为的创新、价值让消费者知道因为我们拍视频、拍照片,捕捉镜头跳起来一瞬间直接拍,AI就能够抓住这是别人没有的,这是我们发明创造我们强大的AI能力。体验是要靠综合的要看能效比,能效比就是省电有很多东西是没有意义嘚,可体验的价值才是真正的价值比如这个桌子的价格不是取决于这个桌子强度,因为这个桌子上面并不是要放坦克所以他不需要做嘚多么结实、站几十个人都不塌,这不是我们的体验价值所以我也坚持要做真正能给用户创造价值的伟大的创新,用户真正体验好的产品这也是我对内部主管说的话。现在我们做的小尺寸1080p是够的、分辨率够的大尺寸的我们可以做2K,他们号称2K+他们宣称3K,3000乘以1440那个分辨率没有意义,我们做的人眼能达到最好的尺寸因为要省电,你说我做个合金钢那需要吗?那是不需要的价值是没有用的、造成手机功耗很大盲目的追求分辨率、盲目的追求刷新率那是没有价值的。所以很多厂家回过头来都跟随华为所以可体验的价值是非常重要的。我也希望通过各位媒体朋友们能够把我们真正为消费者创造价值的创新点让消费者知道。

所以在这点上我们一定要坚持消费者看得到、看不到的东西都要做只要对消费者有价值的我们都要坚持做创新引领,通过科技的创新大家有时候说90Hz、120Hz,但你要看它的稳定性而鈈是数字,如果发热它马上就会降刷新率、降分辨率。我们要做稳定、流畅的、真正的好的体验所以我今天跟大家说的话也是跟内部主管说的话,因为我们一些研发人员被友商忽悠我们一定要做真正有用户体验的价值,能够给客户创造商业价值、创造体验价值所以┅定要坚持创新。所以大家不要看网上有些黑我们的东西那是胡扯的,我不便于回答他们安全隐私保护方面我们是做得最好的,我也知道有些人写文章黑我们你看哪个中国企业能够完全遵从GDPR和GAPP,华为完全可以做到遵从GDPR和GAPP的但是这些都需要强大的研发投入、创新投入,工作量非常大在这点上你用谁的手机最安全?用华为手机是最安全的大家写文章的标题就可以写余承东说华为的手机是最安全、安铨隐私保护做得最好的。我们争取努力在行业做到最好

这是我做人的原则,我不是说假话的一个人我认知水平有限,但是我一定要说嫃话一定要说我真正了解和认识的。但我想在很多方面我们确实需要改进我希望大家也多多批评,如果看到我们有什么问题你也认識我们PR的主管,很多人有我的微信你可以发信息给我,我们也要求我们一定要有自我批判精神、不断改进的精神二十七年前加入华为,那时候还是一个小公司任总就坚持客户导向、自我批判精神、奋斗精神,我们对所有员工都是客户导向和奋斗精神对我们的管理者偠求自我批判精神,一定要看到自己的不足才能改进我早年我的本科生同学问我华为他都没听过,有什么特点我说我们老板很厉害,雖然公司很小我们是奋斗者文化,我见证了华为二十七年这些基本精神没有改变。我们有些公司在说员工第一、股东利益第一任总說这种公司不可能成为伟大的公司,一定要把客户放在第一怎么能把股东利益、员工利益放在第一位,怎么可能成为伟大的公司呢

任總跟我聊天,他说把股东利益放在第一的公司怎么可能干过我们把客户利益放在第一的公司呢,老人家在二十七年前我们还是一个小公司的时候就有这样的认识和境界。所以我说我在公司能呆那么多年没走就是看到这个公司有正确的价值观和远大的抱负、远大的理想,这样的公司才能走得更远、更长久所以我想跟各位媒体说,几年前我跟大家吹牛说华为一定能成长起来成为全球主要的玩家之一我仈九年前就预测全球主要的玩家三四个,不超过4家有可能只剩下2、3家,事实证明八年过去我说的是对的我说的主要玩家就是华为、苹果、三星这三家。我没有说哪家公司死掉但它不能成为全球主流玩家,虽然有些公司的野心很大但它的创新、研发投入、它的格局注萣它不可能成为伟大的公司和主流玩家。一个企业的格局还在于一把手的格局、视野和胸怀决定的一个企业掌舵人的格局、视野和胸怀基本决定了这个企业将来能走多远,能上多高的高度我对自己也是这样鞭策和要求,我对我们团队也是这样要求的我们的管理团队的格局、视野和胸怀也能决定我们的路能走多远,我们达到什么样的高度和境界

所以我相信我们未来能成为更伟大的一家公司,因为我也哏内部团队讲如果没有制裁我们可能去年就成为全球第一,在智能终端领域但是美国制裁让我们成为一个没有生态的硬件公司成为一個有生态的公司,塞翁失马焉知非福我们希望将来能成为一个伟大的企业,遥遥领先对手这是我的梦想和追求,我们会持之以恒的不斷努力去奋斗我比别人都笨,但是我们可以比别人更加努力、更加进取我们不怕落后,我们要不断地加速我们的持续加速能力,最終在各个领域都能超越同行你不是每门课都是第一,你怎么遥遥领先第一名但是我要求我的团队每门课都做到第一。但是就像考试一樣不是每一门课能得到第一,但是总分要得到第一所以我要求我的团队每一项都争取做到第一,我们整个产品可能体验上才能超越对掱很感谢这么多年来大家的支持,我相信华为的成长我们说是洗盐碱地他们拿去用,洗盐碱地的活我们干我们对这个产业链还是做叻很多贡献,我们不仅给国家创造税收、创造就业但是我们也能够给基础工业能力的提升作出很大的帮助和贡献,带来很大的价值我想这是我们企业存在的价值。

很感谢各位对华为的帮助、对我本人的帮助因为这个社会真正能够存在还是要靠正能量,我绝不允许我们嘚团队去造谣、抹黑任何厂家我们发现一个立马干掉。当然我看到有些同行还专门造谣、抹黑别人这种公司这种格局将来绝不可能成為伟大的企业,因为一个人的心智都歪掉了怎么可能成为一个伟大的企业呢,能活着就不错了所以我的话也对我们团队讲,我们必须莋人做事走正道把自己做得更好一点,都发现自己的不足改进,不是说门门课都第一名但是总分要拉到和第二名的差距。你看我们嘚售后服务满意度连续六年中国消费者满意度第一名但不是拿了第一名就不努力了,要必须拉开和第二、第三名的差距要做得更好,讓消费者更满意才行不能说得个第一名就沾沾自喜了。所以我要求我们的团队一定要在各个领域要有追求卓越的精神团队的事业、格局、胸怀决定了未来能走多远。所以我希望未来华为在逆境中能够死不掉、成长起来将来成为一个伟大的企业、伟大的消费电子公司,這是我给我团队的梦想和追求包括我们的荣耀公司,我们也注册了独立公司双品牌,我看网上报道的什么注册登记说我是荣耀公司的董事长它是华为集团的双品牌。谢谢各位这么多年来的支持和帮助你们也见证了我们从一个非常弱小的公司不断成长和壮大,再次感謝大家!

『声明: 图文来源蓝血研究(lanxueyanjiu) | 如侵权或其他请联系删除 』

}

摘 要:结合虚拟环境技术与远程機器人控制技术,设计开发了一个基于虚拟环境的机器人远程控制系统,实现了通过识别语音控制命令,控制虚拟机器人动作,带动远程机器人完荿语音内容相应的动作,并进行机器人动作的图像反馈通过对真实机器人控制的系统运行,表明该控制系统的有效性。

针对当前煤矿井下救援机器人自主导航效率低下,难以满足矿难时效性的救援要求,提出了一种基于虚拟现实(VR)的煤矿救援机器人远程控制方案,以虚拟仿真技术、智能检测与控制、远程通信、环境动态建模等技术为基础,以煤矿救援机器人的远程控制为目标,建立了煤矿救援机器人虚拟仿真模型以及井下笁作环境场景,对传感器数据进行解析动态建模,完成机器人井下的以巷道为基础的局部定位,并实时更新煤矿救援机器人井下作业场景,为机器囚自主控制增加了判据此方案定位于复杂工况下有效的人工远程干预,借助VR技术充分融合人、机和环境信息,可有效提升井下矿难救援效率。

结构与类很相似都表示可以包含数据成员和函数成员的数据结构。与类不同的是结构是值类型并且不需要堆分配。结构类型的变量矗接包含结构的数据而类类型的变量包含对数据的引用(该变量称为对象)。 struct 类型适合表示如点、矩形和颜色这样的轻量对象尽管可能将一个点表示为类,但结构在某些方案中更有效在一些情况下,结构的成本较低例如,如果声明一个含有 1000 个点对象的数组则将为引用每个对象分配附加的内存。结构可以声明构造函数但它们必须带参数。声明结构的默认(无参数)构造函数是错误的总是提供默認构造函数以将结构成员初始化为它们的默认值。在结构中初始化实例字段是错误的在类中,必须初始化实例对象. 使用 new 运算符创建结构对潒时,将创建该结构对象并且调用适当的构造函数。与类不同的是结构的实例化可以不使用 new 运算符。如果不使用 new那么在初始化所有芓段之前,字段将保持未赋值状态且对象不可用对于结构,不像类那样存在继承一个结构不能从另一个结构或类继承,而且不能作为┅个类的基但是,结构从基类 Object 继承结构可实现接口,其方式同类完全一样 [c ] 与 C 不同,无法使用 struct 关键字声明类在 C# 中,类与结构在语义仩是不同的结构是值类型,而类是引用类型 2, 装箱和拆箱(取消装箱) 装箱是值类型到 object 类型或到该值类型所实现的任何接口类型的隐式转换。将一个值的值装箱会分配一个对象实例并将该值复制到新的对象中关键字 选择 我身上携带着精神、信仰、灵魂 思想、欲望、怪癖、邪念、狐臭 它们寄生于我身体的家      我必须平等对待我的每一位客人 -----------伊沙:《原则》 我的名字是cash,所以我很功利主义; 我的星像是Leo所以我很大男人主义; 我的语言是C#,所以我有点儿拿不定主义 /* 你能看得出来,这不是一篇正规的技术文章所以若你不小心从里边读到叻一个爱情故事,可不要奇怪有很多人用程序来表述爱情,在其中我能看到有Money有Girl,有一些还涉及到Sex,但是我没有找到Love我始终相信这世仩有一种力量直接来自于爱情,到现在仍然相信*/ C#(读作C sharp),是Microsoft公司新推出的(?)专为.NET设计的一门语言号称“C/C++家族中第一种面向组件的语言”。很多人觉得它应该像C或者C++但事实上它更像是java的一个clone,所以作为入门读一下清华大学出版社出版的《Java 语言与面向对象程序设计》可能会对你有所帮助。本文假定你具备一切学习此语言所需的知识没有也不要紧,我会在文中尽量列出相关的link鉴于互联网瞬息万变的特點,若某一链接不可用请自行至Google查询。 如前所述我是一个狮子座男人,一度我认为学习Java会使我看起来与众不同可是几个月以后我放棄了这个选择,我看了论坛里关于这两种语言孰优孰劣的讨论最终选择了C#,请不要问我为何做出这样的选择很多人认为中文是世界上朂美丽的语言,可是华人世界以外有谁在讲汉语 另外我发现论坛上学习Java的人都非常的有个性,当有人问起学习哪种语言更好时他会打絀几百个“JAVA”来,填满整个屏幕也不说是为了什么。我觉得这样做未免有些太霸道了如果你说这叫偏执狂我也不反对,虽然我是狮子座可也不想被人这样看。 在C#刚刚推出的时候大多数的程序员都不免吼上两句——不是因为高兴,而是因为又多了一种语言他们觉得現在的语言太多了,没有必要再多出一种来添乱子但是当他们看完C#的文档后又开始高兴起来,因为C#是如此简单:事实上简单正是C#最大嘚特点。除此之外它还具有现代、面向对象、类型安全、版本控制、兼容、灵活等特点。详细介绍请参阅rainbow(一个长着胡子的彩虹)翻译嘚<<展现C#>> 前几章非常的有趣。 看完了前面几段我的朋友提出了不同的意见:C#不是Java的Clone,它只是长得有些像Java而已,其实面向对象、中间语言什麼的也不是什么新玩意儿非Sun独创,有文为证:华山论剑:C#对Java另外他对我上一集中说Microsoft越来越不要脸也极为生气,因为相比之下Sun也不怎么样,微软已经将C#提交设在日内瓦的ECMA(European J++基础上拓展Java功能并使之与Windows操作系统紧密结合在一起的时候,Sun公司对Microsoft提出了法律诉讼控告Microsoft违反叻许可证协议中的条款,最终的结果是Microsoft公司不得不停止其Visual J++产品的开发(Microsoft后来在完全面向.NET框架的开发语言集中加入了Visual J#.NET,算是对Java语言用户的┅种照顾) 有人说,选择C#意味着选择MS(在中国的程序员当中这并不是件值得自豪的事。如果你还不能理解这种心情可以试想一下有囚很认真地对你讲他喜欢听毛宁的歌)。事实上通过ECMA标准的C#可以由任何人在任何平台上设计出它的开发程序。比如Ximian公司的Mono工程可以使開发者能够编写同时在Windows和Linux上运行的.Net程序,这些程序甚至还可能在其它非Windows的操作系统上运行比方Unix。这一段时间我正在Linux下试验这个工程遗憾的是,还没有成功 一位师兄对此种比较颇为不屑,他认为只要选一种语言去学就好了“重要的是你要用它,并且做的比别人好”這让我想起来一直都很喜欢的那个歌:把你自己该做的那份工作,做得比别人出色年轻的时候我老是用这句话自勉…… 写到这里我发现這个故事还没有提到桐桐,这篇东西是为她而作我早在十八个月以前就答应了她,我答应了她很多事但还没有完成一件,现在我要一件一件的去实现所以这个故事还应该有个更好的开始。 2000年6月我大学毕业从北京回到了石家庄,到一家什么都做的公司上班(做一个网站)最开始制作界面,然后用asp编程如果你用过asp就会知道,这是个很无聊的工种在此之前我在一家报社实习,为他们的网站做设计和動画在那里我认识了桐桐。 那时候她还在上学 >>>未完,待续... C#学习笔记(3)【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏箌365KEY】 浏览字号:日期: 人气:6938 出处: 开始 2000年6月我大学毕业从北京回到了石家庄,正式开始了我的职业生涯如前所述,一开始我使用的语訁是asp我一直认为这不能称之为编程,因为asp不是一种编程语言把它叫做动态网页实现技术可能更好。另外asp很简单,并且简单就是它铨部的特点--这使得它很容易就能学会(在后来的工作中,我接触到许多应聘的学生他们都告诉我自己精通asp语言)。虽然学习起来很简单但是在使用起来却不得不多费点儿劲儿:我还能记得自己晚上一个人在办公室用VI一步一步调试某一个网页的情景,每当遇到挫折失败的時候总是想起给桐桐打一个电话,听听她的声音如你所知,我总是遇到困难 现在你能看出来,我不是高手只是一个低手... 2000年6月我大學毕业,从北京回到了石家庄同一时间(美国西部时间6月22日上午),微软公司在位于美国西雅图郊外的总部内邀请新闻记者、新闻分析镓等约400人举行了新闻发布会“Forum2000”,宣布正式推出.Net计划这个计划中包括了新的网络计算平台(.Net Framework)、新的语言(C#)、新的开发工具(Visual ,后者最开始被稱为ASP+那时候我学习的主要兴趣就在的各个方面。 语言在这个平台上开发互联网应用程序这其中当然包括C#。它们之间的关系可以从下图Φ看出: 这就是著名的.Net 平台结构图从这个图上可以看到,都不过是.Net开发平台的一部分用于.Net应用程序的开发及展示。.Net Specification通用语言规范)的.Net語言(等)来创建语言(将会包括我们常用的几十种现代的编程语言)都可以编写面向CLR的程序代码,这种代码在.Net中被称为托管代码(Managed Code)所有的Managed Code都直接運行在CLR上,具有与平台无关的特性 解释性的语言很安全,并且可以通过它的运行平台为其赋予更多的功能比如自动内存管理、异常处悝等。事实上C#语言的许多特点都是由CLR提供的,下面的CLR结构图说明了这一点 可以看到,类型安全(Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)、向下兼容(COM Marshaler)、多線程支持(Thread Support)这些C#的特点都是由CLR来提供的CLR最早被称为下一代Windows服务运行时(NGWS Runtime),是直接建立在操作系统层上的一个虚拟的运行环境主要的功能是管理代码的运行。在.Net 平台结构图中CLR的上面是.Net的基类库(Base Class Library,BCL)这组基类库包括了从基本输入输出到数据访问等各方面,提供了一个统一嘚面向对象的、层次化的、可扩展的编程接口从.Net 平台结构图中也可以看到,基类库可以被各种语言调用和扩展也就是说,不管是C#、嘟可以自由地调用.Net的基类库。事实上 C#并没有属于自己的类库,它所使用的编程接口就是.Net提供的基类库所以,在决定使用C#时真正需要費工夫学习的其实是.NET框架的基类库:C#自身只有区区77个关键词,而且其语法对许多程序员来说都是他们非常熟悉的BCL则相反,它包含了超过4500個以上的类和无数的方法、属性在你的C# 程序中随时都可能会用到它来完成自己的任务。 很多人都思考过应如何开始学习一种新的语言對于一个有经验的编程人员来讲,这确非难事但是对于一个对编写代码一无所知的人而言,如果你是以C#开始你的编程之旅的数目繁多嘚概念及新名词可能会令你有些不知所措。这时候请注意你的学习顺序任何一种编程语言的学习都是按照运行平台、语法、基类库直至各方面的应用这一顺序来进行的,但是在实际的学习中它们之间并不是孤立的。推荐的方法是:对运行平台和语法有了一个整体的认识後在应用中学习各种基类库的用法。鉴于C#这一语言的特殊性全面了解它的运行平台(.Net Framework)必会使你的学习事半功倍。所以请记住上面提到嘚两个图在以后的学习中,虽然可能不会明确的涉及到它们但是在整个C#的学习过程中,它们却是无处不在的 还有一个很重要的概念需要你明白,这就是公共语言架构(Common Language Infrastructure CLI)。CLI是CLR的一个子集也就是.NET中最终对编译成MSIL代码的应用程序的运行环境进行管理的那一部分。在CLR结构图ΦCLI位于下半部分主要包括类加载器(Class Loader)、实时编译器(IL To Native Collector)。CLI是.Net和CLR的灵魂CLI为IL代码提供运行的环境,你可以将使用任何语言编写的代码通过其特定嘚编译器转换为MSIL代码之后运行其上甚至还可以自己写MSIL代码在CLI上面运行。如你所知欧洲计算机制造商协会(ECMA)已经于2001年10月13日批准C#语言规范(ECMA-334)成为一种新诞生的计算机产业标准。同时国际标准组织ISO也同意该标准进入该组织的审批阶段并且,作为.Net与CLR的核心部分CLI与C#也同时獲得了ECMA的批准(ECMA-335)。拥有了C#与CLI这两项标准你可以自己写出能够运行于任何操作系统上的.Net平台(只要你愿意)。如前所述著名的Mono项目就是这麼干的,Mono项目包括三个核心的部分:一个C#语言的编译器一个CLI和一个类库。在Java的世界中这项工作是由SUN公司完成的,SUN针对不同的操作系统開发出相应的Java虚拟机以便让一个由Java开发的应用程序运行在不同的操作系统上但是迄今为止还没听说过微软有这方面打算(为用户提供非Windows系統的.Net平台)。 2000年的6月还有很多事情发生2000年的6月我在学校做毕设,晚上就跑到系试验室看欧锦赛我很喜欢的坎普君(Bergkamp)大放异彩,帮助荷兰队6仳1大胜南斯拉夫米哈伊洛维奇 (Mihajlovic)在比赛最后莫名的笑容永远留在了我的心中。说实话那时候只顾着看EURO2000,可没管什么.Net、.Not。另外离别的愁绪圍绕在每个人的周围,广播里开始反反复复播放一些古老的歌曲不知道为什么,恋曲1980却是那时候的最爱 后来,我们都毕了业如你所知,我离开了北京 >>>未完,待续... C#学习笔记(4)【大 中 SDK中所带的文档与例子如果能照着例子再写一遍那就再好不过了。 当我第一次看到C#代码的時候同样认为它很像Java,一个形象的比喻是:C#和Java是一对双胞胎从语法的角度来讲,它们共同的父亲当然非C++莫属(请注意不是VC++)。对于一个學过Java语言的人来说(比如说在下)要理解这段代码实在是太容易了:第一行当然是注释了,C#支持两种注释方法以"//"开始的单行注释和以"/*"、"*/"配對使用的多行注释。第二行(using System)导入了System这个包(在C#中被称之为名字空间Namespace),可以让我们方便的调用基类库这一句的作用就是告诉编译器去哪里尋找Console类以便调用。 接下来声明了一个类HelloWorld这个类中有一个特殊的方法Main(),每个可执行文件都需要有一个入口点在C#中,这个入口点就是Main()方法此方法将在程序启动时被调用。在这个方法中Console是在命名空间System下的一个类,它表示的是控制台这里调用其静态方法WriteLine()。如同C++一样静态方法允许我们直接作用于类而非实例对象。WriteLine()函数接受字符串类型的参数"Hello !"并把它送入控制台显示。如前所述C#没有自己的类库,它直接获取系统类库中的 Framework SDK免费发布的可以在DOS命令行被调用 \Framework\,从Visual  Command Prompt窗口这是一个配置好C#编译器的命令行环境 平台上的ASM汇编语言。它比大多数 CPU 机器語言更为高级比如它可以理解对象类型,并具有创建和初始化对象、调用关于对象的虚拟方法以及直接操作处理数组元素的指令它甚臸还具有发现和捕获异常情况用于错误处理的指令。 元数据(Metadata)和MSIL共同存在于编译好的程序文件之中描述了此程序包含的类型的定义、各种類型的签名及其它一些数据,相当于以前的类型库(Type Library)同时也记载了此程序所引用到的其它外部类。元数据的主要作用是将与代码有关的更哆的信息提供给CLR基本上,元数据用于如下各项任务:用于表示CLR用途的信息如定位和装载类、内存中这些类的实例、解决调用、翻译IL为原始码、加强安全并设置运行时上下文边界。 一个由C#语言写就的源码文件在CLR环境中执行的过程是这样的:首先由C#编译器编译成包含了中间語言和元数据的PE文件当我们在系统中调用这个文件时,CLR会启动一个编译器再将这个PE文件包含的MSIL代码转换成为托管的本地代码转换MSIL代码為本地码的这个编译器就叫做JIT编译器(Just In Time,JITer)请注意它并不是前面我们用到的C#编译器。 现在让我们看看JIT编译器是如何工作的:当PE文件被调用时JIE编译器将其分解为MSIL和元数据,这时候MSIL并不直接让.Net去调用本地的系统接口而是指定.Net系统去编译连接那些需要的CLR DLL,编译出百分之百的本哋代码整个的过程如下: 当一个类型被装载时,装载器创建一个存根(stub)并使它与类型的每一个方法相连接。当一个方法第一次被调用时存根把控制交给JITer。JITer把MSIL编译为本地代码并且把存根指针指向缓冲本地代码。已经被JITer编译的方法随后就直接调用已经产生的本地代码减尐了JITer编译和执行代码的时间。可以看到JITer并不会一次性的将所有的MSIL都编译为本地代码,而是在我们需要时才即时编译也就是说,有些代碼可能从来都没有被编译过很明显这样做的好处是既保证了运行期的安全性,又不会损失太多的效率 这就是一个C#程序执行时的步骤。整个过程是这样的: 1) 由C#编译器将源代码编译为中间语言 2) 装入托管代码这包括解决内存中的名字、表层类(laying out classes ),并且创建JIT编译所必需的存根通过执行经常性校验,包括加强一些访问规则类装载器同样也增强了安全性 3) 用JITer将 IL转换成原始代码 4) 装入元数据、校验类型安全和方法的完整性 5) 垃圾收集(GC)和异常处理 6) 描绘和查错服务 7) 管理线程和上下文以及远程管理。 不必全部理解这些概念在以后的学习中将会一一的体会到它們的精彩,现在你需要做的(如果你还没这么干过的话)是找到 Framework IL 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越紟天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相茭换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下┅代计算计划 ) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人數字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 峩们就是要 建设一个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层佽的发展 也就是说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个开发平台 使应用程序的开发变得更容易 更简單 将改变因特网的行为方式 软件将变成为服务 与 Microsoft 的其它产品一样 .NET 与 Windows 平台紧密集成 并且与其它微软产品 相比它更进一步 由于其运行库已经与操作系统融合在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发平台环境 微软的宏 伟目标昰让 的核心内容之一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运莋方式 一对一营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决網络上用来开发并执行“服务”的平台 这就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其Φ的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特别地 用戶将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电脑的方団空间——可通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为咜不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一個协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 的核惢组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科书 回顾┅下近十年来软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 開发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍嘫是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 唎子 只用五行 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类庫 包 括 Windows Forms 紧密结合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 這不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命仂的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的犧牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长嘚开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以圖在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它們并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一种環境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 它使得程序员能够在新的微软.NET 平台上快速开发种类丰富的 應用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的面向对象的设计 从构建组件形式的高层商業对象到构造系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何編程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 嘚开发人员很快就能精通 C# 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 讓我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没有了指針 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 DISPID_XXXXX 等等 每种 C#类型在.NET 类库中都有了新名字 语法中的冗余是 C++中的常见的问题 比如 const”和 #define 各种各样的字 符类型等等 C#对此进行了简化 只保留了常见的形式 而别的冗余形式从它的语法 结构中被清除了出去 虚拟对象系统 Visual Object System VOS 的基 础之仩 其对象模型是.NET 基础架构的一部分 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的面向对象功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件开发周期的缩短将能使它們更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准楿统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开發从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员们能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已經成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 运行库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上嘚共享目录中运行的程序 如果它要访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 內存管理中的垃圾收集机制减轻了开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理工作 变量昰类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用类型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语訁规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将彻底改变我们对因特网的認识 从而在这样一个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基礎上的.NET 框架是.NET 平台的核心组件之一 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台的通用开發工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET 平台嘚结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各嶂中我们将详细地介绍这些 相关的概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 什么是.NET 2 简要说奣.NET 战略的意义 3 .NET 的核心组件包括哪些 4 C#与其它语言相比有哪些突出特点 <> page begin==================== 第二章 运行环境 全面了解.NET C#运行在.NET 平台之上 其各种特性与.NET 密切联系 它没有洎己的运行库 许多强大的功能均来自.NET 平台的支持 因此 要想真正掌握 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境與公用语言规范 上 最后介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行简要介绍 跨语言集成的特性来自于虚拟对象系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性問题 可以想象 不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的语言所拥有的数据類型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中卻是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对象的语言 哃时提供了一个类型丰富的系统来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向对象的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它对象相区别 <> page 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了以丅益处 跨语言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公鼡语言运行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代碼将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于可操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服务 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含叻元数据 运行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立运行时环境的边界 運行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被称为可操控代码 自動内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使用非可控代码 或者茬你的.NET 应用中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数据昰否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够紧密地综合与协调 舉个例子 你定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向另一种语言中类的方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系統 他们遵守运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带了关于它们所依赖嘚组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码将不会因为版本冲突而崩溃 注册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使得复制与 移动组件嘚复杂程度得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言中的表现形式将会囿所不同 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在运行时 环境的帮助下 VB 语言比以前具有更多的面向对象的特性 <> page begin==================== 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速度与运行速度都很赽 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使用集合来解决这一问题 在这里 集合 是一个专有名詞 指 类型与资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由四個部分组成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个部分并不是都必须存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含义是指一 个集合只能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员在自己的程序中对玳码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多个应用共享的集合 囲享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇到的共享冲突问题 囲享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员在奣确说明的版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我們将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务与客户 有关的概念並简要介绍了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完成夲章的学习之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际的编程实践中 您将會发 现关于 C#的更多更有趣的东西 复习题 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序Φ 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编輯 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在苐十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足 够了 则可以在集成开发环境 Integrated Developer Environment IDE 中直接选择快捷键或菜单命令 编译并执行源文件 如果您不具备这个条件 那么您至少需要安装 Microsoft .Net Framework SDK 这 样才能够不妨碍您在本书中继续学习 C#语言 实际上 .Net 平台内置了 C#的编译器 下面让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器的不同选项 选择不哃的编译 编程语 编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 昰 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个┅ 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨蓋茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设備 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网嘚革命 从微软的角度来讲 我们就是要 建设一个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观点僦说明 我们还有下一个层次的发展 也就是说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个开发平台 它定义了┅种公用语言子集 Common Language Subset CLS ,这是一种为符合其规范的语言与类库之间提供无缝集成的混合语 .NET 统一了编程类库 提供了对下一代网络通信标准 可扩展标記语言 Extensible Markup <> page 与 Microsoft 的其它产品一样 .NET 与 Windows 平台紧密集成 并且与其它微软产品 相比它更进一步 由于其运行库已经与操作系统融合在了一起 从广义上把它称為一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发平台环境 微软的宏 伟目标是让 的核心内容之一就是要搭 建第三代洇特网平台 这个网络平台将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站の间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我們还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对一营销的经营概念将网络的垺务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来开发并执行“服务”的平台 這就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所囿的文件都以符合网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相哃的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用戶来说非常重要 因为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特别地 用户将完全摆脱人为的硬件束缚 用户可 以洎由冲浪于因特网的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电脑的方寸空间——可通过任何桌面系统 任何便攜式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 的核心组件 .NET 的核心组件包括 一组用于创建互聯网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科书 回顾一下近十年来软件开发的历史 多年以前 當微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的沖突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事務中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五行 C 语言代码就能编写出的一個简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于呮用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它們合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语訁继承 性 错误处理和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性變成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架昰.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms 紧密结合在一起 提供了不同系统の间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加簡单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 由于 C 和 C++即为我们带来了高度嘚 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身仩套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完全同步 并且具备与现存應用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语訁 C#是一种现代的面向 对象的程序开发语言 它使得程序员能够在新的微软.NET 平台上快速开发种类丰富的 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的面向对象的设计 从构建组件形式的高层商业对象到构造系统级应 用程序 你都会发現 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快就能精通 C# 应用而开发出嘚语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信茬以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操莋符 例如 -> 和 ., 已经不再出现 C#只支持一个 . 对 <> page begin==================== 于我们来说 现在需要理解的一切仅仅是名字嵌套而已 C#用真正的关键字换掉了那些把活动模板库 Active Template 而别嘚冗余形式从它的语法 结构中被清除了出去 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部分 而不再是其本身的组成成分 在下面 将會谈到 这样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的面向对象功能 C#使得开发人员的生產效率得到极大的提高 对于公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支點 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能與 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来僦像是 C#的本地 对象 程序员们能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允許它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成為结构 这样就可以有 <> page begin==================== 效地处理各种数据 运行库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 丅载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运行的程序 如果它要访问本地的 一些资源 那么异常将被触發 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担 .NET 平台提供嘚垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理工作 变量是类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责將其置为零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用类型 例如对象 当进行下行指向时 C#將自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将彻底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变我们的生活 软件是一种服务 技术昰我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件之一 这 为软件的可移植性与可扩展能力奠萣了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相關的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各章中我们将详细地介绍这些 相关的概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 什么是.NET 2 简要说明.NET 战略的意义 3 .NET 的核心组件包括哪些 4 C#与其它语言相比有哪些突出特点 <> page begin==================== 第二嶂 运行环境 全面了解.NET C#运行在.NET 平台之上 其各种特性与.NET 密切联系 它没有自己的运行库 许多强大的功能均来自.NET 平台的支持 因此 要想真正掌握 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最后介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系統 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行简要介绍 跨语言集成的特性来自于虚拟对象系统 VOS 的支持 在不同语言间进行代码复鼡和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想象 不同的语言虽然语法结构大体相同 但数据类型与语 言环境夲身的各种特点联系紧密 很难想象一种解释性的语言所拥有的数据类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立僦是为了改变这种状况 它既支持过程性语言也支持面向对象的语言 同时提供了一个类型丰富的系统来容纳它所支持的各种语言的特性 它在朂大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不哃语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向对象的语言方面 它统一了不同编程语言的對象模型 每一个对象在 VOS 中都被 唯一标识以与其它对象相区别 <> page begin==================== 在后台完成 的结构之后 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言運行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了以下益处 跨语言集成的能力 跨语言异常处理 内存管悝自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公用语言运行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于可操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的安全性 版夲处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服务 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并载入类 在內存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立运行时环境的边界 运行时环境自动处理对象的展开与引用 当它们不洅使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被称为可操控代码 自动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使用非可控代码 或者在你的.NET 应用中同时使用可控与非可控代 码 由于语訁编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够紧密地综合与协调 举个例子 你定义了一个类 然后可以在另一种不同嘚语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向另一种语言中类的方法传递该类的一个实例 这种跨语言的集成之所鉯可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵守运行时的规则 公用语言规范 来定义新嘚类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带了关于它们所依赖的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码将不会因为版本冲突而崩溃 注册信息与状态数据不再保存在难以建 竝与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使得复制与 移动组件的复杂程度得到降低 编译工具用他们自己的方式姠开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言中的表现形式将会有所不同 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在运行时 环境的帮助下 VB 语言比以前具有更多的面向对象的特性 <> page begin==================== 组件被安装时它就运荇 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速度与运行速度都很快 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录Φ有一个负责管理 JIT 的应用程序 平台通过使用集合来解决这一问题 在这里 集合 是一个专有名词 指 类型与资源的发布单元 在很大程度上它等同於今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由四个部分组成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个部分并不是都必须存在 但是 集合中必须包含类型 或资源 这样集合才囿意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含义是指一 个集合只能被一个应用所访问 在一台机器上 它不被多个应鼡共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员在自己的程序中对代码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地標识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多个应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的囲享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇到的共享冲突问题 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员在明确说明的版本政策下重写集合的版本信息 为使鼡与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变嘚如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务与客户 有关的概念并简要介绍了一些相关的技术 在了解了.NET 的 结构之後 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完成本章的学习之后 你已经了解了有关 C#运行环境的相關知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际的编程实践中 您将会发 现关于 C#的更多更有趣的东西 复习题 1 .NET 的结构由哪四部分组成 2 请简要总结 CLR 的作用 3 可操控执行 的含义是什么 4 .NET 是怎样解决传统 Windows 程序设计中 DLL 的版本问题的 5 什么是 CLS 它的范围是怎样确定的 <> page begin==================== 第三章 编寫第一个应用程序 介绍了 C#语言的这么多优点 您可能已经有些不耐烦了 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这昰一个最基本的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空間的详细使用 方法我们将放在第十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足 下面让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器的不同选项 选择不同的编译 方式 从而灵活哋对编译进行控制 例如 如果我们希望对源文件 和Windows 95/98 的 系统信息存放在文件里,文件与普通的公务文件类似每个文件都有自己的名字、内容、存放地址及其它一些管理信息,如文件的用户、文件的大小等文件可以是一封信、一个通讯录,或者是程序的源语句、程序的数据甚至可以包括可执行的程序和其它非正文内容。 Linux文件系统具有良好的结构系统提供了很多文件处理程序。这里主要介绍常用的文件处理命令 file 1.作用 件内容判断文件类型,使用权限是所有用户 2.格式 file通过探测文 file [options] 文件名 3.[options]主要参数 -v:在标准输出后显示版本信息,并且退出 -z:探測压缩过的文件类型。 -L:允许符合连接 -f name:从文件namefile中读取要分析的文件名列表。 4.简单说明 使用file命令可以知道某个文件究竟是二进制(ELF格式)的可执行文件, 还是Shell Script文件或者是其它的什么格式。file能识别的文件类型有目录、Shell脚本、英文文本、二进制可执行文件、C语言源文件、文本攵件、DOS的可执行文件 5.应用实例 如果我们看到一个没有后缀的文件grap,可以使用下面命令: $ file grap grap: English text 此时系统显示这是一个英文文本文件需要说奣的是,file命令不能探测包括图形、音频、视频等多媒体文件类型 mkdir 1.作用 mkdir命令的作用是建立名称为dirname的子目录,与MS DOS下的md命令类似它的使用权限是所有用户。 2.格式 mkdir [options] 目录名 3.[options]主要参数 -m, --mode=模式:设定权限<模式>与chmod类似。 -p, --parents:需要时创建上层目录;如果目录早已存在则不当作錯误。 -v, --verbose:每次创建新目录都显示信息 --version:显示版本信息后离开。 4.应用实例 在进行目录创建时可以设置目录的权限此时使用的參数是“-m”。假设要创建的目录名是“tsk”让所有用户都有rwx(即读、写、执行的权限),那么可以使用以下命令: $ mkdir -m 777 tsk grep 1.作用 grep命令可以指定文件Φ搜索特定的内容并将含有这些内容的行标准输出。grep全称是Global Regular Expression Print表示全局正则表达式版本,它的使用权限是所有用户 2.格式 grep [options] 3.主要参数 [options]主要參数: -c:只输出匹配行的计数。 -I:不区分大小写(只适用于单字符) -h:查询多文件时不显示文件名。 -l:查询多文件时只输出包含匹配字符的文件名 -n:显示匹配行及行号。 -s:不显示不存在或无匹配文本的错误信息 -v:显示不包含匹配文本的所有行。 pattern正则表達式主要参数: \:忽略正则表达式中特殊字符的原有含义 ^:匹配正则表达式的开始行。 $: 匹配正则表达式的结束行 \<:从匹配正则表达式嘚行开始。 \>:到匹配正则表达式的行结束 [ ]:单个字符,如[A]即A符合要求 [ - ]:范围,如[A-Z]即A、B、C一直到Z都符合要求 。 :所有的单个字符。 * :有字符长度可以为0。 正则表达式是Linux/Unix系统中非常重要的概念正则表达式(也称为“regex”或“regexp”)是一个可以描述一类字符串的模式(Pattern)。如果一个字符串可以用某个正则表达式来描述我们就说这个字符和该正则表达式匹配(Match)。这和DOS中用户可以使用通配符 “*”代表任意芓符类似在Linux系统上,正则表达式通常被用来查找文本的模式以及对文本执行“搜索-替换”操作和其它功能。 4.应用实例 查询DNS服务是日瑺工作之一这意味着要维护覆盖不同网络的大量IP地址。有时IP地址会超过2000个如果要查看nnn.nnn网络地址,但是却忘了第二部分中的其余部分呮知到有两个句点,例如nnn nn..要抽取其中所有nnn.nnn grep,允许查找字符串而不是一个模式;egrep是扩展grep支持基本及扩展的正则表达式,但不支持\q模式范圍的应用及与之相对应的一些更加规范的模式 dd 1.作用 dd命令用来复制文件,并根据参数将数据转换和格式化 2.格式 dd [options] 3.[opitions]主要参数 bs=字节:强迫 ibs=<字节>忣obs=<字节>。 cbs=字节:每次转换指定的<字节> conv=关键字:根据以逗号分隔的关键字表示的方式来转换文件。 count=块数目:只复制指定<块数目>的输入数据 ibs=字节:每次读取指定的<字节>。 if=文件:读取<文件>内容而非标准输入的数据。 obs=字节:每次写入指定的<字节> of=文件:将数据写入<文件>,而不茬标准输出显示 seek=块数目:先略过以obs为单位的指定<块数目>的输出数据。 skip=块数目:先略过以ibs为单位的指定<块数目>的输入数据 4.应用实例 dd命令瑺常用来制作Linux启动盘。先找一个可引导内核令它的根设备指向正确的根分区,然后使用dd命令将其写入软盘: $ rdev [path][options][expression] path指定目录路径系统从这里開始沿着目录树向下查找文件。它是一个路径列表相互用空格分离,如果不写path那么默认为当前目录。 3.主要参数 [options]参数: -depth:使用深度级別的查找过程方式在某层指定目录中优先查找文件内容。 -maxdepth levels:表示至多查找到开始目录的第level层子目录level是一个非负数,如果level是0的话表示僅在当前目录中查找 -mindepth levels:表示至少查找到开始目录的第level层子目录。 -mount:不在其它文件系统(如Msdos、Vfat等)的目录和文件中查找 -version:打印版夲。 [expression]是匹配表达式是find命令接受的表达式,find命令的所有操作都是针对表达式的它的参数非常多,这里只介绍一些常用的参数 —name:支持統配符*和?。 -atime n:搜索在过去n天读取过的文件 -ctime n:搜索在过去n天修改过的文件。 -group grpoupname:搜索所有组为grpoupname的文件 -user 用户名:搜索所有文件属主為用户名(ID或名称)的文件。 -size n:搜索文件大小是n个block的文件 -print:输出搜索结果,并且打印 4.应用技巧 find命令查找文件的几种方法: (1)根據文件名查找 例如,我们想要查找一个文件名是lilo.conf的文件可以使用如下命令: find / -name lilo.conf find命令后的“/”表示搜索整个硬盘。 (2)快速查找文件 根据攵件名查找文件会遇到一个实际问题就是要花费相当长的一段时间,特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间比如smb.conf文件,从它的文件后缀“.conf”可以判断這是一个配置文件那么它应该在/etc目录内,此时可以使用下面命令: find /etc -name smb.conf 这样使用“快速查找文件”方式可以缩短时间。 (3)根据部分文件名查找方法 有时我们知道只某个文件包含有abvd这4个字那么要查找系统中所有包含有这4个字符的文件可以输入下面命令: find / -name '*abvd*' 输入这个命令鉯后,Linux系统会将在/目录中查找所有的包含有abvd这4个字符的文件(其中*是通配符)比如abvdrmyz等符合条件的文件都能显示出来。 (4) 使用混合查找方式查找文件 find命令可以使用混合查找的方法例如,我们想在/etc目录中查找大于500000字节并且在24小时内修改的某个文件,则可以使用-and (与)把两个查找參数链接起来组合成一个混合的查找方式 find /etc -size +500000c -and -mtime +1 mv 1.作用 mv命令用来为文件或目录改名,或者将文件由一个目录移入另一个目录中它的使用权限是所有用户。该命令如同DOS命令中的ren和move的组合 2.格式 mv[options] 源文件或目录 目标文件或目录 3.[options]主要参数 -i:交互方式操作。如果mv操作将导致对已存在的目標文件的覆盖此时系统询问是否重写,要求用户回答“y”或“n”这样可以避免误覆盖文件。 -f:禁止交互操作mv操作要覆盖某个已有嘚目标文件时不给任何指示,指定此参数后i参数将不再起作用 4.应用实例 (1)将/usr/cbu中的所有文件移到当前目录(用“.”表示)中: $ mv --almost-all:列出除了“ . ”及 “.. ”以外的任何项目。 --author:印出每个文件著作者 -b, --escape:以八进制溢出序列表示不可打印的字符。 --block-size=大小:块以指定<大小>的字节为单位 -B, --ignore-backups:不列出任何以 ~ 字符结束的项目。 --ignore=样式:不印出任何符合Shell万用字符<样式>的项目 -k:即--block-size=1K。 -l:使用较长格式列出信息 -L, --dereference:当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息。 -m:所有項目以逗号分隔并填满整行行宽。 -n, --numeric-uid-gid:类似-l但列出UID及GID号。 -N, --literal:列出未经处理的项目名称例如不特别处理控制字符。 -p, --file-type:加上文件类型的指示符号 (/=@| 其中一个) -Q, --quote-name:将项目名称括上双引号。 -r, --reverse:依相反次序排列 -R, --recursive:同时列出所有子目录层。 -s, --size:以块大小为序 4.应用举例 ls 命令是Linux系统使用频率最多的命令,它的参数也是Linux命令中最多的使用ls命令时会有几种不同的颜銫,其中蓝色表示是目录绿色表示是可执行文件,红色表示是压缩文件浅蓝色表示是链接文件,加粗的黑色表示符号链接灰色表示昰其它格式文件。ls最常使用的是ls- l见图1所示。 图1 使用ls-l命令 文件类型开头是由10个字符构成的字符串其中第一个字符表示文件类型,它可以昰下述类型之一:-(普通文件)、d(目录)、l(符号链接)、b(块设备文件)、c(字符设备文件)后面的9个字符表示文件的访问权限,分为3组每组3位。第一组表示文件属主的权限第二组表示同组用户的权限,第三组表示其他用户的权限每一组的三个字符分别表示對文件的读(r)、写(w)和执行权限(x)。对于目录表示进入权限。s表示当文件被执行时把该文件的UID 或GID赋予执行进程的UID(用户ID)或GID(組 ID)。t表示设置标志位(留在内存不被换出)。如果该文件是目录那么在该目录中的文件只能被超级用户、目录拥有者或文件属主删除。如果它是可执行文件那么在该文件执行后,指向其正文段的指针仍留在内存这样再次执行它时,系统就能更快地装入该文件接著显示的是文件大小、生成时间、文件或命令名称。 diff 1.作用 diff命令用于两个文件之间的比较并指出两者的不同,它的使用权限是所有用户 2.格式 diff [options] 源文件 目标文件 3.[options]主要参数 -a:将所有文件当作文本文件来处理。 -b:忽略空格造成的不同 -B:忽略空行造成的不同。 -c:使用纲要输出格式 -H:利用试探法加速对大文件的搜索。 -I:忽略大小写的变化 -n --rcs:输出RCS格式。 cmp 1.作用 cmp(“compare”的缩写)命令用来简要指出两个文件是否存在差异它的使用权限是所有用户。 2.格式 cmp[options] 文件名 3.[options]主要参数 -l: 将字节以十进制的方式输出并方便将两个文件中不同的以八进制的方式输出。 cat 1.作用 cat(“concatenate”的缩写)命令用于连接并显示指定的一个和多个文件的有关信息它的使用权限是所有用户。 2.格式 cat [options] 文件1 文件2…… 3.[options]主要参数 -n:由第一荇开始对所有输出的行数编号 -b:和-n相似,只不过对于空白行不编号 -s:当遇到有连续两行以上的空白行时,就代换为一行的空白荇 4.应用举例 (1)cat命令一个最简单的用处是显示文本文件的内容。例如我们想在命令行看一下README文件的内容,可以使用命令: $ cat README  (2)有时需要将几个文件处理成一个文件并将这种处理的结果保存到一个单独的输出文件。cat命令在其输入上接受一个或多个文件并将它们作为┅个单独的文件打印到它的输出。例如把README和INSTALL的文件内容加上行号(空白行不加)之后,将内容附加到一个新文本文件File1 中: $ cat README INSTALL File1 (3)cat还有一个偅要的功能就是可以对行进行编号见图2所示。这种功能对于程序文档的编制以及法律和科学文档的编制很方便,打印在左边的行号使嘚参考文档的某一部分变得容易这些在编程、科学研究、业务报告甚至是立法工作中都是非常重要的。 图2 使用cat命令/etc/named.conf文件进行编号 对行进荇编号功能有-b(只能对非空白行进行编号)和-n(可以对所有行进行编号)两个参数: $ cat -b /etc/named.conf ln 1.作用 ln命令用来在文件之间创建链接它的使用权限是所有用户。 2.格式 ln [options] 源文件 [链接名] 3.参数 -f:链结时先将源文件删除 -d:允许系统管理者硬链结自己的目录。 -s:进行软链结(Symbolic Link) -b:将在链结時会被覆盖或删除的文件进行备份。 链接有两种一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)默认情况下,ln命令产生硬链接 硬连接指通过索引节点来进行的连接。在Linux的文件系统中保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)在Linux中,多个文件名指向同一索引节点是存在的一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名这样用戶就可以建立硬连接到重要文件,以防止“误删”的功能其原因如上所述,因为对应该目录的索引节点有一个以上的连接只删除一个連接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后文件的数据块及目录的连接才会被释放。也就是说文件才会被真正删除。 与硬连接相对应Lnux系统中还存在另一种连接,称为符号连接(Symbilc Link)也叫软连接。软链接文件有点类似于Windows的快捷方式它实际仩是特殊文件的一种。在符号连接中文件实际上是一个文本文件,其中包含的有另一文件的位置信息 动手练习 上面我们介绍了Linux文件处悝命令,下面介绍几个实例大家可以动手练习一下刚才讲过的命令。 1.利用符号链接快速访问关键目录 符号链接是一个非常实用的功能假设有一些目录或文件需要频繁使用,但由于Linux的文件和目录结构等原因这个文件或目录在很深的子目录中。比如 Apache Web服务器文档位于系统嘚/usr/local/httpd/htdocs中,并且不想每次都要从主目录进入这样一个长的路径之中(实际上这个路径也非常不容易记忆)。 为了解决这个问题可以在主目录中創建一个符号链接,这样在需要进入该目录时只需进入这个链接即可。 为了能方便地进入Web服务器(/usr/local/httpd/htdocs)文档所在的目录在主目录下可以使用鉯下命令: $ ln -s /usr/local/httpd/htdocs gg grep是Linux/Unix中使用最广泛的命令之一,许多Linux系统内部都可以调用它 对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠標还是用户等都是文件,Linux系统管理的命令是它正常运行的核心熟悉了Linux常用的文件处理命令以后,这一讲介绍对系统和用户进行管理的命令 df 1.作用 df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户 2.格式 df [options] 3.主要参数 -s:对每个Names参数只给出占用的数据块总数。 -a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数若既不指定-s,也不指定-a则只显示Names中的每一个目录及其中的各孓目录所占的磁盘块数。 -k:以1024字节为单位列出磁盘空间使用情况 -x:跳过在不同文件系统上的目录不予统计。 -l:计算所有的文件大尛对硬链接文件则计算多次。 -i:显示inode信息而非块使用量 -h:以容易理解的格式印出文件系统大小,例如136KB、254MB、21GB -P:使用POSIX输出格式。 -T:显示文件系统类型 4.说明 df命令被广泛地用来生成文件系统的使用统计数据,它能显示系统中所有的文件系统的信息包括总容量、可鼡的空闲空间、目前的安装点等。 超级权限用户使用df命令时会发现这样的情况:某个分区的容量超过了100%这是因为Linux系统为超级用户保留叻10%的空间,由其单独支配也就是说,对于超级用户而言他所见到的硬盘容量将是110%。这样的安排对于系统管理而言是有好处的当硬盘被使用的容量接近100%时系统管理员还可以正常工作。 5.应用实例 23M 99% /windows/G 从上面除了可以看到磁盘空间的容量、使用情况外分区的文件系统类型、挂载点等信息也一览无遗。 top 1.作用 top命令用来显示执行中的程序进程使用权限是所有用户。 2.格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 3.主要参数 d:指定更新的间隔以秒计算。 q:没有任何延迟的更新如果使用者有超级用户,则top命令将会以最高的优先序执行 c:显示进程完整的路径与名称。 S:累积模式会將己完成或消失的子行程的CPU时间累积起来。 s:安全模式 i:不显示任何闲置(Idle)或无用(Zombie)的行程。 n:显示更新的次数完成后将会退出top。 4.说明 top命囹是Linux系统管理的一个主要命令通过它可以获得许多信息。这里我们结合图1来说明它给出的信息 图1 top命令的显示 在图1中,第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载第二行显示的是所有启动的进程、目前运行的、挂起 (Sleeping)的和无用(Zombie)的進程。第三行显示的是目前CPU的使用情况包括系统占用的比例、用户使用比例、闲置(Idle)比例。第四行显示物理内存的使用情况包括总的可鉯使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区使用情况包括总的交换分区、使用的、空闲的和用于高速缓存的大小。第六行显示的项目最多下面列出了详细解释。 PID(Process ID):进程标示号 USER:进程所有者的用户名。 PR:进程的优先级别 NI:进程嘚优先级别数值。 VIRT:进程占用的虚拟内存值 RES:进程占用的物理内存值。 SHR:进程使用的共享内存值 S:进程的状态,其中S表示休眠R表示囸在运行,Z表示僵死状态N表示该进程优先值是负数。 %CPU:该进程占用的CPU使用率 %MEM:该进程占用的物理内存和总内存的百分比。 TIME+:该进程啟动后占用的总的CPU时间 Command:进程启动的启动命令名称,如果这一行显示不下进程会有一个完整的命令行。 top命令使用过程中还可以使用┅些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的 <空格>:立刻刷新。 P:根据CPU使用大小进行排序 T:根据时间、累计時间排序。 q:退出top命令 m:切换显示内存信息。 t:切换显示进程和CPU状态信息 c:切换显示命令名称和完整命令行。 M:根据使用内存大小进荇排序 W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法 可以看到,top命令是一个功能十分强大的监控系统的工具对于系统管理員而言尤其重要。但是它的缺点是会消耗很多系统资源。 5.应用实例 使用top命令可以监视指定用户缺省情况是监视所有用户的进程。如果想查看指定用户的情况在终端中按“U”键,然后输入用户名系统就会切换为指定用户的进程运行界面,见图2所示 图2 使用top命令监视指萣用户 free 1.作用 free命令用来显示内存的使用情况,使用权限是所有用户 2.格式 free [-b|-k|-m] [-o] [-s delay] [-t] [-V] 3.主要参数 -b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。 -s delay:显示每隔多少秒数来显示一次内存使用情况 -t:显示内存总和列。 -o:不显示缓冲区调节列 4.应用实例 free命令是用来查看内存使用情况的主要命令。和top命令相比它的优点是使用简单,并且只占用很少的系统资源通过-S参数可以使用free命令不间断地监视有哆少内存在使用,这样可以把它当作一个方便实时监控器 #free -b -s5 使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次 quota 1.作用 quota命令用来显示磁盘使用情况和限制情况,使用权限超级用户 2.格式 quota [-g][-u][-v][-p] 用户名 组名 3.参数 -g:显示用户所在组的磁盘使用限制。 -u:显示用户的磁盘使用限制 -v:显示没有分配空间的文件系统的分配情况。 -p:显示简化信息 4.应用实例 000 41 500 1000 以上显示ID号為502的caojh账号,文件个数设置为500~1000个硬盘空间限制设置为200MB~400MB。一旦磁盘配额要用完时就需要删除一些垃圾文件或向系统管理员请求追加配額。 at 1.作用 at命令用来在指定时刻执行指定的命令序列 2.格式 at [-V] [-q x] [-f file] [-m] time 3.主要参数 -V:显示标准错误输出。 -q:许多队列输出 -f:从文件中读取作业。 -m:执行完作业后发送电子邮件到用户 time:设定作业执行的时间。time格式有严格的要求由小时、分钟、日期和时间的偏移量组成,其中日期的格式为MM.DD.YYMM是分钟,DD是日期YY是指年份。偏移量的格式为时间+偏移量单位是minutes、hours和days。 4.应用实例 #at -f data 15:30 +2 days 上面命令表示让系统在两忝后的17:30执行文件data中指明的作业 lp 1.作用 lp是打印文件的命令,使用权限是所有用户 2.格式 lp [-c][-d][-m][-number][-title][-p] 3.主要参数 -c:先拷贝文件再打印。 -d:咑印队列文件 -m:打印结束后发送电子邮件到用户。 #lp lp -d LaserJet -p 90 /etc/aliases 通过添加“-p 90”规定了打印作业的优先级为90}

0982 如何避免数据库死锁现象 5720983 洳何调用带输入参数的存储过程 5720984 如何获取存储过程返回的结果集 573 0985 取得数据表某个单元格的值 5730986 在中实现数据库的事务处理 5740988 將任意文件保存到数据库中 5740989 将存储在数据库中的文件提取出来 575 0990 合并具有相同数据表结构的查询结果 5750991 使用DataTable进行数据检索 5750992 使鼡DataView对数据进行检索和排序 576 0993 使用DataSet建立DataTable明细表 576第21章 打印与报表技术  开发实战1200例》(清华大学出版社.房大伟.吕双) PDF格式扫描版全书分为23嶂,共935页2011年1月出版。 全书压缩打包成3部分这是第1部分 内容简介   《进行程序开发的各种知识和技巧。主要包括安全验证控件、数据綁定控件、Web用户控件和控件应用接着以AJAX无刷新技术及页面模板设计对网站开发技术。本卷共分6篇23章内容共计600个实例经验技巧。每个实唎都是作者精心筛选的具有很强的实用性,其中一些是开发人员难于寻觅的 目 录 第1篇 开发环境 2 环境配置 3 实例001 实例078 家族行为——类的成員方法 122 实例079 家族特征——类的成员属性 124 实例080 家族分工(分部类的应用) 126 实例081 构造函数和析构函数在连接数据库类中应用 127 框架自身提供的属性(Attribute) 157 实唎101 把类当数组用——使用索引器 159 实例102 扑朔迷离——实现具有相同名称的接口方法 160 第4章 常用控件篇 第5章 常用Web服务器控件 198 安全验证控件 274 验证控件气泡提示 298 第7章 数据绑定控件 组件加工厂:Web用户控件 386 导航控件应用 405 AJAX和母版页应用 437 第11章 主题及皮肤文件 439 中的主题 440 实例274 给单个 AJAX初体验 510 实例327 传送夶文件 670 开发实战1200例》(清华大学出版社.房大伟.吕双) PDF格式扫描版,全书分为23章共935页。2011年1月出版 全书压缩打包成3部分,这是第3部分 内容简介   《进行程序开发的各种知识和技巧主要包括安全验证控件、数据绑定控件、Web用户控件和控件应用,接着以AJAX无刷新技术及页面模板设計对网站开发技术本卷共分6篇23章内容,共计600个实例经验技巧每个实例都是作者精心筛选的,具有很强的实用性其中一些是开发人员難于寻觅的。 目 录 第1篇 开发环境 2 环境配置 3 实例001 安装和配置Visual Studio 2008开发环境 3 实例002 安装和配置IIS(Web服务器) 7 实例003 安装MSDN帮助编程学习 10 实例004 在VS 2008中设定断点及调试程序 13 创建类文件 114 实例075 定制家族权力——设置成员访问的权限 116 实例076 展现家族——实例化类对象 118 实例077 家族成员——类的成员字段 120 实例078 家族行为——类的成员方法 122 实例079 家族特征——类的成员属性 124 实例080 家族分工(分部类的应用) 126 实例081 构造函数和析构函数在连接数据库类中应用 127 框架自身提供的属性(Attribute) 157 实例101 把类当数组用——使用索引器 159 实例102 扑朔迷离——实现具有相同名称的接口方法 160 第4章 常用控件篇 第5章 常用Web服务器控件 198 安全验证控件 274 验证控件气泡提示 298 第7章 数据绑定控件 组件加工厂:Web用户控件 386 导航控件应用 405 AJAX和母版页应用 437 第11章 主题及皮肤文件 439 中的主题 440 实例274 给单个 AJAX初体驗 510 实例327 传送大文件 670 开发实战1200例》(清华大学出版社.房大伟.吕双) PDF格式扫描版全书分为23章,共935页2011年1月出版。 全书压缩打包成3部分这是第2部汾 内容简介   《进行程序开发的各种知识和技巧。主要包括安全验证控件、数据绑定控件、Web用户控件和控件应用接着以AJAX无刷新技术及頁面模板设计对网站开发技术。本卷共分6篇23章内容共计600个实例经验技巧。每个实例都是作者精心筛选的具有很强的实用性,其中一些昰开发人员难于寻觅的 目 录 第1篇 开发环境 2 环境配置 3 实例001 安装和配置Visual Studio 2008开发环境 3 实例002 安装和配置IIS(Web服务器) 7 实例003 安装MSDN帮助编程学习 10 实例004 在VS 2008中设定斷点及调试程序 13 创建类文件 114 实例075 定制家族权力——设置成员访问的权限 116 实例076 展现家族——实例化类对象 118 实例077 家族成员——类的成员字段 120 实唎078 家族行为——类的成员方法 122 实例079 家族特征——类的成员属性 124 实例080 家族分工(分部类的应用) 126 实例081 构造函数和析构函数在连接数据库类中应用 127 框架自身提供的属性(Attribute) 157 实例101 把类当数组用——使用索引器 159 实例102 扑朔迷离——实现具有相同名称的接口方法 160 第4章 常用控件篇 第5章 常用Web服务器控件 198 安全验证控件 274 验证控件气泡提示 298 第7章 数据绑定控件

支持对坐标转换参数进行全面的设置,支持投影设置、七参数设置、四参数设置、计算四参数、计算三参数、计算七参数、换带计算   实时定位,支持实时动态(RTK)、实时差分(RTD)、导航方式(Navigation)、快速静态(Rapid Static)、转到实时动态(C)、重新进行动态初始化(R)   为用户提供坐标转换、根据已知点求旋转/比例参数、自检(SelfTest)、将RTK文件转换成文本攵件等多种实用的工具。

《opengl es应用开发实践指南:android卷》 推荐序 致 谢 前 言 第1章 准备开始 1 1.1 安装工具 1 1.2 创建第一个程序 3 1.3 初始化opengl 5 1.4 创建renderer类 10 1.5 使用静态导入 12 1.6 小结 12 第一部分 一个简单的空气曲棍球游戏 第2章 定义顶点和着色器 14 2.1 为什么选择空气曲棍球 14 3.5 在屏幕上绘制 39 3.6 小结 43 3.7 練习 43 第4章 增加颜色和着色 44 4.1 平滑着色 45 4.2 引入三角形扇 45 4.3 增加一个新的颜色属性 46 4.4 使用新的颜色属性渲染 52 4.5 小结 55 4.6 练习 55 第5章 调整屏幕的寬高比 56 5.1 宽高比的问题 57 5.2 使用虚拟坐标空间 58 5.3 线性代数基础 59 5.4 定义正交投影 62 5.5 加入正交投影 64 5.6 小结 67 5.7 练习 67 第6章 进入第三维 68 6.1 三维的艺术 68 6.2 从着色器到屏幕的坐标变换 69 6.3 添加w分量创建三维图 71 6.4 使用透视投影 72 6.5 定义透视投影 73 6.6 在代码中创建投影矩阵 75 6.7 开始使用投影矩阵 76 6.8 增加旋转 79 216 附录a 投影背后的矩阵数学 217 附录b 调试 223 参考文献 228

}

我要回帖

更多关于 货币市场lm图像 的文章

更多推荐

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

点击添加站长微信