关于作者

姓名:

性别:男

出生日期:--

地区:

联系电话:

QQ:--

婚否:保密
用户名:bokii
笔名:bokii
地区:
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



访问统计:
文章个数:19
评论个数:9
留言条数:0




Powered by BlogDriver 2.1

bokii的博客

 

欢迎访问bokii的博客

文章

060610
第一次把你拥入怀中。
从此绝不放手。

- 作者: bokii 2006年06月10日, 星期六 08:52  回复(0) |  引用(0) 加入博采

060606
06年06月06日,都说是千年不遇的好日子。

天黑了,淅淅的下起小雨。

为了珂珂钟爱的麻辣烫,我们从寺里出发,不经意走了好远。

终于坐在村头小吃店里了,这里的东西家乡味儿正。

邻座是一对安详的老人,凉面小笼包,以及絮絮的方言。

隔着窗,外面雨渐渐大起来了,汽车经过,灯照去一路雨花。

薄薄雾气浮在空气里。

面对面地坐着,我们在说些什么?

小丫头有时无话,她在想些什么?



后来我们进入一家书店避雨,

后来我们离了书店,

从雨中,回来。



从一个又一个店铺屋檐下过。

店铺大多打烊了,一个流浪汉瑟缩在树下。

行人很少,珂珂说感觉有些凉。

在北京,淋一场雨多不容易啊!

我们一路走着,一路聊着这有趣的一天。


吃过午饭,我们来到动物园。

从12点多到下午6点多,

跟着珂珂转过一个又一个服装市场。

头一回陪着mm逛街,我被五颜六色,花花绿绿,各式各样的衣服惊呆了!

土里土气地跟在她身后,偶尔幸福的帮她拎拎包。


。。。。。。。。。。。。。。。。。。。。。
珂珂可不简单,眼光严格而老练。

每件漂漂的衣服总能找出缺点,

而另一些,尽管我看起来怪怪的,

她总能发现其闪光点。

走啊,走啊。

一家又一家,一件又一件。

没有一件真正上眼。

不过还好,小丫头心思周到,

也不忘把我也打扮一番。

听着她哂笑着夸赞,

我恍在云端。

陪mm逛街,再累也有甘甜!

珂珂继续搜索,当然我也凭感觉进言。

穿上一个淑女裙,配一个小黄衫,

一个乖乖女就在眼前!

可爱漂亮,我见犹怜。

。。。。。。。。。。。。。。。。。。。。


回到保福寺,已经很晚了。

雨住了,远处的霓灯闪烁,

夜幕下的北京,有喧嚣,有宁静。

旧的一天在飞快的跑掉,

新的一天笑着走来了。

06年06月06日,这个特殊而平凡的日子,

因为珂珂和我在一起,变成了永远值得铭记的一天。

这一夜,我们从安静的街道树下并肩走过,

我却有心无心的忘记了一件事。

- 作者: bokii 2006年06月7日, 星期三 01:06  回复(0) |  引用(0) 加入博采

不可靠的量子计算机
姚期智  

  2000年图灵奖得主,普林斯顿大学计算机科学系教授 

  祖藉湖北孝感,1946年出生于上海,分别于1972年和1975年获哈佛大学物理学
博士与伊利诺大学计算机科学博士。曾先后在麻省理工学院、斯坦福大学、加州大
学伯克莱分校等美国一流高等学府从事教学和研究。1986年至今则一直任普林斯顿
大学计算机科学系教授。他为美国国家科学院院士、美国人文及科学院院士以及
IBM EC系统研究中心和Xerox Palo Alto研究中心的顾问。 

  2000年,他因对计算理论做出了诸多“根本性的、意义重大的”贡献获得计算
机学界的诺贝尔奖——“图灵奖”。 

  在10月份微软亚洲研究院发起的“21世纪的计算”研讨会上,第一个图灵奖华
人得主姚期智发现自己没有足够的时间向听众说清自己正在从事的研究。IBM最近
做出了量子计算机研制的突破,不过看上去离实际可行的计算机还有很远的距离。
量子加密领域的发展比量子计算机要先行一步。 

  这是真的吗?我们忠实的晶体管说:我要么是0,要么是1;而粒子跳出来说:
我可以是0或者1,也可以既是0又是1,我可以在这里或在那里,也可以既在这里又
在那里。 

  这难道不是我们小时候最狂野的梦想吗?在寒冷的冬晨,我们听着窗外呼啸的
风声,希望自己能够舒舒服服地躺在床上,让另一个自己代替我们去上学。粒子确
实可以办到这一点,它不仅可以既躺在床上又去上学,还可以同时在其他宇宙里干
仗,解救被囚禁的奴隶。按照弗莱德金的说法,最小的粒子只需变成一颗bigish星
的大小,就可以完全模拟从大爆炸时期到今天的宇宙的演变过程,这个过程只需4
个小时。我们可以想象,假如粒子具有思维的话,它会在很短的时间内穷尽存在的
可能性,并最终明了上帝的意图。 

  20世纪20年代,海森堡提出量子测不准原理,他发现不可能同时确定粒子的动
