Java败给Python?不!我有话说

640?wx_fmt=gif

在软件工程师的职业生涯中,知识的“半衰期”通常为三年,这意味着我们掌握的一半知识在三年后将变得毫无价值。这个行业本身就意味着不断充电与持续学习。

——蒋楠老师(译者)

 

640?wx_fmt=jpeg

作为使用最广泛的编程语言,Java 的地位一直是不可撼动的。世界上累计有 150 亿台设备运行 Java,全球 Java 开发者的数量超过 1000 万人,Java 程序员更是进可攻前端,退可守后端。

Java 不仅构成了大量开源平台的基础,也已成为软件文化中不可或缺的一部分。在各大编程语言排行榜前三的位置上,你几乎都能找到 Java 的身影。 

Java 版本更新的速度更是嗖嗖地。有时候,很难相信一门已保持了 20 年向后兼容性的语言会发生如此巨大的变化。在 Oracle 于 2014 年 3 月发布 Java SE 8 之前,作为最权威的服务器端编程语言,Java 已然赢得“21 世纪的 COBOL”这一美誉。Java 稳定且应用广泛,同时还不遗余力地追求性能。变化来得很慢,但还是来了。正因为如此,每当 Java 发布新版本时,企业的升级意愿并不迫切。

Java 9 面世之后,Oracle 开始加快了这门语言的迭代速度,版本发布周期改为半年一次,以便缩短开发者使用新功能的时间。我们也不难看出 Oracle 意欲求变之心。

不过,在 Java SE 8 发布之后,一切也都发生了改变。Java SE 8 将“ Lambda 项目”(Project Lambda)纳入其中,这个重大的创新将函数式编程(functional programming)的概念引入这门杰出的面向对象语言。lambda 表达式、方法引用以及流从根本上改变了 Java 的习惯用法。自此之后,开发人员一直在努力跟上这门语言前进的步伐。

面对这些新特性,我们无意评判这些变化能否对 Java 开发有所促进,也无意探讨是否可以通过其他途径实现同样的目的。只想说新特性已经存在,我们应该如何利用它们完成工作。通过了解 Java 引入的新特性来帮助自己实现既定目标。

换言之,一旦掌握这种新的程序设计模型,就能享受它所带来的诸多优点。函数式代码往往更简单,而且更易于编写和理解。函数式编程强调不可变性(immutability),这使得编写的并发代码更简洁,调试和运行更容易成功。

在 Java 初登舞台时,摩尔定律仍然有效:处理器的速度大约每 18 个月就提高一倍。而如今性能提升的根本在于,即使是手机也已大部分配备了多个处理器。

由于 Java 非常注重保持向后兼容性,不少企业和开发人员在迁移到 Java SE 8 时并未采用新的习惯用法。即便如此,Java SE 8 仍然是一个值得尝试的强大平台,而且 Oracle 已于 2015 年 4 月正式宣布停止对 Java 7 提供支持。

Java SE 8 发布至今已有几年时间,大部分 Java 开发人员目前都已转向 JDK 8。虽然现在 Java 版本已经到了 Java 10,即便是这样,深入了解 Java SE 8 对未来的开发也是有很大意义的。

最近市场上经常把Python和Java编程语言拿出来进行比较,我们承认Python发展速度确实很快,也是一门很容易上手的编程语言,可是编程语言也是各有各的优缺点,不能因为一门语言的兴起而忽略了其他的编程语言,要不Java为什么总能在编程语言排行榜的前三名呢?说明Java的性能上还是有优点的。也是程序员心里最流行的编程语言。

算起来我们近期一直在推荐Python而忽略了Java的推荐,不过不用担心,这次就给大家介绍一位新朋友——《Java攻略:Java常见问题的简单解法》。新在哪里?新在形式上。全书都是采用一问一答的形式,有 70 余个可以用于实际开发的案例,可以说是理论与实战兼备了。

640?wx_fmt=png

640?wx_fmt=jpeg

Modern Java Recipes: Simple Solutions to Difficult Problems in Java 8 and 9
作者:肯·寇森
译者:蒋楠
定价:69.00元

 

