Apple 的个人资料给未来的自己照片日志列表更多 工具 帮助

日志


10月10日

MD5简介

 
      md5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但md2的设计与md4和md5完全不同,那是因为md2是为8位机器做过设计优化的,而md4和md5却是面向32位的电脑。这三个算法的描述和c语言源代码在internet rfcs 1321中有详细的描述(http://www.ietf.org/rfc/rfc1321.txt),这是一份最权威的文档,由ronald l. rivest在1992年8月向ieft提交。 

  rivest在1989年开发出md2算法。在这个算法中,首先对信息进行数据补位,使信息的字节长度是16的倍数。然后,以一个16位的检验和追加到信息末尾。并且根据这个新产生的信息计算出散列值。后来,rogier和chauvaud发现如果忽略了检验和将产生md2冲突。md2算法的加密后结果是唯一的--既没有重复。 

  为了加强算法的安全性,rivest在1990年又开发出
md4算法。md4算法同样需要填补信息以确保信息的字节长度加上448后能被512整除(信息字节长度mod 512 = 448)。然后,一个以64位二进制表示的信息的最初长度被添加进来。信息被处理成512位damg?rd/merkle迭代结构的区块,而且每个区块要通过三个不同步骤的处理。den boer和bosselaers以及其他人很快的发现了攻击md4版本中第一步和第三步的漏洞。dobbertin向大家演示了如何利用一部普通的个人电脑在几分钟内找到md4完整版本中的冲突(这个冲突实际上是一种漏洞,它将导致对不同的内容进行加密却可能得到相同的加密后结果)。毫无疑问,md4就此被淘汰掉了。

  尽管md4算法在安全上有个这么大的漏洞,但它对在其后才被开发出来的好几种信息安全加密算法的出现却有着不可忽视的引导作用。除了md5以外,其中比较有名的还有
sha-1、ripe-md以及haval等。 

  一年以后,即1991年,rivest开发出技术上更为趋近成熟的md5算法。它在md4的基础上增加了"安全-带子"(safety-belts)的概念。虽然md5比md4稍微慢一些,但却更为安全。这个算法很明显的由四个和md4设计有少许不同的步骤组成。在md5算法中,信息-摘要的大小和填充的必要条件与md4完全相同。den boer和bosselaers曾发现md5算法中的假冲突(pseudo-collisions),但除此之外就没有其他被发现的加密后结果了。 

  van oorschot和wiener曾经考虑过一个在散列中暴力搜寻冲突的函数(brute-force hash function),而且他们猜测一个被设计专门用来搜索md5冲突的机器(这台机器在1994年的制造成本大约是一百万美元)可以平均每24天就找到一个冲突。但单从1991年到2001年这10年间,竟没有出现替代md5算法的md6或被叫做其他什么名字的新算法这一点,我们就可以看出这个瑕疵并没有太多的影响md5的安全性。上面所有这些都不足以成为md5的在实际应用中的问题。并且,由于md5算法的使用不需要支付任何版权费用的,所以在一般的情况下(非绝密应用领域。但即便是应用在绝密领域内,md5也不失为一种非常优秀的中间技术),md5怎么都应该算得上是非常安全的了。

  2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的
王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。

  MD5破解工程权威网站http://www.md5crk.com/ 是为了公开征集专门针对MD5的攻击而设立的,网站于2004年8月17日宣布:“中国研究人员发现了完整MD5算法的碰撞;Wang, Feng, Lai与Yu公布了MD5、MD4、HAVAL-128、RIPEMD-128几个 Hash函数的碰撞。这是近年来密码学领域最具实质性的研究进展。使用他们的技术,在数个小时内就可以找到MD5碰撞。……由于这个里程碑式的发现,MD5CRK项目将在随后48小时内结束”。

  MD5用的是哈希函数,在计算机网络中应用较多的不可逆加密算法有RSA公司发明的MD5算法和由美国国家技术标准研究所建议的安全散列算法SHA.

算法的应用

  MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如: 

   MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461 

  这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。为了让读者朋友对MD5的应用有个直观的认识,笔者以一个比方和一个实例来简要描述一下其工作过程:
大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。
我们常常在某些软件下载站点的某软件信息中看到其MD5值,它的作用就在于我们可以在下载该软件后,对下载回来的文件用专门的软件(如Windows MD5 Check等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。
  
  MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

  所以,要遇到了md5密码的问题,比较好的办法是:你可以用这个系统中的md5()函数重新设一个密码,如admin,把生成的一串密码覆盖原来的就行了。 

       MD5还广泛用于操作系统的登陆认证上,如Unix、各类BSD系统登录密码、数字签名等诸多方。如在UNIX系统中用户的密码是以MD5(或其它类似的算法)经Hash运算后存储在文件系统中。当用户登录的时候,系统把用户输入的密码进行MD5 Hash运算,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这可以避免用户的密码被具有系统管理员权限的用户知道。MD5将任意长度的“字节串”映射为一个128bit的大整数,并且是通过该128bit反推原始字符串是困难的,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。所以,要遇到了md5密码的问题,比较好的办法是:你可以用这个系统中的md5()函数重新设一个密码,如admin,把生成的一串密码的Hash值覆盖原来的Hash值就行了。  

  正是因为这个原因,现在被黑客使用最多的一种破译密码的方法就是一种被称为"跑字典"的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。我们假设密码的最大长度为8位字节(8 Bytes),同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是P(62,1)+P(62,2)….+P(62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘阵列,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。这种加密技术被广泛的应用于UNIX系统中,这也是为什么UNIX系统比一般操作系统更为坚固一个重要原因。

算法描述
  对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 

  在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(Bits Length)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。 

  MD5中有四个32位被称作链接变量(Chaining Variable)的整数参数,他们分别为:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。 

  当设置好这四个链接变量后,就开始进入算法的四轮循环运算。循环的次数是信息中512位信息分组的数目。 

  将上面四个链接变量复制到另外四个变量中:A到a,B到b,C到c,D到d。 

  主循环有四轮(MD4只有三轮),每轮循环都很相似。第一轮进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。 
以一下是每次操作中用到的四个非线性函数(每轮一个)。 

   F(X,Y,Z) =(X&Y)|((~X)&Z) 
   G(X,Y,Z) =(X&Z)|(Y&(~Z)) 
   H(X,Y,Z) =X^Y^Z 
   I(X,Y,Z)=Y^(X|(~Z)) 
   (&是与,|是或,~是非,^是异或) 

  这四个函数的说明:如果X、Y和Z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。 
F是一个逐位运算的函数。即,如果X,那么Y,否则Z。函数H是逐位奇偶操作符。
 
(感慨一下侯孟波的课果然都被我睡觉了。。)

base64简介与代码实现

base64简介
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。

这样说会不会太抽象了?不怕,我们来看一个例子:

转换前 aaaaaabb ccccdddd eeffffff   
转换后 00aaaaaa 00bbcccc 00ddddee 00ffffff 

应该很清楚了吧?上面的三个字节是原文,下面的四个字节是转换后的Base64编码,其前两位均为0。

转换后,我们用一个码表来得到我们想要的字符串(也就是最终的Base64编码),这个表是这样的:(摘自RFC2045)


                            Table 1: The Base64 Alphabet

      Value Encoding  Value Encoding  Value Encoding  Value Encoding
           0 A            17 R            34 i            51 z
           1 B            18 S            35 j            52 0
           2 C            19 T            36 k            53 1
           3 D            20 U            37 l            54 2
           4 E            21 V            38 m            55 3
           5 F            22 W            39 n            56 4
           6 G            23 X            40 o            57 5
           7 H            24 Y            41 p            58 6
           8 I            25 Z            42 q            59 7
           9 J            26 a            43 r            60 8
          10 K            27 b            44 s            61 9
          11 L            28 c            45 t            62 +
          12 M            29 d            46 u            63 /
          13 N            30 e            47 v
          14 O            31 f            48 w         (pad) =
          15 P            32 g            49 x
          16 Q            33 h            50 y


让我们再来看一个实际的例子,加深印象!

转换前 10101101 10111010 01110110   
转换后 00101011 00011011 00101001 00110110 
十进制 43 27 41 54 
对应码表中的值 r b p 2 


所以上面的24位编码,编码后的Base64值为 rbp2
解码同理,把 rbq2 的二进制位连接上再重组得到三个8位值,得出原码。
(解码只是编码的逆过程,在此我就不多说了,另外有关MIME的RFC还是有很多的,如果需要详细情况请自行查找。)

用更接近于编程的思维来说,编码的过程是这样的:

第一个字符通过右移2位获得第一个目标字符的Base64表位置,根据这个数值取到表上相应的字符,就是第一个目标字符。
然后将第一个字符左移4位加上第二个字符右移4位,即获得第二个目标字符。
再将第二个字符左移2位加上第三个字符右移6位,获得第三个目标字符。
最后取第三个字符的右6位即获得第四个目标字符。

在以上的每一个步骤之后,再把结果与 0x3F 进行 AND 位操作,就可以得到编码后的字符了。

可是等等……聪明的你可能会问到,原文的字节数量应该是3的倍数啊,如果这个条件不能满足的话,那该怎么办呢?

我们的解决办法是这样的:原文的字节不够的地方可以用全0来补足,转换时Base64编码用=号来代替。这就是为什么有些Base64编码会以一个或两个等号结束的原因,但等号最多只有两个。因为:

余数 = 原文字节数 MOD 3

所以余数任何情况下都只可能是0,1,2这三个数中的一个。如果余数是0的话,就表示原文字节数正好是3的倍数(最理想的情况啦)。如果是1的话,为了让Base64编码是4的倍数,就要补2个等号;同理,如果是2的话,就要补1个等号。
在线转换:http://md5.mmkey.com/base64/
base64编码与解码工具有很多,这里推荐eCrypt软件,可以从http://sourceforge.net/project/showfiles.php?group_id=190563&package_id=223563&release_id=490837中下载软件和源代码。

Quoted-Printable也是MIME邮件中常用的编码方式之一。同Base64一样,它也将输入的字符串或数据编码成全是ASCII码的可打印字符串。

Quoted-Printable编码的基本方法是:输入数据在33-60、62-126范围内的,直接输出;其它的需编码为“=”加两个字节的HEX码(大写)。为保证输出行不超过规定长度,可在行尾加“=\r\n”序列作为软回车。

软件需求学习2

举例:

买东西(非正式版本)

请求者发起一个请求,并把这个请求送给她的批准者。批准者首先检查预算中是否还有资金,然后核对货物的价格,接着完成提交请求,并将请求发送给买者。买者查阅仓库目录,找出最好的货物供应商。认证者验证批准者的签名。买者完成订购请求的各项工作,向供货商发出PO(订单)。供货商把货物发送给接收者,并得到发货收据(这一点超出了本系统的设计范围)。接收者记录交货情况,并把货物发送给请求者。请求者设置请求已被满足标志。

    在获得货物前的任意时刻,请求者都可以修改或取消请求。取消意味着把此请求从任何执行处理中取消(从系统中删除它吗?)。降低货物价格不影响对其进行的处理过程;提高价格则需要将请求重新发回给批准者。

 










买东西(完整正式版本)

主执行者:请求者

语境中的目标:请求者通过系统买东西,并得到说买的东西。不包括付款方面的内容。

范围:业务——整个购买机制,包括电子的和非电子的,正如人们在公司中说见到的一样。

层次:概要

项目相关人员和利益:

请求者:希望得到她订购的东西,并且操作要简单。

公司:希望控制花费,但允许必要的购买。

供货商:希望得到任何已发货物的货款。

前置条件:无

最小保证:每一个发出的订单都已经获得有效认证者的许可。订单具有可跟踪性,以便公司只对收到的有效货物开账单。

成功保证:请求者得到货物,修改预算,记入借方。

触发事件:请求者决定买东西。

主成功场景:

1.  请求者:发起一个请求

2.  批准者:检查预算中的资金,检查货物的价格,完成提交请求

3.  买者:检查仓库的存货,找出最好的供货商。

4.  认证者:验证批准者的签名

5.  买者:完成订购请求,向供货商发出PO(订单)。

6.  供货商:把货物发送给接收者,得到发货收据(这一点超出了本系统的设计范围)。

7.  接收者:记录发货情况;向请求者发送货物。

8.  请求者:设置请求已被满足标志。

扩展:

1a)请求者不知道供货商和货物价格:不填写这些内容,然后继续。

1b)在收到货物之前的任意时刻,请求者都可以修改或取消请求:

如果取消,则把这个请求从执行处理中取消。(从系统中删除吗?)

如果降低价格,则不影响其处理过程。

如果提高价格,则把请求送回批准者。

2a)批准者不知道供货商或货物价格:不填写这些内容,留待买者填写或返回。

