﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><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>语源科技BlogJava-全世界的屋顶</title><link>http://www.blogjava.net/honeybee/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 19:02:51 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 19:02:51 GMT</pubDate><ttl>60</ttl><item><title>eclipse关于alt+/问题集合</title><link>http://www.blogjava.net/honeybee/articles/212977.html</link><dc:creator>sun</dc:creator><author>sun</author><pubDate>Mon, 07 Jul 2008 03:02:00 GMT</pubDate><guid>http://www.blogjava.net/honeybee/articles/212977.html</guid><wfw:comment>http://www.blogjava.net/honeybee/comments/212977.html</wfw:comment><comments>http://www.blogjava.net/honeybee/articles/212977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/honeybee/comments/commentRss/212977.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/honeybee/services/trackbacks/212977.html</trackback:ping><description><![CDATA[解决办法一：<br />
1. 点击Windows-&gt;Preferences-&gt;General-&gt;Keys . <br />
<br />
2. 在列出的快捷键列表中查找到：word competion，把它的快捷键alt + / 改成其它的快捷键（怎么改，先把此快捷键删除，点右边的按钮"remove binding", 再选中binding文本框，输入你想要的快捷键）。 <br />
<br />
3. 在列出的快捷键列表中查找到：content assist，把它的快捷键 ctrl + space 改成我们想的的 alt + / 即可了。<br />
<br />
解决办法二：<br />
&nbsp;window-&gt;Preferences-&gt;Java-&gt;Editor-&gt;Content Assist-&gt;Advanced&nbsp; <br />
上面的选项卡Select the proposal kinds contained in the 'default' content assist list: 中把 Other Java Proposals 选项打上勾就可以了。
<img src ="http://www.blogjava.net/honeybee/aggbug/212977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/honeybee/" target="_blank">sun</a> 2008-07-07 11:02 <a href="http://www.blogjava.net/honeybee/articles/212977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>weka学习（安装和部署）</title><link>http://www.blogjava.net/honeybee/articles/193605.html</link><dc:creator>sun</dc:creator><author>sun</author><pubDate>Wed, 16 Apr 2008 16:15:00 GMT</pubDate><guid>http://www.blogjava.net/honeybee/articles/193605.html</guid><wfw:comment>http://www.blogjava.net/honeybee/comments/193605.html</wfw:comment><comments>http://www.blogjava.net/honeybee/articles/193605.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/honeybee/comments/commentRss/193605.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/honeybee/services/trackbacks/193605.html</trackback:ping><description><![CDATA[<p><span style="font-family: 宋体"><span style="font-size: 14pt"><span style="font-size: 12pt">&nbsp;</p>
<p style="background: white; margin: 6pt 0cm; text-indent: 21pt; line-height: 150%; text-align: left" align="left"><span style="line-height: 150%; font-family: 宋体">最近的工作重点是Web Data Mining, 经过近一周的Paper学习后，对于Web日志的挖掘有了一些想法。下面就应该是尽快进行实践。</span></p>
<p style="background: white; margin: 6pt 0cm; text-indent: 21pt; line-height: 150%; text-align: left" align="left"><span style="line-height: 150%; font-family: 宋体">于是，今天利用晚上的时间，成功安装了Weka(version 3.4.12)，对于Weka的安装，由于Weka是一个数据挖掘软件，当然需要和数据库进行连接，因此需要下载驱动，常用的及其支持的有：MySQL, HSQL Database, Mckoi SQL Database, RmiJdbc, 需要注意以下几点：</span></p>
<p style="background: white; margin: 6pt 0cm; text-indent: 21pt; line-height: 150%; text-align: left" align="left"><span style="line-height: 150%; font-family: 宋体">一.正常情况下，要在CLASSPATH添加上面下载的数据驱动jar包，但目前的问题是即使正确添加，也会提示&#8220;Trying to add JDBC driver: ***Driver - Error, not in CLASSPATH?&#8221;等类似的语句（我用的是Windows系统，Linux有待于做实验确认），所以建议直接在命令行输入路径信息，如：java &#8211;Xmx128m &#8211;classpath "hsqldb.jar;mysql-connector-java-5.15.bin.jar;RmiJdbc.jar;mkjdbc.jar;weka.jar" weka.gui.GUIChooser （注：我将这些数据驱动jia包放在了Weka安装目录下）</span></p>
<p style="background: white; margin: 6pt 0cm; text-indent: 21pt; line-height: 150%; text-align: left" align="left"><span style="line-height: 150%; font-family: 宋体">二.Weka(Version3.4.12)对于RmiJdbc，一定选择版本2.5（版本3.3，3.2，3.05我下载后添加依然提示Trying to add JDBC driver:</span><span style="line-height: 150%; font-family: 宋体">RmiJdbc.RJDriver - Error, not in CLASSPATH?</span><span style="line-height: 150%; font-family: 宋体">错误，1.0版本同样也不行）；对于Weka(version 3.5.5) 对于RmiJdbc，一定选择版本3.05或2.5。</span></p>
</span></span></span>
<p style="margin: 6pt 0cm 6pt 18pt; text-indent: -18pt; line-height: 150%; tab-stops: list 18.0pt"><span style="font-size: 10.5pt; line-height: 150%"><br />
</span><span style="font-size: 10.5pt; line-height: 150%"><span style="font-family: 宋体"><span style="font-size: 14pt"><span style="font-size: 12pt">下面是对于Weka学习的一个日程安排，以做备忘：<br />
1．下载和安装Weka (4.16-4.21)<br />
2．按照参考<a title="ppt" href="http://prdownloads.sourceforge.net/weka/Weka_a_tool_for_exploratory_data_mining.ppt">ppt</a></span></span></span><span style="font-family: 宋体"><span style="font-size: 14pt"><span style="font-size: 12pt">提供的例子跑通clustering算法，并且了解它的各项意义(4.21-4.30)&nbsp;<br />
3．找个复杂的例子（下载数据集<span lang="EN-US" style="font-size: 12pt; font-family: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><a href="http://www.cs.waikato.ac.nz/ml/weka/index_datasets.html">http://www.cs.waikato.ac.nz/ml/weka/index_datasets.html</a></span></span></span></span></a></a><span style="font-family: 宋体"><span style="font-size: 14pt"><span style="font-size: 12pt">）跑通并解释其数据意义(5.1-5.6)<br />
4．把一个Clustering算法改写成Hadoop代码运行在服务器上(5.6-5.20)</span></span></span></span></p>
<img src ="http://www.blogjava.net/honeybee/aggbug/193605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/honeybee/" target="_blank">sun</a> 2008-04-17 00:15 <a href="http://www.blogjava.net/honeybee/articles/193605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Paper Learning: Data-Intensive Supercomputing: The case for DISC</title><link>http://www.blogjava.net/honeybee/articles/191770.html</link><dc:creator>sun</dc:creator><author>sun</author><pubDate>Thu, 10 Apr 2008 02:21:00 GMT</pubDate><guid>http://www.blogjava.net/honeybee/articles/191770.html</guid><wfw:comment>http://www.blogjava.net/honeybee/comments/191770.html</wfw:comment><comments>http://www.blogjava.net/honeybee/articles/191770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/honeybee/comments/commentRss/191770.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/honeybee/services/trackbacks/191770.html</trackback:ping><description><![CDATA[<span><span><span><span><span lang="EN-US" style="font-size: 12pt; mso-font-kerning: 0pt">Recently, I have been studying something on DISC, the inspiration for which comes from&nbsp;Google's success that have been&nbsp;used to support search over the worldwide web. According to learning Data-Intensive Supercomputing: The case for DISC, maybe we can turn the idea of constructing a Google's infrastructure like system&nbsp;into reality, that is DISC.<br />
<br />
DISC can be developed as a prototype&nbsp;system of Google's instructure,&nbsp;we can&nbsp;divide it into two types of partitions: one for application development, and the&nbsp;other for system research.<br />
For <strong>the program development</strong> partitions, we can use available software, such as the open source code from the Hadoop project, to implement the file system and support for application programming. <o:p></o:p></span>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 12pt; mso-font-kerning: 0pt">For<strong> the systems research</strong> partitions, we can create our own design, studying the different kinds of design patterns. (e.g.: high-end hardware, low-cost component).<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 12pt; mso-font-kerning: 0pt"><br />
The paper Data-Intensive Supercomputing: The case for DISC gives me an entire impression&nbsp;of&nbsp;a&nbsp;new form of high-performance computing facility, and there are many other aspects that deeply attract me, I've taken notes on&nbsp;this paper&nbsp;as follows:</span></span></span><span lang="EN-US"><span><span><span><span><span><span lang="EN-US"><span><span><span><span><span><span><span><span><span><br />
</span></span><br />
</span></span></span><br />
</p>
<p align="left"><span>阅读</span><span lang="EN-US">Paper</span><span>：</span></p>
<h1><span lang="EN-US">Data-Intensive Supercomputing: The case for DISC<span>&nbsp;&nbsp; </span></h1>
<p><strong><span lang="EN-US">Randal E. Bryant <span>&nbsp;</span></strong><span lang="EN-US">May 10, 2007 CMU-CS-07-128</span></p>
<p><strong><span lang="EN-US">&nbsp;</span></strong></p>
<p align="left"><span>Question：</span><em><span lang="EN-US">How can university researchers demonstrate the credibility of their work without having comparable computing facilities available?</span></em></p>
<h2><span lang="EN-US">1 Background</span></h2>
<p align="left"><span lang="EN-US">Describe </span><span lang="EN-US">a new form of high-performance computing facility (<em>Data-Intensive Super Computer)</em> that places emphasis on <em>data</em>, rather than raw computation, as the core focus of the system.</span></p>
<p align="left"><span lang="EN-US">The author inspiration for DISC: comes from the server infrastructures that have been developed to support search over the worldwide web.</span></p>
<p align="left"><span lang="EN-US">This paper outlines the case for DISC as an important direction for large-scale computing systems.</span></p>
<h3><span lang="EN-US">1.1 Motivation</span></h3>
<p align="left"><span lang="EN-US">The common role in the computations:</span></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Web search without language barriers. (</span></em><span lang="EN-US">No matter in which language they </span><span lang="EN-US">type the query<em>)</em></span></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Inferring biological function from genomic sequences.</span></em></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Predicting and modeling the effects of earthquakes</span></em><span lang="EN-US">.</span></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Discovering new astronomical phenomena from telescope imagery data.</span></em></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Synthesizing realistic graphic animations.</span></em></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Understanding the spatial and temporal patterns of brain behavior based on MRI data.<br />
</span></em></p>
<h2><span lang="EN-US"><br />
2 Data-Intensive Super Computing</span></h2>
<p><strong><em><u><span lang="EN-US">Conventional (Current) supercomputers:</span></u></em></strong></p>
<p><span lang="EN-US">are evaluated largely on the number of arithmetic operations they can supply each second to the application programs.</span></p>
<p align="left"><strong><span lang="EN-US">Advantage:</span></strong><span lang="EN-US"> highly structured data requires large amounts of computation.</span></p>
<p><strong><span lang="EN-US">Disadvantage: </span></strong></p>
<p><span lang="EN-US">1. It creates misguided priorities in the way these machines are designed, programmed, and operated;</span></p>
<p align="left"><span lang="EN-US">2. Disregarding the importance of incorporating computation-proximate, fast-access data storage, and at the same time creating machines that are very difficult to program effectively;</span></p>
<p align="left"><span lang="EN-US">3. The range of computational styles is restricted by the system structure.</span></p>
<p align="left"><strong><em><u></u></em></strong></p>
<p align="left"><strong><em><u><span lang="EN-US">The key principles of DISC:</span></u></em></strong></p>
<p align="left"><span lang="EN-US"><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><em><span lang="EN-US">Intrinsic, rather than extrinsic data. </span></em></p>
<p align="left"><span lang="EN-US"><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><em><span lang="EN-US">High-level programming models for expressing computations over the data.</span></em></p>
<p align="left"><span lang="EN-US"><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><em><span lang="EN-US">Interactive access.</span></em></p>
<p align="left"><span lang="EN-US"><span>4.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><em><span lang="EN-US">Scalable mechanisms to ensure high reliability and availability. (error detection and handling)<br />
</span></em></p>
<h2><span lang="EN-US"><br />
<br />
3 Comparison to Other Large-Scale Computer Systems</span></h2>
<h3><span lang="EN-US">3.1 Current Supercomputers</span></h3>
<h3><span lang="EN-US">3.2 Transaction Processing Systems</span></h3>
<h3><span lang="EN-US">3.3 Grid Systems<br />
</span></h3>
<h2><span lang="EN-US"><br />
<br />
4 Google: A DISC Case Study</span></h2>
<p><span lang="EN-US">1. The Google system actively maintains<span> cached copies</span> of every document it can find on the Internet.</span></p>
<p align="left"><span lang="EN-US">The system constructs complex<span> <em>index </em>structures</span>, <span>summarizing information</span> about the documents in forms that enable rapid identification of the documents most relevant to a particular query.</span></p>
<p align="left"><span lang="EN-US">When <u>a user submits a query</u>, the front end <u>servers</u> direct the query to one of the clusters, where several hundred processors work together to <u>determine the best matching </u>documents <u>based on the index structures</u>. The system then <u>retrieves the documents from their cached locations</u>, <u>creates brief summaries of the documents</u>, <u>orders them with the most relevant documents first</u>, and <u>determines which sponsored links should be placed on the page</u>.</span></p>
<p align="left"><span lang="EN-US">2. The Google hardware design is based on a philosophy of using components that emphasize<u> low cost and low power over raw speed and reliability</u>. <u>Google keeps the hardware as simple as possible</u>.</span></p>
<p align="left"><span lang="EN-US">They<u> make extensive use of redundancy and software-based reliability</u>.</span></p>
<p align="left"><span lang="EN-US">These <u>failed</u> components are removed and replaced <u>without turning the system off.</u></span></p>
<p align="left"><u><span lang="EN-US">Google has significantly lower operating costs in terms of power consumption and human labor than do other data centers</span></u><span lang="EN-US">.</span></p>
<p align="left"><span lang="EN-US">3. <em>MapReduce</em>, that supports powerful forms of computation performed in parallel over large amounts of data.</span><span lang="EN-US"> </span></p>
<p align="left"><span lang="EN-US">Two function: a <em>map </em>function that generates values and associated keys from each document, and a <em>reduction </em>function that describes how all the data matching each possible key should be combined.</span></p>
<p align="left"><span lang="EN-US">MapReduce can be used<u> to compute statistics about documents</u>, <u>to create the index structures</u> used by the search engine, and <u>to implement their PageRank algorithm for quantifying the relative importance of different web documents</u>.</span></p>
<p align="left"><span lang="EN-US">4<em>. BigTable:</em></span><span lang="EN-US"> a distributed data structures, provides capabilities similar to those seen in database systems.</span></p>
<h2><span lang="EN-US"><br />
5 Possible Usage Model</span></h2>
<p align="left"><span lang="EN-US">The DISC operations could include user-specified functions in the style of Google&#8217;s MapReduce programming framework. As with databases, different users will be given different authority over what operations can be performed and what modifications can be made.<br />
<br />
&nbsp; </p>
<h2><span lang="EN-US">6 Constructing a General-Purpose DISC System</span></h2>
<p align="left"><span lang="EN-US">The open source project <em>Hadoop </em>implements capabilities similar to the Google file system and support for MapReduce. </span></p>
<p align="left"><strong><span lang="EN-US">Constructing a General-Purpose DISC System</span></strong><strong><span>：</span></strong><strong></strong></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Hardware Design.</span></em></p>
<p align="left"><span lang="EN-US">There are a wide range of choices;</span></p>
<p align="left"><span lang="EN-US">We need to understand the tradeoffs between the different hardware configurations and how well the system performs on different applications.</span></p>
<p align="left"><span lang="EN-US">Google has made a compelling case for sticking with low-end nodes for web search applications, and the Google approach requires much more complex system software to overcome the limited performance and reliability of the components. But it might not be the most cost-effective solution for a smaller operation when personnel costs are considered.</span></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Programming Model.</span></em></p>
<p align="left"><span lang="EN-US">1. One important software concept for scaling parallel computing beyond 100 or so processors is to <u>incorporate error detection and recovery into the runtime system</u> and to <u>isolate programmers from both transient and permanent failures</u> as much as possible.</span></p>
<p align="left"><span lang="EN-US">Work on providing <u>fault tolerance in a manner invisible</u> to the application programmer <u>started in the context of grid-style computing</u>, but only <u>with the advent of MapReduce</u> and in recent work <u>by Microsoft has it become recognized as an important capability</u> for parallel systems.</span></p>
<p align="left"><span lang="EN-US">2. We <u>want programming models</u> that <u>dynamically adapt to the available resources</u> and that perform well <u>in a more asynchronous execution environment</u>.</span></p>
<p align="left"><span lang="EN-US">e.g.: Google&#8217;s implementation of MapReduce partitions a computation into a number of map and reduce tasks that are then scheduled dynamically onto a number of &#8220;worker&#8221; processors.</span></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Resource Management.</span></em></p>
<p align="left"><span lang="EN-US">Problem: how to manage the computing and storage resources of a DISC system.</span></p>
<p align="left"><span lang="EN-US">We want it to be available in an interactive mode and yet able to handle very large-scale computing tasks.</span></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Supporting Program Development.</span></em></p>
<p align="left"><u><span lang="EN-US">Developing parallel programs is difficult</span></u><span lang="EN-US">, both in terms of <u>correctness</u> and to get <u>good performance</u>.</span></p>
<p align="left"><span lang="EN-US">As a consequence, we must <u>provide software development tools</u> that <u>allow correct programs to be written easily</u>, while also <u>enabling more detailed monitoring, analysis, and optimization of program performance</u>.</span></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">System Software.</span></em></p>
<p align="left"><span lang="EN-US">System software is required for a variety of tasks, including fault diagnosis and isolation, system resource control, and data migration and replication.</span></p>
<p align="left"><span lang="EN-US">&nbsp;</span></p>
<p align="left"><span lang="EN-US">Google and its competitors provide an existence proof that DISC systems can be implemented using available technology.</span><span lang="EN-US"> </span><span lang="EN-US">Some <u>additional topics</u> include:</span></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">How should the processors be designed for use in cluster machines?</span></em></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">How can we effectively support different scientific communities in their data management and applications?</span></em></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Can we radically reduce the energy requirements for large-scale systems? </span></em></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">How do we build large-scale computing systems with an appropriate balance of performance and cost? </span></em></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">How can very large systems be constructed given the realities of component failures and repair times? </span></em></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Can we support a mix of computationally intensive jobs with ones requiring interactive response?</span></em></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">How do we control access to the system while enabling sharing? </span></em></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Can we deal with bad or unavailable data in a systematic way?</span></em><span lang="EN-US"> </span></p>
<p align="left"><span lang="EN-US">&#8226; </span><em><span lang="EN-US">Can high performance systems be built from heterogenous components? </span></em></p>
<h2><span lang="EN-US"><br />
7 Turning Ideas into Reality</span></h2>
<h3><span lang="EN-US">7.1 Developing a Prototype System</span></h3>
<p align="left"><span lang="EN-US">Operate <u>two types of partitions</u>: some for <u>application development</u>, focusing on gaining experience with the different programming techniques, and others for <u>systems research</u>, studying fundamental issues in system design.</span></p>
<p align="left"><span lang="EN-US">For <strong>the program development</strong> partitions:</span></p>
<p align="left"><span lang="EN-US">Use available software, such as the open source code from the Hadoop project, to implement the file system and support for application programming.</span></p>
<p align="left"><span lang="EN-US">For<strong> the systems research</strong> partitions: </span></p>
<p align="left"><span lang="EN-US">Create our own design, studying the different layers of hardware and system software required to get high performance and reliability. (e.g.: high-end hardware, low-cost component)</span></p>
<h3><span lang="EN-US">7.2 Jump Starting</span></h3>
<p align="left"><u><span lang="EN-US">Begin application development by renting </span></u><span lang="EN-US">much of the required computing infrastructure:</span></p>
<p align="left"><span lang="EN-US">1. network-accessible storage: <strong>Simple Storage System (S3) service</strong></span></p>
<p align="left"><span lang="EN-US">2. computing cycles: <strong>Elastic Computing Cloud (EC2) service</strong></span></p>
<p align="left"><strong><span lang="EN-US">(</span></strong><span lang="EN-US">The current pricing for storage is $0.15 per gigabyte per day ($1,000 per terabyte per year), with addition costs for reading or writing the data. Computing cycles cost $0.10 per CPU hour ($877 per year) on a virtual Linux machine.<strong>)</strong></span></p>
<p align="left"><u><span lang="EN-US">Renting problems:</span></u></p>
<p align="left"><span lang="EN-US">1. The performance of such a configuration is much less than that of a dedicated facility.</span></p>
<p align="left"><span lang="EN-US">2. There is no way to ensure that the S3 data and the EC2 processors will be in close enough proximity to provide high speed access.</span></p>
<p align="left"><span lang="EN-US">3. We would lose the opportunity to design, evaluate, and refine our own system.</span></p>
<h3><span lang="EN-US">7.3 Scaling Up</span></h3>
<h2><span lang="EN-US"><br />
8 Conclusion</span></h2>
<p align="left"><span lang="EN-US">1. We believe that DISC systems could change the face of scientific research worldwide.</span></p>
<p align="left"><span lang="EN-US">2. DISC will help realize the potential all these data such as the combination of sensors and networks to collect data, inexpensive disks to store data, and the benefits derived by analyzing data provides.</span></p>
<p align="left"><span lang="EN-US">&nbsp;</span></p>
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
<img src ="http://www.blogjava.net/honeybee/aggbug/191770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/honeybee/" target="_blank">sun</a> 2008-04-10 10:21 <a href="http://www.blogjava.net/honeybee/articles/191770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DISC(Data Intensive Super Computing 数据密集型超级计算)</title><link>http://www.blogjava.net/honeybee/articles/190844.html</link><dc:creator>sun</dc:creator><author>sun</author><pubDate>Fri, 04 Apr 2008 15:43:00 GMT</pubDate><guid>http://www.blogjava.net/honeybee/articles/190844.html</guid><wfw:comment>http://www.blogjava.net/honeybee/comments/190844.html</wfw:comment><comments>http://www.blogjava.net/honeybee/articles/190844.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/honeybee/comments/commentRss/190844.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/honeybee/services/trackbacks/190844.html</trackback:ping><description><![CDATA[&nbsp;
<h2><span style="font-size: 12pt; line-height: 173%">Data Intensive System(DIS)</span></h2>
<h3><span style="font-size: 10.5pt; line-height: 173%">System Challenges</span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">：</span></h3>
<p><strong>Data distributed over many disks</strong></p>
<p><strong>Compute using many processors</strong></p>
<p><strong>Connected by gigabit Ethernet (or equivalent)</strong></p>
<h3><span style="font-size: 10.5pt; line-height: 173%">System Requirements:</span></h3>
<p><strong>Lots of disks</strong></p>
<p><strong>Lots of processors</strong></p>
<p><strong>Located in close proximity</strong></p>
<h2><span style="font-size: 12pt; line-height: 173%">System Comparison: </span></h2>
<h3 style="margin-left: 36pt; text-indent: -36pt"><span style="font-size: 10.5pt; line-height: 173%">(i)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%">Data</span></h3>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 213.05pt; padding-top: 0cm; border-bottom: black 1pt solid" width="284">
            <p style="text-align: center" align="center"><strong>Conventional &nbsp;Supercomputers</strong></p>
            </td>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 213.05pt; padding-top: 0cm; border-bottom: black 1pt solid" width="284">
            <p style="text-align: center" align="center"><strong>DISC</strong></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 213.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="284">
            <p><img height="101" src="file:///C:/Users/Sun/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif" width="264" v:shapes="对象_x0020_2"  alt="" /></p>
            <p style="margin-top: 5.4pt"><strong>Data stored in separate repository</strong></p>
            <p style="margin-top: 1.9pt; text-indent: 10.5pt">No support for collection or management</p>
            <p style="margin-top: 5.4pt"><strong>Brought into system for computation</strong></p>
            <p style="margin-top: 1.9pt; text-indent: 10.5pt">Time consuming</p>
            <p style="margin-top: 1.9pt; text-indent: 10.5pt">Limits interactivity</p>
            </td>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 213.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="284">
            <p style="text-align: center" align="center"><img height="103" src="file:///C:/Users/Sun/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif" width="155" v:shapes="对象_x0020_3"  alt="" /></p>
            <p style="margin-top: 5.4pt"><strong>System collects and maintains data</strong></p>
            <p style="margin-top: 1.9pt; text-indent: 10.5pt">Shared, active data set</p>
            <p style="margin-top: 5.4pt"><strong>Computation colocated with storage</strong></p>
            <p style="margin-top: 1.9pt; text-indent: 10.5pt">Faster access </p>
            </td>
        </tr>
    </tbody>