量(速度×质量)和位置——这基本上是通过理论推导出来的结论,后来的实验也证
明了这一点——一个电子同时穿过了两条缝。 

  但是爱因斯坦厌恶这个理论,他无法忍受一个创造出不确定存在的上帝。这导
致了1927年那场著名的爱因斯坦-玻尔争论。爱因斯坦相信一定会有一个更深的理
论来同时确定粒子的动量和位置,他的后半生大部分花在寻找这个理论上,但他最
终也没有逮住那可恶的粒子。 

  对自然科学家来说,寻找确定性是一项更艰难的工作,比对社会科学家要艰难
得多。后者总是按照晶体管的方式来安排自己的观点,是或者不是,耶稣存在过或
者没有存在过,特洛伊战争发生了或者没有发生,中国在全球化或者没有全球化—
—他们最终可以用材料的组织方式来证明自己的观点。假如他们不这样工作,人们
会认为他们干得很糟糕。自然科学家在做出结论时则有非常困难的障碍:凡是没有
被证实的你就不能下断言。这个证实过程可能是解一批全世界人加在一起10亿年也
解不完的方程式,或者是期待一个700年后才出现的天文学发现。 

  所以才会有这个笑话,一位从2020年回到2000年的未来人告诉现代人:我们生
活在量子宇宙中,历史可以同时有不同的状态。已发生的可能从未发生,或者以很
多不同的方式发生。“可是我们为什么只有一部历史?”现代人问。未来人说:“
因为有天主教学校。” 

  与传统计算机的二进制原理相比,量子计算机更像是四进制运算——粒子可以
同时进行几种不同的运算。其加密涉及的数学问题极为复杂,比传统的数据计算问
题要复杂得多。量子加密的方式,简单地说,就是让“偷看”密码的行为干扰改
变系统,这样,密码是否曾被破译就能检测出来。就好像说,如果你偷看了我的
信件,我的信就会留下被改动过的痕迹。 

  这是因为量子计算机的不可移植性,它同时也给量子计算机的设计带来无穷尽
的困难。假如,现在有一个拥有两个位的量子计算机,我们想要从一个位将信息抄
到另一个位,也就是用镭射光先去读第一个位的信息,再去写第二个位的信息。如
果本来要抄的状态是0或者1,抄过去会和原来一模一样;但是由于粒子的顽皮,第
一个位经常可以是一个介于0与1间的状态,这时问题就来了:镭射光会把这样的一
个状态变成0或变成1。因此抄过去以后,有一些信息就在这个读取的过程中遗失了
。一个本来就不确定的状态是不能复制的,也不能观测而不干扰它。 

  当有两个以上的位时,粒子还会产生所谓的缠结态entangled states,你
可以想象这是很可怕的状态,就像你本来让几个计算机在进行不同的运算,但是计
算机们忽然决定串通一气,都干同一件事情。这些东西都让量子计算机科学家伤透
脑筋。 

  不善于运用比喻和举例的姚期智发现自己很难向外行人解释,自己正在做什么
。这使人想起一个肖邦的故事,有人问肖邦他刚才演奏的曲子是什么意思,音乐家
一言不发地把曲子再演奏一遍,然后说:“就是这个意思。”同样的,热爱弹奏钢
琴的姚期智感到,如果不是原封不动地用那些公式和理论来叙述的话,他不能解释
自己工作的内容。对量子计算机给未来世界带来的变化,他并没有科幻小说式的预
期。就像那些无处不在的粒子,他的大脑总是考虑各种各样的可能,因此对任何预
测未来的问题他都不愿做出结论。他可能不具备戏剧感,但是他从自己的工作中得
到令人嫉妒的乐趣。对他而言,同行的理解和尊敬远远比大众的仰慕更让他愉快,
虽然后者在不占据太多时间的前提下,也很让他高兴。 

  爱因斯坦将世界视为独立存在于人之外的客观事实,“就像一个伟大恒久的谜
,我们的审视至少可以部分解开它。”在玻尔看来,这个事实并不存在,“没有一
个量子世界,只有一个抽象的量子物理描述。如果你认为物理学的任务是发现自然
是什么,那你就错了。物理学只关心我们能够对自然说些什么。”爱因斯坦采取了
笛卡尔在《沉思》中不得不奉行的准则:“凡是我们理解得非常清楚、非常明白的
东西都是真实的”。这个准则使我们获得安全感,谁愿意相信自己刚刚塞进嘴里的
不是一片面包,而可能是一片棉絮呢? 

  但是另一些科学家们更愿意认同于玻尔的看法,他们在科学为自己建筑的平台
上舞蹈,而不必考虑平台究竟是虚拟的还是水泥的。说到底,你面前这张报纸很可
能并不存在,或者它并一定不是橙红色的,它可能同时还存在于另一个世界,被一
个头上长角的生物阅读着,这个采访与量子计算机无关,而是一个爱情故事。 

  人工智能与量子计算机 

  问:图灵机曾经试图将人的思维量化和逻辑化,这种努力究竟可以进行到哪一
