<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>解惑 &#187; 优化</title>
	<atom:link href="http://www.jiehoo.me/tag/%e4%bc%98%e5%8c%96/feed" rel="self" type="application/rss+xml" />
	<link>http://www.jiehoo.me</link>
	<description>解己之惑，解人之惑</description>
	<lastBuildDate>Mon, 19 Jul 2010 10:01:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Inner join的问题</title>
		<link>http://www.jiehoo.me/inner-join%e7%9a%84%e9%97%ae%e9%a2%98.htm</link>
		<comments>http://www.jiehoo.me/inner-join%e7%9a%84%e9%97%ae%e9%a2%98.htm#comments</comments>
		<pubDate>Fri, 21 Dec 2007 13:27:51 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
				<category><![CDATA[软件开发]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[inner join]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://www.jiehoo.com/inner-join%e7%9a%84%e9%97%ae%e9%a2%98.htm</guid>
		<description><![CDATA[这个是最近感觉最有成就的一个发现了。 我们的系统有一个存储过程执行一个很核心的查询功能，但是在某些情况下非常的慢，而且最近QA一直在做性能测试，每天发送大量的数据，导致系统的性能越来越慢，我原来也曾经优化过这个存储过程，建了很多索引，解决了那个时候管理员用户的问题，但是现在很多普通用户的问题更加的严重，经过调试发现第一步的查询非常的慢，打印出结果来发现那个查询会产生9千万条纪录，而且会使用多达6G的硬盘空间来存储临时数据，后来加了个distinct解决了空间问题，空间使用不到6M，但是速度还是很慢，使用Tuning Advisor优化也没有什么帮助，后来我想了下为什么会产生那么多相同的数据呢？仔细看了下SQL，发现它用6个表进行inner join，但是只从其中的四个表各取一个字段，我就把另外的两个表从inner join移到where条件了，查询时间从6分钟（问题最大的一个用户）减少到6秒，呵呵]]></description>
			<content:encoded><![CDATA[<p class='fp'>这个是最近感觉最有成就的一个发现了。<br />
我们的系统有一个存储过程执行一个很核心的查询功能，但是在某些情况下非常的慢，而且最近QA一直在做性能测试，每天发送大量的数据，导致系统的性能越来越慢，我原来也曾经优化过这个存储过程，建了很多索引，解决了那个时候管理员用户的问题，但是现在很多普通用户的问题更加的严重，经过调试发现第一步的查询非常的慢，打印出结果来发现那个查询会产生9千万条纪录，而且会使用多达6G的硬盘空间来存储临时数据，后来加了个distinct解决了空间问题，空间使用不到6M，但是速度还是很慢，使用Tuning Advisor优化也没有什么帮助，后来我想了下为什么会产生那么多相同的数据呢？仔细看了下SQL，发现它用6个表进行inner join，但是只从其中的四个表各取一个字段，我就把另外的两个表从inner join移到where条件了，查询时间从6分钟（问题最大的一个用户）减少到6秒，呵呵<img src="/FCKeditor/editor/images/smiley/msn/lightbulb.gif" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiehoo.me/inner-join%e7%9a%84%e9%97%ae%e9%a2%98.htm/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google面试题解说性能之总结</title>
		<link>http://www.jiehoo.me/google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e6%80%bb%e7%bb%93.htm</link>
		<comments>http://www.jiehoo.me/google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e6%80%bb%e7%bb%93.htm#comments</comments>
		<pubDate>Fri, 06 Apr 2007 08:44:16 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[性能]]></category>

		<guid isPermaLink="false">http://www.jiehoo.com/google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e6%80%bb%e7%bb%93.htm</guid>
		<description><![CDATA[呵呵，说了这么多，到底怎么优化性能还是没有说多少，而且一个产品的代码比这个例子复杂得多，怎么才能优化产品代码呢？ 很简单，找到性能瓶颈，而大部分的性能瓶颈都有一个特点：被执行的次数太多。一个耗时2分钟的操作，如果系统运行一天才需要运行一次，那么我们根本就不要去理会它，如果一个操作耗时2秒，但是一般运行一天它要被执行几千亿次，那么你就要小心了。 如何才能知道系统中的哪些代码被执行的次数最多呢？有很多工具可以，有的是挂到系统上一起运行，有的是可以单独运行，但是我推荐的方法就是使用单元测试工具和代码覆盖工具，运行所有的单元测试，查看代码覆盖报告中被执行的次数最多的那些语句，看看他们是否可以被优化，或者可以被减少执行的次数。 可以参考我以前的一些日志： Ant+JUnit+Cobertura 成功提高20倍性能 很多情况下，找到性能的瓶颈并不是很困难，真正困难的是如何进行优化。这个没有通用的解决方法，只能结合具体的问题具体解决，一个大部分情况下有效的方法是使用某种缓存机制（实际上，我的第二个例子也是使用了缓存机制，把运算结果缓存了9次）。 Google面试题解说性能之一：字符串运算VS数字运算 Google面试题解说性能之二：分析问题 Google面试题解说性能之三：不要小看循环中的任何一个语句 Google面试题解说性能之四：优化无止境 Google面试题解说性能之五：人比电脑聪明 Google面试题解说性能之六：数学显神威 Google面试题解说性能之七：缓存中间结果 Google面试题解说性能之八：工欲善其事必先利其器 Google面试题解说性能之总结]]></description>
			<content:encoded><![CDATA[<p class='fp'>呵呵，说了这么多，到底怎么优化性能还是没有说多少，而且一个产品的代码比这个例子复杂得多，怎么才能优化产品代码呢？<br />
很简单，找到性能瓶颈，而大部分的性能瓶颈都有一个特点：被执行的次数太多。一个耗时2分钟的操作，如果系统运行一天才需要运行一次，那么我们根本就不要去理会它，如果一个操作耗时2秒，但是一般运行一天它要被执行几千亿次，那么你就要小心了。<br />
如何才能知道系统中的哪些代码被执行的次数最多呢？有很多工具可以，有的是挂到系统上一起运行，有的是可以单独运行，但是我推荐的方法就是使用单元测试工具和代码覆盖工具，运行所有的单元测试，查看代码覆盖报告中被执行的次数最多的那些语句，看看他们是否可以被优化，或者可以被减少执行的次数。<br />
可以参考我以前的一些日志：<br />
<a href="http://www.jiehoo.com/ant-junit-cobertura.htm">Ant+JUnit+Cobertura</a> <br />
<a href="http://www.jiehoo.com/improve-performance-twenty-times.htm">成功提高20倍性能</a></p>
<p>很多情况下，找到性能的瓶颈并不是很困难，真正困难的是如何进行优化。这个没有通用的解决方法，只能结合具体的问题具体解决，一个大部分情况下有效的方法是使用某种缓存机制（实际上，我的第二个例子也是使用了缓存机制，把运算结果缓存了9次）。</p>
<ol>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e4%b8%80%ef%bc%9a%e5%ad%97%e7%ac%a6%e4%b8%b2%e8%bf%90%e7%ae%97vs%e6%95%b0%e5%ad%97%e8%bf%90%e7%ae%97.htm" rel="bookmark" title="到 Google面试题解说性能之一：字符串运算VS数字运算 的永久链接">Google面试题解说性能之一：字符串运算VS数字运算</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e4%ba%8c%ef%bc%9a%e5%88%86%e6%9e%90%e9%97%ae%e9%a2%98.htm" rel="bookmark" title="到 Google面试题解说性能之二：分析问题 的永久链接">Google面试题解说性能之二：分析问题</a></h3>
</li>
<li>
<h3><a href="../../google-performance-3.htm" rel="bookmark" title="到 Google面试题解说性能之三：不要小看循环中的任何一个语句 的永久链接">Google面试题解说性能之三：不要小看循环中的任何一个语句</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e5%9b%9b%ef%bc%9a%e4%bc%98%e5%8c%96%e6%97%a0%e6%ad%a2%e5%a2%83.htm" rel="bookmark" title="到 Google面试题解说性能之四：优化无止境 的永久链接">Google面试题解说性能之四：优化无止境</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e4%ba%94%ef%bc%9a%e4%ba%ba%e6%af%94%e7%94%b5%e8%84%91%e8%81%aa%e6%98%8e.htm" rel="bookmark" title="到 Google面试题解说性能之五：人比电脑聪明 的永久链接">Google面试题解说性能之五：人比电脑聪明</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e5%85%ad%ef%bc%9a%e6%95%b0%e5%ad%a6%e6%98%be%e7%a5%9e%e5%a8%81.htm" rel="bookmark" title="到 Google面试题解说性能之六：数学显神威 的永久链接">Google面试题解说性能之六：数学显神威</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e4%b8%83%ef%bc%9a%e7%bc%93%e5%ad%98%e4%b8%ad%e9%97%b4%e7%bb%93%e6%9e%9c.htm" rel="bookmark" title="到 Google面试题解说性能之七：缓存中间结果 的永久链接">Google面试题解说性能之七：缓存中间结果</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e5%85%ab%ef%bc%9a%e5%b7%a5%e6%ac%b2%e5%96%84%e5%85%b6%e4%ba%8b%e5%bf%85%e5%85%88%e5%88%a9%e5%85%b6%e5%99%a8.htm" rel="bookmark" title="到 Google面试题解说性能之八：工欲善其事必先利其器 的永久链接">Google面试题解说性能之八：工欲善其事必先利其器</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e6%80%bb%e7%bb%93.htm" rel="bookmark" title="到 Google面试题解说性能之总结 的永久链接">Google面试题解说性能之总结</a></h3>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.jiehoo.me/google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e6%80%bb%e7%bb%93.htm/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google面试题解说性能之四：优化无止境</title>
		<link>http://www.jiehoo.me/google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e5%9b%9b%ef%bc%9a%e4%bc%98%e5%8c%96%e6%97%a0%e6%ad%a2%e5%a2%83.htm</link>
		<comments>http://www.jiehoo.me/google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e5%9b%9b%ef%bc%9a%e4%bc%98%e5%8c%96%e6%97%a0%e6%ad%a2%e5%a2%83.htm#comments</comments>
		<pubDate>Fri, 06 Apr 2007 08:30:55 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[性能]]></category>

		<guid isPermaLink="false">http://www.jiehoo.com/google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e5%9b%9b%ef%bc%9a%e4%bc%98%e5%8c%96%e6%97%a0%e6%ad%a2%e5%a2%83.htm</guid>
		<description><![CDATA[其实在例子二的基础上，我们进一步的分析，可以把缓存10个结果换成缓存100个结果，性能可以得到进一步提升： public class GoogleFn { &#160; private static int MAX = 13200000; &#160; private static int MAX2 = MAX / 10; &#160; private static int MAX3 = MAX2 / 10; &#160; private static int count(int n) { &#160;&#160;&#160; int count = 0; &#160;&#160;&#160; while (n &#62; 0) { &#160;&#160;&#160;&#160;&#160; int mod = n % 10; [...]]]></description>
			<content:encoded><![CDATA[<p class='fp'>其实在<a href="http://www.jiehoo.com/google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e4%ba%8c%ef%bc%9a%e5%88%86%e6%9e%90%e9%97%ae%e9%a2%98.htm">例子二的基础上</a>，我们进一步的分析，可以把缓存10个结果换成缓存100个结果，性能可以得到进一步提升：<br />
public class GoogleFn {<br />
&nbsp; private static int MAX = 13200000;</p>
<p>&nbsp; private static int MAX2 = MAX / 10;</p>
<p>&nbsp; private static int MAX3 = MAX2 / 10;</p>
<p>&nbsp; private static int count(int n) {<br />
&nbsp;&nbsp;&nbsp; int count = 0;<br />
&nbsp;&nbsp;&nbsp; while (n &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int mod = n % 10;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (mod == 1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = n / 10;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return count;<br />
&nbsp; }</p>
<p><span id="more-476"></span> &nbsp; private static void method1() {<br />
&nbsp;&nbsp;&nbsp; long start = System.currentTimeMillis();<br />
&nbsp;&nbsp;&nbsp; int result = 0;<br />
&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; MAX2; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int number = i * 10;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int value = count(number);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; 10; j++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result += value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (j == 1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x = number + j;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (result == x &amp;&amp; x != 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(x, start);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp; }</p>
<p>&nbsp; private static void method2() {<br />
&nbsp;&nbsp;&nbsp; long start = System.currentTimeMillis();<br />
&nbsp;&nbsp;&nbsp; int result = 0;<br />
&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; MAX3; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int number = i * 100;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int value = count(number);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; 10; j++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int k = 0; k &lt; 10; k++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x = number + j * 10 + k;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result += value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (j == 1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (k == 1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (result == x &amp;&amp; x != 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(x, start);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp; }</p>
<p>&nbsp; private static void print(int n, long start) {<br />
&nbsp;&nbsp;&nbsp; System.out.println(&quot;Find &quot; + n + &quot;, &quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + (System.currentTimeMillis() &#8211; start) + &quot;ms&quot;);<br />
&nbsp; }</p>
<p>&nbsp; public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp; method1();<br />
&nbsp;&nbsp;&nbsp; method2();<br />
&nbsp; }<br />
}</p>
<p>运行结果：<br />
Find 1, 0ms<br />
Find 199981, 16ms<br />
Find 199982, 16ms<br />
Find 199983, 16ms<br />
Find 199984, 16ms<br />
Find 199985, 16ms<br />
Find 199986, 16ms<br />
Find 199987, 16ms<br />
Find 199988, 16ms<br />
Find 199989, 16ms<br />
Find 199990, 16ms<br />
Find 200000, 16ms<br />
Find 200001, 16ms<br />
Find 1599981, 78ms<br />
Find 1599982, 78ms<br />
Find 1599983, 78ms<br />
Find 1599984, 78ms<br />
Find 1599985, 78ms<br />
Find 1599986, 78ms<br />
Find 1599987, 78ms<br />
Find 1599988, 78ms<br />
Find 1599989, 78ms<br />
Find 1599990, 78ms<br />
Find 2600000, 125ms<br />
Find 2600001, 125ms<br />
Find 13199998, 625ms<br />
Find 1, 0ms<br />
Find 199981, 16ms<br />
Find 199982, 16ms<br />
Find 199983, 16ms<br />
Find 199984, 16ms<br />
Find 199985, 16ms<br />
Find 199986, 16ms<br />
Find 199987, 16ms<br />
Find 199988, 16ms<br />
Find 199989, 16ms<br />
Find 199990, 16ms<br />
Find 200000, 16ms<br />
Find 200001, 16ms<br />
Find 1599981, 31ms<br />
Find 1599982, 31ms<br />
Find 1599983, 31ms<br />
Find 1599984, 31ms<br />
Find 1599985, 31ms<br />
Find 1599986, 31ms<br />
Find 1599987, 31ms<br />
Find 1599988, 31ms<br />
Find 1599989, 31ms<br />
Find 1599990, 31ms<br />
Find 2600000, 47ms<br />
Find 2600001, 47ms<br />
Find 13199998, 219ms</p>
<p>可以看出，缓存100个结果比缓存10个结果又快了近3倍，这个时候我们可能会想，那么我缓存1000个结果呢，很遗憾，按照这个方法缓存1000个的结果和缓存100个结果无异。当然，肯定还有其他的更优解。</p>
<ol>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e4%b8%80%ef%bc%9a%e5%ad%97%e7%ac%a6%e4%b8%b2%e8%bf%90%e7%ae%97vs%e6%95%b0%e5%ad%97%e8%bf%90%e7%ae%97.htm" rel="bookmark" title="到 Google面试题解说性能之一：字符串运算VS数字运算 的永久链接">Google面试题解说性能之一：字符串运算VS数字运算</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e4%ba%8c%ef%bc%9a%e5%88%86%e6%9e%90%e9%97%ae%e9%a2%98.htm" rel="bookmark" title="到 Google面试题解说性能之二：分析问题 的永久链接">Google面试题解说性能之二：分析问题</a></h3>
</li>
<li>
<h3><a href="../../google-performance-3.htm" rel="bookmark" title="到 Google面试题解说性能之三：不要小看循环中的任何一个语句 的永久链接">Google面试题解说性能之三：不要小看循环中的任何一个语句</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e5%9b%9b%ef%bc%9a%e4%bc%98%e5%8c%96%e6%97%a0%e6%ad%a2%e5%a2%83.htm" rel="bookmark" title="到 Google面试题解说性能之四：优化无止境 的永久链接">Google面试题解说性能之四：优化无止境</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e4%ba%94%ef%bc%9a%e4%ba%ba%e6%af%94%e7%94%b5%e8%84%91%e8%81%aa%e6%98%8e.htm" rel="bookmark" title="到 Google面试题解说性能之五：人比电脑聪明 的永久链接">Google面试题解说性能之五：人比电脑聪明</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e5%85%ad%ef%bc%9a%e6%95%b0%e5%ad%a6%e6%98%be%e7%a5%9e%e5%a8%81.htm" rel="bookmark" title="到 Google面试题解说性能之六：数学显神威 的永久链接">Google面试题解说性能之六：数学显神威</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e4%b8%83%ef%bc%9a%e7%bc%93%e5%ad%98%e4%b8%ad%e9%97%b4%e7%bb%93%e6%9e%9c.htm" rel="bookmark" title="到 Google面试题解说性能之七：缓存中间结果 的永久链接">Google面试题解说性能之七：缓存中间结果</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e5%85%ab%ef%bc%9a%e5%b7%a5%e6%ac%b2%e5%96%84%e5%85%b6%e4%ba%8b%e5%bf%85%e5%85%88%e5%88%a9%e5%85%b6%e5%99%a8.htm" rel="bookmark" title="到 Google面试题解说性能之八：工欲善其事必先利其器 的永久链接">Google面试题解说性能之八：工欲善其事必先利其器</a></h3>
</li>
<li>
<h3><a href="../../google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e6%80%bb%e7%bb%93.htm" rel="bookmark" title="到 Google面试题解说性能之总结 的永久链接">Google面试题解说性能之总结</a></h3>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.jiehoo.me/google%e9%9d%a2%e8%af%95%e9%a2%98%e8%a7%a3%e8%af%b4%e6%80%a7%e8%83%bd%e4%b9%8b%e5%9b%9b%ef%bc%9a%e4%bc%98%e5%8c%96%e6%97%a0%e6%ad%a2%e5%a2%83.htm/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>优化tomcat</title>
		<link>http://www.jiehoo.me/%e4%bc%98%e5%8c%96tomcat.htm</link>
		<comments>http://www.jiehoo.me/%e4%bc%98%e5%8c%96tomcat.htm#comments</comments>
		<pubDate>Wed, 08 Jun 2005 08:17:30 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://www.jiehoo.com/%e4%bc%98%e5%8c%96tomcat.htm</guid>
		<description><![CDATA[主要是修改http Connector的一些参数，我认为比较主要的有： maxThreads：可以创建的用来处理请求的最大线程数，这个是在服务器负载没有完全发挥出来时可以调整的最重要的参数，默认是200，建议可以开到500左右。 bufferSize：请求的输入流的缓存大小，默认是2K，建议可以开到10K左右，特别是对于发布大文本内容而言。 connectionTimeout：连接超时的时间，默认是60秒，建议修改为20秒]]></description>
			<content:encoded><![CDATA[<p class='fp'>主要是修改http Connector的一些参数，我认为比较主要的有： <br />
maxThreads：可以创建的用来处理请求的最大线程数，这个是在服务器负载没有完全发挥出来时可以调整的最重要的参数，默认是200，建议可以开到500左右。 <br />
bufferSize：请求的输入流的缓存大小，默认是2K，建议可以开到10K左右，特别是对于发布大文本内容而言。 <br />
connectionTimeout：连接超时的时间，默认是60秒，建议修改为20秒</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiehoo.me/%e4%bc%98%e5%8c%96tomcat.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
