日本人妖在线,欧美日韩精品一区二区三区在线观看 ,亚洲国产一区二区a毛片http://www.aygfsteel.com/lucky/category/3091.html<B>平凡的世界</B></br> <font color="blue">看似平常實崎嶇</br> 成如容易卻艱辛</font>zh-cnSun, 28 Aug 2016 07:00:14 GMTSun, 28 Aug 2016 07:00:14 GMT60設計模式http://www.aygfsteel.com/lucky/archive/2016/08/27/431689.htmlLuckyLuckySat, 27 Aug 2016 10:21:00 GMThttp://www.aygfsteel.com/lucky/archive/2016/08/27/431689.htmlhttp://www.aygfsteel.com/lucky/comments/431689.htmlhttp://www.aygfsteel.com/lucky/archive/2016/08/27/431689.html#Feedback0http://www.aygfsteel.com/lucky/comments/commentRss/431689.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/431689.html##設計模式
###第一部分 六個創建型模式
####1.簡單工廠模式
定義一個工廠類,根據參數返回不同類的實例
####2.工廠模式定義
定義一個用于創建對象的接口,讓子類決定哪一個類實例化。
####3.抽象工廠模式定義
####4.單例模式
####5.原型模式
####6.建造者模式
###第二部分 七個結構型模式
####1.適配器模式
將一個接口轉換成客戶希望的另一個接口,使接口不兼容的哪些類可以一起工作。
####2.橋接模式
如果軟件系統中某個類存在兩個獨立變化的維度,通過該模式可以將這兩個維度分離出來,使兩者可以獨立擴展,讓系統更加符合“單一職責"。
####3.組合模式
組合多個對象形成樹形結構以表示具有”整體-部分“關系的層次結構。
####4.裝飾模式
####5.外觀模式
####6.享元模式
當系統中存在大量相同或者相似的對象時,可以通過共享技術實現相同或相似的細粒度對象的復用,從而節約了內存空間,提高了系統性能。
####7.代理模式
給某一個對象提供一個代理或占位符,并由代理對象來控制對原對象的訪問。
###第三部分 十一個行為型模式
####1.職責鏈模式
####2.命令模式
將一個請求封裝為一個對象,從而讓我們可用不同的請求對客戶進行參數化。對請求排隊或者記錄請求日志,以及支持可撤銷的操作。
####3.解釋器模式
####4.迭代器模式
迭代器模式:提供一種方法來訪問聚合對象,而不用暴露這個對象的內部表示。
####5.中介者模式
####6.備忘錄模式
####7.觀察者模式
####8.狀態模式
####9.策略模式
####10.模板方法模式
####11.訪問者模式


Lucky 2016-08-27 18:21 發表評論
]]>
Effective JAVAhttp://www.aygfsteel.com/lucky/archive/2016/08/26/431682.htmlLuckyLuckyFri, 26 Aug 2016 09:45:00 GMThttp://www.aygfsteel.com/lucky/archive/2016/08/26/431682.htmlhttp://www.aygfsteel.com/lucky/comments/431682.htmlhttp://www.aygfsteel.com/lucky/archive/2016/08/26/431682.html#Feedback0http://www.aygfsteel.com/lucky/comments/commentRss/431682.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/431682.html EffectiveJAVA.html

Effective JAVA

第2章 創建銷毀對象

1.考慮用靜態工廠方法代替構造器

優點

·靜態工廠方法有名稱
·不用每次都創建新實例
·可以返回遠返回類型的任何子類型的對象
·在創建參數化類型實例的時候代碼更簡潔

缺點

·不能被子類化
·它們與其他的靜態方法實際上沒有任何區別
2.遇到多個構造器參數時要考慮用構造器

如果類的構造器或者靜態工廠中具有多個參數,可以考慮使用Builder模式

3.用私有構造器或者枚舉類型強化Singleton屬性

編寫一個包含單個元素的枚舉類型

public enum Elvis{
INSTANCE;
public void leaveTheBuilding*(){
...}
}
">public enum Elvis{ INSTANCE; public void leaveTheBuilding*(){ ...} }
4.通過私有構造器強化不可實例化的能力

讓不需要實例化的類擁有私有(private)構造器來避免被實例化

//Noninstantiable utility class
public enum UtilityClass{
private UtilityClass(){
throw new AssertinError();
}
...
}
">//Noninstantiable utility class public enum UtilityClass{ private UtilityClass(){ throw new AssertinError(); } ... }
5.避免創建不必要的對象

使用靜態的初始化器(initialize)避免創建重復的Calendar,TimeZone和Date實例

import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class Person {
private Date birthDate;
private static final Date BOOM_START;
private static final Date BOOM_END;
static {
Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
gmtCal.set(1946, Calendar.JANUARY, 1, 0, 0, 0);
BOOM_START = gmtCal.getTime();
gmtCal.set(1965, Calendar.JANUARY, 1, 0, 0, 0);
BOOM_END = gmtCal.getTime();
}
public boolean isBabyBoomer() {
return birthDate.compareTo(BOOM_START) &gt;= 0 &amp;&amp; birthDate.compareTo(BOOM_END) &lt;= 0;
}
}
">import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class Person { private Date birthDate; private static final Date BOOM_START; private static final Date BOOM_END; static { Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); gmtCal.set(1946, Calendar.JANUARY, 1, 0, 0, 0); BOOM_START = gmtCal.getTime(); gmtCal.set(1965, Calendar.JANUARY, 1, 0, 0, 0); BOOM_END = gmtCal.getTime(); } public boolean isBabyBoomer() { return birthDate.compareTo(BOOM_START) >= 0 && birthDate.compareTo(BOOM_END) <= 0; } }