步?现在有研究者认为,人脑运作方式与计算机的工作方式非常相像,有可能用计
算机来模拟人脑的思维吗? 

  答:我的想法恰恰相反。现在很少还会听到有人说,人脑可以用图灵机模拟,
至少现在好像还没有人相信在可见的未来能够用计算机模拟人脑,至于到底人脑算
不算电脑,这还是值得讨论的一个问题。把人脑当成一个计算机,这是一种比较宽
泛的概念,和一般我们解决问题的方法不太一样。不过我觉得这是一个非常非常难
的问题,到底人脑以怎么样的方式在运作,这个方面需要专门的专家,研究脑、神
经的专家,花毕生时间去研究,这是非常非常深的问题。 

  问:是不是所有计算机科学家都有一个共同的想法,即尽量让计算机像人脑一
样思维? 

  答:在人工智能(Artificial Intelligence,简称AI)研究的早期,可能有人
这样想,仍然觉得这是可能实现的。但是现在好像人们不太有这种乐观的想法,现
在人们的目标没有这么高了。 

  问:那就是说,现在科学家提到的AI,和以前科学家提到的AI,所指的已经不
是同一个东西了?不管是在科幻电影中,还是在传统科学家的预想中,AI似乎追求
的就是基本上近似于人的智能水平,依您所说,现在我们提到的AI已经不是以前的
那个方向和目标了? 

  答:当然还是有人对这种最基础的概念有研究兴趣,比如说到底什么叫智能。
但是就现在来讲,研究AI的科学家都是在一个限定的领域里做研究,现在好像已经
没有人还有那种就一般性的模拟智能做研究的想法了。 

  问:这种对不同研究领域的严格划分是否有点像经济学?现在的经济学越来越
多地受到心理学、社会学等其他学科的影响,生物学是不是也会给计算机研究造成
这样的影响呢? 

  答:我想,生物学对计算机最大的影响,是在分子生物学(molecular 
biology)里面,因为这个学科有大量的数据需要计算机帮助他们进行处理。我认为
,在生物学对计算机发展的刺激上,这就是最大的因素。至于在生物学中有哪个方
面能够让计算机去学习和发展成为更好的计算机,目前还不是太明朗。不过确实有
些演算法是模仿了生物学的内在特点,比如说有一派人搞的基因算法(genetic 
algorithm),他们订立一套规则,让不同的算法去竞争,优胜劣汰,最后得到一个
比较优的选择。这些从侧面对计算机科学带来了一些冲击,但不能说它们引起了非
常让人吃惊的结果。 

  问:那您认为目前在科学上比较大的进展是什么? 

  答:在整个科学界吗?在整个科学界里还是有很多令人兴奋的事情。比如说,
大家觉得,我们也许能够找到最基本的理论,可以解释宇宙之间的所有现象,最大
的希望是能够有一个理论,我能够解释这个宇宙,这里边有很多漂亮的结果,会引
发一些数学上非常重要的发现。 

  有没有什么是划时代的……一般来讲,每年都会有很重要的结果,但是很难讲
谁是划时代的。我想我们想要找到一个像相对论、量子力学这样具有划时代意义的
进展,在物理方面可能有比较大的进展,不过这只是我对物理比较熟的缘故,所以
我不敢讲在别的领域里边有没有真正划时代的。只是从所发表的学术论文的角度来
讲,好像我们没有看到一种真正能够让人的世界观发生根本改变的,譬如沃森和克
里克(DNA结构的共同发现者)这样的。 

  问:那么就计算机科学而言,量子计算是不是已经相当具备划时代性和影响力
了?它是不是计算机科学史上最大的一次革命? 

  答:如果量子计算机能够成功实现的话,那么量子计算将是自图灵以来最重要
的发展,因为它的整个架构完全改变了。 

  问:量子计算机到底是怎么一回事?听说把一些东西装进试管里,它自己就能
够进行计算? 

  答:你说的那个是DNA计算,是另外一回事。计算机从冯·诺伊曼开始到现在
差不多有50年左右的历史,基本上没有改变过什么,有技术上的改进,但是基本原
理没有改变。你所说的DNA计算,原理也没有很大的改变,与50年代的计算相比差
别也不是那么大。比如说现在普通的计算机只有一两个或者三四个进程,DNA计算
机则试图在试管里做出很多个进程,但是它的基本原理与50年前还是一样的。 

  而量子计算则完全不同。它的突破在于,从某个角度来讲,它使用了完全不同
的逻辑,已不再是传统的逻辑概念。传统计算逻辑基本上就是0和1,而量子计算的
逻辑则是比0和1更为复杂的基本单位,这很难解释的。 

  可以这样打一个比方,量子计算的原理基本上有一点像光学。在光学上,如果
