用windowsvista Vista玩游戏出现三原色怎么办

WindowsXP和Windows7和VISTA哪个系统玩游戏好 | WindowsXP,Windows7,VISTA,哪个,系统_操作系统_滕州生活网
|||||||||||||||||||
WindowsXP和Windows7和VISTA哪个系统玩游戏好
来源:网络整理 发布时间:
摘要:目前来说玩游戏是windows xp最好,游戏基本上在XP系统上研发的,XP系统也是最成熟的系统,稳定性和兼容性非常好 VISTA是个失败的系统,微软自己也承认了,主要是兼容性不行 windows7新出来的系统,安全性毋庸置疑,但是毕竟是新研发的系统,稳定性兼容性还不
WindowsXP和Windows7和VISTA哪个系统玩游戏好
目前来说玩游戏是windows& xp最好,游戏基本上在XP上研发的,XP也是最成熟的系统,稳定性和兼容性非常好
是个失败的系统,微软自己也承认了,主要是兼容性不行
windows7新出来的系统,安全性毋庸置疑,但是毕竟是新研发的系统,稳定性兼容性还不行,尤其是正式版还未放出,也许一年两年后windows7将全面超越XP,但是至少在最近一段时间windowsXP仍是最优秀的系统
肯定是XP好,因为XP的硬件资源用得比vista少得多了,肯定游戏性要比vista好,除了你的硬件极度的好,可以乎略了vista的硬件要求呵呵
独立显存容量是显卡自身显存的大小,显存容量是指显存的实际大小,因为系统可以划分一部分内存当显存用呵呵明白?
像你这种128的显存可能玩不了奇迹世界.魔兽世界
笔记本电脑能加显存么从128升级到256呢,可能是改了内存划分作显存的这部分内存的大小,
我的就可以把显存调成128.256.64呵呵
& 滕州生活网
相关阅读:
声明:凡注明为"网络整理"或者其他媒体来源的信息,均为转载自其他各大门户媒体,虽经严格筛选难免疏漏,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。您若对该稿件内容有任何疑问或者侵犯到您的权益,请发邮件至邮,我们将在24小时内予以删除。
WindowsXP和Windows7和VISTA哪个系统玩游戏好
WindowsXP和Windows7和VISTA哪个系统玩游戏好> 效果有提升?三/四原色LED色彩大对决
效果有提升?三/四原色LED色彩大对决 作者: 责任编辑:王越 【原创】
三原色/四原色效果终极对决
&&& 目前市面上正在销售的一般采用的均是三原色(RGB)面板设计,能够让的色彩更加鲜艳丰富,但是前不久夏普推出了一款采用了四原色(RGBY)面板设计设计的液晶电视,它在色彩方面能够提升多少?它的色域表现究竟怎么样?
&&& 【】对于一般的液晶电视而言,其面板方面大多采用的是三原色技术,也就是我们平时所说的红色、绿色、蓝色三种色彩。当然不仅仅是液晶电视产品,目前基本上所有的液晶屏幕产品均采用的是这种技术。但是就在前不久,夏普推出了全新的四色技术,也就是在三原色的基础上增加了黄色的次像素点,但是这一举动对于产品显示方面的表现能否带来提升?
&&& 相信很多人看到上面的介绍内容之后,一定会产生一头的雾水,那么我们就先对三原色和四原色的概念方面进行简单的介绍。对于一般的电视产品或者产品而言,目前主流的分辨率为,也就是说产品拥有这么多的像素点分布,而三原色产品的每个像素点又分为红色、绿色、蓝色三个次像素点,因此对于三原色的电视或者产品而言,它们的次像素点共有×3(RGB)=6220800个。同理,对于一个支持的四原色产品而言,它们的次像素点的数量为×4(RGBY)=8294400个,数量方面的提升十分明显。
三原色次像素点样貌揭秘
四原色次像素点样貌揭秘
&&& 通过上面的图片,我们可以看到三原色次像素点和四原色次像素点的实际样貌。经过特殊放大镜放大之后,我们看到四原色在三原色的基础之上,增加了黄色的次像素点设计,因此排布方面更加紧密。但是增加了黄色的次像素点之后,产品在色彩方面有什么样的提升哪?黄色内容的显示会不会更加丰富,还原更加准确?带着这些问题,我们通过专业仪器的测试,来为大家揭秘四原色的表现究竟如何。
四原色比三原色色域有提升?
● 三原色/四原色色域测试
&&& 为了保证测试结果的准确性和客观性,我们采用专业仪器来进行测试,而主观的实拍测试不再使用。在对比开始之前,我们先来进行色域测试的专业仪器和测试方法的介绍。在色域测试中,我们使用到的仪器是Topcon BM-7A亮度色度仪。
Topcon BM-7A亮度色度仪
● 测试方法说明
&&& Topcon BM-7A亮度色度仪是对液晶做基准测试的仪器。在测试之前,我们将每一台参加测试的产品恢复到出厂模式,并且关闭动态对比度功能和所有色彩增强技术。同时,在测试之前我们让两款测试产品正常连续工作一个小时。为了保证数据的准确性,我们测试的环境为不透光的暗室,并且手动关闭每一款产品的指示灯。此外,考虑到不同的可能会对每款测试产品最终的结果造成影响,因此我们都使用完全相同的主机来作为测试平台。
● NTSC色域值
&&& 相信大家对这个数值已经非常了解了,这里我们也不再做过多的介绍。其测试方法是使用BM-7A分别测试红色、绿色和蓝色时的色度坐标和亮度值,并根据色度坐标计算出三个三原色点所确定三角形的面积,其与NTSC 100%三角形面积的比值即为NTSC色域值。色域值越高说明这款能够显示出更加丰富的色彩。
● 三原色/四原色产品NTSC色域测试结果
测试数据结果
● 测试数据分析
&&& 在NTSC色域测试中我们可以看到,对于四原色的而言,的确在色域方面有所提升。一般的三原色产品色域值大约在70%以上,通过我们的测试,这款四原色产品的色域值达到了近85%,因此效果提升比较明显,也就是这款四原色产品能够显示更加鲜艳的色彩。但是相比广色域机型而言,四原色在色域方面仍然有一定的差距,因此并没有达到广色域产品的范围内。因此我们猜测,如果继续增加原色数量,产品的色域值会继续提升。
三/四原色色彩表现谁更好?
&● 三原色/四原色色彩特性对比测试
&&& 紧接着,我们对三原色/四原色产品进行色彩特性方面的测试。由于使用拍照这种原始的测试方式非常不专业、不准确,因此我们放弃这种方法,而使用爱色丽Eyeone Pro校色仪来测试其色彩的表现特性。在测试之前我们让测试产品正常连续使用一个小时以上,并且关闭动态对比度功能以及一切色彩增强的技术。Eyeone校色仪的测试环境色温和照度必须符合ISO3664标准规定,并非单纯全黑的暗示就符合要求。在本次测试中,我们的测试环境光源色温为5500K,照度为50Lux,完全符合标准。
爱色丽Eyeone Pro校色仪
&&&&接下来,我们要做的是使用Eyeone Pro校色仪来制作出测试机型的原始icc文件,并将其进行分析得出四款产品的色彩特性表现。下面图片中白色的闭合曲线代表sRGB色彩空间,红色的闭合曲线代表每款测试产品自身的色彩空间。
三原色产品与sRGB色彩范围的对比(Lab色彩空间)
四原色产品与sRGB色彩范围的对比(Lab色彩空间)
● 测试结果分析
&&& 在三原色/四原色产品的色彩表现方面测试中,我们可以看到,三原色的产品在色彩表现方面相比sRGB色彩空间有一定的差距,而四原色的产品则有比较明显的改善。三原色的对于紫色、粉色等色彩的表现更加丰富,但是对于其余色彩的表现均略显不足。而四原色电视对于黄色、绿色、蓝色等色彩的表现更加丰富,但是对于红色、粉色、紫色等色彩的表现略显不足。从上面我们可以看到, 增加了黄色的原色之后,产品对于黄色色彩的提升效果十分的显著。
● 覆盖sRGB色彩空间的意义
&&& sRGB色彩空间是惠普与微软一起开发的用于、以及因特网的一种标准RGB色彩空间,它定义了红色、绿色与蓝色三原色的颜色,即在其它两种颜色值都为零时该颜色的最大值。因此若显示器能够完全包含sRGB色域,说明它能够完全胜任普通的摄影以及打印工作,色彩显示会更加准确,并且不会出现无法显示的颜色。而如果显示器无法完全涵盖sRGB色彩空间,说明这款显示器会无法正常显示部分颜色。若参考更多详细信息,请详见《》一文。 三/四原色伽玛曲线优化谁强?● 三原色/四原色伽玛曲线的优化对比
&&&&接下来通过分析四款的icc文件,我们同样能够得到它们分别的伽玛曲线结果,紧接着我们一起来看看它们的实际表现如何。
三原色产品的伽玛曲线优化
四原色产品的伽玛曲线优化
● 测试结果分析
&&&&对伽玛曲线的优化表现时,红、蓝和绿三种颜色的曲线完全重合,并且呈一直线是最为理想的,当然现实生活中很少机型能够做到这一点。通过测试,我们可以看到,这两款产品的伽马曲线基本都不能够做到重合。
&&& 相比产品而言,两款电视产品的伽玛曲线优化均比较糟糕,但是相比之下,我们认为三原色产品的优化有着略微的优势,毕竟三原色产品只需要进行三条颜色的曲线进行优化,而四原色产品还需要进行黄色色彩曲线的优化。
● 总结:四原色到底有哪些改善?
&&& 到此为止,我们的测试部分就告一段落了。通过我们使用两种专业仪器所测试的数据显示,四原色产品相比三原色液晶电视而言,的确在色彩效果方面有所提升,不仅将色域提升到了接近广色域产品的范围内,当然还没有达到真正广色域的范畴内,但是这样会给用户带来更加丰富色彩的视觉感受,更加讨好用户的眼睛。当然,这里我们也需要进行说明,我们所测试的色彩标准时三原色(RGB)的标准,因此并没有加入黄色色彩的测试,因此目前国际上并没有任何四原色的测试标准被提出,但是仅仅是三个颜色的色域方面已经有所提升,这说明增加了新的色彩次像素点之后,效果改善还是比较明显的。
夏普四原色电视对于部分色彩的变现更加出色
&&& 在色彩空间部分,我们看到增加了黄色次像素点之后,四原色液晶电视对于黄色以及周边临近色彩的表现方面更加的丰富,而三原色产品则略显不足,因此我们猜测,如果增加更多的色彩次像素点之后,整个的色彩空间将会完全覆盖sRGB色彩空间,并且可能会扩大很多,也就是每一个色彩的显示将会更加丰富,更加讨好用户的视觉感受。
● 我们需要四原色吗?
夏普推出的四原色原理介绍
早期日立推出的四原色原理介绍
&&& 目前建立四原色像素显示概念的厂商十分稀少,我们所知早期日立推出了相关的概念,它们将另一种绿色的色彩加入进来,在色彩空间图中我们可以看到绿色部分的画面表现变得十分出色。而夏普在今年推出了增加黄色次像素点的四原色产品,并且已经来到市面上。增加之后,我们可以看到其产品在黄色画面的表现方面更加突出。对此,我们猜测,在增加了某种色彩的原色之后,其画面的相关色彩表现就会越加丰富,当然在条件和技术允许的情况下,我们如果制造出数十种原色的产品之后,其色彩表现已经会过分的丰富,对于用户来说是好是坏我们也说不准,还是要看大家的需求和厂商的态度来进行判断。
&&& 从上面日立的做法来看,表示四原色并不是一个标准,除了加入黄色之外,依旧可以加入其它的颜色来扩充色彩表示的数量。
&&& 而在产品方面,目前只有夏普推出了两款采用四原色的液晶电视产品在市面上销售,并且产品的售价比较昂贵,因此即便是对四原色有需求的消费者,可能也无法亲身购买体验。并且国际上目前只有少数厂商表示会跟进,但是暂时也没有其他厂商推出相关概念和产品,当然也没有相关的色彩标准,因此四原色或者未来更多原色产品的发展仍然有很长远的一段路要走,而消费者的接受度方面也是一大考验。
● 四原色技术适合吗?
&&& 四原色技术还仅仅使用在电视领域,但是在显示器方面并没有涉及到,这是为什么呢?原因有两点:第一,夏普并没有自己真正桌面显示器级别的产品线(量产产品),而显示器厂商暂时还没有掌握这一技术;第二,Windows考虑到硬件的兼容性,在色彩管理方面进行了很多妥协,这样其理论上支持的色彩数量可能会达不到四原色最高支持的标准,从而造成一定程度的“浪费”,如Windows XP并不支持10bit色彩,但在Windows Vista和7系统中进行了改进,但与等相比还是无法比拟。此外过多的色彩数量对IC电路对色彩还原的准确性提出了更高的要求,而电视又不需要像显示器那样对色彩精度的要求那么高,因此这一技术推行在显示器上,还具备一定的技术难度。在四原色电视普及之前,显示器更加不会涉及到这一领域,即使开始普及的时候,相信未来的OLED技术也会完全成熟的。
&相关阅读:
·钱不能这样花 这四种显示器你不能买!
&&·双十二疯狂网购 节后低价大屏液晶推荐
&&·2016放假安排出炉 用啥度过133天假期
&&·操作简单节省空间 TOPSKYS ATC10支架促
&&·创新空间应用
TOPSKYS TS734E四屏支架
相关搜索:&
给文章打分 5分为满分(共0人参与)
频道热词:&&&&&&
液晶显示器评测热点
排行 文章标题
TOP10周热门液晶显示器排行榜
商家报价:
118用户点评
商家报价:
143用户点评
商家报价:
79用户点评
商家报价:
143用户点评
商家报价:
58用户点评
商家报价:
69用户点评
商家报价:
商家报价:
14用户点评
商家报价:
124用户点评
商家报价:
113用户点评小站会根据您的关注,为您发现更多,
看到喜欢的小站就马上关注吧!
下一站,你会遇见谁的梦想?
本站旨在依靠学生团队打造一个较为专业的软件视频培训、交流、合作平台,结识更多的软件爱好者,揭开软件神秘面纱,一起为未来加油!&&PS:如果你觉得本站不错,请猛击右上角星星“推荐”哦!谢谢!!&&&==============================================================================&&&&&&/*&&微信“求职是落点”,人人公众平台“中哥教面试”欢迎关注!*/&&==============================================================================&
JAVA程序员必须了解的
1、语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。
2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟&悉:appletviewer、&HtmlConverter、jar、&java、&javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java实际上还不是很了解。
3、工具&:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。
4、API:Java的核心API是非常庞大的,但是有一些内容笔者认为是Java程序员必须熟悉的,否则不可能熟练的运用Java,包括:
◆java.lang包下的80%以上的类的功能的灵活运用。
◆java.util包下的80%以上的类的灵活运用,特别是集合类体系、正则表达式、zip、以及时间、随机数、属性、资源和Timer.
◆java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
◆java.math包下的100%的内容。
◆java.net包下的60%以上的内容,对各个类的功能比较熟悉。
◆java.text包下的60%以上的内容,特别是各种格式化类。
◆熟练运用JDBC。
◆java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java.
◆AWT的基本内容,包括各种组件事件、监听器、布局管理器、常用组件、打印。
◆Swing的基本内容,和AWT的要求类似。
◆XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
5、测试&:必须熟悉使用junit编写测试用例完成代码的自动测试。
6、管理:Java程序员必须熟悉使用ant完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。
7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
8、思想:必须掌握OOP的主要要求,这样使用Java开发的系统才能是真正的Java系统。
9、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。
10、博学:Java程序员除了精通Java意外,还要掌握J2EE、Oracle、WebLogic、Jboss、Spring、Struts、Hibernate&等流行技术,掌握软件架构设计思想、搜索&引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用技术。
&&来自##72##吴
谈谈对程序员的培养
自己吃自己狗食)。人反而显得不那么重要了:一个完、整的流程被切分成若干环节,程序员只能负责那小小的一环,更严重的是,他们显示出消极和片面的情绪,他们称自己码农,自嘲并且觉得在总做一些低级和毫无技术含量的事情。码农这似乎是一件很悲哀的事情,在美国,程序员是一个相当值得尊敬的行业,去年硅谷的技术员工年薪平均因为这些,比如白盒测试,本都是程序员自己该完成的事情。程序员自己开发的程序,当然要自己验证功能,很多软件公司在一些项目流程里就是没有专职测试介入测试执行,原因很简单,难道自己拉了稀,让别人给你擦屁股?并填写。如果一名测试只需要做这些事情,那么确实太没有技术含量了、太没有入门门槛了,太单调乏味了。)都把算法和编码视为基础要求,敢问国内一些公司的测试人员,有几个敢这么说?给他一个具体问题吧,要他写写实际代码吧,你会要了他的命。环境不如欧美,大量劳动力的富余让人力成本变得无比廉价,能让青年付出卖肾代价以购买大部分配件都的,廉价劳动力的帽子?中国的程序员,你们的创造力呢?你们精彩的点子呢?,不应该整天陶醉在跟踪项目进度和获取程序员工作反馈上。的工作,绝不仅仅是说行或不行。说:(做互联网的弄潮儿、用技术改变世界这样的话来?技术公司的并不多,但是,优秀的技术能让程序员脱颖而出,也作为一种谋生的手段,为其觅得不错的回报。岁,甚至岁以上还在做实际设计和编码的人(不是那些脱离了具体实现向客户吹嘘的角色)。毕竟,生活的解总是有很多种。
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&&来自##16##奇奇
Linux之父炮轰C++:糟糕程序员的垃圾语言
【按】之父为内核开发而专门打造的版本控制软件已经引起了业界的广泛关注。查看源代码之后,发现使用的是纯而非,表示不可理解。引起了之父炮轰:糟糕程序员的垃圾语言。
Linux之父为了内核开发而专门打造的版本控制软件已经引起了业界的广泛关注。昨天,有一位老兄在查看了源代码之后,发现使用的是纯而非,表示不可理解,他直言:&别拿可移植性说事儿,这是屁话(,)。&(此外,他还批评蛮力地直接操作文本,既啰嗦又易错,而且很难跟上高层代码逻辑。)&
这个引起了的强烈反应,他用&&(你才满嘴屁话呢)作为自己反驳的开场白。接着,他先转向了对的罕见的火药味十足的炮轰:
&是一种糟糕的()语言。而且因为有大量不够标准的程序员在使用而使情况更糟,以至于极容易产生彻头彻尾的垃圾()。老实说,选择就是为了把程序员踢出去。&&我有这样的结论,任何喜欢用而不是开发项目的程序员可能都是我希望踢出去的人,免得他们来搞乱我参与的项目。会导致非常非常糟糕的设计选择。你们这些程序员总是一上来就用语言的那些&漂亮的&库特性比如、和其他彻头彻尾的垃圾,这可能对你们的程序有所&帮助&,但是却会导致:&&当库无法工作时无穷无尽的折磨(别跟我说什么尤其是很稳定而且可移植性很好,那全是屁话,而且一点都不可笑)&&低效的抽象编程模型,可能在两年之后你会注意到有些抽象效果不怎么样,但是所有代码已经依赖于围绕它设计的&漂亮&对象模型了,如果不重写应用程序,就无法改正。
也就是说,使用优秀的、高效的、系统级的和可移植的的唯一方式,最终还是限于使用本身具有的所有特性。项目限制只用,意味着参与的人不会捣乱,也意味着会得到许多真正懂得底层问题,而不会折腾那些白痴&对象模型&垃圾的程序员。所以,我很抱歉,但是对于这样效率是主要目标的软件,的所谓优点只是巨大的错误。而我们将看不到这一点的人排除在外却成了一个巨大的附加优势。如果你想要用写的版本控制系统,去玩吧。他们确实使用了&真格的数据库&,使用了&漂亮的面向对象库&、使用了&漂亮的抽象&。可是说老实话,所有这些对某些计算机专业人士而言富于吸引力的设计决定,其最终结果确是一堆可怕、难以维护的垃圾。&
Torvalds和争论继续中。对的回击,反唇相讥:
&随着只用编程的恐龙们逐渐灭绝,你很快就会发现只剩下自己一个人在固执己见。用贡献者的数量是说明不了问题的。显然开发者也能够贡献代码。但是以为他们喜欢这种方式,那可就错了。没有的时候我用汇编编程。然后在诞生之前,我转向了。现在我使用和,而且不再走回头路。差劲的程序员用任何语言都写不出好程序。但是为了将差劲的贡献者拒之门外这样一个没谱的理由而惩罚优秀的开发者,这简直是胡闹。&
只过了几分钟,就回贴了:
&和你不同的是,我实实在在地给出了不喜欢的原因,而且指出了它可能导致的各种问题的一些例子。而你呢,没有给出一条像样的使用的理由。事实上,比其他软件配置管理软件都要好,而好的品味()和正是原因之一。&&&&&&&&&对上面的最后一句话,后来又做了如下补充:&&&&&&&&&说得更具体一些:&&&&&&&&&&简单和清晰的核心数据结构,&非常精益()且颇具雄心的暧昧管理着它们,将&简单胜于花哨&这一方法发挥到极致。&&&&&&&&&&有意识地不抽象数据结构和算法,因为它们恰恰是核心的全部要素()。
&&&&&&&&如果你想用更花哨的语言,绝对是最糟糕的选择。如果想要真正的高级特性,那就选择有垃圾回收或者好的系统集成的,而不是既缺乏的简约()又缺乏的直接而且没有重要概念的高层&绑定()的东西。
&&&&&&&&一言以蔽之,正处在困境当中,它既无法帮助原型化或者简单的编程足够简化从而真正可用,不是那样积极地鼓励你使用简单和直接的语言构造的精益系统编程语言。&
&&&&&&(另一位同学插了一句:这还没有提到很难找到两个编译器支持同样的特性。)
&&&&&&&&&这与什么恐龙毫无关系。好的品味永远不会过时。将与汇编语言相提并论,恰恰说明你对自己所讨论的问题缺乏起码的概念()。&
【继续更新】争论还在继续。半个小时之后,半小时后,回帖:
&我说过,这是一种信仰问题。因此,任何讲道理和争论都会无穷无尽,而且也毫无意义,就像任何其他宗教问题一样。我来讲讲开发应该使用的理由(而不是一般意义上对任何项目都更好的理由,这种说法同样也是毫无意义的):好的类能够大大提高代码的可读性(而且代码也会显著减少)好的类&&理由同上管理内存和文件套接字锁句柄的智能指针和智能句柄就目前而言,通过这种繁琐的宏管理字符串和内存,很难看出高层逻辑。&接下来他的语气变得缓和,甚至最后还用了一个笑脸:&以我之见,具有非常漂亮的高层设计(对象数据库,使用散列,数据和元数据的简单而且容易访问的存储。)向你赞一个!但是具体实现方式&&和脚本的混合、自底向上发展出来的命令行界面就很一般了。我可没有将与汇编语言相提并论。我只是要指出我曾经用许多不同的语言编程,目睹了糟糕的程序员用任何语言都会写出差劲的代码。因此这实际上是与语言无关的。&
Torvalds则依然怒气未消,他反驳对用宏管理字符串和内存的批评:
&完全是屁话。字符串内存管理根本无关紧要。还是去看看源代码吧(我敢打赌你没有看过)。这不是重要的部分,而且也不复杂。唯一真正重要的部分是设计。有些部分之所以是用&原型化语言&编写,恰恰是因为它们不是核心部分,而且会被慢慢地替换掉。可没有办法替换脚本或者代码。而且也没办法让真正核心的部分变得更好。
显然你这一辈子已经经历了&汇编的转变过程,你将我这样一直坚持用的比作&恐龙&,似乎这是一种向更好更现代的语言不可避免的演进。这是毫无根据的,因为在很多方面都远远优于(更优于),包括可移植性,还有接口和低层支持。你当然可以用任何语言编写糟糕的代码。但是,有些语言,尤其是带有一些心理()包袱的语言本身就非常糟糕。你这样的新手跑来指出一些绝对无关紧要的补丁特性(此处应该指对的增强特性),用它们作为一种语言优越的论据(这些东西语言原作者都不喜欢),这一事实本身恰恰说明你满脑子都是糊涂概念,应该好好醒悟一下了。对于核心代码真正重要的,是诸如这样的事情:编写自己的对象分配代码,使内存占用尽可能小,从而能够高效地记录百万对象的标志。这实际上是为树形关系的多个对象编写本质上非常优化的分析程序,因为这里没有任何抽象。这绝对是在原始内存字节一级上的。这些事情能够用之外的语言编写吗?当然可以。但是那些认为字符串处理这样的高级特性很重要的人肯定是写不出来的。事实上,这正是擅长的事情。不仅指语言本身,还包括一种必需的心态()。最大的优点之一,就是它不会使你认为程序是什么高层的东西。正是后一种心态会使你明显偏向其他语言,但实际上从的角度看来,所谓&高层&恰恰是错误的。&
Dmitry回帖:
我不仅看过源代码,而且还做过很多调试工作。我发现的问题大多数都与处理上的路径(也就是字符串处理)有关。他表示不再纠缠于&与孰优孰劣&的讨论,而是介绍了一下自己的出发点:&我的目的是使用。当有些功能无法使用时,我想能够在尽可能最短时间和花费最小的力气进行改正并贡献改正的代码。对我来说,这只是我主要工作的一种消遣而已。而用编写这一事实,对这一目的毫无好处。建议使用是现有代码基础的唯一出路。所以,虽然可能从学术上来讲并非最佳选择,但是唯一切合实际的选择。&除了其他已经尝试过了的政体之外,民主是政体的最差形式。&&&温斯顿&丘吉尔现在,我认识到自己只是一个不太活跃的贡献者,但我希望自己的声音能够被人听到。而那些承担开发和维护主要重任的人也应该发出自己的声音。&
此后,没有再发言,大概是认为自己已经大获全胜。而另外一些贡献者继续对进行反驳,可以看出,的看法并不是他的私见。说:&我认为字符串处理是会找来大麻烦的地方之一。糟糕的程序员(原文为)会这样写代码:
a&=&b&+&"/share/"&+&c&+&serial_num;
其中你肯定无法弄清到底分配了多少内存,因为有类型强制转换、重载的操作符(感谢上帝,在中你可以重载逗号操作符!),而当这种东西出现在内循环中,结果将是性能上的大灾难,而且原因还不明显!&
另外还有同学讽刺,说的确有不少程序员贡献代码,但是反而需要核心的程序员花费更多时间去修改和删除。
【刘江按】以下是我的一点门外之见,做引玉的砖头之用。有一点是肯定正确的,语言之争更多的是一种类似宗教信仰上的,所以很难有结果,也没有太多实际意义。这种争论因为出自高手之间,所以还是会透露出很多重要的信息。比如:对于要求性能高的系统编程领域,其实未必胜过,而且事实上,也确实有很多此类项目是选择作为主要语言的。的生命力目前仍然毋庸置疑。目前确实处于一种被夹攻的态势,一方面在企业级系统开发(数据密集、业务规则复杂多变)中,已经基本被和等淘汰出局,另一方面在系统编程和嵌入式等更接近硬件的领域,又遭到的强烈狙击。技术并非。&&(大家补充)必须看到的是,语言作为一种古老的语言,其局限性也是很明显的,比如已经成为安全问题渊薮的缓冲区溢出。的标准库也存在各种各样的问题。对于更加贴近现实世界的众多项目,没有面向对象机制,显然会影响开发效率。(有关标准库源码层次的分析,图灵将出版著名专家的《标准库》一书。)而且,即使是程序员所引以为豪的性能优势,现在也岌岌可危了(参见之父的文章中相关的比较)。
C++目前的困境,很大程度上是由于此前的图书和文献曾经一度倾向于炫技,陶醉于对语言各种细节的深入探索,有华丽化、复杂化的趋势,语言设计者们苦心设计出来各种丰富的特性和多范型的编程风格,却成了学习者和使用者的负担,加上微软等开发工具又用之类的糖衣,结果造就了大批基础不牢、半桶水叮当响的程序员,而且因为自以为掌握了世上最难的语言,往往有目空一切的傲气。这样开发出来的代码质量,可想而知。对的各种误解和不良使用习惯,可以说是漫天飞舞。而这种局面继而造成逐渐成为一般人心目中望而生畏、学不好教不好更用不好的&专家语言&,越来越无法吸引新入行的程序员。老人毛病多多,新人青黄不接,社区的确面临危机。
这几年,界的核心人物,包括、、、和、等,对此局面有过较多的反思,痛定思痛之后,写作了、《》第四版、《编程规范》、《》和《必知必会》等返璞归真的文章和图书。其核心变化,是对标准库(语气中对和也很不屑,不知是何原因,请方家告我)、规范化、领域概念和设计的强调,弱化底层语言细节,或者说强调更规范地选择使用语言特性。
比较同一作者的《》第四版和第三版、《编程规范》和《》以及系列,可以清楚地看到这一点。
比如第三版一上来就突出的多种编程风格(过程式编程、基于对象编程、面向对象编程、泛型编程),并且以此作为布局谋篇的主线,很容易使初学者晕倒。到了第四版,则更多地把力气花在打好扎实的基础,介绍那些实际开发中通用的、行之有效的编程技术,在特定场合,提供的丰富&武器库&中应该选择哪些设施、应该注意哪些问题、业界已经总结了哪些优秀的编程实践和易犯的错误等,成了书中的主干。这使此书成为目前最适合的学习和使用的百科全书。
与此配套的,当然应属《编程规范》,用条款形式说明了各种语言设施的正确用法和适用场合。如果你在学习的时候,就能结合其中的相关条款,了解所学特性的正确用法,当然是最理想的。而《必知必会》则选取了对程序员非常重要的知识点,进行一番贴近实际的讨论。
好像是和呼应似的,有相当权威性的的编程语言指数最近一期的结果显示,下降了两名,落后于和,成了老五。而则稳居第二。
【夜更新】
今天偶然翻到《编程艺术》一书,其中第章中&&(紧凑性)部分里,写道:&在通用编程语言中,和是半紧凑的;、、和则不是(尤其是真正的编程要求你知道半打和这样的其他工具)。是反紧凑的&&语言的设计者承认,他并不指望任何一个程序员能够完全理解这一语言。&
&&来自##27##小小仙
谷歌正式发布“现实虚拟化”游戏Ingress预告片
Google十一月二十九日发布了一款免费移动游戏Ingress。根据Google介绍,Ingress是一款基于地图的移动在线增强实境游戏,全球所有玩家都可以参与其中。玩家可以选择两种对立能量中的一种进行战斗,此外该游戏还允许玩家将地图上的能量热点进行区域连接,并创建保护区。
  Google内部将这款游戏称为“Nemesis”,并已秘密测试了6个月。Ingress目前仅有Android版本,iOS版推出时间未定。
小编表示..Ingress以安装,网站留邮箱求码尚未回复...G+上面找大神卖萌也还没回复...orz
菲茨定律与互联网设计 Fitts’Law
这篇关于菲茨定律及其具体应用的文章最早在&上由&Ashley&Towers发表感觉写的挺生动,&所以特别编译成中文希望更多的人看到。
菲茨定律与互联网设计&(Fitts&&Law)
  菲茨定律是用来预测从任意一点到目标中心位置所需时间的数学模型。&它由保罗.菲茨在1954年首先提出。这个模型考虑了用户定位点的初始位置与目标的相对距离以及目标的大小。菲茨定律虽然在很多领域都得到了应用但其在人机交互(HCI)和设计领域的影响却最为广泛和深远。(用于估算用户移动光标点击链接或控件按钮所需的时间)目的地明确的移动可以细分为两个部分:首先一个大幅度的移动将光标移向与目标大致相同的方向和区域;紧接着是一系列精细的小幅度微调来将光标精确定位在目标中心。你现在就可以做一个小实验来观察这一过程&&举起你的手臂并试着用手指指向远处的一个小物体,例如远处墙上的一个电灯开关。开始你的手臂可能会往开关的位置大幅的移动而且很有可能稍微过头了一点。接下来你会做一些微小的调整动作直至你的手指正好对准目标开关的中心。现在你可以试着指向一个更大的物体&&&比如说电视或一面墙壁。这一次你也会以大幅度的手臂动作来使手指指向目标方向,&但因为目标体积很大所以一般情况下你只需要做很少(甚至不需要任何)的微调。
  让我们来看下面这个例子。图中的红色盒子代表目标;虚线代表从起点至目标的移动轨迹,目标上灰色左右箭头之间的范围是用户光标减速并微调以弥补误差的区域。在右方有一个较大的目标,因为面积很大所以用户从任意点快速点击应该不会很难:
  大的目标区域意味着光标在目标上停下来之前不需要做太精细的调整在下一个例子中,屏幕的右方有一个小得多的目标所以用户快速点击目标会困难得多。
  因为用户需要将光标移动较长距离而且目标面积很小所以在光标正确的对准目标前需要做一系列精细的调整动作。但如果同样大小的目标距离很近的话,因为到达目标范围所需的初始动作很小所以准确点击它的难度也会小很多。距离越近,&初始动作因为幅度太大而超出目标区域的风险就越小。
  对于形状不规则的目标而言,目标区域的大小和移动的方向是相对的。在下面的例子中,如果用户从和目标平行的位置水平移动光标,那么这个按钮的相对目标区域就很大。但如果用户光标的初始位置在目标的上方或下方,那么这个长方形按钮的相对目标区域则小得多。
  除了调整目标的大小以外,我们还可以将目标放在屏幕的边缘或角落上来使其更容易被选中。因为在屏幕边缘和角落位置时它们是&无限可选中&的;具体一点来说就是&&&有一个隐形的边界来阻止用户的初始大幅移动让光标超出目标区域范围,这样的话普通指向性移动的第二步&微调&动作就不需要了。
&  这个方法在两大主流OS中都起到了很好的效果:Mac&OS&X默认将底栏(Dock)放到了屏幕的最下方;这样的话底栏就变得&无限可选中&,因为用户不能将光标移到底栏下方所以在向底栏方向做出大幅度移动后光标始终是落在底栏上的。
  在Windows中,开始菜单在屏幕的左下角,这个角落是&无限可选中&的,因为不管用户朝左下角方向做多大幅度的摆动,光标总是会停在开始菜单按钮的上方。
  Mac&OS&X系统和Windows系统的一个最大不同之处便是程序菜单的位置。&Mac&OS&X将菜单置于屏幕的顶端而Windows将它们放置在单独的应用程序窗口上。&菲茨定律显示在许多情况下Mac的做法是更好的:在Mac&OS&X中用户不论如何将光标抛向屏幕顶端其总是会停在菜单上。&而在Windows中的窗口模式下应用程序菜单则没有像Mac中的&无限可选中&的属性。
&  但是,&Mac的做法也开始凸显出其局域性。虽然Mac&OS&X下的程序菜单是&无限可选中&的,不要忘了菲茨定律也考虑到了用户当前定位点与目标的相对距离。随着显示器尺寸越来越大,双/多屏显示器的配置越来越常见。Mac的用户不得不在这些情况下穿过很长的距离来让光标到达主屏幕的顶端菜单。这样的话长距离拖动光标所耗费的时间可能会超出不用做细微调整来矫正光标位置而省下的时间。
菲茨定律的应用
&  网页设计师最大的遗憾之一就是不能利用浏览器的边角和边缘作为可&无限可选中&的区域。不过设计师仍然可以按照菲茨定律在设计上做一些优化。
  &放大链接点击区域。在链接文字周围放置可点击的填充区域,这样用户想要点击的链接文本会有更大的容错性。
  &当您有几个放置在一起的可点击目标或链接时,把它们的体积增大或增加他们之间空白区域的大小。搜索结果中的网页导航链接通常都有很差的可用性。例如,下图中的搜索结果页面就显示了太多的结果,并且这些结果互相之间也离得太近:
  亚马逊(Amazon)在处理搜索结果的方法上则要高明许多
  &将用户最有可能点击(或最想要)的按钮放大。例如,将&OK&按钮设计的更大:
  &将动作分类&&&如果相关的操作按钮靠近彼此的话,则不仅可以在视觉上增强用户对它们相关性的认知,还可以减少光标在它们之间移动所需的距离和时间。
  最后请记住,一定要敢于尝试!37&Signal在它们的产品Sortfolio主页的&Signup&按钮上就有一个灵活运用菲茨定律的有趣实验&&&当用户的光标划过时按钮会自动变大并显示更多信息&&&这样的话当用户即将开始做细微调整以精确定位光标至按钮时,微调的必要性因为按钮的自动增大而大大减少了!多么绝妙的创意和应用啊!
&&来自##59##槑
此A*算法用于求一个迷宫给定两点之间的路径,这是第二个版本,可以运行。
在处理A*算法的问题的时候,遇到了两个比较重要的问题
其一:A*算法能否求得单源到单汇的最短路径,如何数学证明其找到的路径为最短。
其二:A*算法所生成的解空间树,为一颗由叶子指向根的反方向树,如何存储这个解空间。
第一个问题,在上一篇文章中以有所解答
第二个问题将在这篇文章讨论。
这里讲一下真正困惑我的第二个问题的真正的难点:
对第二个问题的初始想法是记录所有的叶子节点,然后递归释放解空间,这里,记录所有叶子节点是可行的,但是当通过叶子节点去释放解空间树的时候,由于可能多个叶子指向同一个根,那么当根已经被释放掉的时候,依然有可能被其他叶子所指向。这回导致当我递归释放空间的时候,会发现我指针所指向的父节点已经被释放掉了,也许你会想可以判断指针是否为NULL就可以了,但其实不是,指针并没有在任意时刻被你赋值为NULL,指针仍然指向根原来所在的位置,只不过这块空间已经被释放掉了,但是C语言与C++语言里,并没有提供一种判断机制可以让你判断指针所指向的动态地址空间是否已经被释放。所以,问题来了,你不知道你指向的那个空间已经被释放,但你却对一个已经释放过的空间进行了操作,那必然会产生内存错误。
解决方案一:
我放弃了指针的应用,不再构建一个我无法控制的解空间树,而改用一个名叫father的数组来记录某一节点的父亲借点是谁,这只需要三位二进制就够了(因为只有8个方位选择),我发现,这很简单,并且很快。
#include&&iostream&
#include&&queue&
#include&&cmath&
#include&&windows.h&
#include&&WinBase.h&&  
#include&&ctime&
#include&&stdlib.h&
using&namespace&
#define&MAXSIZE&20
int&maze[MAXSIZE][MAXSIZE];
int&maze_g[MAXSIZE][MAXSIZE];
int&maze_h[MAXSIZE][MAXSIZE];
int&father[MAXSIZE][MAXSIZE];
int&closed[MAXSIZE][MAXSIZE];
int&x_loop[]={-1,-1,0,1,1,1,0,-1};
int&y_loop[]={0,1,1,1,0,-1,-1,-1};
int&g_loop[]={10,14,10,14,10,14,10,14};
int&start_x,start_y,end_x,end_y;
/*迷宫相关函数*/
void&init_maze()//迷宫初始化
&&&&srand&(GetTickCount());&//初始化随机数生成器
&&&&int&i,j;
&&&&for(i=0;i&MAXSIZE;++i)
&&&&&&&&for(j=0;j&MAXSIZE;++j)
&&&&&&&&&&&&maze[i][j]=rand()/(2*RAND_MAX/3);//这样会有2/3个0和1/3和1
&&&&start_x=start_y=end_x=end_y=-1;
&&&&while(!(start_x&=0&&&&start_x&MAXSIZE&&&&start_y&=0&&&&start_y&MAXSIZE))
&&&&&&&&cout&&"please&putin&start&point&x1,y1"&&
&&&&&&&&cin&&start_x;
&&&&&&&&cin&&start_y;
&&&&while(!(end_x&=0&&&&end_x&MAXSIZE&&&&end_y&=0&&&&end_y&MAXSIZE))
&&&&&&&&cout&&"please&putin&end&point&x2,y2"&&
&&&&&&&&cin&&end_x;
&&&&&&&&cin&&end_y;
&&&&maze[start_x][start_y]=0;
&&&&maze[end_x][end_y]=0;
void&show_maze()//显示迷宫
&&&&int&i,j;
&&&&for(i=0;i&MAXSIZE;++i)
&&&&&&&&for(j=0;j&MAXSIZE;++j)
&&&&&&&&&&&&if(maze[i][j]==0)
&&&&&&&&&&&&&&&&cout&&"□";
&&&&&&&&&&&&if(maze[i][j]==1)
&&&&&&&&&&&&&&&&cout&&"■";
&&&&&&&&&&&&if(maze[i][j]==2)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY&|&FOREGROUND_GREEN);
&&&&&&&&&&&&&&&&cout&&"回";
&&&&&&&&&&&&&&&&SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY&|&FOREGROUND_RED&|&FOREGROUND_GREEN&|&FOREGROUND_BLUE);
&&&&&&&&&&&&}
&&&&&&&&cout&&
void&lookout_maze(int&x,int&y)//回溯路径
&&&&if(father[x][y]!=-1)
&&&&&&&&lookout_maze(x+x_loop[father[x][y]],y+y_loop[father[x][y]]);
&&&&maze[x][y]=2;
/*节点相关函数*/
class&node{
&&&&int&x;
&&&&int&y;
&&&&int&next_x(int&i);
&&&&int&next_y(int&i);
&&&&bool&is_ok();
&&&&bool&is_closed();
&&&&bool&is_bar();
&&&&bool&is_out();
&&&&void&init(int,int);
&&&&void&cal();
struct&cmp{
&&&&bool&operator()(node*&a,node*&b)
&&&&&&&&return&(maze_g[a-&x][a-&y]+maze_h[a-&x][a-&y])&(maze_g[b-&x][b-&y]+maze_h[b-&x][b-&y]);
int&node::next_x(int&i)
&&&&return&(x+x_loop[i]);
int&node::next_y(int&i)
&&&&return&(y+y_loop[i]);
void&node::init(int&xx,int&yy)
void&node::cal()
&&&&maze_h[x][y]=sqrt((end_x-x)*(end_x-x)+(end_y-y)*(end_y-y));
bool&node::is_ok()
&&&&if(x==end_x&&&&y==end_y)
&&&&&&&&return&
&&&&return&
bool&node::is_bar()
&&&&if(maze[x][y]==1)
&&&&&&&&return&
&&&&return&
bool&node::is_closed()
&&&&if(closed[x][y]==1)
&&&&&&&&return&
&&&&return&
bool&node::is_out()
&&&&if(x&=0&&&&x&MAXSIZE&&&&y&=0&&&&y&MAXSIZE)
&&&&&&&&return&
&&&&return&
priority_queue&node,vector&node*&,cmp&&open_
/*刷新算法*/
void&fresh(node*&c)
&&&&//每个节点取出来之后的作用就是:刷新周围节点的G值,刷新周围节点的father
&&&&closed[c-&x][c-&y]=1;
&&&&int&i,g;
&&&&for(i=0;i&8;++i)
&&&&&&&&node*&d=new&node();
&&&&&&&&d-&init(c-&next_x(i),c-&next_y(i));
&&&&&&&&//新节点d有四种状态:open\closed\ok\bar
&&&&&&&&//新节点d还有一种状态就是超出了迷宫范围out
&&&&&&&&//cout&&d-&x&&"&"&&d-&y&&
&&&&&&&&if(d-&is_closed()&||&d-&is_bar()&||d-&is_out())
&&&&&&&&&&&&delete&d;
&&&&&&&&&&&&d=NULL;
&&&&&&&&&&&&
&&&&&&&&g=maze_g[c-&x][c-&y]+g_loop[i];
&&&&&&&&if(maze_g[d-&x][d-&y]==0&||&maze_g[d-&x][d-&y]&g)//如果获得更优的g值则刷新
&&&&&&&&&&&&int&is_in=0;
&&&&&&&&&&&&if(maze_g[d-&x][d-&y]==0)//如果是新的节点则加入到open表中去
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&open_list.push(d);
&&&&&&&&&&&&&&&&is_in=1;
&&&&&&&&&&&&}
&&&&&&&&&&&&maze_g[d-&x][d-&y]=g;//更新g值
&&&&&&&&&&&&father[d-&x][d-&y]=(i+4)%8;
&&&&&&&&&&&&if(is_in==0)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&delete&d;
&&&&&&&&&&&&&&&&d=NULL;
&&&&&&&&&&&&}
&&&&delete&c;
&&&&c=NULL;
/*a星算法*/
bool&astar_work()
&&&&while(!open_list.empty())
&&&&&&&&node*&c&=&open_list.top();
&&&&&&&&//cout&&c-&x&&"&"&&c-&y&&
&&&&&&&&if(c-&is_ok())&&&//从队列中取出元素进行判断,如果已到终点则返回
&&&&&&&&&&&&return&
&&&&&&&&open_list.pop();
&&&&&&&&fresh(c);&&&&&&//刷新该点周围的8个点
&&&&return&
void&astar()
&&&&node*&a&=&new&node();
&&&&a-&init(start_x,start_y);
&&&&a-&cal();
&&&&father[a-&x][a-&y]=-1;
&&&&open_list.push(a);
&&&&if(astar_work())
&&&&&&&&cout&&"there&is&a&way&from&start&to&end"&&
&&&&&&&&a=open_list.top();
&&&&&&&&lookout_maze(a-&x,a-&y);
&&&&&&&&show_maze();
&&&&&&&&cout&&"there&is&no&way&from&start&to&end"&&
//释放动态申请的空间
void&free_open_list()
&&&&while(!open_list.empty())
&&&&&&&&node*&c&=&open_list.top();
&&&&&&&&delete&c;
&&&&&&&&open_list.pop();
int&main()
&&&&init_maze();
&&&&show_maze();
&&&&astar();
解决方案二:
所谓难点即在于我们的树是由叶子节点指向父节点的,这与我们习惯的链式结构甚至树形结构是不想符合的,导致我们在释放空间的时候没有办法处理。解决办法也很简单,我们将存储空间的链式结构和存放父子信息的树结构分开存储就可以了。也就是说,当我们每遇到一个节点的时候就将他存入链表中,就像普通的链表一样,这样我们就可以很容易的管理我们动态申请出来的空间了。另一方面,我们为了要表示A*算法所需要的叶子指向根的树形结构(为了回溯解路径),我们又需要在节点中记录一个指向父节点的指针。综上所述,我们需要一个这样的节点:其中有一个next指针,指向下一个节点,其中又有一个father指针指向其的父节点。通常情况下为了更加好用,也可以如下来实现这一点:
struct&tree_node&{
&&&&int&h;
&&&&node*&
typedef&struct&tree_node*&&
struct&link_node&{
&&&&int&f;
&&&&link_node*&
typedef&struct&link_node*&&LINK;
关于用这个方法实现的A*算法大家可以参考云风大牛的代码:
我就不班门弄斧了,哈哈
&&来自##60##天书
Windows Blue将会带来什么?(转)
最近有消息称,微软将会在明年年中发布下一版Windows操作系统Windows&Blue,而且很可能以低价甚至免费发布。如果这一消息成真,那么微软多年的系统更新节奏就将完全改变,而Windows&Blue也将会是Windows系统的一个重大转折点,它究竟会带来什么影响呢?&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
革命性的Windows&8在一片沸沸扬扬的宣传中来到了世上,但仅仅在Windows&8发布一个月后,关于微软下一代操作系统的消息就又被传于市井。虽然微软方面暂时还未对传闻中的下一版Windows熊&Windows&Blue&作出任何正面的回应,但如果传闻属实的话,Windows&Blue将延续Windows&8的风格,把&磁贴&(Live&Tile)进行到底。
关于Windows&Blue,市面上流传着几个消息。一是微软将在明年年中发布Windows&Blue,二是Windows&Blue将与Windows&Phone实现软件互通,三是Windows&Blue将走低价路线,甚至首次实现免费。
虽然暂时没人能够证实这些传闻的准确性,但以上任何一点的成真都会对整个Windows生态体系产生很大的影响。今天我们就来分析一下,看看Windows&Blue到底会给Windows带来什么影响。
更低的价格
对于Windows&Blue的定义,外界存在两种说法,有人说它是一个补丁包(service&pack),也有人说它是一个功能包(feature&pack)。前者会包括许多系统补丁和升级,后者不但包括补丁还可能给系统增加新功能。不管是补丁包还是功能包,如果Windows&Blue在明年年中上市,那么这就代表着微软多年来的系统更新节奏将完全改变。
长期以来,微软推出新系统的间隔都得要两到三年,而现在距明年年中不过才7、8个月的时间。7、8个月升级一次操作系统,这节奏有点苹果的风格。
提高系统升级频率的直接后果之一是降低售价,因为消费者不可能每年掏一大笔钱出来升级系统。苹果每年的新版OS&X售价基本位于20到25美元区间,而国外科技媒体The&Verge报道说,Windows&Blue的定价会比苹果还低得多,甚至免费。当然,如果Windows&Blue能够让手机、平板和桌面电脑的软件完全互通,那么微软以低价渠道大力推广此系统也是明智之举,完全符合可持续性发展原则。如果Windows&Blue走了低价路线,想必未来的Windows系统升级也会将低价坚持到底。
今年的Windows&8,微软就采取了低价策略
&今年微软在Windows&8的推广中大打折扣牌,想必他们来年也可能这么做,低价对于一款经常升级的系统而言是必须的。&行业分析师维斯&米勒(Wes&Miller)表示,&如果微软把传统的定价模式套用到Windows&Blue身上,那我想这个系统也不会有什么好结局。&
恩德勒集团(Enderle&Group)主席、首席分析师罗伯&恩德勒(Rob&Enderle)认为,如果微软的每一代新系统都能够让消费者满意,大家还是会愿意每年掏钱升级一次系统的。&消费者升级到Windows&8基本要花费40美金,我想如果下一代系统能让人满意的话,这个价位大家也是可以接受的。&
如果你舍不得花钱升级到Windows&8,倒也是可以等等&可能会更便宜&的Windows&Blue。只不过据The&Verge的消息,与升级Windows&8不同的地方在于,升级Windows&Blue会要求电脑上原先运行的是&正版Windows系统&。
更多的功能
加快系统的升级频率可以帮助微软将许多新功能更快地添加到自己的系统内。原本微软每三年才推出一次新系统,而未来,可能每年Windows上都会有新内容。
加快系统的升级频率有什么直观的差别呢?想一想iPad。iPad已经出到第四代了,而它的诞生比Windows&7还要晚上大半年。
分析机构Moor&Insight&&&Strategy主席、首席分析师帕特里克&穆尔黑德(Patrick&Moorhead)表示,微软以往几年才更新一次系统的做法让他们失去了&新思想引领者&的市场地位。与革新性的语音助手Siri或智能搜索应用Google&Now相比,微软的每一个举动如今看起来都像是在追赶对手。如果微软能够改革为每年升级一次系统,这有利于改变消费者对于微软&慢吞吞&的印象。
&与加快系统升级频率相比,我认为没有什么事对微软而言会更重要了。&穆尔黑德信誓旦旦地说。
微软发布Windows&8以来,市场上不断有声音传出,指责这个系统&变化太大&,消费者要耗费很多学习成本才能适应。如果微软选择加快系统的升级频率,这个问题便能迎刃而解,因为每年的新系统都只会带来一点点的不适应。NPD集团分析师斯蒂芬&贝克(Stephen&Baker)在接受媒体采访时表示,当今世界除了微软外,没有人会选择突然推出这么一款自我分裂的产品。&密集而微小的变革能够给消费者更多的适应时间。&恩德勒也认为,&他们一年前就应该试试加快系统的升级频率了&。
尽管几位分析师都认同微软应该加快系统升级频率,但他们对微软是否依旧具备推进科技发展的能力持不同态度。&我怀疑微软推进科技创新的能力,就因为他们并不是一群对此狂热的人。&穆尔黑德对媒体表示,&微软首先是一家商业公司,其次才是一家科技公司。商业利益的驱动力远远比不上对于科技的痴迷和狂热。&
每年升级一次系统的做法最早是从苹果开始的,应用在他们饱受市场欢迎的iOS身上,如今苹果电脑的桌面系统OS&X也遵循了这个节奏。&微软接下来的举动其实有些迫不得已了,&米勒说,&不过他们还是要细细考虑一下改变升级频率会不会给自己带来什么不利的影响。我们都知道苹果每年升级一次软硬件,但最近他们也表现得创新乏力了。消费者已经习惯了微软相对缓慢的升级节奏,无论是从Windows&2000到Windows&XP,还是到之后的Windows&Vista、Windows&7和最近的Windows&8。
换一个角度说,微软如果加快升级频率,能够使企业用户更容易地接受新系统,因为企业家们一般都不喜欢突如其来的巨变。最有说服力的现象就是:如今Windows&XP依旧在企业级市场上占有很大份额,Windows&7也是在发布了3年后才初见优势。对于Windows&8,只有很少的企业表示会在第一时间升级新系统。
应用,和应用开发者
鉴于微软对于Windows生态体系的牢牢把控,更多的Windows版本应该不会造成像安卓目前这样严重碎片化的局面。有小道消息称,Windows&Blue会带有一个新的SDK(软件开发工具包),这个新SDK将融合目前Windows&8和Windows&Phone&8的SDK,或是提供标准化解决方案。也就是说,到了Windows&Blue,桌面版Windows将同手机版Windows实现软件互通,手机、平板和桌面电脑将真正成为同一个系统下的不同终端。还有一条小道消息说,Windows&RT(微软Surface&RT平板使用的操作系统)上的一切应用都将被Windows&Blue兼容。
&微软为Windows&Phone与Windows系统统一SDK有着极其重要的意义,&米勒表示,&我认为如今Windows&Phone&7、Windows&Phone&8和Windows&RT间软件的不兼容问题极大地束缚了应用开发者的手脚。打破这道隔阂,或是至少拉近几个平台间的距离,能够给应用开发者更大的施展空间,开发出更优秀更强大的应用。&对于米勒的观点,恩德勒表示完全赞同。
如今,不论是为Windows服务的Windows&Store,还是为Windows&Phone服务的Windows&Phone&Store,其中的应用数目都要大大地落后于苹果App&Store或是谷歌的Google&Play,统一SDK从理论上能够缓解微软这一尴尬局面。然而,有也分析师认为微软对于这一传闻中的SDK应该持有谨慎态度。
米勒在夸赞新SDK之后,表示了自己的担忧:&我认为SDK的变化会给应用开发者带去麻烦,麻烦的大小要看这个SDK变化的大小,还要看微软是否通过什么新工具帮助应用开发者适应全新的开发平台。&穆尔黑德认为,&如果微软保持了旧版SDK的开发语言,这样就还好&。但是,新SDK的存在本身就会对如今的Windows&8造成不利影响。Windows&8的SDK才刚刚发布,谣传中明年就要到来的Windows&Blue版SDK又要大变样,应用开发者难免出于对变数的担忧,抵消自己对Windows&8应用的开发热情。更何况,市场上还存在另一种猜测:一旦微软明年发布Windows&Blue版SDK,微软将不再接受基于现今Windows&8版SDK开发的应用。
微软需要想办法给开发者们吃下一颗定心丸,尤其是在Windows&8应用数量不足的当口上。微软需要大量的Windows&8应用,而且是高质量的Windows&8应用,但这种需求不能等到Windows&Blue发布后再想办法解决。
Windows&Blue的意义所在
不论Windows&Blue的到来会让你兴奋还是让你悲伤,我们都还要考虑另外一个问题。正如罗伯&恩德勒指出的,微软原先负责Windows业务的主舵手西诺夫斯基(Sinofsky)在Windows&8上市后突然离职了,他的离开会对Windows&Blue的到来产生什么变数呢?
尽管目前还没有官方消息能够确认Windows&Blue消息的真伪,但我们之前讨论的&微软是否应当加快系统升级频率&对于这个科技巨头未来的发展而言,依旧具有重要的借鉴意义。这家有着近40年历史的企业要用行动向我们证明,他们具备每年发布新系统的能力和灵活性。更关键的是,微软要在让应用开发者安心的前提下,拿出让不同设备终端应用兼容互通的解决方案。比如新的SDK,但不能让应用开发者难堪。
如果微软能够做到让手机平台和电脑平台应用兼容,如果微软能够做到让应用开发者安心,如果微软能够做到2013年发布Windows&Blue,每年升级一次操作系统,那么Windows&Phone就能够在iOS和安卓的猛烈炮火中求得一席之地。
如果关于Windows&Blue的消息属实,那么微软看来是决定在新操作页面的道路上越走越远。有不少经典桌面版Windows的狂热用户曾表达过对于新&磁贴&界面的不满,但微软似乎已经下定决心,让未来的系统朝着加强触屏体验的方向继续前行。
文章编译自:PCWorld&Next&Year&s&3-D&Printers&Promise&Big&Things&&&Really&Big&Things
作者:&JOSEPH&FLAHERTY
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&&来自##13##张焕
程序员如何做出“不难看”的设计
& & 摘要:现在大家审美的要求都非常高了,如今一个工具在追求实用的时候,同时大家也在要求美观大方。
经常看到程序员展示自己做的东西,有一些是创业项目,有一些是&Weekend&Project,&不客气地说,大部分都挺难看的。在&10&年前,只要你做出一个功能齐全的东西,哪怕非常难看也会有很多人叫好,而现在网站和其它互联网产品多如牛毛,没有人再愿意忍受难看的东西了。
&&&&我觉得&不难看&是对一个产品最起码的要求,难看的产品往往都很难用。程序员在写代码的时候往往只注重功能的实现和性能的提升,忽视了外观和易用性,其实很多时候只要注意一些基本的规则,就可以大幅度提高产品的观感。作为一个外行,我也算是苦苦自学了好长时间的设计,这里打算分享一些我认为比较实用的技巧,希望可以帮助到同样在摸索的人。
&&&&需要声明的是,这里的目标是做出&不难看&的设计,注意,只是&不难看&而已,怎么做得好看我也在学习。另外,我的水平也很低,只是比较能体会外行的痛苦,如果有什么错误的地方,欢迎批评指正。
下面我会从四个方面来入手:对齐,字体排印,配色和装饰元素。
&&&之所以把&对齐&单独列出来并且放在开头说,是因为它是一个看上去简单但非常容易被忽视的规则。如果你真的把所有该对齐的东西都对齐了,就会发现只是简单遵循这一个规则就会有如此大的效果。
&&&人的眼睛是喜欢秩序的,对齐就会让人觉得愉悦。不过有一点例外:尽量别用居中对齐,除非你有充足的理由。居中对齐会让人觉得很业余,你自己可以试一下好几段文字都居中是什么效果。
&&&当然,也有靠不规则来出彩的设计,但那是高级玩法,我们还是乖乖对齐比较好。关于对齐有一个很好的网站可以观摩,那就是&IA&()。它的上一个版本其实更容易看到对齐的效果,可以通过,顶部和底部的导航看上去没什么联系,如果你对比一下会发现它们对齐得都非常好。
2.&字体排印(Typography)
&&&字体排印,英文名词叫做&Typography,&它包涵的东西很多,不只是字体的选择,还包括行距、行宽以及字体间距等元素的设定,这些东西都左右着我们的阅读体验。我们每天都阅读大量东西,每天都会接触到&文字&,由这一点就可以看出字体排印的重要性。关于字体排印的具体知识我就不多说了,有很多这方面的书和资料,这里只说几点容易被忽视的元素。
&&&&首先是行宽的设定,也就是每行显示的文字个数。一般来说,我们的阅读顺序都是从左到右,然后换行。如果每行显示的文字个数太多,那么我们在换行的时候视线移动距离就比较长,就容易感觉到疲劳,所以千万不要搞成只有一栏然后对屏幕自适应宽度,那样的阅读体验非常差。如果非要做流动布局,建议设置一下&max-width&属性。
&&&&其次是行距,也就是两行文字之间的距离。经常看到有些人调整了字体大小却忘记了调整行距,结果上下两行几乎挤在了一起,看起来非常累。如果你要调整字体大小,记得把行距也设置一下,就是&CSS&中的&line-height&属性。
&&&&第三是字间距。有些时候因为需要,我们会把一些文字设置得非常大,有些文字设置得非常小,这个时候每个字之间的间距可能就会变得过大或者过小,这个时候就需要调整一下,字体设计师们在设计一款字体的时候也会考虑这个因素。在&CSS&里面,有个属性叫&letter-spacing&,可以调整字间距。
&&&&最后想说一下的是标点。我们平时用到的很多标点符号都是错误的,比如说,英文的省略号不是三个点:&&而是&&&(MacOS&X&的快捷键是&Option&+&;),英文引号也不是&"&而是&&&(MacOS&X&的快捷键是&Option&+&[),注意,这个和全角引号也不一样。平时写文章聊天无所谓,但如果做设计的话,还是把标点用对比较好。另外,名词拼写最好也严谨一些,App&Store&不是&appstore,&Xcode&不是&xcode,&iPad&不是&ipad&
&&&&上面提到的除了标点之外,其余都是关于&空白&的问题。很多程序员可能会关注字体的选择,也知道&Helvetica&和&Arial&的区别,但是对字体之间的&空白&不太在意。而事实上,字体排印更多是对&空白&的设计,把&空白&的部分做好眼睛才能呼吸顺畅。
&&&&配色一直以来都是个让我头疼的问题,它看上去很难掌握,事实上也非常难以掌握。有一阵子我甚至怀疑我自己在色彩方面有生理缺陷,不然我他妈那么用功好歹应该有点儿效果啊。后来做了一些,才慢慢打消了破罐子破摔的念头。
&&&&关于色彩基础知识的书和资料我看了不少,三原色、互补色、色环和光谱等知识知道了很多,但这些东西对我的帮助微乎其微。并不是这些知识没用,而是它们都需要辅助以大量的练习,可能还需要一个好的老师亲手指导,而我现在已经没时间和精力再从基础开始慢慢学画画了。不过,大量的阅读和无用尝试还是帮助我找到了一些比较实用并有迹可循的东西,下面就说一些窍门。
&&&&程序员一般都是用十六进制或者&RGB&来表示色彩,比如说&#FF0000&或者&rgb(100,&210,&241,&0.5)&之类。这种认识色彩的方式非常不好,它们对你来说只是一堆随机数字,只是&碰巧&会出现那种色彩。而且即使你知道&#FF0000&是红色,你也很难通过调整这些数字来找出你想要的色彩。现在我们不要再用十六进制或者&RGB&来考虑色彩了,我们要用&HSB&模式:&H(hues)表示色相,S(saturation)表示饱和度,B(brightness)表示亮度。
&&&&使用&HSB&来考虑色彩最大的好处是比较直观,当你调整色相(H),饱和度(S)&或亮度(B)中的某一项时,基本可以大概知道色彩会发生什么变化,这样我们就可以选出比较可控的又&不难看&的色彩搭配。比如说,我们可能选择了某一种色彩作为链接的色彩,那么就可以保持该色彩的色相(H),&饱和度(S)&值不变,只调整亮度(B)&的值,这样就顺利得到了一种比较深的色彩,可以用来做&:hover&色彩,如图:
这样用户在鼠标移动到链接上的时候,得到的反馈就比较自然,这里是个简单的&demo:
&&&&如果把色彩比作杠铃的话,那么程序员的&色彩肌肉&可能只能举起&5&磅的重量,所以开始的时候我们不能太勉强,不要试图去掌控跨度很大的色彩,选中一个色彩之后,任何时候都只调整&H,&S,&B&中的一项即可。控制住变量,事情就不会变得太糟。
&&&&因为我们的力量有限,所以要尽可能少的使用色彩,也就是说要尽量重复使用色彩。比如说,有一种色彩我们用作链接的&:hover&色彩,同时一些高亮的文字的背景色也可以使用它,这样不但减少了色彩种类,还会给人一种视觉上的一致性,有个很好的例子就是&&,这个网站的主人以前是纽约时报的设计总监,网站除了黑白之外这个网站只有一种橘黄色。
&&&&相信很多程序员都听说过&Twitter&Bootstrap.&Twitter&Bootstrap&是一个很酷的东西,极大地减少了设计工作,非常适合不懂设计的人快速搭建网站。但现在使用&Twitter&Bootstrap&的人越来越多,很多网站看上去千篇一律,让人非常厌烦。其实完全可以根据提到的规则来定制自己的&Twitter&Bootstrap,&这里我就以顶部的导航条为例简单做一个&demo.&首先我们看到导航条的背景样式是这样的:
background:&#2C2C2C;
background-image:&-webkit-linear-gradient(top,&#333,&#222);
&&&&现在我们把&#333&输入到&PhotoShop&里面,可以看到它的&HSB&的值为&0,0,20.&现在我们保持亮度(B)&不变,通过调整&H&和&S&找到一种舒服的颜色,比如&160,90,20.&但是这个颜色亮度太低了,所以我们增加&30&的亮度,颜色就变成了&160,90,50.&十六进制为:#.0D8059.
&&&&然后我们对其它颜色做同样的转换。#222&的&HSB&为&0,0,13,&然后把它的&H&和&S&的值设置为和&#333&一样,就变成了&160,90,13,&再增加&30&的亮度,就变成了&160,90,43.&十六进制为:#0B6E4D.
&&&&同理,&#2C2C2C&会转换成&160,90,47.&十六进制为:#0C7854.
&&&&然后把原来样式里面的三个相应的颜色都替换掉就行了。背景换了之后,你会发现菜单选中后的背景颜色还没有改,原来的颜色是&#222,&现在要改成&#0B6E4D.&此外连接上的文字显得有些暗,原来的颜色是&#999,&现在改成&#DDD.&下面是完成后的&demo&(只测试了&Chrome&浏览器):
4.&装饰元素
&&&&装饰元素都是锦上添花的东西,上面提到的几点如果做不好的话,装饰元素再好看也没用。最常用的装饰元素是纹理和阴影。有时候我们想要给整个网页一个背景,如果是纯色会显得比较呆滞,用纹理平铺会比较好一些,在网上搜&texture&会找到很多相应图片,我比较喜欢纯色然后加一些&noise&的背景,这里有一个生成器可以帮你做到:
&&&&至于阴影,有&text-shadow&和&box-shadow&等。我以前在一些网站浏览的时候,总觉得上面的文字比较特别,选中一看才发现都加了&text-shadow&.&text-shadow&如果用得好会产生一些很好的文字效果,而且不会影响阅读体验。而如果想要一些立体效果,可以考虑&box-shadow,&但使用的时候要考虑到一致性和假想中的&光源&,相邻的元素最好不要做出相反的阴影。
&&&&一般比较专业的网站在细节上都处理得非常好,从装饰元素就可以看出来。因为很喜欢的&Twitter&的设计,有一阵子我就把它的首页自己实现了一遍(可以,请用&Chrome&浏览器,因为偷懒没用考虑浏览器差异)。在抄袭的过程中,我发现即使在一些常人不会注意到的细节上它都努力做到尽善尽美。比如说输入框上面的&placeholder&其实是用&span&浮动在上面,因为原生的&placeholder&没那么丰富的效果。还有弹出窗口的那个小三角,乍看之下没什么,但如果你查看代码结构,会发现有两层:
&&&&这个让我很好奇:应该一个&div&就可以实现才对啊。当把&caret-inner&隐藏掉之后,发现原来&caret-outer&是一个半透明的层,而且宽高都比&caret-inner&多了&1px,只是用来模拟阴影效果:
仔细看就能看到那个半透明的小三角
抄到这里的时候我感到非常震惊,然后十分肯定这样的代码是设计师自己写的,不然不可能把设计意图实现得那么完美。这才是&real&web&designer&啊!知名设计师&&也曾经:"Real&web&designers&write&code.&Always&have,&always&will."&Twitter&的设计师肯定都是自己写&HTML&和&CSS&代码。
&&&&从&Twitter&的例子可以看出,好的装饰元素可以提升品质感。但是也要注意一点,装饰元素只是用来装饰的,千万不要搞得太惹眼以至于喧宾夺主。
&&&&以上说的这几点中,修改容易并且见效最快的就是对齐和字体排印,把这两点做好设计会直接上一个台阶。颜色用不好可以先不用,都用灰度也行,比如背景颜色&#EEE&,&字体颜色&#333,&分割线颜色&#CCC&&&&虽然简陋,但是&不难看&。
学习写程序虽然有时候也比较痛苦,但总体来说还是比较开心的,因为你能很快看到解决问题的成果。比如说,有时候程序因为少了一个分号而报错,当你通过调试改正了错误,程序立刻就会运行正常,得到你想要的结果。但是学习设计是完全不同的经验,你很难遇到&只要做了XX就会有XX效果&的情况。它的变量太多了,要完全控制这些变量需要丰富的经验和很好的感性,所以请多一些耐心,不要期望短期有大的进步。而这种耐心也是值得的:一旦你在这方面有所进步,它对你的影响就是全方位的,你不止可以做出好东西,也会在其它方面更有品味。
另外,技术和设计都是为了让自己做的东西更好用,它们都是为产品服务的,而不是要凸显自己的功能和地位。如果你通过努力终于掌握了一些设计知识和技巧以后,仅仅为了让别人知道你也懂设计就故意在自己做的东西里加一些完全不必要的&炫耀&,那真是一件值得羞耻的事情。
&&来自##5##小木
& & & & & & & & & & & & & & & & & & & & & & &
HMM之前向算法
HMM,隐马尔科夫模型。在5nlp上面讲的详细。
可以有这么一个有趣的联想。一对恋人中,女生有时候喜欢打男朋友,每天十二点可能发作一次。最奇怪是生气时候打,开心时候也打,有时候无缘无故平静还是打。晕。
(假设想当天十二点的心情需要参照前天十二点的心情。)能看到的就是妹子外在行动打人,或者不打人。看不到的,就是隐含的变量:妹子的心情:&生气,平静,或者高兴。
那么对于这个事情可以这么建模。
隐马尔科夫模型M&:
观测集合&V&为&{打人,&不打人}
状态集合&Q&为&{开心,&平静&,&生气}
状态转移矩阵&A&&&P(&今天心情&|&昨天心情)的矩阵&
混淆矩阵B&&&&P(&当天天的表现| 当天的心情)的矩阵
对于评估问题,就是由给定的模型M(指定了某个妹子),观测到最近妹子打你的序列是O(打,不打,打,打,不打)&由上面模型需要计算观测序列出现的概率P(O&|&M)。
如果直接计算计算量太大了。
解决这种问题要用到前向算法。
前向算法需要关注的是,前向概率的定义(52nlp称之为局部概率)和&算法初值t&=&1时候前向概率的计算。
前向概率在李航老师《统计学习方法》中的定义为:
给定隐马尔科夫模型&M&&,定义到时刻&t&部分观测序列为o_1,&o_2,&o_t,且状态为&q_i&的概率为前向概率,记作
a_t&(i)&=&P(&o_1,&o_2,&&o_t,&i_t&=&q_t&|&M)
举个例子,求&t&=&3&,状态为&q_2的前向概率。
现在&t&=&3&就是在t&=&3&时看到观测序列为(打,不打,打),&并且现在&t&=&3&时候妹子心情状态为平静的概率。
怎么求?看昨天情况呗。&昨天打没打你和今天打没打你无关,但是妹子昨天的心情会影响到妹子今天的心情。所以需要结合昨天妹子表现分别计算&昨天妹子生气,平静,高兴情况下是今天心情平静的概率。然后,和在这种平静情况下妹子打人的概率乘一乘,要求的前向概率就出来了。
目前有个大的问题就是,最初的那个观测(打)之前没有观测,怎求这个观测中的前向概率?看看512nlp的博客就会发现,小菜一碟的。
现在这个事情发生了,就这么认为:P(state&|&t&=&1)&=&P(state),因此,t&=&1&时的前向概率等于当前状态的初始概率乘以相关的混淆概率。
现在,将&t&=&1&时候的观测为(打)时候的各种前向概率计算出来。
&&&&利用昨天t&=&1时候的前向概率信息,将t&=&2&时候观测为(打,不打)时候前向概率计算出来。
&&&&利用昨天t&=&2时候的前向概率信息,将t&=&3&时候观测为(打,不打,打)时候前向概率计算出来。
&&&&利用昨天t&=&4时候的前向概率信息,将t&=&5&时候观测为(打,不打,打,打,不打)时候前向概率计算出来。
&&&&再将t&=&5&,各种前向概率进行汇总,则求出我们想要的结果&&&&指定妹子,观测到最近妹子打你的序列是(打,不打,打,打,不打)&由上面模型需要计算观测序列出现的概率P(O&|&M)。
转自&CSDN&
&&来自##36##琥珀
标准库容器概述
这是一篇概述,欲更详细的学习STL可参考本站文章《数据结构利器之私房STL》
&&&&&&&&&本站小编
1、序列式容器
array(build-in)&C++内建
heap&内含一个vector
priority-queue&内含一个heap
stack&内含一个deque
queue&内含一个deque
2、关联式容器
set&内含一个RB-tree
map&内含一个RB-tree
multiset&内含一个RB-tree
multimap&内含一个RB-tree
hash_set&内含一个hashtable
hash_map&内含一个hashtable
hash_multiset&内含一个hashtable
hash_multimap&内含一个hashtable
3、所谓序列式容器,其中的元素都可序,但未必有序。
二、vector
1、vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。
array是静态空间,一旦配置了就不能改变。
vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。
2、vector的实现技术,关键在于其对大小的控制以及重新配置时的数据移动效率。
3、vector提供random&access&iterator
4、vector的数据结构
线性连续空间
以两个迭代器start和finish分别指向配置得来的连续空间中目前已经被使用的范围,并以迭代器end_of_storage
指向整块连续空间(含备用空间)的尾端。
当增加新元素时,如果超过当时的容量,则容量会扩充至两倍。如果两倍容量仍不足,则扩充至足够大的容量。
容量大于等于其size。
容量的扩张必须经历&重新配置、元素移动、释放原空间&等过程,工程浩大。
5、vector的构造与内存管理
所谓动态增加大小,并不是在原空间之后接续新空间(因为无法保证原空间之后尚有可供配置的空间),而是以原大小的两倍
另外配置一块较大空间,然后将原内容拷贝过来,然后才开始在原内容之后构造新元素,并释放原空间。
因此,对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了。
6、STL对于&插入操作&的标准规范:插入完成后,新节点将位于哨兵迭代器所指之节点的前方。
1、相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。
对于任何位置的元素插入或元素移除,list永远是常数时间。
2、list的实现是一个环状双向链表,只需要一个指针,便可以完整表现整个链表。
只要刻意在环状链表的尾端加上一个空白节点,便符合STL规范之&前闭后开&区间。
3、list提供&bidirectional&iterator
1、vector是单向开口的连续线性空间,而deque则是一种双向开口的连续线性空间。所谓双向开口,表示可以在头尾两端分别做元素的插入和删除操作。
2、deque和vector的最大差异:
a、deque允许常数时间内对头端进行元素的插入或移除操作
b、deque没有容量概念,因为它是动态地以分段连续空间组合而成,随时可以增加一段新的空间并链接起来。
3、deque也提供random&access&iterator,但复杂度很高,除非必要,尽可能选择vector
4、deque的中控器
deque由一段一段的定量连续空间构成,deque采用一块所谓的map作为主控,这里的map是一小块连续空间,其中每个元素都是指针,指向另一段连续线性空间,称为缓冲区。缓冲区才是deque的存储空间主体。
5、deque的迭代器
deque是分段连续空间,维持其&整体连续&假象的任务,落在了迭代器的operator++和operator--运算子身上。每个缓冲区大小一样。
1、stack是FILO的数据结构,只有一个出口。
2、stack以deque为底部结构,因此stack往往不被归类为container,而被归类为container&adapter
3、stack不提供走访功能,也不提供迭代器。
1、queue是FIFO的数据结构,有两个出口。
2、queue以deque为底部结构,因此queue往往不被归类为container,而被归类为container&adapter
3、queue不提供遍历功能,也不提供迭代器。
1、heap并不归属于STL容器组件,它是个幕后英雄,扮演priority&queue&的助手。
2、priority&queue允许用户以任何次序将任何元素推入容器内,但取出时一定是从优先级最高的元素开始取。
3、binary&heap是一种完全二叉树,通过简单的位置规则,array可以轻易实现出完全二叉树,这种以array表述tree的方式,我们称为隐式表述法。
4、array的缺点是无法动态改变大小,而heap却需要这项功能,因此,以vector代替array是更好的选择。
5、heap不提供遍历功能,也不提供迭代器。
6、经过排序后的heap不再是一个合法的heap,需要再做一个heap
八、priority&queue
1、priority&queue是一个拥有权值观念的queue,由于是queue,只允许在底端加入元素,并从顶端取出元素。
2、priority&queue带有权值观念,其内的元素并非按照被推入的次序排列,而自动按元素的权值排列。
3、priority&queue以vector为底部结构再加上heap处理规则,因此其往往不被归类为container,而被归类为container&adapter
4、priority&queue不提供遍历功能,也不提供迭代器。
1、slist是单向链表,这个容器并不在标准规格之内。
2、slist的迭代器属于forward&iterator,而list的迭代器输入bidirectional&iterator
序列式容器的重点在于vector、list、deque的理解,清楚了其内部实现,在实际中就可以应用得当。
&&来自##60##天书
54215人关注
54215人关注
站长在关注}

我要回帖

更多关于 windows vista ghost 的文章

更多推荐

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

点击添加站长微信