優先使用基本類型而不是裝箱基本類型,要當心無意識的自動裝箱。

6.消除過期的對象引用

一旦對象引用已經過期,只需清空這些引用即可。

7.避免使用終結方法

終結方法(finalizer)通常是不可預測的,也是很危險的,一般情況下是不必要的。
不應該依賴終結方法來更新重要的持久狀態。
顯式終止方法的典型例子:InputStream,OutputStream,java.sql.Connection的Close

第3章 對于所有對象都通用的方法

8.覆蓋equals時請遵守通用約定
·類的每個實例本質上都是唯一的
·不關心類是否提供了“邏輯相等”
·超類已經覆蓋了equals,從超類繼承過來的行為對于子類也是合適的
·類是私有的或是包級私有的,應該覆蓋父類的equals方法保證永遠不會被調用
9.覆蓋equals時總要覆蓋hashCode
10.始終要覆蓋toString
11.謹慎地覆蓋clone
12.考慮實現Comparable接口

第4章 類和接口

13.使類和成員的可訪問性最小化
14.在公有類中使用訪問方法而非公有域
15.使可變性最小化
1.不要提供任何會修改對象狀態的方法
2.保證類不會被擴展
3.使所有域都是final
4.使所有域都成為私有的
5.確保對于任何可變組建的互斥訪問
16.復合優先于繼承
17.要么為繼承而設計,并提供文檔說明,要么就禁止繼承
18.接口優于抽象類
- 現有的類可以很容易被更新,以實現新的接口
- 接口是定義minin(混合類型)的理想選擇
- 接口允許我們構造非層次結構的類型框架
19.接口只用于定義類型
20.類層次優于標簽類
21.用函數對象表示策略
22.優先考慮靜態成員類

第5章 泛型

23.請不要在新代碼中使用原生態類型
24.消除非受檢警告
SuppressWarnings注解始終在盡可能小的范圍中使用。
25.列表預先于數組
數組是協變得(covariant)。
數組是具體化的。
26.優先考慮泛型
27.優先考慮泛型方法
28.利用有限制通配符來提升API的靈活性
29.優先考慮類型安全的已購容器

第6章 枚舉和注解

30.用enum代替int常量
31.用實例域代替序數
32.用EnumSet代替位域
33.用EnumMap代替序數索引
34.用接口模擬可伸縮的枚舉
35.注解優先于命名模式
36.堅持使用Override注解
37.用標記接口定義類型

第7章 方法

38.檢查參數的有效性
39.必要時進行保護性拷貝
40.謹慎設計方法簽名
謹慎地選擇方法的名稱
不要過于追求提供便利的方法
避免過長的參數列表
41.慎用重載
42.慎用可變參數
43.返回零長度的數組或集合,而不是null
44.為所有到處的API元素編寫文檔注釋

第8章 通用程序設計

45.將局部變量的作用域最小化
46.for-each循環優先于傳統的for循環
 無法使用for-each的情形
1.過濾
2.轉換
3.平行迭代
47.了解和使用類庫
48.如果需要精確的答案,請避免使用float和double
正確的做法:使用BigDecimal,int或者long進行貨幣計算
49.基本類型優先于裝箱基本類型
50.如果其他類型更適合,則盡量避免使用字符串
字符串不適合替代其他的值類型
字符串不適合代替枚舉類型
字符串不適合替代聚集類型
字符串也不適合太呆能力表(capabilities)
51.當心字符串連接的性能
52.通過接口引用對象
53.接口優先于反射機制

反射機制的代價
喪失了編譯時類型檢查的好處
執行反射訪問所需要的代碼非常笨拙和冗長
性能損失

54.謹慎地使用本地方法
55.謹慎地進行優化
56.遵守普遍接受的命名慣例

第9章 異常

57.只針對異常的情況才使用異常
58.對可恢復的情況使用受檢異常,對編程錯誤使用運行時異常

JAVA提供了三種可拋出結構(throwable)
1.受檢的異常(checked exception)
2.運行時異常(run-time exception)
3.錯誤(error)

59.避免不必要地使用受檢的異常
60.優先使用標準的異常
61.拋出與抽象相對應的異常
62.每個方法拋出的異常都要有文檔
63.在細節信息中包含能捕獲失敗的信息
64.努力使失敗保持原子性
65.不要忽略異常

第10章 并發

66.同步訪問共享的可變數據

關鍵字synchronized可以保證在同一時刻,只有一個線程可以執行某一個方法,或者某一個代碼塊。

67.避免過度同步
68.executor和task優先于線程
69.并發工具優先于wait和notify
70.線程安全性的文檔化
71.慎用延遲初始化
72.不要依賴于線程調度器
73.避免使用線程組

第11章 序列化

74.謹慎地實現Serializable接口
代價
1.實現Serializable接口而付出的最大代價是,可改變性變低
2.增加了出現Bug和安全漏洞的可能性
3.隨著類發行新的版本,相關的測試負擔也增加了
75.考慮使用自定義的序列化形式
76.保護性地編寫readObject方法
77.對于實例控制,枚舉類型優先于readResolve
78.考慮用序列化代理代替序列化實例