</table>
<h3 style="margin-left: 36pt; text-indent: -36pt"><span style="font-size: 10.5pt; line-height: 173%">(ii)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%">Programing Models</span></h3>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 217.05pt; padding-top: 0cm; border-bottom: black 1pt solid" width="289">
            <p style="text-align: center" align="center"><strong>Conventional &nbsp;Supercomputers</strong></p>
            </td>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 209.05pt; padding-top: 0cm; border-bottom: black 1pt solid" width="279">
            <p style="text-align: center" align="center"><strong>DISC</strong></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 217.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="289">
            <p><img height="185" src="file:///C:/Users/Sun/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif" width="275" v:shapes="对象_x0020_4"  alt="" /></p>
            <p style="margin-top: 5.4pt"><strong>Programs described at very low level</strong></p>
            <p style="margin-top: 5.4pt; text-indent: 10.5pt">Specify detailed control of processing &amp; communications</p>
            <p style="margin-top: 5.4pt"><strong>Rely on small number of software packages</strong></p>
            <p style="margin-top: 5.4pt; text-indent: 10.5pt">Written by specialists</p>
            <p style="margin-top: 5.4pt; text-indent: 10.5pt">Limits classes of problems &amp; solution methods</p>
            </td>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 209.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="279">
            <p style="text-align: center" align="center"><img height="173" src="file:///C:/Users/Sun/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif" width="258" v:shapes="对象_x0020_5"  alt="" /></p>
            <p style="margin-top: 5.4pt"><strong>Application programs written in terms of high-level operations on data</strong></p>
            <p style="margin-top: 5.4pt"><strong>Runtime system controls scheduling, load balancing, &#8230;</strong></p>
            </td>
        </tr>
    </tbody>