扫码一键购,现在8折优惠中

640?wx_fmt=png

 

  • 迅速查找 Java 8 和 Java 9 相关特性介绍指南

  • 70 余个提炼自开发人员日常工作的范例

介绍了如何利用 Java 8 和 Java 9 的新特性解决这些问题,从而以更自然的方式让开发人员对这门语言的变化了然于心。我们可以举一反三,将所学的知识运用到实际开发中。

好学,高效的Python,薪资竟也这么高:

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

640?wx_fmt=png

如果你是一位经验丰富的开发者,基本上无须像初学者一样学习 Java 8 和 Java 9 引入的所有新特性,也没有时间这样做。这本对你来说就是一本迅速查找相关特性介绍的指南,并给出可以用于实际开发的示例。

而书中范例均来自开发人员在日常工作中遇到的问题,还有如何利用 Java 8 和 Java 9 的新特性解决这些问题,从而以更自然的方式让开发人员对这门语言的变化了然于心。我们可以举一反三,将所学的知识运用到实际开发中。

就算你是 Java 8 和 Java 9 的长期使用者,依然可以从中受到启发。有关归约运算符的讨论切实加深了读者对这种函数式编程风格的理解。专门探讨 Java 9 新特性的章节正是开发人员所需要的,对所有希望提高自身知识水平的 Java 开发人员而言,本书可以说非常有用了。

细节展示

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

 

作译者简介

 

作者:肯·寇森(Ken Kousen),独立咨询师与培训讲师,Kousen IT 公司总裁;对 Spring、Hibernate、Groovy、Grails 等语言和框架颇有研究;荣膺 2013 年和 2016 年 JavaOne Rock Star 大奖;毕业于 MIT 并取得了普林斯顿大学博士学位。

译者:蒋楠,毕业于电子科技大学、维多利亚大学,多年来致力于 web 开发与软件架构设计,对算法、数据密集型应用、分布式数据库系统兴趣浓厚。非资深程序员,严肃马拉松跑者。

内容简介

  • 第 1 章将介绍 lambda 表达式和方法引用的基础知识,然后讨论接口的新特性,包括默认方法和静态方法。此外,还将定义“函数式接口”,并解释它对于理解 lambda 表达式的重要性。

  • 第2章主要介绍 Java 8 引入的 java.util.function 包,它包括 Consumer、Supplier、Predicate 以及 Function 这四类特殊的函数式接口,它们的应用贯穿于整个标准库。

  • 第 3 章将介绍流的概念及其表示抽象的方法。流支持对数据进行转换和过滤,而非迭代地进行处理。这一章的范例将讨论与流相关的映射、过滤、归约等概念,它们与第 9 章介绍的并行和并发有密切的关系。

  • 第 4 章主要介绍流数据的排序,并讨论如何将其转换为集合。这一章还将介绍分区和分组,它们将一般意义上的数据库操作转换为简单的库调用。

  • 第 5 章是综合性的一章。在掌握 lambda 表达式、方法引用以及流的用法之后,读者将学习如何综合运用它们来解决某些有趣的问题。这一章还将讨论惰性、延迟执行、闭包复合等概念,以及异常处理这个令人头疼的问题。

  • 第 6 章将讨论 Java 8 引入的颇具争议性的 Optional 类。这一章的范例将介绍 Optional 类的用法,以及如何创建实例并从中提取值。此外,我们将进一步讨论 Optional 类中 map 与 flatMap 操作所体现的函数式概念,以及它们与流中的 map 与 flatMap 操作有何不同。

  • 第 7 章将介绍输入 / 输出流(与函数式流相对)的实际应用,以及 Java 8 针对文件和目录处理为标准库引入的一些函数式概念。

  • 第 8 章将讨论 Java 8 引入的 Date-Time API,以及它如何取代传统且饱受诟病的 Date 类和 Calendar 类。这种新的 API 基于 Joda-Time 库,凝聚了大量开发人员多年的使用经验,已被重写为 java.time 包。坦率地讲,即便 Date-Time API 是 Java 8 新增的唯一特性,升级到 Java 8 也物有所值。

  • 第 9 章主要介绍流模型的一种隐式承诺:通过一次方法调用,可以将串行流转换为并行流,从而充分利用计算机中所有可用的处理器。并发涉及的内容很多,这一章将重点介绍 Java 库的新增功能,这些功能便于用户进行试验,并评估成本和收益是否值得付出努力。

  • 第 10 章将介绍 Java 9 引入的众多新特性,该版本于 2017 年 9 月 21 日正式发布。Jigsaw 本身的内容已可单独成书,但其基础概念十分清晰,这一章将对此进行介绍。其他范例将讨论接口中的私有方法,并介绍 Stream、Collectors 与 Optional 新增的各种方法,以及如何创建日期流 1。

 

 

 