Lucky 2016-08-26 17:45 發表評論
]]>
webloigc9增加外部目錄應用http://www.aygfsteel.com/lucky/archive/2010/07/03/325175.htmlLuckyLuckySat, 03 Jul 2010 15:11:00 GMThttp://www.aygfsteel.com/lucky/archive/2010/07/03/325175.htmlhttp://www.aygfsteel.com/lucky/comments/325175.htmlhttp://www.aygfsteel.com/lucky/archive/2010/07/03/325175.html#Feedback0http://www.aygfsteel.com/lucky/comments/commentRss/325175.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/325175.html 在<configuration-version>元素之后 ,追加應用定義。
例:

  <app-deployment>
    <name>ematrix</name>
    <target>MATRIX</target>
    <module-type>war</module-type>
    <source-path>C:\usr\workspace\ematrix</source-path>
    <security-dd-model>DDOnly</security-dd-model>
    <staging-mode>nostage</staging-mode>
</app-deployment>

Lucky 2010-07-03 23:11 發表評論
]]>
常用技術參考http://www.aygfsteel.com/lucky/archive/2008/12/19/247269.htmlLuckyLuckyFri, 19 Dec 2008 01:40:00 GMThttp://www.aygfsteel.com/lucky/archive/2008/12/19/247269.htmlhttp://www.aygfsteel.com/lucky/comments/247269.htmlhttp://www.aygfsteel.com/lucky/archive/2008/12/19/247269.html#Feedback0http://www.aygfsteel.com/lucky/comments/commentRss/247269.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/247269.html     http://www.javadrive.jp/poi/


Lucky 2008-12-19 09:40 發表評論
]]>
EclipseでResinを使うためのプラグインhttp://www.aygfsteel.com/lucky/archive/2008/11/12/240181.htmlLuckyLuckyWed, 12 Nov 2008 14:40:00 GMThttp://www.aygfsteel.com/lucky/archive/2008/11/12/240181.htmlhttp://www.aygfsteel.com/lucky/comments/240181.htmlhttp://www.aygfsteel.com/lucky/archive/2008/11/12/240181.html#Feedback0http://www.aygfsteel.com/lucky/comments/commentRss/240181.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/240181.htmlプラグインを提供します。

 Resin Launcher

WTPでResinを使うためのプラグインです。

以下のリンクからnet.java.amateras.wtp.resin_x.x.x.jarをダウンロードし、Eclipseのpluginsディレクトリにコピーしてください。



Lucky 2008-11-12 22:40 發表評論
]]>
subversion安裝http://www.aygfsteel.com/lucky/archive/2008/11/12/240068.htmlLuckyLuckyWed, 12 Nov 2008 05:16:00 GMThttp://www.aygfsteel.com/lucky/archive/2008/11/12/240068.htmlhttp://www.aygfsteel.com/lucky/comments/240068.htmlhttp://www.aygfsteel.com/lucky/archive/2008/11/12/240068.html#Feedback0http://www.aygfsteel.com/lucky/comments/commentRss/240068.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/240068.html http://downloads.open.collab.net/collabnet-subversion.html
2. 使用svnserve模式安裝,指定倉庫位置: d:\svn_repository
3. run->cmd打開命令行窗口
4. 創建一個subversion的倉庫
cd
svnadmin create
E.g.
cd d:\svn_repository
svnadmin create repository
5. 修改密碼
編輯svnserve.conf文件
E.g. d:\svn_repository\repository\conf\svnserve.conf,
找到下面的信息
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the conf directory.
### Uncomment the line below to use the default password file.
#password-db = passwd
去掉password-db前的#號
password-db = passwd
6. 增加用戶名和密碼
編輯svnserve.conf同一目錄下的'passwd'文件,在下面信息的后面追加用戶名和密碼:
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
#harry = harryssecret
#sally = sallyssecret
例如:
lucky = ××××
7. 打開Windows防火墻的屏蔽.
參考文件
http://www.microsoft.com/windowsxp/using/security/internet/sp2_wfexceptions.mspx
在例外中添加subversion使用的svnserve.exe,或者增加例外的端口:3690.
8. 運行svnserve
可以使用windows的服務或者使用命令行
net start svnserve
9. 對匿名用戶指定讀權限,修改conf/svnserve.conf文件
anon-access = write
10. Checkout倉庫
svn co svn://localhost/
E.g. svn co svn://localhost/repository
11. 權限設置
編輯svnserve.conf同一目錄下的'authz'文件,在下面信息的后面追加用戶名和密碼:
[groups]
dev = lucky,jiang,yu

[repository:/]
lucky= rw
* = r

[repository:/ECOMockup]
@dev= rw
* = r
上面的設置表示 在根目錄 只有lucky有讀寫的權力,其他人都是只讀。 在根目錄下的/ECOMockup工程dev小組有讀寫的權力 其他的就是只讀。

svn import -m "first import of AARKeywords" C:\Usr\THA\AARKeywods http://localhost/svn/AARKeywords


Lucky 2008-11-12 13:16 發表評論
]]>
struts ibatis 學習筆記(轉載)http://www.aygfsteel.com/lucky/archive/2008/11/08/239391.htmlLuckyLuckySat, 08 Nov 2008 04:23:00 GMThttp://www.aygfsteel.com/lucky/archive/2008/11/08/239391.htmlhttp://www.aygfsteel.com/lucky/comments/239391.htmlhttp://www.aygfsteel.com/lucky/archive/2008/11/08/239391.html#Feedback0http://www.aygfsteel.com/lucky/comments/commentRss/239391.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/239391.html閱讀全文

