好久没在家写代码了,要把准备做的几个在线工具的代码都用git管理,并放在服务器上面。几个月不折腾,突然发现很多命令和配置都忘记了。在这里记一下,方便以后再查。

1. 库初始化,在将要定义成为git库的目录下执行:

git init
git add .
git commit

建立之后的库默认只能本地使用,想让它能接受远程的push,必须有个金手指文件:

cd .git
touch git-daemon-export-ok

做完雅思模拟题自己算分的时候,通常要查一个表格。虽然不是很复杂,但每次都要查,实在不胜其烦。出于软件工程师的创(lan)新(duo)精神,必须弄个简单点的办法,于是就花了点时间搞出个计算器来:

雅思自测评分计算器

希望能给其他烤鸭们节省些时间,本文留言同时作bug反馈和新需求提交之用。

网上其实有另外好几个类似的计算器,但要么分数表不完整,不出半分;要么技术古旧,看着不舒服。这个页面用了bootstrap3作为css框架,看着比较现代化一些,还用了angular来做绑定计算,不需要按"计算"按钮,随输入随出结果。另外采纳了领导的页面布局建议,特此鸣谢 :-)

附:雅思考试阅读和听力计分表

好艰深的一节,看了两三遍才完全吃透。

覆盖clone方法要谨慎

Java中一个广为人知的复制对象的方法是clone。这个方法看上去方便好用,但实际上问题和限制都很多,所以不推荐使用。需要复制对象的情况下,应该尽可能使用复制构造函数或静态factory方法。

clone方法最大的问题来自于它的实现机制:Cloneable接口。这个接口严重破坏了Java语言中接口的使用规范,所以被称为"extralinguistic"。通常情况下,一个接口需要声明一些方法,而实现接口的类必须覆盖这些方法以提供具体行为。这样的覆盖是强制性的,否则会产生编译错误。但Cloneable接口是一个特例,它没有声明任何方法,实际上是一个空接口,因而实现它的类不会被强制覆盖clone方法。此接口的唯一作用,是作为一个"开关",用来开放Object类中的clone方法。

任何情况下toString方法都应该被覆盖

java.lang.Object已经提供了一个默认的toString方法,它的返回值,是"[类名]@[对象的hash]",比如:"PhoneNumber@163b91"。这样的信息,显然不太有用。所以语言规范中建议开发者在所有Object的子类中都覆盖toString方法,以返回明确易读的关于对象的信息。

在覆盖toString方法时,应该返回关于对象的所有有用信息。如果对象中信息量巨大,那么应该返回一个概要。比如上面电话号码的例子,可以返回类似于"(707) 867-5309"的结果;而对于"曼哈顿黄页"这样的对象,可以返回"Manhattan white pages (1487536 listings)",而不是把所有的listing都列出来。

关于返回值的格式,可以在注释中以规范的形式公布,并且提供一个factory或者构造函数,让开发者可以方便地在对象和它的字符串表示之间转换。这样做的坏处是,一旦规范公布,并且类型被大量使用,之后就很难对其进行修改,因为那将破坏用户端代码。不管toString格式是否提供规范,都应该在注释中说明,比如下面是为item 9中PhoneNumber类定义的toString方法:

如果equals方法被覆盖,hashCode方法也必须被覆盖

Java语言规范中为Object.hashCode方法制定了须遵守的合约:

1.在程序的同一次运行(execution)中,给定某个对象,如果此对象用于计算equals返回值的信息没有改变,那么多次执行其hashCode方法,都必须返回同样的哈希值。当然,不同的运行之间,哈希值可以不同。

2.如果两个对象,依据equals方法的判定,是相等的,那么他们的哈希值必须相同。

3.如果两个对象,依据equals方法的判定,是不相等的,那么他们的哈希值不一定不等。如果此情况下可以保证两哈希值不等,那么所有依赖哈希值的数据结构(HashMap,HashSet和Hashtable)的性能将被优化。

如果上述合约被破坏,在依赖哈希值的数据结构中,程序的行为将会出错。

覆盖equals方法时要遵守的通用合约

覆盖equals方法并不像看上去那样简单,所以除非必要,还是不要覆盖为好。以下情况下,equals方法是不需要被覆盖的:

1.一个类的所有对象本质上说都是唯一的。比如Thread类,它的对象全都用来执行指令,因而他们在对象层面上的数据并不重要。这种情况下Object本身的equals实现已经足够。

2.对于某些类,我们并不在意对其对象间的"逻辑相等性"。比如java.util.Random。

3.父类已经定义了可正确应用于子类的equals。

4.私有类,并且可以确定其equals方法永远不会被执行。

第5页 共10页