在一个屏风上刺几个洞,光从一个光源出去之后,我们就可以看到后面一个屏风上
有明的有暗的,因为光是波,它有消有长,有弯弯曲曲的东西。在光学上,如果不
知道上面的针孔形状,那么我们根据光穿过针孔后在后面的屏风上留下的样子,可
以猜到针孔之间的关系或者距离。在量子计算上,如果我们手头有一些数据,想用
这些数据进行计算的话,那么我可以让这些数据穿过针孔的东西,到后面的屏风上
去看它会显出什么样子,然后就能据此说出数据有什么样的性质。所以从这个角度
来看的话,量子计算就类似光学系统的计算,不过它跟一般用在光学上的计算机还
不是太一样,这只是一个比喻。 

  问:量子计算机本身离成熟还有多远? 

  答:这个问题当然不可能有人知道答案,我猜可能要15年,有人甚至说这根本
不可能变成现实,至少它非常难是大家都有的共识。 

  好在美国政府这几年来对量子计算这方面的研究经费投入较多。当然,多半的
钱都给了做物理的,是他们在研究怎样实现量子计算。这些人本来都是很不错的物
理学者,如果量子计算的研究完全没有希望的话,他们不会改变研究方向、花宝贵
的时间来做这件事。一直以来我们有一个发现:如果说一个技术不是一定不能做到
的话,那么最终它都是可以实现的。现在,大家都没有想出一个真正的理由来证明
量子计算确实做不到。七八年前,物理学家就认为有一些困难是不可能克服的,但
是最近七八年都克服了这些非常关键的问题。 

  问:目前硬件的发展遵循摩尔定律,而软件的发展却似乎跟不上硬件的发展速
度,我们经常谈论的是如何让软件最大限度地调动起硬件的潜能来。对您来说,软
件会不会出现概念上的大突破,最终使人类的计算发生本质上的变化? 

  答:我不是一个软件方面的专家,但是我的印象是,没有人觉得很快就能够解
决我们以前不能够解决的问题。基本上,怎么样写一个大的软件程序,这种事情没
有人知道怎么样做。大家有一些听起来不错的想法,但是好像还没有听说过一种大
的系统是完全没有bug的。 

  问:就是说,人们现在还没有看到软件方面会有像量子计算这样的突破? 

  答:量子计算能够实现很大突破,主要原因在于它的整个基础理念都完全不同
以往。很难想象软件方面能够出现一个新的观念,突然之间就让所有的问题都不见
了,除非完全改变软件的内在特点,如果说软件还是这样一行一行地写的话,很难
想象(它会发生很大突破)……一般来讲,你在错综复杂的大系统下面决定要具体做
什么事情,这就已经很困难了。你得想出一个方法,告诉自己到底想要做什么事情
,写成白纸黑字,这就已经是一个很巨大的工作了。像Windows这样的一个系统,
你要把它的整个构思、每个要求都全部写下来的话,我相信在写的过程中就一定会
有错。 

  科学家:自我尊重与公众尊重 

  问:从二战后到80年代,是科学非常显赫的时期,科学家非常受人尊敬和关注
。但是这之后,科学的发展逐渐变成了理所当然,没有人再去奇怪科学的进步,科
学家受到的关注也远不如前。尽管90年代IT业发展非常迅猛,但计算机科学家受到
的关注并没有因此增加。包括荣获了图灵奖的科学家,受到的关注也不比以往。对
您来说,这种变化有没有什么影响?它会不会影响到您投入研究的热情? 

  答:我个人的意见是,你所追求的是自我尊重(self respect)和自我实现。在
这个过程中,你可能会得到同行的尊重(peer respect),如果你得到了公众的尊重
(public respect),从一个角度来讲,也是会影响到你自己,但那是虚荣心方面的
东西。 

  问:那就是说,不管外界对科学家的关注到什么程度,对科学工作者本身来说
,公众尊重总是影响力最小的? 

  答:每个人会不一样,有些人比较在乎,有些人比较不在乎,我想这会因行业
而异。 

  问:那是不是说,同行的尊重更能够给您激励? 

  答:(笑)当然,得到公众的尊重也很好,我不能说我不喜欢这个。 

  问:比如说,像我们这样的人,我们都非常地尊敬您,但是什么都不懂。 

  答:(微笑)人都是有点虚荣心,(得到公众的尊重)这当然是很好的事情。但基
本上这不是影响你决定做科学家的因素。我在决定成为一名科学家时,不会是因为
将来能够得到公众的尊重才去做。 

  基本上,做科学家是一件很舒服的事情。我想,不光是做科学家,每个人能够
发现自己最能够去做的事情,而且还有机会去做,那都是最舒服的事。在美国,有
相当好的条件和舒适的生活方式让你去做研究,我自己都有点不好意思,我就觉得
生活不应该会这么好。 

  问:您没有觉得很辛苦吗? 

  答:好像没有,因为基本上是自己在驱动自己,你自己愿意去做,你有足够的
意志力去做。 

  问:你小时候最想成为什么样的人? 

  答:我想很多的中国家庭都希望自己的孩子做一个学者,这是最好的职业,比