Lucky 2008-11-08 12:23 發表評論
]]>
JIRA安裝(Tomcat5.0.28+Mysql5.0.19)--原創http://www.aygfsteel.com/lucky/archive/2006/05/02/44337.htmlLuckyLuckyTue, 02 May 2006 02:45:00 GMThttp://www.aygfsteel.com/lucky/archive/2006/05/02/44337.htmlhttp://www.aygfsteel.com/lucky/comments/44337.htmlhttp://www.aygfsteel.com/lucky/archive/2006/05/02/44337.html#Feedback6http://www.aygfsteel.com/lucky/comments/commentRss/44337.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/44337.html轉載請注明作者、出處,嚴禁用于任何商業用途

JIRA安裝(Tomcat5.0.28+Mysql5.0.19)--原創

?????????????????????????????????????????????????? Lucky
???? 昨天轉載了Judy Shen的《使用JIRA搭建企業問題跟蹤系統》,在這篇文章中Jude Shen著重講解了JIRA的特性和常用的設置。但是對于安裝卻沒有提及,在本人實際安裝JIRA的過程中,出現了一些問題,雖然最終解決但是花費了本人一下午的時間。為了幫助大家順利安裝,今天本人把安裝的過程重新梳理一遍,請特別留意紅色字體的部分。
  1. ???? 安裝JDK(JDK1.4.2以上),配置JAVA_HOME,安裝Mysql(本人使用的版本是5.0.19),安裝tomcat(5.0.28)
  2. ? ?? 下載JIRA: 本人下載的版本為----3.6 Enterprise EAR/WAR的Zip文件
  3. ? ? ? 解壓縮JIRA,編輯解壓縮目錄\edit-webapp\WEB-INF\classes\entityengine.xml文件,原文件定義使用hsql(紅色字體為增加部分):??
  4. ??? <transaction-factory class="org.ofbiz.core.entity.transaction.JNDIFactory">
    ????? <user-transaction-jndi jndi-server-name="default" jndi-name="java:comp/env/UserTransaction"/>
    ????? <transaction-manager-jndi jndi-server-name="default" jndi-name="java:comp/env/UserTransaction"/>
    ??? </transaction-factory>
  5. ? ? 原來的field-type-name="hsql",改為“mysql”
  6. ???? <datasource name="defaultDS" field-type-name="mysql"
    ??????? helper-class="org.ofbiz.core.entity.GenericHelperDAO"
    ????? check-on-start="true"
    ????? use-foreign-keys="false"
    ????? use-foreign-key-indices="false"
    ????? check-fks-on-start="false"
    ????? check-fk-indices-on-start="false"
    ????? add-missing-on-start="true"
    ????? check-indices-on-start="true">
    ??????? <jndi-jdbc jndi-server-name="default" jndi-name="java:comp/env/jdbc/JiraDS"/>
  7. ???? 修改完entityengine.xml文件的上述兩個地方后,執行加壓縮目錄下的build加壓縮目錄下的build.bat將默認地生成JIRA的war包
  8. ???? 下載mysql-connector-java-3.1.12-bin.jar拷貝到Tomcat安裝目錄的\common\lib下,請特別注意版本號必須為3.1.12
  9. ???? Atlassian下載jira-jars-tomcat5.zip拷貝到Tomcat安裝目錄的\common\lib下
? 10. ?? 配置Tomcat安裝目錄conf/server.xml,增加?
useBodyEncodingForURI="true"
<Connector?port="8080"
????maxThreads
="150"?minSpareThreads="25"?maxSpareThreads="75"
????enableLookups
="false"?redirectPort="8443"?acceptCount="100"
????debug
="0"?connectionTimeout="20000"
????disableUploadTimeout
="true"?useBodyEncodingForURI="true"/>
? 11.?? 創建數據庫(我命名為jiradb,使用utf8編碼)
? 12.?? 創建數據庫的使用用戶(jirauser)
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX on
? jiradb.* TO 'jirauser'@'localhost' IDENTIFIED BY 'mypassword';
? 13.? 拷貝dist-tomcat目錄下的war包拷貝到tomcat安裝目錄下的webapps/目錄下,拷貝dist-tomcat/tomcat-5/jira.xml到tomcat安裝目錄下/conf/Catalina/localhost/ 并修改該該文件
?????? 刪除下列配置(適用于hsqldb)
 <!-- NOTE: If NOT using hsqldb, delete the next two parameters -->
