??xml version="1.0" encoding="utf-8" standalone="yes"?>精品无码一区二区三区亚洲桃色,亚洲1区2区3区精华液,亚洲欧美一区二区三区日产http://www.tkk7.com/xine/category/11748.html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I love you not because of who you are,but because of who I am when I am with you.<br><br>zh-cnFri, 02 Mar 2007 02:55:35 GMTFri, 02 Mar 2007 02:55:35 GMT60OICQ服务器系l通讯协议http://www.tkk7.com/xine/articles/49775.html【Xine】中文站【Xine】中文站Thu, 01 Jun 2006 12:00:00 GMThttp://www.tkk7.com/xine/articles/49775.htmlhttp://www.tkk7.com/xine/comments/49775.htmlhttp://www.tkk7.com/xine/articles/49775.html#Feedback0http://www.tkk7.com/xine/comments/commentRss/49775.htmlhttp://www.tkk7.com/xine/services/trackbacks/49775.html协议由报文头(T)+发送?T)+接收?T)+报文cdQTQ?报文长度(L)+报文内容l成
发送者和接收者是pȝ内的E序U类,OICQ服务?x01,传真服务?x02,WEB服务?x03,打印服务器是0x04,聊天服务器是0x05,OICQ用户?x0A?

OICQ用户到OICQ服务器的通讯协议 引导W?Q?x81+0x0A+0x01Q?
报文cd 报文内容 报文说明
0x01 늧QSQ?肖像QMQ?用户密码QSQ?性别QTQ?q龄QTQ?真实姓名QSQ?国家/地区QTQ?省(TQ?市(SQ?地址QSQ?邮编QSQ?学历QTQ?毕业院校QSQ?职业QTQ?电话QSQ?dQSQ?电邮QSQ?爱好QSQ?说明QSQ?w䆾验证QTQ新用户注册Qn份验证用于当有h要将他加入好友时询问是否允许
0x02 服务PLQ?密码QSQ?注册方式QTQ老用h册,方式分ؓ0正常Q?隐n
0x03 服务PLQ?Ҏ服务PLQ?内容QSQ?发送信息到某h
0x04 服务PLQ?l号QLQ?内容QSQ?q播信息Q组?0为全?
0x05 服务PLQ?朋友服务PLQ?查看朋友资料
0x06 服务PLQ?l名UͼSQ?增加l?
0x07 服务PLQ?l编PTQ?l名UͼSQ?修改l名U?
0x08 服务PLQ?l编PTQ?删除l?
0x09 服务PLQ?Ud人数QTQ?{朋友服务PLQ?目的l号QTQ} Udl成?
0x0a 服务PLQ?起始~号(L)+回传个数QTQ?查找标志(T) 看谁在线?
查找标志 1=向小?2=向大?
0x0b 服务PLQ?SQL语句QSQ?自定义查?
0x0c 服务PLQ?朋友服务PLQ?增加好友
0x0d 服务PLQ?朋友服务PLQ?加入原因QSQ?h加入好友
0x0e 服务PLQ?朋友服务PLQ?删除好友
0x10 服务PLQ?昄模式QTQ?更改昄方式 1上线2隐藏3免打?ȝ
0x11 服务PLQ?监视服务PLQ?监视某h谈话
0x12 服务PLQ?늧QSQ?肖像QMQ?用户密码QSQ?性别QTQ?q龄QTQ?真实姓名QSQ?国家/地区QTQ?省(TQ?市(SQ?地址QSQ?邮编QSQ?学历QTQ?毕业院校QSQ?职业QTQ?电话QSQ?dQSQ?电邮QSQ?爱好QSQ?说明QSQ?w䆾验证QTQ更改用户基本信?
0x13 服务?L)+朋友服务PLQ?文g?S)+文g长度(L) h发送文?
0x14 服务PLQ?朋友服务PLQ?允许/拒绝 是否允许发送文?
0x15 服务PLQ?朋友服务PLQ?文g内容QBQ?发送文?
0x16 服务PLQ?q接试报文
0x17 服务PLQ?朋友服务PLQ?同意标志(T) 应答Ҏh加入好友
0=拒绝
1=同意

OICQ服务器到OICQ的通讯协议
报文cd 报文内容 报文说明
0x01 成功/p|QTQ?服务PLQ?新用h册结果返?
0x02 成功/p|QTQ?l个敎ͼTQ?{l名UͼSQ?l编PTQ?朋友个数QTQ?{朋友服务PLQ?肖像~号QTQ?朋友状?T)+朋友늧QSQ} 老用h册结果返?
朋友状?
1=上线=2隐藏=3免打?ȝ
0x03 标志(T) + 朋友服务PLQ?信息QSQ?信息cdQTQ?标志 1=pȝ 2=用户
发送消息,服务?0是系l消?
1=用户某某已经把你加ؓ好友
2=用户某某h你通过w䆾验证
3=用户某某同意了你的验证要?
4=用户某某拒绝了你的验证请?
0x04 成功/p|QTQ?朋友服务?L)+늧QSQ?肖像QMQ?性别QTQ?q龄QTQ?真实姓名QSQ?国家/地区QTQ?省(TQ?市(SQ?地址QSQ?邮编QSQ?学历QTQ?毕业院校QSQ?职业QTQ?电话QSQ?dQSQ?电邮QSQ?爱好QSQ?说明QSQ朋友信息回?
0x05 成功/p|QTQ?l编PTQ?l名UͼSQ?增加l结果回?1/0
0x06 成功/p|QTQ?l编PTQ?l名UͼSQ修改组名称l果回?/0
0x07 成功/p|QTQ?l编PTQ?删除l结果回?/0
0x08 成功/p|QTQ?Udl成员结果回?/0
0x09 成功/p|QTQ?在线个数QTQ?{服务PLQ?늧QSQ?肖像QMQ?省(TQ?市(SQ} 查找在线人员l果回?
0x0a 成功/p|QTQ?扑ֈ个数QTQ?{服务PLQ?늧QSQ?肖像QMQ?省(TQ?市(SQ} 自定义查扄果回送(最?0Q?
0x0b 标志QTQ?朋友服务PLQ?增加好友l果回送标?
0=数据库失?
=1成功
=2需要n份验?
=3Ҏ不允许加?
=4需要n份验证且不在U?
0x0c 朋友服务?L)+늧QSQ?肖像PMQ?朋友状?T) l在U用户增加好?
0x0e 成功/p|QTQ?朋友服务PLQ?删除好友l果回?
0x10 服务PLQ?昄模式QTQ?昄模式回?=1上线=2隐藏=3免打?ȝ
0x11 成功/p| 更改用户基本信息l果回?
0x12 朋友服务PLQ?文g名(SQ?文g长度QLQ?h发送文?
0x13 朋友服务PLQ?允许/拒绝 是否允许发送文?1允许 0拒绝
0x14 朋友服务PLQ?文g内容QBQ?发送文?
0x15 朋友服务PLQ?当前状态(TQ朋友状态回送(pȝ发送)=1上线=2隐藏=3免打?ȝ
0x16 服务PLQ?q接试



【Xine】中文站 2006-06-01 20:00 发表评论
]]>
cM于QQ游戏百万人同时在U的服务器架构实玎ͼ转)http://www.tkk7.com/xine/articles/49736.html【Xine】中文站【Xine】中文站Thu, 01 Jun 2006 09:35:00 GMThttp://www.tkk7.com/xine/articles/49736.htmlhttp://www.tkk7.com/xine/comments/49736.htmlhttp://www.tkk7.com/xine/articles/49736.html#Feedback0http://www.tkk7.com/xine/comments/commentRss/49736.htmlhttp://www.tkk7.com/xine/services/trackbacks/49736.htmlQQ游戏于前几日l于H破了百万h同时在线的关口,向着更ؓq大的目标迈q,q让其它众多传统的棋牌休闲游戏^台黯然失Ԍ相比之下Q联众似乎已l根本不是QQ的对手,因ؓQQ除了q?00万的游戏在线人数外,它还拥有3亿多的注册量Q当然很多是重复注册的)以及QQ聊天软g900万的同时在线率,我们已经可以预见未来由QQ构徏h的强大棋牌休闲游戏帝国?br />  那么Q在技术上QQQ游戏到底是如何实现百万h同时在线q保持游戏高效率的呢Q?br />  事实上,针对于Q何单一的网l服务器E序Q其可承受的同时q接数目是有理论峰值的Q通过CQ+中对TSocket的定义类型:wordQ我们可以判定这个连接理论峰值是65535Q也是_你的单个服务器程序,最多可以承?万多的用户同时连接。但是,在实际应用中Q能辑ֈ一万h的同时连接ƈ能保证正常的数据交换已经是很不容易了Q通常q个值都?000?000之间Q据说QQ的单台服务器同时q接数目也就是在q个D间?br />  如果要实?000?000用户的单服务器同时在U,是不隄。在windows下,比较成熟的技术是采用IOCPQ-完成端口。与完成端口相关的资料在|上和CSDN论坛里有很多Q感兴趣的朋友可以自己搜索一下。只要运用得当,一个完成端口服务器是完全可以达?K?K的同时在UK的。但Q?Kq样的数值离百万q样的数值实在相差太大了Q所以,百万人的同时在线是单台服务器肯定无法实现的?br />  要实现百万h同时在线Q首先要实现一个比较完善的完成端口服务器模型,q个模型要求臛_可以承蝲2K?K的同时在U率Q当Ӟ如果你MONEY多,你也可以只开发出最多允?00人在U的服务器)。在构徏好了基本的完成端口服务器之后Q就是有x务器l的架构设计了。之所以说q是一个服务器l,是因为它l不仅仅只是一台服务器Q也l不仅仅是只有一U类型的服务器?br />  单地_实现百万人同时在U的服务器模型应该是Q登陆服务器Q大厅服务器Q房间服务器。当Ӟ也可以是其它的模型,但其基本的思想是一L。下面,我将逐一介绍q三cL务器的各自作用?br />  登陆服务器:一般情况下Q我们会向玩家开放若q个公开的登陆服务器Q就如QQ登陆时让你选择的从哪个QQ游戏服务器登陆一PQQ登陆时让玩家选择的六个服务器入口实际上就是登陆服务器。登陆服务器主要完成负蝲q的作用。详l点说就是,在登陆服务器的背后,有N个大厅服务器Q登陆服务器只是用于为当前的客户端连接选择其下一步应该连接到哪个大厅服务器,当登陆服务器为当前的客户端连接选择了一个合适的大厅服务器后Q客L开始根据登陆服务器提供的信息连接到相应的大厅上去,同时客户端断开与登陆服务器的连接,为其他玩家客Lq接登陆服务器腾出套接字资源。在设计登陆服务器时Q至应该有以下功能QN个大厅服务器的每一个大厅服务器都要与所有的登陆服务器保持连接,q实时地把本大厅服务器当前的同时在线人数通知l各个登陆服务器Q这其中包括Q用戯入时的同时在Uh数增加信息以及用户退出时的同时在Uh数减信息。这里的各个大厅服务器同时在UhC息就是登陆服务器为客L选择某个大厅让其登陆的依据。D例来_玩家A通过登陆服务?q接到登陆服务器Q登陆服务器开始ؓ当前玩家在众多的大厅服务器中Ҏ哪一个大厅服务器人数比较来选择一个大厅,同时把这个大厅的q接IP和端口发l客LQ客L收到q个IP和端口信息后Q根据这个信息连接到此大厅,同时Q客L断开与登陆服务器之间的连接,q便是用L陆过E中Q在登陆服务器这一块的处理程?br />  大厅服务器:大厅服务器,是普通玩家看不到的服务器Q它的连接IP和端口信息是登陆服务器通知l客L的。也是_在QQ游戏的本地文件中Q具体的大厅服务器连接IP和端口信息是没有保存的。大厅服务器的主要作用是向玩家发送游戏房间列表信息,q些信息包括Q每个游戏房间的cdQ名Uͼ在线人数Q连接地址以及其它如游戏帮助文件URL的信息。从界面上看的话Q大厅服务器是我们输入用户名和密码q校验通过后进入的游戏戉K列表界面。大厅服务器Q主要有以下功能Q一是向当前玩家q播各个游戏戉K在线人数信息Q二是提供游戏的版本以及下蝲地址信息Q三是提供各个游戏房间服务器的连接IP和端口信息;四是提供游戏帮助的URL信息Q五是提供其它游戏辅助功能。但在这众多的功能中Q有一Ҏ最为核心的Q即Qؓ玩家提供q入具体的游戏房间的通道Q让玩家利q入其欲q入的游戏房间。玩家根据各个游戏房间在Uh敎ͼ判定自己q入哪一个房_然后双击服务器列表中的某个游戏房间后玩家开始进入游戏房间服务器?br />  游戏戉K服务器:游戏戉K服务器,具体地说是如“斗C1”,“斗C2”这L游戏戉K。游戏房间服务器才是具体的负责执行游戏相关逻辑的服务器。这L游戏逻辑分ؓ两大c:一cL通用的游戏房间逻辑Q如Q进入房_d戉KQ进入桌子,d桌子以及在房间内说话{;W二cL游戏桌子逻辑Q这个就是各U不同类型游戏的主要区别之处了,比如斗地M的叫C或不叫地ȝ逻辑{,当然Q游戏桌子逻辑里也包括有通用的各个游戏里都存在的游戏逻辑Q比如在桌子内说话等。MQ游戏房间服务器才是真正负责执行游戏具体逻辑的服务器?br />  q里提到的三cL务器Q我均采用的是完成端口模型,每个服务器最多连接数目是5000人,但是Q我在游戏房间服务器上作了逻辑层的限定Q最多只允许300人同时在Uѝ其他两个服务器仍然允许最?000人的同时在线。如果按照这Ll构来设计,那么要实现百万h的同时在U就应该是这P首先是大厅,1000000/5000Q?00。也是_臛_?00台大厅服务器Q但通常情况下,考虑到实际用时服务器的处理能力和负载情况,应该臛_准备250台左右的大厅服务器程序。另外,具体的各U类型的游戏戉K服务器需要多,pҎ当前玩各U类型游戏的玩家数目分别计算了,比如斗地L多是十万人同时在U,每台服务器最多允?00人同时在U,那么需要的斗地L务器数目应该不于Q?00000/300=333Q准备得充分一点,p准备350台斗C服务器?br />  除正常的玩家q接外,q要考虑刎ͼ
  对于登陆服务器,会有250台大厅服务器q接到每个登陆服务器上,q是始终都要保持的连接;
  而对于大厅服务器而言Q如果仅仅有斗地主这一cȝ服务器,p?50多个q接与各个大厅服务器始终保持着。所以从q一点看Q我的结构在某些斚wq存在着需要改q的地方Q但核心思想是:快地提供用L陆的速度Q尽可能方便地让玩家q入游戏中?/span>

【Xine】中文站 2006-06-01 17:35 发表评论
]]>
Web开发技术发展史?/title><link>http://www.tkk7.com/xine/articles/49724.html</link><dc:creator>【Xine】中文站</dc:creator><author>【Xine】中文站</author><pubDate>Thu, 01 Jun 2006 09:20:00 GMT</pubDate><guid>http://www.tkk7.com/xine/articles/49724.html</guid><wfw:comment>http://www.tkk7.com/xine/comments/49724.html</wfw:comment><comments>http://www.tkk7.com/xine/articles/49724.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/xine/comments/commentRss/49724.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/xine/services/trackbacks/49724.html</trackback:ping><description><![CDATA[ <span id="vczkvcu" class="unnamed3"> <span id="miogvee" class="f14">  讨论Web开发技术的历史Q当然要先说说Web的v源。众所周知QWebq个Internet上最热门的应用架构是由Tim Berners-Lee发明的。Web的前w是1980qTim Berners-Lee负责的EnquireQEnquire Within Upon Everything的简Uͼ目?990q?1月,W一个Web服务器nxoc01.cern.ch开始运行,Tim Berners-Lee在自q写的囑Ş化Web览?WorldWideWeb"上看C最早的Web面?991q_CERNQEuropean Particle Physics LaboratoryQ正式发布了Web技术标准。目前,与Web相关的各U技术标准都p名的W3Cl织QWorld Wide Web ConsortiumQ管理和l护?br /><br />   从技术层面看QWeb架构的精华有三处Q用文本技术(HTMLQ实C息与信息的连接;用统一资源定位技术(URIQ实现全球信息的_定位Q用新的应用层协议(HTTPQ实现分布式的信息共享。这三个特点无一不与信息的分发、获取和利用有关。其实,Tim Berners-Lee早就明确无误地告诉我们:"Web是一个抽象的Q假想的Q信息空间?也就是说Q作为Internet上的一U应用架构,Web的首要Q务就是向Z提供信息和信息服务?br /><br />   很可惜,在Web应用日新月异的今天,许多搞技术的Z乎已l忘CWeb架构的设计初街他们在自己开发的|站或Web应用中大肆堆砌各U所谓的"先进"技术,但最l用戯够在q些|站或应用中获得的有价g息却寥寥无几。这个问题绝不像评论者常说的"有\无R"?信息匮乏"那么单。一个Web开发者倘若忘记了Web技术的最l目标是提供信息和信息服务,他的愚蠢E度׃毫不亚于一个在球Z只知道卖弄技巧,却忘C门得分的大牌球星。从q个角度来说Q评价一UWeb开发技术优劣的标准只有一个,那就是看q种技术能否在最恰当的时间和最恰当的地点,以最恰当的方式,为最需要信息的人提供最恰当的信息服务?br /><br />  <strong>客户端技术的萌芽和演q?/strong><br /><br />   Web是一U典型的分布式应用架构。Web应用中的每一ơ信息交换都要涉及到客户端和服务端两个层面。因此,Web开发技术大体上也可以被分ؓ客户端技术和服务端技术两大类。我们先来谈谈客L技术的萌芽和演q过E?br /><br />   Web客户端的主要d是展C息内容,而HTML语言则是信息展现的最有效载体之一。作ZU实用的文本语aQHTML的历史最早可以追溯到上世U四十年代?945q_Vannevar Bush在一文章中阐述了文本和文本之间通过链接怺兌的思想Qƈ在文中给Z一U能实现信息兌的计机Memex的设计方案。Doug Engelbart{h则在1960q前后,对信息关联技术做了最早的实验。与此同ӞTed Nelson正式这U信息关联技术命名ؓ文本(HypertextQ技术?969q_IBM的Charles Goldfarb发明了可用于描述文本信息的GMLQGeneralized Markup LanguageQ语a?978?986q间Q在ANSI{组l的努力下,GML语言q一步发展成名的SGML语言标准。当Tim Berners-Lee和他的同事们?989q试囑ֈZ个基于超文本的分布式应用pȝӞTim Berners-Lee意识刎ͼSGML是描q超文本信息的一个上x案,但美中不的是,SGMLq于复杂Q不利于信息的传递和解析。于是,Tim Berners-Lee对SGML语言做了大刀阔斧的简化和完善?990q_W一个图形化的Web览?WorldWideWeb"l于可以使用一UؓWeb度n定制的语a--HTML来展现超文本信息了?br /><br />   最初的HTML语言只能在浏览器中展现静态的文本或图像信息,q满不了h们对信息丰富性和多样性的强烈需?-qg事情最l的l果是,由静态技术向动态技术的转变成ؓ了Web客户端技术演q的永恒定律?br /><br />   能存储、展Cl动ȝGIF囑փ格式早在1989q就已发展成熟。Web出现后,GIFW一ơؓHTML面引入了动感元素。但更大的变革来源于1995qJava语言的问世。Java语言天生具备的q_无关的特点,让h们一下子扑ֈ了在览器中开发动态应用的捷径?996q_著名的Netscape览器在?.0版中增加了对JavaApplets和JavaScript的支持。Netscape的冤家对_Microsoft的IE 3.0也在q一q开始支持Java技术。现在,喜欢动画、喜Ƣ交互操作、喜Ƣ客L应用的开发h员可以用Java或JavaScript语言随心所Ʋ地丰富HTML面的功能了。顺便说一句,JavaScript语言在所有客L开发技术中占有非常独特的地位:它是一U以脚本方式q行的,化了的Java语言Q这也是脚本技术第一ơ在Web世界里崭露头角。ؓ了用UMicrosoft的技术与JavaScript抗衡QMicrosoftqؓ1996q的IE 3.0设计了另一U后来也声名显赫的脚本语a--VBScript语言?br /><br />   真正让HTML面又酷又炫、动感无限的是CSSQCascading Style SheetsQ和DHTMLQDynamic HTMLQ技术?996q底QW3C提出了CSS的徏议标准,同年QIE 3.0引入了对CSS的支持。CSS大大提高了开发者对信息展现格式的控制能力?997q的Netscape 4.0不但支持CSSQ而且增加了许多Netscape公司自定义的动态HTML标记Q这些标记在CSS的基上,让HTML面中的各种要素"zd"了v来?997q_Microsoft发布了IE 4.0Qƈ动态HTML标记、CSS和动态对象模型(DHTML Object ModelQ发展成了一套完整、实用、高效的客户端开发技术体p,MicrosoftU其为DHTML。同h实现HTML面的动态效果,DHTML技术无需启动Java虚拟机或其他脚本环境Q可以在览器的支持下,获得更好的展现效果和更高的执行效率。今天,已经很少有哪个HTML面的开发者还会对CSS和DHTML技术视而不见了?br /><br />   Z在HTML面中实现音频、视频等更ؓ复杂的多媒体应用Q?996q的Netscape 2.0成功地引入了对QuickTime插g的支持,插gq种开发方式也q速风靡了览器的世界。在Windowsq_上,Microsoft客L应用集成的赌注押C1990q代中期刚刚问世的COM和ActiveXw上?996q_IE 3.0正式支持在HTML面中插入ActiveX控g的功能,qؓ其他厂商扩展Web客户端的信息展现方式开辟了一条自׃路?999q_Realplayer插g先后在Netscape和IE览器中取得了成功,与此同时QMicrosoft自己的媒体播放插件Media Player也被预装C各种Windows版本之中。同样值得U念的还有Flash插g的横I出世:1990q代初期QJonathan Gay在FutureWave公司开发了一U名为Future Splash Animator的二l矢量动dC工P1996q_Macromedia公司收购了FutureWaveQƈJonathan Gay的发明改名ؓ我们熟悉的Flash。从此,Flash动画成了Web开发者表现自我、展CZ性的最x式?br /><br />   除了~写HTML面之外Q客L应用的开发者还可以利用一些成熟的技术将览器的功能d到自q应用E序中。从1992q开始,W3C免费向开发者提供libwww开发库。借助libwwwQ我们可以自q写Web览器和Web搜烦工具Q也可以分析、编辑或昄HTML面?999q_Microsoft在IE 5.0中引入的HTAsQHTML ApplicationsQ技术则允许我们直接HTML面转换Z个真正的应用E序。从1997q的IE 4.0开始,Microsoft为开发者提供了WebBrowser控g和其他相关的COM接口Q允许程序员在自qE序中直接嵌入浏览器H口Q或调用各种览器的功能Q如分析或编辑HTML面{。Windows 98及其后的Windows操作pȝ甚至q利用WSHQWindows Script HostQ技术将原本只在览器中q行的JavaScript、VBScript变成了可以在WIN32环境下用的通用脚本语言Q这大概也可作我们对Web客户端开发技术的一Uy妙利用吧?br /><br />  <strong>服务端技术的成熟与发?/strong><br /><br />   与客L技术从静态向动态的演进q程cMQWeb服务端的开发技术也是由静态向动态逐渐发展、完善v来的?br /><br />   最早的Web服务器简单地响应览器发来的HTTPhQƈ存储在服务器上的HTML文gq回l浏览器。一U名为SSIQServer Side IncludesQ的技术可以让Web服务器在q回HTML文g前,更新HTML文g的某些内容,但其功能非常有限。第一U真正服务器能Ҏq行时的具体情况Q动态生成HTML面的技术是大名鼎鼎的CGIQCommon Gateway InterfaceQ技术?993q_CGI 1.0的标准草案由NCSAQNational Center for Supercomputing ApplicationsQ提出,1995q_NCSA开始制定CGI 1.1标准Q?997q_CGI 1.2也被U_了议事日E。CGI技术允许服务端的应用程序根据客L的请求,动态生成HTML面Q这使客L和服务端的动态信息交换成Z可能。随着CGI技术的普及Q聊天室、论坛、电子商务、信息查询、全文检索等各式各样的Web应用蓬勃兴vQh们终于可以n受到信息索、信息交换、信息处理等更ؓ便捷的信息服务了?br /><br />   早期的CGIE序大多是编译后的可执行E序Q其~程语言可以是C、C++、Pascal{Q何通用的程序设计语a。ؓ了简化CGIE序的修攏V编译和发布q程Qh们开始探ȝ脚本语言实现CGI应用的可行方式。在此方面,不能不提的是Larry Wall?987q发明的Perl语言。Perll合了C语言的高效以及sh、awk{脚本语a的便Pg天生适用于CGIE序的编写?995q_W一个用Perl写成的CGIE序问世。很快,Perl在CGI~程领域的风头就盖过了它的前辈C语言。随后,Python{著名的脚本语言也陆l加入了CGI~程语言的行列?br /><br />   1994q_Rasmus Lerdorf发明了专用于Web服务端编E的PHPQPersonal Home Page ToolsQ语a。与以往的CGIE序不同QPHP语言HTML代码和PHP指o合成为完整的服务端动态页面,Web应用的开发者可以用一U更加简ѝ快L方式实现动态Web功能?996q_Microsoft借鉴PHP的思想Q在其Web服务器IIS 3.0中引入了ASP技术。ASP使用的脚本语a是我们熟悉的VBScript和JavaScript。借助Microsoft Visual Studio{开发工具在市场上的成功QASPq速成ZWindowspȝ下Web服务端的L开发技术。当Ӟ以Sun公司为首的Java阵营也不会示弱?997q_Servlet技术问世,1998q_JSP技术诞生。Servlet和JSP的组合(q可以加上JavaBean技术)让Java开发者同时拥有了cMCGIE序的集中处理功能和cMPHP的HTML嵌入功能Q此外,Java的运行时~译技术也大大提高了Servlet和JSP的执行效?-q也正是Servlet和JSP被后来的J2EEq_吸纳为核心技术的原因之一?br /><br />  <strong>两种重要的企业开发^?/strong><br /><br />   Web服务端开发技术的完善使开发复杂的Web应用成ؓ了可能。在此vg的电子商务大潮中Qؓ了适应企业U应用开发的各种复杂需求,Zl最l用h供更可靠、更完善的信息服务,两个最重要的企业开发^?-J2EE?NET?000q前后分别诞生于Java和Windows阵营Q它们随卛_在企业Web开发领域展开了你Lzȝg。^C争让整个Web世界在最q的几年里不得安宁,但从某种意义上说Q也正是q种针锋相对的竞争关pM使了Web开发技术以前所未有的速度提高和跃q?br /><br />   J2EE是纯_基于Java的解x案?998q_Sun发布了EJB 1.0标准。EJBZ业应用中必不可的数据装、事务处理、交易控制等功能提供了良好的技术基。至此,J2EEq_的三大核心技术Servlet、JSP和EJB都已先后问世?999q_Sun正式发布了J2EE的第一个版本。紧接着Q遵循J2EE标准Qؓ企业U应用提供支撑^台的各类应用服务软g争先恐后地涌C出来。IBM的WebSphere、BEA的WebLogic都是q一领域里最为成功的商业软gq_。随着开源运动的兴vQJBoss{开源世界里的应用服务新U也吸引了许多用户的注意力。到2003q时QSun的J2EE版本已经升C1.4版,其中三个关键lg的版本也演进CServlet 2.4、JSP 2.0和EJB 2.1。至此,J2EE体系及相关的软g产品已经成ؓ了Web服务端开发的一个强有力的支撑环境?br /><br />   和J2EE不同的是QMicrosoft?NETq_是一个强调多语言间交互的通用q行环境。尽?NET的设计者试图以.NETq_作ؓl大多数Windows应用的首选运行环境,?NET首先吸引的却是Web开发者的目光?001q_ECMA通过了Microsoft提交的C#语言和CLI标准Q这两个技术标准构成了.NETq_的基矻I它们也于2003q成ZISO的国际标准?002q_Microsoft正式发布.NET Framework和Visual Studio .NET开发环境。早?NET发布之前Q就已经有许多Windowsq_的Web开发者迫不及待地利用Beta版本开发Web应用了。这大概是因为,.NETq_及相关的开发环境不但ؓWeb服务端应用提供了一个支持多U语a的、通用的运行^収ͼ而且q引入了ASP.NETq样一U全新的Web开发技术。ASP.NET越了ASP的局限,可以使用VB.NET、C#{编译型语言Q支持Web Form?NET Server Control、ADO.NET{高U特性。客观地Ԍ.NETq_Q尤其是.NETq_中的ASP.NET的确不失为Web开发技术在Windowsq_上的一个集大成者?br /><br />  <strong>XML语言及相x?/strong><br /><br />   如果说HTML语言lWeb世界赋予了无限生机的话,那么QXML语言的出现大概就可以成是Web的一ơ新生了。按照Tim Berners-Lee的说法,Web是一?信息I间"。HTML语言h较强的表现力Q但也存在结构过于灵zR语法不规范的弱炏V当信息都以HTML语言的面貌出现时QWebq个信息I间是杂乱无章、没有秩序的。ؓ了让Web世界里的所有信息都有章可@、有法可依,我们需要一U更范、更能够体现信息特点的语a?br /><br />   1996q_W3C在SGML语言的基上,提出了XMLQExtensible Markup LanguageQ语a草案?998q_W3C正式发布了XML 1.0标准。XML语言对信息的格式和表达方法做了最大程度的规范Q应用Y件可以按照统一的方式处理所有XML信息。这样一来,信息在整个Web世界里的׃n和交换就有了技术上的保障。HTML语言兛_的是信息的表现Ş式,而XML语言兛_的是信息本n的格式和数据内容。从q个意义上说QXML语言不但可以客L的信息展现技术提高到一个新的层ơ,而且可以显著提高服务端的信息获取、生成、发布和׃n能力。ؓ了将XML信息转换为HTML{不同的信息展现形式Q?999q_W3C制定ZXSLT标准。同一q_IE 5.0增加了对XML和XSLT的支持?br /><br />   现在Q网站的开发者可以直接用XML语言发布信息了。针对不同的应用领域Qh们还制定了许多专门的XML规范。例如,2001qW3C发布的SVGQScalable Vector GraphicsQ?.0标准是一U用XML语言表达的、全新的二维矢量囑Ş格式。开发者可以用SVG格式描述大多数已有的Flash动画。与Flash格式相比Q符合XML标准的SVG格式昄更有利于信息交换和共享?br /><br />   Web本n是一个最大的分布式应用系l。对于分布式开发而言QXML技术也大有用武之地。一个明昄事实是,如果能让分布式应用借助XML格式交换信息Q那么,以往横亘在分布式架构上的信息交换N也就q刃而解了?999q_W3C和相关的企业开始讨计基于XML的通信协议Q?000q_W3C发布SOAPQSimple Object Access ProtocolQ协议的1.1版。h们把利用SOAP协议传递XML信息的分布式应用模型UCؓWeb Service?001q_W3C发布了WSDLQWeb Services Description LanguageQ协议的1.1版。SOAP协议和WSDL协议共同构成了Web Service的基。随后,J2EE?NETq两大企业开发^台先后实CWeb ServiceQƈ其视ؓq_的一Ҏ心功能?br /><br />   Web Service对于Web开发者的重要意义在于Q当我们需要在不同的服务端、不同的客户端乃至不同的应用cd、不同的计算讑֤之间传递信息的时候,以往的分布式开发技术或者因为适应性不强,或者因为扩展能力不I都难以满现代Web开发的需要,而Web Service正好填补了这一I白?br /><br />  <strong>Web开发框架和应用模型</strong><br /><br />   2000q以后,随着Web应用的日益复杂,Z逐渐意识刎ͼ单纯依靠某种技术多半无法达到快速开发、快速验证和快速部|的最佛_界。研I者开始尝试着已有的Web开发技术综合v来,形成完整的开发框架或应用模型Qƈ以此来满_U复杂的应用需求?br /><br />   Microsoft在客L的技术集成方面走在了最前面?998q时Microsoft推出的Windows 98可以在桌面上集成Web面Q这实际上是资源管理器和Web览器的功能有效地结合了h?000q后QMicrosoft陆箋推出了MSN Explorer和与之相关的MSN在线服务。这一应用模型Web览、视频点播、邮件处理、网上游戏、在U聊天等许多U用户常用的Web功能集成在了一个统一的界面中。从信息利用的角度看QMSN试图让用户在一个最舒适的环境中获取够的信息Q这U努力的值得ZU道。另一个与客户端技术集成相关的例子是搜索引擎Google?003q展C给大家的Google工具栏功能。虽然Google工具栏有炒作和广告的嫌疑Q但安装Google工具栏之后的IE览器将信息览和信息检索有机地l合了v来,q种小的功能改q确实是对用L体脓和帮助?br /><br />   在Web服务端,2000q以后出C几种主要的技术融合方式。首先,来多的Web开发环境开始支持MVCQModel-View-ContorllerQ的设计模型Qؓ开发者提供了全套的开发框架。实际上QJ2EE?NETq_本n是q种开发框架的典型代表。其ơ,门户服务QPortal ServerQ和Web内容理QWeb Content ManagementQ在最q几q里成ؓ了应用集成的重点模型。这两种应用模型可以直接为开发者或最l用h供构建Web应用的高U^収ͼ可以让Web开发和信息发布工作大ؓ化。在商业软g领域Q这一cd用的例子包括Microsoft的SharePoint、IBM的WebSphere Portal、FileNet的Web Content Manager{等。开源项目在Web开发框架和应用模型斚w表现得非常积极,Struts、Jetspeed、jPortlet、Cocoon、Lenya、XOOPS{都是开源世界里与MVC开发框架、门h务和Web内容理相关的优U解决Ҏ?br /><br />   当然Q技术集成绝不等于技术堆砌。一些Web站点和Web应用的开发者把XML语言、MVC框架{时髦技术拼凑v来,却不它们是否能适应具体的应用环境,l果Q他们的pȝ要么q行效率低下Q要么功能残~Z全。反之,一个值得注意的事实是Q像新浪、搜狐或|易q样的门L站,在他们的信息发布面Q如新闻面Q里Q尽信息内Ҏ刻都在刷斎ͼ但Web服务器上存放的始l都是静态的HTML面。这U?落后技?的优ҎQ在大量q发讉K的情况下Q门L站的响应速度仍然很快。深入到技术层面,我们通常会惊讶地发现Q这些网站用的大多是自行研发的Web内容理pȝ。当|站的内容编辑提交新的信息时Q系l会自动信息{换ؓHTML格式Q发布到Web服务器集的每一个结点上。在新浪|的一个角落里Q我们可以找?新浪|站发布pȝ"的研发历E:<br /><br />  V 1.0Q?997Q:Z文g的版本,实现新闻首页、正文和专题的发布?br />  V 1.1Q?998/12Q:采用数据库后台、实现跨服务器发布,自动化程度高?br />  V 2.0Q?999/3Q:创立模版和域的全新概念,奠定了该pd的基本设计思\?br />  V 2.1Q?999/9Q:增加周边模块Q如搜烦、自动采集?br />  V 3.0Q?000/1Q:优化传输方式Q增加相xd评论?br />  V 3CQ?000/6Q:V3.0的编译版Q也是商业版的原型?br />  V 3.1Q?000/7Q:优化数据库结构,采用内存CACHE大幅提速,增加了集中监控功能?br />  V 3.1CQ?000/8Q:商业用测试版本?br />  V 3.2Q正在制作中Q:重点解决备䆾pȝ的自动化切换Q在机制上实现永不宕机?<br /><br />  q一份有的历史记录再一ơ印证了我关于Web开发技术的基本观点Q一U技术只要能为用h供高水^的信息服务,它就是最好、最先进的技术?br /><br />   <strong>Web开发技术的未来</strong><br /><br />  所有h都在兛_Web的发展前景,所有h都想知道十年以后的Web会长成什么样子。要回答q些问题Q没有谁比W3C更有权威了。W3C明确地告诉我们,Web的未来是语义化的WebQSemantic WebQ。今天的Web可以自如地生成、传递和展现各式各样的信息,但它q只是一个信息的"容器"Q很难揭C出信息本n的内容和Ҏ。与此相对的是,未来的语义化Web是一U懂得信息内容的WebQ是真正?信息理??br /><br />  从技术角度看QXML语言l一了信息的表达方式Q但q离揭示信息内容的目标还相距甚远?998q_W3C和一些研I机构开始对元数据(MetadataQ进行研I。元数据是描q数据的数据Q可以揭CZ息的内容Ҏ?999q_NetScape提出的RSSQRich Site SummaryQ徏议标准是用元数据技术描q新ȝ信息内容的第一ơ尝试?999q_W3C的研I小l提ZRDFQResource Description FrameworkQ标准草案。RDF在XML语法的基上,规定了元数据的存储结构和相关的技术标准。用RDF语言Q我们可以用l一的、可交换的格式揭C出信息本n的各U特性?001q_W3C又开始着手制定OWLQOWL Web Ontology LanguageQ标准。OWL语言也是一U符合XML标准的语aQ它比RDF又前q了一步,可以更加深入、细致地描述信息内容。在RDF和OWL语言的帮助下Q我们能让Web上的信息内容变得更容易理解、更便于交换和共享?003q_W3C成立了语义化Web Service研究组QSemantic Web Services Interest GroupQ,研究在Web Service中加入语义技术的相关问题?004q?月,W3C宣布RDF和OWL标准正式成ؓW3C的徏议方案,q标志着语义化Web的大厦已l破土动工?br /><br />  随着语义化Web的诞生和发展QWeb开发技术也必将l历更ؓ重大的变革。可以预见的是,在未来的几年里,q会有许多新的开发技术或开发^台出现。从静态技术到动态技术,从开发^台到应用模型Q从传统Web到语义化Web……ؓ了让更多的h获得更有价值的信息服务QWeb开发者们也许q会l历一ơ又一ơ的技术浪潮,q会面更ؓ严峻的技术挑战,但这和信息共享的最高目标相比,又算得了什么呢Q?/span> </span> <img src ="http://www.tkk7.com/xine/aggbug/49724.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/xine/" target="_blank">【Xine】中文站</a> 2006-06-01 17:20 <a href="http://www.tkk7.com/xine/articles/49724.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谈谈Unicode~码http://www.tkk7.com/xine/articles/49719.html【Xine】中文站【Xine】中文站Thu, 01 Jun 2006 09:18:00 GMThttp://www.tkk7.com/xine/articles/49719.htmlhttp://www.tkk7.com/xine/comments/49719.htmlhttp://www.tkk7.com/xine/articles/49719.html#Feedback0http://www.tkk7.com/xine/comments/commentRss/49719.htmlhttp://www.tkk7.com/xine/services/trackbacks/49719.html


q是一程序员写给E序员的味ȝ。所谓趣x指可以比较轻村֜了解一些原来不清楚的概念,增进知识Q类g打RPG游戏的升U。整理这文章的动机是两个问题:

问题一Q?

使用WindowsC本的“另存ؓ”,可以在GBK、Unicode、Unicode big endian和UTF-8q几U编码方式间怺转换。同htxt文gQWindows是怎样识别~码方式的呢Q?/font>

我很早前发现Unicode、Unicode big endian和UTF-8~码的txt文g的开头会多出几个字节Q分别是FF、FEQUnicodeQ?FE、FFQUnicode big endianQ?EF、BB、BFQUTF-8Q。但q些标记是基于什么标准呢Q?/font>

问题二:
最q在|上看到一个ConvertUTF.cQ实CUTF-32、UTF-16和UTF-8q三U编码方式的怺转换。对于Unicode(UCS2)、GBK、UTF-8q些~码方式Q我原来׃解。但q个E序让我有些p涂Q想不v来UTF-16和UCS2有什么关pR?

查了查相兌料,ȝ这些问题弄清楚了,带也了解了一些Unicode的细节。写成一文章,送给有过cM疑问的朋友。本文在写作时尽量做到通俗易懂Q但要求读者知道什么是字节Q什么是十六q制?/font>

0、big endian和little endian

big endian和little endian是CPU处理多字节数的不同方式。例如“汉”字的Unicode~码?C49。那么写到文仉ӞI竟是将6C写在前面Q还是将49写在前面Q如果将6C写在前面Q就是big endian。还是将49写在前面Q就是little endian?/font>

“endian”这个词《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开q是从小?Little-Endian)敲开Q由此曾发生q六ơ叛乱,其中一个皇帝送了命,另一个丢了王位?/font>

我们一般将endian译成“字节序”,big endian和little endianUC“大䏀和“小䏀?/font>

1、字W编码、内码,带介绍汉字~码

字符必须~码后才能被计算机处理。计机使用的缺省编码方式就是计机的内码。早期的计算Z?位的ASCII~码Qؓ了处理汉字,E序员设计了用于体中文的GB2312和用于繁体中文的big5?/font>

GB2312(1980q?一共收录了7445个字W,包括6763个汉字和682个其它符受汉字区的内码范围高字节从B0-F7Q低字节从A1-FEQ占用的码位?2*94=6768。其中有5个空位是D7FA-D7FE?/font>

GB2312支持的汉字太?995q的汉字扩展规范GBK1.0收录?1886个符P它分为汉字区和图形符号区。汉字区包括21003个字W?000q的GB18030是取代GBK1.0的正式国家标准。该标准收录?7484个汉字,同时q收录了藏文、蒙文、维向ְ文等主要的少数民族文字。现在的PCq_必须支持GB18030Q对嵌入式品暂不作要求。所以手机、MP3一般只支持GB2312?/font>

从ASCII、GB2312、GBK到GB18030Q这些编码方法是向下兼容的,卛_一个字W在q些Ҏ中L有相同的~码Q后面的标准支持更多的字W。在q些~码中,英文和中文可以统一地处理。区分中文编码的Ҏ是高字节的最高位不ؓ0。按照程序员的称|GB2312、GBK到GB18030都属于双字节字符?(DBCS)?/font>

有的中文Windows的缺省内码还是GBKQ可以通过GB18030升包升U到GB18030。不qGB18030相对GBK增加的字W,普通h是很隄到的Q通常我们q是用GBK指代中文Windows内码?/font>

q里q有一些细节:

  • GB2312的原文还是区位码Q从Z码到内码Q需要在高字节和低字节上分别加上A0?/font>

  • 在DBCS中,GB内码的存储格式始l是big endianQ即高位在前?/font>

  • GB2312的两个字节的最高位都是1。但W合q个条g的码位只?28*128=16384个。所以GBK和GB18030的低字节最高位都可能不?。不q这不媄响DBCS字符的解析Q在dDBCS字符时Q只要遇到高位ؓ1的字节,可以将下两个字节作Z个双字节~码Q而不用管低字节的高位是什么?/font>

2、Unicode、UCS和UTF

前面提到从ASCII、GB2312、GBK到GB18030的编码方法是向下兼容的。而Unicode只与ASCII兼容Q更准确地说Q是与ISO-8859-1兼容Q,与GB码不兼容。例如“汉”字的Unicode~码?C49Q而GB码是BABA?/font>

Unicode也是一U字W编码方法,不过它是由国际组l设计,可以容纳全世界所有语a文字的编码方案。Unicode的学名是"Universal Multiple-Octet Coded Character Set"Q简UCؓUCS。UCS可以看作?Unicode Character Set"的羃写?/font>

Ҏl基癄全书(http://zh.wikipedia.org/wiki/)的记载:历史上存在两个试囄立设计Unicode的组l,卛_际标准化l织QISOQ和一个Y件制造商的协会(unicode.orgQ。ISO开发了ISO 10646目QUnicode协会开发了Unicode目?/font>

?991q前后,双方都认识到世界不需要两个不兼容的字W集。于是它们开始合q双方的工作成果Qƈ为创立一个单一~码表而协同工作。从Unicode2.0开始,Unicode目采用了与ISO 10646-1相同的字库和字码?/font>

目前两个目仍都存在Qƈ独立地公布各自的标准。Unicode协会现在的最新版本是2005q的Unicode 4.1.0。ISO的最新标准是10646-3:2003?/font>

UCS规定了怎么用多个字节表C各U文字。怎样传输q些~码Q是由UTF(UCS Transformation Format)规范规定的,常见的UTF规范包括UTF-8、UTF-7、UTF-16?/font>

IETF的RFC2781和RFC3629以RFC的一贯风|清晰、明快又不失严}地描qCUTF-16和UTF-8的编码方法。我LC得IETF是Internet Engineering Task Force的羃写。但IETF负责l护的RFC是Internet上一切规范的基础?/font>

3、UCS-2、UCS-4、BMP




UCS有两U格式:UCS-2和UCS-4。顾名思义QUCS-2是用两个字节编码,UCS-4是?个字节(实际上只用了31位,最高位必须?Q编码。下面让我们做一些简单的数学游戏Q?/font>

UCS-2?^16=65536个码位,UCS-4?^31=2147483648个码位?/font>

UCS-4Ҏ最高位?的最高字节分?^7=128个group。每个group再根据次高字节分?56个plane。每个planeҎW?个字节分?56?(rows)Q每行包?56个cells。当然同一行的cells只是最后一个字节不同,其余都相同?/font>

group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中,高两个字节ؓ0的码位被UCBMP?/font>

UCS-4的BMPL前面的两个零字节得CUCS-2。在UCS-2的两个字节前加上两个零字节,得CUCS-4的BMP。而目前的UCS-4规范中还没有M字符被分配在BMP之外?/font>

4、UTF~码

UTF-8是?位ؓ单元对UCSq行~码。从UCS-2到UTF-8的编码方式如下:

UCS-2~码(16q制) UTF-8 字节?二进?
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx

例如“汉”字的Unicode~码?C49?C49?800-FFFF之间Q所以肯定要?字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是Q?110 110001 001001Q?用这个比Ҏ依次代替模板中的xQ得刎ͼ11100110 10110001 10001001Q即E6 B1 89?/font>

读者可以用C本测试一下我们的~码是否正确?/font>

UTF-16?6位ؓ单元对UCSq行~码。对于小?x10000的UCS码,UTF-16~码q于UCS码对应的16位无W号整数。对于不于0x10000的UCS码,定义了一个算法。不q由于实际用的UCS2Q或者UCS4的BMP必然于0x10000Q所以就目前而言Q可以认为UTF-16和UCS-2基本相同。但UCS-2只是一个编码方案,UTF-16却要用于实际的传输,所以就不得不考虑字节序的问题?/font>

5、UTF的字节序和BOM

UTF-8以字节ؓ~码单元Q没有字节序的问题。UTF-16以两个字节ؓ~码单元Q在解释一个UTF-16文本前,首先要弄清楚每个~码单元的字节序。例如收C个“奎”的Unicode~码?94EQ“乙”的Unicode~码?E59。如果我们收到UTF-16字节?94E”,那么q是“奎”还是“乙”?

Unicode规范中推荐的标记字节序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。BOM是一个有点小聪明的想法:

在UCS~码中有一个叫?ZERO WIDTH NO-BREAK SPACE"的字W,它的~码是FEFF。而FFFE在UCS中是不存在的字符Q所以不应该出现在实际传输中。UCS规范我们在传输字节流前,先传输字W?ZERO WIDTH NO-BREAK SPACE"?/font>

q样如果接收者收到FEFFQ就表明q个字节是Big-Endian的;如果收到FFFEQ就表明q个字节是Little-Endian的。因此字W?ZERO WIDTH NO-BREAK SPACE"又被UCBOM?/font>

UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字W?ZERO WIDTH NO-BREAK SPACE"的UTF-8~码是EF BB BFQ读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收CEF BB BF开头的字节,q道这是UTF-8~码了?/font>

Windows是使用BOM来标记文本文件的~码方式的?/font>

6、进一步的参考资?/h3>

本文主要参考的资料?"Short overview of ISO-IEC 10646 and Unicode" (http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html)?/font>

我还找了两篇看上M错的资料Q不q因为我开始的疑问都找C{案Q所以就没有看:

  1. "Understanding Unicode A general introduction to the Unicode Standard" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter04a)
  2. "Character set encoding basics Understanding character set encodings and legacy encodings" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter03)


]]> վ֩ģ壺 ƷƬ߹ۿ| þþƷ7ҹa| 6666˹ۿ| ߿Ƭ˳Ӿ| 㽶Ƶ| þó˹Ʒ| ޹պһ| ɫƬѹۿ| ɫƷһ| ëƬѹۿ| ŷ߹ۿ| 鸣ۺĻһƵ1 | ҳƵվ | žžžƷƵ| ߹ۿҹһ| ձɫͼ߹ۿ| ޼У԰ɫ| ѹۿ| ѿƷþ| ɫþþ99Ʒ91| Ӱۿ| ޹ƷۺϾþ2007| ѹۿһƬ| վ߹ۿ| Ʒþþ| AƬƵWWW| ƷAV鶹| ߹ۿ| þþѾƷre6| ޾Ʒ˳| ޾aaվ| 24Сʱձ| þŷƷ| þþƷ69Ʒ| ѿƬ| ѿڿŮ| Ů18ëƬëƬ| һƷƵ߲| ޾Ʒ߳ˮ| һ߹ۿƵ| ִˬƵ|