较独立的,不会太受环境的影响。所以,我从小就是想要做个科学家,但是我不晓
得做什么样的科学家。比较好的是,因为我们那个时候信息比较缺乏,不需要你去
担心太多。很自然,运气好的话,碰到一些事情你是能够做到的,运气不好的话,
你就进入你不喜欢的行业。所以也没有烦恼,我想跟中国父母对孩子的期望一样:
上最好的中学,考进最好的大学,以后能够留学。 

  问:对你影响最大的人是谁? 

  答:我想是爱因斯坦。 

  问:在哪些方面对你影响最大呢? 

  答:主要是他的作品。在高中的时候,读过Eddington写的介绍爱因斯坦的一
本书。以前在我们那个时候,台湾还相当穷,只有美国新闻处有这种洋书。我去那
里借了一本书,虽然是写给大众看的读物,但是因为相对论是非常难的理论,要看
很久才能看懂。但是那天看懂的时候非常非常高兴,从来没有过这种感觉。后来读
量子力学也有这种感觉,这种激励感好像是世界上最值得追求的一个东西,希望自
己将来即使做不到这样伟大的事情,但是也要向这个方向前进。所以我做科学家,
读这几个学说对我的影响最大。 

  问:您刚才提到,作为科学家最重要的是自我尊重,其次是同行尊重和公众尊
重。当然了,它们都很重要。 

  答:(笑)最好都有。 

  问:因此,我们知道,科学研究最重要的驱动力来自于自我(self drive)。二
战之前,人们都是因为个人兴趣而投入科学研究。但到了战后,情况发生了变化,
科学家从完全自发的、出于兴趣的研究,变成了政府、商业机构或非商业机构投资
的、以任务为导向的研究。人类在科学研究上的这样重大转变,不知道对科技工作
者来说有没有影响? 

  答:我想这是没有办法的,因为现在科学研究的重要项目都需要很多很多人。
所以没法说这种事情是好是坏,这是无法避免的。最重要的要留下生存空间,让那
种想要享受生活的、独立的思想者有机会发展。这两个事情是冲突的,但是在很多
情况下,最大的发现并不是因为有很多钱才得到的,而是个人做的。很多事情都是
偶然的决定。 

  问:公司或者政府组织的研究,非常容易造成研究组织之间的壁垒,也就是所
谓的商业机密或者国家机密,您觉得这对现在的科学研究会不会造成很大的阻碍?
 

  答:我不太清楚中国的情形,但我知道美国的情形。在美国,学校还是一个很
重要的研究力量,在学校里面做研究的人,通常钱都是从政府里来,而不是被某一
个公司赞助。一般来讲,像自然科学基金这样的研究机构,他们基本上还是相当公
正的,他们的钱还是给了正确的人去做正确的事。学校里甚至有教授和赞助的公司
争执的情形,我觉得这是一种平衡力量。公司愿意出钱,这当然是好事,研究当然
是做得越多越好。 

  问:研究成果是否公开?……在这方面IBM、HP都做了很重要的贡献。 

  答:我觉得是很难的问题。就拿生物技术公司来说。一般来讲,你需要给个人
以激励,他才会有投入,才会去冒这个风险,有发财的机会,也有完蛋的机会。不
然,药厂不研究新药的话就没有人出得起这么大笔的研究款项了。所以需要在所有
权上激励他们。至于说怎么样把握这件事情,我反对完全开放这样的做法。我是觉
得不能走极端,但是现在的情况确实不错。 

  问:您在研究当中碰到最困难的时刻是什么? 

  答:好像不太有什么不太美好的回忆,我好像只能记得好的事情。困难的时刻
其实也很多,但都是很正常的现象。比如说有个问题你想不出来,想一想后又放弃
,然后再想一想再放弃,很多年想不出来,有一天突然就想通了。我在做复杂性理
论(complexity theory)的研究时,就需要知道做一件事怎么样才是最好的方法,
需要去证明不会有更好的方法了。 

  问:这是不是有点像偏执狂:我要去证明一件事情不可能再得到改进了。这种
偏执心态会导致花很长时间去证明。对您来说,您做研究,最让您兴奋的是哪一件
事? 

  答:在我刚刚开始做研究的时候,即使获得了一些不太重要的结果也会让我感
到兴奋。到后来标准越来越高,只能拿一两个星期时间来兴奋,接着就要做下一个
课题。通常来讲,你所做的比较重要的结果做完了以后,自己当时是会有感觉的,
你自己知道这个东西将来会变得很重要。所以,一般来说,最重要的结果做出来的
时候就是你最高兴的时候。 

  问:就您来说,哪一次研究结果是最令您兴奋的? 

  答:我想1982年的论文可能是我最满意的。那是一个关于密码学的研究成果。
它所做的事情基本上是研究什么样的序列才能算是随机序列。它的影响是两个;一
个就是说,它提出了一个新观念,这个观念解决了当时的很多困难;第二个是说,
这个东西对密码学后来的发展很有影响。这个东西实在是太技术了,很难讲得很仔
细。 

- 作者: bokii 2006年05月25日, 星期四 10:39  回复(0) |  引用(0) 加入博采

jdom和w3cdom的转换
用soap调用Axis上部署service的时候,jdom往往不照。
但是里面的代码全是jdom,只好勉为其难 做一下变换了
w3c->jdom
org.w3c.dom.Document doc;
  DOMBuilder db = new DOMBuilder();
   Document req = db.build(doc);