第1章 基础知识  1

1.1 lambda表达式  2

1.2 方法引用  5

1.3 构造函数引用  8

1.4 函数式接口  12

1.5 接口中的默认方法  14

1.6 接口中的静态方法  17

第2章 java.util.function包  20

2.1 Consumer接口  20

2.2 Supplier接口  22

2.3 Predicate接口  25

2.4 Function接口  28

第3章 流式操作  31

3.1 流的创建  31

3.2 装箱流  35

3.3 利用reduce方法实现归约操作  36

3.4 利用reduce方法校验排序  44

3.5 利用peek方法对流进行调试  45

3.6 字符串与流之间的转换  47

3.7 获取元素数量  50

3.8 汇总统计  52

3.9 查找流的第一个元素  54

3.10 使用anyMatch、allMatch与noneMatch方法  58

3.11 使用flatMap与map方法  60

3.12 流的拼接  63

3.13 惰性流  66

第4章 比较器与收集器  69

4.1 利用比较器实现排序  69

4.2 将流转换为集合  72

4.3 将线性集合添加到映射  75

4.4 对映射排序  77

4.5 分区与分组  79

4.6 下游收集器  81

4.7 查找最大值和最小值  83

4.8 创建不可变集合  85

4.9 实现Collector接口  87

第5章 流式操作、lambda表达式与方法引用的相关问题  91

5.1 java.util.Objects类  91

5.2 lambda 表达式与效果等同于final的变量  93

5.3 随机数流  96

5.4 Map接口的默认方法  97

5.5 默认方法冲突  101

5.6 集合与映射的迭代  103

5.7 利用Supplier创建日志消息  105

5.8 闭包复合  107

5.9 利用提取的方法实现异常处理  110

5.10 受检异常与lambda表达式  112

5.11 泛型异常包装器的应用  114

第6章 Optional类  117

6.1 Optional的创建  118

6.2 从Optional中检索值  120

6.3 getter 和setter方法中的Optional  122

6.4 Optional.flatMap与Optional.map方法  124

6.5 Optional的映射  127

第7章 文件I/O  131

7.1 文件处理  132

7.2 以流的形式检索文件  134

7.3 文件系统的遍历  135

7.4 文件系统的搜索  137

第8章 java.time包  139

8.1 Date-Time API中的基本类  140

8.2 根据现有实例创建日期和时间  143

8.3 调节器与查询  147

8.4 将java.util.Date转换为java.time.LocalDate  152

8.5 解析与格式化  155

8.6 查找具有非整数小时偏移量的时区  158

8.7 根据UTC偏移量查找地区名  160

8.8 获取事件之间的时间  162

第9章 并行与并发  165

9.1 将顺序流转换为并行流  166

9.2 并行流的优点  169

9.3 调整线程池大小  173

9.4 Future接口  175

9.5 完成CompletableFuture  178

9.6 多个CompletableFuture之间的协调(第1部分)  181

9.7 多个CompletableFuture之间的协调(第2部分)  186

第10章 Java 9新特性  193

10.1 Jigsaw中的模块  194

10.2 接口中的私有方法  198

10.3 创建不可变集合  200

10.4 新增的Stream 方法  204

10.5 下游收集器:filtering与flatMapping  207

