10 2018 档案

摘要:IBM宣布收购Linux巨头Red Hat,以每股190美元的现金收购其所有已发行股份,总价值约为340亿美元。这一交易是IBM历史上金额最高的一笔收购交易,也成为其在营收持续下滑的压力下,布局云计算的奋力一击。 北京时间29日消息,IBM于当地时间周日宣布收购Linux巨头、开源的企业软件制造商R 阅读全文
posted @ 2018-10-30 17:15 尐鱼儿 阅读(355) 评论(0) 推荐(0) 编辑
摘要:Jvm的垃圾回收机制到底会不会回收掉长时间不用的单例模式对象,这的确是一个比较有争议性的问题。将这一部分内容单独成篇的目的也是为了与广大博友广泛的讨论一下这个问题。为了能让更多的人看到这篇文章,请各位博友看完文章之后,点一下“顶”,让本篇文章排名尽量的靠前。笔者在此谢过。 讨论命题:当一个单例的对象 阅读全文
posted @ 2018-10-29 23:42 尐鱼儿 阅读(414) 评论(0) 推荐(1) 编辑
摘要:lrzsz是一款在linux里可代替ftp上传和下载的程序。在linux中支持直接拖拽上传的插件;同时也支持rz和sz进行命令上传和下载。 插件安装 上传(rz) 上传可以直接拖动,上传文件至当前目录; 同时也可以命令:输入rz回车后,会出现文件选择对话框,选择需要上传文件,一次可以指定多个文件,上 阅读全文
posted @ 2018-10-25 00:02 尐鱼儿 阅读(2681) 评论(0) 推荐(1) 编辑
摘要:我的算法学习之路 关于 严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的。 我这些年学习数据结构和算法的总结。 一些不错的算法书籍和教程。 算法的重要性。 初学 阅读全文
posted @ 2018-10-24 12:25 尐鱼儿 阅读(132) 评论(0) 推荐(0) 编辑
摘要:Android学习之路 by stormzhang.com 这篇博客背后的故事 一路走来很不容易,刚好知乎上被人邀请回答如何自学android编程, 就借这个机会在知乎上记录一路走来的历程,很励志,希望能给那些正在或准备走编程行业的人一些正能量,内容有点长,感兴趣的可以当做励志小说阅读吧。 收到一些 阅读全文
posted @ 2018-10-24 12:25 尐鱼儿 阅读(148) 评论(0) 推荐(0) 编辑
摘要:理想的程序员 by 建造者说 我算是靠坑蒙拐骗进了程序员的门,然后一路狂奔。26岁之前几乎没有任何写代码的经验,研究生毕业却意外选择了一家不可能提供培训的初创公司,在每日担忧公司倒闭、害怕被炒鱿鱼以及同事冷落白眼的三重压力下逆流而上,一年半后离职,已是拥有500万用户产品的后台主程。从前我对计算机技 阅读全文
posted @ 2018-10-24 12:25 尐鱼儿 阅读(170) 评论(0) 推荐(0) 编辑
摘要:Rob Pike:我得到的最佳编程建议 Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作系统开发的主要领导人。他是缔造Go语言和Limbo语言的核心人物。下面是他分享给大家他在贝尔实验室工作的一段经历,这 阅读全文
posted @ 2018-10-24 12:24 尐鱼儿 阅读(293) 评论(0) 推荐(0) 编辑
摘要:在过去的几个月里,我一直在学习用Objective-C编写iOS app,最后我开始理清思绪。这比我想象中要难很多,也花了太长时间。 我经常遇到困难、感到沮丧,修复bug比实际写代码要花太多时间。但是,在我的手机上把玩我从头开发的app有一种让人惊奇的感觉。 用这种方式我学到了很多,除了开发iOS 阅读全文
posted @ 2018-10-24 12:23 尐鱼儿 阅读(142) 评论(0) 推荐(0) 编辑
摘要:回顾2014 Java发生的5件大事 1、2月1日:RedMonk分析师确认并宣布Java是最受欢迎和多样化的语言! 2014年,Java生态圈伴随着引擎的轰鸣起步,随着FOSDEM年会的Free Java会议一路飙升。除此之外,还有很多颇有深度的OpenJDK优秀技术演讲,以及(RedMonk分析 阅读全文
posted @ 2018-10-24 12:23 尐鱼儿 阅读(203) 评论(0) 推荐(0) 编辑
摘要:对技术的态度 对于日新月异的新技术,你是什么态度? 遇到新技术我会去了解,但不会把很大的精力放在这些技术(如:NoSQL,Node.js,等)。这些技术尚不成熟,只需要跟得住就可以了。技术十年以上可能是一个门槛。有人说技术更新换代很快,我一点儿都不觉得是这样想。虽然有不成熟的技术不断地涌出,但是成熟 阅读全文
posted @ 2018-10-24 12:22 尐鱼儿 阅读(411) 评论(0) 推荐(0) 编辑
摘要:码农提高工作效率 俗话说,天下武功,唯快不破。也就是说要练成天下高手的话,出招速度一定要快,这样才能在江湖上立足,不至于掉了脑袋。而程序员要在IT界混出个名堂,也要有高效的工作效率才行。IT行业时时刻刻都产生着新知识、新技术,要想跟上变革肯定要有几把刷子。 而我本人很喜欢各种各样的方式来提高自己的工 阅读全文
posted @ 2018-10-24 12:21 尐鱼儿 阅读(202) 评论(0) 推荐(0) 编辑
摘要:可能会存在一种更快,更简单的编程语言,但就目前来说,根据Stack Overflow的最新统计,“传统”的编程语言依然在赚着大把的钱。在2013年,招聘程序员时,搜索最多的技能关键字是Java,几乎有四分之一的招聘者都在寻找Java开发人员。 在Careers 2.0(译者注:Stack Overf 阅读全文
posted @ 2018-10-24 12:20 尐鱼儿 阅读(119) 评论(0) 推荐(0) 编辑
摘要:最近在培训课期间指导初学者。任务之一就是要大家完成一个类,要求这个类对key为String类型的map执行dwarwle操作。其中一位学员完成的类中,有如下方法: 这段代码总的来说是OK的。该方法将map中每个Dwarable的key和值,以及和它期望被分解的dwarwleKey一同传得给另一个调用 阅读全文
posted @ 2018-10-24 12:20 尐鱼儿 阅读(446) 评论(0) 推荐(0) 编辑
摘要:JDK1.7的发布已经介绍了一些有用的特征,尽管大部分都是一些语法糖,但仍然极大地提高了代码的可读性和质量。其中的一个特征是介绍字面常量数字的下划线。从Java7开始,你就可以在你的Java代码里把长整型数字比如10000000000写成一个更具可读性10_000_000_000。在字面常量数字中加 阅读全文
posted @ 2018-10-24 12:19 尐鱼儿 阅读(1701) 评论(1) 推荐(0) 编辑
摘要:在这篇文章中,我会带着大家一起看一下9个可以帮助我们优化Java性能的工具。有一些我们已经在IDR Solutions中使用了,而另外一些有可能在个人项目中使用。 NetBeans Profiler NetBeans profiler是一个NetBeans IDE插件,主要为NetBeans IDE 阅读全文
posted @ 2018-10-24 12:18 尐鱼儿 阅读(233) 评论(0) 推荐(0) 编辑
摘要:Oracle已将JAVA 9的开发提上日程。OpenJDK上已经出现了关于下一个主版本JAVA 9的改进建议(JEP)。与以往不同,Oracle在这次谈及了一些真正的特性。而早期对于JDK9的声明仅限于“bug修复和一些小的改进”。译者注:有兴趣的同学可以看看JEP 地址如下 http://open 阅读全文
posted @ 2018-10-24 12:17 尐鱼儿 阅读(153) 评论(0) 推荐(0) 编辑
摘要:我们都知道当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁。这些基础也许大家都知道,但是很多人还是搞不清哪个对象才是锁?如果你能正确回答以下问题,那么才算你彻底搞明白了哪个对象才是锁? 静态同步方法问题 如下代码是两个静态同步方法 那么我们来问几个问题 实例同步方法问题 阅读全文
posted @ 2018-10-24 12:15 尐鱼儿 阅读(172) 评论(0) 推荐(0) 编辑
摘要:现在网上一眼望去,有很多关于描述懒惰是优秀程序员品质的博客和帖子,有时候,程序员这个主角也会变成开发人员。在这里我想说一说关于这个程序员的懒惰问题以及讨论一下这是好是坏。 如果你对如何开发软件了如指掌,学东西又很快,并且孜孜不倦地从试验和错误中学习。有什么异常你能立刻采取措施,迅速刷新浏览器,查看方 阅读全文
posted @ 2018-10-24 12:14 尐鱼儿 阅读(216) 评论(0) 推荐(0) 编辑
摘要:感谢大家使用Java学习助手! 打一开始,这应用就是全开源,希望大家自觉遵循开源协议,还Android开发一片净土(国内的情况你懂的) 接下来都不会更频繁更新文章,大家更应该把注意力放在基础的模块那里,认真看完已经不错了。 附录: Java学习助手客户端源码:https://github.com/E 阅读全文
posted @ 2018-10-24 12:13 尐鱼儿 阅读(249) 评论(0) 推荐(0) 编辑
摘要:我猜想许多人都知道访问者设计模式,这种模式在“四人帮”的那本可复用面向对象软件基础的书被描述过。这个模式自身其实一点也不复杂(和以往的其他设计模式一样)。 如上图所示: 我知道这个模式很久了,但是我至今都不需要它。Java通过本地方式处理多态:方法被调用时是基于调用这个方法的对象运行时的类型,而是不 阅读全文
posted @ 2018-10-24 12:10 尐鱼儿 阅读(520) 评论(0) 推荐(0) 编辑
摘要:上下文切换(有时也称做进程切换或任务切换)是指 CPU 从一个进程或线程切换到另一个进程或线程。 进程(有时候也称做任务)是指一个程序运行的实例。在 Linux 系统中,线程就是能并行运行并且与他们的父进程(创建他们的进程)共享同一地址空间(一段内存区域)和其他资源的轻量级的进程。 上下文是指某一时 阅读全文
posted @ 2018-10-24 12:10 尐鱼儿 阅读(634) 评论(0) 推荐(0) 编辑
摘要:关于“Google在Android平台使用Java侵犯知识产权”一案,2014年5月,联邦法院判定Oracle获胜,这个结果完全出人意料,因为这样一来无异于打开了软件开发领域中API使用方式的潘多拉之盒。Android使用的Java API是基于Google自己开发的Dalvik虚拟机,Google 阅读全文
posted @ 2018-10-24 12:09 尐鱼儿 阅读(390) 评论(0) 推荐(0) 编辑
摘要:如何面试一个从事编程工作的开发人员既困难又乏味,幸好还有很多值得参考的指南,比如:《Joel Guerilla Guide to interviewing》,但最后雇佣与否,还得由你自己决定。为了快速地了解他们的编程能力,我想到了一个关于字符串反转的问题,有人用这道题取得不错的效果,这道题的答案有很 阅读全文
posted @ 2018-10-24 12:08 尐鱼儿 阅读(254) 评论(0) 推荐(0) 编辑
摘要:Java是否支持多重继承? 好了,很明显传统意义上Java并没有多继承,所以正确的答案应该是:“没有”或者“有,但是”或者“没有,但是”。单从这点就可以探索出不同的方法来。通常我会问“是否因Java语言的设计者笨到没法实现多重继承”作为我们话题的开始,为什么C++那帮家伙实现了呢?我主要以菱形继承问 阅读全文
posted @ 2018-10-24 12:08 尐鱼儿 阅读(497) 评论(0) 推荐(0) 编辑
摘要:前言 这篇文章中,我想谈一谈得墨忒耳定律(Law of Demeter,缩写LoD)。我觉得这个主题对于写出一手简洁、精心设计和易于维护的代码,是极其重要的。 根据我的经验,看到这条规则被打破,往往意味着我可以嗅到一股糟糕的设计在其中。而依据此定律去编写/重构,会使代码改善,清晰易懂且更易于维护。 阅读全文
posted @ 2018-10-24 12:07 尐鱼儿 阅读(541) 评论(0) 推荐(0) 编辑
摘要:lambda表达式,lambda表达式,还是lambda表达式。一提到Java 8就只能听到这个,但这不过是其中的一个新功能而已,Java 8还有许多新的特性——有一些功能强大的新类或者新的用法,还有一些功能则是早就应该加到Java里了。 这里我准备介绍它的10个我个人认为非常值得了解的新特性。总会 阅读全文
posted @ 2018-10-24 12:07 尐鱼儿 阅读(148) 评论(0) 推荐(0) 编辑
摘要:Java最显著的优势之一就是它的内存管理机制。你只需简单创建对象,然后Java垃圾回收机制便会小心的分配和释放内存。然而,事实并非如此简单,因为在Java应用程序中经常发生内存泄漏。 本教程说明了什么是内存泄漏,为什么会发生,以及如何防止它们。 1.什么是内存泄漏? 内存泄漏的定义: 对象不再被应用 阅读全文
posted @ 2018-10-24 12:06 尐鱼儿 阅读(1339) 评论(0) 推荐(0) 编辑
摘要:没有什么事情比看到一个没有任何说明的@deprecated标注更让人愤怒的事情了。这种做法只能让人困惑,我到底还要不要用这个已经‘废弃’的方法?如果开发者不希望某个方法再被人用的话,就要好好地为@deprecated标注写说明。这篇文章就讨论了正确地使用@deprecated 标注需要遵守的一些规则 阅读全文
posted @ 2018-10-24 12:06 尐鱼儿 阅读(3975) 评论(0) 推荐(0) 编辑
摘要:William F. Buckley.Jr 曾经说过,“保守主义者是那些逆着历史潮流不断喊停的人,其他人都不愿意这么做或者对他们这么做显得没有耐性”。虽然我对此了解不多,但是每次看到有Java开发人员做以下事情或者我自己被迫做这些事情时,总想跳出来叫停。 遍历结果集并构造对象 如果你是个时髦的开发者 阅读全文
posted @ 2018-10-24 12:05 尐鱼儿 阅读(174) 评论(0) 推荐(0) 编辑
摘要:最近一直在帮忙调试一些让人头大的bug问题,这才意识到如何记录异常日志对于简化调试的重要性,我总结了几点记录异常日志的最佳实践发表在此。 1、记录技术性异常而不是用户异常 用户异常(如:“登录用户名已经存在”)除了显示给用户,要么什么都别管,要么根本就不是异常(“用户尚未认证”)。技术性异常(如:“ 阅读全文
posted @ 2018-10-24 12:03 尐鱼儿 阅读(880) 评论(0) 推荐(0) 编辑
摘要:我现在的老板使用一个在线测试系统来筛选在线申请职位的求职者。测试的第一个问题很浅显,仅仅是为了让求职者熟悉一下这个系统的提交和测试代码的流程。问题是这样的,写一个将标准输入拷贝到标准输出的流程。求职者可以使用任何他们喜欢的编程语言来实现这个程序。 有时候我们也会遇到在这个测试中得零分的求职者。当我看 阅读全文
posted @ 2018-10-24 12:01 尐鱼儿 阅读(390) 评论(0) 推荐(0) 编辑
摘要:作为Eclipse基金组织的执行董事,我需要经常审阅每一个新提交的Eclipse项目协议书。作为Eclipse的一分子,我很乐意与加入我们团队的新开发人员互动。这也是我工作中的乐趣之一。2013年,我见证了很多新项目加入Eclipse。在这篇文章中我将着重强调其中一些我觉得特别有趣的项目。然后我将根 阅读全文
posted @ 2018-10-24 12:00 尐鱼儿 阅读(413) 评论(0) 推荐(0) 编辑
摘要:本章的大多数谜题都是颇具挑战性的。但是这个不是。下面这个程序会打印出什么呢?如果你相信的话,前2个程序被报告为系统的缺陷[Bug 4157460 4763901]: 如果你受够这些东西了,那么你不需要知道这些愚蠢谜题的详细解释,所以让我们把它们变得又短又甜: 1,这个程序会打印出1。这是由多余的标号 阅读全文
posted @ 2018-10-24 11:49 尐鱼儿 阅读(145) 评论(0) 推荐(0) 编辑
摘要:下面的shuffle方法声称它将公平的打乱它的输入数组的次序。换句话说,假设其使用的伪随机数发生器是公正的,它将会以均等的概率产生各种排列的数组。它真的兑现了它的诺言吗?如果没有,你将如何订正它呢? 看看这个shuffle方法,它并没有什么明显的错误。它遍历了整个数组,将随机抽取的元素互换位置。这会 阅读全文
posted @ 2018-10-24 11:48 尐鱼儿 阅读(165) 评论(0) 推荐(0) 编辑
摘要:下面这个程序使用一个匿名类执行了一个并不自然的动作。它会打印出什么呢? 根据一个肤浅的分析会判断该程序不能通过编译。reproduce方法中的匿名类试图调用Twisted类中的私有方法name。一个类不能调用另一个类的私有方法,是吗?如果你试图编译这个程序,你会发现它可以成功地通过编译。在顶层的类型 阅读全文
posted @ 2018-10-24 11:47 尐鱼儿 阅读(158) 评论(0) 推荐(0) 编辑
摘要:下面这个谜题测试了你关于二进制兼容性(binary compatibility)的知识:当你改变了某个类所依赖的另外一个类时,第一个类的行为会发生什么改变呢?更特殊的是,假设你编译的是如下的2个类。第一个作为一个客户端,第二个作为一个库类,会怎么样呢: 现在假设你像下面这样改变了那个库类并且重编译了 阅读全文
posted @ 2018-10-24 11:47 尐鱼儿 阅读(101) 评论(0) 推荐(0) 编辑
摘要:下面的程序实际上不会做任何事情。更糟的是,它连编译也通不过。为什么呢?又怎么来订正它呢? 这个程序看上去简单得不可能有错误,但是如果你尝试编译它,就会得到下面这个有用的错误消息: 好吧,可能这个消息不那么有用,但是我们还是从此入手。问题在于编译器产生的缺省的Inner2的构造器为它的super调用找 阅读全文
posted @ 2018-10-24 11:46 尐鱼儿 阅读(223) 评论(0) 推荐(0) 编辑
摘要:这个程序创建了一个对象并且检查它是否遵从某个类的不变规则(invariant)。然后该程序序列化这个对象,之后将其反序列化,然后再次检查反序列化得到的副本是否也遵从这个规则。它会遵从这个规则吗?如果不是的话,又是为什么呢? 程序中除了使用了序列化之外,看起来是很简单的。子类Sub覆写了hashCod 阅读全文
posted @ 2018-10-24 11:46 尐鱼儿 阅读(191) 评论(0) 推荐(0) 编辑
摘要:下面的程序由一个单一的类构成,该类表示一对类型相似的对象。它大量使用了5.0版的特性,包括泛型、自动包装、变长参数(varargs)和for-each循环。关于这些特性的介绍,请查看http://java.sun.com/j2se/5.0/docs/guide/language[Java-5.0]。 阅读全文
posted @ 2018-10-24 11:45 尐鱼儿 阅读(151) 评论(0) 推荐(0) 编辑
摘要:和前一个谜题一样,本谜题也大量使用了泛型。我们从前面的错误中吸取教训,这次不再使用原生类型了。这个程序实现了一个简单的链表数据结构。main程序构建了一个包含2个元素的list,然后输出它的内容。那么,这个程序会打印出什么呢? 又是一个看上去相当简单的程序。新元素被添加到链表的表头,而dump方法也 阅读全文
posted @ 2018-10-24 11:45 尐鱼儿 阅读(110) 评论(0) 推荐(0) 编辑
摘要:在数学中,等号(=)定义了一种真实的数之间的等价关系(equivalence relation)。这种等价关系将一个集合分成许多等价类(equivalence class),每个等价类由所有相互相等的值组成。其他的等价关系包括有所有三角形集合上的“全等”关系和所有书的集合上的“有相同页数”的关系等。 阅读全文
posted @ 2018-10-24 11:43 尐鱼儿 阅读(159) 评论(0) 推荐(0) 编辑
摘要:你能否举出这样一个合法的Java表达式,只要对它的某个子表达式加上括号就可以使其成为不合法的表达式,而添加的括号只是为了注解未加括号时赋值的顺序? 插入一对用来注解现有赋值顺序的括号对程序的合法性似乎是应该没有任何影响的。事实上,绝大多数情况下确实是没有影响的。但是,在两种情况下,插入一对看上去没有 阅读全文
posted @ 2018-10-24 11:41 尐鱼儿 阅读(126) 评论(0) 推荐(0) 编辑
摘要:下面这个可怜的小类实在是太懒了,甚至于都不愿意用通常的方法进行初始化,所以它求助于后台线程。这个程序会打印什么呢?每次你运行它的时候都会打印出相同的东西吗? 虽然有点奇怪,但是这个程序看起来很直观的。静态域 initialized 初始时被设为 false。然后主线程创建了一个后台线程,该线程的 r 阅读全文
posted @ 2018-10-24 11:14 尐鱼儿 阅读(235) 评论(0) 推荐(0) 编辑
摘要:在下面这个程序中,一个线程试图中断自己,然后检查中断是否成功。它会打印什么呢? 虽然一个线程中断自己不是很常见,但这也不是没有听说过的。当一个方法捕捉到了一个 InterruptedException 异常,而且没有做好处理这个异常的准备时,那么这个方法通常会将该异常重新抛出(rethrow)。但是 阅读全文
posted @ 2018-10-24 11:12 尐鱼儿 阅读(131) 评论(0) 推荐(0) 编辑
摘要:从前有一个人,他认为世上只有一只不寻常的狗,所以他写出了如下的类,将它作为一个单件(singleton)[Gamma95]: 结果证明这个人的做法是错误的。你能够在这个类的外部不使用反射来创建出第2 个 Dog 实例吗?这个类可能看起来像一个单件,但它并不是。问题在于,Dog 扩展了 Excepti 阅读全文
posted @ 2018-10-24 11:10 尐鱼儿 阅读(134) 评论(0) 推荐(0) 编辑
摘要:这一章的许多谜题都涉及到了多线程,而这个谜题涉及到了多进程。如果你用一行命令行带上参数 slave 去运行这个程序,它会打印什么呢?如果你使用的命令行不带任何参数,它又会打印什么呢? 如果你使用参数 slave 来运行该程序,它就会打印出那首激动人心的名为”99Bottles of Beer on 阅读全文
posted @ 2018-10-24 02:14 尐鱼儿 阅读(148) 评论(0) 推荐(0) 编辑
摘要:下面这个程序看起来是在用一种特殊的方法做一件普通的事。那么,它会打印出什么呢? 尽管这个程序有点奇怪,但是我们没有理由怀疑它会产生不正确的行为。它将“Hello World”写入了 System.out,每次写一个字符。你可能会意识到 write方法只会使用其输入参数的低位字节(lower-orde 阅读全文
posted @ 2018-10-24 02:13 尐鱼儿 阅读(106) 评论(0) 推荐(0) 编辑
摘要:下面这个程序通过打印一个由反射创建的对象来产生输出。那么它会打印出什么呢? 这个程序看起来是最普通的 Hello World 程序的又一个特殊的变体。Outer 中的main 方法创建了一个 Outer 实例,并且调用了它的 greetWorld 方法,该方法以字符串形式打印了通过反射创建的一个新的 阅读全文
posted @ 2018-10-24 02:11 尐鱼儿 阅读(162) 评论(0) 推荐(0) 编辑
摘要:下面的这个类模拟了一个家庭宠物的生活。main 方法创建了一个 Pet 实例,用它来表示一只名叫 Fido 的狗,然后让它运行。虽然绝大部分的狗都在后院里奔跑(run),这只狗却是在后台运行(run)。那么,这个程序会打印出什么呢? main 方法创建了一个用来表示 Fido 的 Pet 实例,并且 阅读全文
posted @ 2018-10-24 02:10 尐鱼儿 阅读(152) 评论(0) 推荐(0) 编辑
摘要:这个谜题举例说明了一个关于反射的简单应用。这个程序会打印出什么呢? 这个程序首先创建了一个只包含单个元素的集合(set),获得了该集合上的迭代器,然后利用反射调用了迭代器的 hasNext 方法,最后打印出此该方法调用的结果。由于该迭代器尚未返回该集合中那个唯一的元素,hasNext 方法应该返回t 阅读全文
posted @ 2018-10-24 02:09 尐鱼儿 阅读(154) 评论(0) 推荐(0) 编辑
摘要:下面的这段程序模拟了一个小车间。程序首先启动了一个工人线程,该线程在停止时间到来之前会一直工作(至少是假装在工作),然后程序安排了一个定时器任务(timer task)用来模拟一个恶毒的老板,他会试图阻止停止时间的到来。最后,主线程作为一个善良的老板会告诉工人停止时间到了,并且等待工人停止工作。那么 阅读全文
posted @ 2018-10-24 02:08 尐鱼儿 阅读(138) 评论(0) 推荐(0) 编辑
摘要:下面的程序全部是由同步化(synchronized)的静态方法组成的。那么它会打印出什么呢?在你每次运行这段程序的时候,它都能保证会打印出相同的内容吗? 在多线程程序中,通常正确的观点是程序每次运行的结果都有可能发生变化,但是上面这段程序总是打印出相同的内容。在一个同步化的静态方法执行之前,它会获取 阅读全文
posted @ 2018-10-24 02:02 尐鱼儿 阅读(131) 评论(0) 推荐(0) 编辑
摘要:这个程序的行为在 1.4 版和 5.0 版的 Java 平台上会有些变化。这个程序在这些版本上会分别做些什么呢?(如果你只能访问 5.0 版本的平台,那么你可以在编译的时候使用-source 1.4标记,以此来模拟 1.4 版的行为。) 该程序看起来根本没有使用 5.0 版的任何新特性,因此很难看出 阅读全文
posted @ 2018-10-24 01:58 尐鱼儿 阅读(234) 评论(0) 推荐(0) 编辑
摘要:下面的程序是不完整的,它缺乏对 Enigma 的声明,这个类扩展自 java.lang.Object。请为Enigma 提供一个声明,它可以使该程序打印 false: 噢,还有一件事:你不能覆写 equals 方法。乍一看,这似乎不可能实现。因为 Object.equals 方法将测试对象的同一性, 阅读全文
posted @ 2018-10-24 01:56 尐鱼儿 阅读(176) 评论(0) 推荐(0) 编辑
摘要:私有成员,即私有方法、域和类型这些概念的幕后思想是它们只是实现细节:一个类的实现者可以随意地添加一个新的私有成员,或者修改和移除一个旧的私有成员,而不需要担心对该类的客户造成任何损害。换句话说,私有成员被包含它们的类完全封装了。遗憾的是,在这种严密的盔甲保护中仍然存在细小的裂缝。例如,序列化就可以打 阅读全文
posted @ 2018-10-24 01:55 尐鱼儿 阅读(129) 评论(0) 推荐(0) 编辑
摘要:本谜题旨在检验当你试图隐藏一个 final 域时将要发生的事情。下面的程序将做些什么呢? 因为在 Jeopardy 中的 PRIZE 域被声明为是 public 和 final 的,你可能会认为Java 语言将阻止你在子类中重用该域名。毕竟,final 类型的方法不能被覆写或隐藏。如果你尝试着运行该 阅读全文
posted @ 2018-10-24 01:54 尐鱼儿 阅读(160) 评论(0) 推荐(0) 编辑
摘要:在 5.0 版中,Java 平台引入了大量的可以使操作数组变得更加容易的工具。下面这个谜题使 用了变量参数、自动包装、静态导入(请查看 http://java.sun.com/j2se/5.0/docs/guide/language[Java-5.0])以及便捷方法 Arrays.toString( 阅读全文
posted @ 2018-10-24 01:53 尐鱼儿 阅读(117) 评论(0) 推荐(0) 编辑
摘要:下面这个程序设计在不同的包中的两个类的交互,main 方法位于 hack.TypeIt 中。那么,这个程序会打印什么呢? 本谜题看起来很直观。Hack.TypeIt 的 main 方法对 TypeIt.ClickIt 类实例化,然后调用其 doIt 方法,该方法是从 CodeTalk 继承而来。接着 阅读全文
posted @ 2018-10-24 01:52 尐鱼儿 阅读(118) 评论(0) 推荐(0) 编辑
摘要:假设你不能修改前一个谜题(谜题 68)中的 X 和 C 这两个类。你能否编写一个类,其 main方法将读取 X.Y 类中的 Z 域的值,然后打印它。注意,不能使用反射。本谜题初看起来是不可能实现的。毕竟,X.Y 类被具有相同名字的一个域给遮掩了,因此对其命名的尝试将引用到该域上。事实上,我们是可以引 阅读全文
posted @ 2018-10-24 01:51 尐鱼儿 阅读(121) 评论(0) 推荐(0) 编辑
摘要:下面的程序在相同的范围内具有两个名字相同的声明,并且没有任何明显的方式可以在它们二者之间做选择。这个程序会打印 Black 吗?它会打印 White 吗?甚至,它是合法的吗? 没有任何显而易见的方法可以确定该程序应该打印 Black 还是 White。编译器通常会拒绝模棱两可的程序,而这个程序看起来 阅读全文
posted @ 2018-10-24 01:50 尐鱼儿 阅读(150) 评论(0) 推荐(0) 编辑
摘要:一个名字可以被用来引用位于不同包内的多个类。下面的程序就是在探究当你重用了一个平台类的名字时,会发生什么。你认为它会做些什么呢?尽管这个程序属于那种让你通常一看到就会感到尴尬的程序,但是你还是应该继续下去,把门锁上,把百叶窗拉上,然后试试看: 如果说这个程序有点让人讨厌的话,它看起来还是相当简单的。 阅读全文
posted @ 2018-10-24 01:49 尐鱼儿 阅读(112) 评论(0) 推荐(0) 编辑
摘要:在下面的程序中,子类的一个域具有与超类的一个域相同的名字。那么,这个程序会打印出什么呢? 对该程序的表面分析可能会认为它应该打印 Derived,因为这正是存储在每一个 Derived 实例的 className 域中的内容。 更深入一点的分析会认为 Derived 类不能编译,因为 Derived 阅读全文
posted @ 2018-10-24 01:47 尐鱼儿 阅读(130) 评论(0) 推荐(0) 编辑
摘要:下面的程序使用定制的比较器,对一个由随机挑选的Integer实例组成的数组进行排序,然后打印了一个描述了数组顺序的单词。回忆一下,Comparator接口只有一个方法,即compare,它在第一个参数小于第二个参数时返回一个负数,在两个参数相等时返回0,在第一个参数大于第二个参数时返回一个整数。这个 阅读全文
posted @ 2018-10-24 01:39 尐鱼儿 阅读(214) 评论(0) 推荐(0) 编辑
摘要:下面的程序将生成整数对3取余的柱状图,那么,它将打印出什么呢? 该程序首先初始化int数组histogram,其每一个位置都为对3取余的一个数值而准备(0、1和2),所有这三个位置都被初始化为0。然后,该程序在所有232个int数值上遍历变量i,使用的是在谜题26中介绍的惯用法。因为整数取余操作(% 阅读全文
posted @ 2018-10-24 01:37 尐鱼儿 阅读(144) 评论(0) 推荐(0) 编辑
摘要:下面的程序除了是面向对象的这一点之外,与前一个非常相似。因为从前一个程序中已经吸取了教训,这个程序使用了一个通用目的的Map实现,即一个HashMap,来替代前一个程序的IdentityHashMap。那么,这个程序会打印出什么呢? 这个程序看起来很直观,其main方法通过调用无参数的构造器创建了一 阅读全文
posted @ 2018-10-24 01:36 尐鱼儿 阅读(110) 评论(0) 推荐(0) 编辑
摘要:下面的程序将两个映射关系放置到了一个映射表中,然后打印它们的尺寸。那么,它会打印出什么呢? 对该程序的一种幼稚的分析认为,它应该打印1。该程序虽然将两个映射关系放置到了映射表中,但是它们具有相同的键(Mickey)。这是一个映射表,不是一个多重映射表,所以棒球传奇人物(Mickey Mantle)应 阅读全文
posted @ 2018-10-24 01:34 尐鱼儿 阅读(129) 评论(0) 推荐(0) 编辑
摘要:下面的程序演练了Date和Calendar类的某些基本特性,它会打印出什么呢? 该程序创建了一个Calendar实例,它应该表示的是1999年的除夕夜,然后该程序打印年份和日。看起来该程序应该打印1999 31,但是它没有;它打印的是2000 1。难道这是致命的Y2K(千年虫)问题吗? 不,事情比我 阅读全文
posted @ 2018-10-24 01:33 尐鱼儿 阅读(726) 评论(0) 推荐(0) 编辑
摘要:现在该轮到你写一些代码了。下面的谜题每一个都可以用一个方法来解决,这些方法的方法体都只包含一行代码。各就各位,预备,编码! A.编写一个方法,它接受一个包含元素的List,并返回一个新的List,它以相同的顺序包含相同的元素,只不过它把第二次以及后续出现的重复元素都剔除了。例如,如果你传递了一个包含 阅读全文
posted @ 2018-10-24 01:32 尐鱼儿 阅读(111) 评论(0) 推荐(0) 编辑
摘要:下面的程序在计算一个int数组中的元素两两之间的差,将这些差置于一个集合中,然后打印该集合的尺寸大小。那么,这个程序将打印出什么呢? 外层循环迭代数组中的每一个元素,而内层循环从外层循环当前迭代到的元素开始迭代到数组中的最后一个元素。因此,这个嵌套的循环将遍历数组中每一种可能的两两组合。(元素可以与 阅读全文
posted @ 2018-10-24 01:30 尐鱼儿 阅读(220) 评论(0) 推荐(0) 编辑
摘要:本谜题试图从前一个谜题中吸取教训。下面的程序还是由一个Name类和一个main方法构成,这个main方法还是将一个名字放置到一个散列集合中,然后检查该集合是否包含了这个名字。然而,这一次Name类已经覆写了hashCode方法。那么下面的程序将打印出什么呢? 与谜题57一样,该程序的main方法创建 阅读全文
posted @ 2018-10-24 01:29 尐鱼儿 阅读(109) 评论(0) 推荐(0) 编辑
摘要:下面的程序包含了一个简单的不可变类,它表示一个名字,其main方法将一个名字置于一个集合中,并检查该集合是否确实包含了该名字。那么,这个程序到底会打印出什么呢? 一个Name实例由一个姓和一个名构成。两个Name实例在通过equals方法进行计算时,如果它们的姓相等且名也相等,则这两个Name实例相 阅读全文
posted @ 2018-10-24 01:28 尐鱼儿 阅读(146) 评论(0) 推荐(0) 编辑
摘要:作为一项热身活动,我们来测试一下你对BigInteger的了解程度。下面这个程序将打印出什么呢? 你可能会认为这个程序会打印出555000。毕竟,它将total设置为用BigInteger表示的0,然后将5,000、50,000和500,000加到了这个变量上。如果你运行该程序,你就会发现它打印的不 阅读全文
posted @ 2018-10-24 01:23 尐鱼儿 阅读(172) 评论(0) 推荐(0) 编辑
摘要:下面仍然是经典的Hello World程序的另一个变种。那么,这个变种将打印什么呢? 这个程序看起来似乎应该抛出NullPointerExceptioin异常,因为其main方法是在常量null上调用greet方法,而你是不可以在null上调用方法的,对吗?嗯,某些时候是可以的。如果你运次该程序,就 阅读全文
posted @ 2018-10-24 01:21 尐鱼儿 阅读(145) 评论(0) 推荐(0) 编辑
摘要:某些时候,对于一个类来说,跟踪其创建出来的实例个数会非常用有,其典型实现是通过让它的构造器递增一个私有静态域来完成的。在下面的程序中,Creature类展示了这种技巧,而Creator类对其进行了操练,将打印出已经创建的Creature实例的数量。那么,这个程序会打印出什么呢? 这是一个捉弄人的问题 阅读全文
posted @ 2018-10-24 01:21 尐鱼儿 阅读(210) 评论(0) 推荐(0) 编辑
摘要:现在该轮到你写一些代码了。假设你有一个称为Thing的库类,它唯一的构造器将接受一个int参数: Thing实例没有提供任何可以获取其构造器参数的值的途径。因为Thing是一个库类,所以你不具有访问其内部的权限,因此你不能修改它。 假设你想编写一个称为MyThing的子类,其构造器将通过调用Some 阅读全文
posted @ 2018-10-24 01:20 尐鱼儿 阅读(136) 评论(0) 推荐(0) 编辑
摘要:下面的程序在一个类中计算并缓存了一个合计数,并且在另一个类中打印了这个合计数。那么,这个程序将打印出什么呢?这里给一点提示:你可能已经回忆起来了,在代数学中我们曾经学到过,从1到n的整数总和是n(n+1)/2。 草草地看一遍,你可能会认为这个程序从1加到了100,但实际上它并没有这么做。再稍微仔细地 阅读全文
posted @ 2018-10-24 00:18 尐鱼儿 阅读(150) 评论(0) 推荐(0) 编辑
摘要:下面这个程序有两个不可变的值类(value class),值类即其实例表示值的类。第一个类用整数坐标来表示平面上的一个点,第二个类在此基础上添加了一点颜色。主程序将创建和打印第二个类的一个实例。那么,下面的程序将打印出什么呢? main方法创建并打印了一个ColorPoint实例。println方法 阅读全文
posted @ 2018-10-23 23:50 尐鱼儿 阅读(379) 评论(0) 推荐(0) 编辑
摘要:假如小报是可信的,那么摇滚之王“猫王”就会直到今天仍然在世。下面的程序用来估算猫王当前的腰带尺寸,方法是根据在公开演出中所观察到的他的体态发展趋势来进行投射。该程序中使用了Calendar.getInstance().get(Calendar.YEAR)这个惯用法,它返回当前的日历年份。那么,该程序 阅读全文
posted @ 2018-10-23 23:49 尐鱼儿 阅读(139) 评论(0) 推荐(0) 编辑
摘要:本谜题要测试你对Java的两个最经典的操作符:instanceof和转型的理解程度。下面的三个程序每一个都会做些什么呢? 第一个程序,Type1,展示了instanceof操作符应用于一个空对象引用时的行为。尽管null对于每一个引用类型来说都是其子类型,但是instanceof操作符被定义为在其左 阅读全文
posted @ 2018-10-23 23:49 尐鱼儿 阅读(151) 评论(0) 推荐(0) 编辑
摘要:下面的程序对巴辛吉小鬣狗和其它狗之间的行为差异进行了建模。如果你不知道什么是巴辛吉小鬣狗,那么我告诉你,这是一种产自非洲的小型卷尾狗,它们从来都不叫唤。那么,这个程序将打印出什么呢? 随意地看一看,好像该程序应该只打印一个woof。毕竟,Basenji扩展自Dog,并且它的bark方法定义为什么也不 阅读全文
posted @ 2018-10-23 23:48 尐鱼儿 阅读(188) 评论(0) 推荐(0) 编辑
摘要:下面的程序使用了一个Counter类来跟踪每一种家庭宠物叫唤的次数。那么该程序会打印出什么呢? 我们听到两声狗叫和三声猫叫——肯定是好一阵喧闹——因此,程序应该打印2 woofs and 3 meows,不是吗?不:它打印的是5 woofs and 5 meows。所有这些多出来的吵闹声是从哪里来的 阅读全文
posted @ 2018-10-23 23:46 尐鱼儿 阅读(165) 评论(0) 推荐(0) 编辑
摘要:本谜题呈现给你了两个容易令人混淆的构造器。main方法调用了一个构造器,但是它调用的到底是哪一个呢?该程序的输出取决于这个问题的答案。那么它到底会打印出什么呢?甚至它是否是合法的呢? 传递给构造器的参数是一个空的对象引用,因此,初看起来,该程序好像应该调用参数类型为Object的重载版本,并且将打印 阅读全文
posted @ 2018-10-23 23:45 尐鱼儿 阅读(243) 评论(0) 推荐(0) 编辑
摘要:本谜题将测试你对递归的了解程度。下面的程序将做些什么呢? 要不是有try-finally语句,该程序的行为将非常明显:workHard方法递归地调用它自身,直到程序抛出StackOverflowError,在此刻它以这个未捕获的异常而终止。但是,try-finally语句把事情搞得复杂了。当它试图抛 阅读全文
posted @ 2018-10-23 23:43 尐鱼儿 阅读(123) 评论(0) 推荐(0) 编辑
摘要:下面的程序循环遍历了一个int类型的数组序列,并且记录了满足某个特定属性的数组个数。那么,该程序会打印出什么呢? 该程序用thirdElementIsThree方法测试了tests数组中的每一个元素。遍历这个数组的循环显然是非传统的循环:它不是在循环变量等于数组长度的时候终止,而是在它试图访问一个并 阅读全文
posted @ 2018-10-23 23:42 尐鱼儿 阅读(146) 评论(0) 推荐(0) 编辑
摘要:在JDK1.2中,Thread.stop、Thread.suspend以及其他许多线程相关的方法都因为它们不安全而不推荐使用了[ThreadStop]。下面的方法展示了你用Thread.stop可以实现的可怕事情之一。 这个讨厌的小方法所做的事情正是throw语句要做的事情,但是它绕过了编译器的所有 阅读全文
posted @ 2018-10-23 23:42 尐鱼儿 阅读(105) 评论(0) 推荐(0) 编辑
摘要:请考虑下面的两个类: 如果你编译所有这三个类,然后在运行Strange1和Strange2之前删除Missing.class文件,你就会发现这两个程序的行为有所不同。其中一个抛出了一个未被捕获的NoClassDefFoundError异常,而另一个却打印出了Got it! 到底哪一个程序具有哪一种行 阅读全文
posted @ 2018-10-23 23:42 尐鱼儿 阅读(111) 评论(0) 推荐(0) 编辑
摘要:下面的方法将一个文件拷贝到另一个文件,并且被设计为要关闭它所创建的每一个流,即使它碰到I/O错误也要如此。遗憾的是,它并非总是能够做到这一点。为什么不能呢,你如何才能订正它呢? 这个程序看起来已经面面俱到了。其流域(in和out)被初始化为null,并且新的流一旦被创建,它们马上就被设置为这些流域的 阅读全文
posted @ 2018-10-23 23:40 尐鱼儿 阅读(128) 评论(0) 推荐(0) 编辑
摘要:尽管在一个方法声明中看到一个throws子句是很常见的,但是在构造器的声明中看到一个throws子句就很少见了。下面的程序就有这样的一个声明。那么,它将打印出什么呢? main方法调用了Reluctant构造器,它将抛出一个异常。你可能期望catch子句能够捕获这个异常,并且打印I told you 阅读全文
posted @ 2018-10-23 23:39 尐鱼儿 阅读(144) 评论(0) 推荐(0) 编辑
摘要:下面的程序在寻常的Hello world程序中添加了一段不寻常的曲折操作。那么,它将会打印出什么呢? 这个程序包含两个println语句:一个在try语句块中,另一个在相应的finally语句块中。try语句块执行它的println语句,并且通过调用System.exit来提前结束执行。在此时,你可 阅读全文
posted @ 2018-10-23 23:38 尐鱼儿 阅读(162) 评论(0) 推荐(0) 编辑
摘要:本谜题测试的是你对某些规则的掌握程度,这些规则用于声明从方法中抛出并被catch语句块所捕获的异常。下面的三个程序每一个都会打印些什么?不要假设它们都可以通过编译: 第一个程序,Arcane1,展示了被检查异常的一个基本原则。它看起来应该是可以编译的:try子句执行I/O,并且catch子句捕获IO 阅读全文
posted @ 2018-10-23 23:37 尐鱼儿 阅读(131) 评论(0) 推荐(0) 编辑
摘要:本谜题中的程序所建模的系统,将尝试着从其环境中读取一个用户ID,如果这种尝试失败了,则缺省地认为它是一个来宾用户。该程序的作者将面对有一个静态域的初始化表达式可能会抛出异常的情况。因为Java不允许静态初始化操作抛出被检查异常,所以初始化必须包装在try-finally语句块中。那么,下面的程序会打 阅读全文
posted @ 2018-10-23 23:37 尐鱼儿 阅读(112) 评论(0) 推荐(0) 编辑
摘要:下面这个可怜的小程序并不能很好地做出其自己的决定。它的decision方法将返回true,但是它还返回了false。那么,它到底打印的是什么呢?甚至,它是合法的吗? 你可能会认为这个程序是不合法的。毕竟,decision方法不能同时返回true和false。如果你尝试一下,就会发现它编译时没有任何错 阅读全文
posted @ 2018-10-23 23:36 尐鱼儿 阅读(136) 评论(0) 推荐(0) 编辑
摘要:下面的程序在模仿一个简单的时钟。它的循环变量表示一个毫秒计数器,其计数值从0开始直至一小时中包含的毫秒数。循环体以定期的时间间隔对一个分钟计数器执行增量操作。最后,该程序将打印分钟计数器。那么它会打印出什么呢? 在这个程序中的循环是一个标准的惯用for循环。它步进毫秒计数器(ms),从0到一小时中的 阅读全文
posted @ 2018-10-23 23:35 尐鱼儿 阅读(178) 评论(0) 推荐(0) 编辑
摘要:与谜题26和27中的程序一样,下面的程序有一个单重的循环,它记录迭代的次数,并在循环终止时打印这个数。那么,这个程序会打印出什么呢? 表面的分析也许会认为这个程序将打印50,毕竟,循环变量(f)被初始化为2,000,000,000,而终止值比初始值大50,并且这个循环具有传统的“半开”形式:它使用的 阅读全文
posted @ 2018-10-23 23:33 尐鱼儿 阅读(281) 评论(0) 推荐(0) 编辑
摘要:请提供一个对i的声明,将下面的循环转变为一个无限循环。这个循环不需要使用任何5.0版的特性: 这仍然是一个循环。在布尔表达式(i != 0 && i == -i)中,一元减号操作符作用于i,这意味着它的类型必须是数字型的:一元减号操作符作用于一个非数字型操作数是非法的。因此,我们要寻找一个非0的数字 阅读全文
posted @ 2018-10-23 23:32 尐鱼儿 阅读(245) 评论(0) 推荐(0) 编辑
摘要:请提供一个对i的声明,将下面的循环转变为一个无限循环: 与前一个谜题不同,你必须在你的答案中不使用浮点数。换句话说,你不能把i声明为double或float类型的。 与前一个谜题一样,这个谜题初看起来是不可能实现的。毕竟,一个数字总是等于它自身加上0,你被禁止使用浮点数,因此不能使用NaN,而在整数 阅读全文
posted @ 2018-10-23 23:31 尐鱼儿 阅读(129) 评论(0) 推荐(0) 编辑
摘要:请提供一个对i的声明,将下面的循环转变为一个无限循环: 回想一下,>>>=是对应于无符号右移操作符的赋值操作符。0被从左移入到由移位操作而空出来的位上,即使被移位的负数也是如此。 这个循环比前面三个循环要稍微复杂一点,因为其循环体非空。在其循环体中,i的值由它右移一位之后的值所替代。为了使移位合法, 阅读全文
posted @ 2018-10-23 23:31 尐鱼儿 阅读(109) 评论(0) 推荐(0) 编辑
摘要:请提供一个对i的声明,将下面的循环转变为一个无限循环: 噢,不,不要再给我看起来不可能的循环了!如果i <= j 并且 j <= i,i不是肯定等于j吗?这一属性对实数肯定有效。事实上,它是如此地重要,以至于它有这样的定义:实数上的≤关系是反对称的。Java的<=操作符在5.0版之前是反对称的,但是 阅读全文
posted @ 2018-10-23 23:31 尐鱼儿 阅读(224) 评论(0) 推荐(0) 编辑
摘要:请提供一个对i的声明,将下面的循环转变为一个无限循环: 这个循环可能比前一个还要使人感到困惑。不管在它前面作何种声明,它看起来确实应该立即终止。一个数字总是等于它自己,对吗? 对,但是IEEE 754浮点算术保留了一个特殊的值用来表示一个不是数字的数量[IEEE 754]。这个值就是NaN(“不是一 阅读全文
posted @ 2018-10-23 23:30 尐鱼儿 阅读(207) 评论(0) 推荐(0) 编辑
摘要:下面的谜题以及随后的五个谜题对你来说是扭转了局面,它们不是向你展示某些代码,然后询问你这些代码将做些什么,它们要让你去写代码,但是数量会很少。这些谜题被称为“循环者(looper)”。你眼前会展示出一个循环,它看起来应该很快就终止的,而你的任务就是写一个变量声明,在将它作用于该循环之上时,使得该循环 阅读全文
posted @ 2018-10-23 23:28 尐鱼儿 阅读(197) 评论(0) 推荐(0) 编辑
摘要:与谜题26中的程序一样,下面的程序也包含了一个记录在终止前有多少次迭代的循环。与那个程序不同的是,这个程序使用的是左移操作符(<<)。你的任务照旧是要指出这个程序将打印什么。当你阅读这个程序时,请记住 Java 使用的是基于2的补码的二进制算术运算,因此-1在任何有符号的整数类型中(byte、sho 阅读全文
posted @ 2018-10-23 23:27 尐鱼儿 阅读(151) 评论(0) 推荐(0) 编辑
摘要:下面的程序计算了一个循环的迭代次数,并且在该循环终止时将这个计数值打印了出来。那么,它打印的是什么呢? 如果你没有非常仔细地查看这个程序,你可能会认为它将打印100,因为END比START大100。如果你稍微仔细一点,你可能会发现该程序没有使用典型的循环惯用法。大多数的循环会在循环索引小于终止值时持 阅读全文
posted @ 2018-10-23 23:26 尐鱼儿 阅读(149) 评论(0) 推荐(0) 编辑
摘要:下面的程序对一个变量重复地进行增量操作,然后打印它的值。那么这个值是什么呢? 乍一看,这个程序可能会打印100。毕竟,它对j做了100次增量操作。可能会令你感到有些震惊,它打印的不是100而是0。所有的增量操作都无影无踪了,为什么? 就像本谜题的题目所暗示的,问题出在了执行增量操作的语句上: 大概该 阅读全文
posted @ 2018-10-23 23:25 尐鱼儿 阅读(171) 评论(0) 推荐(0) 编辑
摘要:下面的程序循环遍历byte数值,以查找某个特定值。这个程序会打印出什么呢? 这个循环在除了Byte.MAX_VALUE之外所有的byte数值中进行迭代,以查找0x90。这个数值适合用byte表示,并且不等于Byte.MAX_VALUE,因此你可能会想这个循环在该迭代会找到它一次,并将打印出Joy!。 阅读全文
posted @ 2018-10-23 23:24 尐鱼儿 阅读(145) 评论(0) 推荐(0) 编辑
摘要:下面的程序将打印一个单词,其第一个字母是由一个随机数生成器来选择的。请描述该程序的行为: 乍一看,这个程序可能会在一次又一次的运行中,以相等的概率打印出Pain,Gain或 Main。看起来该程序会根据随机数生成器所选取的值来选择单词的第一个字母:0选M,1选P,2选G。谜题的题目也许已经给你提供了 阅读全文
posted @ 2018-10-23 23:22 尐鱼儿 阅读(193) 评论(0) 推荐(0) 编辑
摘要:下面的程序所要做的事情正是前一个谜题所做的事情,但是它没有假设斜杠符号就是分隔文件名组成部分的符号。相反,该程序使用的是java.io.File.separator,它被指定为一个公共的String域,包含了平台相关的文件名分隔符。那么,这个程序会打印出其正确的、平台相关的类文件名吗? 这个程序根据 阅读全文
posted @ 2018-10-23 23:21 尐鱼儿 阅读(147) 评论(0) 推荐(0) 编辑
摘要:本谜题利用了Java编程语言中一个很少被人了解的特性。请考虑下面的程序将会做些什么? 这是一个有点诡异的问题。该程序将不会做任何特殊的事情,而是直接打印iexplore::maximize。在程序中间出现的URL是一个语句标号(statement label)[JLS 14.7]后面跟着一行行尾注释 阅读全文
posted @ 2018-10-23 23:21 尐鱼儿 阅读(117) 评论(0) 推荐(0) 编辑
摘要:下面的程序用一个方法对字符进行了分类。这个程序会打印出什么呢? 如果你猜想该程序将打印LETTER UNKNOWN NUMERAL,那么你就掉进陷阱里面了。这个程序连编译都通不过。让我们再看一看相关的部分,这一次我们用粗体字突出注释部分: 正如你之所见,注释在包含了字符*/的字符串内部就结束了,结果 阅读全文
posted @ 2018-10-23 23:20 尐鱼儿 阅读(149) 评论(0) 推荐(0) 编辑
摘要:下面的程序被设计用来打印它的类文件的名称。如果你不熟悉类字面常量,那么我告诉你Me.class.getName()将返回Me类完整的名称,即“com.javapuzzlers.Me”。那么,这个程序会打印出什么呢? 该程序看起来会获得它的类名(“com.javapuzzlers.Me”),然后用“/ 阅读全文
posted @ 2018-10-23 23:20 尐鱼儿 阅读(147) 评论(0) 推荐(0) 编辑
摘要:下面的程序从一个字节序列创建了一个字符串,然后迭代遍历字符串中的字符,并将它们作为数字打印。请描述一下程序打印出来的数字序列: 首先,byte数组用从0到255每一个可能的byte数值进行了初始化,然后这些byte数值通过String构造器被转换成了char数值。最后,char数值被转型为int数值 阅读全文
posted @ 2018-10-23 23:19 尐鱼儿 阅读(156) 评论(0) 推荐(0) 编辑
摘要:下面的是一个合法的Java程序吗?如果是,它会打印出什么呢? 这当然是一个合法的Java程序!这不是很显而易见吗?它会打印Hello World。噢,可能是不那么明显。事实上,该程序根本让人无法理解。每当你没必要地使用了一个Unicode转义字符时,都会使你的程序的可理解性更缺失一点,而该程序将这种 阅读全文
posted @ 2018-10-23 23:18 尐鱼儿 阅读(231) 评论(0) 推荐(0) 编辑
摘要:下面的程序是对一个老生常谈的例子做出了稍许的变化之后的版本。那么,它会打印出什么呢? 这个谜题看起来相当简单。该程序包含了两条语句,第一条打印Hell,而第二条在同一行打印。 world,从而将两个字符串有效地连接在了一起。因此,你可能期望该程序打印出Hello world。但是很可惜,你犯了错,实 阅读全文
posted @ 2018-10-23 23:17 尐鱼儿 阅读(214) 评论(0) 推荐(0) 编辑
摘要:行分隔符(line separator)是为用来分隔文本行的字符或字符组合而起的名字,并且它在不同的平台上是存在差异的。在Windows平台上,它是CR字符(回车)和紧随其后的LF字符(换行)组成的,而在UNIX平台上,通常单独的LF字符被当作换行字符来引用。下面的程序将这个字符传递给了printl 阅读全文
posted @ 2018-10-23 23:17 尐鱼儿 阅读(139) 评论(0) 推荐(0) 编辑
摘要:下面的程序使用了两个Unicode的转义字符,它们是用其十六进制代码来表示Unicode字符。那么,这个程序会打印什么呢? 对该程序的一种很肤浅的分析会认为它应该打印出26,因为在由两个双引号"a\u0022.length()+\u0022b"标识的字符串之间总共有26个字符。 稍微深入一点的分析会 阅读全文
posted @ 2018-10-23 23:16 尐鱼儿 阅读(130) 评论(0) 推荐(0) 编辑
摘要:George Orwell的《畜牧场(Animal Farm)》一书的读者可能还记得老上校的宣言:“所有的动物都是平等的。”下面的Java程序试图要测试这项宣言。那么,它将打印出什么呢? 对该程序的表面分析可能会认为它应该打印出Animal are equal: true。毕竟,pig和dog都是f 阅读全文
posted @ 2018-10-23 23:15 尐鱼儿 阅读(168) 评论(0) 推荐(0) 编辑
摘要:这个谜题要问的是一个悦耳的问题,下面的程序将打印什么呢? 可能大家希望这个程序打印出ABC easy as 123。遗憾的是,它没有。如果你运行它,就会发现它打印的是诸如ABC easy as [C@16f0472之类的东西。为什么这个输出会如此丑陋? 尽管char是一个整数类型,但是许多类库都对其 阅读全文
posted @ 2018-10-23 23:14 尐鱼儿 阅读(193) 评论(0) 推荐(0) 编辑
摘要:下面的程序将打印出什么呢? 你可能会认为这个程序将打印HaHa。该程序看起来好像是用两种方式连接了H和a,但是你所见为虚。如果你运行这个程序,就会发现它打印的是Ha169。那么,为什么它会产生这样的行为呢? 正如我们所期望的,第一个对System.out.print的调用打印的是Ha:它的参数是表达 阅读全文
posted @ 2018-10-23 23:13 尐鱼儿 阅读(123) 评论(0) 推荐(0) 编辑
摘要:与上面的例子相反,如果我们给出的关于变量x和i的声明是如下的合法语句: 但是,它并不是: 乍一看,这个谜题可能看起来与前面一个谜题相同。但是请放心,它们并不一样。这两个谜题在哪一条语句必是合法的,以及哪一条语句必是不合法的方面,正好相反。 就像前面的谜题一样,这个谜题也依赖于有关复合赋值操作符的规范 阅读全文
posted @ 2018-10-23 23:11 尐鱼儿 阅读(133) 评论(0) 推荐(0) 编辑
摘要:这个谜题将测试你对条件操作符的掌握程度,这个操作符有一个更广为人知的名字:问号冒号操作符。下面的程序将会打印出什么呢? 这个程序由两个变量声明和两个print语句构成。第一个print语句计算条件表达式(true ? x : 0)并打印出结果,这个结果是char类型变量x的值’X’。而第二个prin 阅读全文
posted @ 2018-10-23 23:09 尐鱼儿 阅读(133) 评论(0) 推荐(0) 编辑
摘要:下面的程序使用了复合的异或赋值操作符,它所展示的技术是一种编程习俗。那么它会打印出什么呢? 就像其名称所暗示的,这个程序应该交换变量x和y的值。如果你运行它,就会发现很悲惨,它失败了,打印的是 交换两个变量的最显而易见的方式是使用一个临时变量: 很久以前,当中央处理器只有少数寄存器时,人们发现可以通 阅读全文
posted @ 2018-10-23 23:08 尐鱼儿 阅读(145) 评论(0) 推荐(0) 编辑
摘要:转型被用来将一个数值从一种类型转换到另一种类型。下面的程序连续使用了三个转型。那么它到底会打印出什么呢? 无论你怎样分析这个程序,都会感到很迷惑。它以int数值-1开始,然后从int转型为byte,之后转型为char,最后转型回int。第一个转型将数值从32位窄化到了8位,第二个转型将数值从8位拓宽 阅读全文
posted @ 2018-10-23 23:07 尐鱼儿 阅读(117) 评论(0) 推荐(0) 编辑
摘要:下面的程序是对两个十六进制(hex)字面常量进行相加,然后打印出十六进制的结果。这个程序会打印出什么呢? 看起来很明显,该程序应该打印出1cafebabe。毕竟,这确实就是十六进制数字10000000016与cafebabe16的和。该程序使用的是long型运算,它可以支持16位十六进制数,因此运算 阅读全文
posted @ 2018-10-23 23:04 尐鱼儿 阅读(357) 评论(0) 推荐(0) 编辑
摘要:得啦,前面那个谜题是有点棘手,但它是有关整除的,每个人都知道整除是很麻烦的。那么下面的程序只涉及加法,它又会打印出什么呢? 从表面上看,这像是一个很简单的谜题——简单到不需要纸和笔你就可以解决它。加号的左操作数的各个位是从1到5升序排列的,而右操作数是降序排列的。因此,相应各位的和仍然是常数,程序必 阅读全文
posted @ 2018-10-23 22:58 尐鱼儿 阅读(174) 评论(0) 推荐(0) 编辑
摘要:这个谜题之所以被称为长整除是因为它所涉及的程序是有关两个long型数值整除的。被除数表示的是一天里的微秒数;而除数表示的是一天里的毫秒数。这个程序会打印出什么呢? 这个谜题看起来相当直观。每天的毫秒数和每天的微秒数都是常量。为清楚起见,它们都被表示成积的形式。每天的微秒数是(24小时/天60分钟/小 阅读全文
posted @ 2018-10-23 22:56 尐鱼儿 阅读(230) 评论(0) 推荐(0) 编辑
摘要:请考虑下面这段话所描述的问题: Tom在一家汽车配件商店购买了一个价值$1.10的火花塞,但是他钱包中都是两美元一张的钞票。如果他用一张两美元的钞票支付这个火花塞,那么应该找给他多少零钱呢? 下面是一个试图解决上述问题的程序,它会打印出什么呢? 你可能会很天真地期望该程序能够打印出0.90,但是它如 阅读全文
posted @ 2018-10-23 22:55 尐鱼儿 阅读(140) 评论(0) 推荐(0) 编辑
摘要:下面的方法意图确定它那唯一的参数是否是一个奇数。这个方法能够正确运转吗? 奇数可以被定义为被2整除余数为1的整数。表达式 i % 2 计算的是 i 整除 2 时所产生的余数,因此看起来这个程序应该能够正确运转。遗憾的是,它不能;它在四分之一的时间里返回的都是错误的答案。 为什么是四分之一?因为在所有 阅读全文
posted @ 2018-10-23 22:53 尐鱼儿 阅读(234) 评论(0) 推荐(0) 编辑
摘要:题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,把原有的数据和计算出的平均分数存放在磁盘文件 "stud "中。 阅读全文
posted @ 2018-10-23 22:52 尐鱼儿 阅读(121) 评论(0) 推荐(0) 编辑
摘要:题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。 阅读全文
posted @ 2018-10-23 22:51 尐鱼儿 阅读(98) 评论(0) 推荐(0) 编辑
摘要:题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。 阅读全文
posted @ 2018-10-23 22:51 尐鱼儿 阅读(103) 评论(0) 推荐(0) 编辑
摘要:题目:计算字符串中子串出现的次数 import java.util.*; public class lianxi49 { } ``` 阅读全文
posted @ 2018-10-23 22:51 尐鱼儿 阅读(85) 评论(0) 推荐(0) 编辑
摘要:题目:两个字符串连接程序 阅读全文
posted @ 2018-10-23 22:50 尐鱼儿 阅读(86) 评论(0) 推荐(0) 编辑
摘要:题目:判断一个素数能被几个9整除 阅读全文
posted @ 2018-10-23 22:49 尐鱼儿 阅读(93) 评论(0) 推荐(0) 编辑
摘要:题目:809??=800??+9??+1 其中??代表的两位数,8??的结果为两位数,9??的结果为3位数。求??代表的两位数,及809??后的结果。 阅读全文
posted @ 2018-10-23 22:48 尐鱼儿 阅读(89) 评论(0) 推荐(0) 编辑
摘要:题目:求0—7所能组成的奇数个数。 阅读全文
posted @ 2018-10-23 22:48 尐鱼儿 阅读(91) 评论(0) 推荐(0) 编辑
摘要:题目:一个偶数总能表示为两个素数之和。 阅读全文
posted @ 2018-10-23 22:48 尐鱼儿 阅读(171) 评论(0) 推荐(0) 编辑
摘要:题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? 阅读全文
posted @ 2018-10-23 22:47 尐鱼儿 阅读(124) 评论(0) 推荐(0) 编辑
摘要:题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数) 阅读全文
posted @ 2018-10-23 22:46 尐鱼儿 阅读(106) 评论(0) 推荐(0) 编辑
摘要:题目:字符串排序。 阅读全文
posted @ 2018-10-23 22:46 尐鱼儿 阅读(141) 评论(0) 推荐(0) 编辑
摘要:题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。 阅读全文
posted @ 2018-10-23 22:45 尐鱼儿 阅读(103) 评论(0) 推荐(0) 编辑
摘要:题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 阅读全文
posted @ 2018-10-23 22:44 尐鱼儿 阅读(102) 评论(0) 推荐(0) 编辑
摘要:题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数 阅读全文
posted @ 2018-10-23 22:43 尐鱼儿 阅读(106) 评论(0) 推荐(0) 编辑
摘要:题目:打印出杨辉三角形(要求打印出10行如下图) 1 5 10 10 5 1 ………… 阅读全文
posted @ 2018-10-23 22:42 尐鱼儿 阅读(85) 评论(0) 推荐(0) 编辑
摘要:题目:输入3个数a,b,c,按大小顺序输出。 阅读全文
posted @ 2018-10-23 22:42 尐鱼儿 阅读(85) 评论(0) 推荐(0) 编辑
摘要:题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 阅读全文
posted @ 2018-10-23 22:42 尐鱼儿 阅读(116) 评论(0) 推荐(0) 编辑
摘要:题目:取一个整数a从右端开始的4~7位。 阅读全文
posted @ 2018-10-23 22:41 尐鱼儿 阅读(104) 评论(0) 推荐(0) 编辑
摘要:题目:将一个数组逆序输出。 阅读全文
posted @ 2018-10-23 22:40 尐鱼儿 阅读(95) 评论(0) 推荐(0) 编辑
摘要:题目:求一个3*3矩阵对角线元素之和 阅读全文
posted @ 2018-10-23 22:39 尐鱼儿 阅读(69) 评论(0) 推荐(0) 编辑
摘要:题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 阅读全文
posted @ 2018-10-23 22:39 尐鱼儿 阅读(83) 评论(0) 推荐(0) 编辑
摘要:题目:对10个数进行排序 阅读全文
posted @ 2018-10-23 22:38 尐鱼儿 阅读(90) 评论(0) 推荐(0) 编辑
摘要:题目:求100之内的素数 //使用除sqrt(n)的方法求出的素数不包括2和3 阅读全文
posted @ 2018-10-23 22:37 尐鱼儿 阅读(89) 评论(0) 推荐(0) 编辑
摘要:题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 阅读全文
posted @ 2018-10-23 22:36 尐鱼儿 阅读(124) 评论(0) 推荐(0) 编辑
摘要:题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。 阅读全文
posted @ 2018-10-23 22:36 尐鱼儿 阅读(103) 评论(0) 推荐(0) 编辑
摘要:题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 阅读全文
posted @ 2018-10-23 22:35 尐鱼儿 阅读(94) 评论(0) 推荐(0) 编辑
摘要:题目:利用递归方法求5!。 阅读全文
posted @ 2018-10-23 22:34 尐鱼儿 阅读(93) 评论(0) 推荐(0) 编辑
摘要:题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大? 阅读全文
posted @ 2018-10-23 22:34 尐鱼儿 阅读(87) 评论(0) 推荐(0) 编辑
摘要:题目:求1+2!+3!+...+20!的和 阅读全文
posted @ 2018-10-23 22:33 尐鱼儿 阅读(81) 评论(0) 推荐(0) 编辑
摘要:题目:打印出如下图案(菱形) 阅读全文
posted @ 2018-10-23 22:31 尐鱼儿 阅读(101) 评论(0) 推荐(0) 编辑
摘要:题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 阅读全文
posted @ 2018-10-23 22:31 尐鱼儿 阅读(88) 评论(0) 推荐(0) 编辑
摘要:题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 阅读全文
posted @ 2018-10-23 22:30 尐鱼儿 阅读(109) 评论(0) 推荐(0) 编辑
摘要:题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 阅读全文
posted @ 2018-10-23 22:29 尐鱼儿 阅读(92) 评论(0) 推荐(0) 编辑
摘要:题目:输出9*9口诀。 阅读全文
posted @ 2018-10-23 22:28 尐鱼儿 阅读(106) 评论(0) 推荐(0) 编辑
摘要:题目:输入三个整数x,y,z,请把这三个数由小到大输出。 阅读全文
posted @ 2018-10-23 22:27 尐鱼儿 阅读(144) 评论(0) 推荐(0) 编辑
摘要:题目:输入某年某月某日,判断这一天是这一年的第几天? 阅读全文
posted @ 2018-10-23 22:25 尐鱼儿 阅读(184) 评论(0) 推荐(0) 编辑
摘要:题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? /*按题意循环应该从-100开始(整数包括正整数、负整数、零),这样会多一个满足条件的数-99。 但是我看到大部分人解这道题目时都把题中的“整数”理解成正整数,我也就随大流了。*/ 阅读全文
posted @ 2018-10-23 22:24 尐鱼儿 阅读(117) 评论(0) 推荐(0) 编辑
摘要:题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到 阅读全文
posted @ 2018-10-23 22:23 尐鱼儿 阅读(178) 评论(0) 推荐(0) 编辑
摘要:题目:有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 阅读全文
posted @ 2018-10-23 22:21 尐鱼儿 阅读(118) 评论(0) 推荐(0) 编辑
摘要:题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 阅读全文
posted @ 2018-10-23 22:20 尐鱼儿 阅读(75) 评论(0) 推荐(0) 编辑
摘要:题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数"。例如6=1+2+3.编程找出1000以内的所有完数。 阅读全文
posted @ 2018-10-23 22:19 尐鱼儿 阅读(109) 评论(0) 推荐(0) 编辑
摘要:题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 阅读全文
posted @ 2018-10-23 22:18 尐鱼儿 阅读(106) 评论(0) 推荐(0) 编辑
摘要:题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 阅读全文
posted @ 2018-10-23 22:17 尐鱼儿 阅读(130) 评论(0) 推荐(0) 编辑
摘要:题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 /*在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。 / 阅读全文
posted @ 2018-10-23 22:15 尐鱼儿 阅读(112) 评论(0) 推荐(0) 编辑
摘要:题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 阅读全文
posted @ 2018-10-23 22:14 尐鱼儿 阅读(106) 评论(0) 推荐(0) 编辑
摘要:题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商, 阅读全文
posted @ 2018-10-23 22:13 尐鱼儿 阅读(112) 评论(0) 推荐(0) 编辑
摘要:题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。 阅读全文
posted @ 2018-10-23 22:12 尐鱼儿 阅读(113) 评论(0) 推荐(0) 编辑
摘要:题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 阅读全文
posted @ 2018-10-23 22:11 尐鱼儿 阅读(86) 评论(0) 推荐(0) 编辑
摘要:题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 阅读全文
posted @ 2018-10-23 22:08 尐鱼儿 阅读(121) 评论(0) 推荐(0) 编辑
摘要:使用10个辅助队列,假设最大数的数字位数为 x, 则一共做x次,从个位数开始往前,以第i位数字的大小为依据,将数据放进辅助队列,搞定之后回收。下次再以高一位开始的数字位为依据。 以Vector作辅助队列,基数排序的Java代码: 阅读全文
posted @ 2018-10-22 02:55 尐鱼儿 阅读(302) 评论(0) 推荐(0) 编辑
摘要:将两个或两个以上的有序表组合成一个新的有序表。归并排序要使用一个辅助数组,大小跟原数组相同,递归做法。每次将目标序列分解成两个序列,分别排序两个子序列之后,再将两个排序好的子序列merge到一起。 阅读全文
posted @ 2018-10-22 02:54 尐鱼儿 阅读(107) 评论(0) 推荐(0) 编辑
摘要:分为直接选择排序,堆排序 直接选择排序: 第i次选取 i到array.Length-1中间最小的值放在i位置。 堆排序: 首先,数组里面用层次遍历的顺序放一棵完全二叉树。从最后一个非终端结点往前面调整,直到到达根结点,这个时候除根节点以外的所有非终端节点都已经满足堆得条件了,于是需要调整根节点使得整 阅读全文
posted @ 2018-10-22 02:53 尐鱼儿 阅读(134) 评论(0) 推荐(0) 编辑
摘要:包括冒泡排序,快速排序。 冒泡排序法: 该算法是专门针对已部分排序的数据进行排序的一种排序算法。如果在你的数据清单中只有一两个数据是乱序的话,用这种算法就是最快的排序算法。如果你的数据清单中的数据是随机排列的,那么这种方法就成了最慢的算法了。因此在使用这种算法之前一定要慎重。这种算法的核心思想是扫描 阅读全文
posted @ 2018-10-22 02:50 尐鱼儿 阅读(156) 评论(0) 推荐(0) 编辑
摘要:包括直接插入排序,希尔插入排序。 直接插入排序: 将一个记录插入到已经排序好的有序表中。 1, sorted数组的第0个位置没有放数据。 2,从sorted第二个数据开始处理: 如果该数据比它前面的数据要小,说明该数据要往前面移动。 a,首先将该数据备份放到 sorted的第0位置当哨兵。 b,然后 阅读全文
posted @ 2018-10-22 02:46 尐鱼儿 阅读(137) 评论(0) 推荐(0) 编辑
摘要:分类: 1)插入排序(直接插入排序、希尔排序)。 2)交换排序(冒泡排序、快速排序)。 3)选择排序(直接选择排序、堆排序)。 4)归并排序。 5)分配排序(箱排序、基数排序)。 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序。 选择 阅读全文
posted @ 2018-10-22 02:41 尐鱼儿 阅读(107) 评论(0) 推荐(0) 编辑
摘要:在数据库中存在一种特殊的值:NULL(空值)。一个字段如果没有被赋值,那么它的值就是NULL,NULL并不代表没有值而是表示值未知。员工信息表中存储着身份证号、姓名、年龄等信息,其中某条记录中年龄字段的值为NULL,并不表示这个员工没有年龄,而只是他的年龄暂时不知道。因此,在数据库中NULL 主要用 阅读全文
posted @ 2018-10-22 02:36 尐鱼儿 阅读(444) 评论(0) 推荐(0) 编辑
摘要:一般情况下,一张数据表必须要有一个主键字段,这样这个主键字段就可以唯一标识这条记录了。不过采用什么样的字段来做为主键字段还是一个必须解决的问题,目前有两种常用的主键策略:业务主键与逻辑主键。 业务主键是指采用业务数据中的某个字段做为主键,比如在员工档案表中可以用工号来做为主键、在车辆管理系统中可以用 阅读全文
posted @ 2018-10-22 02:35 尐鱼儿 阅读(3039) 评论(0) 推荐(0) 编辑
摘要:在设计数据库的时候,有时需要表的某个字段是自动增长的,最常使用自动增长字段的就是表的主键,使用自动增长字段可以简化主键的生成。不同的DBMS 中自动增长字段的实现机制也有不同,下面分别介绍。 MYSQL中的自动增长字段 MYSQL中设定一个字段为自动增长字段非常简单,只要在表定义中指定字段为AUTO 阅读全文
posted @ 2018-10-22 02:34 尐鱼儿 阅读(1105) 评论(0) 推荐(0) 编辑
摘要:主流的DBMS都提供了启动、提交以及回滚事务的机制,也提供了指定锁粒度、隔离级别的机制,不过这些机制一般是谁DBMS的不同而不同的,请参考具体DBMS的说明文档。比如在MSSQLServer中执行一个READ_UNCOMMITED级别事务的SQL语句如下: 阅读全文
posted @ 2018-10-22 02:33 尐鱼儿 阅读(89) 评论(0) 推荐(0) 编辑
摘要:由于隔离性是通过加锁的方式获得的,而锁会降低系统的性能,所以事务提供了控制隔离程度的机制。如果使用较高的隔离级别,则事务会比较好的与其他事务相隔离,当然也会带来大量的系统开销;如果使用较低的隔离级别,则事务的隔离性会比较差,但是能获得更好的性能。 事务的隔离级别分为四种:READ_UNCOMMITE 阅读全文
posted @ 2018-10-22 02:32 尐鱼儿 阅读(139) 评论(0) 推荐(0) 编辑
摘要:假设同一个A和B两个同时并发操作数据库,A和B执行的任务如下:从数据库中读取整数N,将N随机加上10或者20,将新的N更新回数据库。这两个并发执行的实例可能发生下面的执行顺序。 (1)A从数据库中读取N,当前数据库中N=0; (2)B从数据库中读取N,当前数据库中N=0; (3)A将N加10,并更新 阅读全文
posted @ 2018-10-22 02:31 尐鱼儿 阅读(116) 评论(0) 推荐(0) 编辑
摘要:如果要执行一系列的操作,而这些操作最终是以整体的原子操作的形式完成的话,事务就是必须的。关于事务的理论中,银行转账问题是最经典的例子:当把钱从一个银行帐号转移至另外一个银行帐号的时候,这个操作要由两个步骤来完成,首先要将资金从一个银行帐号取出,然后再将其存入另一个银行帐号。如果资金已经从一个银行帐号 阅读全文
posted @ 2018-10-22 02:30 尐鱼儿 阅读(207) 评论(0) 推荐(0) 编辑
摘要:下面将会列出了一些常用的优化手法,注意这些优化手法只是一些常规条件下的优化手法,具体的优化效果是与使用的DBMS以及数据的特点密切相关的,需要根据具体情况来使用不同的优化手法,如果使用不当的话有可能会适得其反。 创建必要的索引 在经常需要进行检索的字段上创建索引,比如经常要按照图书名称进行检索,那么 阅读全文
posted @ 2018-10-22 02:28 尐鱼儿 阅读(183) 评论(0) 推荐(0) 编辑
摘要:一般地,系统访问数据库中的数据,可以使用两种方法:全表扫描和索引查找。全表扫描,就是指系统必须在数据表中逐条检索表中的每条记录,以检查该记录是否匹配检索条件。全表扫描有可能会造成巨大的性能损失,当然也有可能不会影响性能,这取决于表中的数据量,如果表中有上千万条甚至上亿条记录的话,全表扫描的速度会非常 阅读全文
posted @ 2018-10-22 02:27 尐鱼儿 阅读(208) 评论(0) 推荐(0) 编辑
摘要:在使用DBMS时经常对系统的性能有非常高的要求:不能占用过多的系统内存和CPU资源、要尽可能快的完成的数据库操作、要有尽可能高的系统吞吐量。如果系统开发出来不能满足要求的所有性能指标,则必须对系统进行调整,这个工作被称为调优。 绝对DBMS的性能的因素有两个因素:硬件和软件。使用频率的的CPU、使用 阅读全文
posted @ 2018-10-22 02:26 尐鱼儿 阅读(296) 评论(0) 推荐(0) 编辑
摘要:索引是数据库调优的最根本的优化方法,很多优化手法都是围绕索引展开的,可以说索引是一切优化手法的“内功”,而所有的优化手法都是由索引衍化出来的招式而已。 根据索引的顺序与数据表的物理顺序是否相同,可以把索引分成两种类型:聚簇索引,数据表的物理顺序与索引顺序相同;非聚簇索引,数据表的物理顺序与索引顺序不 阅读全文
posted @ 2018-10-22 02:26 尐鱼儿 阅读(156) 评论(0) 推荐(0) 编辑
摘要:Java、C#等语言提供了参数化SQL机制,使用参数化SQL开发人员为在运行时才能确定的参数值设置占位符,在执行的时候再指定这些占位符所代表的值。示例代码如下: 在上面的例子中,为运行时才能确定的用户名和密码设置了占位符,然后在运行时再设定占位符的值,在执行时Java、C#会直接将参数化SQL以及对 阅读全文
posted @ 2018-10-22 02:25 尐鱼儿 阅读(1096) 评论(0) 推荐(0) 编辑
摘要:过滤敏感字符的思路非常简单,由于恶意攻击者一般需要在输入框中输入的文本一般含有or、and、select、delete之类的字符串片段,所以在拼接SQL之前检查用户提交的文本中是否含有这些敏感字符串,如果含有则终止操作。示例代码如下: 这种方式能够过滤大部分注入漏洞攻击,但是有如下两个缺陷: 1,给 阅读全文
posted @ 2018-10-22 02:24 尐鱼儿 阅读(936) 评论(0) 推荐(0) 编辑
摘要:系统中安全性是非常重要的,为了保证安全性很多解决方案被应用到系统中,比如架设防火墙防止数据库服务器直接暴露给外部访问者、使用数据库的授权机制防止未授权的用户访问数据库,这些解决方案可以很大程度上避免了系统受攻击,但是如果开发人员不注意SQL的安全性造成了SQL注入漏洞,那么所有的这些解决方案都形同虚 阅读全文
posted @ 2018-10-22 02:23 尐鱼儿 阅读(2740) 评论(0) 推荐(0) 编辑
摘要:内部连接要求组成连接的两个表必须具有匹配的记录,T_Order表中的数据如下: 使用内部连接可以查询每张订单的订单号、价格、对应的客户姓名以及客户年龄,SQL语句如下: 执行以后我们在输出结果中看到下面的执行结果: 仔细观察我们可以看到T_Order表中有7行数据,而通过上面的内部连接查询出来的结果 阅读全文
posted @ 2018-10-21 01:46 尐鱼儿 阅读(424) 评论(0) 推荐(0) 编辑
摘要:几乎所有的数据库系统都支持左外部连接和右外部连接,但是全外部连接则不是所有数据库系统都支持,特别是最常使用的MYSQL就不支持全外部连接。全外部连接是左外部连接和右外部连接的合集,因为即使在右表中不存在匹配连接条件的数据,左表中的所有记录也将被放到结果集中,同样即使在左表中不存在匹配连接条件的数据, 阅读全文
posted @ 2018-10-21 01:46 尐鱼儿 阅读(275) 评论(0) 推荐(0) 编辑
摘要:到目前为止,我们讲解的连接都是在不同的数据表之间进行的,其实参与连接的表完全可以是同一样表,也就是表与其自身相连接,这样连接就被称为自连接。自连接并不是独立于交叉连接、内连接、外连接等这些连接方式之外的另外一种连接方式,而只是这些连接方式的一种特例,也就是交叉连接、内连接、外连接等连接方式中只要参与 阅读全文
posted @ 2018-10-21 01:45 尐鱼儿 阅读(919) 评论(0) 推荐(0) 编辑
摘要:到目前为止,本书中所有的连接几乎都是等值连接,也就是在这种连接的ON子句的条件包含一个等号运算。等值连接是最常用的连接,因为它指定的连接条件是一个表中的一个字段必须等于另一个表中的一个字段。 处理等值连接,还存在另外一种不等值连接,也就是在连接的条件中可以使用小于(<)、大于(>)、不等于(<>)等 阅读全文
posted @ 2018-10-21 01:44 尐鱼儿 阅读(1800) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示