jdom->w3c
DOMOutputter outputter = new DOMOutputter();
org.w3c.dom.Document outputter.output(new Document(result));

string->w3c
org.w3c.dom.Document XmlUtil.build(String)

昨天调试时还遇到一个bug:
aString==“xxxx”在本地上能run,部署到AXis就没回应了
改成aString.equalsIgnoreCase("XXXX")就好了
虽然这段代码不是我写的,
但是对String掌握不深
也是调试比较费力的原因了。

- 作者: bokii 2006年05月21日, 星期日 11:44  回复(1) |  引用(0) 加入博采

MySQL导入导出
导出要用到MySQL的mysqldump工具,基本用法是:  

shell> mysqldump [OPTIONS] database [tables]  

如果你不给定任何表,整个数据库将被导出。  

通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。  

注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。  

mysqldump支持下列选项:  

--add-locks  
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。  
--add-drop-table  
在每个create语句之前增加一个drop table。  
--allow-keywords  
允许创建是关键词的列名字。这由表名前缀于每个列名做到。  
-c, --complete-insert  
使用完整的insert语句(用列名字)。  
-C, --compress  
如果客户和服务器均支持压缩,压缩两者间所有的信息。  
--delayed  
用INSERT DELAYED命令插入行。  
-e, --extended-insert  
使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)  
-#, --debug[=option_string]  
跟踪程序的使用(为了调试)。  
--help  
显示一条帮助消息并且退出。  
--fields-terminated-by=...  
   
--fields-enclosed-by=...  
   
--fields-optionally-enclosed-by=...  
   
--fields-escaped-by=...  
   
--fields-terminated-by=...  
这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。  
LOAD DATA INFILE语法。  
-F, --flush-logs  
在开始导出前,洗掉在MySQL服务器中的日志文件。  
-f, --force,  
即使我们在一个表导出期间得到一个SQL错误,继续。  
-h, --host=..  
从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。  
-l, --lock-tables.  
为开始导出锁定所有表。  
-t, --no-create-info  
不写入表创建信息(CREATE TABLE语句)  
-d, --no-data  
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!  
--opt  
同--quick --add-drop-table --add-locks --extended-insert --lock-tables。  
应该给你为读入一个MySQL服务器的尽可能最快的导出。  
-pyour_pass, --password[=your_pass]  
与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。  
-P port_num, --port=port_num  
与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)  
-q, --quick  
不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。  
-S /path/to/socket, --socket=/path/to/socket  
与localhost连接时(它是缺省主机)使用的套接字文件。  
-T, --tab=path-to-some-directory  
对 于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。  注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据--fields-xxx和-- lines--xxx选项来定。  
-u user_name, --user=user_name  
与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。  
-O var=option, --set-variable var=option设置一个变量的值。可能的变量被列在下面。  
-v, --verbose  
冗长模式。打印出程序所做的更多的信息。  
-V, --version  
打印版本信息并且退出。  
-w, --where='where-condition'  
只导出被选择了的记录;注意引号是强制的!  
"--where=user='jimf'" "-wuserid>1" "-wuserid<1" 

最常见的mysqldump使用可能制作整个数据库的一个备份: 

mysqldump --opt database > backup-file.sql  

但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:  

mysqldump --opt database | mysql --host=remote-host -C database  

由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:  

shell> mysqladmin create target_db_name  
shell> mysql target_db_name < backup-file.sql 
就是 
shell> mysql 库名 < 文件名 

================================
几个常用用例:

1.导出整个数据库
 mysqldump -u 用户名 -p 数据库名 > 导出的文件名   
 mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
 mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出一个数据库结构
  mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql

 -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table 

4.导入数据库
  常用source 命令
  进入mysql数据库控制台,
  如mysql -u root -p 
 
  mysql>use 数据库

  然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
  mysql>source d:\wcnc_db.sql

====================================
 


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=25773

[点击此处收藏本文]   发表于 2004年06月24日 9:22 PM

- 作者: bokii 2006年05月12日, 星期五 00:25  回复(0) |  引用(0) 加入博采

大小写惹出的麻烦
在tomcat下放了一个j s p包 ,报错找不到库文件

检查了一下,明明有WEB-INF/lib/xx.jar啊

网上找了半天  不知怎么回事.

后来突然看到web-inf挺奇怪,居然是小写的.

改成大写WEB-INF,再打开页面,不报错了.

原来这个包是从window分区上mount过来的,

原来的文件名大写就不知怎么变成小写的了

怎样在mount时 保持文件名大小写不变?

搜了一下,还真有办法讷:

Windows保存了文件名的大小写格式,但在读取时并不进行区分。因此你可以建立一个名为MyFileName的文件,然后用mYfILEname的名称打开它。

Linux默认对于大小写是敏感的,MyFile、Myfile和myfile是不同的文件。如果你希望Linux对NTFS卷具有和 Windows相同的表现,那么就应将posix选项设置为true,将选项设置为false将使驱动程序具有与Linux类似的表现(默认设置)。

mount /dev/hda1 /mnt/windows -t ntfs -r -o posix=true