</table>
<h3 style="margin-left: 36pt; text-indent: -36pt"><span style="font-size: 10.5pt; line-height: 173%">(iii)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%">Interaction</span></h3>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 203.85pt; padding-top: 0cm; border-bottom: black 1pt solid" width="272">
            <p style="text-align: center" align="center"><strong>Conventional &nbsp;Supercomputers</strong></p>
            </td>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 222.25pt; padding-top: 0cm; border-bottom: black 1pt solid" width="296">
            <p style="text-align: center" align="center"><strong>DISC</strong></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 203.85pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="272">
            <p><strong>Main Machine: Batch Access</strong></p>
            <p style="text-indent: 10.3pt">Priority is to conserve machine resources</p>
            <p style="text-indent: 10.3pt">User submits job with specific resource requirements</p>
            <p style="text-indent: 10.3pt">Run in batch mode when resources available</p>
            <p><strong>Offline Visualization</strong></p>
            <p style="text-indent: 10.3pt">Move results to separate facility for interactive use</p>
            </td>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 222.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="296">
            <p><strong>Interactive Access</strong></p>
            <p style="text-indent: 10.3pt">Priority is to conserve human resources</p>
            <p style="text-indent: 10.3pt">User action can range from simple query to complex computation</p>
            <p style="text-indent: 10.3pt">System supports many simultaneous users</p>
            <p style="text-indent: 20.6pt">Requires flexible programming and runtime environment</p>
            </td>
        </tr>
    </tbody>
