Worldcup 2010

July 12th, 2010

说什么呢,世界杯已经全部结束了。

30天里面32支球队带来64场比赛,让每一个喜欢足球的人都可以兴奋得义无反顾。

这届世界杯带来了很多激情,我们也看到了很多的精彩,有些片段一直萦绕在脑中,将会是我们永久的回忆。

英格兰,你走得那么早,四年之后的巴西不要再让我伤心了。

至于意大利跟法国,有点不想提了,固执的主教练跟球员们内讧,银狐的手下已经不是四年前的那支王者之师,都走得那么早,回去了好好调整吧,四年之后期待你们的表现。

德国,整体那么的和谐,小辈们踢得那么强悍,其实非常地看好你们,甚至于我有点不能理解西班牙那场是如何胜你们的。也祝福你们,克洛泽、穆勒、厄齐尔。呵呵,当然还有很有艺术气质的主帅——勒夫了,你把球队领导地其实很好的。

乌拉圭,南美的劲旅,本届世界杯让我见识了你们的一位悍将——弗兰。作为队长,他是很称职的。

巴西队凸现出来了一个法比亚诺和恶意伤人的雷诺,阿根廷则是看到了一个没踢出水平来的梅西。

非洲球队加纳有点悲情,吉安的那粒球如果不是打在门框上,进4强的就是你们了,但是足球就是如此,也期待4年之后非洲球队有好的表现吧。

荷兰,“无冕之王”无法加冕,或许说是你们缺乏王者气息吧,3次闯入决赛,3次屈居亚军,我不了解你们的历史,不知道你们之前的决赛打得怎么样,但是从本届世界杯来看,虽然说一路走来你们几近全胜,但是多少有点“胜之不武”的感觉,踢巴西的那一场,门将被挡住了视线,斯内德前场的任意球巧妙地破门扳回了比分,后面的一粒角球比分反超感觉像是人家的乌龙又感觉不像,但是也不能明显的看出来那粒球就是你们应该得分的。

对乌拉圭的那场,觉得真正打的漂亮的是罗本的头球破门,这才是球迷们想看到的得分,这样的球才叫“胜之无愧”,最好像德国一样,打人家个4:1,4:0的让人无话可说。

西班牙,说实话本届世界杯看你们的球并不多,若无其事地1:0小胜葡萄牙,再1:0小胜巴拉圭,接着又1:0小胜德国,最后1:0小胜夺冠,说你打得稳健吧,其实多少是有些“功利”色彩的,我想看到更多的进球,想看到你们更精彩的表演。不过这场决赛中,你们踢得很好,夺冠是理所当然的,祝贺你们!

最后想说一下刘建宏的2,听你喊了多少声的“球进啦,进啦进啦进啦进啦进啦进啦”啊,真TM要受不了你了,多回去读点书有点文学素养下次换句词行不行。

还说什么呢,世界杯都已经结束了。

Y-power信用卡

June 14th, 2010

出于工作的需要,在培训期间公司给我们安排了3天的V+课程,讲了很多银行信用卡业务方面的东西,也介绍了很多信用卡方面的内容。因为以后进了公司的项目组是做花旗的信用卡外包,再出于本人对信用卡这一套东西也很感兴趣,所以培训课程结束的当天我就去申请了招行的信用卡,东航联名的,银联+Visa的双币卡。

当时是出于两种考虑,一是工资卡本身就是招行的,再办招行的信用卡顺利成章,因为直接可以对借记卡和信用卡进行绑定;二是确确实实地来讲,招行的信用卡在国内还算很有口碑,不是小有口碑阿,所以想用招行的产品。

满以为三个星期后,可以顺利得拿下来,结果一封招行寄过来的邮件让我傻眼了,说什么我所填写的资料不符合招行的发卡标准,很抱歉不能给予我办理,打电话过去咨询,也是这个结果。把我的卡辟掉之后,再申请至少得等到半年以后了,搞不清楚这是为什么,但是很果断地,第二天就去申请了交通银行的Y-power信用卡,这次选的是银联+万事达(Mastercard)的双币卡。申请交行的原因是百年老行,网点多,而且交行信用卡的发卡量居全国第二,(呵呵,能猜得到第一是谁吗?)而且服务也还不错,所以就直接去营业厅申请了Y-power卡。至于选Visa还是选Mastercard,这个基本上没有多少区别,两者可以通用的,只不过Visa是美国的标准,Mastercard是欧洲的标准,一个在美国使用得多,一个在欧洲使用得多。

