月度归档:2012年04月

『伊凡·杰尼索维奇的一天』

『伊凡·杰尼索维奇的一天』是索尔仁尼琴的第一部劳改营题材小说,据说这部小说奠定了他的写作基调,因此可谓意义深远。它讲述的是104小队的854号劳改犯舒霍夫早上五点起床至晚上睡觉一天时间里发生的事情,这些事情在过去的十年里每天都会上演,吃早饭、干活、吃中饭、干活、吃晚饭,睡觉……当然,劳改营里饭是肯定吃不饱的,生病去卫生所还不一定能批得下假条,还得忍受繁之又繁的点名。用舒霍夫自己的话来讲:“劳改营里的犯人,除了做梦以外,每天只有在早上吃早饭的十分钟、吃中饭的五分钟和吃晚饭的五分钟里才是为自己活着。”时间对他们没有意义,“犯人只需知道:快到起床的时候了吗?离出工还有多少时间?离吃饭、离熄灯还有多少时间?”然而,这样平凡枯燥的一天在舒霍夫看来却是幸福和顺当的,他能够心满意足地睡去,尽管相同的生活已经过了三千六百五十三天。

脱离了故事的发生背景和地域,舒霍夫的一天非常普通,甚至枯燥,劳改营的生活也远没有『肖申克的救赎』、『越狱』中渲染的那样曲折,但是无疑这样的生活描写是真实的,会产生具体的代入感。我三年的苦行僧般的生活亦是由这样枯燥而乏味的一天天组成,局外人无法真正理解我不经意吐槽背后隐藏的心酸和忍耐,就好象坐在暖暖和和的房间里的人无法真正体会到挨冻的人的苦楚。琐碎且繁重的压力之下,我都已经不习惯考虑如何安排明天或者一年之后的生活。我每天晚上都要掐指算算这种日子过了多少天,还剩多少天。有时候,算得连自己都觉得有点腻了,甚至提前开始怀疑将来的日子,无论在这里,还是在别处,是否都是一样的平凡和枯燥。

--EOF--

『华尔街』

3年前,美国次贷危机引起的危机席卷全球,一场源自华尔街的金融风暴引发了全球性的金融危机。如今,华尔街作为美国经济的核心和枢纽持续影响着世界各国的资本市场。华尔街既是金融的神殿,同时也是金融罪恶的渊源。这里盛行丛林法则,胜者为王,败者为寇。安稳的年代,这里有着世界上最好的创造财富的土壤,每天上演着许多惊心动魄的充满传奇的故事;动荡的年代,这里的人被千夫所指,被认为逐利、贪婪与疯狂。

阿姆斯特丹、伦敦之后,纽约成了世界的金融中心,纽约成为世界金融中心离不开荷兰人和英国人的相继入侵。荷兰人最早诞生了股份制公司,东印度公司发行了世界上第一只股票,发行股票筹来的钱用来开拓海外市场。机缘巧合之下,哈德逊发现了纽约。之后,荷兰人成立西印度公司,用低廉的价格买下曼哈顿土地所有权,并建立纽约城,为保护自己的财富,他们在城北堆砌了一堵防御用的墙,后来纽约被英国人占领,墙被推到后改造成了一条街,这条街就是华尔街,这段历史就是华尔街的前世今生。

有金融的地方就有危机,人类历史上第一次金融危机发生在荷兰,起因是郁金香泡沫。然而危机向来与生机是相生相克的,危机过后,郁金香根植荷兰,与风车一道成为了荷兰的象征。有人从危机中获利,就有人在危机中破产,投资家吉姆·罗杰斯说:“如果每个人都进行投资,却没有一个人失败,整个体系就无法运转。因为市场发展的唯一途径就是一些人获得成功,一些人遭受失败。”在全局上,华尔街能发挥有效配置资源的建设性作用。美国独立战争期间,政府欠下了大量的债务,时任财政部长的汉密尔顿筹划了“旋转门计划”,通过发行国债来偿还债务,维持国家信用,配合实施“旋转门计划”的华尔街就此赚到了第一桶金。此后,华尔街在伊利运河和铁路网的建设中一举成名。伊利运河和铁路网的建设确定了纽约成为世界金融中心,实现了美国从传统农业国向工业化强国的转变,而持有运河和铁路股票和债券的投资者亦收到了丰厚的经济回报。从华尔街流淌出来的金钱打通了美国最长的运河,铺设了全球最大的铁路网,点亮了世界第一盏电灯。这些都是华尔街有效配置资源的实例。华尔街将世界从电气时代带到了互联网时代,进而推动到生物时代。

客观地讲,华尔街毁誉参半,坏名声起源于人性中的贪婪。电影『华尔街』中道格拉斯主演的Gekko有云:“贪婪是好的,贪婪是对的,贪婪是有用的,贪婪是一切形式之所在。”正是华尔街人对利益不懈地追逐才导致了近乎20年一次的经济危机的发生。人性中的贪婪,使得华尔街这样的小经济体无法依靠自身能力净化金融生态环境,所以,除了从业人员的自律之外,来自外部的监管也是必不可少。

华尔街的价值在哪里?华尔街与世界又怎样的关系?这就是『华尔街』要解的谜。

--EOF--

基类构造方法的异常处理问题

『Thinking In Java(Third Edition)』中有个习题,要求证明派生类的构造方法不能捕获它的基类构造方法所抛出的异常。咋一看有点糊涂,其实原因很简单,也很有趣。

要解释原因,先要了解Java编译器要求派生类的构造方法中构造基类的super()语句必需放在其他语句前面,因为派生类继承了基类的属性和方法,如果基类的属性没有初始化过,则派生类中无法使用,所以要求super()方法必需最先执行。回到基类构造方法的异常处理问题,如果派生类的构造方法试着捕获它的基类构造方法抛出的异常,必然会有代码块在super()方法之前执行,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class FooException extends Exception {}
class BarException extends Exception {}
 
class Father {
    Father() throws FooException {
        ... ...
    }
}
 
class Son extends Father {
    public Son() throws BarException {
        try { // complie error
            super();
        } catch (FooException e) {}
        init();
    }
 
    public void init() throws BarException {
        ... ...
    }
}
 
public class Test {
    public static void main(String[] args) {
        try {
            Son s = new Son();
        } catch (BarException e) {
            System.out.println("BarException caught");
        }
    }
}

上面程序可以进行如下修正:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Son extends Father {
    public Son() throws FooException, BarException {
        super();
        init();
    }
 
    public void init() throws BarException {
        ... ...
    }
}
 
public class Test {
    public static void main(String[] args) {
        try {
            Son s = new Son();
        } catch (BarException e) {
            System.out.println("BarException caught");
        } catch (FooException e) {
            System.out.println("FooException caught");
        }
    }
}

如果基类构造方法有异常抛出,那么子类的构造方法只能声明基类构造方法声明的异常,而不能将其捕获。此外,子类构造方法还可以声明任何其他异常,不受基类构造方法声明的异常的限制,如上例中的FooException和BarException之间并无继承关系,派生类构造方法可以抛出超出基类构造方法异常范围的异常。

--EOF--