</table>
<h3 style="margin-left: 36pt; text-indent: -36pt"><span style="font-size: 10.5pt; line-height: 173%">(iv)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%">Reliability</span></h3>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 203.85pt; padding-top: 0cm; border-bottom: black 1pt solid" width="272">
            <p style="text-align: center" align="center"><strong>Conventional &nbsp;Supercomputers</strong></p>
            </td>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 222.25pt; padding-top: 0cm; border-bottom: black 1pt solid" width="296">
            <p style="text-align: center" align="center"><strong>DISC</strong></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 203.85pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="272">
            <p><strong>&#8220;Brittle&#8221; Systems</strong></p>
            <p style="margin-top: 5.4pt; text-indent: 10.5pt">Main recovery mechanism is to recompute from most recent checkpoint</p>
            <p style="margin-top: 5.4pt; text-indent: 10.5pt">Must bring down system for diagnosis, repair, or upgrades</p>
            </td>
            <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 222.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="296">
            <p><strong>Flexible Error Detection and Recovery</strong></p>
            <p style="margin-top: 5.4pt; text-indent: 10.5pt">Runtime system detects and diagnoses errors</p>
            <p style="margin-top: 5.4pt; text-indent: 10.5pt">Selective use of redundancy and dynamic recomputation </p>
            <p style="margin-top: 5.4pt; text-indent: 10.5pt">Replace or upgrade components while system running</p>
            <p style="margin-top: 5.4pt; text-indent: 10.5pt">Requires flexible programming model &amp; runtime environment</p>
            </td>
        </tr>
    </tbody>
</table>
<h2><span style="font-size: 12pt; line-height: 173%">Comparing with Grid Computing: </span></h2>
<h3><span style="font-size: 10.5pt; line-height: 173%">Grid: Distribute Computing and Data</span></h3>
<p style="margin-left: 36pt; text-indent: -36pt"><strong>(i)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong>Computation: Distribute problem across many machines</strong></p>
<p style="text-indent: 31.5pt">Generally only those with easy partitioning into independent subproblems </p>
<p style="margin-left: 36pt; text-indent: -36pt"><strong>(ii)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong>Data: Support shared access to large-scale data set</strong></p>
<h3><span style="font-size: 10.5pt; line-height: 173%">DISC: Centralize Computing and Data</span></h3>
<p style="margin-left: 36pt; text-indent: -36pt"><strong>(i)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong>Enables more demanding computational tasks</strong></p>
<p style="margin-left: 36pt; text-indent: -36pt"><strong>(ii)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong>Reduces time required to get data to machines</strong></p>
<p style="margin-left: 36pt; text-indent: -36pt"><strong>(iii)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong>Enables more flexible resource management</strong></p>
<h2><span style="font-size: 12pt; line-height: 173%">A Commercial DISC</span></h2>
<h3><span style="font-size: 10.5pt; color: red; line-height: 173%">Netezza Performance Server (NPS)</span></h3>
<p><strong><span style="color: red">Designed for &#8220;data warehouse&#8221; applications</span></strong></p>
<p style="text-indent: 21pt"><span style="color: red">Heavy duty analysis of database</span></p>
<p><strong><span style="color: red">Data distributed over up to 500 Snippet Processing Units</span></strong></p>
<p style="text-indent: 21pt"><span style="color: red">Disk storage, dedicated processor, FPGA controller</span></p>
<p><strong><span style="color: red">User &#8220;programs&#8221; expressed in SQL</span></strong></p>
<h2><span style="font-size: 12pt; line-height: 173%">Constructing DISC</span></h2>
<h3><span style="font-size: 10.5pt; line-height: 173%">Hardware: Rent from Amazon</span></h3>
<p><strong>Elastic Compute Cloud (EC2)</strong></p>
<p style="text-indent: 21pt">Generic Linux cycles for $0.10 / hour ($877 / yr)</p>
<p><strong>Simple Storage Service (S3)</strong></p>
<p style="text-indent: 21pt">Network-accessible storage for $0.15 / GB / month ($1800/TB/yr)</p>
<h3><span style="font-size: 10.5pt; line-height: 173%">Software: utilize open source</span></h3>
<p><strong>Hadoop Project</strong></p>
<p style="text-indent: 21pt">Open source project providing file system and MapReduce </p>
<p style="text-indent: 21pt">Supported and used by Yahoo </p>
<h3><span style="font-size: 10.5pt; line-height: 173%">Implementing System Software</span></h3>
<p><strong>Programming Support</strong></p>
<p style="text-indent: 21pt">Abstractions for computation &amp; data representation</p>
<p style="margin-left: 42pt; text-indent: 21pt"><strong><span style="color: red">E.g., Google: MapReduce &amp; BigTable </span></strong></p>
<p style="text-indent: 21pt">Usage models</p>
<p><strong>Runtime Support</strong></p>
<p style="text-indent: 21pt">Allocating processing and storage</p>
<p style="text-indent: 21pt">Scheduling multiple users</p>
<p style="text-indent: 21pt">Implementing programming model</p>
<p><strong>Error Handling</strong></p>
<p style="text-indent: 21pt">Detecting errors</p>
<p style="text-indent: 21pt">Dynamic recovery</p>
<p style="text-indent: 21pt">Identifying failed components</p>
 <img src ="http://www.blogjava.net/honeybee/aggbug/190844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/honeybee/" target="_blank">sun</a> 2008-04-04 23:43 <a href="http://www.blogjava.net/honeybee/articles/190844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>junit测试</title><link>http://www.blogjava.net/honeybee/articles/184435.html</link><dc:creator>sun</dc:creator><author>sun</author><pubDate>Fri, 07 Mar 2008 03:04:00 GMT</pubDate><guid>http://www.blogjava.net/honeybee/articles/184435.html</guid><wfw:comment>http://www.blogjava.net/honeybee/comments/184435.html</wfw:comment><comments>http://www.blogjava.net/honeybee/articles/184435.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/honeybee/comments/commentRss/184435.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/honeybee/services/trackbacks/184435.html</trackback:ping><description><![CDATA[<p>一. JUnit测试小结<br />
