﻿<?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-Javadream</title><link>http://www.blogjava.net/oxl/</link><description>A long way and a dream.</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:00:59 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:00:59 GMT</pubDate><ttl>60</ttl><item><title>使GDB能打印宏的方法</title><link>http://www.blogjava.net/oxl/archive/2009/09/15/295081.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Mon, 14 Sep 2009 17:44:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2009/09/15/295081.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/295081.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2009/09/15/295081.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/295081.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/295081.html</trackback:ping><description><![CDATA[$ gcc -gdwarf-2 -g3 sample.c -o sample
<img src ="http://www.blogjava.net/oxl/aggbug/295081.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2009-09-15 01:44 <a href="http://www.blogjava.net/oxl/archive/2009/09/15/295081.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>test</title><link>http://www.blogjava.net/oxl/archive/2009/02/26/256783.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Thu, 26 Feb 2009 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2009/02/26/256783.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/256783.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2009/02/26/256783.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/256783.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/256783.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;sqlalchemy<br />
</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;sqlalchemy.orm&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;relation,&nbsp;backref,&nbsp;sessionmaker<br />
</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;sqlalchemy.ext.declarative&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;declarative_base<br />
</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;sqlalchemy&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;Column,&nbsp;Integer,&nbsp;String,&nbsp;ForeignKey<br />
engine&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;sqlalchemy.create_engine(</span><span style="color: #800000;">'</span><span style="color: #800000;">sqlite:///:memory:</span><span style="color: #800000;">'</span><span style="color: #000000;">,&nbsp;echo</span><span style="color: #000000;">=</span><span style="color: #000000;">True)<br />
Base&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;declarative_base()<br />
session&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;sessionmaker(bind</span><span style="color: #000000;">=</span><span style="color: #000000;">engine)()<br />
<br />
</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Address(Base):<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">__tablename__</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">addresses</span><span style="color: #800000;">'</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Column(Integer,&nbsp;primary_key</span><span style="color: #000000;">=</span><span style="color: #000000;">True)<br />
&nbsp;&nbsp;&nbsp;&nbsp;content&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Column(String)<br />
&nbsp;&nbsp;&nbsp;&nbsp;user_id&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Column(Integer,&nbsp;sqlalchemy.ForeignKey(</span><span style="color: #800000;">'</span><span style="color: #800000;">users.id</span><span style="color: #800000;">'</span><span style="color: #000000;">))<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self,&nbsp;user,&nbsp;content):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.user&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.content&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;content<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__repr__</span><span style="color: #000000;">(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">&lt;Address('%s')&gt;</span><span style="color: #800000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;self.content<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;User(Base):<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">__tablename__</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">users</span><span style="color: #800000;">'</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Column(Integer,&nbsp;primary_key</span><span style="color: #000000;">=</span><span style="color: #000000;">True)<br />
&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Column(String)<br />
&nbsp;&nbsp;&nbsp;&nbsp;comment&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Column(String)<br />
&nbsp;&nbsp;&nbsp;&nbsp;addresses&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;relation(</span><span style="color: #800000;">'</span><span style="color: #800000;">Address</span><span style="color: #800000;">'</span><span style="color: #000000;">,&nbsp;order_by</span><span style="color: #000000;">=</span><span style="color: #800000;">'</span><span style="color: #800000;">Address.id</span><span style="color: #800000;">'</span><span style="color: #000000;">,&nbsp;backref</span><span style="color: #000000;">=</span><span style="color: #800000;">'</span><span style="color: #800000;">user</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self,&nbsp;name,&nbsp;comment):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.name&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.comment&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;comment<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__repr__</span><span style="color: #000000;">(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">&lt;User('%s',&nbsp;'%s')&gt;</span><span style="color: #800000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;(self.name,&nbsp;self.comment)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Photo(Base):<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">__tablename__</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">photos</span><span style="color: #800000;">'</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Column(Integer,&nbsp;primary_key</span><span style="color: #000000;">=</span><span style="color: #000000;">True)<br />
&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Column(String)<br />
&nbsp;&nbsp;&nbsp;&nbsp;user_id&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Column(Integer,&nbsp;ForeignKey(</span><span style="color: #800000;">'</span><span style="color: #800000;">users.id</span><span style="color: #800000;">'</span><span style="color: #000000;">))<br />
&nbsp;&nbsp;&nbsp;&nbsp;user&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;relation(</span><span style="color: #800000;">'</span><span style="color: #800000;">User</span><span style="color: #800000;">'</span><span style="color: #000000;">,&nbsp;backref</span><span style="color: #000000;">=</span><span style="color: #000000;">backref(</span><span style="color: #800000;">'</span><span style="color: #800000;">photos</span><span style="color: #800000;">'</span><span style="color: #000000;">))<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self,&nbsp;user,&nbsp;name):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.user&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.name&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;name<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__repr__</span><span style="color: #000000;">(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">&lt;Photo('%s')&gt;</span><span style="color: #800000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;self.name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
Base.metadata.create_all(bind</span><span style="color: #000000;">=</span><span style="color: #000000;">engine)</span></div>
<img src ="http://www.blogjava.net/oxl/aggbug/256783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2009-02-26 11:46 <a href="http://www.blogjava.net/oxl/archive/2009/02/26/256783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置Log4j</title><link>http://www.blogjava.net/oxl/archive/2008/11/27/242978.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Thu, 27 Nov 2008 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2008/11/27/242978.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/242978.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2008/11/27/242978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/242978.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/242978.html</trackback:ping><description><![CDATA[http://blog.csdn.net/azheng270/archive/2008/03/12/2173430.aspx<br />
<img src ="http://www.blogjava.net/oxl/aggbug/242978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2008-11-27 12:16 <a href="http://www.blogjava.net/oxl/archive/2008/11/27/242978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring中使用log4j</title><link>http://www.blogjava.net/oxl/archive/2008/11/27/242976.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Thu, 27 Nov 2008 04:09:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2008/11/27/242976.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/242976.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2008/11/27/242976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/242976.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/242976.html</trackback:ping><description><![CDATA[http://www.java3z.com/cwbwebhome/article/article2/2943.html?id=1638<br />
<img src ="http://www.blogjava.net/oxl/aggbug/242976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2008-11-27 12:09 <a href="http://www.blogjava.net/oxl/archive/2008/11/27/242976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2很强</title><link>http://www.blogjava.net/oxl/archive/2008/11/26/242676.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Tue, 25 Nov 2008 16:34:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2008/11/26/242676.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/242676.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2008/11/26/242676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/242676.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/242676.html</trackback:ping><description><![CDATA[今晚我用了一个晚上去搞那鸟form，呵呵，原来基础真的很重要，遇到不懂才翻书真的很慢。<br />
<br />
Struts2真的很强，它帮我搞定了重复提交或直接访问提交地址时遇到的问题，呵呵，token万岁。<br />
<br />
有点不知所语了，呵。<br />
<br />
<img src ="http://www.blogjava.net/oxl/aggbug/242676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2008-11-26 00:34 <a href="http://www.blogjava.net/oxl/archive/2008/11/26/242676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext 2 学习笔记（三）：Ext模块</title><link>http://www.blogjava.net/oxl/archive/2008/02/11/179595.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Mon, 11 Feb 2008 03:35:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2008/02/11/179595.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/179595.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2008/02/11/179595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/179595.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/179595.html</trackback:ping><description><![CDATA[<span style="font-family: Courier;">
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;定义一个模块，你可以像使用类一样使用它，你完全可以把它当成是类。</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;它利用js的一些特性实现私有和公有，就和applayout.js中定义的名命空间一样。</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;module&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;私有变量</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;message&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;'Hello,&nbsp;Ext&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;beginner.';<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;公用变量或函数</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;'oxl',<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init:&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;{<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.name;<br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show:&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;{<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.other();<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(message);<br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;other:&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;{<br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('Welcome&nbsp;to&nbsp;Ext&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">\'s&nbsp;world.');<br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;};<br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">}();</span></div>
</span>
<img src ="http://www.blogjava.net/oxl/aggbug/179595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2008-02-11 11:35 <a href="http://www.blogjava.net/oxl/archive/2008/02/11/179595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext 2 学习笔记（二）：Ext命名空间</title><link>http://www.blogjava.net/oxl/archive/2008/02/11/179594.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Mon, 11 Feb 2008 03:19:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2008/02/11/179594.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/179594.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2008/02/11/179594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/179594.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/179594.html</trackback:ping><description><![CDATA[<span style="font-family: Courier;">
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;btn1Text&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Hello,&nbsp;world.</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;填充图片的本地引用</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">Ext.BLANK_IMAGE_URL&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;'..</span><span style="color: #000000;">/</span><span style="color: #000000;">ext</span><span style="color: #000000;">/</span><span style="color: #000000;">resources</span><span style="color: #000000;">/</span><span style="color: #000000;">images</span><span style="color: #000000;">/</span><span style="color: #0000ff;">default</span><span style="color: #000000;">/</span><span style="color: #000000;">s.gif';<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;申明名字空间，用于下面的定义。</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">Ext.namespace(</span><span style="color: #000000;">"</span><span style="color: #000000;">myNameSpace</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;定义名字空间。</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;注意这里，因为function是立即运行的（因为最后还有个括号），所以myNameSpace.app得到的是这个函数返回的结果。</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;因为函数内定义的变量是不能被外部访问的，利用这种方式可以把变量定义为私有的方式。</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;因为返回的是一个对象，所以app得到的结果就是一个对象，所以就可以通过.运算符得到这个返回对象的变量和方法，</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;这样就可以利用这点申明为公用的变量。</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">myNameSpace.app&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;{<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;私有变量</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;btn1;<br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;privVar1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">11</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;私有函数</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;btn1Handler&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(button,&nbsp;event)&nbsp;{<br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;这里很巧妙，虽然表面上说是私有函数可以访问私有变量，可是这里利用了函数栈的概念，</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;即函数可以访问上一层函数定义的变量，这里的privVar1就是上一层函数中定义的变量了。</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('privVar1</span><span style="color: #000000;">=</span><span style="color: #000000;">'&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;privVar1);<br />
</span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;因为这里的this指向的window对象，所以这里的this.btn1Text为undefined.</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;当把它赋给一个对象的时候，this指向这个对象，也就是像下的调用一样。&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.btn1Text</span><span style="color: #000000;">=</span><span style="color: #000000;">'&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.btn1Text);<br />
</span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;};<br />
</span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;公共空间</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn1Text:&nbsp;'Button&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">',<br />
</span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init:&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;{<br />
</span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Ext.Button({<br />
</span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderTo:&nbsp;'btn1</span><span style="color: #000000;">-</span><span style="color: #000000;">ct',<br />
</span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.btn1Text,<br />
</span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler:&nbsp;btn1Handler,<br />
</span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scope:&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
</span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;调用btn1Handler函数，这里函数里的this指向的是window</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn1Handler();<br />
</span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;};<br />
</span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">}();<br />
</span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">Ext.apply(myNameSpace.app,&nbsp;{<br />
</span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;btn1Text:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Hello,&nbsp;Ext&nbsp;2.0</span><span style="color: #000000;">"</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;这里所说的重写特权函数也无法访问私有变量或私有函数，其实是因为他不在函数上下文，无法访问函数上一层定义的变量而已。</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;init:&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;{<br />
</span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Ext.Button({<br />
</span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderTo:&nbsp;'btn1</span><span style="color: #000000;">-</span><span style="color: #000000;">ct',<br />
</span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.btn1Text,<br />
</span><span style="color: #008080;">57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler:&nbsp;btn1Handler,<br />
</span><span style="color: #008080;">58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scope:&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
</span><span style="color: #008080;">60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(e)&nbsp;{<br />
</span><span style="color: #008080;">61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('错误:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">'&nbsp;+&nbsp;e.message&nbsp;+&nbsp;'</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;发生在行:&nbsp;'&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;e.lineNumber);<br />
</span><span style="color: #008080;">62</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">64</span>&nbsp;<span style="color: #000000;">});</span></div>
</span>
<img src ="http://www.blogjava.net/oxl/aggbug/179594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2008-02-11 11:19 <a href="http://www.blogjava.net/oxl/archive/2008/02/11/179594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext 2 学习笔记（一）：js变量作用域</title><link>http://www.blogjava.net/oxl/archive/2008/02/11/179590.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Mon, 11 Feb 2008 02:20:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2008/02/11/179590.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/179590.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2008/02/11/179590.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/179590.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/179590.html</trackback:ping><description><![CDATA[全局范围内申明的变量其实就是window对象的属性，比如说：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;test;</span></div>
<br />
我们可以用下面的方式得到它：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">window.test<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #0000ff;">this</span><span style="color: #000000;">.test</span></div>
<br />
因为在顶级范围，this指向window对象，可以这么认为，this指向window作用域。<br />
<br />
我们定义一个对象：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;obj1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">oxl</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;func:&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;{alert(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.name);}};<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;obj2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">blogjava</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;func:&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;{alert(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.name);}};</span></div>
<br />
<br />
这个时候，obj1和obj2都是window的属性，我们可以通过obj1.name访问obj1的name属性（obj2也同样），通过obj1.func()访问obj1的func方法。注意，这里使用this访问对象的name属性，因为这时func是obj1的方法，所以this指向的是obj1，所以，this.name其实就是obj1.name。<br />
<br />
我们又可以这样去调用obj1的方法：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">obj1.func.call(obj2);</span></div>
<br />
这时，在obj1.func函数中，所有的this都是指向obj2，与obj1没有任何关系，所以这时this.name其实就是obj2.name。<br />
<br />
总结：从上面我们可以这样认为，this总是指向自己的作用域范围，全局范围中它指向window，而在对象中，它指向对象，如果指定一个对象做为它的作用域，它指向这个对象。在Ext中就用到这样的方式，因为在onReady函数的第二个参数就作用域指定，估计也是用call方式指定作用域外。<br />
<img src ="http://www.blogjava.net/oxl/aggbug/179590.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2008-02-11 10:20 <a href="http://www.blogjava.net/oxl/archive/2008/02/11/179590.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 2 学习笔记（一）</title><link>http://www.blogjava.net/oxl/archive/2007/08/08/135198.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Wed, 08 Aug 2007 03:47:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2007/08/08/135198.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/135198.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2007/08/08/135198.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/135198.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/135198.html</trackback:ping><description><![CDATA[<p>一，FactoryBean<br>&nbsp;&nbsp;&nbsp;实现FactoryBean接口的bean类，在获取bean时并不是得到这个bean类的实例，而是通过这个FactoryBean的getObject方法得到实例，具体的类型由getObjectType方法返回。这种FactoryBean会被Spring自动检测并进行判断，而申明时像平时的bean那样申明，不过在定义property等属性时，则是对FactoryBean实例进行设置，而不是对生成的bean设置，认清这一点很重要。比如说常用的Spring DataSource就是一个FactoryBean。<br>下面是一个实例：<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;com.sanlea.study.spring2.ch03;<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.springframework.beans.factory.FactoryBean;<br><br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;UserFactoryBean&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;FactoryBean&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;name;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;email;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setEmail(String&nbsp;email)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.email&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;email;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;@Override<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Object&nbsp;getObject()&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;user&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;User();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setName(name&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setEmail(email&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;user;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;@SuppressWarnings(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">unchecked</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;@Override<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Class&nbsp;getObjectType()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;User.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;@Override<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000">&nbsp;isSingleton()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>}<br></span></div>
<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;定义一个FactoryBean(实现Spring接口的Bean,比如Spring中就有一些关于DataSource的FactoryBean)&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="fbUserInstance"</span><span style="COLOR: #ff0000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="COLOR: #0000ff">="com.sanlea.study.spring2.ch03.UserFactoryBean"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;这里设置的属性设置的是UserFactoryBean实例的属性,而不是UserFactoryBean实例生成的bean的属性&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="name"</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="mm"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="email"</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="mm@yinsha.com"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span></div>
<br>二、工厂方法创建bean<br>&nbsp;&nbsp;&nbsp;这是利用类的工厂方法创建实例的方法，主要是兼容旧有的代码，还有一些则是必须由一个类生成另一个类的实例的方法。比如说我要实例一个JDBC Connection类，那就要进行很多的步聚，如注册驱动，设置连接相关参数等等，这些并不能直接一个new就搞定，必须要有一定的步骤才能完成，所以就能用方法进行实例化了，在Spring也支持这种方式，主要是指定factory-method属性，如果工厂是一个bean的话就要指定factory-bean了。<br>下面是一个实例：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;com.sanlea.study.spring2.ch03;<br><br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;StaticFactoryBean&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;name;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;comment;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setComment(String&nbsp;comment)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.comment&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;comment;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;print()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">name:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;name);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">comment:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;comment);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;StaticFactoryBean(String&nbsp;name)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;StaticFactoryBean&nbsp;getInstance(String&nbsp;name)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;StaticFactoryBean(name);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span></div>
<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;静态工厂方法创建Bean&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="staticFactoryBean"</span><span style="COLOR: #ff0000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="COLOR: #0000ff">="com.sanlea.study.spring2.ch03.StaticFactoryBean"</span><span style="COLOR: #ff0000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory-method</span><span style="COLOR: #0000ff">="getInstance"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">constructor-arg&nbsp;</span><span style="COLOR: #ff0000">value</span><span style="COLOR: #0000ff">="juggler"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="comment"</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="a&nbsp;good&nbsp;man,&nbsp;but&nbsp;so&nbsp;sad"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span></div>
<img src ="http://www.blogjava.net/oxl/aggbug/135198.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2007-08-08 11:47 <a href="http://www.blogjava.net/oxl/archive/2007/08/08/135198.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>思考轻量级JEE Web程序架构</title><link>http://www.blogjava.net/oxl/archive/2007/08/01/133818.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Wed, 01 Aug 2007 08:50:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2007/08/01/133818.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/133818.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2007/08/01/133818.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/133818.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/133818.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Courier">注：标题写得有点夸张，这是本人的文学修养问题，不在讨论范围之内。这里的前提是使用贫血模型模式和轻量级JEE Web，没有考虑分布式。<br><br>这些天在看Hibernate的资料，除了对它的强大感到惊人之外，更多的就是烦恼，因为太多本来确定的理论现在都变得相当站不住脚，而且有些东西百思不得其解。这得从DAO层开始讲起，一般的架构是这样的：<br>&nbsp;&nbsp;&nbsp;&nbsp; Web层<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp;&nbsp; Service层<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp;&nbsp;&nbsp;&nbsp; DAO层<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp;&nbsp;&nbsp; 数据库</p>
因为DAO层主要负责对象持久的操作，而Service层则是除持久操作外操作，所以各自分工，层次分明。但是因为在按各种条件检索数据的时候，Service层需要向Web层提供相应的接口，比如说接用户名查订单需要一个接口，按时间查订单需要一个接口等等，但是这样使得DAO层同时也必须提供同样的接口，这样，当有新的需求时就要添加两个接口，而且通常Service层只是简单的调用一下DAO层而已。<br><br>而另有一种方法就是Service类继承DAO类，覆盖相应的方法，这使得只修改Dao的方法就可以了。但是就有了问题，因为Service层的接口要求的参数和DAO层的参数会不一样，这造成重载了相应的方法而不是覆盖相应的方法，也就是说Service类无端多了很多接口，使得调用有些混乱。<br><br>从实际来看，常用后面那种方法，而且和上一层程序员搞好默契，哪些方法可以用，哪些不可以。但是这带来的问题就是一不小心调用错了就麻烦了。而前一种虽然修改麻烦一点，但至少使得Service层是干净的接口，没有不用得上的接口。<br><br>其实在日常的开发中总是这样认为，DAO有没有一个万能的接口可以用于检索对象？就旭上面所说的，按用户名查订单等这样的操作，有没有一个通用的接口去实现呢？DAO不是做不到，而是开发这样的功能相当复杂，而且难以重用，似乎这是一个理想，一个难以实现的理想了。<br><br>从上面的讨论中我们可以看得到，DAO就是持久层，他负责对象的CRUD，而且我们希望有一个通用的检索对象的接口。<br><br>终于，我们的Hibernate横空出世了（超级赛亚人？）。他的Session实现了对象的CRUD，与此同时接供了基于HQL的Query接口，用于按条件检索对象，从这个意义上来说，他就是一个DAO实现，我们可以直接在Service层使用Hibernate做为的DAO。<br><br>可是为什么还有这么多人要在Hibernate之上建立DAO呢？无非就是做一个可更换持久层的系统（如JDO），又或者把Hibernate的一些Session操作隐藏起来，使得Service层的代码更为简洁明了。对于后面的说法还可以说得过去，可是前面的讲法就不妥了，因为通用的检索接口各个ORM实现都不相同，那么DAO很难做得到通用，这就又回到前面没有Hibernate之前的困境了；而与此同时，使用DAO也会有一些问题，就是必定是跨了多个Session进行的操作，那么在Update操作时就会把整个对象（这个对象是游离态的）进行所有字段的进行更新，实际上只有一两个字段被修改了，对于一些计数操作，这样的方式的性能相当差劲（比如说一篇文章有多少人阅读过了这样的计数）。<br><br>其实会这么样，我会直接在Service使用Hibernate做为DAO，在大多数中小型应用中，很少（几乎没有）有人会要求更换持久层中间件的，所以根本不用担心，而且维护也并没有想象中复杂，因为始终还是得对新的DAO层进行了解的，不是吗？ 
<img src ="http://www.blogjava.net/oxl/aggbug/133818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2007-08-01 16:50 <a href="http://www.blogjava.net/oxl/archive/2007/08/01/133818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring中定义Bean我用Constructor</title><link>http://www.blogjava.net/oxl/archive/2007/07/16/130598.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Mon, 16 Jul 2007 07:57:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2007/07/16/130598.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/130598.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2007/07/16/130598.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/130598.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/130598.html</trackback:ping><description><![CDATA[Spring文档推荐使用setter，可是我觉得使用Construtor理为准确一些，因为如果用setter的话，Bean就潜意识地认为会有容器给他注入依赖，那么这个Bean就依赖于某个容器。而使用Constructor的话，就明确告诉使用bean时必须的依赖，这样的bean就算是避开容器也照样可以运作。
<img src ="http://www.blogjava.net/oxl/aggbug/130598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2007-07-16 15:57 <a href="http://www.blogjava.net/oxl/archive/2007/07/16/130598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>理解WW的ValueStack</title><link>http://www.blogjava.net/oxl/archive/2007/07/06/128646.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Fri, 06 Jul 2007 09:48:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2007/07/06/128646.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/128646.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2007/07/06/128646.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/128646.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/128646.html</trackback:ping><description><![CDATA[<span style="FONT-FAMILY: Comic Sans MS">跟着《Webwork in Action》学到了OGNL，一直对ValueStack的概念很模糊，而书里也没有介绍清楚，我一直以来连ValueStack里Action是在栈顶呢还是在哪里一层都不清楚，怎么把一个自定义的对上push到ValueStack上，如果在action的execute中push，他是在栈顶呢，还是次于Action呢？<br><br>其实在WW中，ValueStack的栈结构是这样的，在执行Action之前把Action压入栈，这时Action就是栈顶，然后在Action.execute()时再把自定义的bean压入栈，那么这时这个自定义的bean就在栈顶了。所以在下面这样的JSP代码中，是先从自定义bean查起，然后才到Action。
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ww:property&nbsp;</span><span style="COLOR: #ff0000">value</span><span style="COLOR: #0000ff">="name"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span></div>
<br>在ActionContext上下文中，默认是从OgnlValueStack去查找，因为这样，所以在在查找OgnlValueStack的值时是不用#来标明它所在的值栈。而像Session和Application这样的Map，则需要前缀，像这样：#session.xxx,#application.xxx。<br><br>至于怎么在ActionContext中添加类似于Session的Map，只有一个方法就是调用put方法。<br><br>讲得很粗略，不过内里已经了清楚了。</span>
<img src ="http://www.blogjava.net/oxl/aggbug/128646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2007-07-06 17:48 <a href="http://www.blogjava.net/oxl/archive/2007/07/06/128646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>试用Eclipse 3.3的JEE，不稳定</title><link>http://www.blogjava.net/oxl/archive/2007/07/04/128060.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Wed, 04 Jul 2007 04:02:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2007/07/04/128060.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/128060.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2007/07/04/128060.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/128060.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/128060.html</trackback:ping><description><![CDATA[刚试用Eclipse 3.3的JEE，还没把WW配置好就挂掉了，太不稳定了。<br><br>还是IDEA好，不过IDEA也太吃内存太慢了，娘的，JAVA IDE还真没个好用的。
<img src ="http://www.blogjava.net/oxl/aggbug/128060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2007-07-04 12:02 <a href="http://www.blogjava.net/oxl/archive/2007/07/04/128060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 标准IO流的理解</title><link>http://www.blogjava.net/oxl/archive/2007/07/02/127558.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Mon, 02 Jul 2007 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2007/07/02/127558.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/127558.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2007/07/02/127558.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/127558.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/127558.html</trackback:ping><description><![CDATA[Java 流包括字节流和字符流，字节流通过IO设备以字节数据的方式读入，而字符流则是通过字节流读入数据转化成字符&#8220;流&#8221;的形式由用户驱使。<br><br>流可以通过包装进行功能上的扩充，比如说BufferedStream，可以缓冲流，提高读取的性能，其实在Java中都是以这种操作IO的。<br><br><span style="COLOR: red">但是我们不能把BufferedStream当成是实际可用的流，其实它们必须包装一个代表真实的IO设备的流才能操作，</span>比如说System.in和System.out，或者是数组和字符串（另一种包装的流）。<br><br>比如说InputStream可以这样用：<br>InputStream in = new BufferedInputStream(new BufferedInputStream(System.in));<br><br>而字符流呢？<br>其实字符流没有实际的形式，只能是通过包装一些特别的输入流才能进行字符操作，比如说包装字节流InputStream：<br>Reader reader = new InputStreamReader(System.in);<br>再比如说包装字符数组：<br>char[] in = new char[1024];<br>Reader reader = new CharArrayReader(in);<br><br>了解这些后，就能明白流的操作规律了。
<img src ="http://www.blogjava.net/oxl/aggbug/127558.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2007-07-02 15:26 <a href="http://www.blogjava.net/oxl/archive/2007/07/02/127558.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebWork文件上传中要做的事情</title><link>http://www.blogjava.net/oxl/archive/2007/06/27/126512.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Wed, 27 Jun 2007 03:00:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2007/06/27/126512.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/126512.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2007/06/27/126512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/126512.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/126512.html</trackback:ping><description><![CDATA[<p><span style="FONT-FAMILY: Comic Sans MS">webwork.properties加入以下内容：</span></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; FONT-FAMILY: Comic Sans MS; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">webwork.multipart.saveDir</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">d:\\tmp<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>webwork.multipart.parser</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">jakarta</span></div>
<br><span style="FONT-FAMILY: Comic Sans MS">/WEB-INF/lib加入下面的库：<br></span>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; FONT-FAMILY: Comic Sans MS; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">commons-io.jar<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>commons-fileupload.jar</span></div>
<br>Action内的实例变量可以是数据，不过他们必须遵从这样的格式：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; FONT-FAMILY: Comic Sans MS; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>file<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>fileContnetType<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>fileFileName</div>
<img src ="http://www.blogjava.net/oxl/aggbug/126512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2007-06-27 11:00 <a href="http://www.blogjava.net/oxl/archive/2007/06/27/126512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>今天试用IDEA</title><link>http://www.blogjava.net/oxl/archive/2007/05/18/118309.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Fri, 18 May 2007 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2007/05/18/118309.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/118309.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2007/05/18/118309.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/118309.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/118309.html</trackback:ping><description><![CDATA[觉得很方便，不过就是很吃内存，我单位这台机512M内存根本就不够用。<br><br>还好，在家的机器有1G内存，还好能运行。<br><br><img src ="http://www.blogjava.net/oxl/aggbug/118309.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2007-05-18 12:16 <a href="http://www.blogjava.net/oxl/archive/2007/05/18/118309.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>加把油啊。</title><link>http://www.blogjava.net/oxl/archive/2007/05/18/118273.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Fri, 18 May 2007 02:39:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2007/05/18/118273.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/118273.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2007/05/18/118273.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/118273.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/118273.html</trackback:ping><description><![CDATA[起步，起步，还在起跑线上，不过自己有了全程的地图，我坚信自己还会再跑到前面去的。
<img src ="http://www.blogjava.net/oxl/aggbug/118273.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2007-05-18 10:39 <a href="http://www.blogjava.net/oxl/archive/2007/05/18/118273.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决PHP UTF-8问题。</title><link>http://www.blogjava.net/oxl/archive/2007/01/19/94887.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Fri, 19 Jan 2007 03:29:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2007/01/19/94887.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/94887.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2007/01/19/94887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/94887.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/94887.html</trackback:ping><description><![CDATA[修改php.ini文件：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(128, 0, 0); font-weight: bold;">[</span><span style="color: rgb(128, 0, 0);">mbstring</span><span style="color: rgb(128, 0, 0); font-weight: bold;">]</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 0);">;</span><span style="color: rgb(0, 128, 0);"> language for internal character representation.</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">mbstring.language </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> Neutral<br /><br />mbstring.strict_detection </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> On<br /><br />default_charset </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> UTF-</span><span style="color: rgb(0, 0, 0);">8</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 128, 0);">;</span><span style="color: rgb(0, 128, 0);"> internal/script encoding.</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> Some encoding cannot work as internal encoding.</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> (e.g. SJIS, BIG5, ISO-2022-*)</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">mbstring.internal_encoding </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> UTF-</span><span style="color: rgb(0, 0, 0);">8</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 128, 0);">;</span><span style="color: rgb(0, 128, 0);"> http input encoding.</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">mbstring.http_input </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> UTF-</span><span style="color: rgb(0, 0, 0);">8</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 128, 0);">;</span><span style="color: rgb(0, 128, 0);"> http output encoding. mb_output_handler must be</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> registered as output buffer to function</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">mbstring.http_output </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> UTF-</span><span style="color: rgb(0, 0, 0);">8</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 128, 0);">;</span><span style="color: rgb(0, 128, 0);"> enable automatic encoding translation according to</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> mbstring.internal_encoding setting. Input chars are</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> converted to internal encoding by setting this to On.</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> Note: Do _not_ use automatic encoding translation for</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);">       portable libs/applications.</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">mbstring.encoding_translation </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> On<br /><br /></span><span style="color: rgb(0, 128, 0);">;</span><span style="color: rgb(0, 128, 0);"> automatic encoding detection order.</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> auto means</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">mbstring.detect_order </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> UTF-</span><span style="color: rgb(0, 0, 0);">8</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">ASCII<br /><br /></span><span style="color: rgb(0, 128, 0);">;</span><span style="color: rgb(0, 128, 0);"> substitute_character used when character cannot be converted</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> one from another</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">mbstring.substitute_character </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> none</span><span style="color: rgb(0, 128, 0);">;<br /></span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 0);">;</span><span style="color: rgb(0, 128, 0);"> overload(replace) single byte functions by mbstring functions.</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> etc. Possible values are 0,1,2,4 or combination of them.</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> For example, 7 for overload everything.</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> 0: No overload</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> 1: Overload mail() function</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> 2: Overload str*() functions</span><span style="color: rgb(0, 128, 0);"><br />;</span><span style="color: rgb(0, 128, 0);"> 4: Overload ereg*() functions</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">mbstring.func_overload </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">7</span></div><br />然后是修改my.ini：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(128, 0, 0); font-weight: bold;">[</span><span style="color: rgb(128, 0, 0);">mysql</span><span style="color: rgb(128, 0, 0); font-weight: bold;">]</span><span style="color: rgb(0, 0, 0);"><br />default-character-set</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">utf8<br /></span><span style="color: rgb(128, 0, 0); font-weight: bold;">[</span><span style="color: rgb(128, 0, 0);">mysqld</span><span style="color: rgb(128, 0, 0); font-weight: bold;">]</span><span style="color: rgb(0, 0, 0);"><br />default-character-set</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">utf8<br />default-storage-engine</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">MyISAM<br />init_connect</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">'SET NAMES utf8'</span></div><br /><img src ="http://www.blogjava.net/oxl/aggbug/94887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2007-01-19 11:29 <a href="http://www.blogjava.net/oxl/archive/2007/01/19/94887.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2007-1-17 </title><link>http://www.blogjava.net/oxl/archive/2007/01/17/94522.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Wed, 17 Jan 2007 15:39:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2007/01/17/94522.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/94522.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2007/01/17/94522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/94522.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/94522.html</trackback:ping><description><![CDATA[当一个女人发短信跟你说，我需要你，我真的很想很想见你时，你会是怎么样的心情？<br /><br />我的心情？我的心情是会出现一种很莫明的感动，然后不到十秒，立即变得沉默，然后原本应该做什么就做什么，像没有发生过一样。<br /><br />我不知道我这样做是不是近似于冷血，但是我清楚，我很不容易让自己心情变得平静，我不想改变现在的生活，至少在我认为我已经忘记了她之前，我不应该去接受任何人，更不应该去寻找别的什么人来代替。<br /><br />前些日子都在寻找一个人来代替，真有点迫不及待的意思，可是一场酒醒后，回看发送给对方的短信后，突然猛醒，制止了这场没有意义的行动。回想，有些事情会产生一连串的连锁反应，这算是命运的安排，而木讷的自己必然再次回到痛苦之地，那时必是永无超生之境了。<br /><br />让一切平静消逝吧。<br /><br />-----<br /><br />在看一些FreeBSD方面的资料，因为我的服务器要用到PHP，不过BSD方面的资料少一些，而且handbook并没有想象中那样完美，因为很多参数没有很详细地解释，而且也没有指明到哪去看这些参数的文档，唉，没办法，因为BSD的稳定，我需要它。<br /><br />这台服务器可能要托得很远，自己的时间又少，所以一定要很稳定的系统，性能反而是其次了。<br /><br />-----<br /><br />心里还是挂记着些什么，可是却是道不清言不明。<img src ="http://www.blogjava.net/oxl/aggbug/94522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2007-01-17 23:39 <a href="http://www.blogjava.net/oxl/archive/2007/01/17/94522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FreeBSD内核参数描述</title><link>http://www.blogjava.net/oxl/archive/2007/01/17/94466.html</link><dc:creator>oxl</dc:creator><author>oxl</author><pubDate>Wed, 17 Jan 2007 09:41:00 GMT</pubDate><guid>http://www.blogjava.net/oxl/archive/2007/01/17/94466.html</guid><wfw:comment>http://www.blogjava.net/oxl/comments/94466.html</wfw:comment><comments>http://www.blogjava.net/oxl/archive/2007/01/17/94466.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/oxl/comments/commentRss/94466.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxl/services/trackbacks/94466.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: #sysctl -ad &gt;&gt; kernel.dakern.ostype: Operating system typekern.osrelease: Operating system releasekern.osrevision: Operating system revisionkern.version: Kernel versionkern.maxvnodes: Maximum nu...&nbsp;&nbsp;<a href='http://www.blogjava.net/oxl/archive/2007/01/17/94466.html'>阅读全文</a><img src ="http://www.blogjava.net/oxl/aggbug/94466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxl/" target="_blank">oxl</a> 2007-01-17 17:41 <a href="http://www.blogjava.net/oxl/archive/2007/01/17/94466.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>