- 作者: bokii 2006年05月11日, 星期四 22:52  回复(1) |  引用(0) 加入博采

如何配置JFreeChart

如何配置JFreeChart

                                      

第一步:安装J2SDK

1.         获取J2SDKwin32安装版文件:j2sdk-1_4_2-windows-i586.exe

2.         双击安装J2SDK

3.         配置JAVA环境变量:在administrator的用户变量里(估计在系统变量里面也可以),新建变量:JAVA_HOME=C:\j2sdk1.4.2(注意:C:\j2sdk1.4.2JAVA文件的安装路径,你应该根据自己的安装路径进行更改),在PATH变量里添加JAVA可执行文件的路径%JAVA_HOME%\bin(这样你就可以在任何路径下执行java命令),新建变量:CLASSPATH=.;C:\j2sdk1.4.2\lib\tools.jar;C:\j2sdk1.4.2\lib\dt.jar

 

第二步:安装tomcat

1.         直接解压tomcat软件包

2.         启动tomcatcd tomcat-home\bin,执行startup.bat文件(执行shutdown.bat关闭tomcat

3.         测试tomcat是否启动成功:http://localhost:8080/index.jsp

 

第三步:配置JfreeChart

1.         http://www.jfree.org/jfreechart/下载JfreeChart开发包:jfreechart-0.9.21.zip

2.         jfreechart-0.9.21.zip中的lib路径下的jar文件拷贝到tomcatcommon/lib路径下

3.         修改tomcatconf/web.xml文件,添加:

<servlet>

           <servlet-name>DisplayChart</servlet-name>

           <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>

</servlet>

<servlet-mapping>

           <servlet-name>DisplayChart</servlet-name>

           <url-pattern>/servlet/DisplayChart</url-pattern>

</servlet-mapping>

4.         测试demo文件:http://localhost:8080/jfreechart.jsp,当你看到图片就说明jfreechart配置成功啦!

jfreechart.jsp代码:

<%@ page contentType="text/html;charset=GBK"%>

<%@ page import="org.jfree.data.general.DefaultPieDataset"%>

<%@ page import="org.jfree.chart.JFreeChart"%>

<%@ page import="org.jfree.chart.plot.PiePlot"%>

<%@ page import="org.jfree.chart.ChartRenderingInfo"%>

<%@ page import="org.jfree.chart.servlet.ServletUtilities"%>

<%@ page import="org.jfree.chart.urls.StandardPieURLGenerator"%>

<%@ page import="org.jfree.chart.entity.StandardEntityCollection"%>

<%@ page import="org.jfree.chart.encoders.SunPNGEncoderAdapter"%>

 

<%

DefaultPieDataset data = new DefaultPieDataset();

data.setValue("六月", 500);

data.setValue("七月", 580);

data.setValue("八月", 828);

 

PiePlot plot = new PiePlot(data);

JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, true);

chart.setBackgroundPaint(java.awt.Color.white);  //可选,设置图片背景色

chart.setTitle("Welcome to Jfreechart !"); //可选,设置图片标题

 

ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());

//500是图片长度,300是图片高度

String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);

String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;

 

%>

<HTML>

<HEAD>

       <TITLE>Welcome to Jfreechart !</TITLE>

</HEAD>

<BODY>

<P ALIGN="CENTER">

<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">

</P>

</BODY>

</HTML>

 

 

第四步:JfreeChart开发

由于JfreeChart的文档是收费的,所以基于JfreeChart的开发反编译它自带的demo jar文件是一个不错的开始吧(其实,一般的应用在它的例子里面可以找到的啊)。

 

第五步:移动到Linux平台问题

1.         图片显示问题:

tomcat原封不动的搬到linux平台下,当我们请求http://localhost:8080/jfreechart.jsp时,将得到一个 Can't connect to X11 window server using '127.0.0.1:0.0' as the value of the DISPLAY variable.”的错误。(郁闷吧)

解决办法:

export  CATALINA_OPTS="-Djava.awt.headless=true"

重启tomcat看看吧,出来啦!

2.         图片中文问题:

图片终于出现了,可是中文显示问题也随之而来(郁闷我了好久哦),

解决办法:

原来标准 jre/jdk 中只带了 redhat6 font.properties, redhat7.3 redhat8.0 上都不能用。我们需要建一个 font.properties.zh.Redhat 放在 redhat jre/lib 目录下。打开 /usr/lib/X11/fonts/ttf-zh 或者 /usr/share/fonts/zh_CN/TrueType (好像我是在后者发现的)下面的 font.dir 将其中的一个中文字体名复制下来,比如: -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1,按照 java 的字体规则改为 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1,将 font.properties.zh 中的内容复制到 font.properties.zh.Redhat 中(如果没找到font.properties.zh文件,就把后面的内容粘贴进去也可以啊,我是这样做的,简单!)。

至于选用字体 -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1 是因为在 redhat 7.3 redhat 8.0 上都能用。因为 jre/jdk 找不到 Redhat true type 字体,在文件 font.properties.zh.Redhat 最后加入:

appendedfontpath=/usr/lib/X11/fonts/ttf-zh

appendedfontpath=/usr/share/fonts/zh_CN/TrueType

将字体名全部替换成 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1,替换后的 font.properties.zh.Redhat 如下:

# @(#)font.properties.zh.Redhat.linux 1.4 02/06/10

#

# Copyright 2002 Sun Microsystems, Inc. All rights reserved.

#

 

# Component Font Mappings

#

serif.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

serif.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

serif.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

serif.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

sansserif.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

sansserif.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

sansserif.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

sansserif.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

monospaced.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

monospaced.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

monospaced.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

monospaced.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialog.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

 

dialog.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialog.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialog.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialoginput.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialoginput.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialoginput.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialoginput.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

# Missing Glyph Character

#

default.char=274f

 

# Component Font Character Encodings

#

fontcharset.serif.0=sun.io.CharToByteISO8859_1

fontcharset.serif.1=sun.awt.motif.CharToByteX11GBK

 

fontcharset.sansserif.0=sun.io.CharToByteISO8859_1

fontcharset.sansserif.1=sun.awt.motif.CharToByteX11GBK

 

fontcharset.monospaced.0=sun.io.CharToByteISO8859_1

fontcharset.monospaced.1=sun.awt.motif.CharToByteX11GBK

 

fontcharset.dialog.0=sun.io.CharToByteISO8859_1

fontcharset.dialog.1=sun.awt.motif.CharToByteX11GBK

 

fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1

fontcharset.dialoginput.1=sun.awt.motif.CharToByteX11GBK

 

# Exclusion Ranges

#

 

# XFontSet Information

#

fontset.serif.plain=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.serif.italic=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.serif.bold=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.serif.bolditalic=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.sansserif.plain=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.sansserif.italic=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.sansserif.bold=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.sansserif.bolditalic=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.monospaced.plain=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.monospaced.italic=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.monospaced.bold=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.monospaced.bolditalic=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialog.italic=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialog.bold=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialog.bolditalic=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialog.plain=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialoginput.italic=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialoginput.bold=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialoginput.bolditalic=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialoginput.plain=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

#fontset.default=\

#-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso10646-1,\

#-tlc-song-medium-r-normal--*-%d-*-*-c-*-gbk-0

 

fontset.default=\

-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

appendedfontpath=/usr/lib/X11/fonts/ttf-zh

appendedfontpath=/usr/share/fonts/zh_CN/TrueType


original page

- 作者: bokii 2006年05月11日, 星期四 19:10  回复(2) |  引用(0) 加入博采

摘录:男人成熟的N种表现(自我对照版)
1.以事业为重。

2.脚踏实地,明白物质也是爱情的基础之一。

3.当心爱的女人和别的男人在一起时,衷心祝福。

4.不对爱情充满太多幻想。

5.着装得体,精神饱满。

6.擅于发现女人的优点长处并赞美对方。

7.有女人缘,但善于把握寸度。

8.信守承诺,没有把握不会轻易许诺。

9.说话干净利落,不婆婆妈妈。

10.有绅士风度,细心且幽默。

11.不向女人要太多为什么。

12.懂得做女人的忠实听众。

13.相信所爱的女人是个谜。

14.明白女人是最爱撒谎的动物。

15.明白女人心是世上最不稳定和难以捉摸的东西。

16.察言观色,后发制人。

17.不会为失恋丢掉人生目标。

18.会记住父母妻子和孩子的生日,并给他们带个礼物。

19.重视事件的结果,而不把过程看得很重。

20.学会对自己的爱人说“真实的谎言”。


年纪不小了,还是这样不成熟!

以上诸条,切记切记.

- 作者: bokii 2006年05月7日, 星期日 17:53  回复(0) |  引用(0) 加入博采

第一次想牵你的手
夜色淡淡,凉风习习。
我挣扎半天把那些话儿说出。
刚才还有说有笑的她却转过身去。
原来她心中根本没有我!

心里头早就演习了一千遍,
要怎么怎么说,才是最好。
如今却是这样!

我太高看自己了。
我总是想当然,我总是耳根软。

以为天可怜眷顾,
数月来小心经营,欢欢喜喜
终于鼓足勇气
第一次腆着脸对她说
我爱你!
她却认为我是开玩笑!

失魂落魄,无过于此吧。
这晚的花生和啤酒都难吃到家了
从此戒绝这两种东西!

- 作者: bokii 2006年05月7日, 星期日 17:38  回复(0) |  引用(0) 加入博采

我为什么不快乐!
最近好不顺心,啥也不想干,书也不想看,也不想动。

吃了饭,低了头走回去,窝在宿舍里。

给家里拨个电话,他们也不了解我的问题。

我只能说 我会静下心好好念书。

何必把这种情绪传给他们。


好像已经没有了梦想,

整个世界跟我没有设呢没关系了



好羡慕哪些基督徒 或者和尚

他们有信仰,有梦想

但是我没有!

- 作者: bokii 2005年10月23日, 星期日 19:38  回复(1) |  引用(0) 加入博采