<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>一团糊涂</title><link>http://bigshrimp.cndev.org/</link><description>笔记本</description><managingEditor>吃得很胖的虾</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.95.2004.101</generator><item><dc:creator>吃得很胖的虾</dc:creator><title>老张养猪的发展史(网络知识普及)</title><link>http://bigshrimp.cndev.org/archive/2005/04/12/10487.aspx</link><pubDate>2005-04-12 14:05:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2005/04/12/10487.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/10487.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2005/04/12/10487.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/10487.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/10487.aspx</trackback:ping><description>&amp;nbsp;为了配合改革开放的步伐，以及尽快使生活进入小康，老张决定自力更生，开一个养猪场。刚开始的时候老张买了15头猪，只有一个猪圈，老张每天都亲自拿着簸箕到圈里喂猪，后来老张又相继买了20头猪，这样老张每天就要拿很多的猪饲料到猪圈里去，很是麻烦。为了解决这一个问题，老张决定实现养猪网络化，他自己组建了一个以太网(Ethernet)饲料槽，并把网络引到了离家很近的地方，这样每天只需要把猪饲料分成一份一份打包倒到以太网槽里，猪们就可以自己去吃了。 &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 老张的猪越长越胖，这时候就出现了一些问题。以太网是基于CSMA/CD(载波侦听多路访问/冲突检测)技术的，饲料倒到槽里，猪们都争着去吃，场面显得非常拥挤，按老张的话说，那叫"介质争用"。为了解决介质争用的问题，老张自主研发了集线器和交换机，并在猪圈中使用了分段技术，把猪分成一堆一堆，给它们起名字，称为MAC地址。通常是食量大的猪用集线器集合成一堆，食量小的猪分成一堆，然后它们通过集线器后再上接到交换机，最后通过交换机连接到老张家里。这样做就很好地解决了介质争用的问题，以太网交换机的每个端口可以提供专用带宽,保证了各种不同的猪都可以吃饱。 &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 老张的生意开始好起来，他又投资开了另外一个猪圈。爱因斯坦说，在解决问题时，我们不可能使用产生问题时的相同想法。老张为了避免再次发生以太网带来的问题，在第二个猪圈里布置了另外一种方案--令牌环网(Token Ring)饲料槽方案。这种组网方式采用的是冲突避免机制，猪们之间传递一个令牌，谁拿到令牌，谁就可以去吃饲料，这样就不会象以太网那样争先恐后的场面出现。 &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 很快老张又开了第三个猪圈，令牌环网也存在一定的问题，比如，令牌是公平传递的，这样可能当中会有些猪很饿，但它们还没拿到令牌，只能够等待，而那些拿到令牌的猪又很可能是不饿的，但它们不能立刻交出令牌，因为规定了传递令牌的时间限制。于是老张在第三个猪圈中对令牌环进行了改良，首先他使用了更高传输速率的网槽，其次使用两个令牌环，两个令牌环传递令牌的方向是相反的，叫"逆向旋转"，两个令牌环一个是主环一个是从环，主环传输，从环备份。老张给这种组网方式起了个名字叫FDDI(光纤分布式数据接口)。 &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 除了喂饲料，猪圈之间有时也需要一些交流，为了体现对猪们的关心，老张还在猪圈之间架设了转换网桥。这样，不同网络结构之间的猪GG和猪MM们就可以经常通信了。 &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 老张的生意越做越火暴，这时候又出现了新的问题。第一个就是猪多了，网槽却很窄，这种窄带的传输方法已经显得越来越吃力。第二就是猪圈大了什么猪都有，龙蛇混杂，猪们当中产生了很多广播的问题。 &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 比如猪圈里有只叫比尔该死的，特别聪明，经常向其他笨猪宣讲宽带接入的知识，猪们的意见很大。在猪圈里，支持改造猪圈环境的声音越来越大。 &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 为了体现老张的民主，以及反映新中国纯情少猪的当家作主，老张决定对网络来一次全面的改革。 &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先是广播问题，老张冥思苦想之下，终于发明了路由器，使用第三层的交换技术，可以把局域网隔离，每头猪只能收到自己所在局域网内的广播信息。 &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这样大家的广播信息就不会混在一起了。老张为每头猪都指定了一个IP地址，路由器根据IP地址进行转发。另外老张还使用了分级设计的方法，大大提高了传输效率。每天老张只需要用IP地址和MAC地址将饲料打包，传到路由器上，然后路由器自动向猪们发出一个ARP(地址解析协议)请求，看看这份饲料是属于哪一头猪的，再把饲料包发送给它，这样做大大完善了网络的功能。同时老张还想到了一种叫PPPOE(以太网承载点对点协议)的认证，如果哪头猪饿了，只需要通过输入帐号和密码上网，就可以发出请求以便老张识别它们，分别给他们喂饲料。 &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 然后要解决的是带宽的问题，老张把光饲料槽拉到了猪圈，叫FTTH(光纤到"猪圈"[大楼])。这一点很容易实现，而难题就在于所谓的"最后一公里"问题，由于猪圈里环境复杂，无法进行光饲料槽的布线。于是老张又想了个办法，那就是对原有的网络进行改造，同时预见到猪的要求会越来越高 ，有些猪可能不但要吃饲料，还要喝可口可乐等的高级传输要求，老张使用了一种新的技术--ATM(异步传输模式)交换，这种交换可以把猪饲料分成更细的信元，在原有网络上进行传输，并且通过一个叫BAS(宽带接入服务器)的东西可以把ATM网络和老张的宽带主干网连接起来。ATM还提供面向连接，提供多业务，又因为ATM宽带接入的上下行速率是不对称的，上行只有640kbps而下行达到8Mbps，猪们管它叫ADSL(非对称用户线路)。 &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 又过了一些时间，ATM网也显现了一些缺点，比如说ATM交换机比较昂贵，同时基于ATM网的ADSL需要在接入层使用BAS转换，形成瓶颈，且BAS设备也价值不菲的原因，令到网络的可缩放性始终得不到提高。于是老张研制了基于以太网上行接口的IP DSLAM(DSLAM是二层的宽带接入设备)，把ATM信元转换成IP包的工作放到了二层，这样就不需要再使用昂贵的BAS了。虽然宽带走到这一步几乎是十分完善了，但老张的前进步伐还是没有停下来，他还建造了VDSL(对称用户线路)，实现了对称的上下行速率，实现了猪们的互动网络需求。再后来老张的猪出口海内外，在全国设立分公司，为了适应远程办公，老张又开发了VPN(虚拟私人网络)，包括PPTP(点到点隧道)、L2TP(二层网络隧道)和GRE(普通路由封装)三层隧道协议等等。 &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 后记：那只叫比尔该死的猪被卖到美国后成立了一间微软猪头公司，专门做起了软件&lt;img src ="http://bigshrimp.cndev.org/aggbug/10487.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>此爱与彼爱</title><link>http://bigshrimp.cndev.org/archive/2005/01/06/5443.aspx</link><pubDate>2005-01-06 16:48:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2005/01/06/5443.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/5443.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2005/01/06/5443.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/5443.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/5443.aspx</trackback:ping><description>&lt;img src ="http://bigshrimp.cndev.org/aggbug/5443.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>软件思想-转自ORG -作者:李战</title><link>http://bigshrimp.cndev.org/archive/2005/01/06/5442.aspx</link><pubDate>2005-01-06 15:54:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2005/01/06/5442.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/5442.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2005/01/06/5442.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/5442.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/5442.aspx</trackback:ping><description>&lt;SPAN id=abcMsgBody&gt;哲学家说：有什么样的世界观，就有什么样的方法论！&lt;BR&gt;&lt;BR&gt;　　辩论家说：立场决定观点！&lt;BR&gt;&lt;BR&gt;　　世界之所以有技术思想和观点之间的争论，完全与瞎子摸象的场景一样。真理只有一个，但是却很博大精深，没有一个人能看得到她的全部。每个追求真理的人都能感觉到她的存在，因为毕竟可以触摸到她的一部分。于是，人们会发现自己摸到的部分是实实在在的，自然与其他人不同，争论难免。真理就像一个极限，我们永远只能接近她，而不可能拥有她。软件思想的发展也是一个不断接近真理的过程。&lt;BR&gt;&lt;BR&gt;　　刚开始有计算机程序的时候都是&amp;#8220;面向算法&amp;#8221;的，人们为了充分发挥有限的硬件资源而设计出各种经典的算法，&amp;#8220;计算机&amp;#8221;就是用来计算的机器。但随着硬件能力的提升与程序的复杂度增加，人们发现复杂的代码难于阅读和维护。于是，程序&amp;#8220;结构化&amp;#8221;的思想开始发展和成熟。&amp;#8220;把大问题分解成小问题来解决&amp;#8221;是人类思维的习惯。冗长的代码被分成若干的子过程，每个过程都便于理解，在此基础上也就理解了整个程序。&lt;BR&gt;&lt;BR&gt;　　其实，&amp;#8220;面向算法&amp;#8221;与&amp;#8220;结构化程序&amp;#8221;都是以代码为中心的世界观，还是站在&amp;#8220;计算机&amp;#8221;的立场上。而当人们开始提出&amp;#8220;数据结构&amp;#8221;思想的时候，才真正开始把思考转向要解决的问题本身！人们越来越清楚地认识到，用数据结构去描述问题领域的模型，才是解决问题的关键，代码只是为数据服务的。从此，以数据为中心的世界观开始逐渐形成。当然，&amp;#8220;数据结构&amp;#8221;是伴随&amp;#8220;结构化程序&amp;#8221;的思想而发展的，这种配合极大提升程序的效率，也提升了软件生产率。&lt;BR&gt;&lt;BR&gt;　&amp;nbsp; 但这种思想还是将&amp;#8220;数据&amp;#8221;与&amp;#8220;代码&amp;#8221;分开来思考的。事实上，在&amp;#8220;面向对象&amp;#8221;思想成熟之前，有经验的程序员已经感觉到&amp;#8220;数据&amp;#8221;与&amp;#8220;代码&amp;#8221;应该是一体的。他们已经习惯将那些复杂的问题划分为若干相对独立的结构，围绕每个结构编写一堆服务该结构的子过程，而过程的第一个参数就是一个结构的指针，这个指针就是人们熟称的&amp;#8220;句柄&amp;#8221;，英文叫HANDLE。当&amp;#8220;面向对象&amp;#8221;的思想被提出的时候，我相信他们是最先理解这一思想的一群人。&lt;BR&gt;&lt;BR&gt;　　应该说&amp;#8220;面向对象&amp;#8221;的思想是第一次站在现实世界的立场上看问题，这种思想把人类思考问题的基本模式（如&amp;#8220;分类&amp;#8221;，&amp;#8220;抽象&amp;#8221;，&amp;#8220;普遍性与特殊性&amp;#8221;）应用到软件设计中。这种思想反映到编程上，就是将&amp;#8220;数据&amp;#8221;与&amp;#8220;代码&amp;#8221;统一成一个&amp;#8220;对象&amp;#8221;，&amp;#8220;对象&amp;#8221;成为实现软件的主要方法。软件思想发展到这时候有一点返璞归真的感觉：原来可以用这样简单的思维方式去考虑复杂的软件问题！&lt;BR&gt;&lt;BR&gt;　　然而，随着这种思想的深入应用，新的争论又开始，但所有的争论都已经是在新的高度。我想，在软件思想上，最迷茫的应该是&amp;#8220;继承&amp;#8221;与&amp;#8220;组合&amp;#8221;之争。&lt;BR&gt;&lt;BR&gt;　　由于人们太习惯&amp;#8220;面向对象&amp;#8221;的方法了，用基类来实现普遍需要的功能，派生子类来实现特殊性的东西。类的层次结构就像一棵美丽的圣诞树，真的很直观。甚至，许多编程语言为了构造这棵美丽的圣诞树而牺牲掉多重继承的特性。但问题是，一旦这样的继承结构被固定下来，就规定了系统的生长模式：只能长出新的枝叶！尽管，用类继承模式设计出来的系统具有良好的扩展性，不过这种扩展是单向的。当要想在根基上扩充点东西的时候，才发现可能会动摇整个大树！&lt;BR&gt;有的程序员试图用多重继承来解决这一问题，但切不说许多语言不支持多重继承，如果真的能扩充一个基类，那么你将面临层次不同的分支点，应该把哪些枝丫切开呢？&lt;BR&gt;&lt;BR&gt;　　为此，一种称为&amp;#8220;接口&amp;#8221;的软件思想诞生了。&amp;#8220;接口&amp;#8221;思想提倡尊重对象的隐私，从来不去查一个对象的祖宗三代，只要你能做事就行。每一件能做的事情都被定义为一个&amp;#8220;接口&amp;#8221;，一个对象对外的能力就是由它的那些&amp;#8220;接口&amp;#8221;组成，至于它怎样做无关紧要。&amp;#8220;接口&amp;#8221;的编程思想就是站在&amp;#8220;功能组合&amp;#8221;的立场上看问题，而不是来自父类的&amp;#8220;功能继承&amp;#8221;。因此，对于&amp;#8220;接口&amp;#8221;思想来说，不管是基础功能的增加还是的扩展新功能，都是扩充一个接口而已，不再面对复杂的分支与层次结构。&lt;BR&gt;&lt;BR&gt;　　&amp;#8220;继承&amp;#8221;与&amp;#8220;组合&amp;#8221;仅仅是两种看问题的方式。如果你喜欢竖着看世界，你会发现世界是&amp;#8220;继承&amp;#8221;的。如果你喜欢横着看，你会发现世界是&amp;#8220;组合&amp;#8221;的。&lt;BR&gt;&lt;BR&gt;　　事实上，&amp;#8220;面向方面&amp;#8221;的思想就是横着看世界。&amp;#8220;面向方面&amp;#8221;是&amp;#8220;面向对象&amp;#8221;思想的延续，是对&amp;#8220;接口&amp;#8221;编程的一种理论总结。它把现实世界所有问题分解成需要解决的各个基本方面，即所谓的&amp;#8220;横向关切点&amp;#8221;。这些基本面的问题解决是相对独立的，而其组合起来就能解决全部问题。当发现个别问题还有需要进一步解决的问题，可以在个别的局部范围解决这个问题。而发现普遍要解决问题的时候，也可以给所有的对象增加另一个基本接口面而加以解决，但不会影响其他已经解决的各个方面。&lt;BR&gt;&lt;BR&gt;　　将来会不会有一种能够统一&amp;#8220;继承&amp;#8221;与&amp;#8220;组合&amp;#8221;的软件思想呢？我想肯定有！而且新的思想和理论肯定会很容易被人们理解，人们会发现世界原来如此，也本该如此！&lt;BR&gt;&lt;BR&gt;　　在此给大家探讨一个有趣的问题：&lt;BR&gt;&lt;BR&gt;　　继承的观点认为，所有自然数的祖先是１；然后，２和３是继承１的；但２和３是不同的；４具有２的特性，是从２继承的；５既没有２的特性也没有３的特性，是直接从１继承的；显然６继承了２和３的特性...&lt;BR&gt;&lt;BR&gt;　　组合的观点认为，任何自然数都含有１的成分，素数２、３、５、７是组成自然数的基本方面，其他的自然数都是由素数组合而成，所以称为合数。&lt;BR&gt;&lt;BR&gt;　　而大家都知道，任何自然数都可以因式分解为１与若干素数相乘。如果自然数B能被另一个自然数整A除，则表示B一定具有A的全部特征（继承思想），而构成A的质因子集合一定是构成B的质因子集合的子集（组合思想）。这是数论的最基本常识，从这里看问题是前面两种思想是统一的。&lt;BR&gt;&lt;BR&gt;　　值得注意的是，两种观点都承认１的重要性，而１就是几乎所有高级的面向对象语言中都存在的那个Object，不管你是否愿意它都存在。这就是Object存在的哲学依据！&lt;BR&gt;&lt;BR&gt;　　但愿将来一切软件思想都这么容易理解...&lt;BR&gt;&lt;BR&gt;　　今天是２００５年上班的第一天，在开始新一年的程序人生之前，仅以此文献给和我一样的所有程序员。&lt;/SPAN&gt;&lt;img src ="http://bigshrimp.cndev.org/aggbug/5442.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>网络处理器概述</title><link>http://bigshrimp.cndev.org/archive/2004/12/25/5147.aspx</link><pubDate>2004-12-25 23:40:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/12/25/5147.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/5147.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/12/25/5147.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/5147.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/5147.aspx</trackback:ping><description>如果你问Intel和AMD宣布的1GHz以上的PC处理器会用到哪里，那就让我告诉你最热的领域是&lt;BR&gt;网络和通信。5年以来，网络的传输速度每年翻一番，再快的处理器都不愁没地方用。&lt;BR&gt;&lt;BR&gt;由于有了光纤，传输媒介的速度已不成问题。但是，信息包(packet，在ATM中称为信元，即&lt;BR&gt;cell) 通过路由器和交换机时，对包处理的最低要求是确定每一个包的下一个目的地，在庞&lt;BR&gt;大的路由表中找到它的IP(Internet Protocol)地址，然后转发出去，而这一切必须在下一个&lt;BR&gt;包到达之前做完。障碍就出现在这里。&lt;BR&gt;&lt;BR&gt;为了应付日益繁忙的信息流，网络的速度在几年前是155Mb/s（SONET的OC-3标准），而现在&lt;BR&gt;已经到10Gb/s(OC-192)，2～3年内又会提高到40Gb/s(OC-768)。&lt;BR&gt;&lt;BR&gt;当速度比较慢时，通用的处理器完全赶得上数据流，因此并不需要专门的网络处理器(netwo&lt;BR&gt;rk processor)。后来，通用处理器不够快了，设计者就转向ASIC(专用集成电路)。&lt;BR&gt;&lt;BR&gt;ASIC在完成规定的处理工作方面是非常卓越的，但它有两个缺点：一是开发的周期太长，复&lt;BR&gt;杂的ASIC要18个月到2年时间。路由器或交换机要增加新的功能，制造商需要等待的时间太长&lt;BR&gt;；第二，ASIC不是可编程的，要修改就必须经历一个设计和制造的周期，适应不了当今越来&lt;BR&gt;越短的产品开发周期。&lt;BR&gt;&lt;BR&gt;直到1999年，还很少有人知道一种专门处理包的处理器，即网络处理器。它同通用的处理器&lt;BR&gt;的不同之处在于：网络处理器是为优化包处理而设计的，它将包以其到达的速度(即线速)送&lt;BR&gt;到下一个节点;而通用处理器则要处理范围很大的各种指令。另外，如果需要新的功能或新的&lt;BR&gt;标准，网络处理器可通过编程来实现，以满足各种各样的网络应用。&lt;BR&gt;&lt;BR&gt;对于网络处理器的计算能力的需求，不单取决于数据速率，还同如何处理这些数据有关。其&lt;BR&gt;中最简单的工作是根据包头部的信息确定将包送到哪里，按照ISO（国际标准组织）的OSI（&lt;BR&gt;互连开放系统）的７层协议模型，以上所说的地址解析和路由属于第2层到第4层。&lt;BR&gt;&lt;BR&gt;更复杂的处理，例如按用途的计费和负荷平衡等，要求处理器分析包负荷的内容，涉及同应&lt;BR&gt;用程序有关的数据管理和处理。例如，按用途的计费需要收集用户的信息，以处理帐单和对&lt;BR&gt;网络进行分析，处理器的工作包括监视登录以识别用户，检出登录信息，然后匹配用户的文&lt;BR&gt;件和收费政策表，并在负荷中找出关键字，这就属于OSI的第５到第７层协议了。&lt;BR&gt;&lt;BR&gt;网络处理器还刚刚在市场上露头，只有Intel的IXP1200和MMC(www.mmcnet.com)的用于1Gb/s&lt;BR&gt;以太网的nP7120建立了生产线。另有两种用于OC-48（2.5Gb/s）的网络处理器,即Vitesse(w&lt;BR&gt;ww.vitesse.com)的１Gb/s以太网处理器IQ2000和IBM的PowerNP NP4GS3，以及Agere System&lt;BR&gt;s(www.agere.com)的Payload Plus在2000年第四季度投产，因此去年只有少量的网络处理器&lt;BR&gt;产品在市场出售。&lt;BR&gt;&lt;BR&gt;有三家公司正在设计和开发用于10Gb/s和全部7层协议的网络处理器，即Xstream Logic(www&lt;BR&gt;.xstreamlogic.com)的动态多线程(DMS)处理器核，一家以色列的公司Ezchip(www.ezchip.c&lt;BR&gt;om)的NP-1，和Lexra(www.lexra.com)公司的NetVortex。&lt;BR&gt;&lt;BR&gt;Lexra公司既不生产也不销售以NetVortex为基础的片子，而是将NetVortex的知识产权出售给&lt;BR&gt;客户，让他们把NetVortex同他们自己的电路集成到更大的网络处理系统中，以适应性能和价&lt;BR&gt;格的目标。&lt;BR&gt;&lt;BR&gt;NetVortex结构的基础是Lexra公司的LX8000包处理核，这是一种32-bit的MIPS3000精减指令&lt;BR&gt;处理器(RISC)。16个LX8000可以通过高速总线相连接，形成一个多处理器系统，用这样的结&lt;BR&gt;构组成的原型系统可在10Gb/s速率下执行全部的７层网络协议，有的用户甚至用到OC-768(4&lt;BR&gt;0Gb/s)。&lt;BR&gt;&lt;BR&gt;在10Gb/s速率下执行７层协议的处理可不是一件轻而易举的事，在这种情况下，64Byte的包&lt;BR&gt;的处理时间只有12个时钟周期，这是很紧张的。&lt;BR&gt;&lt;BR&gt;Ezchip公司把10Gb/s网络处理器的功能划分为四，对每一种功能优化设计了一种处理器核，&lt;BR&gt;组成四级流水线。 NP-1一共有64个核，每一级流水线都有一些适当的处理器核。&lt;BR&gt;&lt;BR&gt;NP-1的数据的宽度256～512bit，而不是通用处理器用的32或64bit。&lt;BR&gt;&lt;BR&gt;然而，在OSI的高层处理包时，涉及持续地包存取和查找表搜索，所以即使有这样高度优化的&lt;BR&gt;处理器结构，存储器访问仍然是一个瓶颈。对于10Gb/s的处理器，需要500Gb/s的存储带宽和&lt;BR&gt;至少128MB的容量。因此Ezchip设计了高带宽的几兆字节片内动态RAM，和大容量的片外双倍&lt;BR&gt;速DRAM。Ezchip还有一种专利的高速搜索方法，使得从存储器中取出数据的时间减少约2/3。&lt;BR&gt;&lt;BR&gt;Ezchip原定于2001年2月推出它的NP-1，现已延迟到2001年6月，大量生产则要到2002年的上&lt;BR&gt;半年。2000年11月，IBM和Ezchip宣布，IBM将要用其0.18mm的ASIC技术生产NP-1样机，在批&lt;BR&gt;量生产时，改用0.12mm的铜互连技术。&lt;BR&gt;&lt;BR&gt;同Ezchip建立一种新的结构的做法不同，Xstream采用类似MIPS的结构。MIPS是在八十年代早&lt;BR&gt;期由斯坦福大学开发的处理器，它的指令集已相当普遍地用于现在的路由器、交换机之中，&lt;BR&gt;人们已经熟悉了MIPS指令，而且有许多开发工具可供采用，Xstream采用MIPS着眼点就在于M&lt;BR&gt;IPS指令已经为通信行业的设计者所普遍地接受这一点。&lt;BR&gt;&lt;BR&gt;但是，与通用的微处理器不同，网络处理器要求在OC-192的速率下执行复杂的OSI七层协议。&lt;BR&gt;为此Xstream开发了动态多线程（Dynamic Multi Streaming，DMS) 处理核和智能包管理单元&lt;BR&gt; （intelligent Packet Management Unit，PMU）。&lt;BR&gt;&lt;BR&gt;DMS使用户可以在一个时钟周期内安排8个线程，每个线程可以有４个指令。在这32个指令中&lt;BR&gt;，DMS保证在一个时钟周期内有至少６个指令同时执行，即IPC(Instruction Per Clock)&amp;gt;6，&lt;BR&gt;而PowerPC或Pentium的IPC仅稍大于1。PMU的工作则是把包存入存储器，或由存储器取出交给&lt;BR&gt;处理器，以最大限度地减轻处理器的负担。&lt;BR&gt;&lt;BR&gt;网络处理器正在得到一些大的半导体公司的注意，它们纷纷收购有专长的小企业。Vitesse在&lt;BR&gt;去年并购了Sitera(www.sitera.com)，一家开发了Prisma网络处理器的小公司。Broadcom(w&lt;BR&gt;ww.broadcom. Com)在2000年12月以20亿美元的巨资购买了从事网络处理器合成的公司SiByt&lt;BR&gt;e（www.sibyte.com，其网络处理器产品为Mercurian SB-1250）。Lucent Microelectronic&lt;BR&gt;s 先是在去年春购入了Agere(www.agere.com)，开发其Payload Plus，继之将其微电子业务&lt;BR&gt;连同Payload Plus和在一起成立一个新公司，名字仍叫Agere Systems。&lt;BR&gt;&lt;BR&gt;Motorola把C-Port 公司(www.cportcorp.com)的C-5处理器(由公司开发)其它通信和数字处理&lt;BR&gt;技术第三方的软件以及开发工具合成为网络系统的设计平台。这样，网络设备的制造公司如&lt;BR&gt;Cisco、Ericsson和Nortel就可以把Motorola的处理器同第三方的软件混合使用在它们的产品&lt;BR&gt;中，而不是样样都由这些公司自己设计。&lt;BR&gt;&lt;BR&gt;有人估计，网络处理器的产值将以每年60%的速度急速增长，到2004年达到29亿美元。到那时&lt;BR&gt;，网络处理器将出现在几乎每一台网络设备之中。&lt;BR&gt;&lt;img src ="http://bigshrimp.cndev.org/aggbug/5147.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>部分ADSL猫的IP和密码 </title><link>http://bigshrimp.cndev.org/archive/2004/12/08/4843.aspx</link><pubDate>2004-12-08 17:31:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/12/08/4843.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4843.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/12/08/4843.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4843.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4843.aspx</trackback:ping><description>&lt;H2&gt;&lt;A id=viewpost.ascx_TitleUrl href="http://blog.csdn.net/murc/archive/2004/10/14/137124.aspx"&gt;部分ADSL猫的IP和密码&lt;/A&gt; &lt;/H2&gt;
&lt;P&gt;TCL&lt;BR&gt;192.168.1.1&lt;BR&gt;root:root&lt;/P&gt;
&lt;P&gt;艾玛 701g&lt;BR&gt;192.168.101.1&amp;nbsp; 192.168.0.1&lt;BR&gt;用户名：admin&amp;nbsp;&amp;nbsp; 密码：admin&lt;BR&gt;用户名：SZIM&amp;nbsp;&amp;nbsp;&amp;nbsp; 密码：SZIM&lt;/P&gt;
&lt;P&gt;艾玛701H&lt;BR&gt;192.168.1.1&amp;nbsp;&amp;nbsp; 10.0.0.2&lt;BR&gt;用户名：admin 密码：epicrouter&lt;/P&gt;
&lt;P&gt;实达2110EH ROUTER&lt;BR&gt;192.168.10.1&lt;BR&gt;用户名：user&amp;nbsp;&amp;nbsp;&amp;nbsp; 密码：password&lt;BR&gt;用户名：root&amp;nbsp;&amp;nbsp;&amp;nbsp; 密码：grouter&lt;/P&gt;
&lt;P&gt;神州数码/华硕：&lt;BR&gt;用户名：adsl 密码：adsl1234&lt;/P&gt;
&lt;P&gt;全向：&lt;BR&gt;用户名：root 密码：root&lt;/P&gt;
&lt;P&gt;普天：&lt;BR&gt;用户名：admin 密码：dare&lt;/P&gt;
&lt;P&gt;e-tek&lt;BR&gt;用户名:admin 密码:12345&lt;/P&gt;
&lt;P&gt;zyxel&lt;BR&gt;用户名:anonymous&amp;nbsp;&amp;nbsp; 密码:1234&lt;/P&gt;
&lt;P&gt;北电&lt;BR&gt;用户名:anonymous&amp;nbsp;&amp;nbsp; 密码:12345&lt;/P&gt;
&lt;P&gt;大恒&lt;BR&gt;用户名：admin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 密码：admin&lt;/P&gt;
&lt;P&gt;大唐&lt;BR&gt;用户名：admin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 密码：1234&lt;/P&gt;
&lt;P&gt;斯威特&lt;BR&gt;用户名：root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 密码：root&lt;BR&gt;用户名：user&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 密码：user&lt;BR&gt;中兴&lt;/P&gt;
&lt;P&gt;用户名：adsl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 密码：adsl831 (中兴的adsl的密码前面为adsl，后面为型号,比如中兴831，密码就是adsl831)&lt;/P&gt;
&lt;P&gt;1、全向QL1680 IP地址10.0.0.2，用户名：admin，密码：qxcomm1680，管理员密码：qxcommsupport。全向&lt;BR&gt;QL1880 IP地址192.168.1.1，用户名：root，密码：root 全向QL1688 IP地址10.0.0.2，用户名为admin；密码为qxcomm1688 &lt;BR&gt;2、TP-LINK TD-8800在IE输入192.168.1.1,户名admin,密码admin&lt;BR&gt;3、合勤zyxel 642 在运行输入telnet 192.168.1.1 密码1234 &lt;BR&gt;4、Ecom ED-802EG 在IE输入192.168.1.1，用户名和密码都为root &lt;BR&gt;5、神州数码6010RA，在IE输入192.168.1.1用户名为ADSL，密码为ADSL1234&lt;BR&gt;6、华为SmartAX MT800的初始IP是192.168.1.1，用户名和密码都为ADMIN，恢复默认配置的方法有两种，一种是连续按MODEM背后的RESET键三次，另一种是在配置菜单的SAVE&amp;amp;REBOOT里选择恢复默认配置。 &lt;BR&gt;7、伊泰克：IP：192.168.1.1 用户名：supervisor 密码：12345 &lt;BR&gt;8、华硕IP：192.168.1.1 用户名：adsl 密码：adsl1234 &lt;BR&gt;9、阿尔卡特 192.168.1.1 一般没有密码 &lt;BR&gt;10、同维DSL699E 192.168.1.1 用户名：ROOT 密码：ROOT &lt;BR&gt;11、大亚DB102 192.168.1.1 用户名：admin 密码：dare 高级设置://192.168.1.1/doc/index1.htm &lt;BR&gt;12、WST的RT1080 192.168.0.1 username:root password:root &lt;BR&gt;13、WST的ART18CX 10.0.0.2 username:admin password:conexant username:user password:password &lt;BR&gt;14、实达V3.2root root V5.4root grouter &lt;BR&gt;15、泛德admin conexant &lt;BR&gt;16、东信Ea700 192.168.1.1用户名：空 密码：password &lt;BR&gt;17、broadmax的hsa300a 192.168.0.1 username:broadmax password:broadmax &lt;BR&gt;18、长虹ch-500E 192.168.1.1 username:root password:root &lt;BR&gt;19、重庆普天CP ADSL03 192.168.1.1 username:root password:root &lt;BR&gt;20、台湾突破EA110 RS232:38400 192.168.7.1 username:DSL psw:DSL &lt;BR&gt;21、etek-td的ADSL_T07L006.0 192.168.1.1 User Name: supervisor&lt;BR&gt;Password: 12345 忘记密码的解决办法： 使用超级终端的Xmodem方式重写Vxworks.dlf，密码恢复成：12345 22、GVC的DSL-802E/R3A 10.0.0.2 username:admin password:epicrouter username:user password:password&lt;BR&gt;23、科迈易通km300A-1 192.168.1.1 username: password:password 科迈易通km300A-G 192.168.1.1 username:root password:root 科迈易通km300A-A 192.168.1.1 username:root or admin password:123456&lt;BR&gt;24、sunrise的SR-DSL-AE 192.168.1.1 username:admin password:0000 sunrise的DSL-802E_R3A 10.0.0.2 username:admin password:epicrouter username:user password:password &lt;/P&gt;
&lt;P&gt;25、UTStar的ut-300R 192.168.1.1 username:root or admin password:utstar 这些都是一些ADSL设奋的出厂时的默认初始IP，用户名和密码，是要调试这些设奋时必须要知道的东西。 一般调试这些设奋有三种方法，一种是最常见的WEB方法，就是在浏览器中填入设奋的IP，如QX1680，就是在浏览器地址栏输入10.0.0.2，出现提示栏后，输入用户名admin，密码qxcommsupport,就可以管理员设置界面了。最常见和最简单的就是这种方法。 第二种方法就是用TELNET的方法，telnet IP,如早期的合勤642，方法telnet 192.168.1.1,然后输入密码1234,就可以进入全英文的字符界面了。 第三种方法就是用厂商自带的配置程序来进入配置界面，如CyberLink 6307/6309KG 它使用在随Cybrlink 6307/6309KG带的光盘中DSLCom.exe， 出厂时默认值：路由IP地址 :1 92.168.1.1密码 : stm，由于这种方法没有前两种方法方便，所以现在的低端产品比较少采用了。 绝大部分产品的调试都是要先通过产品自带的双绞线连接设奋后，把本机网卡的IP设置成跟该设奋同一网段，再进行配置，如设奋被改了默认的IP或者密码，大部分都可以通过复位来恢复出厂默认值。最常用也是最有用的方法就是把设奋断电后，一直按住复位键，然后通电，持续一小段时间后就可以恢中达通CT-500 192.168.1.1 root/12345 &lt;BR&gt;26.中兴adsl841默认IP：192.168.1.1，UserName：admin，Password：private&lt;/P&gt;
&lt;P&gt;成都天逸&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 用户名：admin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 密码：epicrouter&lt;/P&gt;
&lt;P&gt;上海中达&amp;nbsp;&amp;nbsp;&amp;nbsp; 用户名：（随意）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 密码：12345&lt;/P&gt;&lt;img src ="http://bigshrimp.cndev.org/aggbug/4843.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>ADOQuery override 的 iprovidersupport </title><link>http://bigshrimp.cndev.org/archive/2004/12/03/4796.aspx</link><pubDate>2004-12-03 20:21:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/12/03/4796.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4796.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/12/03/4796.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4796.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4796.aspx</trackback:ping><description>&lt;P&gt;该死的DBISAM不支持iprovider ,去论坛上看,居然说早就知道这个问题,但最近太忙,没时间实现,faint...&lt;/P&gt;
&lt;P&gt;正好要用到clientdataset 只好仿照ADOQuery 来实现接口的部分过程.&lt;/P&gt;
&lt;P&gt;adoQuery override 的 接口函数&lt;/P&gt;
&lt;P&gt;procedure PSEndTransaction(Commit: Boolean); override;&lt;BR&gt;procedure PSExecute; override;&lt;BR&gt;function PSExecuteStatement(const ASQL: string; AParams: TParams; ResultSet: Pointer = nil): Integer; override;&lt;BR&gt;procedure PSGetAttributes(List: TList); override;&lt;BR&gt;function PSGetDefaultOrder: TIndexDef; override;&lt;BR&gt;function PSGetKeyFields: string; override;&lt;BR&gt;function PSGetParams: TParams; override;&lt;BR&gt;function PSGetQuoteChar: string; override;&lt;BR&gt;function PSGetTableName: string; override;&lt;BR&gt;function PSGetIndexDefs(IndexTypes: TIndexOptions = [ixPrimary..ixNonMaintained]): TIndexDefs; override;&lt;BR&gt;function PSGetUpdateException(E: Exception; Prev: EUpdateError): EUpdateError; override;&lt;BR&gt;function PSInTransaction: Boolean; override;&lt;BR&gt;function PSIsSQLBased: Boolean; override;&lt;BR&gt;function PSIsSQLSupported: Boolean; override;&lt;BR&gt;procedure PSReset; override;&lt;BR&gt;procedure PSSetParams(AParams: TParams); override;&lt;BR&gt;procedure PSSetCommandText(const CommandText: string); override;&lt;BR&gt;procedure PSStartTransaction; override;&lt;BR&gt;function PSUpdateRecord(UpdateKind: TUpdateKind; Delta: TDataSet): Boolean; override;&lt;/P&gt;&lt;img src ="http://bigshrimp.cndev.org/aggbug/4796.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>解决intraweb7.x在delphi 7下安装帮助文件后无法按F1导向的问题．</title><link>http://bigshrimp.cndev.org/archive/2004/12/03/4784.aspx</link><pubDate>2004-12-03 12:38:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/12/03/4784.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4784.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/12/03/4784.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4784.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4784.aspx</trackback:ping><description>其实很简单，安装完index content link后，记得把borland delphi help目录下的d7.gid删除掉．&lt;img src ="http://bigshrimp.cndev.org/aggbug/4784.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>如何在“长城”里正常的访问google!!!</title><link>http://bigshrimp.cndev.org/archive/2004/12/02/4773.aspx</link><pubDate>2004-12-02 17:43:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/12/02/4773.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4773.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/12/02/4773.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4773.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4773.aspx</trackback:ping><description>&lt;P&gt;首先简单介绍下长城的工作原理。&lt;/P&gt;
&lt;P&gt;在每个isp的核心交换机的镜象端口上都有一台到几台协议分析器，负责检查一些敏感协议请求，例如http等，根据一个庞大的规则库和网址库来分析请求内容的合法性... 发现非法访问，log 并快速的伪装成被访问主机发一个Reset包来切断TCP连接。&lt;/P&gt;
&lt;P&gt;大家都知道google的cache 和newsgroup 是被禁止的重点，可一个好好的google就被阉割成半个了。。尤其是寻找一些技术方面的资料newsgroup是非常有用的。不甘心啊。。。。&lt;/P&gt;
&lt;P&gt;还好网络是开放的，有墙就会有漏洞。。。&lt;/P&gt;
&lt;P&gt;访问cache的方法&lt;/P&gt;
&lt;P&gt;&lt;A href="http://google.7766.org/"&gt;http://google.7766.org/&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.myway.com"&gt;http://www.myway.com&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;访问新闻组的方法&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;A href="http://groups-beta.google.com/"&gt;http://groups-beta.google.com/&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;好了，不知道能用多久，先凑活着用吧。。。&lt;/P&gt;&lt;img src ="http://bigshrimp.cndev.org/aggbug/4773.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>Acronis True Image 真的很好用</title><link>http://bigshrimp.cndev.org/archive/2004/12/01/4754.aspx</link><pubDate>2004-12-01 21:13:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/12/01/4754.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4754.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/12/01/4754.aspx#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4754.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4754.aspx</trackback:ping><description>&lt;P&gt;能够在windows启动时按F11进入管理&lt;/P&gt;
&lt;P&gt;能够建立一个隐藏的分区来备份&lt;/P&gt;
&lt;P&gt;支持增量备份&lt;/P&gt;
&lt;P&gt;可以把备份文件虚拟成逻辑磁盘&lt;/P&gt;
&lt;P&gt;尤其是可以建立可以启动的修复光盘&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;反正是不错啊....比Ghost强,就是备份时感觉有点慢....&lt;/P&gt;&lt;img src ="http://bigshrimp.cndev.org/aggbug/4754.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>delphi 2005的版本</title><link>http://bigshrimp.cndev.org/archive/2004/11/23/4676.aspx</link><pubDate>2004-11-23 16:49:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/11/23/4676.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4676.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/11/23/4676.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4676.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4676.aspx</trackback:ping><description>&lt;P&gt;最近delphi 2005网上流传的版本太多了,主要有几个&lt;/P&gt;
&lt;P&gt;borland网站上的trial版本 ---缺source &lt;/P&gt;
&lt;P&gt;3cd ShockISO ----缺大量帮助文件...&lt;/P&gt;
&lt;P&gt;RIP 687M ---好象是最全的一个了吧...仍然缺了不少帮助文件&lt;/P&gt;
&lt;P&gt;网上传的一个147M的,缺的更多,第三方都没有了...&lt;/P&gt;&lt;img src ="http://bigshrimp.cndev.org/aggbug/4676.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>delphi 2005 彩旦</title><link>http://bigshrimp.cndev.org/archive/2004/11/22/4664.aspx</link><pubDate>2004-11-22 18:32:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/11/22/4664.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4664.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/11/22/4664.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4664.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4664.aspx</trackback:ping><description>&lt;P&gt;&lt;IMG style="BORDER-RIGHT: black 2px solid; BORDER-TOP: black 2px solid; BORDER-LEFT: black 2px solid; WIDTH: 320px; BORDER-BOTTOM: black 2px solid; HEIGHT: 240px" alt=delphi2005 src="/images/cndev_org/bigshrimp/493/r_DELPHI2005.JPG"&gt;&lt;/P&gt;
&lt;P&gt;一个发蛋打名字的游戏,结束时出现corbin的照片还有他的树屋主页&lt;A href="http://www.corbinstreehouse.com/"&gt;http://www.corbinstreehouse.com/&lt;/A&gt;还有&lt;A href="http://www.bluetreesoft.com/"&gt;http://www.bluetreesoft.com/&lt;/A&gt;的宣传页面... &lt;/P&gt;&lt;img src ="http://bigshrimp.cndev.org/aggbug/4664.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>delphi 2005 for Windows 架构版 (已注册)</title><link>http://bigshrimp.cndev.org/archive/2004/11/20/4648.aspx</link><pubDate>2004-11-20 23:27:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/11/20/4648.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4648.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/11/20/4648.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4648.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4648.aspx</trackback:ping><description>&lt;P&gt;&lt;IMG alt=delphi2005 src="/images/cndev_org/bigshrimp/493/r_未标题-2.jpg"&gt;&lt;/P&gt;
&lt;P&gt;安装完从borland下的trial版本后,利用&lt;A href="http://down.playicq.com:81/tools/2004112212002129612.rar"&gt;keygen&lt;/A&gt;&lt;/P&gt;来完成注册.&lt;img src ="http://bigshrimp.cndev.org/aggbug/4648.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>webserver的错误捕捉和类型</title><link>http://bigshrimp.cndev.org/archive/2004/11/20/4641.aspx</link><pubDate>2004-11-20 16:49:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/11/20/4641.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4641.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/11/20/4641.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4641.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4641.aspx</trackback:ping><description>&lt;P&gt;异常类型:&lt;/P&gt;
&lt;P&gt;1.前台导向类&lt;/P&gt;
&lt;P&gt;程序可通过try except块来捕捉,根据异常handle来判断程序处理.通过生成错误导向页面来引导用户处理.&lt;/P&gt;
&lt;P&gt;2.后台异常类&lt;/P&gt;
&lt;P&gt;后台程序出现可预知的错误,通过try except块来捕捉,根据异常handle来判断程序处理,运行时log到指定文件.&lt;/P&gt;
&lt;P&gt;3.后台无法预料的错误&lt;/P&gt;
&lt;P&gt;用madshiExcept捕捉后让用户选择处理方式.&lt;/P&gt;&lt;img src ="http://bigshrimp.cndev.org/aggbug/4641.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>delphi  下 用assert 来完成错误的捕捉.</title><link>http://bigshrimp.cndev.org/archive/2004/11/20/4640.aspx</link><pubDate>2004-11-20 16:18:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/11/20/4640.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4640.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/11/20/4640.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4640.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4640.aspx</trackback:ping><description>&lt;DIV class=postText&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Assert&amp;nbsp; 过程原形&lt;BR&gt;[code]procedure Assert (expr :Boolean [; const msg: string]);[/code]&lt;BR&gt;在system.pas 里 Assert 的实现是:&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;B&gt;procedure &lt;/B&gt;_Assert(&lt;B&gt;const Message&lt;/B&gt;, Filename: AnsiString; LineNumber: Integer);
&lt;/FONT&gt;&lt;I&gt;&lt;FONT size=2&gt;{$IFDEF PUREPASCAL}
&lt;/FONT&gt;&lt;/I&gt;&lt;FONT size=2&gt;&lt;B&gt;begin
  if &lt;/B&gt;Assigned(AssertErrorProc) &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;B&gt;then
    &lt;/B&gt;AssertErrorProc(&lt;B&gt;Message&lt;/B&gt;, Filename, LineNumber, Pointer(-1))
  &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;B&gt;else
    &lt;/B&gt;Error(reAssertionFailed);  &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;I&gt;// loses return address