<!-- Give unused connections 4 secs before eviction. -->
<parameter>
<name>minEvictableIdleTimeMillis</name>
<value>4000</value>
</parameter>
<!-- Check for evictions every 5 secs. -->
<parameter>
<name>timeBetweenEvictionRunsMillis</name>
<value>5000</value>
</parameter>
修改后的jira.xml文件如下:
<!--
A?sample?configuration?file?for?Tomcat?4.1.x?and?5.0
Customize?the?docBase?attribute,?drop?in?your?$CATALINA_HOME/webapps/?(4.1.x)?or
$CATALINA_HOME/conf/Catalina/localhost/?(5.0)?directory?and?restart?Tomcat.
Note?the?JOTM?dependencies;?you'll?need?to?copy?various?jars?to?Tomcat's?common/lib/?directory.
See?http://www.atlassian.com/software/jira/docs/latest/servers/tomcat41.html?for?details.
-->
?
<Context?path="/jira"?docBase="C:\usr\Apache\Tomcat5\webapps\jira"?debug="0">
??
<Resource?name="jdbc/JiraDS"?auth="Container"?type="javax.sql.DataSource"/>
??
<ResourceParams?name="jdbc/JiraDS">
????
<parameter>
??????
<name>driverClassName</name>
????????
<!--?NOTE:?if?you?change?the?database?type,?you?will?need?to?change?it?in?WEB-INF/classes/entityengine.xml?-->
??????
<value>com.mysql.jdbc.Driver</value>
????
</parameter>
????
<parameter>
??????
<name>url</name>
??????
<value>jdbc:mysql://localhost/jiradb?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF8&amp;mysqlEncoding=utf8</value>
????
</parameter>
????
<parameter>
??????
<name>username</name>
??????
<value>jirauser</value>
????
</parameter>
????
<parameter>
??????
<name>password</name>
??????
<value>mypassword</value>
????
</parameter>
?????
<parameter>
??????
<name>factory</name>
??????
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
????
</parameter>
?
</ResourceParams>

??
<Resource?name="UserTransaction"?auth="Container"?type="javax.transaction.UserTransaction"/>
??
<ResourceParams?name="UserTransaction">
????
<parameter>
??????
<name>factory</name>
??????
<value>org.objectweb.jotm.UserTransactionFactory</value>
????
</parameter>
????
<parameter>
??????
<name>jotm.timeout</name>
??????
<value>60</value>
????
</parameter>
??
</ResourceParams>
</Context>
14. 啟動tomcat,敲入http://.../jira,應該就能看到JIRA的配置向導了
(全文完)




Lucky 2006-05-02 10:45 發表評論
]]>
使用JIRA搭建企業問題跟蹤系統(轉自Judy Shen的專欄)http://www.aygfsteel.com/lucky/archive/2006/05/01/44301.htmlLuckyLuckyMon, 01 May 2006 12:22:00 GMThttp://www.aygfsteel.com/lucky/archive/2006/05/01/44301.htmlhttp://www.aygfsteel.com/lucky/comments/44301.htmlhttp://www.aygfsteel.com/lucky/archive/2006/05/01/44301.html#Feedback2http://www.aygfsteel.com/lucky/comments/commentRss/44301.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/44301.html閱讀全文

Lucky 2006-05-01 20:22 發表評論
]]>
Struts的html:checkBox標簽超郁悶的問題http://www.aygfsteel.com/lucky/archive/2006/04/14/41001.htmlLuckyLuckyThu, 13 Apr 2006 16:03:00 GMThttp://www.aygfsteel.com/lucky/archive/2006/04/14/41001.htmlhttp://www.aygfsteel.com/lucky/comments/41001.htmlhttp://www.aygfsteel.com/lucky/archive/2006/04/14/41001.html#Feedback15http://www.aygfsteel.com/lucky/comments/commentRss/41001.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/41001.html

1)需求:

???? 當通過菜單進入頁面時,頁面中的checkbox處于被選中狀態,頁面提交后forward回本頁,對應的checkbox保持提交時的狀態,也就是說:如果提交時checkbox是選中狀態回來仍然是選中狀態;如果用戶在提交前將checkbox的勾去掉,回來時checkbox應該為為選中狀態。

2)問題:

???? 這個需求看起來很簡單,只需要
??? 1)在對應的form中將checkbox對應的屬性設為true就行了:
???????? private boolean syaken = true;
??? 2)在對應的jsp中使用html:checkbox標簽就行了
? ? ?? <html:checkbox property="syaken"/>
??? 但問題是checkbox標簽不會去set初始化值為true的checkbox屬性,不賦初值時Struts默認賦為false;
??? 從網上找資料有人說可以實現ActionFrom的reset()方法將對應的屬性值設為false,但reset方法是在form實例化以后被調用的,也就是說你初始化的值true將被重置為false,這和直接將屬性值設為false沒有任何區別,這樣做的結果是你從菜單進入頁面時checkbox是處于不被選中的狀態。
?? 他們之間存在著矛盾,問題的關鍵就是每次提交時,Struts并沒有去重新設置所有checkbox的屬性值,而是有選擇地(初始化值為false)地進行重新設置。

3)解決辦法:

???? 超級簡單,在checkbox后面添加一個和checkbox的屬性同名并且value為“false”的隱藏輸入框,強迫Struts去重新設置checkbox的屬性值:
????? <html:checkbox property="syaken"/>&nbsp;
? ??? <input type="hidden" name="syaken" value="false">

???
這個問題郁悶了我兩天,沒想到解決辦法這么簡單。

????



Lucky 2006-04-14 00:03 發表評論
]]>
為Openfans配置的eHCache.xml(暫未提交)http://www.aygfsteel.com/lucky/archive/2006/04/04/39093.htmlLuckyLuckyTue, 04 Apr 2006 02:06:00 GMThttp://www.aygfsteel.com/lucky/archive/2006/04/04/39093.htmlhttp://www.aygfsteel.com/lucky/comments/39093.htmlhttp://www.aygfsteel.com/lucky/archive/2006/04/04/39093.html#Feedback0http://www.aygfsteel.com/lucky/comments/commentRss/39093.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/39093.html<ehcache>