1.单元测试的编写原则<br />
三个总体目标：第一个是简化测试的编写，这种简化包括测试框架的学习和实际测试单元的编写；第二个是使测试单元保持持久性；第三个则是可以利用既有的测试来编写相关的测试。<br />
2. 如何确定单元测试<br />
一个单元测试基本是以一个对象的明确特性为基础，单元测试的过程应该限定在一个明确的线程范围内。<br />
为了确定一个系统最终的行为符合我们起始的要求，我们首先需要保证系统内的各个部分的状态会符合我们的设计要求，所以我们的测试单元的重点应该放在确定对象的状态变换上。<br />
应该在有可能引入错误的地方引入测试单元，通常这些地方存在于有特定边界条件、复杂算法以及需求变动比较频繁的代码逻辑中。除了这些特性需要被编写成独立的测试单元外，还有一些边界条件比较复杂的对象方法也应该被编写成独立的测试单元，这部分单元测试已经在Junit文档中被较好的描述和解释过了。<br />
3. 如何编写单元测试<br />
<br />
二.&nbsp;&nbsp;junit中的assert方法全部放在Assert类中，总结一下junit类中assert方法的分类。<br />
1.assertTrue/False([String message,]boolean condition);<br />
&nbsp;&nbsp;&nbsp; 判断一个条件是true还是false。用途最广。<br />
2.fail([String message,]);<br />
&nbsp;&nbsp;&nbsp; 失败，可以有消息，也可以没有消息。<br />
3.assertEquals([String message,]Object expected,Object actual);<br />
&nbsp;&nbsp;&nbsp; 判断是否相等，可以指定输出错误信息。<br />
&nbsp;&nbsp;&nbsp; 第一个参数是期望值，第二个参数是实际的值。<br />
&nbsp;&nbsp;&nbsp; 这个方法对各个变量有多种实现。在JDK1.5中基本一样。<br />
4.assertNotNull/Null([String message,]Object obj);<br />
&nbsp;&nbsp;&nbsp; 判读一个对象是否非空(非空)。<br />
5.assertSame/NotSame([String message,]Object expected,Object actual);<br />
&nbsp;&nbsp;&nbsp; 判断两个对象是否指向同一个对象。看内存地址。<br />
6.failNotSame/failNotEquals(String message, Object expected, Object actual)<br />
&nbsp;&nbsp;&nbsp; 当不指向同一个内存地址或者不相等的时候，输出错误信息。<br />
&nbsp;&nbsp;&nbsp; 注意信息是必须的，而且这个输出是格式化过的。<br />
</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/honeybee/aggbug/184435.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/honeybee/" target="_blank">sun</a> 2008-03-07 11:04 <a href="http://www.blogjava.net/honeybee/articles/184435.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>volatile用法</title><link>http://www.blogjava.net/honeybee/articles/182229.html</link><dc:creator>sun</dc:creator><author>sun</author><pubDate>Tue, 26 Feb 2008 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/honeybee/articles/182229.html</guid><wfw:comment>http://www.blogjava.net/honeybee/comments/182229.html</wfw:comment><comments>http://www.blogjava.net/honeybee/articles/182229.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/honeybee/comments/commentRss/182229.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/honeybee/services/trackbacks/182229.html</trackback:ping><description><![CDATA[一般说来,volatile用在如下的几个地方：<br />
<br />
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;<br />
<br />
2、多任务环境下各任务间共享的标志应该加volatile;<br />
<br />
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;<br />
<img src ="http://www.blogjava.net/honeybee/aggbug/182229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/honeybee/" target="_blank">sun</a> 2008-02-26 15:37 <a href="http://www.blogjava.net/honeybee/articles/182229.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的读后感二：架构如此，人生亦如此！</title><link>http://www.blogjava.net/honeybee/articles/181449.html</link><dc:creator>sun</dc:creator><author>sun</author><pubDate>Fri, 22 Feb 2008 08:47:00 GMT</pubDate><guid>http://www.blogjava.net/honeybee/articles/181449.html</guid><wfw:comment>http://www.blogjava.net/honeybee/comments/181449.html</wfw:comment><comments>http://www.blogjava.net/honeybee/articles/181449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/honeybee/comments/commentRss/181449.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/honeybee/services/trackbacks/181449.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 用了近一周的时间认真读了作者Roy Thomas Fielding的博士论文《Architectural Styles and the Design of Network-based Software Architectures》，虽然要完整读完这篇长达180余页的Paper还需要一到两天的时间，但Roy Thomas Fielding博士对于网络的架构思想及他的REST架构深深地吸引着我。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 对于这篇论文的论述，思路上，从简单的Software Architecture谈起，逐渐深入到基于网络的architectures, properties,styles等，最后提出了REST架构风格；对于每个部分的阐述，方法上，从最简单的模型说起，逐步深入直至引出一个完整而综合的模型。何谓简单的模型？我觉得，是一种 null styled and constrainted model。何谓复杂的模型或者说是架构风格？我觉得，是一种 architectural style consisting of the set of constraints applied to elements within the architecture。不难发现，从简单过渡到复杂的关键点是&#8220;constraints&#8221;。其实，在做架构时，道理很简单——首先考虑的是大方向，给自己一个概念上的目标，得到一个初级的模型，然后在此基础上，结合自己的学习、前人的经验，进而考虑种种约束、细节极现实情况，力争设计出一个具有Performance, Scalability, Simplicity, Modifiability, Visibility, Reliability and etc.的系统。道理虽然简单，问题在于平时的学习中，我是否主观的思考过？推而广之，对于生活的态度，人生的认识，道理是否也是一样呢？<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实，架构如此，人生亦如此！<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于这篇论文，我认为，它不单纯是一篇学位论文，因为作者的写作手法，写作语言真的值得我学习，如，对于架构的方法，作者从derivation tree的角度类比阐述，形象而生动，我想，Roy Thomas Fielding的博士论文为我今后写论文帮助很大。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 另外，本篇论文的知识量很大，仅从一篇文章便可以学到很多知识，如常见的架构风格，架构关注的特性，互联网很多协议的产生及发展等等，待完整读完后，我会收获更多！<br />
&nbsp;&nbsp;&nbsp;&nbsp; 世界著名架构大师，UC Berkeley教授Christopher Alexander说过下面一段话——<br />
&nbsp;&nbsp;&nbsp;&nbsp; "Each one of us has, somewhere in his heart, the dream to make a living world, a universe. Those of us who have been trained as architects have this desire perhaps at the very center of our lives: that one day, somewhere, somehow, we shall build one building which is wonderful, beautiful, breathtaking, a place where people can walk and dream for centuries."<br />
&nbsp;&nbsp;&nbsp;&nbsp; 我很喜欢这段话，在此我把它翻译过来，我想，它对与我，是一个长期不便的目标，是一股持之以恒的力量，更是一种恒定不变的信念！<br />
&nbsp;&nbsp;&nbsp; &#8220;我们每个人，在内心深处都怀有一个梦想：梦想去创造一个鲜活的世界与宇宙。那些或许处在我们生活的中心、被训练作为架构师的人们，都拥有者一个渴望:渴望某一天，在某个地方，因某种原因，架构出一座不可思议的、美丽的、令人心动的建筑，在那里，人们可以行走，可以梦想，历经数百年依然傲然挺拔。&#8221;-- by Christopher Alexander<br />
</p>
<img src ="http://www.blogjava.net/honeybee/aggbug/181449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/honeybee/" target="_blank">sun</a> 2008-02-22 16:47 <a href="http://www.blogjava.net/honeybee/articles/181449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Representational State Transfer (REST)</title><link>http://www.blogjava.net/honeybee/articles/181079.html</link><dc:creator>sun</dc:creator><author>sun</author><pubDate>Thu, 21 Feb 2008 07:42:00 GMT</pubDate><guid>http://www.blogjava.net/honeybee/articles/181079.html</guid><wfw:comment>http://www.blogjava.net/honeybee/comments/181079.html</wfw:comment><comments>http://www.blogjava.net/honeybee/articles/181079.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/honeybee/comments/commentRss/181079.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/honeybee/services/trackbacks/181079.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-align: center" align="center"><span style="font-size: 16pt">Representational State Transfer (REST)</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">5.1 Deriving REST</span></strong></p>
<h3><span style="font-size: 12pt; line-height: 173%">5.1.1</span><span style="font-size: 12pt; line-height: 173%"> Starting with the Null Style</span></h3>
<p><strong><span style="font-size: 12pt; color: red; font-family: Times-Roman">Two common perspectives</span></strong><span style="font-size: 12pt; font-family: Times-Roman"> on the process of architectural design:</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">The<strong> first </strong>is that a designer <em>starts <span style="color: red">with nothing—a blank slate, whiteboard, or drawing board</span></em>—and builds-up an architecture from familiar components until it satisfies the needs of the intended system. </span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">The <strong>second</strong> is that a designer starts with <em><span style="color: red">the system needs as a whole, without constraints</span></em>, and then incrementally identifies and applies constraints to elements of the system in order to differentiate the design space and allow the forces that influence system behavior to flow naturally, in harmony with the system.</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 12pt; color: red; font-family: Times-Roman">REST is based on the latter process.</span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">The following eight sections depict how the applied constraints would differentiate the process view of an architecture as the incremental set of constraints is applied.</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 12pt; color: red; font-family: Times-Roman">From the Null style </span></strong><span style="font-size: 12pt; font-family: Times-Roman">(Figure 5-1) is simply an empty set of constraints. It is the starting point for our description of REST.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">5.1.2</span><span style="font-size: 12pt; line-height: 173%"> Client-Server</span></h3>
<p style="text-align: left" align="left"><strong><span style="font-size: 12pt; color: red; font-family: Times-Roman">From the client-server architectural style (Figure 5-2)</span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">Separation of concerns is the principle behind the client-server constraints. Perhaps most significant to the Web is that the separation allows the components to evolve independently, thus supporting the Internet-scale requirement of multiple organizational domains.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">5.1.3</span><span style="font-size: 12pt; line-height: 173%"> Stateless</span></h3>
<p><strong><span style="font-size: 12pt; color: red; font-family: Times-Roman">From the client-stateless-server (CSS) style (Figure 5-3)</span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">Each request from client to server must contain all of the information necessary to understand the request, and cannot take advantage of any stored context on the server.</span></p>
<p><em><span style="font-size: 12pt; color: red; font-family: Times-Roman">Session state is kept entirely on the client.</span></em></p>
<p><span style="font-size: 12pt; color: red; font-family: Times-Roman">Advantage: </span><span style="font-size: 12pt; font-family: Times-Roman">ease the pressure of Sever.</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; color: red; font-family: Times-Roman">Disadvantage:</span><span style="font-size: 12pt; font-family: Times-Roman"> decrease network performance by increasing the repetitive data in a series of requests in clients.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">5.1.4</span><span style="font-size: 12pt; line-height: 173%"> Cache</span></h3>
<p style="text-align: left" align="left"><strong><span style="font-size: 12pt; color: red; font-family: Times-Roman">From the client-cache-stateless-server style (Figure 5-4).</span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">Requiring:<span style="color: red"> a response is implicitly or explicitly labeled as cacheable or noncacheable</span>.</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; color: red; font-family: Times-Roman">Advantage</span><span style="font-size: 12pt; font-family: Times-Roman">: eliminate some interactions. </span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; color: red; font-family: Times-Roman">Disadvantage</span><span style="font-size: 12pt; font-family: Times-Roman">: decrease reliability if state data within the cache differs significantly from the data that would have been sent directly to the server.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">5.1.5</span><span style="font-size: 12pt; line-height: 173%"> Uniform Interface</span></h3>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">The <span style="color: red">central feature </span>that distinguishes the REST architectural style from other network-based styles is its emphasis on <span style="color: red">a uniform interface between components</span> (Figure 5-6).</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">The REST interface is designed to be efficient for large-grain hypermedia data transfer, optimizing for the common case of the Web.</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">REST is defined by <span style="color: red">four interface constraints</span>: <em>identification of resources</em>;<em> manipulation of resources through representations</em>;<em> self-descriptive messages</em>; and, <em>hypermedia as the engine of application state</em>.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">5.1.6</span><span style="font-size: 12pt; line-height: 173%"> Layered System</span></h3>
<p style="text-align: left" align="left"><strong><span style="font-size: 12pt; color: red; font-family: Times-Roman">From layered system constraints (Figure 5-7). </span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">The layered system style allows an architecture to be composed of hierarchical layers by constraining component behavior such that <span style="color: red">each component cannot &#8220;see&#8221; beyond the immediate layer with which they are interacting</span>.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">5.1.7</span><span style="font-size: 12pt; line-height: 173%"> Code-On-Demand</span></h3>
<p><strong><span style="font-size: 12pt; color: red; font-family: Times-Roman">From the code-on-demand style (Figure 5-8).</span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">REST allows client functionality to be extended by downloading and executing code in the form of applets or scripts. This <em><span style="color: red">simplifies clients</span></em> by reducing the number of features required to be pre-implemented. Allowing features to be downloaded after deployment <em><span style="color: red">improves system extensibility</span></em>.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">5.1.8</span><span style="font-size: 12pt; line-height: 173%"> Style Derivation Summary</span></h3>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">Figure 5-9 depicts the derivation of REST&#8217;s constraints graphically in terms of the network-based architectural styles examined in Chapter 3.</span></p>
<h4><span style="font-size: 10.5pt; line-height: 156%">
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">5.2 REST Architectural Elements</span></strong></p>
<h3><span style="font-size: 12pt; line-height: 173%">5.2.1</span><span style="font-size: 12pt; line-height: 173%"> Data Elements</span></h3>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: Times-Roman">The nature and state of an architecture&#8217;s data elements is a key aspect of REST.</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; color: red; font-family: Times-Roman">Three fundamental options</span><span style="font-size: 12pt; font-family: Times-Roman">: 1) render the data where it is located and send a fixed-format image to the recipient; 2) encapsulate the data with a rendering engine and send both to the recipient; or, 3) send the raw data to the recipient along with metadata that describes the data type, so that the recipient can choose their own rendering engine.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">5.2.2</span><span style="font-size: 12pt; line-height: 173%"> Connectors</span></h3>
<h3><span style="font-size: 12pt; line-height: 173%">5.2.3</span><span style="font-size: 12pt; line-height: 173%"> Components</span></h3>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">代理和网关之间的区别是，何时使用代理是由客户端来决定的</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">5.3 REST Architectural Views<br />
</span></strong><span style="font-size: 12pt; line-height: 173%">5.3.1 P</span><span style="font-size: 12pt; line-height: 173%">rocess View<br />
</span><span style="font-size: 12pt; line-height: 173%">5.3.2</span><span style="font-size: 12pt; line-height: 173%"> Connector View<br />
</span><span style="font-size: 12pt; line-height: 173%">5.3.3</span><span style="font-size: 12pt; line-height: 173%"> Data View</span></p>
</span></h4>
<img src ="http://www.blogjava.net/honeybee/aggbug/181079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/honeybee/" target="_blank">sun</a> 2008-02-21 15:42 <a href="http://www.blogjava.net/honeybee/articles/181079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Designing the Web Architecture: Problems and Insights</title><link>http://www.blogjava.net/honeybee/articles/180790.html</link><dc:creator>sun</dc:creator><author>sun</author><pubDate>Wed, 20 Feb 2008 03:29:00 GMT</pubDate><guid>http://www.blogjava.net/honeybee/articles/180790.html</guid><wfw:comment>http://www.blogjava.net/honeybee/comments/180790.html</wfw:comment><comments>http://www.blogjava.net/honeybee/articles/180790.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/honeybee/comments/commentRss/180790.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/honeybee/services/trackbacks/180790.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-align: center" align="center"><span style="font-size: 16pt">Designing the Web Architecture: Problems and Insights</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">4.1 WWW Application Domain Requirements</span></strong></p>
<h3><span style="font-size: 12pt; line-height: 173%">4.1.1</span><span style="font-size: 12pt; line-height: 173%"> Low Entry-barrier</span></h3>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">1. Since participation in the creation and structuring of information was voluntary, a low entry-barrier was necessary to enable sufficient adoption. This applied to all users of the Web architecture: readers, authors, and application developers.</span></p>
<p><span style="font-family: Times-Roman">2. Simplicity was also a goal for the sake of application developers.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">4.1.2</span><span style="font-size: 12pt; line-height: 173%"> Extensibility</span></h3>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">Extensibility: A system intending to be as long-lived as the Web must be prepared for change.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">4.1.3</span><span style="font-size: 12pt; line-height: 173%"> Distributed Hypermedia</span></h3>
<p><span style="font-family: Times-Roman">1. The usability of hypermedia interaction is highly <span style="color: red">sensitive to user-perceived latency:</span> the time between selecting a link and the rendering of a usable result.</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">2. The architecture needs to minimize network interactions.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">4.1.4</span><span style="font-size: 12pt; line-height: 173%"> Internet-scale</span></h3>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">1. The Internet is about interconnecting information networks across multiple organizational boundaries.</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">2. Suppliers of information services must be able to cope with <span style="color: red">the demands of anarchic scalability</span> and <span style="color: red">the independent deployment of software components</span>.</span></p>
<h4><span style="font-size: 10.5pt; line-height: 156%">4.1.4</span><span style="font-size: 10.5pt; line-height: 156%">.1 Anarchic Scalability</span></h4>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">1. Anarchic scalability refers to the need for architectural elements to continue operating when they are subjected to an unanticipated load, or when given malformed or maliciously constructed data, since they may be communicating with elements outside their organizational control. </span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">2. The anarchic scalability requirement applies to all architectural elements.</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">3. Security of the architectural elements, and the platforms on which they operate, also becomes a significant concern.</span></p>
<h4><span style="font-size: 10.5pt; line-height: 156%">4.1.4</span><span style="font-size: 10.5pt; line-height: 156%">.2 Independent Deployment</span></h4>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">4.2 Problem</span></strong></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">4.3 Approach</span></strong></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">The <span style="color: red">first</span> step, is to identify the constraints placed within the early Web architecture that are responsible for its desirable properties.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid; font-family: Times-Bold">Hypothesis I</span></strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid; font-family: Times-Roman">: The design rationale behind the WWW architecture can be described by an architectural style consisting of the set of constraints applied to the elements within the Web architecture.</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">The <span style="color: red">next</span> step, is to identify the properties desirable in an Internet-scale distributed hypermedia system, select additional architectural styles that induce those properties, and combine them with the early Web constraints to form a new, hybrid architectural style for the modern Web architecture.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid; font-family: Times-Bold">Hypothesis II: Constraints can be added to the WWW architectural style to derive a new hybrid style that better reflects the desired properties of a modern Web architecture.</span></strong></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">The <span style="color: red">third</span> step, is to use the new architectural style as a guide, we can compare proposed extensions and modifications to the Web architecture against the constraints within the style.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid; font-family: Times-Bold">Hypothesis III: Proposals to modify the Web architecture can be compared to the updated WWW architectural style and analyzed for conflicts prior to deployment.</span></strong></p>
<p style="text-align: left" align="left"><strong><em><span style="font-family: Times-Roman">This approach as a single sequence, it is actually applied in a non-sequential, iterative fashion.</span></em></strong></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">4.4 Summary</span></strong></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">My approach is to use an architectural style to define and improve the design rationale behind the Web&#8217;s architecture, to use that style as the acid test for proving proposed extensions prior to their deployment, and to deploy the revised architecture via direct involvement in the software development projects that have created the Web&#8217;s infrastructure.</span></p>
<img src ="http://www.blogjava.net/honeybee/aggbug/180790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/honeybee/" target="_blank">sun</a> 2008-02-20 11:29 <a href="http://www.blogjava.net/honeybee/articles/180790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Network-based Architectural Styles</title><link>http://www.blogjava.net/honeybee/articles/180608.html</link><dc:creator>sun</dc:creator><author>sun</author><pubDate>Tue, 19 Feb 2008 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/honeybee/articles/180608.html</guid><wfw:comment>http://www.blogjava.net/honeybee/comments/180608.html</wfw:comment><comments>http://www.blogjava.net/honeybee/articles/180608.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/honeybee/comments/commentRss/180608.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/honeybee/services/trackbacks/180608.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-align: center" align="center"><span style="font-size: 16pt">Network-based Architectural Styles</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">3.1 Classification Methodology</span></strong></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">In order to provide useful design guidance, a classification of architectural styles should be based on the architectural properties induced by those styles.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">3.1.1</span><span style="font-size: 12pt; line-height: 173%"> Selection of Architectural Styles for Classification</span></h3>
<h3><span style="font-size: 12pt; line-height: 173%">3.1.2</span><span style="font-size: 12pt; line-height: 173%"> Style-induced Architectural Properties</span></h3>
<h3><span style="font-size: 12pt; line-height: 173%">3.1.3</span><span style="font-size: 12pt; line-height: 173%"> Visualization</span></h3>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">3.2 Data-flow Styles</span></strong></p>
<h3><span style="font-size: 12pt; line-height: 173%">3.2.1 P</span><span style="font-size: 12pt; line-height: 173%">ipe and Filter (PF)</span></h3>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Description</span></strong>:<span style="font-family: Times-Roman"> In a pipe and filter style, each component (filter) <span style="color: red">reads </span>streams of data on its inputs and <span style="color: red">produces </span>streams of data on its outputs, usually while applying a transformation to the input streams and processing them incrementally so that output begins before the input is completely consumed.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Characteristic</span></strong><span style="font-family: Times-Roman">:</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">1. One-way data flow network;</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">2. Zero coupling: a filter must be completely independent of other filters.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Advantage</span></strong><span style="font-family: Times-Roman">: (by Garlan and Shaw)</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">1. <em><span style="color: red">Simplicity</span></em>: PF allows the designer to understand the overall input/output of the system as a simple composition of the behaviors of the individual filters.</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">2. <em><span style="color: red">Reusability</span></em>: any two filters can be hooked together, provided they agree on the data that is being transmitted between them.</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">3. <em><span style="color: red">Extensibility</span></em> and <em><span style="color: red">evolvability</span></em>: new filters can be added to existing systems (extensibility) and old filters can be replaced by improved ones (evolvability).</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">4. <em><span style="color: red">Verifiability</span></em>: they permit certain kinds of specialized analysis.</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">5. <em><span style="color: red">User-perceived</span></em> <em><span style="color: red">performance</span></em>: they naturally support concurrent execution.</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">6. <em><span style="color: red">Configurability</span></em>: a network of filters is typically arranged just prior to each activation, allowing the application to specify the configuration of filter components based on the task at hand and the nature of the data streams.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Disadvantage</span></strong><span style="font-family: Times-Roman">:</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">1. <strong><em>Propagation delay</em></strong>: propagation delay is added through long pipelines;</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">2. <strong><em>Batch sequential processing occurs if a filter cannot incrementally process its inputs, and no interactivity is allowed.</em></strong> </span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">3. <strong><em>A filter cannot interact with its environment: </em></strong>because it cannot know that any particular output stream shares a controller with any particular input stream. </span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">4. <strong><em>User-perceived performance</em></strong>: these properties decrease user-perceived performance if the problem being addressed does not fit the pattern of a data flow stream.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">3.2.2</span><span style="font-size: 12pt; line-height: 173%"> Uniform Pipe and Filter (UPF)</span></h3>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Characteristic</span></strong><span style="font-family: Times-Roman">: the uniform pipe and filter style adds the constraint that all filters must<strong><em><span style="color: red"> have the same interface</span></em></strong>.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Advantage</span></strong><span style="font-family: Times-Roman">: </span></p>
<p style="text-align: left" align="left"><strong><span style="font-family: Times-Roman">Example</span></strong><span style="font-family: Times-Roman">: <em><span style="color: red">Unix</span></em> <em><span style="color: red">operating system</span></em>, where filter processes have an interface consisting of one input data stream of characters (stdin) and two output data streams of characters (stdout and stderr).</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">1. Restricting the interface allows independently developed filters to <span style="color: red">be arranged at will</span> to form new applications. </span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">2. It also <span style="color: red">simplifies</span> the task of understanding how a given filter works.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Disadvantage</span></strong><span style="font-family: Times-Roman">:</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">It may reduce network performance if the data needs to be converted to or from its natural format.</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">3.3 Replication Styles</span></strong></p>
<h3><span style="font-size: 12pt; line-height: 173%">3.3.1</span><span style="font-size: 12pt; line-height: 173%"> Replicated Repository (RR)</span></h3>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">Example: (1) distributed filesystems, such as XMS, and, (2) remote versioning systems, like CVS [www.cyclic.com].</span></p>
<p style="text-align: left" align="left"><strong>Advantage</strong><span style="font-family: Times-Roman">: Improved user-perceived performance, both by reducing the latency of normal requests and enabling disconnected operation in the face of primary server failure or <u>intentional roaming off the network</u>(</span><span style="font-family: 宋体">线下漫游</span><span style="font-family: Times-Roman">).</span></p>
<p style="text-align: left" align="left"><strong><span style="font-family: Times-Roman">Concern</span></strong><span style="font-family: Times-Roman">: <span style="color: red">Maintaining consistency is the primary concern</span>.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">3.3.2</span><span style="font-size: 12pt; line-height: 173%"> Cache ($)</span></h3>
<p style="text-align: left" align="left">This form of replication is most often found <span style="color: red">in cases (1) where the potential data set far exceeds the capacity of any one client, as in the WWW, or (2) where complete access to the repository is unnecessary.</span></p>
<p style="text-align: left" align="left"><strong>Advantage</strong>:caching is much <span style="color: red">easier to implement, doesn&#8217;t require as much processing and storage, and is<span style="color: red"> more efficient </span>because data is transmitted only when it is requested.</span></p>
<p style="text-align: left" align="left">A typical network-based architectural style: <strong><span style="color: red">client-stateless-server style </strong>(rest rationale).</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">3.4 Hierarchical Styles</span></strong></p>
<h3><span style="font-size: 12pt; line-height: 173%">3.4.1</span><span style="font-size: 12pt; line-height: 173%"> Client-Server (CS)</span></h3>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Description</span></strong>:</p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">1. </span><strong>A <em><span style="color: red">server</em> component</span></strong>: offering a set of services, listens for requests upon those services.</p>
<p style="text-indent: 10.35pt; text-align: left" align="left"><strong>A <em><span style="color: red">client</em> component</span></strong>: desiring that a service be performed, sends a request to the server via a connector.</p>
<p style="text-align: left" align="left">2. by Andrews:</p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">A <span style="color: red">client</span> is a <em><span style="color: red">triggering process</span></em>;</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">A <span style="color: red">server</span> is a <em><span style="color: red">reactive process</span></em>. </span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">Clients make requests that trigger reactions from servers.</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">A server is usually a <em>non-terminating</em> process and often provides service to <em>more than one</em> client.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Principle</span></strong><span style="font-family: Times-Roman">:</span><span style="color: red; font-family: Times-Roman">Separation of concerns.</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">Simplify the server component in order to improve scalability.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid; font-family: Times-Roman">Method</span></strong><span style="font-family: Times-Roman">: moving all of the user interface functionality into the client component.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">The partition between C and S components</span></strong><span style="font-family: Times-Roman">: It is often referred to by the mechanisms used for the connector implementation, such as <em>remote procedure call</em> or <em>message-oriented middleware</em>.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">3.4.2</span><span style="font-size: 12pt; line-height: 173%"> Layered System (LS) and Layered-Client-Server (LCS)</span></h3>
<p><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Layered System</span></strong><span style="font-family: Times-Roman">:</span></p>
<p><span style="font-family: Times-Roman">1. A layered system is organized hierarchically, each layer<span style="color: red"> <em>providing</em></span><em> services to the layer <strong>above</strong> it and <span style="color: red">using</span> services of the layer <strong>below</strong> it</em>.</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">2.</span><span style="font-family: Times-Roman">Layered systems reduce coupling across multiple layers by hiding the inner layers from all except the adjacent outer layer. In all, in multiple layers, <em>every layer <span style="color: red">only couple</span>s the adjacent outer layer</em>, thus improving evolvability and reusability (e.g., TCP/IP and OSI protocol stacks, and hardware interface libraries).</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">3. Disadvantage:</span><span style="font-family: Times-Roman">layered systems add overhead and latency to the processing of data, reducing user-perceived performance.</span></p>
<p><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Layered-Client-Server</span></strong><span style="font-family: Times-Roman">:</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">Layered-client-server adds <u><span style="color: red">proxy and gateway components</span></u> to the client-server style.</span></p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="font-family: Times-Roman">Client -&gt; Proxy -&gt; Gateway -&gt; Server</span></p>
<p style="text-align: left" align="left"><span style="color: red; font-family: Times-Roman">A proxy</span><span style="font-family: Times-Roman"> <strong><em>acts</em></strong> as a shared server <strong><em>for one or more client components, taking requests and forwarding them</em></strong>, with possible translation, <strong><em>to server components</em></strong>. </span></p>
<p style="text-align: left" align="left"><span style="color: red; font-family: Times-Roman">A gateway</span><span style="font-family: Times-Roman"> component <strong><em>appears to be a</em></strong> normal <strong><em>server to clients or proxies</em></strong> that request its services, but<strong><em> is in fact forwarding those requests</em></strong>, with possible translation, <strong><em>to its &#8220;inner-layer&#8221; servers</em></strong>.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">3.4.3</span><span style="font-size: 12pt; line-height: 173%"> Client-Stateless-Server (CSS)</span></h3>
<p><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Characteristic</span></strong><span style="font-family: Times-Roman">:<em><span style="color: red"> no </span></em></span><em><span style="color: red; font-family: Times-Italic">session state</span></em><em><span style="font-family: Times-Roman">is allowed on the server component</span></em><span style="font-family: Times-Roman">.</span></p>
<p><span style="font-family: Times-Roman">Each request from client to server must contain <span style="color: red">all</span> of the information necessary to understand the request, and cannot take advantage of any stored context on the server. <strong><em>Session state is kept entirely on the client</em></strong>.</span></p>
<p><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Advantage</span></strong><span style="font-family: Times-Roman">: <span style="color: red">visibility</span>, <span style="color: red">reliability</span>, and <span style="color: red">scalability</span>.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Disadvantage</span></strong><span style="font-family: Times-Roman">:</span><span style="font-family: Times-Roman">it may decrease network performance by increasing the repetitive data (per-interaction overhead) sent in a series of requests, since that data cannot be left on the server in a shared context.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">3.4.4</span><span style="font-size: 12pt; line-height: 173%"> Client-Cache-Stateless-Server (C$SS)</span></h3>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Characteristic</span></strong><span style="font-family: Times-Roman">: the client-cache-stateless-server style derives from the client-stateless-server and cache styles via the addition of cache components. </span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Description</span></strong>:<span style="font-family: Times-Roman"> A cache acts as a mediator between client and server in which the responses to prior requests can, if they are considered cacheable, be reused in response to later requests that are equivalent. </span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid; font-family: Times-Roman">Example</span></strong><span style="font-family: Times-Roman">: an example system that makes effective use of this style is Sun Microsystems&#8217; NFS.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Advantage</span></strong><span style="font-family: Times-Roman">: cache components have the potential to partially or completely eliminate some interactions, improving <span style="color: red">efficiency</span> and <span style="color: red">user-perceived performance</span>.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">3.4.5</span><span style="font-size: 12pt; line-height: 173%"> Layered-Client-Cache-Stateless-Server (LC$SS)</span></h3>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Characteristic</span></strong><span style="font-family: Times-Roman">: the layered-client-cache-stateless-server style derives from <span style="color: red">both layered-client-server and client-cache-stateless-server through</span> <span style="color: red">the addition of proxy and/or gateway components</span>.</span></p>
<p><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid; font-family: Times-Roman">Example</span></strong><span style="font-family: Times-Roman">: an example system that uses an LC$SS style is the Internet domain name system (DNS).</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">3.4.6</span><span style="font-size: 12pt; line-height: 173%"> Remote Session (RS)</span></h3>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Characteristic</span></strong><span style="font-family: Times-Roman">: <span style="color: red">minimize the complexity, or maximize the reuse of the client components,</span></span><span style="color: red; font-family: Times-Roman">and</span><span style="color: red; font-family: Times-Roman">the application state on server.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Description</span></strong>:<span style="font-family: Times-Roman"> each client initiates a session <u>on the server</u> and then invokes a series of services <u>on the server</u>, finally exiting the session. <span style="color: red">Application state is kept entirely <u>on the server</u></span>. </span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid; font-family: Times-Roman">Example</span></strong><span style="font-family: Times-Roman">: when it is desired to access a remote service using a generic client (e.g., TELNET) or via an interface that mimics a generic client (e.g., FTP).</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Advantage</span></strong><span style="font-family: Times-Roman">: (1) easier to centrally maintain the interface at the server, (2) reducing concerns about inconsistencies in deployed clients, and (3) improves efficiency if the interactions make use of extended session context on the server.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Disadvantage</span></strong><span style="font-family: Times-Roman">:</span><span style="font-family: Times-Roman">(1) reduces scalability of the server, due to the stored application state, and, (2) reduces visibility of interactions, since a monitor would have to know the complete state of the server.</span></p>
<h3><span style="font-size: 12pt; line-height: 173%">3.4.7</span><span style="font-size: 12pt; line-height: 173%"> Remote Data Access (RDA)</span></h3>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Characteristic</span></strong><span style="font-family: Times-Roman">: the remote data access style is a variant of client-server that<span style="color: red"> spreads the application state across both client and server</span>. </span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Description</span></strong>:<span style="font-family: Times-Roman"> a client sends a database query in a standard format, such as SQL, to a remote server. The server allocates a workspace and performs the query,which may result in a very large data set. <em>The client must know about the data structure of the service to build structure-dependent queries.</em></span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Advantage</span></strong><span style="font-family: Times-Roman">: </span></p>
<p style="text-align: left" align="left"><em><span style="color: red; font-family: Times-Roman">Eficiency</span></em><span style="font-family: Times-Roman">: a large data set can be iteratively reduced on the server side without transmitting it across the network.</span></p>
<p style="text-align: left" align="left"><em><span style="color: red; font-family: Times-Roman">Visibility</span></em><span style="font-family: Times-Roman">: is improved by using a standard query language.</span></p>
<p style="text-align: left" align="left"><strong><span style="border-right: windowtext 1pt solid; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">Disadvantage</span></strong><span style="font-family: Times-Roman">:</span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">Lacking<span style="color: red"> <em>simplicity</em></span>: the client needs to understand the same database manipulation concepts as the server implementation </span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">Decreases <em><span style="color: red">scalability</span></em>: storing application context on the server decreases <em><span style="color: red">scalability</span></em>. </span></p>
<p style="text-align: left" align="left"><span style="font-family: Times-Roman">Suffered<em><span style="color: red"> reliability</span></em>: partial failure can leave the workspace in an unknown state. </span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">3.5 Mobile Code Styles </span></strong></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">3.6 Peer-to-Peer Styles </span></strong></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">3.7 Limitations </span></strong></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 15pt; font-family: Times-Bold">3.8 Related Work</span></strong></p>
<img src ="http://www.blogjava.net/honeybee/aggbug/180608.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/honeybee/" target="_blank">sun</a> 2008-02-19 10:50 <a href="http://www.blogjava.net/honeybee/articles/180608.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>