关于作者

用户名:swirl0801
笔名:swirl0801
地区:
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



世界尽头

可爱的我们

访问统计:
文章个数:6
评论个数:9
留言条数:1




Powered by BlogDriver 2.1

开始之前,结束以后

 

技术性文章写在开始之前,生活的感悟产生于结束以后。

文章

新地址:hi.baidu.com/heavenlight

因为种种原因,这里暂时停止更新。

可能继续在这里写,也可能就此荒废。

请访问新地址,hi.baidu.com/heavenlight

- 作者: swirl0801 2010年04月1日, 星期四 13:21  回复(0) |  引用(0) 加入博采

三周,通过三级数据库笔试

早上七点就起床了,之前都是10+才起的。到了考场,N远的一个地方,还有四十分钟才开考。这是个裕量的原理:离着越远会给出越多的裕量,所以就造成,越远越早到。

9点整开考。9点半完成。检查+算分+涂卡+浪费时间,十点交卷。

算下来100%把握的是71分,60%把握的有10分,30%把握的有10分,剩下的9分是纯粹蒙的。不过很可能以后的事实会证明这样的分数是因为题太简单。

转入正题,写一下备考三周的心得:

书:最新版的考试中心出的教材肯定要有。计算机等级考试,考试中心针对每门考试就只有这么一本书。所以,辅导书都是要买第三方的。我买参考书的时候比较早,没有选择,只有清华天骄系列的,《考点与题解》。清华天骄系列还有个带光盘的机考习题集,但是因为我们有了南开100题,而且那张光盘垃圾得要命,所以千万别买啊!我无从判断别的辅导书怎么样,因为没自己用过,不过似乎都比这个组织得好。这本《考点与题解》,考点就是照抄考试中心的教材,绝不提炼,绝不修改,所以有的时候看得你一头雾水。习题不合新大纲,而且很多不知所问。历届考题的答案不知道是哪位大侠写的,错了好多。而且上面说的网络增值服务卡,20元的,根本不能用。不过,唯一的问题是,这是教育部考试中心的指定辅导书。(不知道真的假的)而且,从今天的考试看,至少有50+的题在这本书里出现过。这个出现,就是说,书里的这个题你会了,考题你肯定会。

题:承接上面的说。最重要的题目是教材里面的练习题!事实证明,历届的考题都会有书上的原题或者原题的变形。比如,今年的一个:书上问的,散列表解决碰撞的方法为拉链法和()。今天考的,散列表解决碰撞的方法为()和开地址法。而且,不是说之前考过就肯定不再考了。其次,历届的考题也是绝对的重点。从2002.4开始的所有题目,你应该掌握题目的出题思路,相关知识点。这些题你吃透了,40+肯定到手的。然后就是一些配套的习题。我没有比较过,所以没什么发言权。但是《考点与题解》,题还是很全的。不过有一些知识点是明显不考的。有很多的答案是莫名其妙的。

时序表:

第一周,解决数据结构,操作系统。不要认为数据库技术就考数据库了,数据结构和操作系统也占了很大的比重。

先说数据结构。这是计算机专业的基础课之一。人家用一个学期学的你用短短几天学,当然要掌握好方法。首先是数据结构的各种基本概念必需理解。各种算法的思想要弄通。考试是不要求用程序实现的,只是问你逻辑上的问题。但是书上是用pascal语言实现了这些算法的。最好都看看。不要说你没学过pascal,我也没有,我学的是C。但是pascal语言非常容易懂,只要你有点英文的基础。有些概念很抽象,有的算法更抽象,这时书上的例子就尤为重要。它把抽象的东西具体化了。比如,今年考的建堆书上用n多的话给你讲了怎么建,但是你要是没有亲手作过还是不容易理解。如果书上的例子你操作一下,就会异常清楚:如何初始化,从哪里开始,方向如何,什么方法。看了例子再看怎么建的那一堆文字,就都明白了。