??? <!-- Sets the path to the directory where cache .data files are created.

??? ??? If the path is a Java System Property it is replaced by
??? ??? its value in the running VM.

??? ??? The following properties are translated:
??? ??? user.home - User's home directory
??? ??? user.dir - User's current working directory
??? ??? java.io.tmpdir - Default temp file path -->
??? <diskStore path="java.io.tmpdir" />


??? <!--Default Cache configuration. These will applied to caches programmatically created through
??? ??? the CacheManager.

??? ??? The following attributes are required:

??? ??? maxElementsInMemory??????????? - Sets the maximum number of objects that will be created in memory
??? ??? eternal??????????????????????? - Sets whether elements are eternal. If eternal,? timeouts are ignored and the
??? ??? element is never expired.
??? ??? overflowToDisk???????????????? - Sets whether elements can overflow to disk when the in-memory cache
??? ??? has reached the maxInMemory limit.

??? ??? The following attributes are optional:
??? ??? timeToIdleSeconds????????????? - Sets the time to idle for an element before it expires.
??? ??? i.e. The maximum amount of time between accesses before an element expires
??? ??? Is only used if the element is not eternal.
??? ??? Optional attribute. A value of 0 means that an Element can idle for infinity.
??? ??? The default value is 0.
??? ??? timeToLiveSeconds????????????? - Sets the time to live for an element before it expires.
??? ??? i.e. The maximum time between creation time and when an element expires.
??? ??? Is only used if the element is not eternal.
??? ??? Optional attribute. A value of 0 means that and Element can live for infinity.
??? ??? The default value is 0.
??? ??? diskPersistent???????????????? - Whether the disk store persists between restarts of the Virtual Machine.
??? ??? The default value is false.
??? ??? diskExpiryThreadIntervalSeconds- The number of seconds between runs of the disk expiry thread. The default value
??? ??? is 120 seconds.
??? -->

??? <!-- Queries cache -->
??? <cache name="org.hibernate.cache.StandardQueryCache"
??? ??? maxElementsInMemory="1000" eternal="false" timeToLiveSeconds="120"
??? ??? overflowToDisk="true" />

??? <cache name="org.hibernate.cache.UpdateTimestampsCache"
??? ??? maxElementsInMemory="5000" eternal="true" overflowToDisk="true" />

??? <!-- Object cache -->
??? <cache name="org.openfans.domain.Article"
??? ??? maxElementsInMemory="50000" eternal="false" overflowToDisk="true"
??? ??? timeToIdleSeconds="300" />
??? <cache name="org.openfans.domain.Auth" maxElementsInMemory="5000"
??? ??? eternal="false" overflowToDisk="true" timeToIdleSeconds="600" />
??? <cache name="org.openfans.domain.Fans" maxElementsInMemory="10000"
??? ??? eternal="false" overflowToDisk="true" timeToIdleSeconds="300" />
??? <cache name="org.openfans.domain.FansVisitTag" maxElementsInMemory="10000"
??? ??? eternal="false" overflowToDisk="true" timeToIdleSeconds="300" />
??? <cache name="org.openfans.domain.Group" maxElementsInMemory="10000"
??? ??? eternal="false" overflowToDisk="true" timeToIdleSeconds="600" />
??? <cache name="org.openfans.domain.Link" maxElementsInMemory="20000"
??? ??? eternal="false" overflowToDisk="true" timeToIdleSeconds="300" />
??? <cache name="org.openfans.domain.RootTag" maxElementsInMemory="20000"
??? ??? eternal="false" overflowToDisk="true" timeToIdleSeconds="300" />
??? <cache name="org.openfans.domain.Tag" maxElementsInMemory="20000"
??? ??? eternal="false" overflowToDisk="true" timeToIdleSeconds="300" />
??? ??? <cache name="org.openfans.domain.TagRelation" maxElementsInMemory="20000"
??? ??? eternal="false" overflowToDisk="true" timeToIdleSeconds="300" />
??? <cache name="org.openfans.domain.UseStatus" maxElementsInMemory="20000"
??? ??? eternal="false" overflowToDisk="true" timeToIdleSeconds="300" />

??? <defaultCache maxElementsInMemory="10000" eternal="true"
??? ??? overflowToDisk="true" timeToIdleSeconds="120" timeToLiveSeconds="120"
??? ??? diskPersistent="false" diskExpiryThreadIntervalSeconds="120" />

??? <!-- See http://ehcache.sourceforge.net/documentation/#mozTocId258426 for how to configure caching for your objects -->
</ehcache>


Lucky 2006-04-04 10:06 發表評論
]]>
Eclipse 啟動參數 http://www.aygfsteel.com/lucky/archive/2006/03/04/33613.htmlLuckyLuckySat, 04 Mar 2006 10:21:00 GMThttp://www.aygfsteel.com/lucky/archive/2006/03/04/33613.htmlhttp://www.aygfsteel.com/lucky/comments/33613.htmlhttp://www.aygfsteel.com/lucky/archive/2006/03/04/33613.html#Feedback8http://www.aygfsteel.com/lucky/comments/commentRss/33613.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/33613.htmlEclipse 啟動參數
    我的系統環境變量中使用的是jdk1.3,為了使用Eclipse我需要使用JDK1.5:
1)Eclipse 啟動參數:
創建一個Eclipse的快捷方式到桌面,點擊屬性,設置
C:\usr\eclipse\3.1.1\eclipse.exe  -nosplash -vm C:\usr\jdk\jdk1.5.0_06\bin\javaw.exe -vmargs -Xms256m -Xmx512m
我的-Xms256 -Xms512設的有點大,大家可以根據自己的需要調整。

2)查看Eclipse內存使用情況,垃圾回收
在Eclipse
1)eclipse.ini:
-vmargs -Xms128m -Xmx512m
2)在根目錄建options文件:
org.eclipse.ui/perf/showHeapStatus=true
3)啟動參數(在快捷方式屬性中設置)
 -debug options -vm C:\usr\jdk\jdk1.5.0_06\bin\javaw.exe

啟動之后大家會在底部的狀態欄 發現多了內存使用情況的一個bar,還有一個垃圾箱的圖標。
在Eclipse運行一段時間點擊垃圾箱圖標,執行垃圾回收。從數據顯示來看,還是有效的。




Lucky 2006-03-04 18:21 發表評論
]]>
軟件開發思考http://www.aygfsteel.com/lucky/archive/2005/09/20/13536.htmlLuckyLuckyTue, 20 Sep 2005 09:02:00 GMThttp://www.aygfsteel.com/lucky/archive/2005/09/20/13536.htmlhttp://www.aygfsteel.com/lucky/comments/13536.htmlhttp://www.aygfsteel.com/lucky/archive/2005/09/20/13536.html#Feedback0http://www.aygfsteel.com/lucky/comments/commentRss/13536.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/13536.html ??? 對于第一種方法是各個企業追求的終極目標,提高開發人員的素質無外乎通過1)企業培訓2)員工利用個人時間充電 3)高水平的項目鍛煉。這三種方法對于企業和個人的投入都有要求,是最難實施也是最慢見成效的一種方法,但不管怎么樣這是企業要獲得持續發展的必然途徑。
??? 對于第二種方法是每個軟件企業都在實施的一種通用的方法,現在存在著很多開發過程和開發方法,重量級的如:RUP(統一軟件過程)、CMM、CMMI,輕 量級的如:自適應、水晶、XP等。這些方法和過程自身就是相互學習,互相融合,在企業實施過程中也都是結合各自的優點,形成自有的一套體系。企業在能夠形 成自己一套行之有效的體系前必須不斷經歷嘗試,裁減再嘗試這樣一個痛苦的過程的,是不可能一蹴而就的。最好的方法是就是從已經形成自有特色的企業處獲得指 導。
??? 第三種也是最為大家認同的:使用工具,工具使得執行開發過程變得簡單。對于一些大家公認的開發過程的步驟,比如:代碼規范:CODE STANDARD
# 測試驅動開發:TEST-DRIVEN DEVELOPMENT
# 日構建:DAILY BUILDING
# 持續集成:CONTINUOUS INTEGRATION
# 小步發布:SMALL RELEASE
?? 我們都能找到工具很好的進行支持。這種方法除去學習工具所花去的時間,應該是最容易看見成效的。而且充分利用工具能夠很快地幫助新手進入角色,比如說:利 用代碼規范檢測工具checkstyle,我們很容易幫助新手規范代碼的編寫,而不用我們人為地進行codereview檢察代碼規范。
??? 所以,我的觀點是盡可能地利用已有的工具遵循軟件企業既定的軟件開發過程來完善軟件的開發,應該善假于物。

Lucky 2005-09-20 17:02 發表評論
]]>
OpenCms 6安裝http://www.aygfsteel.com/lucky/archive/2005/08/30/11580.htmlLuckyLuckyTue, 30 Aug 2005 10:48:00 GMThttp://www.aygfsteel.com/lucky/archive/2005/08/30/11580.htmlhttp://www.aygfsteel.com/lucky/comments/11580.htmlhttp://www.aygfsteel.com/lucky/archive/2005/08/30/11580.html#Feedback9http://www.aygfsteel.com/lucky/comments/commentRss/11580.htmlhttp://www.aygfsteel.com/lucky/services/trackbacks/11580.html

OpenCms 6安裝

本頁提供如何使用TomcatMySql來安裝opencms的信息. 所有組件的安裝被單步描述. 請確保每步安裝都成功.

1. 安裝JDK(版本為 1.4或更高)