10.6 新增的Optional方法  210

10.7 日期范围  212

扫码一键购,现在8折优惠中

640?wx_fmt=png

 

 

展开阅读全文

我有话说...

10-27

一、请求版主rn1、高抬一下贵手,不要删除贴子rn2、如果您不删除贴子,能否将该贴固顶rnrn二、请求网友rn1、请耐心往下读rn2、如果您同意,请将贴子顶一下,我好统计人数rn3、如果您不同意,请不要骂人,也不要在贴子里留言rnrn三、楼主简介rn姓名:梁忠旗rn单位:湖南省娄底市科学技术局rn职务:法制科科长rn年龄:36岁rn毕业院校:江苏南京空军气象学院92届天气动力系三队(现解放军理工大学)rn编程年限:12年rn主要作品:文华报表控件、文华通用信息管理系统rnrn四、开贴原因rn昨天晚上在网上下载了Reflector最新版本,发现我编的文华报表控件的源码被它反编译后几乎完全相同,我受到了极大的震撼,多年来的心血付之东流,多年的抱负随之灰飞烟灭,我已失去了目标,我不知道我今后的路该怎么走,没有了目标的人生已无任何意义,昨天晚上辗转反侧,一夜未眠,最后决定真正、完全公开文华报表控件(Winfar_Richcell.Dll)的源码。rnrn五、要求rn1、需要源码的人每人500元(前面已经说过,您不同意请不要骂人)rn2、将贴子往前顶一下,以便更多的人能看到rn3、需要源码的人数少于500时请不要汇款,我不会发送源码(即使您已汇了款我也不会发送源码,而且不会退款)rn4、2004年12月1日前如果该贴子已结贴请不要汇款(即使您已汇了款我也不会发送源码,而且不会退款)rn5、我会统计人数,符合条件我将另开贴子公布地址和帐号。rn6、我另公布地址和帐号前请不要汇款(即使您已汇了款我也不会发送源码,而且不会退款)rn7、在VB.NET社区留言的朋友请不要在C#社区留言,同样在C#社区留言的朋友请不要在VB.NET社区留言rn8、请广大网友做个证明人rnrn六、如果您同意那么您将失去rn1、人民币500元整rn2、一次请客做东的机会rnrn七、您将得到rn1、您将得到文华报表控件(Winfar_Richcell.Dll)的全部源码,每个重要的函数指令都有详细的说明(文华报表控件功能如何请您下载后自己判断)rn2、您的编程技术将得到一次飞跃(您虽然可以反编译,但您不可能得到系统的完全构架,您最少还要二年以上的时间才能编出功能大体差不多的程序。)rn3、你可以迅速将文华报表控件整合到您的程序中rn4、您的工作效率将得到极大的提高rn5、您将因您的工作出色而得到老板的欣赏并可能加薪rnrn八、下载地址:http://www.winfarsoft.comrnrn九、最后声明rn这决不是广告 论坛

【300分】关于sp1234,我有话说!!!!!!!

03-13

