<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feeds.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feeds.feedsky.com/csdn.net/hejishan" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feeds.feedsky.com/csdn.net/hejishan" type="application/rss+xml"></fs:self_link><lastBuildDate>Tue, 10 Jun 2008 12:52:00 GMT</lastBuildDate><title>.NET博文收藏</title><link>http://blog.csdn.net/hejishan/</link><item><title>RemObject解决自动生成代码的想法.</title><link>http://blog.csdn.net/hejishan/archive/2008/06/10/2530376.aspx</link><wfw:comment>http://blog.csdn.net/hejishan/comments/2530376.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/hejishan/comments/commentRss/2530376.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2530376</trackback:ping><description>               用过DELPHI写过多层框架的,可能能RemObject比较熟悉. RemObjects Service Builder 自动生成代码的同时,也给我们带来困扰. 每个类都要定义在intf文件里, 接口只有一个, 这些显然对我们开发系统来讲, 支持的不够, 我想使用多个接口,也不想没完没了的定义结构.              前一段时间写了一个自动生成元数据的小工具,  可以和界面StringGrid和控件自动绑定,实现数据集的效果,而且在客户端完全放弃了数据集, 使用纯对象,  自己觉得还算不错. 然而在传输的时候, 我又想使用RemObject支持序列化的功能.  这个问题如何解决呢?   &amp;n&lt;img src =&quot;http://blog.csdn.net/hejishan/aggbug/2530376.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/hejishan/264017344/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/hejishan/264017344/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2008 20:52:00 +0800</pubDate><author>itkbase</author><comments>http://blog.csdn.net/hejishan/archive/2008/06/10/2530376.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/hejishan/archive/2008/06/10/2530376.aspx</guid><dc:creator>itkbase</dc:creator><fs:srclink>http://blog.csdn.net/hejishan/archive/2008/06/10/2530376.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hejishan/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/hejishan/~6068058/264017344/4175853</fs:itemid></item><item><title>远程调用技术代码追踪(webservice)</title><link>http://blog.csdn.net/hejishan/archive/2008/06/10/2530377.aspx</link><wfw:comment>http://blog.csdn.net/hejishan/comments/2530377.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/hejishan/comments/commentRss/2530377.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2530377</trackback:ping><description> 最近阅读了SocketConn的源码和WebService 的源码，把追踪的过程写了下来，方便大家学习。毕竟这需要精力，时间和毅力。感谢煮茶待英雄博志区和三层数据库讨论区兄弟们的支持，特别是julian兄弟，不是他，我可能没耐心继续下去。如果有时间，大家可以继续完善。从socket和Websevice的底层实现细节，我们发现BORLAND的工程师们的构思和实现的过程。我觉得这对我们的学习应该是非常重要的。学会思考。学会读源码，学会分析。希望和我交往的朋友可通过QQ或Email联系我。Wu_yanan2003@yahoo.com.cn另见：《远程调用技术代码追踪(socket) 》关注我的：《远程调用技术代码追踪(第三方控件) 》   远程调用技术内幕有关WebService的相关的知识，我就不说了，我直接分析源码。有问题的地方请参考李维的书。initializationInvRegistry.RegisterInterface(TypeInfo(IMyFirstWS), 'urn:MyFirstWSIntf-IMyFirstWS', 'ut&lt;img src =&quot;http://blog.csdn.net/hejishan/aggbug/2530377.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/hejishan/264017345/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/hejishan/264017345/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2008 20:52:00 +0800</pubDate><author>itkbase</author><comments>http://blog.csdn.net/hejishan/archive/2008/06/10/2530377.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/hejishan/archive/2008/06/10/2530377.aspx</guid><dc:creator>itkbase</dc:creator><fs:srclink>http://blog.csdn.net/hejishan/archive/2008/06/10/2530377.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hejishan/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/hejishan/~6068058/264017345/4175853</fs:itemid></item><item><title>远程调用技术代码追踪(Remobjects第三方控件)</title><link>http://blog.csdn.net/hejishan/archive/2008/06/10/2530379.aspx</link><wfw:comment>http://blog.csdn.net/hejishan/comments/2530379.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/hejishan/comments/commentRss/2530379.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2530379</trackback:ping><description>   远程调用技术内幕在前面我已经分析了socket和webservice的代码追踪。现在总结一下：三层架构的运作模型：1. BizSnap与.NET Remoting 的Server端运作模式  当Client 将Request 送达Server端后，会经过一个Message Dispatcher机制，这个机制大多是几个重要的组件合作完成，主要在于解出Request中对于所要求对象的描述，以及欲呼叫的方法等信息，有了这些信息后Dispatcher就可以找到对应的对象与方法，接着就开始了呼叫动作，由于Request 是SOAP讯息格式，并不能直接用来呼叫对象的方法，因此得先将SOAP讯息转化为Stack(堆栈)，完成这个转换动作后就到了这种处理模式中的核心概念了，也就是建立起目的对象并呼叫对应的方法，这个动作非常依赖前面的Message To Stack程序，因为这个程序会将SOAP讯息转化为Stack，有了Stack之后Push Stack and Call Method 动作才能正确的执行，那么如何呼叫目的方法呢?很简单，只要利用该语言所&lt;img src =&quot;http://blog.csdn.net/hejishan/aggbug/2530379.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/hejishan/264017346/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/hejishan/264017346/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2008 20:52:00 +0800</pubDate><author>itkbase</author><comments>http://blog.csdn.net/hejishan/archive/2008/06/10/2530379.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/hejishan/archive/2008/06/10/2530379.aspx</guid><dc:creator>itkbase</dc:creator><fs:srclink>http://blog.csdn.net/hejishan/archive/2008/06/10/2530379.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hejishan/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/hejishan/~6068058/264017346/4175853</fs:itemid></item><item><title>远程调用技术代码追踪(socket)</title><link>http://blog.csdn.net/hejishan/archive/2008/06/10/2530381.aspx</link><wfw:comment>http://blog.csdn.net/hejishan/comments/2530381.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/hejishan/comments/commentRss/2530381.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2530381</trackback:ping><description>  远程调用技术内幕聊聊远程调用的相应技术。微软的模型是rpc, DCOM的封包就是OleVariant型的。经常听到有人说OleVariant的效率不高，其实MIDAS就是采用这种封包的。有人问方法的调用，秘密都在IAppServer这个接口里。 客户端要想调用服务器端的方法是需要代理DLL，和存根DLL的。具体的可以参考COM原理。进程内的就不说了，因为同一个地址空间，它可以通过指针去访问的。主要说说进程外的实现，这也是我们比较感兴趣的。为什么需要代理DLL和存根DLL，这是由于，不同物理空间的两台机器。对它们来讲，地址是没有用的。 从A机到B机通过COM传一个字符串，整型，都比较容易。那么对象怎么办呢。 大家知道，传递对象，其实就是传递指针而已。即然地址对两台机器而言，已经失去了意义。那么需要有一种机制把A机的数据包，发到B机，B机能解释，返回一模一样的内存空间出来。 比如： A要调B机器类的一个方法，怎么做？A机器要模访B机器的内存空间。 A就傻BB的把参数压进去。就调用了，对A机而言。是完全透明的。 在DELPHI中，秘密&lt;img src =&quot;http://blog.csdn.net/hejishan/aggbug/2530381.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/hejishan/264017347/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/hejishan/264017347/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2008 20:52:00 +0800</pubDate><author>itkbase</author><comments>http://blog.csdn.net/hejishan/archive/2008/06/10/2530381.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/hejishan/archive/2008/06/10/2530381.aspx</guid><dc:creator>itkbase</dc:creator><fs:srclink>http://blog.csdn.net/hejishan/archive/2008/06/10/2530381.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hejishan/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/hejishan/~6068058/264017347/4175853</fs:itemid></item><item><title>Overlapped模型深入分析(原理篇)</title><link>http://blog.csdn.net/hejishan/archive/2008/06/10/2530383.aspx</link><wfw:comment>http://blog.csdn.net/hejishan/comments/2530383.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/hejishan/comments/commentRss/2530383.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2530383</trackback:ping><description>  Overlapped I/O模型深入分析简述：     Overlapped I/O也称Asynchronous  I/O，异步I/O模型。异步I/O和同步I/O不同，同步I/O时，程序被挂起，一直到I/O处理完，程序才能获得控制。异步I/O，调用一个函数告诉OS，进行I/O操作，不等I/O结束就立即返回，继续程序执行，操作系统完成I/O之后，通知消息给你。Overlapped I/O只是一种模型，它可以由内核对象(hand)，事件内核对象(hEvent), 异步过程调用(apcs) 和完成端口(I/O completion)实现。 Overlapped I/O的设计的目的：     取代多线程功能，（多线程存在同步机制，错误处理，在成千上万个线程I/O中，线程上下文切换是十分消耗CPU资源的）。     Overlapped I/O模型是OS为你传递数据，完成上下文切换，在处理完之后通知你。由程序中的处理，变为OS的处&lt;img src =&quot;http://blog.csdn.net/hejishan/aggbug/2530383.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/hejishan/264017348/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/hejishan/264017348/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2008 20:52:00 +0800</pubDate><author>itkbase</author><comments>http://blog.csdn.net/hejishan/archive/2008/06/10/2530383.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/hejishan/archive/2008/06/10/2530383.aspx</guid><dc:creator>itkbase</dc:creator><fs:srclink>http://blog.csdn.net/hejishan/archive/2008/06/10/2530383.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hejishan/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/hejishan/~6068058/264017348/4175853</fs:itemid></item><item><title>传奇源码分析-客户端(全局变量与总体执行流程)</title><link>http://blog.csdn.net/hejishan/archive/2008/06/10/2530367.aspx</link><wfw:comment>http://blog.csdn.net/hejishan/comments/2530367.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/hejishan/comments/commentRss/2530367.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2530367</trackback:ping><description>  客户端：传奇的客户端源代码有两个工程，WindHorn和Mir2Ex。先剖析一下WindHorn工程。1．CWHApp、CWHWindow和CWHDXGraphicWindow。Window程序窗口的创建。          CWHApp派生CWHWindow，CWHWindow又派生CWHDXGraphicWindow。CWHWindow类           中完成窗口的注册和创建。CWHDXGraphicWindow调用CWHWindow完成创建窗口功能，然后再调用CreateDXG()来初始化DirectX。 2．CWHDefProcess派生出CloginProcess、CcharacterProcess、CgameProcess三个类。    这三个类是客户端处理的核心类。3. 全局变量:   CWHDXGraphicW&lt;img src =&quot;http://blog.csdn.net/hejishan/aggbug/2530367.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/hejishan/264017349/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/hejishan/264017349/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2008 20:51:00 +0800</pubDate><author>itkbase</author><comments>http://blog.csdn.net/hejishan/archive/2008/06/10/2530367.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/hejishan/archive/2008/06/10/2530367.aspx</guid><dc:creator>itkbase</dc:creator><fs:srclink>http://blog.csdn.net/hejishan/archive/2008/06/10/2530367.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hejishan/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/hejishan/~6068058/264017349/4175853</fs:itemid></item><item><title>传奇源码分析-客户端(WindHorn简述和传奇文件格式分析)</title><link>http://blog.csdn.net/hejishan/archive/2008/06/10/2530369.aspx</link><wfw:comment>http://blog.csdn.net/hejishan/comments/2530369.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/hejishan/comments/commentRss/2530369.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2530369</trackback:ping><description>   DirectX类库分析(WindHorn)： 1.     RegHandler.cpp 注册表访问(读写)。2.     CWHApp派生CWHWindow，CWHWindow完成窗口的注册和创建。CWHWindow派生出CWHDXGraphicWindow,CWHDXGraphicWindow调用CWHWindow完成创建窗口功能，然后再调用CreateDXG()来初始化DirectX。3.     WHDefProcess.cpp在构造函数中获得CWHDXGraphicWindow句柄。                  Clear函数中调用在后台缓存上进行绘图操作，换页至屏幕。    ShowStatus函数,显示状态信息。&lt;img src =&quot;http://blog.csdn.net/hejishan/aggbug/2530369.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/hejishan/264017350/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/hejishan/264017350/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2008 20:51:00 +0800</pubDate><author>itkbase</author><comments>http://blog.csdn.net/hejishan/archive/2008/06/10/2530369.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/hejishan/archive/2008/06/10/2530369.aspx</guid><dc:creator>itkbase</dc:creator><fs:srclink>http://blog.csdn.net/hejishan/archive/2008/06/10/2530369.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hejishan/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/hejishan/~6068058/264017350/4175853</fs:itemid></item><item><title>传奇源码分析-序言</title><link>http://blog.csdn.net/hejishan/archive/2008/06/10/2530370.aspx</link><wfw:comment>http://blog.csdn.net/hejishan/comments/2530370.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/hejishan/comments/commentRss/2530370.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2530370</trackback:ping><description> 简述:     最近对高性能的服务器比较感兴趣，读过了DELPHI的Socker源码WebService及RemObject之后，高性能的服务器感兴趣。你可能需要的以下知识才能更好的读懂一个商业源码：1).SOCKET的I/O模型熟悉掌握。2).面向对象技术的熟悉掌握。3).Socket的API掌握。4).多线程技术等。5).一门熟悉的开发工具掌握,和多种语言的源码阅读能力。 我下的源码 LegendOfMir2_Server：共包含AdminCmd, DBSrv, GameGate, GameSvr,LoginGate, LoginSvr, SelGate七个工程文件。传奇的客户端源代码有两个工程，WindHorn和Mir2Ex。我分析的, 主要是VC SQL版本的, DELPHI翎风源码不做分析,  另外下载了乐都WIL编辑器和乐都MPA地图编辑器这些工具. 			&lt;img src =&quot;http://blog.csdn.net/hejishan/aggbug/2530370.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/hejishan/264017351/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/hejishan/264017351/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2008 20:51:00 +0800</pubDate><author>itkbase</author><comments>http://blog.csdn.net/hejishan/archive/2008/06/10/2530370.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/hejishan/archive/2008/06/10/2530370.aspx</guid><dc:creator>itkbase</dc:creator><fs:srclink>http://blog.csdn.net/hejishan/archive/2008/06/10/2530370.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hejishan/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/hejishan/~6068058/264017351/4175853</fs:itemid></item><item><title>水滴石穿C语言之可变参数问题</title><link>http://blog.csdn.net/hejishan/archive/2008/06/10/2530372.aspx</link><wfw:comment>http://blog.csdn.net/hejishan/comments/2530372.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/hejishan/comments/commentRss/2530372.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2530372</trackback:ping><description>作者： 楚云风             　　C语言中有一种长度不确定的参数，形如：&quot;…&quot;，它主要用在参数个数不确定的函数中，我们最容易想到的例子是printf函数。　　原型：int printf( const char *format [, argument]... );使用例：printf(&quot;Enjoy yourself everyday!n&quot;);printf(&quot;The value is %d!n&quot;, value); 　　这种可变参数可以说是C语言一个比较难理解的部分，这里会由几个问题引发一些对它的分析。　　注意：在C++中有函数重载（overload）可以用来区别不同函数参数的调用，但它还是不能表示任意数量的函数参数。　　问题：printf的实现　　请问，如何自己实现printf函数，如何处理其中的可变参数问题？ 答案与分析：　　在标准C语言中定义了一个头文件专门用来对付可变参数列表，它包含了一组宏，和&lt;img src =&quot;http://blog.csdn.net/hejishan/aggbug/2530372.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/hejishan/264017352/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/hejishan/264017352/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2008 20:51:00 +0800</pubDate><author>itkbase</author><comments>http://blog.csdn.net/hejishan/archive/2008/06/10/2530372.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/hejishan/archive/2008/06/10/2530372.aspx</guid><dc:creator>itkbase</dc:creator><fs:srclink>http://blog.csdn.net/hejishan/archive/2008/06/10/2530372.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hejishan/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/hejishan/~6068058/264017352/4175853</fs:itemid></item><item><title>高性能网站性能优化</title><link>http://blog.csdn.net/hejishan/archive/2008/06/10/2530373.aspx</link><wfw:comment>http://blog.csdn.net/hejishan/comments/2530373.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/hejishan/comments/commentRss/2530373.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2530373</trackback:ping><description>从LiveJournal后台发展看大规模网站性能优化方法于敦德 2006-3-16一、LiveJournal发展历程LiveJournal是99年始于校园中的项目，几个人出于爱好做了这样一个应用，以实现以下功能：    博客，论坛     社会性网络，找到朋友     聚合，把朋友的文章聚合在一起 LiveJournal采用了大量的开源软件，甚至它本身也是一个开源软件。在上线后，LiveJournal实现了非常快速的增长：    2004年4月份：280万注册用户。     2005年4月份：680万注册用户。     2005年8月份：790万注册用户。     达到了每秒钟上千次的页面请求及处理。     使用了大量MySQL服务器。     使用了大量通用组件。 二、LiveJournal架构现状概况三、从LiveJournal发展中学习 LiveJournal从1台服务器发展到100台服务器，这其中经历了无数的伤痛，但同时也摸索出了解决这些问题的方法，通过对LiveJournal的学习，可以让我们避免LJ曾经犯过的错误，并且从一开始就对系统进行良好的设计，以避免后&lt;img src =&quot;http://blog.csdn.net/hejishan/aggbug/2530373.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/hejishan/264017353/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/hejishan/264017353/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2008 20:51:00 +0800</pubDate><author>itkbase</author><comments>http://blog.csdn.net/hejishan/archive/2008/06/10/2530373.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/hejishan/archive/2008/06/10/2530373.aspx</guid><dc:creator>itkbase</dc:creator><fs:srclink>http://blog.csdn.net/hejishan/archive/2008/06/10/2530373.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hejishan/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/hejishan/~6068058/264017353/4175853</fs:itemid></item></channel></rss>