安裝JDK(版本為 1.4或更高) (從SUN http://java.sun.com/products/j2se/公司獲得). 關于如何在你的操作系統安裝這些組件的細節,請參考sun提供的相關文檔。. 你應該確認安裝 Java的SDK, 而不是同樣可以從SUN獲得的 JRE (JAVA 運行時環境). JRE不能 滿足OpenCms的運行!

重點: OpenCms 6 僅僅在JDK1.4和JDK5.0中測試通過.一些屬性不能從JDK1.4以前版本的JDK中獲得.

提示: FreeBSD用戶 應該需要安裝最新的資源以便系統使用rndcontrol功能. 否則的話,安裝將會中斷. 例如, 在一臺網卡暫用IRQs 9的機器上, 你可以執行

rndcontrol -s 9

2. 安裝 Tomcat

OpenCms 6.0 需要一種兼容Servlet 2.3 / JSP 1.2標準的容器. Tomcat 4 是這種標準的參考實現. 本發布版在Tomcat 4.1.x, Tomcat 5.0.x 和 Tomcat 5.5.x下測試通過. 對于Tomcat不支持新標準的更老的版本 (3.x以前) 不能夠使用OpenCms 6.0. Tomcat 4.0.x 沒有測試,但是應該能夠工作.

http://jakarta.apache.org/tomcat/index.html 下載Tomcat并安裝到你選擇的文件夾中. 這就是 CATALINA_HOME 指定的文件夾. 不要忘記設置環境變量CATALINA_HOMEJAVA_HOME.

通過在standalone模式下運行Tomcat并檢測實例來測試Tomcat的安裝. 提示: Tomcat在standalone模式下使用8080端口. 如果你愿意,你可以將servlet引擎和web服務器結合,像Apache Web Server http://www.apache.org/httpd.html . 如何和servlet引擎結合,請參考webserver文檔.

提示: 你可以從opencms.org一份額外的文檔來知道如何使用mod_proxy在Apache httpd和Tomcat上安裝OpenCms。

提示: 舊版本的OpenCms需要設置Java文件編碼使用 -dfile.encoding=.... . 對于OpenCms 6已經不再需要了.

3.安裝 MySQL

http://www.mysql.com/downloads/index.html 下載安裝MySQL。(參考MySQL在線文檔 http://www.mysql.com/documentation/index.html ). MySQL Windows版被安裝到 C:\盤,應該使用 %MYSQL_HOME%/bin/mysqld -install注冊Windows服務.

OpenCms能夠使用MySQL 3.2, 4.0和4.1.由于效率原因我們推薦MySQL 4.1,或者最少4.0.

通過運行服務(WIN32下)或者執行 %MYSQL_HOME%/bin/mysqld(UNIX)啟動MySQL服務器.

在繼續前請通過啟動MySQL監視器 (在MySQL安裝目錄的bin文件夾下執行 mysql)測試MySQL正常運行. 數據庫正常工作如果執行monitor后出現MySQL提示符 . 鍵入exit退出MySQL監視器,繼續下一步.

重點: 你應該增加MySQL配置文件(通常為my.ini)中配置變量max_allowed_packet的值. 對于OpenCms, limit應該盡可能的高, 推薦設置:max_allowed_packet=16M

4. 部署opencms.war文件

從下載的二進制壓縮包ZIP文件中拷貝opencms.war文件到CATALINA_HOME/webapps/目錄下. 使用Tomcat的真實安裝路徑替換CATALINA_HOME變量.

啟動(或重啟)Tomcat. Tomcat現在將部署應用OpenCms.

重點:確保OpenCms的War包的完整性 *.war . OpenCms只能以War的方式部署. 確定Tomcat解包war文件并且創建CATALINA_HOME/webapps/opencms/目錄, 并將OpenCms文件拷貝到這個目錄. 你的Servlet容器默認的配置 / 環境不能解包*.war文件.如果這樣請手動解包. 對于解壓縮工具, *.war文件和*.zip文件只是擴展名不同而已.如果沒有解包*.war文件,OpenCms安裝向導將顯示一個警告并不允許你繼續。

5. 使用安裝向導安裝OpenCms

在瀏覽器中鍵入以下地址 http://localhost:8080/opencms/setup開始安裝. 依賴于你的配置, 你可以替換 localhost 為你的服務名. 端口8080僅僅在以standalone模式啟動Tomcat時使用.

遵循OpenCms的安裝想到提示,使用“標準”安裝. 它將建立OpenCms數據庫并倒入所有能夠獲得 的模塊到系統zho能夠. 對于正常的Mysql和Tomcat安裝在一臺服務器上的情況,所有的默認設置都將滿足你的需求.

重點: Make sure you disable all popup blockers for the server URL you installed OpenCms on. Otherwise you will not be able to log in to the OpenCms Workplace.

6. 現在你的系統已經就緒

現在你的系統可以使用了. 你可以使用用戶名: Admin 和密碼: admin登陸了. 請盡可能快地更改密碼. OpenCms默認的登陸URL: http://localhost:8080/opencms/opencms/system/login/

7. 安全提示

在成功安裝OpenCms后,你應該檢查一下安全方面的設置.

首先通過用戶設置(Workplace主窗口中“checkbox”圖標)更改OpenCms用戶Admin的密碼.

然后給Mysql數據庫添加一個密碼.在Mysql命令行下敲入如下命令.

use mysql;
insert into user values ('localhost', 'opencmsuser', password('XXXXX'),\
    'N','N','N','N','N','N','N','N','N','N','N','N','N','N');
insert into db values ('localhost', 'opencms', 'opencmsuser',\
    'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
flush privileges;

確認替換opencmsuseropencms 以及數據庫你在安裝時設置.

不要忘記opencms.properties文件中添加新的用戶名和密碼. . 只有新的用戶能夠連接大盤OpenCms表.更多的信息請參閱MySQL文檔.



Lucky 2005-08-30 18:48 發表評論
]]>
主站蜘蛛池模板: 安阳县| 漯河市| 鹤峰县| 临西县| 石狮市| 富源县| 兴城市| 安化县| 承德市| 固阳县| 营口市| 泰宁县| 小金县| 攀枝花市| 巩留县| 丽江市| 扎囊县| 红河县| 梓潼县| 咸丰县| 辉南县| 韶山市| 阳泉市| 怀来县| 韶关市| 肇州县| 拜城县| 湘阴县| 广宗县| 新化县| 长海县| 兴安县| 疏附县| 广昌县| 潞西市| 吴堡县| 卓尼县| 南和县| 肃宁县| 家居| 河间市|