三个礼拜后的昨天,交行的邮件寄过来了,信用卡终于拿到手了,接近搞了两个多月,还真是不容易啊。这里BS一下招行的发卡标准,不给我们这种小公司的批卡,你爷爷的,老子以后就是做这个的,不给我批,你自己损失了一个忠实客户。 不过,骂归骂,另一个方面说回来,招行的发卡量达到了一定的程度,控制质量的做法也是可以理解的,看以后有没有机会吧,可能还是会选招行的产品。

7K的透支额度,消费起来买大件的东西方便多了,虽然说轻轻松松一刷卡,买东西方便了,但是还得有必要把信用卡这一套东西搞搞清楚,不清楚银行信用卡行业规范的话,计提利息、取现利息、滞纳金、超限额什么的还是挺烦人的。

这些得通过实际的消费帐单才好研究,以后再慢慢琢磨吧。

K歌之后

May 23rd, 2010

庆祝上午论文答辩结束,晚上喊了一行人出去K歌。回来之后大脑就一直处于兴奋状态了,躺在床上满脑子都在回响着《天高地厚》这一首歌,我使劲地想睡也睡不着。既然再怎么“数羊子”都于事无补,索性起来写点东西,顺便把论文中关于数值型数据的存储形式的这一块拿出来做一个总结,更新上博客,方便日后查阅。

论文第四章的2.1小节针对数值型(Numeric)数据在内存中的几种存储形式进行了分析比较,(呵呵,论文上用的词是“分析研究”了,相信大家都明白这是什么意思的)这里得到的东西就是“研究”成果了,也就是毕业论文中的精华所在了。

4.2.1——数值型(Numeric)在内存中的5种存储形式

数值型数据使用9描述符,一个描述符只允许存储0-9当中的一个数字。数值型数据是COBOL程序中使用最多的一种数据类型,数值型数据在内存中有5种存储形式,一般用USAGE子句来指定数据项在内存中的存储形式,但是USAGE子句通常可以省略,省略USAGE的条件下默认存储形式为Display类型,它表示该数值型数据在内存中以外部十进制形式存储

1Display:外部十进制形式。表示数值在机器外部的表现形式,一个数字在内存中占一个字节。直接用9描述符标识 Display关键字可以省略。

2COMP:定点二进制形式。这种存储形式不是将一个数字对应一个字节或者半个字节,而是先把十进制数转化成二进制数形式然后在内存中存储。因为机器存储的形式也是二进制,所以采用定点二进制存储形式的数据读取时速度最快的。COMP型数据经常用来做数学计算。COBOL规定在内存中根据数据项的长度分别用两个字节、四个字节或八个字节来存放定点二进制形式的数值。见表1

表1   COMP型数据项长度与内存字节对应关系

PIC子句中 描述符’9′的个数

占内存空间大小

1-4

2Byte

5-9

4Byte

10-18

8Byte