2b)批准者不是请求者的经理:只是批准者签名仍然可行。

2c)批准者拒绝申请:送回给请求者,要其修改或删除。

3a)买者在仓库中找到货物:将存货先发出,并从申请者要求的总购买者中减去已经发出的这部分货物量,然后继续。

3b)买者填写在前面活动中没有填写的供货商和价格信息:请求重新发回给批准者。

4a)认证者拒绝批准者:发回请求者,并将此请求从执行处理中取消。

5a)请求涉及到多个供货商:买者创建多个PO

5b)买者将多个请求合并:相同的过程,但是用被合并的请求标记PO

6a)供货商没有按时发货:系统发出没有发货警告

7a)部分发货:接收者在PO上做部分发货标记,然后继续。

7b)多个请求PO的部分发货:接收者给每个请求分配货物数量,然后继续。

8a)货物不对或质量不合格:请求者拒绝接收所发送的货物。

8b)请求者已经离开公司:买者同请求者的经理进行核实,或者重新指派申请者,或者返还货物并取消请求。

技术和数据变动列表:无

优先级:多种

发行版本:几个

响应时间:多样

使用频率:3/

主执行者的渠道:网络浏览器、邮件系统或类似系统

次要执行者:供货商

次要执行者的渠道:传真、电话或汽车

未解决的问题:

    什么时候从系统中删除被取消的请求?

    要取消一个请求需要那些权限?

    谁能修改一个请求的内容?

    请求中需要保留哪些修改历史记录?

    当请求者拒绝已经发送的货物时,会发生什么情况?

    申请和订货在运作上有什么不同?

    订购如何参考和使用内部存货?

3、需求工程推荐方法

 培训需求分析人员

 培训用户代表和管理人员

 培训应用领域的开发人员

 汇编术语

 确定变更控制过程

 建立变更控制委员会

 进行变更影响分析

 跟踪影响工作产品的每项

 编写需求文档的基准版本

 维护变更历史记录

 跟踪需求状态

 衡量需求稳定性

 使用需求管理工具

 选择合适的生存周期

 确定需求的基本计划

 协商约定

 管理需求风险

 跟踪需求工作

 

 编写项目视图与范围

 确定需求开发过程

 用户群分类

 选择产品代表

 建立核心队伍

 确定使用实例

 召开应用程序开发

 联系(J A D)会议

 分析用户工作流程

 确定质量属性

 检查问题报告

 需求重用

 

 绘制关联图

 创建开发原型

 分析可行性

 确定需求优先级

 为需求建立模型

 编写数据字典

 应用质量功能调配

Q F D

编写规格说明书

 采用软件需求规格说明模版

 指明需求来源

 为每项需求注上标号

 记录业务规范

 创建需求跟踪能力矩阵

 

 审查需求文档

 依据需求编写测试用例

 编写用户手册

 确定合格的标准

需求工程注重应用“最佳方法”。这些方法适用于一些项目,但是不适用于另一些项目,所以需要裁剪一些方法适用于所有项目。

软件需求学习

需求层次:

层次

内容描述

呈现方式

业务需求

组织机构或客户对系统、产品高层次的目标要求。

项目视图与范围文档中予以说明

用户需求

用户使用产品必须要完成的任务

Use Case

功能需求

必须实现的软件功能

需求规格说明文档中功能需求说明

非功能需求

系统展现给用户的行为和执行的操作等,包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。

需求规格说明文档中非功能需求说明

需求开发过程

0、  开发过程

1  需求收集:

定义项目的视图和范围。

学习与了解本行业的知识,这样与用户比较容易沟通。

访问有潜力的用户,对用户进行分类并找各自合适的代表,找出新软件产品的用户需求。注意与用户沟通技巧。

对目前市场上竞争产品进行研究,进行功能提取与解决方案分析,写成文档。

收集了用户在使用现有系统过程中所遇到问题的信息,还接受了用户关于系统改进的想法。

市场调查和用户问卷调查。

观察正在工作的用户,预见用户在使用当前系统时所遇到的问题,并能分析新的系统可有效支持工作流程与功能。

做用户的学徒,揭示有意识和无意识的需求,如果用户因为“太忙”而无法交谈,这种方法很有用。

业务事件研讨会,产生业务规则与目标。

头脑风暴,召集一组聪明的、有意愿的、不同学科背景、不同经验的人,让他们对新产品产生尽可能多的想法。

用录像记录用户和需求分析师参加的研讨会和头脑风暴的过程,录像的作用有:记录、确认、备忘。

2  需求分析:

绘制关联图

创建开发原型

确定需求优先级

为需求建立模型,需求原型是对需求模拟的模型,设计目的是帮助了解更多用户需求。需求原型有三种:

1)低保真原型是一种快速模拟产品的方式,使用熟悉的技术,诸如笔、纸、白板等。低保真原型有助于将注意力集中在产品做什么上,而不是产品看起来如何,他们有助于发现遗漏的功能和测试产品的范围。

2)高保真原型使用做原型的工具来给出非常真实的外观,他们对于发现易用性需求是特别有效的。

3)场景模型是一项是抽象主题变得生动的技巧,它通过对一个特定实例讲故事的方式来做到这一点。这些模型能有效地帮助人们将注意力集中在细节上,并发现其他情况可能会遗漏的异常。

编写数据字典

通过用例提取与分析需求,如果用例编写恰当,可以准确地对系统必须做什么进行详细的描述。用例不是所有的需求。用例不详细地描述外部接口、数据格式、业务规则和复杂公式。用例只是收集了所有需求中的一部分。

3  编写规格说明书

  采用软件需求规格说明模版,可以采用CMMI中的需求规格说明模版。

  正确的、完整的表达所描述的需求。

 

4  需求验证

对需求进行审查

用测试用例来验证需求

验收判断标准表

方面

验收判断标准

功能性需求

确保功能被正确地执行

非功能性需求

量化度量,引入该产品的3个月之内,60%的用户将用它来完整规定的工作。在这些用户之中,将有75%对产品表示赞许。

客户

询问客户一个关键问题来确定,这个问题是:“什么会被认为是满足需求失败?”。

测试

产品将不会让测试组的80%的人感觉到被冒犯。

观感需求

界面的兼容性作为验收标准

易用性需求

经过一天培训之后,10个用户中有9个能够成功地完成选择的任务。

性能需求

95%的情况下,响应时间将不超过1.5秒,在其他情况下不超过4秒。

可操作性需求

对要求的环境下使用是否容易或使用是否成功的量化标准。

可维护性需求

新的用户将能被加入系统,并且对现存用户的打断不超过5分钟。

安全性需求

产品的数据必须与数据的权威来源保持一致。

文化和政策需求

基于谁将认证产品是可接受的。

法律需求

法律部门/公司的律师将认证产品符合相关法律。

用例需求

所有相关需求的意图的总和。

限制条件

度量

 

 

需求管理方法以及常用需求管理工具管理需求:

需求管理的策略:包括变更控制,需求跟踪(跟踪矩阵、需求状态跟踪如已建议,已批准,已实现,已验证,已删除)和变更的影响分析。

需求管理的主要活动:

需求管理工具

RequisitePro

CaliberRM

DOORS

 

附录:

1、  在工作中找些项目或者找些开源项目来分析与开发系统需求,积累经验,从成功中获益并避免导致失败的失误。

2、如何编写一个好的用例

想学会如何阅读用例是很容易的,但是学会编写一个好的用例却不容易。编写者必须掌握三个概念:

范围:真正被谈论的系统是什么?

主执行者:谁有要实现的目标?

层次:目标的层次是高还是低?

用例格式有很多中,比如完整正式的用例格式、非正式的用例格式、单列表格格式、RUP格式等。

完整正式的用例格式:

RUP格式:

 

 

8月27日

to_date

TO_DATE格式 
Day: 
dd number 12 
dy abbreviated fri 
day spelled out friday 
ddspth spelled out, ordinal twelfth 
Month: 
mm number 03 
mon abbreviated mar 
month spelled out march 
Year: 
yy two digits 98 
yyyy four digits 1998 