最近连续看到好几篇关于sp1234的帖子,里面褒贬不一,心里有些不是滋味!!!rnrn我也是csdn十二年的一名老粉丝了,虽然现在上csdn论坛的次数比较少,但还是经常抽时间进来看看,有空回答一两个力所能及的问题。rnrn我还清晰的记得,当初我听人介绍,刚进csdn的时候,心里是很激动的,为能找到这么好一个免费学习技术的地方感到异常兴奋。rnrn那时候,我也像很多新人一样,不知道如何问问题,不知道如何描述问题,不知道如何调试代码,不知道如何解决一个简单的业务。。。。。各种幼稚。。。。rnrn当时群里好多大牛,.net里影响最深的是吴义琴、孟子e章还有sp1234,sql板块里的sql777,还有 caozhy等版主,我从他们以及很csdn的朋友那里学了很多的技术,更重要的是,从他们那里学了很多认知学和思维推导等方面的能力。。。。rnrn他们每个人的处事风格都不一样,看问题的角度不一样,表述方式不一样,但正是因为这样,他们极大的开阔了我的眼界和思想领域,让我知道,同一个问题,然来有这么多理解和解决方法。让我充分认识到自己的无知和不足。rnrn有时候,他们的一句话,可能给了我很大的启发,也有一句骂语或鄙视的言论,给了我巨大的压力和动力。驱使和鞭策我不断前行,不断加深对软件编程的理解和认知。。。。rnrn可以说,我的成长,跟他们的无私奉献和教导是密不可分的。rnrn现在回头看看这些评论。。。。唉。。。。。rnrn我感觉有些同学,就是经不起任何一句重语,都是温室的花朵,见光死一般,语气稍微有点不对劲,就使性子,发脾气。。。。rn注意力根本不在所提的问题上。。。。rn或者来就是为了要代码的,但凡不是给代码的其他回答,都不是他想要的,是别人乱说。。。。。rn我想问一句,你们是来提问求解求学求知的,还是来卖萌耍宝长脸的??rn大家都不认识,又没收你一分好处,能给你回答已经是很不错了,你还要求那么多干什么呢?rn只要是回答你的问题的,哪怕回答的不正确,你都应该表示感谢才对,rn如果别人回答的,你不理解,不懂,就应该虚心继续请教,而不是开始斥责谩骂。。。。rnrn言归正传,关于sp1234,rn虽然我不知道sp1234真人是谁,但我看过他很多很多很多的帖子回复,绝大部分都是非常深入非常精辟的,我一直从他的表述里汲取营养。虽然有些答复,跟lz的初衷有些偏离,但本质必然是关联的,只是很多人没有理解到那一步。rnrn这么说吧,他不是神,会有一些人所有特有的缺点,那不是问题!rn在这里,我们需要的是技术,是技术思想的深度,而他都有!!rn更重要的是,他不仅有技术资本,他还能很精炼精辟的表述出来!!!rn这还不是最重要的,最重要的是,他愿意给大家表述出来!!!!rn但真正最最最重要的是,他还能十几年如一日的坚持这样传教助人!!!!!rnrn这样的好人,大家还是原谅他那一点小瑕疵吧!!!!!!rnrn 论坛

话说我不理解的Qt

10-31

一直在用qt,很不专业的用。两个字:方便。可是...rn近一个月有个大活儿,需要用到脚本引擎解析脚本。麻烦来了rn我需要实现的是插件,插件实现的扩展拥有接口都支持平台(有窗口)脚本功能调用,自己写main函数也能调用(不需要启动窗口)。为了方便使用脚本统一格式(各种算法插件调用格式),有些脚本语句需要作为sting给我我在类中解析,而不是平台的脚本解析求值给我。我了个去,有些绕。我也烦了,但是还得做。我在插件实现的类中用Qt脚本引擎解析输入的脚本表达式(表达式是QString)。可是我写main函数调用时总是最后抛出个段错误,最烦的就是这个拿出来看一下:rn[Thread debugging using libthread_db enabled]rn[New Thread 0xb7bbdb70 (LWP 3206)]rn[New Thread 0xb71ffb70 (LWP 3207)]rn[New Thread 0xb630eb70 (LWP 3208)]rnrnProgram received signal SIGSEGV, Segmentation fault.rn[Switching to Thread 0xb630eb70 (LWP 3208)]rn0x011c049e in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/i386-linux-gnu/libpthread.so.0rn(gdb) btrn#0 0x011c049e in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/i386-linux-gnu/libpthread.so.0rn#1 0x011043fd in pthread_cond_wait () from /lib/i386-linux-gnu/libc.so.6rn#2 0x02a07817 in ?? ()rn#3 0x02b202b0 in ?? ()rn#4 0x02b20298 in ?? ()rn#5 0x00000000 in ?? ()rn这个很显然不是我的代码中的,是ubuntu系统的。然后我DEBUG进去,发现这个是调用完所有的析构函数调用QApplication app的析构函数时抛出的错误。我抑郁了,感觉这时候我就是一只无头的苍蝇,需要乱撞了。而且我的类里没有new过什么东西。rn后来发现和QScriptEngine有关。先说怎么发现的:我把所有的函数写成空壳,私有变量中原来对象声明还在,这回感觉行了,可是还是会有段错误。这我就更郁闷了,到此排除法已经折腾一天了。后来我猜只有QScriptEngine *_myEngine,它是个QObject,注释掉试一试,啊,这回好了。rn再说解决。开始我怀疑是不是我没有return app.exec(),我写的return 0。我发现写return app.exec()时程序没有段错误,但是不结束了,感觉窗口没有关掉似的,应该在什么地方调一下窗口关掉函数,很久没写过界面我都忘记是哪个了,翻出来是exit(0),我把它加在了return app.exec()前app.exit(0),可是程序还是不结束。我了个去,我烦躁呀。想总得在哪里关掉些什么。于是我exit写在实现类的析构中,但是对象是什么?不管了就写exit(0),发现eclipse认识,好再编译,运行好了。写这段文字时我又把那句改到main函数中,写成exit(0),不加对象app。结果也行。感觉自己真是很菜呀 论坛