然后说操作系统。操作系统一样是计算机专业的一门专业课。但是三级的要求也一样没有那么高。书看懂。操作系统的作业管理在大纲中是没有的,那节不用看。其它的,进程管理,存储管理,文件管理,设备管理,四者是操作系统的主要功能。你可以在看的时候想想Windows都是怎么实现的。和实践联系起来就很容易理解了。

看书的同时,我把《考点与题解》的配套习题给做了。强化了记忆。而且,考试的难度也就止于此了。这一周,先看书,然后以题带书。这两章,理解最重要!

第二周,看第五到七章。关系数据库系统,SQL和规范化理论以及数据库设计。经过了第一周的蹂躏,第二周的难度就显得不那么重了。重点看3个:关系代数,SQL语言,规范化理论。关系代数部分,书上的例子足够你理解,什么是连接,什么是除,一定要明白这些运算到底是什么,不然你会很痛苦。SQL语言,主要是熟悉熟悉,另外要看看人家写Select的思想,与关系代数对应着看。范式,把例子背熟吧。另外,你一定要从,什么是"不好"的关系模式看起。记住什么样的不是2NF,什么样的才算BCNF。多值依赖的部分书上的定义更是很难看懂,但是仓库-管理员-物品的例子却是十分明朗的。当然,看书的同时完成相应的习题。

第三周,第一章基础知识,第四章数据库基础,第八章DBMS,第九章事务管理和安全性,以及十和十一章。这些主要是背。第九章还可以理解看看。其它的都是背。这个时候我就配合着历年的考试题,看看这些章都是怎么个出题方法,然后就是背。当然,历年考试题作的时候一定要计时,仿真考试。我通常给自己模拟考用的时间都是45分钟就完成了。(没办法,实在是没有什么难度)然后用2个小时以上的时间去看这些题的相应的知识点。这个时候你会发现,前两周学过的五章如果你现在还不会,是多么的可怕。

考试特点分析:通过历年的考题的总结,你会有更深的体会的。

1.应用,主要在前两周的内容。识记,主要在后面。

2.看到答题卡你就会知道,填空题怎么也不会出,让你写一个Select...Gruop by...Having...的语句的。因为答题卡没地方,不够长!

3.教材上分点叙述的,每个点都要好好熟悉熟悉,到时候,选择题就问你哪个不是,或者哪些是,眼熟就选啊。这样的题,年年都很多。尤其是第181011章,大家都不大重视的地方。

4.数据结构,关系代数,SQL,范式,这样应用的地方,有固定的几个类型题,大家参考历年考题。80%还是这些类型。

写得乱七八糟的,但是转载的话(如果有这荣幸),请说明出处。Swirl0801 from Heymoo.com

- 作者: swirl0801 2005年04月2日, 星期六 14:17  回复(1) |  引用(0) 加入博采

终有结束的时候

人死如灯灭。一切终有结束,一切开心的不开心的,都会过去。留下的只是一些会慢慢淡去的记忆。凡事均有定数,这定数即是永远的变化和不确定。虽然下一刻要发生什么是有迹可寻,但无穷的变数却可以衍化无数的可能。

为了一个美丽的未来奋斗,不虚度每刻时光。珍惜拥有,享受现在。

努力让爱你的人开心,努力让你爱的人幸福。

这样,分离的时候即使是眼泪也会是甜的。

这样,虽然相拥终有结束的时候,我却再不害怕。


- 作者: swirl0801 2005年02月2日, 星期三 22:23  回复(0) |  引用(0) 加入博采

岁末的ebay疯狂

我猜ebay这次得亏了,亏得应该还是不少的。

一月的中下旬,ebay推出了"送50"的疯狂举动。具体的内容为:认证买家在一笔定单中购买了等于或多于55元(运费不计)的商品之后,只要通过ebay的安付通付费,那么ebay将付账50元。每个认证账号只有一次机会。

认证的方式有三种:身份证认证,地址认证,手机认证。其中手机认证要求手机号为入网手机。

先看看本少侠(^_^||||)都买了什么:

1.2300mAh的三洋充电电池*2-》55元-50元=5元(爸爸的手机号)

2.劲牛充电器-》55元-50元=5元(妈妈的手机号)

3.50元北京移动充值卡=55元-50元=5元(我的手机号)

4.杂牌35W像素摄像头(传说中的最好解决方案)=78元一口价+15元快递费-50元=43元(我的身份证)

5.情侣手套*2=57元(阴差阳错,造成没有减免~)

6.USB 1.1 4口HUB附带20元现金=60元-50元=10元(欢爸爸的手机号)

7.面包机=70元-50元=20元(欢妈妈的手机号)

真的是划算死了~虽然手套没有减免50元。但是总体说来,我肯定是赚钱的。

本是C2C,B2C平台老大的ebay,在最近的几个月来,受到taobao等的挑战,业绩一蹶不振,市场占有率直线下降。因此,ebay才想出这个类似于自杀的"送50活动"。其实ebay的最大失败莫过于不允许买卖双方在成交前直接联系,比起taobao还专门为了买家和卖家联系而开发了im软件,ebay实在太小气了。试想,互联网是如此的透明,在资费相同的情况下,谁不是取taobao而弃ebay呢?

下面是个比较疯狂的方案,可以知道ebay会亏多少:

用户A登陆商品,只设置最便宜的登陆费(没记错的话应该是一口价55元),支持安付通,商品要基本无成本,比如,复习笔记的电子版。用户B(C、D、E......反正是同一个人)购买。这样,纯收入为(50元-平均手续费)×N。

关于认证的问题,还是比较容易解决。手机号到处都是,只要避免是不挂名就可以办的(即所谓的入网手机)就ok。当然,一个人弄20个手机号也就不错了。而且手机号还是有机会成本的。我们算其机会成本为10元。这样,一个人可以赚ebay:20*(50-5-10)=700元!

那么,如果我用一个大学的信箱呢?一个信箱对应了100名学生,采用地址认证......因为这个比较慢,所以知道消息的时候,即活动最初就应该行动。这样逻辑上也说得通......


- 作者: swirl0801 2005年02月1日, 星期二 22:17  回复(1) |  引用(0) 加入博采

关于21点的算法描述

我们来设计一个21点的游戏最佳行动方法的计算算法。

21点的游戏规则:

1.使用一套13*4=52张的扑克牌,不使用大小Joker

2.每一局的开始首先轮流发给双方各两张牌。双方获得的第一张牌是对对手透明的,其他牌均不会被对手知道。

3.各牌代表的分数如下:2=2分,3=3分,4=4分,5=5分,6=6分,7=7分,8=8分,9=9分,10=10分,J=10分,Q=10分,K=10分;A=1分或11分,记分时以对持牌者有利为准。不分花色。玩家拥有的点数计算方法为将持有的牌的分数累加。

4.游戏分庄家和非庄家。

5.满足下列获胜条件之一即获胜,游戏即重新开局:

a.开局得到两张牌的点数为21点,且为庄家;

b.开局得到两张牌的点数为21点,且为非庄家,庄家开局得到的牌的点数不足21点。

c.开局后持有5张牌且拥有点数不超过21点。

d.开局后持有牌的点数为21点

e.开局后对手拥有的点数超过了21点

f.开牌后自己的点数大于对手的点数

g.自己为庄家,开牌后拥有点数与对手相同

6.游戏流程:开局发牌,每人两张。持续给非庄家发牌,直到非庄家要求停止,最多发牌3张,最少发牌0张。持续给庄家发牌,直到庄家要求停止,最多发牌3张,最少发牌0张。双方开牌。

最佳算法的假设:

1.开局前所有已经发过了的牌都是已知的。

2.还没有发的牌的存放顺序是随机的。

算法的描述:

本算法用来判断玩家应该继续要求发牌还是停止发牌以获得最大的获胜概率。具体细节如下:

设还没有发的牌以及对手手中不透明的牌的集合为A;已经拥有的牌的集合为B;

情况1:玩家为庄家。对手手中有N张牌。N不小于2。