&lt;/I&gt;&lt;B&gt;end&lt;/B&gt;;
&lt;/FONT&gt;&lt;I&gt;&lt;FONT size=2&gt;{$ELSE}
&lt;/FONT&gt;&lt;/I&gt;&lt;FONT size=2&gt;&lt;B&gt;asm
        &lt;/B&gt;PUSH    EBX
{$IFDEF PIC}
        PUSH    EAX
        PUSH    ECX
        CALL    GetGOT
        MOV     EBX, EAX
        MOV     EAX, [EBX].AssertErrorProc
        CMP     [EAX], 0
        POP     ECX
        POP     EAX
{$ELSE}
        CMP     AssertErrorProc,0
{$ENDIF}
        JNZ     @@1
        MOV     AL,reAssertionFailed
        CALL    Error
        JMP     @@exit
@@1:    PUSH    [ESP+4].Pointer
{$IFDEF PIC}
        MOV     EBX, [EBX].AssertErrorProc
        CALL    [EBX]
{$ELSE}
        CALL    AssertErrorProc
{$ENDIF}
@@exit:
        POP     EBX
&lt;B&gt;end&lt;/B&gt;;
&lt;/FONT&gt;&lt;I&gt;&lt;FONT size=2&gt;{$ENDIF}
&lt;/FONT&gt;&lt;/I&gt;&lt;/FONT&gt;
&lt;/CODE&gt;&lt;/PRE&gt;&lt;/B&gt;&lt;/FONT&gt;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;可以看出AssertErrorProc() 是没有初值的,通过对其赋值可以定义自己的Assert处理过程,另如果未对AssertErrorProc赋值,将调用Error()处理过程来做为异常处理.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;TAssertErrorProc = procedure (const Message, Filename: string;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LineNumber: Integer; ErrorAddr: Pointer);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;{$ASSERTIONS OFF/ON} 开关来决定Assert是否被调用.可以在project-option-complier里设置.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;这样就可以在beta或debug版本是打开,而最终发布时关闭调试输出了.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;一个简单的AssertErrorProc 例程:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;unit AssertLogs;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;interface&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;implementation&lt;BR&gt;uses&lt;BR&gt;&amp;nbsp; Windows,&lt;BR&gt;&amp;nbsp; SysUtils;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;var&lt;BR&gt;&amp;nbsp; runErrMsg : String;&lt;BR&gt;&amp;nbsp; oldAssertErrorProc : TAssertErrorProc;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;procedure LogAssert(const Message, Filename: string; LineNumber: Integer; ErrorAddr: Pointer);&lt;BR&gt;begin&lt;BR&gt;&amp;nbsp; runErrMsg := format('Error: %s, Addr: %p, in file(%d): %s ',&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Message, ErrorAddr, LineNumber, FileName]);&lt;BR&gt;&amp;nbsp; if IsConsole then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Writeln(runErrMsg)&lt;BR&gt;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox(0, pChar(runErrMsg), 'Error Log by AssertLogs', 0);&lt;BR&gt;end;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;initialization&lt;BR&gt;&amp;nbsp; oldAssertErrorProc := AssertErrorProc;&lt;BR&gt;&amp;nbsp; AssertErrorProc := @LogAssert;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;finalization&lt;BR&gt;&amp;nbsp; AssertErrorProc := oldAssertErrorProc;&lt;BR&gt;end.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;*************************************&lt;BR&gt;那么在output debug信息时只需要:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Assert(false,outputstring);&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;img src ="http://bigshrimp.cndev.org/aggbug/4640.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>delphi 2005 Architect Trial 开始提供下载</title><link>http://bigshrimp.cndev.org/archive/2004/11/20/4638.aspx</link><pubDate>2004-11-20 14:47:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/11/20/4638.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4638.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/11/20/4638.aspx#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4638.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4638.aspx</trackback:ping><description>&lt;A href="http://www.borland.com/products/downloads/download_delphi.html"&gt;http://www.borland.com/products/downloads/download_delphi.html&lt;/A&gt;#&lt;img src ="http://bigshrimp.cndev.org/aggbug/4638.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>错误定义</title><link>http://bigshrimp.cndev.org/archive/2004/11/19/4629.aspx</link><pubDate>2004-11-19 22:52:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/11/19/4629.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4629.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/11/19/4629.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4629.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4629.aspx</trackback:ping><description>&lt;P&gt;EWebserverError = Class Exception&lt;/P&gt;&lt;img src ="http://bigshrimp.cndev.org/aggbug/4629.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>吃得很胖的虾</dc:creator><title>我的开发环境</title><link>http://bigshrimp.cndev.org/archive/2004/11/19/4625.aspx</link><pubDate>2004-11-19 15:11:00Z</pubDate><guid>http://bigshrimp.cndev.org/archive/2004/11/19/4625.aspx</guid><wfw:comment>http://bigshrimp.cndev.org/comments/4625.aspx</wfw:comment><comments>http://bigshrimp.cndev.org/archive/2004/11/19/4625.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://bigshrimp.cndev.org/comments/commentRss/4625.aspx</wfw:commentRss><trackback:ping>http://bigshrimp.cndev.org/services/trackbacks/4625.aspx</trackback:ping><description>&lt;P&gt;开发工具: delphi 7 Enterprise &lt;BR&gt;Web : Intraweb 7.1.12 For Delphi&lt;BR&gt;IDE : Castalia3 ,CnPack&lt;BR&gt;第三方控件: madshi Collection&lt;/P&gt;&lt;img src ="http://bigshrimp.cndev.org/aggbug/4625.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>