话说JAVA之创建对象

07-29

创建对象,在面向对象的程序设计里最基本的语句.都来说说如何创建对象,有哪些方式...>?rn 我先来说几种:rn 1. 构造器. 默认情况下,如果你不去编写构造器,JAVA类都会调用默认无参的构造器.构造器在传递参数时,一般以1-2个居多,超过4个参数的在API中很少见.相信这也是用的最多的创建对象的方法.但在需要参数太多时并不推荐.rn 2. 静态工厂方法. 利用静态工厂方法来创建对象,获得实例也是一种方法.这种方法尤其在单例模式中用到.使用静态工厂发放创建对象好处很多,例如通过名称可以知道确切含义,可以重复利用创建好的对象等.该方法在包装类型中比较多,如其中的valueOf()方法.实际应用中,我用的还是比较少.rn 3. 构建器模式. 当一个类有很多成员属性时,如何更好的创建对象,上述两种方式就不是那么的容易了.特别是其中有些属性可选的情况下,此时构建器不失为一种好的创建对象方法.这中创建对象的方式,相信经常用的更少.rn 以上是我的总结,还有其他情况,欢迎大家讨论.rn 另附构件器模式创建对象示例:rn[code=Java]rn/**rn * @author HUHGrn * 2009-07-29 11:37rn */rnpublic class Nutrition rn private final int servingSize;rn private final int servings;rn rn //optionrn private final int calories;rn private final int fat;rn private final int sodium;rn //... morern rn public static class Builder rn private int servingSize;rn private int servings;rn rn //optionrn private int calories= 0;rn private int fat= 0;rn private int sodium= 0;rn //... morern rn public Builder(int servingSize, int servings)rn this.servingSize= servingSize;rn this.servings= servings;rn rn rn public Builder calories(int value)rn calories= value;rn rn return this;rn rn rn public Builder fat(int value)rn fat= value;rn rn return this;rn rn rn public Builder sodium(int value)rn sodium= value;rn rn return this;rn rn rn //... morern rn public Nutrition build()rn return new Nutrition(this);rn rn rn rn private Nutrition(Builder builder)rn servingSize= builder.servingSize;rn servings= builder.servings;rn rn calories= builder.calories;rn fat= builder.fat;rn sodium= builder.sodium;rn //... morern rnrn /**rn * @param argsrn */rn public static void main(String[] args)rn Nutrition object= new Nutrition.Builder(100, 10).calories(20).fat(5).build();rn //... use itrn rnrnrn[/code] 论坛

java大侠有不

10-08