24小时格式下时间范围为: 0:00:00 - 23:59:59.... 
12小时格式下时间范围为: 1:00:00 - 12:59:59 .... 


1. 
日期和字符转换函数用法(to_date,to_char) 

2. 
select to_char( to_date(222,'J'),'Jsp') from dual 

显示Two Hundred Twenty-Two 

3. 
求某天是星期几 
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; 
星期一 
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; 
monday 
设置日期语言 
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN'; 
也可以这样 
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American') 

4. 
两个日期间的天数 
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual; 

5. 时间为null的用法 
select id, active_date from table1 
UNION 
select 1, TO_DATE(null) from dual; 

注意要用TO_DATE(null) 

6. 
a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd') 
那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。 
所以,当时间需要精确的时候,觉得to_char还是必要的 
7. 日期格式冲突问题 
输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: '01-Jan-01' 
alter system set NLS_DATE_LANGUAGE = American 
alter session set NLS_DATE_LANGUAGE = American 
或者在to_date中写 
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; 
注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多, 
可查看 
select * from nls_session_parameters 
select * from V$NLS_PARAMETERS 

8. 
select count(*) 
from ( select rownum-1 rnum 
from all_objects 
where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002- 
02-01','yyyy-mm-dd')+1 

where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' ) 
not 
in ( '1', '7' ) 

查找2002-02-28至2002-02-01间除星期一和七的天数 
在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒). 