计算A的排序可能性,有如果对手手中有n张牌,并且A集合有M张牌,则A集合应该有f=(M,n)种可能。

初始化:将A集合的牌排序。并保证新的A序列在之前没有出现过。如果已经排序过f=(M,n)次,则跳转最终判断段。

发牌给对手:给对手发满N张牌,计算对手分数,如果大于等于21分,则重新初始化A。

发牌给自己:给自己发满5张牌。

判断发牌与不发牌哪种赢的概率大:比如,手中有2张牌,if 不发牌,win;发牌win的概率小于1,then不发牌的flag数字加一。如果两种概率相等,则不加任何一个flag。

重新初始化。

最终判断:如果不发牌的flag〉=发牌的flag,then选择不发牌;else发牌。

情况2:玩家为非庄家。

计算A排序的可能性。设最多有排序f种。

初始化:将A集合的牌排序。并保证新的A序列在之前没有出现过。如果已经排序过f次,则跳转最终判断段。

给对方发一张牌:作为庄家未知的那张牌。如果超过或者等于21点,则重新初始化。

计算:在不发牌直至发满牌的各种情况下,用情况1的办法计算庄家会采取的行动。判断相应的flag增减情况。

重新初始化。

最终判断:如果不发牌的flag〉=发牌的flag,then选择不发牌;else发牌。


- 作者: swirl0801 2004年12月11日, 星期六 17:28  回复(0) |  引用(0) 加入博采

[翻译]Windows序列号算法[下]

这是文章的下半部分。讲解了创建有效的序列号以及私钥的破解。希望大家能帮忙指正不足。

另外,这是这个原作者写的4in1算号器软件的下载地址:http://down.winzheng.com/SoftView/SoftView_20907.htm


创建可用的序列号!

我们假设我们已经获取了私钥k,(当然,微软不会公布k的值,我们只有自己破解它了),那么序列号验证系统的计算等式如下:

Hash=SHA(Signature*(Signature*G+SHA(Hash)*K) (mod p))

我们需要做的,便是计算出一个满足上面等式的Signature。 过程如下:

1.随机取一个整数r,并计算  R(rx,ry)=r * G

2.计算Hash= SHA-1(79 操作系统家族, rx, ry) ,输入总长为1+2+64*2=131个 byte,我们只需要前62个bit作为结果。

3.计算 H=SHA-1(5D 操作系统家族,Hash码, 前缀, 00 00) ,其总长为11个byte,我们只需要其前面的2个word,并且将H的第二个字右移2个bit。(译者注:具体方法见前文的验证部分)现在,我们有了如下等式:

Signature*(Signature*G+H*K) = r * G (mod p)

将K=k*G代入,有:

Signature*(Signature*G+H*k*G) = r * G (mod p)

Signature2+H*k*Signature-r=0 (mod n),式中,n为椭圆上点G的级。

解上面的方程,得到Signature的值:Signature=0.5*{-H*k±root[(H*k)2+4r]}(mod n),

注意:因为一元二次方程需满足判别式大于等于零的要求,因此如果Signature无实数根,则一切要从第一步重新开始。Get

由公钥获取私钥

我曾提到过私钥k并没有被包含在BINK的资源中,所以我们需要自己破解它。

在公钥中:K(x,y) = k * G, 我们只知道generator G, K, 但是难以获得k的值.

由 K(x,y) = k * G获得k的有效方法是Pollard's Rho (或者是它的变体) , 其复杂处只在于n应为G的级。 (n并不包括在公钥的资源中,因此我们需要通过  Schoof's 法则来获得n值)

因为用户不可能承受过于冗长的序列号的输入,因此Signature还是应该比较短的. 微软公司选择使用62位长的Signature,因此,n仅仅有62位长,计算私钥k的复杂度为 O(2^31).

- 作者: swirl0801 2004年12月11日, 星期六 15:06  回复(0) |  引用(0) 加入博采