[code=Java]boolean flag = false;rn rn public void text()rn rn String s2 = text2.getText();rn String a2 = "\\w+@\\w+(\\.\\w+)+";rn boolean flag2 = s2.matches(a2);rn String s4 = text4.getText();rn String a4 = "[2]\\d10";rn boolean flag4 = s4.matches(a4);rn String s5 = text5.getText();rn String a5 = "\\w6,10";rn boolean flag5 = s5.matches(a5);rn rn if(!flag2)rn JOptionPane.showMessageDialog(this,"您输入了非法字符","警告提示框",rn JOptionPane.WARNING_MESSAGE);rn else if(!flag4)rn JOptionPane.showMessageDialog(this,"学号错误!","警告提示框",rn JOptionPane.WARNING_MESSAGE);rn else if(!flag5)rn JOptionPane.showMessageDialog(this,"密码错误!","警告提示框",rn JOptionPane.WARNING_MESSAGE);rn elsern new login();rn flag = true;rn rn rn rn rn public void myevent()rn rn addWindowListener(new WindowAdapter()rn public void windowClosing(WindowEvent e)rn setVisible(false);rn rn );rn rn submit.addActionListener(new ActionListener()rn public void actionPerformed(ActionEvent e)rn if(e.getSource()==submit)rn text();rn // zhuce();rn String s1 = text1.getText();rn String s2 = text2.getText();rn String s3 = text3.getText();rn String s4 = text4.getText();rn String s5 = text5.getText();rn tryrn FileWriter fw = new FileWriter("1.txt",true); rn if(flag)rn fw.write(s1+" "+s2+" "+s3+" "+s4+" "+s5+"\r\n");rn fw.flush();rn fw.close();rn rn rn catch(IOException e1)rn rn rn );[/code]rn为什么text()方法里的new login()执行后,myevent()方法中if(flag)后面的语句还会执行,怎么改啊 论坛

人类终于还是败给了Watson

02-18

北京时间2月17日消息,据国外媒体报道,由IBM和美国德克萨斯大学联合研制的超级电脑“沃森”(Watson)近日在美国最受欢迎的智力竞猜电视节目《危险边缘》中击败该节目历史上两位最成功的选手肯-詹宁斯和布拉德-鲁特,成为《危险边缘》节目新的王者。rnrn超级电脑“沃森”由IBM公司和美国德克萨斯大学历时四年联合打造,电脑存储了海量的数据,而且拥有一套逻辑推理程序,可以推理出它认为最正确的答案。德克萨斯大学计算机科学教授拉蒙德-穆尼博士介绍说,“根据推理,它可以得出最终结论,并列出答案以及对这些答案的信心指数。”rnrn德克萨斯大学科学家肯-巴克尔博士指出,人类语言的含糊性与歧义性以及《危险边缘》节目的微秒之处给参赛者造成了诸多困难。巴克尔认为,“节目很狡猾,这些问题并不会对人类答题提供帮助,只会让他们感觉更加困难。”rnrn科学家们认为,“沃森”的技术在商业和社会领域都将有着广泛的实际应用,可以在医学、法律、工程等几乎任何你能想象得到的领域,提供及时咨询问答服务。rnrn不过,“沃森”也失蹄的时候。《危险边缘》节目主持人阿历克斯-特里贝克在谈到周三节目中“沃森”的表现时,他举了一个“沃森”给出错误答案的事例。问题是:一个美国城市,有两个机场,其中最大的机场以一位二战英雄命名,第二大机场以第二次世界大战中一次战役命名。正确答案应该是:“芝加哥”,芝加哥拥有奥黑尔机场和中途机场。然而,“沃森”给出的答案却是“多伦多”。特里贝克开玩笑说,“沃森”需要恶补地理学课程,因为它竟然不知道多伦多是加拿大城市。rnrn[color=#FF0000]IBM超级电脑人机大战第一天题目详解[/color]rn[url=http://cloud.csdn.net/a/20110216/292019.html]http://cloud.csdn.net/a/20110216/292019.html[/url]rn[color=#FF0000]IBM超级电脑人机大战第二天题目详解[/color]rn[url=http://cloud.csdn.net/a/20110217/292052.html]http://cloud.csdn.net/a/20110217/292052.html[/url]rn[color=#FF0000]IBM“沃森”胜利秘诀:POWER7实现三秒作答[/color]rn[url=http://cloud.csdn.net/a/20110218/292132.html]http://cloud.csdn.net/a/20110218/292132.html[/url] 论坛

没有更多推荐了,返回首页