(3COMP-1COMP-2内部浮点数形式。以内部的二进制指数形式来表示一个数,以固定长度的内存单元来存放一个数字。

COMP-1:单精度内部浮点数,默认为4个Byte。4个Byte表示一个数字,8位为指数部分、24位为数字部分。

COMP-2:双精度内部浮点数,默认为8个Byte。8个Byte表示一个数字,16位为指数部分、48位为数字部分。

注意:COMP-1COMP-2只能使用USAGE句进行定义,因为长度确定,不能用PIC描述符。

4COMP-3内部压缩十进制。外部十进制形式一个字在内存中占一个字节。数值型数据只用到0到9十个数字,从表2可以看出,0到9十个数字的代码前四位是相同的,见表2。

表2   外部十进制数EBCDIC编码

十进制数字 EBCDIC码 ASCII码
0 11110000 00110000
1 11110001 00110001
2 11110010 00110010
3 11110011 00110011
4 11110100 00110100
5 11110101 00110101
6 11110110 00110110
7 11110111 00110111
8 11111000 00111000
9 11111001 00111001


由于前4位都是一样的,不起辨别数大小的作用,为节省内存,就采用4二进制位来存储一个十进制数字。在一个字节中存放两个十进制数字,每个数字占半个字节(4位),最后符号也占半个字节(4位)。

对于负数,最后一个半字节(4位)为“1101”对应16进制为字母D。

对于正数,最后一个半字节(4位)为“1100”,对应16进制为字母C。

对于无符号数,最后一个半字节(4位)为“1111”,对应16进制为字母F。

5COMP-5定点二进制数。COMP-5型和COMP型数据内部存储形式一致,在特定的平台上用到,只不过COMP型数据使用大尾字节顺序存储,COMP-5型数据使用小尾字节顺序存储。不理解大尾字节和小尾字节的猛击这里

Display型和COMP-3型数据分析比较

在介绍了COBOL语言中5种基本数据类型之后,针对数值型数据中的Display型(外部十进制)和COMP-3型(内部压缩十进制)数据进行分析比较,可以更好地理解数值型数据在计算机内存中的存储形式。详见表3和表4

表3    Display型数据分析

定义类型 初始数值 输出结果 内存16进制存储形式
9(5)V9(2) +12345.67 1234567 F1F2F3F4F5F6F7
9(5)V9(2) -12345.67 1234567 F1F2F3F4F5F6F7
S9(5)V92) +12345.67 123456G F1F2F3F4F5F6C7
S9(5)V92) -12345.67 123456P F1F2F3F4F5F6D7

(1) 使用Value子句进行赋值(见图3)。

图3   使用Value子句给Display型数据赋初始值

2)使用Display语句输出结果(见图4)

(3)使用Write语句写入到文件中的结果(见右图5)

图4 Display语句输出结果                                                                          图5   Write语句输出结果

4 9型COMP-3数据分析

定义类型 初始数值 输出结果 内存16进制存储形式
9(5)V9(2)COMP-3 +12345.67 1234567 1234567F
9(5)V9(2)COMP-3 -12345.67 1234567 1234567F
S9(5)V9(2)COMP-3 +12345.67 123456G 1234567C
S9(5)V9(2)COMP-3 -12345.67 123456P 1234567D

(1)使用Value子句进行赋值(图6)。

图6   使用Value子句给COMP-3型数据赋初始值

2Display语句输出的结果(见下图7)

3Write语句写入到文件中的结果(见右图8)


图7 Display语句输出结果                                                                       图8   Write语句输出结果

根据对比分析的情况得出来如下的结果:

(1)Value子句赋初始值要求数据完全匹配属性要求,9型描述符初始值中不允许出现“+”、“-”符号;Move语句赋初始值则只要求数据类型匹配,在初始值中可以带有“+”、“-”符号。

(2)不管是9型还是S9型描述符,对应DisplayCOMP-3两种存储形式“+”、“-”都不实际输出显示出来。

3)对于Display型和COMP-3型存储形式,S9型描述符将符号位存储在最后一个半字节(4位),字母C表示符号为正,D表示符号为负,F表示无符号。

4Display型存储形式9型描述符和S9型描述符每一个数字占一个字节内存空间,符号和小数点都不占内存空间。

5COMP-3型存储形式由于采用压缩十进制方式存储,每一个数字占半个字节(4位)内存空间,再在最后增加半个字节(4位)存储符号位。因此,同样的数据内容COMP-3型存储比Display型节省内存空间。

(6)Write语句是按内存中存放的数据形式直接输出的,不进行EBCDIC编码[9]转换;Display语句则是将内存中存放的数据形式进行EBCDIC编码转换后然后再进行输出的。因此,写入到输出文件中看到的结果会产生乱码。

欧冠决赛已经开始打响了,国米跟拜仁随便哪只队赢都是三冠王,看球去了,到此为止。