[翻译]Windows序列号算法[上]
很容易在各大网站上找到不完整的Windows安装序列号的破解的文章的英文版。在这里尝试翻译一下,而且附带了完整的公式。虽然有一些说法,比如说windows版本是"vlk"我也不认同,但是出于对原作者的尊重,没有对文章进行修改。这是文章的上半部分。讲解了解码与验证。

摘要

安装微软的windows server 2003 vlk版需要一个VLK 的CDKEY。通常而言,非法用户使用的是已经泄露了的CDKEY,也就是说,成千上万的盗版用户都使用相同的CDKEY来安装他们的Windows。这样带来的问题是,这些盗版用户虽然可以正常使用软件,但是绝非永远,因为微软公司会在日后发布新的service pack中包含这些非法泄露了的CDKEY的信息,使盗版用户不能正常升级。(在Windows XP SP1中,微软公司就阻止了一些泄露的VLK安装序列号的升级)。所以,对于不同的盗版用户,我们应该使用不同的安装序列号。

通过追踪Windows产品序列号的认证程序,我成功的获取了微软使用的运算法则,并破解了其产生产品序列号的私钥。

认证过程

1.解码

下面的计算都是基于这个序列号的:

JCF8T-2MG8G-Q6BBK-MQKGT-X3GBB

 因为字符"-"不包含任何信息,所以微软的产品序列号实际上是由25个字符组成的。另外,微软没有使用易混淆的字符,比如"I"和"1","O"和"0",其产品序列号之包括"BCDFGHJKMPQRTVWXY2346789"进行编码。于是,一个产品序列号中,最多包含log22425约等于114个bit的信息。要把这些字符解码为2进制,我们需要:

a.将上面的序列号"JCF8T2MG8GQ6BBKMQKGTX3GBB"转化为"6 1 3 22 ......",即,‘B'=0, ‘C'=1, ‘D'=2 ......,我们定义得到的数组为base24[]。

b.计算解码:decode=∑{base24[i]*24^(24-i)}(i=0 to 24),运算的结果是:00 C5 31 77 E8 4D BE 73 2C 55 47 35 BD 8D 01 00 (采用little-endian表示)

c. 解码结果可以被分为:12bit + 31bit + 62bit + 9bit,四个部分分别表达的含义为:12bit: 操作系统家族, 31bit: Hash码, 62bit: 签名,  9bit: 前缀.

2.校验

如果阅读本段遇到了麻烦,请首先参阅一些椭圆曲线密码论(Elliptic Curve Cryptography,ECC)材料。

在开始校验产品序列号前,我们首先应将上述4个部分12bit: 操作系统家族, 31bit: Hash码, 62bit: 签名,  9bit: 前缀.进行一些计算。

微软产品序列号认证程序采用的是一个ECC公钥,这个公钥可以在PIDGEN.DLL's BINK找到,它包含:

p,a,b构造的曲线:y2=x3+ax+b(mod p)

G(x,y) 代表曲线上的一个点,称为"generator"。

K(x,y)代表曲线上的一点,由某个整数k以及"generator"点G决定。

没有私钥k,则我们无法创建一个有效的序列号,但是我们可以通过公钥key:{p, a, b, G, K}来验证一个序列号。

1.计算 H=SHA-1(5D 操作系统家族,Hash码,前缀,00 00),总长为11个byte。H长160个bit,我们需要的只是其前两个word。将H的第二个word进行位运算,右移2个bits。比如,若SHA-1返回了FE DC BA 98 76 54 32 10,则H=FE DC BA 98 1D 95 0C 04。(译者注:H的前面FE DC BA 98保留,将76 54 32 10作2次逻辑右移)。

2.计算 R(rx,ry)=Signature * (Signature*G + H*K)  (mod p)

3.计算 SHA-1(79 OS Family, rx, ry)总输入长度为 1+2+64*2=131个 byte。最后比较Hash与计算结果,如果两者相同,则序列号是可用的!

 

- 作者: swirl0801 2004年12月11日, 星期六 14:28  回复(0) |  引用(0) 加入博采