??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲视频三区,色婷婷国产精品久久包臀,成人三级毛片http://www.aygfsteel.com/sevenduan/无论怎样Q请让我先感谢一下国家?/description>zh-cnSun, 06 Jul 2025 05:03:26 GMTSun, 06 Jul 2025 05:03:26 GMT60?5匚wQ每匚w都以一个固定不变的速度奔跑Q每匚w的速度都不一P如果让你扑և跑的最快的5匚wQ最需要组l多场比赛Q注Q每场比赛最多只?匚w参赛?/title><link>http://www.aygfsteel.com/sevenduan/archive/2012/03/07/371431.html</link><dc:creator>sevenduan</dc:creator><author>sevenduan</author><pubDate>Wed, 07 Mar 2012 13:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/sevenduan/archive/2012/03/07/371431.html</guid><wfw:comment>http://www.aygfsteel.com/sevenduan/comments/371431.html</wfw:comment><comments>http://www.aygfsteel.com/sevenduan/archive/2012/03/07/371431.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/sevenduan/comments/commentRss/371431.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/sevenduan/services/trackbacks/371431.html</trackback:ping><description><![CDATA[<div>?5匚wQ每匚w都以一个固定不变的速度奔跑Q每匚w的速度都不一P如果让你扑և跑的最快的5匚wQ最需要组l多场比赛Q注Q每场比赛最多只?匚w参赛?br />re:悲观10场,乐观7场?/div><img src ="http://www.aygfsteel.com/sevenduan/aggbug/371431.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/sevenduan/" target="_blank">sevenduan</a> 2012-03-07 21:17 <a href="http://www.aygfsteel.com/sevenduan/archive/2012/03/07/371431.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Really Useful Shortkeyhttp://www.aygfsteel.com/sevenduan/archive/2010/08/07/328218.htmlsevenduansevenduanSat, 07 Aug 2010 15:14:00 GMThttp://www.aygfsteel.com/sevenduan/archive/2010/08/07/328218.htmlhttp://www.aygfsteel.com/sevenduan/comments/328218.htmlhttp://www.aygfsteel.com/sevenduan/archive/2010/08/07/328218.html#Feedback0http://www.aygfsteel.com/sevenduan/comments/commentRss/328218.htmlhttp://www.aygfsteel.com/sevenduan/services/trackbacks/328218.html ctrl+o
ctrl+space
ctrl+t
ctrl+k
ctrl+f8/f9/f10

alt+shift+x , t/j
alt+shift+d , t/j

Command:
cd -
tab
ctrl+a/e
ctrl+u/k/w

