2013年10月6日星期日

Netty 4.0.9.Final 发布,网络服务编程框架

Netty 提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
体系结构图
Netty 4.0.9.Final 发布了,值得关注的改进内容有:
  • internalNioBuffer(...) lead to races when using from derived ByteBuf implementations (#1801)
  • LengthFieldBasedFrameDecoder produces IllegalArgumentException when frame is too big (#1798)
  • AbstractByteBuf.skipBytes(..) accept negative value and so set the readerIndex to a negative value (#1797)
  • HttpContentCompressor and HttpContentDecompressor not working (#1789)
  • GZIP decoding CRC32 and ISIZE in JdkZLibDecoder (#1788)
  • HTTP Chunk, wrong delimiter written (#1787)
完整列表请看 here

IBM再向Linux投资10亿美元 欲破微软垄断局面

据《华尔街日报》报道,IBM在当地时间周二宣布,公司将斥资10亿美元进一步鼓励客户使用完全免费开源的Linux操作系统,并希望借此同微软Windows Server操作系统展开直接竞争。
IBM再向Linux投资10亿美元 欲破微软垄断局面
事实上,这已经是IBM有史以来第二次对Linux投下血本以抗衡微软的动作了。早在2000年,IBM也曾经为当时还羽翼未满,并刚刚开始进军企业数据中心领域的Linux操作系统投资了10亿美元。
多年以来,微软对于这一操作系统十分抱有十分强烈的戒心,甚至不惜通过向消费者鼓吹“Linux侵犯了多达235项专利,所有使用这一操作系统的公司都有可能面临起诉”的论调试图迫使消费者远离这一产品。
然而,微软的这一如意算盘最终没能如愿,Linux的用户使用率一直在逐年攀升,而这同IBM对该操作系统表现出的信心密不可分。目前,我们已经很 难找到一个完全没有使用Linux系统的企业数据中心,而诸如谷歌、Facebook这些全球知名的科技企业也都将该操作系统视为自己服务器系统选择的一 个重要方案。
但平心而论,目前的Linux还远远没有强大到足以“杀死”Windows Server系统的地步。
据知名市场调研机构IDC公布的最新季度数据显示,目前企业购置的新服务器中大约有23%都运行着Linux操作系统,而运行Windows Server操作系统的比例则达到了49%。
据悉,IBM希望利用此次向Linux投资的10亿美元结合自己旗下的Power服务器产品进一步拓展公司在云端业务领域的发展。而且,公司客户也可以利用这一服务免费远程测试Linux应用的稳定性。

Android性能测试工具 Emmagee

Emmagee是监控指定被测应用在使用过程中占用机器的CPU、内存、流量资源的性能测试小工具。
支持SDK:Android2.2以及以上版本

Emmagee功能介绍
1、检测当前时间被测应用占用的CPU使用率以及总体CPU使用量
2、检测当前时间被测应用占用的内存量,以及占用的总体内存百分比,剩余内存量
3、检测应用从启动开始到当前时间消耗的流量数
4、测试数据写入到CSV文件中,同时存储在手机中
5、可以选择开启浮窗功能,浮窗中实时显示被测应用占用性能数据信息
6、在浮窗中可以快速启动或者关闭手机的wifi网络

Emmagee如何使用
1、安装Emmagee应用
2、启动Emmagee,列表中会默认加载手机安装的所有应用
3、选择你需要测试的应用,点击“开始测试”,被测应用会被启动

4、开始你的功能测试吧,测试过程中会自动记录相关性能参数
5、测试完成后回到Emmagee界面,点击“结束测试”,测试结果会保存在手机指定目录的CSV文件中

生成的CSV文件内容见图:


6、使用Excel打开CSV文件,使用自带的统计图标功能生成统计图:

Android网络通信库Volley简介


Posted on May 27, 2013 by liubin
1. 什么是Volley

在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的Google I/O 2013上,Volley发布了。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。
这是Volley名称的由来: a burst or emission of many things or a large amount at once
在Google IO的演讲上,其配图是一幅发射火弓箭的图,有点类似流星。见下图
Volley's Name
其实,从这幅图,我们也可以看出来,Volley特别适合数据量不大但是通信频繁的场景。

1.1. Volley引入的背景
在以前,我们可能面临如下很多麻烦的问题。

比如以前从网上下载图片的步骤可能是这样的流程:

在ListAdapter#getView()里开始图像的读取。
通过AsyncTask等机制使用HttpURLConnection从服务器去的图片资源
在AsyncTask#onPostExecute()里设置相应ImageView的属性。
而在Volley下,只需要一个函数即可,详细见后面的例子。

再比如,屏幕旋转的时候,有时候会导致再次从网络取得数据。为了避免这种不必要的网络访问,我们可能需要自己写很多针对各种情况的处理,比如cache什么的。

再有,比如ListView的时候,我们滚动过快,可能导致有些网络请求返回的时候,早已经滚过了当时的位置,根本没必要显示在list里了,虽然我们可以通过ViewHolder来保持url等来实现防止两次取得,但是那些已经没有必须要的数据,还是会浪费系统的各种资源。

1.2. Volley提供的功能
简单来说,它提供了如下的便利功能:

JSON,图像等的异步下载;
网络请求的排序(scheduling)
网络请求的优先级处理
缓存
多级别取消请求
和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)
2. 使用前的准备

引入Volley非常简单,首先,从git库先克隆一个下来:

1
git clone https://android.googlesource.com/platform/frameworks/volley
然后编译为jar包,再在自己的工程里import进来。

注意,这个库要求最低SDK版本为Froyo,即至少要设置android:minSdkVersion为8以上。

3.使用例子
下面简单看看如何使用Volley

3.1. 最简单的get请求
这个例子很简单,从网络取得JSON对象,然后打印出来。

1
2
3
4
5
6
7
8
9
mQueue = Volley.newRequestQueue(getApplicationContext());
mQueue.add(new JsonObjectRequest(Method.GET, url, null,
            new Listener() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.d(TAG, "response : " + response.toString());
                }
            }, null));
mQueue.start();
3.2. 给ImageView设置图片源

1
2
3
4
5
// imageView是一个ImageView实例
// ImageLoader.getImageListener的第二个参数是默认的图片resource id
// 第三个参数是请求失败时候的资源id,可以指定为0
ImageListener listener = ImageLoader.getImageListener(imageView, android.R.drawable.ic_menu_rotate, android.R.drawable.ic_delete);
mImageLoader.get(url, listener);
ImageLoader的方法都需要从主线程里来调用。

3.3. 使用NetworkImageView

Volley提供了一个新的控件NetworkImageView来代替传统的ImageView,这个控件的图片属性可以通过

mImageView.setImageUrl(url, imageLoader)

来设定。而且,这个控件在被从父控件detach的时候,会自动取消网络请求的,即完全不用我们担心相关网络请求的生命周期问题。
示例代码如下:

1
2
NetworkImageView view = (NetworkImageView) findViewById(R.id.network_image_view);
view.setImageUrl(url, new ImageLoader(mQueue, new BitmapCache()));
3.4. 使用ImageLoader

1
2
3
4
5
6
7
mImageLoader = new ImageLoader(mRequestQueue, new BitmapLruCache());
... ...

if(holder.imageRequest != null) {
    holder.imageRequest.cancel();
}
holder.imageRequest = mImageLoader.get(BASE_UR + item.image_url, holder.imageView, R.drawable.loading, R.drawable.error);
注意,这里使用的不是ImageView控件,而是Volley新提供的com.android.volley.NetworkImageView。

另外,注意这里:

1
mImageLoader = new ImageLoader(mRequestQueue, new BitmapLruCache());
ImageLoader构造函数的第二个参数是一个ImageCache的实例(严格来说,是实现ImageCache接口的某具体类的实例)
ImageCache的定义如下(在ImageLoader.java里):

1
2
3
4
5
6
7
8
9
/**
 * Simple cache adapter interface. If provided to the ImageLoader, it
 * will be used as an L1 cache before dispatch to Volley. Implementations
 * must not block. Implementation with an LruCache is recommended.
 */
public interface ImageCache {
    public Bitmap getBitmap(String url);
    public void putBitmap(String url, Bitmap bitmap);
}
下面的网址一个lru的cache实现例子,请参考:

https://github.com/suwa-yuki/VolleySample/blob/master/src/jp/classmethod/android/sample/volley/BitmapCache.java

3.5. 使用自己定制的request

我们也可以通过继承Request根据自己的需求来定制自己的request

1
2
3
4
5
6
7
8
9
10
11
12
13
@Override
protected Response parseNetworkResponse(NetworkResponse response) {
    try {
        String json = new String(
                response.data, HttpHeaderParser.parseCharset(response.headers));
        return Response.success(
                gson.fromJson(json, clazz), HttpHeaderParser.parseCacheHeaders(response));
    } catch (UnsupportedEncodingException e) {
        return Response.error(new ParseError(e));
    } catch (JsonSyntaxException e) {
        return Response.error(new ParseError(e));
    }
}
这段代码节选自: https://gist.github.com/ficusk/5474673

里面使用的gson(com.google.gson.Gson)是JSON的序列化和反序列化的库,可以在JSON和java model object之间进行转换。

以下是使用自定制request的例子:

1
2
3
4
5
6
7
8
mRequestQueue.add( new GsonRequest(url, ListResponse.class, null,
    new Listener() {
        public void onResponse(ListResponse response) {
            appendItemsToList(response.item);
            notifyDataSetChanged();
        }
    }
}
4. Volley的架构设计

Volley使用了线程池来作为基础结构,主要分为主线程,cache线程和network线程。
主线程和cache线程都只有一个,而NetworkDispatcher线程可以有多个,这样能解决比并行问题。
具体可以参考下图,此图节选自Google I/O 演讲
Volley Thread image

Main Thread

如果在一个Activity里面启动了网络请求,而在这个网络请求还没返回结果的时候,如果Activity被结束了,则我们需要写如下代码作为防守:

1
2
3
4
5
6
@Override public void onPostExecute(Result r) {
    if (getActivity() == null) {
        return;
    }
    // ...
}
Activity被终止之后,如果继续使用其中的Context等,除了无辜的浪费CPU,电池,网络等资源,有可能还会导致程序crash,所以,我们需要处理这种一场情况。

使用Volley的话,我们可以在Activity停止的时候,同时取消所有或部分未完成的网络请求。

Volley里所有的请求结果会返回给主进程,如果在主进程里取消了某些请求,则这些请求将不会被返回给主线程。
比如,可以针对某些个request做取消操作:

1
2
3
4
5
6
7
@Override
public void onStop() {
    for (Request <?> req : mInFlightRequests) {
        req.cancel();
    }
    ...
}
或者,取消这个队列里的所有请求:

1
2
3
4
@Override pubic void onStop() {
    mRequestQueue.cancelAll(this);
    ...
}
也可以根据RequestFilter或者Tag来终止某些请求:

1
2
3
4
5
6
@Override public void onStop() {
    mRequestQueue.cancelAll( new RequestFilter() {})
    ...
    // or
    mRequestQueue.cancelAll(new Object());
    ...
5.总结

从演讲的例子来看,Volley应该是简化了网络通信的一些开发,特别是针对如下两种情况:

JSON对象
图片加载
但是这个东西也有不实用的地方,比如大数据(large payloads ),流媒体,这些case,还需要使用原始的方法,比如Download Manager等。
总之,如果你要编写网络程序,是不是可以考虑开始使用Volley呢?
更多内容,可以从源代码获取,见下面附录的连接1.



附录、参考link:
1. Volley主页 https://android.googlesource.com/platform/frameworks/volley
2. Google I/O Volley演讲 http://www.youtube.com/watch?v=yhv8l9F44qo&feature=player_embedded
3. Android Tips #51 ネットワーク通信・キャッシュ処理をより速く、簡単に実装できるライブラリ “Volley” を使ってみた http://dev.classmethod.jp/smartphone/android/android-tips-51-volley/
4. Google I/O 2013 – Android : Volley: Easy, Fast Networking for Android http://y-anz-m.blogspot.jp/2013/05/google-io-2013-android-volley-easy-fast.html?m=1

Google工程师将语言翻译变成向量空间数学问题

现有的基于统计翻译的在线工具如巴比鱼和Google翻译,翻译的结果勉强可用,但离完美还相去甚远。现在,Google工程师在预印本网站上发表论文,介绍了一种不依赖于统计翻译的新技术。他们的方法是将语言翻译变成向量空间数学问题,利用数据挖掘技术建模一种语言的结构,然后与另一种语言的结构进行对比。
新 的方法是基于一个概念,即每一种语言都有一套相似的理念,因而使用单词的方式也存在相似性。例如,大多数语言中都有描述相同动物的单词,如狗、猫和牛,这 些单词很可能以相同的方式在句子中使用,如“猫是一种比狗小的动物”。语言中单词之间的关系集合被称为“语言空间”,可类比为一个点到另一个点的向量集 合,能以数学的方式进行处理,例如王减去男性加上女性等于女王(‘king’–‘man’+‘woman’=‘queen’)。在向量空间中,许多语言都 有共通之处,可以利用向量空间线性变换将一种语言翻译成另一种语言。Google工程师表示,新的方法非常有效。

物联网将改变人们的工作方式:10 大理由

随着互联网的快速发展,物联网也在阔步前行,与此同时,物联网对人们的影响也越来越大。如今,诸多IT公司都大量投资物联网,以此将人与设备、设备与设备以及系统与系统连接起来。据市场研究机构IDC的研究人员估算,到2020年时,物与物联网的规模将是比人与人联网的规模高26倍。

如今,从人们与周围事物互动的角度来看,物联网已经在影响人们的日常工作。预计将来物联网还将发挥全新的作用,并将改变人们的交通、交流和协作的方式。为什么呢?以下10大原因将对此问题作出更好的解释。

1、让人们路途中的交通更加快捷

人们约有15%的交流时间花费在路上,约有17%的燃料消耗在等待红灯的过程中。道路上的传感器、交通视频摄像头以及道路的中央分隔带都将影响着汽车与驾驶员的“谈话”方式。通过监控行驶速度、交通信号灯、事故以及当前的路况等信息,编入程序的汽车,甚至是道路都将给驾驶员的移动设备发去最有效的行驶路线,从而减少交通时间,节省燃料,并让人们出行更安全。

2、预测产品的稳定性

在产品出货之后,买方与卖方之间的互动往往就会减少,如果双方没有新的交易或产品出现问题,那么买方与卖方之间的交流也几乎没有。预测技术能够监控产品的“稳定性”,从而在问题出现之前就能够及时地发现问题。在倡导消费者为先的时代,一家公司如果掌握了预测产品性能的监控技术,那将意味着这家公司将能够让消费者感到满意,并避免问题的出现。

3、创建更多的工作职位

数字朝代已经开创了IT工作职位的新时代。随着物联网的兴起,云和大数据相关的工作也越来越专业化。市场研究机构Gartner去年就发布报告称,首席数码官(CDO)的数量正在不断上升。Gartner还预测称,到2015年时,约有25%的公司将设立这样的工作职位,以此来管理公司数字,在这样的形势之下,数据专家也将成为公司的重要资产。在获得了大数据和分析的价值之后,人们也将开始看到更多的首席数据科学家、分析师、甚至是客户满意官员等相关的工作职位,甚至还会出现我们目前还没有想到的职位。

4、提供工作能力

社交媒体的崛起已经为人们的交流和团队协作开创了新的时代。像Box、Skype、Jive和Facebook等有价值的社交工具已经吸引了下一代工人的关注。视频交流和图像交流等也将节省人们的交流时间,同时也让这些社交工具与现代化的协调工作系统不分上下。

5、便于将非结构化数据转化成结构化数据

大数据不仅仅是“大”,而是“巨大”。大数据如果被很好地利用的话,那么将会给商业创造更多的价值,特别是在非结构化数据转化成结构化数据之后。分析数据并将这些分析后的数据整合到有用的信息之后,这些数据将会提供消费者、产品行为、市场状况、员工生产力以及更多的相关有用信息。

6、更利于环境保护

如今,感应器已经在一些办公大楼和家庭内运行,但展望未来,这种感应器将成为现代建筑基础设施的必需品。随着用户在房间或卧室内的移动,安装后的动作感应器也将能够按照用户需求打开或关闭灯光设施、加热器、空调、咖啡机和电视机等设备。这些感应器如今已经整合到盲人设备之中,并利用温度和光线等决定打开和关闭相关设备的时长。最终,这种感应器很好地帮助人们节能,节省资金并保护了环境。

7、更好地定位

物联网让位置追踪服务更加简捷。目前,手机、汽车甚至是医院内的联网设备都能够被定位,从而节省有价值的资源。诸多公司将能够很快地追踪他们业务的每一个细节,包括从库存到订单履约情况等,并根据这些位置信息来部署现场服务和员工。工具、工厂和汽车都将能够连接基于位置技术的网络之中,从而让整个链条更加有效。

8、更加智能化的沟通与服务

即使是水冷却机也能够连接到物联网,从而更好地让人们利用更多的时间。例如,水冷却机(或咖啡机、快餐店等)都能够更加智能化的记忆用户的个人偏好,并根据声音和动作激活技术提供相应的服务,甚至是按照用户的需求传递饮料,而不需要用户等候。

9、改变医生工作方式

物联网正在改变医生的工作方式、病人的体验以及整个医患关系。如今,病人的病情必须经过医生当面确诊后才能作出评估。将来,物联网将能够让医生直接读到病人身体相关的数据信息,从而让医生远程实时的掌握病人的信息。

10、根据天气状况安排工作

如今,天气预报主要依赖一些卫星和地面天气监测的结果而进行。将来,大量的感应器将会整合到不同的设备之中,以及空中和地面的数据接受站。使用大数据分析来更好地预测地球状况,将有利于人们更加熟练准确的掌握天气状况和气候变化情况,这样将能够进行更加准确的天气预报,从而让人们更好的规划一周的工作。从全球范围来看,物联网将意味着人们能够更加准确地预测气候变化趋势和自然灾害情况。

2013年10月1日星期二

保险箱的故事:贪欲、情意、道义



作者:杨恒均   标签:十一国庆情报2013-10-01 00:11 星期二


那是我在华盛顿工作时。一位国内朋友打电话给 我,说要介绍华盛顿一位王太太来见我。我和王太太相约在乔治城大学西门国民银行对面的咖啡厅。王太太大概五十岁的样子,一身素装加上她得体的举止说明她曾 经是一位优雅的“夫人”。但脸上的皱纹刻出深深的忧愁,握手时竟然发现她手上有硬硬的茧。电话中朋友介绍说,她丈夫是安徽省的一位厅级干部,五年前因贪污 受贿被抓,判了无期。她和儿子在美国生活,幸免于难。

“杨先生,我知道你是干什么的……”刚刚坐下,她就冒出这样一句,让我立马起了一身鸡皮疙瘩。要知道,华盛顿这个鬼地方,墙上的每块砖里都可能装有窃听器,街道上的每一根灯柱都可能是一个隐藏的摄像头。我不能不保持警惕。

“我不明白你在说什么。”我语气明显有些冷淡地 说,盯住她的眼睛。她有些惶恐,双手抓着斜挎的名牌小皮包,手指在无意识地磨擦着早就退了色的小黄牛皮,目光好几次扫过我,却始终回避我的目光。“您别误 会,杨先生,我知道您在国内有关系,您能帮我。”她说着,幽幽地叹了口气。我们两人于是都放松了下来。

我问她什么事。她开始讲起故事。她说,十年前, 丈夫把她们母子两人送到美国来生活,他自己开始了在国内的“裸官”生涯。好在每年,他都会以出公差的机会到美国来一趟,后来国内收紧了干部出国,他就利用 到香港或其它地方的机会偷偷飞来美国同她们团聚。当然,她和孩子也会在圣诞长假回国去住一个多月。

看到我有些不以为然的样子,她说:“杨先生,您别误会,我们也没有多少钱,在这里过着普通人的生活。他就给我们生活费和孩子的学费。”

我“嗯”了一声,表示理解,点头示意她继续讲下 去,她说自己直到他东窗事发,被判了无期徒刑,才知道他贪污受贿了一千二百多万,还有三个情妇、二奶。她说:“他被抓,国内的房产和存款全部被冻结了,恨 归恨,但我们今后怎么生活呢?这才是我立即想到的问题”她说,这时她才突然想起来,他在美国国民银行开过一个保险箱。他每次来美国,都会去国民银行处理有 关保险箱的业务。保险箱的钥匙就留在她手里,但他每次都严肃地交代,没有他的同意,绝对不许去打开保险箱。

我“哦”了一声,一下子就来了精神,我挪动了一下屁股,心里想,她丈夫五年前就被判了无期,那么,她显然早就打开了那个保险箱,里面会是什么呢?难道我的机会来了?

我的同事曾经处理过一个案子。那是一位副部级官 员,被抓后,办案的中纪委同志发现他身上有一把保险箱的钥匙,追问之下才知道保险箱是美国洛杉矶美国银行的。中纪委同志不敢掉以轻心,通过相关部门安排, 最后由我这位同事拿着已换成了他的头像的那位副部级官员的护照,“合法”进入银行取出了保险箱。

好家伙,里面全是国家绝密和机密级的红头文件。 经进一步审问发现,这位贪官为自己留了一条后路,把国家绝密文件偷运出国,存放在银行的保险箱里,希望在某一天自己因贪污被抓后,手里有讨价还价的资本, 至少能用绝密文件换回自己的一条命。但相关部门并不相信他,认为他有可能是在某一天发现自己已经无钱可贪后,潜逃国外,靠出卖这些绝密文件再赚最后一笔黑 心钱。

真是聪明反被聪明误,他竟然把保险箱的钥匙带在身边。结果,原本犯了罪不致死的贪污腐败罪,结果后来反而因严重危害国家安全罪而被秘密处决了。成功处理这一危机事件的同志,包括我的那位同事都立了功,受到上级嘉奖。

莫非,我立功的机会来了?我强忍住兴奋,假装低头漫不经心地看了一眼手表。果然,她注意到这个动作,急切地说,“杨先生,我知道您很忙,我马上就讲完。”

她没有继续讲,而是向邻座的一位年轻人招了招 手,那年轻人向我们走来。我心里很不是滋味,“老狐狸”竟然被一位家庭主妇给玩了,邻座被她安排了暗桩,我竟然没发现。她当然没有察觉到“老狐狸”心中的 滋味,我听她说:“他出事后,我就打开了那个保险箱,保险箱是用我们两人的名字开的,有证件和钥匙就能打开。”

“里面有什么材料?”我终于还是没有能够忍住好 奇心,急切地问。她不解地看了我一眼,“材料?什么材料也没有。”我的提问显然是多余的,因为,那个帅气的年轻人过来微笑着打招呼后,已经把一个不起眼的 纸质盒子从提包里取出来,放在咖啡桌上。我的眼睛一下子亮了,如果没有猜错的话,这就是从保险箱里取出来的东西。

王太太双手放在纸盒上,向我介绍这位“年轻人”,原来是她儿子,毕业才两年的医生,且因常常为华人社区免费服务而小有名气。我在当地华人媒体上看到过对他的报道。看到这位阳光、小有成就的年轻人,我怎么也无法把他和那位判终身监禁的贪腐厅长联系在一起。

“五年前他被抓时,我就打开了保险箱,看到这些东西,”她说着,轻轻打开纸盒的盖子,我起身向里面看一眼,就立即明白了。除了一两本看上去是香港的存折外,其它的物件是江诗丹顿、劳力士钻石金表、卡地亚钻戒、珍珠项链等等,只要一眼,我就能够折算出,市场总价应该在300万美金左右。这个数字在当时还是很大的,而且是我只在香港商店橱窗里见到过的金银珠宝。即便我再训练有素,也忍不住惊形于色。

反观这位王太太,反而显得很平静。她开口道:“他当时被指控贪污腐败的数字虽然有一千二百多万,但由于无法还回去而被判了无期。我以为他都把钱花在情妇身上。打开这个保险箱后,我才知道都放在这里。”

她停了一下,继续说:“当时中美之间转移资金还不是太容易,每笔进来美国的钱都得有记录,他一定是利用人员进来可以随身携带自用的金银珠宝这个办法,把他贪污受贿的钱都在香港换成了这些金银珠宝,然后存放在这个保险箱里。”

想起她手上的茧,我有些疑惑,她不是五年前就打开了这个保险箱,为什么手上还有干粗活的新茧。我换了一个方法问她,“你为什么现在拿这个箱子来找我?”

她咳嗽了一下,示意让儿子回到原来他自己先前的 那个座位上,然后开口对我说:“当时打开这个箱子,我惊呆了,由于害怕加重他的罪行,也担心牵连我们母子,我又原封不动地放了回去。之后,我和儿子开始过 隐姓埋名的生活,没有了他汇过来的生活费,我也开始学会打工养活我们两人。儿子从那时也开始变得懂事起来,身上的纨绔子弟味道一夜之间消失了,他努力学 习,用最短的时间拿下了医学硕士学位。”

她说,“两年后,事情平静下来,我想也许可以打 开保险箱了,毕竟,里面大概有四五百万美金吧,拿出来可以改善我们母子的生活,我也不用去给杂货铺打工了。就在我打开保险箱的时候,我突然想起了因为这些 财物而失去自由的丈夫,也想起我平时看到的在美国生活的中国官员子女们,奢华无度,开名车住豪宅,却一事无成。如果我现在把这些钱拿出来,会不会不久之 后,我儿子也会变成那个样子?”她告诉我,这个念头一起,她几乎当即就决定,把保险箱放回原处,不打开了。今天是她第三次取出保险箱里的东西。

我想起了他儿子在华人社区的声誉,心中暗自承认她做了一个正确的决定。因为工作关系,我以前也帮一些大陆领导的孩子在美国张罗一些事,我发现,这些孩子基本上都废了。有些商人和学者的孩子,虽然也有钱,可人家长大了,基本上都有一技之长。唯独这些“裸官” 的孩子,他们自己都不知道父母是如何“空手套白狼”,轻松赚到那么多钱的,自然也不会珍惜这些钱,也不知道如何去“继承”父辈们赚钱的革命事业。久而久之,几乎个个成了比纨绔子弟还不如的东西。

“可你现在拿出来给我看,为什么呢?”我问她。她苦笑一下说,“我们现在母子过得都不错,可他却被判了无期。这箱东西对我们真没有什么用处,还害他失去了自由。如果我儿子得到这些钱,会如何呢?”

我“嗯”了一声,有那么几秒钟,幻想了一下这些 钱可以包养多少大陆妹,超女包得到吗?还是《红楼梦》剧组的那些演员?我舔了舔舌头,强迫自己收回了邪恶的心思。这时她也切入了正题:“杨先生,我知道您 神通广大,还有一些重要关系,我想请您帮忙,如果我把这个保险箱送回给国家,国家可以让我丈夫出来吗?我知道,他的身体很不好,我担心他在里面活不了几 年。”

这个故事就这样讲完了。我向一位领导做了汇报,结果被他狠狠批了一顿,他说国家缺这个保险箱里的破玩艺吗?我们国家都大国崛起了,几百万美金算得了什么?你竟然辜负党的培养,不务正业,差一点就暴露了自己的身份,我看你是见钱眼开!

我被骂得找不到北,回华盛顿后也不好意思再联系王太太,只有时不时看到她儿子又有新的成绩,为华人社区做了贡献,心中暗暗高兴一阵。

又过了五年,有一次我从香港登上飞往旧金山的飞 机,竟然遇到了王太太。想起上次人家托我的事,我有些尴尬,但王太太却落落大方。她让我帮她把箱子拿下来,然后小心翼翼地打开,箱子盖掀开时,我看到被丝 绒缠着一个方盒子。我心中暗自惊讶,难道她把价值连城的保险箱带在身边?她看出了我的讶异,轻轻说:“这是他的骨灰盒。他得了癌症,保外就医一年后就走 了。我回来带他去和儿子团聚。”



不久,我就忘记王太太长得什么样子了,但一个装 满了金银财宝的保险箱,常常出现在我的脑海里。有几次,还进入到我的梦中,不过并不是什么黄粱美梦,因为那保险箱出现后,几乎都会一下子变换成了骨灰盒, 弄得我醒来时发现自己一身冷汗。我一直想写出这个故事,却又不知道意义在哪里。后来,我对父亲讲了这个保险箱的故事。父亲听后想了好一会,才对我说,“我 也给你讲一个保险箱的故事。”

我差一点笑出来,我原本讲这个故事时,还担心父亲没有听说过什么叫“保险箱”呢,没想到,父亲也有一个关于“保险箱”的故事。更没想到的是,父亲所讲“保险箱的故事”比我碰上的那个更好听。

父亲讲的是两位和他同龄的老年夫妇的故事。当然,回到上个世纪四十年代,他们可都是风华正茂的年轻人。男的出生于一个拥有四十亩地的较富裕的农家,女的是贫苦雇农的女儿。两人相爱,发誓要天长地久。

但那时要天长地久可不是太容易。日本铁蹄横踏中国,随后又三年更加残忍的内战。在日本侵略者侵入他们村子时,男孩子用床单裹起家里仅存的三根金条,缠在腰间,牵着姑娘逃难去了。那一夜他们以为会被追上杀死,或者被流弹击中再也起不来。他们跑啊跑啊……

他们就是在逃难途中结婚的,当然那时没有什么结婚证,1949年后新政府成立后,补办了一个。结婚时相当简陋,新娘曾问起三根金条,要不要切出半条办婚事呢?新郎说,今后日子还长呢,我们不摆排场。新娘很赞成,于是成了他的妻子。

没有想到的是,今后太久的日子里,也始终无法拿出那三根金条。1949年10月1日后,打土豪、分家财,土地革命,反右、大跃进、文革……一个接一个,别说把三根金条拿出来卖钱,就是被人知道你有三根金条,恐怕都难逃一劫。

妻子一开始还不理解,在丈夫的反复劝说下,以及 看到村里和公社的有钱人都被打趴下,甚至被枪毙、活埋,才知道问题的严重性。她支持丈夫把金条深深埋进三米深的地下,这样,就是日本鬼子再进村,用探雷器 也找不到的。埋之前,他们家已经揭不开锅了,她对丈夫说,她想看一眼那三根金条,结果被丈夫数落了一顿。隔墙有耳啊,丈夫说,现在知道这三根金条的,只有 我们两人,今后再看吧,来日方长,我们不是要天长地久?

就这样,她亲眼看到丈夫忙了一晚上,把用旧床单 缠得紧紧的三根金条深深埋进床下三米深的地方。但即便有三米,即便差一点在大跃进中饿死,当他们每晚睡在三根金条上时,还是感觉到一些同村人没有的希望和 信心。别人都不知道为什么这两口子比其它人过得更扎实,更充满希望的样子。他们一起生育了四个孩子,三个儿子,一个女儿。

等到1976年 邓小平复出开始搞改革开放,鼓励个体户时,三个大的孩子都参加工作了,小的也考上了省城的中专。有一晚,妻子突然提起床底下三米深的地方还有三根金条。如 果拿出来变现,不是可以让孩子们去做一些小生意?丈夫一开始也觉得这主意不错,但想了想还是认为不合适,他说,虽说现在大家都解放思想了,但突然拿出三根 金条,会不会引起误会?再说,会不会变天还说不准呢。小平的地位还不是太稳。

丈夫还说,现在国家政策好了,提供了很多机会,我们有手有脚,为什么不能像一些“万元户”一样,白手起家?他说着说着又笑了,当然,我们不是“白手起家”,我们有三根金条!

妻子——哦,现在叫老伴,老伴一听,觉得丈夫——哦,现在叫老头子,总是有道理的。于是就像她这一辈子做的事一样,又一次赞成了老头子。为此,他们举行了第一届家庭会议,那大概是1982年 的春节。老头子对孩子们说,现在党的政策好了,你们应该想着去做一些事,自力更生,不要手里捧着铁饭碗不放。老伴又补充说,你们不要担心,不要有后怕,要 大胆地向前闯,我和你们的爸爸是你们坚强的后盾。只要你们大胆地闯,大胆地做,失败了也没有关系,回到我们这里来,我们养着你们。

四个孩子都很惊讶,也很兴奋,小儿子调皮地说,妈,我又不吃奶水了,你用啥养活我哦?

说到这个份上,老伴只有求助老头子了,她向老头 子眨眨眼,老头子就不能不开口了。于是,他告诉了孩子们三根金条的故事。孩子们像听童话故事一样,越来越兴奋。他们还寻问了三根传说中金条的成色和重量, 最后得出结论,按照当时的金价,大概能卖十几万,这在当时可是一笔巨大的财富。最后孩子们一致建议,金条不能埋在地下,必须挖出来,存放进银行的保险箱 里。他们准备帮父亲挖,帮父亲去存。但被父亲拒绝了,父亲说,这事由我和你们妈妈做就行了,你们去做自己的事,忘记这三根金条,记住我和你们的妈就可以 了。

于是老头子又用了整整一个晚上,把金条挖了出来。然后他用一条新的床单裹起来,放进一个小盒子里,第二天就去中国银行开了一个保险箱。老头子发现保险箱收费很高,有些心疼。最后被老伴讥笑了一顿,才下了决心。

保险箱不但要收费,而且每年都得交一次。老头子 每年都用交费的时间去探望一下保险箱里的金条们,回来后喜滋滋地告诉老伴,一点都没有少。老伴就开心的笑了,这一笑就又年轻了十岁。老头老伴并不因为有三 根金条而懈怠,正相反,他们因为有了三根金条而更加努力地工作,老头子种花,老伴去街上卖,卖的钱用不完,还补贴四位子女去创业。当然,这几十年,孩子和 老两口也遇到过经济不景气或者挫折,孩子们和老伴也多次动了干脆把保险箱里的金条变卖掉的念头,但最后,都在老头子的循循善诱下,放弃了。放弃了金条,他 们没有放弃奋斗,每一次,又都闯过了难关。

有这样父母,四位子女也自然非等闲之辈。他们做生意的赚到了钱,教书的也成了模范教师,在政府部门工作的,也认真负责,绝对不去搞贪污腐败。一家人过得幸福开心。

父亲讲到这里,突然停了下来。我问,“你保险箱 的故事讲完了?”父亲说,“差不多就这样了。”随后,他叹了一口气说,“不久前,老头子去世了,老伴也快八十岁了。办完丧事,她带四位子女一起去到中国银 行,打开了保险箱。这条曾经是新的床单也显得破旧了。由女儿小心翼翼地打开床单——结果,哪里有金条?只有三块细细的发黑的砖块。

砖块下面还压着一封信,那是老头子留下的:“孩 子妈,对不起你啊,那三根金条早在我牵着你的手逃难时就跑丢了,但我不知道怎么对你说。这么多年,我一直想对你说,一开始,担心你嫌弃我,会离开我,后来 又担心我们没有了这三根金条,那些无法忍受的苦日子如何挨得过去?等孩子出去拼搏时,我担心如果告诉他们,他们也许就失去了胆量……孩子他妈,孩子们早都 拥有了远远超过三根金条的财富,有了这样的子女,我们也不需要金条了,但我就是不知道如何向你开口。你们其实就是我的金条,支撑了我一辈子……”



我曾经问过父亲,你说的这故事是不是真实的?父亲的老友我基本上都熟悉,但就是对不上号。父亲始终没有告诉我,如今父亲已经于去年一月份永远地离开了我。我想把父亲的故事写出来,可是,这是真实的事件,还是父亲随后编的故事呢?从此以后,我脑海中又多了一只保险箱。

不久前,我在北京见到一位老领导,同他吃饭时,我也不知道怎么就讲起两个保险箱的故事。他饶有兴致地听我啰嗦完,沉吟了一会,对我说,“小杨,我也有一个保险箱的故事,你要不要听?”

我惊喜得差点从椅子上跳起来。大家知道我写过一 套间谍小说《致命系列三部曲》,其中很多精彩的内容就是这位老领导讲给我听的,但后来他看到这套书后,责怪我怎么把他的故事都写出来了,之后就不再告诉我 新的故事。现在他又要讲故事给我听?我太兴奋了,他可是跟随周恩来、熊向辉这些人长期从事秘密战线工作的老前辈,他的故事,哪一个不精彩?

我无法掩盖自己的兴奋。我讨好地问,“周局长,这故事发生在中国吗?需要我保密不?我不会乱写的。”

他说,不用保密,不是发生在中国。我追问一句,那发生在哪里呢?他说,缅句。缅句国。

我有些疑惑,但没有进一步追问。下面是周局长关于保险箱的故事——哦,对了,他20年前退休时是共和国情报局最资深的情报局长(见《情报局长》)

J 君 是缅句国的情报人员,大学毕业后就为缅句国军政府服务,曾经在周边国家泰国、老挝、美国和法国从事过情报工作,成绩卓著。但就在他潜伏在海外为独裁的军政 府收集情报这段时间里,他发现了缅句国存在一些严重问题:政府治理、发展经济都无能,官员却贪污腐败、鱼肉百姓,独裁将军们欺骗、欺压民众……这些发现渐 渐变得越来越强烈,也让他越来越痛苦。他的思想最终发生了变化。

作为一名情报人员,忠于国家、忠于政府、忠于人民几乎是最基本的要求。可是,他最终认识到,这三个“忠于”却是互相矛盾的,你如何做到既忠于一位独裁的军政府,又忠于被独裁愚弄和欺压的民众呢?

这种矛盾心理终于让他无法再为军政府收集情报。 那时他因为工作需要已经带妻子与两个女儿移居到泰国曼谷。他向缅句国国家情报局提出辞呈。缅句国当局当然觉得很遗憾,但由于他确实曾经为国家与军政府效劳 有功,也就没有为难他,同意他在泰国定居,且给他发了一笔优厚的“退休金”。对他来说,这个政府对他可谓“有情有义”了。

但这种“情义”只让他安静了两年左右,他就再也 坐不住了。在泰国期间,他了解到更多缅句国独裁军政府欺负民众、抵制民主,剥夺民众知情权与各种自由的恶行。他曾经被这个政府培养、教育要爱国,要抵制敌 人对缅句国的侵略和渗透。现在,他才猛然发现,缅句国最大的敌人就是独裁专制,就是军政府。于是,像大学毕业时毅然投身军政府的情报机关,为独裁效劳一 样,觉醒过来的他,毅然决然地再次做出决定:回到缅句国,为民众维权,告诉他们人权的道理,传播民主自由的理念。

对于这样一个曾经的热血青年,如今的热血中年,做出这样的决定并不是什么难事。在他之前和之后,缅句国都出了无数可歌可泣的仁人志士,同独裁专制、同军政府做斗争。但对于J 君来说,情况有些不同,他曾经深入军政府体制内,且是一名不折不扣的“狗特务”和“既得利益者”,如今他和妻子以及两位女儿幸福地生活在泰国曼谷,衣食无忧。如果再回去同那些仁人志士一起战斗,他可能会因为自身的经历而做出更有效的事,但军政府如此熟悉他,能放过他吗?

当然,更艰难的是,如何说服妻子?两个女儿还在 读小学,如果他出事,孩子怎么办?那段时间,他异常痛苦,但最后还是决定回去,投身到为祖国争取自由和民主的斗争中。只不过,他走之前,在曼谷汇丰银行开 了一个保险箱。他把这些年的积蓄,尤其是军政府奖励他的那些“退休金”,还有他如果出事后,妻子应该如何做,找什么人帮忙的信息都写在一个本子上,全部留 在了保险箱里。回国前,他交代妻子,如果他出事了,才打开保险箱。否则,任何时候,都不要打开这个保险箱。

讲到这里,周局长停了下来,我去为他冲了一壶茶。我问他,他出事了?

周局长说,其实你认识他,而且你们还很熟。哦,当然出事了,只不过,并不是一回去就出事,事实上,缅句国军政府中也有改革派,而且在国际压力尤其是国内维权人士、公民律师与越来越多觉醒的民众推动下,也有了一定的改革意愿。J 君在这个时候回到缅句国,正是时候,他做了不少的事,且都没有受到直接的干扰。

不过,从二战后赶走英国殖民者与日本侵略者就被本国独裁军政府霸占的缅句国,保守势力与利益集团也是非常强大的,他们不时对党内的改革派与觉醒的民众发起攻击,有时用枪杆子屠杀,有时用笔杆子杀戮。但不管怎样,J 均就一如既往的温和而不懈地传播民主与自由理念,他相信只有大多数缅句国民众觉醒了,缅句国自然会回到人类正确的一边。

当然,这期间,他不得不兼顾家与国,经常要来往 缅句国与泰国之间。虽说军政府没有过多为难他,但他做的这些事毕竟不受欢迎,首先他的经济来源被切断,几乎无法在缅句国找到有可以领取工资的工作,其次, 当局还不停为他设置障碍。当然这些都没有吓住他。只不过,他们家庭的生活水平每况愈下,条件越来越艰难。到最后,两个孩子几乎都只能靠他妻子在泰国打工赚 钱养活了。

每次回到缅句国,他都会去曼谷汇丰银行,去看看 自己租的那个保险箱,回来后,也会一如既往地交代妻子,如果他出事了,再也回不来了,她必须立即打开保险箱,找到解救他的办法,如果这办法无效,就用里面 存放的一些钱,和孩子好好过日子。他是为理想与事业而失去自由,她不必过于悲伤。但他交代,保险箱里的钱财,是用来“保险”的,现在我们有手有脚,不能 用。

就这样,十几年过去了。虽然J 君等个人的作用有限,但还是多少影响了一些缅句国人民认识外界与自身,并开始独立思考,也直接促使一些缅句国民众投身到争取自由与民主的实际行动中。这就不能不引起缅句国当局的警惕与忌恨。一开始,他们认为包括J 君在内的这些人不会成大事。但看到他们一年一年坚持不懈地“煽动”民众认识自己的权利,也渐渐把持不住了。

终于这一天到来了,J 君被缅句国军政府警察秘密逮捕。J 君一直以来都默默无闻,更无法同缅句国那些民主勇士们相提并论,他被捕的消息传出来后,妻子伤心欲绝,以为再也见不到他了。她早就知道会有这一天,但当这一天到来时,她还是无法接受。他们原本过得好好的,甚至不必再回到缅句国了,J均为什么要折腾啊?

她想起了J 君的交代:保险箱。里面存有J 君 在缅句国军政府高层的旧同事与老领导的联系方式,如果出事,由妻子联系他们,他们想必会出面帮他的,至少可以判得轻一点。还有,他第一次回国前带她看过保 险箱,里面至少有半箱子现金和可以兑换现金的财物。她谨记丈夫交代,平时再穷困,也不想着保险箱里的钱财,但现在,丈夫被捕了,据《曼谷日报》报道,要想 短期内出来,可能性不大。她应该打开保险箱了。

她同一位当地的记者朋友一起来到曼谷汇丰银行,由于保险箱是使用夫妻二人的名字开的,出示了证件后,工作人员把他们两人领进了保险库。可是,当她当着记者朋友的面打开保险箱时,惊讶得目瞪口呆。

“怎么了?”我急不可耐地问周局长。

周局长却不慌不忙,喝了一口茶,慢悠悠地说:“保险箱是空的!”

“空的?”轮到我惊讶得目瞪口呆,“不可能吧,怎么会是空的?”

“是的,是空的,空空如也,连一分钱、一张纸条都没有。”周局长加重语气说,然后就闭上了眼睛。我却急得一塌糊涂,连续追问了好几次,“那J 君不是没有希望出来了?可怜他的老婆女儿怎么办?唉……”

周局长突然睁开眼睛,盯住我说:“真奇怪,你是装糊涂还是怎么回事?你和他那么熟,难道不知道他不久就被释放了,回到了泰国?”

哦,我和他很熟吗?有点明白过来,我还是百思不解,不过我知道再问,这死老头子也不会告诉我。我听到他说:“J 君回到泰国,夫妻团圆,皆大欢喜。妻子抱住他,两人喜极而泣。不过,擦干眼泪后,妻子也嗔怪他,为什么保险箱是空的?”

他不好意思地说,因为太投入到自己的事,几乎没 有时间和精力赚钱,为了支持自己的行动,更为了给同他有相同理念的人一些经济上的支持,他每次回来就忍不住从保险箱里取走一些现金或财物,反正他心里想, 这些也是他为那个独裁军政府工作换来的。不过,久而久之,就“坐吃山空”了。至于那些关系网与求助信,J均解释道,我为了国家与民众,问心无愧,为什么需要那些人来帮助我?难道不是他们更需要我来帮助他们,帮助他们站在人民一边,站在人类历史正确的一边?

啊,我忍不住为周局长这段话鼓起掌来,虽然这段话是他引述J 君夫妻的对话,但从我敬佩的周局长口中说出来,几乎令我流出了眼泪。不过,我就忘记问他,既然是人家夫妻之间的对话,你一个身在中国的病恹恹的老头子,怎么会知道的?

这个不重要,不是吗?重要的是,经过这些年的努力,J 君和他那些朋友的做法不但得到了民众的支持,国际社会的关注,也得到军政府内部有良心军人的默认。J 君不但被释放,军政府还开始进行一系列的改革,答应释放所有的政治犯,开放对媒体的限制,积极准备2015年的全民大选……

“现在,我的故事讲完了。”周局长说罢,放下茶杯,手却没有离开茶杯,指头在杯子边轻轻敲打,我知道他在思考,果然,他又开口说话了:“在你的第一个故事里,保险箱里装了满满一箱子金银财宝……”

“嗯,”我知道我敬佩的周局长又来点拨我了,我抢着说,“那不是满箱子的金银财宝,那是专制、腐败与贪欲,是死亡与骨灰。”

“在你第二个故事里,那个保险箱里装的什么?”周局长眯着眼睛问我。

我想了一下说,“不是砖头,更不是三根金条,而是亲情、信任、希望与奋斗。”

“好,”老领导看起来对我很满意的样子,“这两个保险箱有什么关联?”

我脑袋瓜子快速的运转着,不到一分钟,我就找到 了答案:“国家原本应该扮演第二个保险箱里的那三根金条的角色,给民众希望,支持民众去奋斗,而不是让民众担惊受怕,忍受极权的腐败堕落。而从某种意义上 说,正因为第一只保险箱装了满满的金银财宝与贪欲,才把第二只保险箱里的金条变成了砖头……周局长,我的理解正确?”

我明知周局长永远不会对我的意见做出“正确”与“错误”的回答,还是故意这样问他。果然,他根本不理我的问题,继续问道:“那我故事中那只空空的保险箱里又装满了什么?”

周局长的问题把我吓了一跳,那个保险箱里不是空空如也吗?为什么他会问“装满了”什么,看到老局长突然间目光如炬,我醍醐灌顶,立即明白了过来。但我却竭力压住情感,用淡淡的声音说:“那个保险箱根本不是空的,那里装满了道和义。”

好了,我的三个有关保险箱的故事都讲完了,我想问一下,你有保险箱吗?里面装的是什么呢?

杨恒均 2013.10.1 《情报局长 》之六,本故事纯属虚构。