9. 
select months_between(to_date('01-31-1999','MM-DD-YYYY'), 
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL; 


select months_between(to_date('02-01-1999','MM-DD-YYYY'), 
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL; 

1.03225806451613 
10. Next_day的用法 
Next_day(date, day) 

Monday-Sunday, for format code DAY 
Mon-Sun, for format code DY 
1-7, for format code D 

11 
select to_char(sysdate,'hh:mi:ss') TIME from all_objects 
注意:第一条记录的TIME 与最后一行是一样的 
可以建立一个函数来处理这个问题 
create or replace function sys_date return date is 
begin 
return sysdate; 
end; 

select to_char(sys_date,'hh:mi:ss') from all_objects; 
12. 
获得小时数 

SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer 
SQL> select sysdate ,to_char(sysdate,'hh') from dual; 

SYSDATE TO_CHAR(SYSDATE,'HH') 
-------------------- --------------------- 
2003-10-13 19:35:21 07 

SQL> select sysdate ,to_char(sysdate,'hh24') from dual; 

SYSDATE TO_CHAR(SYSDATE,'HH24') 
-------------------- ----------------------- 
2003-10-13 19:35:21 19 

获取年月日与此类似 
13. 
年月日的处理 
select older_date, 
newer_date, 
years, 
months, 
abs( 
trunc( 
newer_date- 
add_months( older_date,years*12+months ) 

) days 
from ( select 
trunc(months_between( newer_date, older_date )/12) YEARS, 
mod(trunc(months_between( newer_date, older_date )), 
12 ) MONTHS, 
newer_date, 
older_date 
from ( select hiredate older_date, 
add_months(hiredate,rownum)+rownum newer_date 
from emp ) 


14. 
处理月份天数不定的办法 
select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual 

16. 
找出今年的天数 
select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual 

闰年的处理方法 
to_char( last_day( to_date('02' || :year,'mmyyyy') ), 'dd' ) 
如果是28就不是闰年 

17. 
yyyy与rrrr的区别 
'YYYY99 TO_C 
------- ---- 
yyyy 99 0099 
rrrr 99 1999 
yyyy 01 0001 
rrrr 01 2001 

18.不同时区的处理 
select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate 
from dual; 

19. 
5秒钟一个间隔 
Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS') 
from dual 

2002-11-1 9:55:00 35786 
SSSSS表示5位秒数 

20. 
一年的第几天 
select TO_CHAR(SYSDATE,'DDD'),sysdate from dual 
310 2002-11-6 10:03:51 

21.计算小时,分,秒,毫秒 
select 
Days, 
A, 
TRUNC(A*24) Hours, 
TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes, 
TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds, 
TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds 
from 

select 
trunc(sysdate) Days, 
sysdate - trunc(sysdate) A 
from dual 




select * from tabname 
order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss'); 

// 
floor((date2-date1) /365) 作为年 
floor((date2-date1, 365) /30) 作为月 
mod(mod(date2-date1, 365), 30)作为日. 
23.next_day函数 
next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。
4月27日

X.509

     在和CA进行一些接触时,我们常常会听到一个名词: X.509。它是一种行业标准或者行业解决方案,在X.509方案中,默认的加密体制是公钥密码体制。为进行身份认证,X.509标准及公共密钥加密系统提供了数字签名的方案。用户可生成一段信息及其摘要(亦称作信息"指纹")。用户用专用密钥对摘要加密以形成签名,接收者用发送者的公共密钥对签名解密,并将之与收到的信息"指纹"进行比较,以确定其真实性。
  此问题的解决方案即X.509标准与公共密钥证书。本质上,证书由公共密钥加密钥拥有者的用户标识组成,整个字块有可信赖的第三方签名。典型的第三方即大型用户群体(如政府机关或金融机构)所信赖的CA。
  此外,X.509标准还提供了一种标准格式CRL,下面我们就来看一看 X.509标准下的证书格式极其扩展。
  目前X.509有不同的版本,例如 X.509 V2和x.509 v3都是目前比较新的版本,但是都在原有版本(X.509 V1)的基础上进行功能的扩充,其中每一版本必须包含下列信息:
  (1) 版本号
  (2) 序列号;
  (3) 签名算法标识符
  (4) 认证机构
  (5) 有效期限
  (6) 主题信息
  (7) 认证机构的数字签名
  (8) 公钥信息
1、版本号:
用来区分X.509的不同版本号
2、序列号;
由CA给予每一个证书的分配唯一的数字型编号,当证书被取消时,实际上是将此证书的序列号放入由CA签发的CRL中;这也是序列号唯一的原因。
3、签名算法标识符:
用来指定用CA签发证书时所使用的签名算法。算法标识符用来指定CA签发证书时所使用的公开密钥算法和HASH算法,须向国际指明标准组织(如ISO)注册。
4、认证机构:
即发出该证书的机构唯一的CA的x.500名字;
5、有效期限:
证书有效的时间包括两个日期:证书开始生效期和证书失效的日期和时间。在所指定的这两个时间之间有效;
6、主题信息:
证书持有人的姓名、服务处所等信息;
7、认证机构的数字签名:
以确保这个证书在发放之后没有被撰改过;
8、公钥信息:
包括被证明有效的公钥值和加上使用这个公钥的方法名称;
  X.509的扩展(V3)
  X.509标准第三版在V2的基础上进行了扩展,V3引进一种机制。这种机制允许通过标准化和类的方式将证书进行扩展包括额外的信息,从而适应下面的一些要求一:
  (1)一个证书主体可以有多个证书;
  (2)证书主体可以被多个组织或社团的其他用户识别;
  (3)可按特定的应用名(不是X.500名)识别用户,如将公钥同EMAIL地址联系起来;
  (4)在不同证书政策和实用下会发放不同的证书,这就要求公钥用户要信赖证书;证书并不限于这些标准扩展,任何人都可以向适当的权利机构注册一种扩展。将来会有更多的适于应用的扩展列入标准扩展集中。值得注意的是这种扩展机制应该是完全可以继承的。
  每一种扩展包括三个域:类型、可否缺省、值
类型字段定义了扩展值字段中的数据类型。这个类型可以是简单的字符串,数值,日期,图片或一个复杂的数据类型。为便于交互,所有的数据类型都应该在国际知名组织进行注册。
  是否可缺省字段是一比特标识位。当一扩展标识为不可缺省时,说明相应的扩展值非常重要,应用程序不能忽略这个信息。如果使用一特殊证书的应用程序不能处理该字段的内容,就应该拒绝此证书。
扩展值字段包含了这个扩展实际的数据。
公开密钥证书的标准扩展可以分为以下几组:
  · 密钥和政策信息,包括机构密钥识别符、主体密钥识别符、密钥用途(如数字签字,不可否认性   、密钥加密、数据加密、密钥协商、证书签字、CRL签字等),密钥使用期限等;
  · 主体和发证人属性,包括主体代用名、发证者代用名、主体检索属性等;
  · 证书通路约束,包括基本约束,指明是否可以做证书机构。
  · 与CRL有关的补充;

  X.509是国际标准化组织CCITT建议作为X.500目录检索的一部分提供安全目录检索服务。一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息一种非常通用的证书格式,所有的证书都符合X.509 国际标准。目前X.509有不同的版本,例如 X.509 V2和x.509 v3都是目前比较新的版本,但是都在原有版本基础上进行功能的扩充,其中每一版本必须包含下列信息:
  (1) 用来区分X.509的不同版本号既版本号
  (2) 由CA给予每一个证书的分配的编号即序列号;
  (3) 用于产生证书所用的方法以及一切参数即签名算法
  (4) CA的x.500名字即发出该证书的认证机构
  (5) 证书有效的时间包括两个日期,在所指定的两个时间之 间有效即有效期限
  (6) 证书持有人的姓名、服务处所等信息即主题信息
  (7) 认证机构的数字签名
  (8) 被证明的公钥值,加上使用这个公钥的方法名称即公钥信息

  PKI (Public-Key Infrastructure) 公钥体系基础框架。
  PKIX (Public-Key Infrastructure Using X.509)使用X.509的公钥体系基础框架。
  X.500 由ISO和ITU提出的用于为大型网络提供目录服务的标准体系。
  X.509 为X.500提供验证(Authenticating)体系的标准。
  PKCS(Public Key Cryptography Standards)公钥加密标准,为PKI提供一套完善的标准体系。
  对于任何基于公钥体系的安全应用,必须确立其PKI。而电子签证机关(CA)是PKI中的一个关键的组成部分,它主要涉及两方面的内容,即公钥证书的发放和公钥证书的有效性证明。在PKIX中,CA遵循  X.509标准规范。
  X.509最早的版本X.509v1是在1988年提出的,到现在已升级到X.509v3,现将其涉及到的主要内容以及与前版本的比较列于下表。
  X.509 PKI国际标准更新版本对照表
  X.509 PKI 主要特性
  X.509 v1 & 2 X.509 v3
证书信息 只有X.500 实体名,包括CA、证主(subject)名,证主公钥及其有效期。 充分扩展,可包含任何信息。
  CA 规范 CA体系鼓励带交叉的层状树型结构,无信任限制规范。 CA体系鼓励带交叉的层状树型结构,有信任限制规范。
  CA "证主 " 用户 CA、证主、用户在概念上严格区分
  CA "证主" 用户信任关系 认为每个用户至少信任一个CA。CA无法操纵与其它CA、证主及用户间的信任关系。 认为每个用户至少信任一个CA。CA可以规范与其它CA及证主间的信任关系。
证书有效性验证方式 离线方式,通过检查证书有效期及是否出现在最近的CRL(证书吊销表)上。 支持离线与在线方式。
  证书吊销方法 简单CRL。 复杂的CRL,通过功能扩展支持在线方式。
证书形式特点 身份形式的证书。 主要还是身份形式的证书,但支持信任委托形式的证书。
匿名性 匿名程度依赖于 X.500 条目的匿名程度。 扩展功能支持彻底的匿名服务。
  X.509证书格式
  X.509是另一种非常通用的证书格式。所有的证书都符合ITU-T X.509国际标准;因此(理论上)为一种应用创建的证书可以用于任何其他符合X.509标准的应用。但实际上,不同的公司对X.509证书进行了不同的扩展,不是所有的证书都彼此兼容。在一份证书中,必须证明公钥及其所有者的姓名是一致的。对PGP证书来说,任何人都可以扮演认证者的角色。对X.509证书来说,认证者总是 CA或由CA指定的人(其实PGP证书也完全支持使用CA来确认证书的体系结构),一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。X.509标准定义了证书中应该包含哪些信息,并描述了这些信息是如何编码的(即数据格式),所有的X.509证书包含以下数据:
  <>X.509版本号:指出该证书使用了哪种版本的X.509标准,版本号会影响证书中的一些特定信息。目前的版本是3。
  <>证书持有人的公钥:包括证书持有人的公钥,算法(指明密钥属于哪种密码系统)的标示符和其他相关的密钥参数。
  <>证书的序列号:创建证书的实体(组织或个人)有责任为该证书指定一个独一无二的序列号,以区别于该实体发布的其他证书。序列号信息有许多用途;比如当一份证书被回收以后,它的序列号就被放入证书回收列表(CRL)之中。
  <>证书持有人唯一的标示符:(或称DN-distinguished name)这个名字在 Internet上应该是唯一的。DN由许多部分组成,看起来象这样:
  CN=Bob Allen, OU=Total Network Security Division,
  O=Network Associates, Inc., C=US
这些信息指出该科目的通用名,组织单位,组织和国家
  <>证书的有效期:证书起始日期和时间以及终止日期和时间;指明证书何时失效。
  <>证书发布者的唯一名字:这是签发该证书的实体的唯一名字。通常是CA。.使用该证书意味着信任签发证书的实体。(注意:在某些情况下,比如根或顶级CA证书,发布者自己签发证书)
  <>发布者的数字签名:这是使用发布者私钥生成的签名。
  <>签名算法的标示符:指明CA签署证书所使用的算法。
  X.509证书和PGP证书之间有许多不同,最明显的如下所述:
  <>用户可以创建自己的PGP证书,但是必须向CA请求才能得到一份X.509证书。
  <>X.509证书天生只支持密钥拥有者的一个名字。
  <>X.509证书只支持证明密钥合法性的一个数字签名。
要获得一份X.509证书,必须请求CA发给你证书。用户提供自己的公钥,证明自己拥有相应的私钥,并提供有关自己的某些特定信息。然后在这些信息上数字签名,并将整个数据包(称为证书请求)发给CA。CA做一些努力来验证用户提供的信息是正确的,然后就生成证书并返回给用户。
一份X.509证书看起来很象一份带公钥的标准书面证书(类似于基础急救班的结业证书)。证书中包含名字和一些有关的个人信息,加上颁发证书人的签名。
当前X.509证书最广泛的使用大概是在Web浏览器之中。

3月19日

FTP常见反馈信息知识大全

230    用户登录
250    请求的文件操作完成
257    创建"PATHNAME"
331    用户名正确,需要口令
332    登录时需要帐户信息
350    请求的文件操作需要进一步命令
421    连接用户过多
425    不能打开数据连接
426    关闭连接,中止传输
450    请求的文件操作未执行
451    中止请求的操作:有本地错误
452    未执行请求的操作:系统存储空间不足
500    格式错误,命令不可识别
501    参数语法错误
502    命令未实现
503    命令顺序错误
504    此参数下的命令功能未实现
530    账号或密码错误
532    存储文件需要帐户信息
550    未执行请求的操作
551    请求操作中止:页类型未知
552    请求的文件操作中止,存储分配溢出
553    未执行请求的操作:文件名不合法

●400-Bad request失败请求错误(最常见的错误之一)
  这个问题在于你输入的网址有错误。有可能是你要连接的服务器不能
识别你要求浏览的文档,或者你没有访问它的权利甚至它根本就是不存在
的。仔细检查一下你是否将网址写错,包括大小写(一般网址是不分大小
写的,可是某些特殊文档例外)、符号或是多打了空格。这是最常见的一
类错误。

●401-Unauthorized未经过认证的错误

  可能是你访问到了有密码保护的站点而你输入的密码不正确。首先你
要确认是否有访问该网站的权利(通常有用户名和密码),密码是严格区
分大小写的,一般是不能匿名的。

●403-Forbidden禁止访问错误

  你可能没有权利访问这个文档,有时某些页面是不允许直接访问的(
没有炼接到上面的页面),当然也有被口令保护的可能。这时你须要回到
上一页面输入口令才能够访问。

●404-Not found没有找到错误(最常见的错误之二)

  这是我们经常遇到的访问出错情况。首先可能是你的网址有错误(漏
字、大小写、符号的差异等),或者是网址最后的扩展名不对,当然也有
可能是这个地址或者页面根本不存在。

●500-Server Error服务器错误

  通常是对方网页程序设计错误而产生的,可能是正在修改和上传网页
,等待对方网页纠正错误后再试吧。

●503-Service unavailable服务不可用错误(常见错误之三)

  这也有很多可能性:你的ISP服务器死机,你公司的网关断了(如果你
通过单位的局域网上网),或者你自己的系统出问题了。最好的办法是等
一会再试试,如果仍然不行就去看看自己的机器、询问一下网络管理员。

●Bad file request错误文件请求

  你的浏览器要求访问数据域和下拉列表等特殊格式的文件和文档,然
而访问的页面没有这些表单,或者表单出错。你只有通知管理员更新表单。

●Socks Error代理服务器出错
(常见错误之?IMG SRC='/big5/images/smiles/smile_sleepy.gif' ALT='sleepy' WIDTH=15 HEIGHT=15 border=0 ALIGN='absmiddle'>

  这是在代理环境下客户机上最常见的错误,原因是:连接超时、代理
服务器已经关闭或连线已经断开。咨询服务器管理员查找相应的错误并对
照解决。

●Request time out连接超时错误(常见错误之五)

  连接超时,主要原因可能是你的网络速度太差,或者你在浏览器中设
置了超时时间选项,也可能是因为服务器的问题,多试试看。

●An Unexpected Web Error Occurred不可预知的网页错误

  发生此错误的原因很多,没有任何详细的解释和解决办法。只有采用
上面说的逐级访问父目录的办法,或者放弃。

●Cannot add form submission result to bookmark list无法将表单结
果加入书签列表

  当你通过搜索找到一堆网址,想把结果存到书签中,由于你得到的可
能是一个动态的网页,不能够将它加到书签上。你可以将结果页面作为一
个HTML文件存到你的硬盘上。

●Failed DNS lookup DNS查找失败错误

  DNS(Domain Name System域名管理系统)用于将网址翻译成合法的
因特网物理地址,出现这种错误可能是你输入地址有错误,检查一下输
入的地址,然后重新试试。

●File contains no data文件无内容错误

  你访问的站点没错,但没有Web页面,只有重试几次看看。

●Connection refused by host主机拒绝连接

  可能是你无权访问这个站点,或者它拒绝你的IP(或者IP段)访问,
也有可能是口令保护造成的。

●Viewer not found找不到查看器错误

  网上有多种格式的文件,比如声音文件、压缩文件、动画文件等。如
果你的浏览器没有定义相关的软件就不能够访问。简单的解决方法就是下
载并安装相关的软件。

●Unable to locate the server不能定位服务器错误

  可能你输入的网址有问题,或者服务器不存在,或者是服务器已经被
取消了(这时一般会有一个页面提示你转到相应的页面)。重新检查一下
你输入的地址,重试一下。

●Host unavailable主机不可用错误

  有可能主机死机了。稍等一会,重新刷新再看看。

●Network connection was refused by the server服务器拒绝网络连接错误

  要求访问A务器的用户太多,无法对你的要求应答。只有不停地刷新
了再试一试。

●Host unknown主机找不到错误

  通常是服务器死机了,或者是你的网络连接中断所致。

二、使用FTP、新闻组、Foxmail和OE、CuteFTP、NetAnts中常见的错误和解决

●Connet:10061没有连接

  连接失败或者没有连接,也可能是你要连接的主机根本就不提供FTP服务。

●Not connet,access deny拒绝连接访问错误

  不能匿名登录和访问,你必须提供用户名和密码才能登录。只有去申请
一个用户名你才能进入主机。

●Bad target URL目标URL错误

  在使用网络蚂蚁NetAnts时最常见的错误,是你的JOB的URL地址有问题,
可能是你输入有问题,也可能是服务器上连接出错。

●Too many users用户太多

  当你登录FTP时出现的错误。这是由于访问该FTP站点的用户太多所致,
你可到换个时间段试一试。

●You can't log on as an anonymous user你不能作为匿名用户登录

  有些FTP站点允许通过匿名(就是使用anonymous的用户名和口令)访问
,但有些仅允许其成员(拥有特定用户名和口令)访问。另外一种可能是你
的浏览器不支持匿名FTP访问,你可以使用专门的FTP软件(比如CUTEFTP)
访问。

●Permission denied拒绝访问

  当你试图上传一个文件到FTP站点上时,没有权限或者是站点太忙所致。

●NNTP server error新闻组服务器错误

  当你试图登录一个新闻讨论组时出现的错误,可能是服务器关闭或者连
接中断引起。

●Too many connections——try again later太多的连接,等一会再试
  这也是由于用户过多产生的错误信息,你换个时间访问吧!

●Receive and send data error接收或发送数据出错

  在使用Foxmail或者Outlook Express时,通常由于线路质量不好,与服
务器的连接被意外中断所致。

●Connect server fail连接服务器失败

  在使用Foxmail或者Outlook Express时,不能连接到你的邮件服务器。
请检查你是否已连接到你的ISP或者网络是否已经断开,如果邮件服务器已
关掉或太忙,也会出现这种情况。

●Can’t resolve server address不能解析服务器地址

  在使用Foxmail或者Outlook Express时,解析服务器地址失败,通常是
因为DNS服务器未连接,或POP3(SMTP)服务器名字写错,纠正信箱的服务器
设置参数就可以了。

●The actual size of downloading file is unknown下载文件大小无法确定

  这是NetAnts的一个Bug,因为NetAnts在下载文件前,必须先知道文件
的大小,出现这个错误的原因是因为服务器的应答中没有包括文件大小。
在以后版本中会得到改进。

●Warning The server says 553 sorry,that domain isn’t in my list of allowed reception发送邮箱地址错误

  在使用Outlook Express和Foxmail时发生的错误,错误在于SMTP服务器
不接受你要发送的邮件地址。通常,一些免费的邮件服务器只接受发送给它
自己的邮件地址。解决办法:更换一个SMTP服务器地址

(二) FTP下载错误资讯
有很多的朋友不太会看FTP资讯错误,如果下载不了,一定是出了错误,自己要知道是什?地方错了。?什?错。
下面说说几个非常典型的。
530,说明密码错误。
550,说明位址有错误,可能是盗连没有改。
详细的FTP错误列表
110 Restart marker reply. In this case, the text is exact and not left to the particular implementation; it must read: MARK yyyy = mmmm where yyyy is User-process data stream marker, and mmmm server's equivalent marker (note the spaces between markers and 重新?动标志回应。这种情况下,资讯是精确的并且不用特别的处理;可以这样看:标记 yyyy = mmm 中 yyyy是 用户进程资料流程标记,mmmm是伺服器端相应的标记(注意在标记和等号间的空格)
-----------------------------------
120 Service ready in nnn minutes.
服务在NNN时间内可用
-----------------------------------
125 Data connection already open; transfer starting.
资料连接已经打开,开始传送资料.
-----------------------------------
150 File status okay; about to open data connection.
文件状态正确,正在打开资料连接.
-----------------------------------
200 Command okay.
命令执行正常结束.
-----------------------------------
202 Command not implemented, superfluous at this site.
命令未被执行,此站点不支援此命令.
-----------------------------------
211 System status, or system help reply.
系统状态或系统帮助资讯回应.
-----------------------------------
212 Directory status.
目录状态资讯.
-----------------------------------
213 File status. $XrkxmL=
文件状态资讯.
-----------------------------------
214 Help message.On how to use the server or the meaning of a particular non-standard command. This reply is useful only to the human user. 帮助资讯。关于如何使用本伺服器或特殊的非标准命令。此回复只对人有用。
-----------------------------------
215 NAME system type. Where NAME is an official system name from the list in the Assigned Numbers document.
NAME系统类型。
-----------------------------------
220 Service ready for new user.
新连接的用户的服务已就绪
-----------------------------------
221 Service closing control connection.
控制连接关闭
-----------------------------------
225 Data connection open; no transfer in progress.
资料连接已打开,没有进行中的资料传送
-----------------------------------
226 Closing data connection. Requested file action successful (for example, file transfer or file abort).
正在关闭资料连接。请求文件动作成功结束(例如,文件传送或终止)
-----------------------------------
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2).
进入被动模式
-----------------------------------
230 User logged in, proceed. Logged out if appropriate.
用户已登入。 如果不需要可以登出。
-----------------------------------
250 Requested file action okay, completed. _
被请求文件操作成功完成 63
----------------------------------- ,
257 "PATHNAME" created.
路径已建立
-----------------------------------
331 User name okay, need password. ,
用户名存在,需要输入密码
-----------------------------------
332 Need account for login.
需要登陆的账户
-----------------------------------
350 Requested file action pending further information U
对被请求文件的操作需要进一步更多的资讯
-----------------------------------
421 Service not available, closing control connection.This may be a reply to any command if the service knows it must shut down. (O&;
服务不可用,控制连接关闭。这可能是对任何命令的回应,如果服务认?它必须关闭
-----------------------------------
425 Can't open data connection.
打开资料连接失败
-----------------------------------
426 Connection closed; transfer aborted.
连接关闭,传送中止。
-----------------------------------
450 Requested file action not taken.
对被请求文件的操作未被执行
-----------------------------------
451 Requested action aborted. Local error in processing.
请求的操作中止。处理中发生本地错误。
-----------------------------------
452 Requested action not taken. Insufficient storage space in system.File unavailable (e.g., file busy).
请求的操作没有被执行。 系统存储空间不足。 文件不可用
-----------------------------------
500 Syntax error, command unrecognized. This may include errors such as command line too long..
语法错误,不可识别的命令。 这可能是命令行过长。
----------------------------------- }
501 Syntax error in parameters or arguments.
参数错误导致的语法错误
-----------------------------------
502 Command not implemented.
命令未被执行
-----------------------------------
503 Bad sequence of commands. )
命令的次序错误。
-----------------------------------
504 Command not implemented for that parameter.,
由于参数错误,命令未被执行
-----------------------------------
530 Not logged in.
没有登录
-----------------------------------
532 Need account for storing files.
存储文件需要账户资讯!
-----------------------------------
550 Requested action not taken. File unavailable (e.g., file not found, no access).
请求操作未被执行,文件不可用。
-----------------------------------  
551 Requested action aborted. Page type unknown. +.+
请求操作中止,页面类型未知
-----------------------------------
552 Requested file action aborted. Exceeded storage allocation (for current directory or dataset).
对请求文件的操作中止。 超出存储分配
-----------------------------------
553 Requested action not taken. File name not allowed
请求操作未被执行。 档案名不允许
----------------------------------- .
-----------------------------------
这种错误跟http协定类似,大致是:
2开头--成功 A/
3开头--许可权问题
4开头--文件问题
5开头--伺服器问题
例如下面这个例子:
Sat Feb 15 00:13:02 2003 正在连接 61.143.241.231 [IP=61.143.241.231:21]
Sat Feb 15 00:13:02 2003 Socket已连接 ,等待欢迎资讯
Sat Feb 15 00:13:03 2003 220 _blank ;free Ftp Server 231>http://www.starwcn.net ;free Ftp Server 231
Sat Feb 15 00:13:03 2003 USER ftper
Sat Feb 15 00:13:03 2003 331 Password required for ftper.
Sat Feb 15 00:13:03 2003 PASS ********
Sat Feb 15 00:13:03 2003 530 Login incorrect.
Sat Feb 15 00:13:03 2003 有错误发生!
Sat Feb 15 00:13:03 2003 等待 10秒后重试
这就是说明密码不正确。

(三) 常见FTP登陆Log资讯

1.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER anonymous
530 Sorry, no ANONYMOUS access allowed.
QUIT
这个就是不许匿名登录啦
2.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
331 User name okay, need password.
PASS xxxxxx
530 Not logged in.
QUIT
一般是密码输入错误时出现的资讯,但对于Serv-U来说,如果没有这个帐号(test)存在,也会?生同样的出错资讯。
3.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
ERROR: Connection timed out
这个表明对方未开机,也可能是对方不在你能访问的范围内
4.
Connecting to xxx.xxx.xxx.xxx Port 21 (#1)
ERROR: Connection refused
这个一般表明对方已开机,但未开?FTP服务(没有开Serv-U)
也可能?对方不提供在这个埠上的服务
5.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
Disconnected from server.
Connection attempt failed. Waiting for retry...
出现这个资讯实在是很倒楣,你极有可能被对方Ban了。
过半小时后再试吧
6.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
USER XXX
331 User name okay, need password
PASS xxxxxx
530 Not logged in, unauthorized IP address.
QUIT
这个有点麻烦,你的IP不在站长允许访问的IP范围内
7.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER user
421 Too many users - please try again later.
哈哈,这个很常见吧,用户太多,稍后再试吧
8.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
530 Not logged in, only one session from same IP allowed at a time.
QUIT
每个IP只能开一个下载,就不要用多线程啦,小心Ban了你。
9
230 User logged in, proceed.
状态:> 登录成功。
命令:> PWD
257 "/" is current directory.
状态:> Home directory: /
状态:> 该站点支援 features。
状态:> 该站点支援 SIZE。
状态:> 该站点可以续传中断的下载。
命令:> REST 0
350 Restarting at 0. Send STORE or RETRIEVE.
命令:> PORT 10,7,72,20,5,71
530 Only client IP address allowed for PORT command.
错误:> 未登录。
错误:> 建立资料 socket 失败。
状态:> 连接已关闭。
有些ftp要求使用post,一般默认pasv,这是应该使用pasv,错用post所致不能登陆

3月12日

最近常用的linux命令

ps ax 查看进程
reboot 重启机器
cp -r 复制目录及目录下面的文件
sh  & 在后台执行命令
netstat 查看在用端口
ls 显示文件
cd 修改路径
rm -rf 删除文件及文件夹
df 查看磁盘使用情况(df -lh)
12月26日

标准SQL写法的重复列问题(转)

oracle有点儿小笨啊。。怎么就找不到呢。。我用眼就能看出来该找哪一条。。
---------------------------------------------------------------

看一个简单的例子:

SQL> CREATE TABLE T (ID NUMBER, NAME VARCHAR2(30));

表已创建。

SQL> CREATE TABLE T1 (ID NUMBER, NAME VARCHAR2(30));

表已创建。

SQL> INSERT INTO T VALUES (1, 'T');

已创建1行。

SQL> INSERT INTO T1 VALUES (1, 'T1');

已创建1行。

SQL> COMMIT;

提交完成。

SQL> SELECT ID, NAME FROM T, T1ITPUB个人空间}-Z3E0k]w'g
  2  WHERE T.ID = T1.ID
UTc Q4AZ0  3  ;ITPUB个人空间J*_&q\_:U
SELECT ID, NAME FROM T, T1ITPUB个人空间/s*T*V+ouHS
           *
j*IV8Aj ~0
1行出现错误:
5Ed8IFv/n\4m2ihoG0ORA-00918:
未明确定义列


S u:mY0SVB0SQL> SELECT ID, NAME FROM T INNER JOIN T1ITPUB个人空间S;V(v6`]jb9}r
  2  ON T.ID = T1.ID
Z5i"_Op-f#J/S0  3  ;ITPUB个人空间$WWdg*s&m d
SELECT ID, NAME FROM T INNER JOIN T1ITPUB个人空间1S R [$@&CK1q o
           *
oAun)XC8LhM.m0
1行出现错误:
j+pA cQNK#_0ORA-00918:
未明确定义列

显然这种写法无论是对Oracle的默认写法,还是对标准SQL写法,都是行不通的,因为Oracle无法确定查询的IDNAME是属于哪张表的。

那么下面增加一张表:

SQL> CREATE TABLE T2 (ID NUMBER, NAME VARCHAR2(30));

表已创建。

SQL> INSERT INTO T2 VALUES (1, 'T2');

已创建1行。

SQL> SELECT ID, NAME FROM T, T1, T2
B_;c Xq5g0  2  WHERE T.ID = T1.IDITPUB个人空间KB'Wl4~{F
  3  AND T.ID = T2.ID;ITPUB个人空间Hd)z(S]#N
SELECT ID, NAME FROM T, T1, T2
\Khw0m nc\z0           *ITPUB个人空间$MEh,QU u-Lk
1行出现错误:
x-V;P"[ z/X Z`p'w0ORA-00918:
未明确定义列

ITPUB个人空间"p&X \7rt5G b#b&p}M
SQL> SELECT ID, NAMEITPUB个人空间 }i-J/aw!C
  2  FROM T INNER JOIN T1
*Dxs\a0nD&K;w0  3  ON T.ID = T1.IDITPUB个人空间1q*F x T.zgoy
  4  INNER JOIN T2
-Q}ni,x$Z(W2^0  5  ON T.ID = T2.ID;

        ID NAMEITPUB个人空间2X_lbR$x
---------- ------------------------------ITPUB个人空间P8[!Y!{.L[pb
         1 T2

神奇的现象出现了,对于Oracle的默认写法,Oracle仍然报错未明确定义列,但是对于标准SQL写法,居然可以成功执行,而且根据查询结果看,返回的记录是T2表的,那么是否可以这样进行推测,对于标准写法而言,如果查询的时候不指定列的所在表信息,那么Oracle选择最后一个连接表的列。

再做一个简单的例子验证一下这个推测:

SQL> CREATE TABLE T3 (ID VARCHAR2(1), NAME VARCHAR2(30));

表已创建。

SQL> INSERT INTO T3 VALUES ('1', 'T3');

已创建1行。

SQL> SELECT ID, NAME
,RB4dJ6UOa!O&D/W4O0  2  FROM T INNER JOIN T1ITPUB个人空间:u1o2a4B#^h'pV
  3  ON T.ID = T1.IDITPUB个人空间?+|0i a)ODl6e?
  4  INNER JOIN T2ITPUB个人空间-VS1NflF k6d
  5  ON T.ID = T2.IDITPUB个人空间g:Yo M7s|{9a
  6  INNER JOIN T3ITPUB个人空间"^ B'f7@m}C
  7  ON T.ID = T3.ID;

I NAME
t7aM~8Q#k%c0- ------------------------------
.W,Qr Q0Wrb4M01 T3

果然如此,只是不知道这个特性是标准函数写法中规定的,还是Oracle自己的特性。

11月13日

POC

POC,是Proof of Concept的缩写,意思是为观点提供证据,它是一套建议的电子模型,它可用于论证团队和客户的设计,允许评估和确认概念设计方案,POC的评价可能引起规格和设计的调整。
  1、POC的概念 POC,是Proof of Concept的缩写,意思是为观点提供证据,它是一套建议的电子模型,它可用于论证团队和客户的设计,允许评估和确认概念设计方案,POC的评价可能引起规格和设计的调整。POC流程所产生的关于设计的承诺、大家都认可的意见都将记录在设计的调整文档中,以备查。这样下去,POC不断发展。 如果在完成这些任务时需要帮助,可以在Queensland大学找到协助资源。 2、POC的开发 POC的开发步骤及方法如下: 第一步,开发包含所有基本导航特征(按纽,图标、菜单等)的界面模型,但不是最终的完美形式。 第二步,给界面添加少量内容,尤其是在至关重要的媒体中添加一到两个样本。例如,如果套装软件包非常依赖3D模型,就应该添加一个包含驱动所必须的3D模型样本。如果软件包需要显示数据符号和表格,那么有关数据符号和表格的样本也应添加上。 请注意,这个过程应该用于支持论证和验证设计,而并不是软件包开发的实际开端。你应该尽力去论证和销售设计,但也不要太过分,因为设计过程中有时需要作重大的修改,这样将导致浪费大量的资源。 3、POC的评价和验证 评价和验证过程就是寻求风险承担者通过POC和备案设计文档的反馈。通过POC评价,风险承担者可能提出调整规格和设计的要求。 有时,由于设计存在的缺陷或不适当的地方,设计团队就可能只好回到绘图板。客户可能决定停止设计或寻找其他团队,这是因为设计没有足够地关注客户和使用者的需求,或者是因为客户需求的不稳定性。有时这种改变是由客户组织或者项目决策者所引起的。 通常,在评价和验证过程结束时,有关设计的承诺、大家都认可的意见都将记录在备案的设计文档中,这往往是产品开发的生命周期中一个重要的里程碑。在结束评价和验证之后,POC就可继续发展。 4、最小化的需求 尽管POC是产品开发过程中重要的评估技术,但是你也应该限制在POC开发方面所花费的时间,考虑到早先的设计阶段包含的所有因素,构建POC中关键元素。 应该把充足的精力用于论证和认同设计方面,但也不要过多,这样即使设计中需要作重大的修改,也不会导致浪费大量的资源。 在全面设计开始执行之前,让客户对设计认可是必要的。 5、客户的角色定位 规格和设计阶段,要求产品开发有详细的设计文档,而且POC常伴随着产品开发。客户签署设计文档中,并反馈POC是重要的项目里程碑。如果在下一阶段仍需修改产品设计,就要按照受控的变更控制流程得到认可和批准。在整个项目过程中处理不同的检查和停顿时,客户的一个重要职责是为按期交付而保证已确认的进度表,并同意为防止计划被耽搁而需再投资的情况出现。 
10月30日

WSDL概述


WSDL就是描述XML Web服务的标准XML格式,WSDL由Ariba、Intel、IBM和微软等开发商提出。它用一种和具体语言无关的抽象方式定义了给定Web服务收发的有关操作和消息。就其定义来说,你还不能把WSDL当作一种对象接口定义语言,例如,CORBA或COM等应用程序体系结构就会用到对象接口定义语言。 WSDL保持协议中立,但它确实内建了绑定SOAP的支持,从而同SOAP建立了不可分割的联系。所以,当我在这篇文章中讨论WSDL的时候,我会假定你把SOAP作为了你的通讯协议。 



WSDL协议已经被提交给了Internet标准组织W3C审批,目前还处于“确认提交”状态。W3C维持着正规的标准化系统同时提交提案必须经过确定的一套批准过程才能最终成为官方协议。在这种情况下,WSDL的地位,照外行看,至少标准组织在考虑让其成为将来可能标准中的一部分。如果你对这方面的情况感兴趣,或碰巧是一位特关心结果的“失眠症患者”,那么你不妨到W3C网站上去读读有关的建议标准。 

用WSDL说明服务 
作为一种基于XML的标准,如果你对XML具有一定的了解,那么WSDL的结构对你就不会陌生了。WSDL文档由服务用来描述数据类型的一组元素、服务可以收到的“消息”以及关联每条消息的SOAP绑定组成。 

清单A就是一份简单的WSDL文档,该文档同W3C网站公布的WSDL示范文本是一样的,它说明了一种股票行情服务(这也是相当标准的一种Web服务)。 

再仔细阅读清单A,你可以看到,文档首先以标准的XML头开头,其中包含了一个版本标识,而文档的根元素则被称为definitions。 

Definitions元素可以采用若干种可选属性,这些属性说明文档同时定义文档其余部分使用的名称空间(namespace)。在这种情况下,定义被分配了一个名字(StockQuote),某些名称空间定义是根据以下常规前缀缩写制定的: 

tns—“this namespace”的缩写,包含被定义服务的主名称空间 
xsdl—XML Schema (XSD)名称空间,用于定义文档中的类型 
soap—SOAP绑定采用的名称空间 
接下来,为了定义服务的接口需要在type元素内定义所需要的任何复杂类型。这里你必须注意使用标准的XSD句法(属性),它是创造数据类型定义最为适合的方法。不过,如果你愿意,WSDL也能扩展使用不同的类型定义系统。 

消息概述 
按WSDL的用法,消息可以是传递给某一服务公布对象上的方法的任何参数或者方法被调用之后的任何返回结果。为了继续使用股票行情这个Web服务例子,单一定义方法多半如以下伪代码所示: 

floatgetLastTradePrice(string tickerSymbol) 

这样,就像你从清单A所看到的那样,文档中定义了两条消息,一条代表方法的输入参数tickerSymbol(GetLastTradePriceInput消息)另一条代表该方法的返回值(GetLastTradePriceResult消息)——最新的股票价格。 

操作把消息组织到一起而且抽象地代表方法定义。在我们的例子中,这两条消息都在 GetLastTradePrice操作元素下的getLastTradePrice对象方法定义中组织起来。在一个 WSDL文件中的所有操作又都挨个在portType元素内分组。 

WSDL文档的余下部分采用服务器上的侦听端点(binding 元素)绑定消息同时把端口定义同单一服务实体(service元素)组合起来。清单A的例子就定义了通过SOAP采用服务所需要的绑定。 

WSDL工具 
你可以手工创建WSDL文件,不过,你还可以采用相当多的工具通过WSDL来为你自动处理和定义Web服务。推荐工具软件如下: 

Omniopera—一图形用户界面的WSDL、XML和XSD编辑器 
Microsoft的SOAP Toolkit—一种工具包,其中包括根据WSDL定义创建COM接口的向导程序,还包括根据COM接口创建WSDL的向导程序 
IBM的Web Services Toolkit—一种工具包,其中包括产生WSDL和SOAP部署说明的向导程序
10月29日

  Web Services 简介


  Web Services 是一种构建应用程序的普通模型,并能在所有支持 Internet 通讯的操作系统上实施运行。Web Services 令基于组件的开发和 Web 的结合达到最佳,基于组件的对象模型,如:Distributed Component Object Model(DCOM)、Remote Method Invocation(RMI),Internet Inter-Orb Protocol(IIOP)都已经发布了很长时间了,但是这些模型都依赖于特殊对象模型协议,而 Web Services 利用 SOAP 和 XML
  对这些模型在通讯方面作了进一步的扩展以消除特殊对象模型的障碍。
  Web Services 主要利用 HTTP 和 SOAP 协议是商业数据在 Web 上传输,SOAP通过 HTTP 调用商业对象执行远程功能调用,Web 用户能够使用 SOAP 和 HTTP通过 Web 调用的方法来调用远程对象.
  Web Services 结构
  客户根据 WSDL 描述文档,会生成一个 SOAP 请求消息。Web Services 都是放在Web服务器(如IIS)后面,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到 Web 服务器来。Web 服务器再把这些请求转发给 Web Services 请求处理器。请求处理器的作用在于,解析收到的 SOAP 请求,调用 Web Services,
  然后再生成相应的 SOAP 应答。Web 服务器得到 SOAP 应答后,会再通过 HTTP应答的方式把信息送回到客户端。
  Web Services 体系
  Web Services 体系主要包括以下几个方面:
  ① Web Services 组件。包括 3 种组件:
  服务提供者:提供服务,进行注册以使服务可用;
  服务代理:服务交换所,服务提供者和服务请求者之间的媒体;
  服务请求者:向服务代理请求服务,调用这些服务创建应用程序。
  ② Web Services 操作。包括 3 种操作:
  发布/不发布(Publish/Unpublish):提供者向代理发布(注册)服务或不发布(移
  去)这些服务的注册;
  发现(Find):由服务请求者向服务代理执行 find 操作,服务请求者描述要找的
  服务,服务代理分发匹配的结果;
  绑定(Bind):在服务请求者和服务提供者之间绑定,这两部分协商以使请求者
  可以访问和调用提供者的服务。
  ③ UDDI——通用发现、描述和整合。
  这是一个Web Services的信息注册规范,基于UDDI的Web Services注册可以被发现 UDDI 的发现方法是:在 Web 上有一种分布的注册服务,商务和服务以一种通用的 XML 格式描述,XML 中的结构化数据易于发现、分析和操作。
  ④ WSDL——Web 服务描述语言。
  Web 服务描述言语(WSDL)是一种 XML 语法,为服务提供者提供了描述构建在不同协议或编码方式之上的 Web Services 请求基本格式的方法。WSDL 用来描述一个 Web Services 能做什么,它的位置在哪里,如何调用它等。在假定以SOAP/HTTP/MIME 作为远程对象调用机制的情况下,WSDL 会发挥最大作用。UDDI 注册描述了 Web Services 绝大多数方面,包括服务的绑定细节。WSDL 可以看作是 UDDI 服务描述的子集。
  WSDL 将服务定义为一个网络端点的集合,或者说端口的集合。在 WSDL 里面,端点及消息的抽象定义与它们具体的网络实现和数据格式绑定是分离的。这样就可以重用这些抽象定义:消息,需要交换的数据的抽象描述;端口类型,操作的抽象集合。针对一个特定端口类型的具体协议和数据格式规范构成一个可重用的绑定。一个端口定义成网络地址和可重用的绑定的连接,端口的集合定义为服务。因此一个 WSDL 文档在定义网络服务的时候使用如下的元素:
  类型——使用某种的类型系统(如 XSD)定义数据类型的容器;
  消息——通讯数据抽象的有类型的定义;
  操作——服务支持动作的抽象描述;
  端口类型——一个操作的抽象集合,该操作由一个或多个端点支持;
  绑定——针对一个特定端口类型的具体协议规范和数据格式规范;
  端口——一个单一的端点,定义成一个绑定和一个网络地址的链接;
  服务——相关端点的集合。
  所以不难看出,WSDL 给客户提供了一个模板,方便客户描述和绑定服务

编辑本段Web services 工作原理

  基础的 Web Services 平台是 XML + HTTP。
  HTTP 协议是最常用的因特网协议。
  XML 提供了一种可用于不同的平台和编程语言之间的语言。
  Web services 平台的元素:
  SOAP (简易对象访问协议) 
  UDDI (通用描述、发现及整合) 
  WSDL (Web services 描述语言) 

XPath

 XPath 简介
  XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。
  什么是 XPath?
  XPath 使用路径表达式在 XML 文档中进行导航 
  XPath 包含一个标准函数库 
  XPath 是 XSLT 中的主要元素 
  XPath 是一个 W3C 标准 
  XPath 路径表达式
  XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
  XPath 标准函数
  XPath 含有超过 100 个内建的函数。这些函数用于字符串值、数值,日期和时间比较、节点和 QName 处理、序列处理、逻辑值等等。
  XPath 在 XSLT 中使用
  XPath 是 XSLT 标准中的主要元素。如果没有 XPath 方面的知识,您就无法创建 XSLT 文档。
  XQuery 和 XPointer 均构建于 XPath 表达式之上。XQuery 1.0 和 XPath 2.0 共享相同的数据模型,并支持相同的函数和运算符。
  您可以在我们的《XQuery 教程》中阅读更多有关 XQuery 的知识。
  XPath 是 W3C 标准
  XPath 于 1999年11月16日 成为 W3C 标准。
  XPath 被设计供 XSLT、XPointer 以及其他 XML 解析软件使用。
  XPath 节点
  在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或成为根节点)。
  XPath 术语
  节点(Node)
  
在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。

编辑本段XPath存取函数

  名称 说明 
  fn:node-name(node) 返回参数节点的节点名称。 
  fn:nilled(node) 返回是否拒绝参数节点的布尔值。 
  fn:data(item.item,...) 接受项目序列,并返回原子值序列。 
  fn:base-uri() 
  fn:base-uri(node)
  返回当前节点或指定节点的 base-uri 属性的值。 
  fn:document-uri(node) 返回指定节点的 document-uri 属性的值。 
10月28日

居然要学习写批处理啊。。

批处理文件或批处理程序是一个包含若干MS-DOS命令的正文文件,扩展名为.BAT。当在命令提示符下敲入批处理程序的名称时,MS-DOS成组执行此批处理程序中的命令。
  任何在命令提示符下可使用的命令都可用在批处理程序中。此外,下面MS-DOS命令是专门在批处理程序中使用的。
<Call>             <If>
<Choice>             <Pause>
<Echo>             <Rem>
<For>               <Shift>
<Goto>
================================================================
常用命令
echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。
==== willsort 编注 ===================================================
  首先, @ 不是一个命令, 而是DOS 批处理的一个特殊标记符, 仅用于屏蔽命令行回显. 下面是DOS命令行或批处理中可能会见到的一些特殊标记符:
  CR(0D)     命令行结束符
  Escape(1B)     ANSI转义字符引导符
  Space(20)     常用的参数界定符
  Tab(09) ; =     不常用的参数界定符
  +       COPY命令文件连接符
  * ?         文件通配符
  ""         字符串界定符
  |         命令管道符
  < > >>     文件重定向符
  @         命令行回显屏蔽符
  /         参数开关引导符
  :         批处理标签引导符
  %         批处理变量引导符
  其次, :: 确实可以起到rem 的注释作用, 而且更简洁有效; 但有两点需要注意:
  第一, 除了 :: 之外, 任何以 :开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容, 只是为了与正常的标号相区别, 建议使用 goto 所无法识别的标号, 即在 :后紧跟一个非字母数字的一个特殊符号.
  第二, 与rem 不同的是, ::后的字符行在执行时不会回显, 无论是否用echo on打开命令行回显状态, 因为命令解释器不认为他是一个有效的命令行, 就此点来看, rem 在某些场合下将比 :: 更为适用; 另外, rem 可以用于 config.sys 文件中.
================================================================
echo 表示显示此命令后的字符
echo off 表示在此语句后所有运行的命令都不显示命令行本身
@与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。
call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。
pause 运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续
rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。
==== willsort 编注 ====================================================
  此处的描述较为混乱, 不如直接引用个命令的命令行帮助更为条理
----------------------------------------------------------------------------
                        ECHO
  当程序运行时,显示或隐藏批处理程序中的正文。也可用于允许或禁止命令的回显。
  在运行批处理程序时,MS-DOS一般在屏幕上显示(回显)批处理程序中的命令。
使用ECHO命令可关闭此功能。
语法
  ECHO [ON|OFF]
  若要用echo命令显示一条命令,可用下述语法:
  echo [message]
参数
ON|OFF
  指定是否允许命令的回显。若要显示当前的ECHO的设置,可使用不带参数的ECHO
命令。
message
  指定让MS-DOS在屏幕上显示的正文。
----------------------------------------------------------------------------
                        CALL
  从一个批处理程序中调用另一个批处理程序,而不会引起第一个批处理的中止。
语法
  CALL [drive:][path]filename [batch-parameters]
参数
[drive:][path]filename
  指定要调用的批处理程序的名字及其存放处。文件名必须用.BAT作扩展名。

batch-parameters
  指定批处理程序所需的命令行信息。
----------------------------------------------------------------------------
                      PAUSE
  暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批处
理程序中使用该命令。
语法
  PAUSE
----------------------------------------------------------------------------
                        REM
  在批处理文件或CONFIG.SYS中加入注解。也可用REM命令来屏蔽命令(在CONFIG.SYS
中也可以用分号(;)代替REM命令,但在批处理文件中则不能替代)。
语法
  REM [string]
参数
string
  指定要屏蔽的命令或要包含的注解。
10月17日

纠结

纠结
什么时候才能解开的结
70777928911044
9月24日

RosettaNet 简介(2)

RosettaNet 、实现 Web Services

  要了解 RosettaNet 如何影响 Web services ,我们从定义 Web services 开始。术语 Web services 指的是使用 SOAP WSDL 来描述和访问网络上的服务。许多公司已认识到使用 Web services 来实现其业务流程的好处。这包括 Web services 所基于的开放标准、面向服务的方法及实现的灵活程度,从而允许重用现有的基础设施和技术。所有这些听起来都非常熟悉,而且此时您可能会想,“如果能使用 Web services 实现自己的业务流程,那么使用 RosettaNet 的利益又何在?”为了回答这个问题,我们需要更详细地查看业务流程并理解公共过程和私有过程之间的区别。

  业务流程由一组步骤组成,当执行时,这些步骤实现某个业务目标。 RosettaNet Implementation Framework (RNIF) 将私有过程定义为公司的内部业务流程,将公共过程定义为与贸易合作伙伴的相关交互。首先,我们设想一个简单的业务流程:请求报价。客户通过发送一个包含报价说明书的消息,向供应商发出报价请求。供应商检查产品清单中项目的可用性,如果符合报价要求,则向客户发送报价。如果供应商无法满足报价要求,则它可能为该客户确定另一个供应商。在这种情况下,向客户发送推荐。

  在本例中,在供应商的产品清单中查检项目可用性和确定备选供应商都是内部过程,这些过程对于客户而言不是可见的,而且不涉及贸易合作伙伴。因此这样的过程是私有的。通常,各公司都有其自己的遵循自己内部标准的私有过程定制实现。它们可能利用 Java CORBA Web services 或遗留技术的任何组合。在实例的第一步中,客户向供应商发出了报价请求;这是公共过程。使用 Web services 单独实现这一步的问题在于,在贸易合作伙伴之间没有明确定义的对话,我们很快便会遇到 EDI 所面临的关键问题:对于我们要合作的每一个贸易合作伙伴,我会分别不同地实现该服务。通过确保该公共过程的 Web services 实现遵循 RosettaNet 标准,我们可以向经营同一业务的任意数量的贸易合作伙伴请求报价,而无需每次都做重复工作。因此, RosettaNet Web services 是令人称道的, Web services 担当 RNIF 的实现机制。然而,应当强调的是,我们并不限于将 Web services 用作 RosettaNet 的实现。私有业务流程可以用任何适当的技术(包括 Web services )来实现,但是要确保当该标准 B2B 在贸易合作伙伴之间通信时公共过程遵循 RosettaNet 规范,这样才有意义。在典型的实现模型中,我们可能期望找到要用于处理私有业务流程的定制 Web services 和符合 RosettaNet 的服务来处理公共过程。

RosettaNet 标准

  RosettaNet 标准为电子商务标准化提供一个健壮的、非专有的解决方案,它是免费的,可以通过 RosettaNet 网站公开。这些标准是由全球领先的高科技公司通力协作而开发出来的。通过遵循这些标准,贸易合作伙伴、解决方案提供商及系统集成商可以利用这些专业技术和经验。此外,通过采用 RosettaNet ,贸易合作伙伴可以从可重复规范和准则的全局框架中受益,该框架允许调节和自动化实时的、服务器到服务器的事务,这意味着获得了跨整个供应链的全局事务可视性和一致性。使用这些标准化过程,还让贸易合作伙伴降低了成本、更快速地响应客户请求,而且它还可以提升效率、保证高度完整的数据处理。这些标准涵盖以下核心领域:

·         合作伙伴接口过程( Partner Interface Processes

·         RosettaNet 实现框架( RosettaNet Implementation Framework

·         RosettaNet 业务和技术字典( RosettaNet Business and Technical Dictionaries

 

RosettaNet 简介(1)

 B2B 集成的技术目标是自动化业务流程,从而减少与手工流程相关的传统处理延迟和低效率。如果我们将电子商务视为业务社区和业务信息数字化的网络,则一般会把 EDI (Electronic Data Interchange) 视为电子商务的开端。 EDI 的主要目的是通过制定标准数据传输协议,避免和防止在贸易合作伙伴之间读取和处理信息过程中出现其他人为干预。自 1960 年以来,大型组织一直投资于 EDI 开发,然而直到 80 年代它才为人们所接受,而且 EDI 还从未达到基于 Web 的电子商务的流行层次,原因如下:

·         EDI 的高成本阻止了中小规模企业参与电子交易。

·         缓慢的标准开发过程阻碍了 EDI 的成长。

·         开发 EDI 应用程序的复杂性将对其的采纳限制在一个狭小的用户基数上。

·         EDI 解决方案带来了自身的维护和管理开销。

  从 EDI 汲取的教训及其技术的先进性带来了解决 B2B 集成问题的新方法;在供应链管理领域, RosettaNet 已出现流行趋势。 RosettaNet 1998 2 月成立于美国,是一个由 500 余家公司组成的独立的非赢利性联盟。这些公司包括一些世界领先的电子组件、计算机和日用电子、半导体制造、电信及物流公司。 2002 RosettaNet Uniform Code Council, Inc.? (UCC)? 进行了合并,以支持它们所服务的行业的开放电子商务过程标准的采用和开发。

RosettaNet 是什么?

  RosettaNet 这一名字源自于 1799 年在埃及发现的 Rosetta Stone 。这要追溯到公元前 196 年,该石头是在 Rosetta (Rashid) 镇附近被人发现的,上面用两种不同的语言以三种不同的笔体镌刻了同一消息。使用希腊语,学者们可以译解该象形文字。 RosettaNet 这一名字非常类似于 18 世纪发现的 Rosetta Stone ,它是一个业务协议,通过为电子商务制定全球性语言,企业可以克服在 Internet 上经营业务的障碍。

简而言之, RosettaNet 的主要目标集中在供应链及其优化上,它通过增强的 B2B 集成提高其效率和性能。 RosettaNet 电子商务过程标准旨在提高速度、效率和可靠性,允许在贸易合作伙伴间进行更大规模的协作和交流。 RosettaNet 提供一个公共交流平台,也可以说是一种公共语言,它允许参与业务流程的不同贸易合作伙伴自动化流程并在 Internet 上执行。该公共平台解决了 EDI 的主要成本开销之一:业务流程中贸易合作伙伴的 IT 部门必须为与其交互的各贸易合作伙伴设计、实现和测试定制业务流程。与 EDI 和早期的 B2B 集成工作不同, RosettaNet 已完全设计用于与安全性的结合和按需集成;这使得原本要花费数日的传统业务事务批处理可以在几分钟之内迅速完成。

  EDI RosettaNet 之间的主要区别在于, EDI 在公司之间交换文档,而 RosettaNet 跨网络定义业务流程并对其进行集成,以确定最佳操作过程。大量的案例分析已显示, RosettaNet 带来了胜过 EDI 的多种利益。普遍认为带来的利益如下:

·         更轻松、更经济高效的实现,投资回报 (ROI) 更大

·         自动化更加大量的业务流程的能力

·         相对于批处理的实时事务处理

·         更高的可伸缩性

RosettaNet ebXML

  通过考察其他基于 XML B2B 集成项目(即 ebXML ),我们尝试将 RosettaNet 与其进行比较。人们常常将 ebXML 描述为横向 B2B 标准,意思是有一组用于所有电子商务的规范;它是通用的而不针对任何特殊部门或行业。而另一方面, RosettaNet 是一个纵向标准;它关注特定行业的需要(例如,电子部件制造商)以及供应链自动化和优化的业务范畴。自两个项目创建以来,各自标准中的规范已存在着某些重复和交叉。或许让这些标准彼此适应的最佳方式是考虑把 RosettaNet (纵向)插入到 ebXML (横向)中。关于这方面有一个很好的实例,使用 ebXML Business Process Specification Schema (BPSS) 来描述 RosettaNet Partner Interface Processes (PIPs)? 。正如我们稍后即将看到的, PIP 定义了合作伙伴之间的业务流程。

 

9月18日

画心

看不穿 是你失落的魂魄

猜不透 是你瞳孔的颜色

一阵风 一场梦 爱如(是)生命般(的)莫测

你的心 到底被什么蛊惑

你的轮廓在黑夜之中淹没

看桃花 开出怎样的结果

看着你抱着我 目光似(比)月色寂寞

就让你 在别人怀里快乐

爱着你 像心跳难触摸

画着你 画不出你的骨骼

记着你的脸色 是我等你的执着

你是我 一首唱不完的歌 (我的心 只愿为你而割舍)

9月11日

always together, forever apart......

我是鱼你是飞鸟 
要不是你一次失速流离 
要不是我一次张望关注 
哪来这一场不被看好的眷与恋 

你勇敢我宿命 
你是一只可以四处栖息的鸟 
我是一尾早已没了体温的鱼 
蓝的天蓝的海难为了难为了我和你 

什么天地啊!四季啊!昼夜啊! 
什么海天一色地狱天堂暮鼓晨钟 
always together forever apart 

睡不着的夜醒不来的早晨 
春天的花如何得知秋天的果 
今天的不堪如何原谅昨日的昏盲 
飞鸟如何去爱怎么会爱上水里的鱼 
----------------------------------------------
海天是一色 春夏秋冬是相连 地狱天堂是相对
昼夜是交替 暮鼓晨钟是并列
看似相连的世界 实难相容
永远的相提并论 永恒的擦肩而过···
8月10日

匆匆那年~匆匆的这几年

不知道故事是不是这么结束的,不过在看到这里的时候被触动

387401235363113903250161164639458701571804

最后只剩下林嘉茉和苏凯面对狼藉残局,两人之间隔了一桌子的纸币,红绿相间的颜色铺撒开来,说不尽的哀悼。

“我喜欢你,很喜欢,很喜欢。”许久之后林嘉茉才缓缓张口,她的嘴唇略有些抖,吐露着焚心的字句,“但是……今天以后就不喜欢了。我绝对不缠着你,你也不用再躲着我。咱俩都好好过自己的,谁也不讨厌谁,谁也不忘了谁,好吗?”

“嗯,好!”苏凯坐到她身边,小心翼翼的替她擦拭着眼泪,“别哭了,听话。”

“话都说的这份上了,苏凯,我问你,你有没有一点点喜欢过我啊!就一点点。”被酒精和哀愁缠绕的林嘉茉,露出了小孩子一样的委屈表情。

“有过。”苏凯轻轻整理好她的头发。

“那……有时候会不会觉得后悔?”林嘉茉盯着他的眼睛问。

“现在就有点后悔。”苏凯狠狠吸了吸鼻子,眼圈又红了。

“嘿嘿,活该……”林嘉茉破泣而笑,酒色醺红了她的脸颊,谁也无法说清她究竟放下了多少,又记住了多少才能绽放出那样的笑容。