Vim
shift+g
m+'mark'
`+'mark'
. (repeat)





sevenduan 2010-08-07 23:14 发表评论
]]>
Java logging frameworkhttp://www.aygfsteel.com/sevenduan/archive/2010/07/18/326473.htmlsevenduansevenduanSun, 18 Jul 2010 14:15:00 GMThttp://www.aygfsteel.com/sevenduan/archive/2010/07/18/326473.htmlhttp://www.aygfsteel.com/sevenduan/comments/326473.htmlhttp://www.aygfsteel.com/sevenduan/archive/2010/07/18/326473.html#Feedback0http://www.aygfsteel.com/sevenduan/comments/commentRss/326473.htmlhttp://www.aygfsteel.com/sevenduan/services/trackbacks/326473.html Framework Supported log levels Standard appenders Popularity Cost / licence Log4J FATAL ERROR WARN INFO DEBUG TRACE AsyncAppender, JDBCAppender, JMSAppender, LF5Appender, NTEventLogAppender, NullAppender, SMTPAppender, SocketAppender, SocketHubAppender, SyslogAppender, TelnetAppender, WriterAppender Widely used in many project and platforms Apache License, Version 2.0 Java Logging API SEVERE WARNING INFO CONFIG FINE FINER FINEST Depends on the underlying framework; Sun's default Java Virtual Machine (JVM) has the following: ConsoleHandler, FileHandler, SocketHandler, MemoryHandler Not widely used[citation needed] Comes with the JRE Apache Commons Logging FATAL ERROR WARN INFO DEBUG TRACE Depends on the underlying framework Widely used, in conjunction with log4j Apache License, Version 2.0 SLF4J ERROR WARN INFO DEBUG TRACE Depends on the underlying framework, which is pluggable Probably small but growing MIT License

sevenduan 2010-07-18 22:15 发表评论
]]>
java transaction summaryhttp://www.aygfsteel.com/sevenduan/archive/2010/04/25/319319.htmlsevenduansevenduanSun, 25 Apr 2010 08:44:00 GMThttp://www.aygfsteel.com/sevenduan/archive/2010/04/25/319319.htmlhttp://www.aygfsteel.com/sevenduan/comments/319319.htmlhttp://www.aygfsteel.com/sevenduan/archive/2010/04/25/319319.html#Feedback0http://www.aygfsteel.com/sevenduan/comments/commentRss/319319.htmlhttp://www.aygfsteel.com/sevenduan/services/trackbacks/319319.html1 definition:

“A transaction is a complete unit of work. It may comprise many computational tasks,which may include user interface, data retrieval, and communications. A typicaltransaction modifies shared resources.”

2 transaction features:
ACID (atomicity, consistency, isolation, durability)

3 java spec
JTA, JTS
 1interface javax.transaction.TransactionManager
 2{
 3public abstract void begin();
 4public abstract void commit();
 5public abstract int getStatus();
 6public abstract Transaction getTransaction();
 7public void resume(Transaction tobj);
 8public abstract void rollback();
 9public abstract void setRollbackOnly();
10public abstract void setTransactionTimeout(intseconds);
11public abstract Transaction suspend() ;
12}

4 Common XAResource
JDBC 2.0:
A JDBC driver that supports distributed transactions implements the javax.transaction.xa.XAResource interface, the javax.sql.XAConnectioninterface, and the  javax.sql.XADataSource interface.

JMS 1.0:

a JMS provider javax.transaction.xa.XAResource interface, the implements the javax.jms.XAConnection and the javax.jms.XASession interface.

5 Common TransactionManager

5.1 EJB Transaction Options:
NotSupported
    If the method is called within a transaction, this transaction is suspended during the time of the method execution.
Required
    If the method is called within a transaction, the method is executed in the scope of this transaction; otherwise, a new transaction is started for the execution of the method and committed before the method result is sent to the caller.
RequiresNew
    The method will always be executed within the scope of a new transaction. The new transaction is started for the execution of the method, and committed before the method result is sent to the caller. If the method is called within a transaction, this transaction is suspended before the new one is started and resumed when the new transaction has completed.
Mandatory
    The method should always be called within the scope of a transaction, else the container will throw the TransactionRequired exception.
Supports
    The method is invoked within the caller transaction scope; if the caller does not have an associated transaction, the method is invoked without a transaction scope.
Never
    The client is required to call the bean without any transaction context; if it is not the case, a java.rmi.RemoteException is thrown by the container.

5.2 Spring transaction:
      Transaction isolation: The degree of isolation this transaction has from the work of other transactions. For example, can this transaction see uncommitted writes from other transactions? avaliable options:
ISOLATION_DEFAULT
ISOLATION_READ_UNCOMMITTED
ISOLATION_READ_COMMITTED
ISOLATION_REPEATABLE_READ
ISOLATION_SERIALIZABLE

      Transaction propagation: Normally all code executed within a transaction scope will run in that transaction. However, there are several options specifying behavior if a transactional method is executed when a transaction context already exists: For example, simply running in the existing transaction (the most common case); or suspending the existing transaction and creating a new transaction. Spring offers the transaction propagation options familiar from EJB CMT. avaliable options:
PROPAGATION_MANDATORY
PROPAGATION_NESTED
PROPAGATION_NEVER
PROPAGATION_NOT_SUPPORTED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRES_NEW
PROPAGATION_SUPPORTS

      Transaction timeout: How long this transaction may run before timing out (automatically being rolled back by the underlying transaction infrastructure).
      Read-only status: A read-only transaction does not modify any data. Read-only transactions can be a useful optimization in some cases (such as when using Hibernate).


6 transaction for web service
Protocol specifications:
WS-Transaction
OASIS Business Transaction Protocol (BTP)
Java API
JAXTX (JSR-156)

 



sevenduan 2010-04-25 16:44 发表评论
]]>
java nest class and java inner classhttp://www.aygfsteel.com/sevenduan/archive/2010/04/17/318623.htmlsevenduansevenduanSat, 17 Apr 2010 15:07:00 GMThttp://www.aygfsteel.com/sevenduan/archive/2010/04/17/318623.htmlhttp://www.aygfsteel.com/sevenduan/comments/318623.htmlhttp://www.aygfsteel.com/sevenduan/archive/2010/04/17/318623.html#Feedback5http://www.aygfsteel.com/sevenduan/comments/commentRss/318623.htmlhttp://www.aygfsteel.com/sevenduan/services/trackbacks/318623.html 比如_我想创徏10个函敎ͼ每个函数依次q回0-9.
 1 //wrong: all function refer to global variable i=10 
 2 var fn_list=[];
 3 for(var i=0;i<10;i++){
 4  var _tempFn =function(){
 5         return i;
 6  }
 7  fn_list.push(_tempFn);    
 8 }
 9 //right: every function refer to its closure scope variable a
10 var fn_list=[];
11 for(var i=0;i<10;i++){
12  var _tempFn =function(a){
13         return function(){
14          return a;
15         };
16  }
17  fn_list.push(_tempFn(i));    
18 }
19 

Java里也有两个让初学者容易؜淆的概念Qnest class and inner class?br /> nest class是static inner class,
而inner class是no-static inner class。没有ؓ什么,sun是q么定义的?br /> q是上面得例子,创徏10个对象,每个对象的getValue接口依次q回0-9.
 1 public class Test {
 2     private int noStaticValue;
 3     private static int staticValue;
 4 
 5     public Test(int noSV, int sv) {
 6         this.noStaticValue = noSV;
 7         this.staticValue = sv;
 8     }
 9 
10     public Test(int noSV) {
11         this.noStaticValue = noSV;
12     }
13 
14     interface valueHolder {
15         int getValue();
16     }
17 
18     class innerClass implements valueHolder {
19         public int getValue() {
20             return noStaticValue;
21         }
22     }
23 
24     static class nestClass implements valueHolder {
25         public nestClass(int i) {
26             staticValue = i;
27         }
28 
29         public int getValue() {
30             return staticValue;
31         }
32     }
33 
34     public static void main(String[] args) {
35         Test context1 = new Test(00);
36         valueHolder[] list = new valueHolder[10];
37         for (int i = 0; i < 10; i++) {
38             list[i] = new Test.nestClass(i);
39         }
40         for (valueHolder obj : list) {
41             System.out.println(obj.getValue());// always print 9
42         }
43         for (int i = 0; i < 10; i++) {
44             list[i] = new Test(i).new innerClass();
45         }
46         for (valueHolder obj : list) {
47             System.out.println(obj.getValue());// print 0-9
48         }
49     }
50 }
可见用inner class可以模拟closure的特性,是q行时定义class的某些状态?br /> inner class和nest class之间的区别就是后者是静态类。前者必通过wrap class的实例来调用new,e.g. new Test().new innerClass?br /> 因ؓnest class是静态类Q所以可以添加static member 或者static method,而inner class 不行?br /> 匿名内部cLinner class的一U特DŞ式,所以也不能dstatic member 或者static method?br />




sevenduan 2010-04-17 23:07 发表评论
]]>
String与byte转化要小心失?/title><link>http://www.aygfsteel.com/sevenduan/archive/2010/04/14/318378.html</link><dc:creator>sevenduan</dc:creator><author>sevenduan</author><pubDate>Wed, 14 Apr 2010 15:14:00 GMT</pubDate><guid>http://www.aygfsteel.com/sevenduan/archive/2010/04/14/318378.html</guid><wfw:comment>http://www.aygfsteel.com/sevenduan/comments/318378.html</wfw:comment><comments>http://www.aygfsteel.com/sevenduan/archive/2010/04/14/318378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/sevenduan/comments/commentRss/318378.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/sevenduan/services/trackbacks/318378.html</trackback:ping><description><![CDATA[先看一D代码:<br /> <div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: rgb(0, 0, 255);">byte</span><span style="color: rgb(0, 0, 0);"> [] b </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">byte</span><span style="color: rgb(0, 0, 0);">[]{</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">};<br />         System.out.println(Arrays.toString(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> String(b).getBytes()));</span></div> <br /> 输出Q?br /> [1, -17, -65, -67, 2, -17, -65, -67]<br /> 解释Q?br /> byte decode to String,String encode to byte 默认用UTF-8 charset.<br /> decode遇到不支持的字符 输出 char K?, encode K?是 -17, -65, -67.<br /> 实现l节可见ByteToCharUTF8.java<br /> <br /> 解决办法Q?使用 ISO8859_1 charset?br /> <br /> 教训Q?注意charset的范围?br /> <br /> <br /> <br /> <img src ="http://www.aygfsteel.com/sevenduan/aggbug/318378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/sevenduan/" target="_blank">sevenduan</a> 2010-04-14 23:14 <a href="http://www.aygfsteel.com/sevenduan/archive/2010/04/14/318378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 位运?/title><link>http://www.aygfsteel.com/sevenduan/archive/2010/04/13/318160.html</link><dc:creator>sevenduan</dc:creator><author>sevenduan</author><pubDate>Tue, 13 Apr 2010 06:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/sevenduan/archive/2010/04/13/318160.html</guid><wfw:comment>http://www.aygfsteel.com/sevenduan/comments/318160.html</wfw:comment><comments>http://www.aygfsteel.com/sevenduan/archive/2010/04/13/318160.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/sevenduan/comments/commentRss/318160.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/sevenduan/services/trackbacks/318160.html</trackback:ping><description><![CDATA[java bitwise operator:<br /> ~ The unary bitwise complement operator "<code>~</code>" inverts a bit pattern.<br /> <<The signed left shift<br /> >>The signed right shift<br /> >>>the unsigned right shift<br /> <p> & The bitwise <code>&</code> operator performs a bitwise AND operation. </p> <p> ^ The bitwise <code>^</code> operator performs a bitwise exclusive OR operation. </p> <p> | The bitwise <code>|</code> operator performs a bitwise inclusive OR operation. </p> <br /> <br /> Usage:<br /> 1, <br /> <ul> <li><code>^</code> can swap two variables without using an intermediate, temporary variable which is useful if you are short on available RAM or want that sliver of extra speed. <p>Usually, when <strong>not using</strong> <code>^</code>, you will do:</p> <pre>temp = a;<br /> <br /> a = b;<br /> <br /> b = temp;</pre> <p><strong>Using</strong> <code>^</code>, no "temp" is needed:</p> <pre>a ^= b;<br /> <br /> b ^= a;<br /> <br /> a ^= b;</pre> <p>This will swap "a" and "b" integers. <span id="wmqeeuq" class="hlt">Both must be integers.</span> </p> </li> </ul> 2,<br /> an example of using an integer to maintain state flags (common usage): <pre class="prettyprint"><code><span id="wmqeeuq" class="com">// These are my masks</span><span id="wmqeeuq" class="pln"><br /> <br /> </span><span id="wmqeeuq" class="kwd">private</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">static</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">final</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">int</span><span id="wmqeeuq" class="pln"> MASK_DID_HOMEWORK  </span><span id="wmqeeuq" class="pun">=</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="lit">0x0001</span><span id="wmqeeuq" class="pun">;</span><span id="wmqeeuq" class="pln"><br /> <br /> </span><span id="wmqeeuq" class="kwd">private</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">static</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">final</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">int</span><span id="wmqeeuq" class="pln"> MASK_ATE_DINNER    </span><span id="wmqeeuq" class="pun">=</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="lit">0x0002</span><span id="wmqeeuq" class="pun">;</span><span id="wmqeeuq" class="pln"><br /> <br /> </span><span id="wmqeeuq" class="kwd">private</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">static</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">final</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">int</span><span id="wmqeeuq" class="pln"> MASK_SLEPT_WELL    </span><span id="wmqeeuq" class="pun">=</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="lit">0x0004</span><span id="wmqeeuq" class="pun">;</span><span id="wmqeeuq" class="pln"> <br /> <br /> <br /> <br /> </span><span id="wmqeeuq" class="com">// This is my current state</span><span id="wmqeeuq" class="pln"><br /> <br /> </span><span id="wmqeeuq" class="kwd">private</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">int</span><span id="wmqeeuq" class="pln"> m_nCurState</span><span id="wmqeeuq" class="pun">;</span><span id="wmqeeuq" class="pln"><br /> <br /> </span></code></pre> <p>To <strong><em>set</em></strong> my state, I use the bitwise OR operator:</p> <pre class="prettyprint"><code><span id="wmqeeuq" class="com">// Set state for'ate dinner' and 'slept well' to 'on'</span><span id="wmqeeuq" class="pln"><br /> <br /> m_nCurState </span><span id="wmqeeuq" class="pun">=</span><span id="wmqeeuq" class="pln"> m_nCurState </span><span id="wmqeeuq" class="pun">|</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="pun">(</span><span id="wmqeeuq" class="pln">MASK_ATE_DINNER </span><span id="wmqeeuq" class="pun">|</span><span id="wmqeeuq" class="pln"> MASK_SLEPT_WELL</span><span id="wmqeeuq" class="pun">);</span><span id="wmqeeuq" class="pln"><br /> <br /> </span></code></pre> <p>Notice how I 'or' my current state in with the states that I want to turn 'on'. Who knows what my current state is and I don't want to blow it away. </p> <p>To <strong><em>unset</em></strong> my state, I use the bitwise AND operator with the complement operator:</p> <pre class="prettyprint"><code><span id="wmqeeuq" class="com">// Turn off the 'ate dinner' flag</span><span id="wmqeeuq" class="pln"><br /> <br /> m_nCurState </span><span id="wmqeeuq" class="pun">=</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="pun">(</span><span id="wmqeeuq" class="pln">m_nCurState </span><span id="wmqeeuq" class="pun">&</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="pun">~</span><span id="wmqeeuq" class="pln">MASK_ATE_DINNER</span><span id="wmqeeuq" class="pun">);</span><span id="wmqeeuq" class="pln"><br /> <br /> </span></code></pre> <p>To <strong><em>check</em></strong> my current state, I use the AND operator:</p> <pre class="prettyprint"><code><span id="wmqeeuq" class="com">// Check if I did my homework</span><span id="wmqeeuq" class="pln"><br /> <br /> </span><span id="wmqeeuq" class="kwd">if</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="pun">(</span><span id="wmqeeuq" class="lit">0</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="pun">!=</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="pun">(</span><span id="wmqeeuq" class="pln">m_nCurState </span><span id="wmqeeuq" class="pun">&</span><span id="wmqeeuq" class="pln"> MASK_DID_HOMEWORK</span><span id="wmqeeuq" class="pun">))</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="pun">{</span><span id="wmqeeuq" class="pln"><br /> <br />     </span><span id="wmqeeuq" class="com">// yep</span><span id="wmqeeuq" class="pln"><br /> <br /> </span><span id="wmqeeuq" class="pun">}</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">else</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="pun">{</span><span id="wmqeeuq" class="pln"> <br /> <br />     </span><span id="wmqeeuq" class="com">// nope...</span><span id="wmqeeuq" class="pln"><br /> <br /> </span><span id="wmqeeuq" class="pun">}</span><span id="wmqeeuq" class="pln"><br /> <br /> </span></code></pre> <p>Why do I think this is interesting? Say I'm designing an interface that sets my state. I could write a method that accepts three booleans:</p> <pre class="prettyprint"><code><span id="wmqeeuq" class="kwd">void</span><span id="wmqeeuq" class="pln"> setState</span><span id="wmqeeuq" class="pun">(</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">boolean</span><span id="wmqeeuq" class="pln"> bDidHomework</span><span id="wmqeeuq" class="pun">,</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">boolean</span><span id="wmqeeuq" class="pln"> bAteDinner</span><span id="wmqeeuq" class="pun">,</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">boolean</span><span id="wmqeeuq" class="pln"> bSleptWell</span><span id="wmqeeuq" class="pun">);</span><span id="wmqeeuq" class="pln"><br /> <br /> </span></code></pre> <p>Or, I could use a single number to represent all three states and pass a single value:</p> <pre class="prettyprint"><code><span id="wmqeeuq" class="kwd">void</span><span id="wmqeeuq" class="pln"> setState</span><span id="wmqeeuq" class="pun">(</span><span id="wmqeeuq" class="pln"> </span><span id="wmqeeuq" class="kwd">int</span><span id="wmqeeuq" class="pln"> nStateBits</span><span id="wmqeeuq" class="pun">);</span><span id="wmqeeuq" class="pln"><br /> <br /> </span></code></pre> <p>If you choose the second pattern you'll be very happy when decide to add another state - you won't have to break existing impls of your interface.</p> <br /> <img src ="http://www.aygfsteel.com/sevenduan/aggbug/318160.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/sevenduan/" target="_blank">sevenduan</a> 2010-04-13 14:39 <a href="http://www.aygfsteel.com/sevenduan/archive/2010/04/13/318160.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>什么才是激׃工作的动力?http://www.aygfsteel.com/sevenduan/archive/2010/04/05/317515.htmlsevenduansevenduanMon, 05 Apr 2010 15:43:00 GMThttp://www.aygfsteel.com/sevenduan/archive/2010/04/05/317515.htmlhttp://www.aygfsteel.com/sevenduan/comments/317515.htmlhttp://www.aygfsteel.com/sevenduan/archive/2010/04/05/317515.html#Feedback0http://www.aygfsteel.com/sevenduan/comments/commentRss/317515.htmlhttp://www.aygfsteel.com/sevenduan/services/trackbacks/317515.html q个问题问自q往往很少。经常思考这些问题的往往是管理者。当理者想q行一些管理工作的时候,理本n成了最大的问题。所以,一个项目的成|往往在很大程度上取决于受到管理层的负面媄响的大小?br /> 大多Ch和大多数理者有着共同的认识,钱才是激励我们工作的动力。理由很充分Q盈利是企业的唯一目标Q说h好像hzȝ是Z吃饭一栗所以,各种l效考核与薪酬挂钩了Q各U项目奖、季度奖、年l奖诞生了。ؓ了响应上U政{,我们开始加班加点了Q开始赶q度赶业l了。试惻I在这U驱动下Q如果手头的事情没有和奖金挂钩,你还有动力l么Q?br /> l果唯一导向对于重复性的体力力_来说是有效的。但是对于脑力劳动者来_自发、专_֒目标性才是内在的能够持箋Ȁ励我们工作的动力所在?br /> 自发Q?br /> 对于脑力力_Q命令式的分配Q务很隑֥效,很显Ӟ你不能强q别人的x。就像强q学生学习一栗只有自发的工作Q才能培d激发工作热情。正如敏捷实践里d应该׃发选择领取一栗?br /> 专精Q?br /> 在自发的前提下,无论我们做什么事情,我们L希望自己可以做得更好。这是专精。对专精的向往表现为对工作的痴q要xZ_,必须不断的练习实践和分析思考?br /> 目标性:
自发和专_也许能在中短期l持动力Q但是长期下去,当我们不知道自己Z么工作的时候,动力也会衰竭。目标性要求目标不能太低而没有成感Q或者太高而很难达到。最好的目标是比你现在的成就更高Q且需要一定的努力才能辑ֈ?br /> Drive: The Surprising Truth About What Motivates Us




sevenduan 2010-04-05 23:43 发表评论
]]>
用Gmail tasks来做个hSCRUM理http://www.aygfsteel.com/sevenduan/archive/2010/04/01/317109.htmlsevenduansevenduanWed, 31 Mar 2010 16:54:00 GMThttp://www.aygfsteel.com/sevenduan/archive/2010/04/01/317109.htmlhttp://www.aygfsteel.com/sevenduan/comments/317109.htmlhttp://www.aygfsteel.com/sevenduan/archive/2010/04/01/317109.html#Feedback0http://www.aygfsteel.com/sevenduan/comments/commentRss/317109.htmlhttp://www.aygfsteel.com/sevenduan/services/trackbacks/317109.html 1Q一周一个iterationQ一个iterationp30个man hoursQ?br /> 只要可以P代L更好?br /> story point优势在于消除个体差异Q个人项目man hour更准直接?br /> 2, 每周日做iteration plan,计划下周dQ用gmail tasks来做story wall?br /> 3Q每周五晚做retrospectiveQȝ一周工作,直接用gmail来保存回ȝ?br />


sevenduan 2010-04-01 00:54 发表评论
]]>
JBossCache in JBoss Clusterhttp://www.aygfsteel.com/sevenduan/archive/2010/03/28/clustercache.htmlsevenduansevenduanSun, 28 Mar 2010 15:10:00 GMThttp://www.aygfsteel.com/sevenduan/archive/2010/03/28/clustercache.htmlhttp://www.aygfsteel.com/sevenduan/comments/316774.htmlhttp://www.aygfsteel.com/sevenduan/archive/2010/03/28/clustercache.html#Feedback0http://www.aygfsteel.com/sevenduan/comments/commentRss/316774.htmlhttp://www.aygfsteel.com/sevenduan/services/trackbacks/316774.html
Cache的目的是Z以空间换旉Q一ơ计结果ؓ多次重用?br /> I间可以是实时内存空间、持久化的硬盘空间。时间可以是q算旉、连接时间、传输时间等?br />
Cache可以分ؓLocalCache和DistributedCache?br /> 最单的LocalCache可以通过l护一个ConcurrentHashMap实现?br /> ~点是:
1Q内存有限,Ҏout of memory Q定期清除?持久化?Q?br /> 2, 需要对全map做concurrencyl护Q粗_度的锁定争用会影响性能Q树l构l护Q)

在一个专业的企业U应用中Qcache除了高性能和线E安全的要求Q还要支持事务、高可用性、持久化、容错、集同步等?br /> JBossCache是一个典型的企业Ucache实现Q他采用树结构且支持集群和事务特性?br /> 虽然JBossCacheq把牛刀也可以在standalone的JS2E应用中用来杀鸡,但我们应该更兛_用他在集环境中怎么杀牛?br /> JBossCache分ؓ非集模?Local)和集模式?br /> 集群模式Ҏ实现{略又分为replication和invalidation?br /> 1 replicationQ通过拯改变的cache对象来保证与集群中其他cache同步。replication又可l分为同步replication和异步repliation两种Q异步replication较快,put以后马上q回Q但是replication出错了,事务q是完成了不回回滚。同步replication要花旉{待其他的cache完成replication的通知才能l束?br />
2 invalidation: 如果cache状态改变,仅仅是给其他cache发个通知Q收到通知的cache把脏数据清除掉。invalidation也可分ؓ同步和异步两U,区别是发送通知的广播方式一个是同步一个是异步?br />
在jboss cluster中,我们最好通过MBean来部|jboss cache。这样又几个好处Q?br /> 1QJBoss NS支持Cluster
我们可以通过JBoss NamingService来访问cache。如果在local NS中查不到cacheQjbss NSq会Lcluster中其他的cache?br /> 2Q利用MBean的特?br /> 通过CacheMBean, 我们可以方便的管理Cache ServiceQ实时的启动、停止或者改变一些配|,q可以监控到一些cachel计数据?br /> 3Q利?a id="d0e1230">microcontainer的特?br /> 我们可以通过配置XML文g来完成cache相关的所有对象声明?/code>而言之,是利用java reflection和AOP的技术就不用写声明cache的代码了?br />

<?xml version="1.0" encoding="UTF-8"?>



<deployment xmlns="urn:jboss:bean-deployer:2.0">



   
<!-- First we create a Configuration object for the cache -->

   
<bean name="ExampleCacheConfig"

         class
="org.jboss.cache.config.Configuration">

      

       build up the Configuration

      

   
</bean>

   

   
<!-- Factory to build the Cache. -->

   
<bean name="DefaultCacheFactory" class="org.jboss.cache.DefaultCacheFactory">      

      
<constructor factoryClass="org.jboss.cache.DefaultCacheFactory"

                   factoryMethod
="getInstance" />

   
</bean>

   

   
<!-- The cache itself -->

   
<bean name="ExampleCache" class="org.jboss.cache.CacheImpl">

      

      
<constructor factoryMethod="createnewInstance">

          
<factory bean="DefaultCacheFactory"/>

          
<parameter><inject bean="ExampleCacheConfig"/></parameter>

          
<parameter>false</parameter>

      
</constructor>

          

   
</bean>

   

   
<!-- JMX Management -->

   
<bean name="ExampleCacheJmxWrapper" class="org.jboss.cache.jmx.CacheJmxWrapper">

      

      
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.cache:service=ExampleTreeCache", 

                         exposedInterface=org.jboss.cache.jmx.CacheJmxWrapperMBean.class, 

                         registerDirectly=true)
</annotation>

      

      
<constructor>

          
<parameter><inject bean="ExampleCache"/></parameter>

      
</constructor>

          

   
</bean>



</deployment> 

后记Q?br /> 1Qjboss cache的naga版中Q采?a >Multi-versioned concurrency control来实现ƈ发。下ơ再从中ȝ一下多U程的学习?br /> 2Qjboss cache通过l合visitor pattern和command patternQ把对cache node的操作与讉K从中隔离出来Q不用改变或者扩展node对象可以添加新的node行ؓ。也是开闭原则。下ơ再从中ȝ一下几U设计模式的l典应用?br />




sevenduan 2010-03-28 23:10 发表评论
]]>
վ֩ģ壺 ɽ| | ƽ| ʡ| | ƽԶ| | պ| | | ɽ| | ֳ| | ɽ| | | | ˳| | | | | | | | | Ҷ| | | ɽ| ±| | ɽʡ| | ľ| | | | ӱʡ| ɽ|