<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    1,基本寫法
    <body>
    ??? <link rel="STYLESHEET" type="text/css" href="css/dhtmlxtree.css">
    ??? <script? src="js/dhtmlxcommon.js"></script>
    ??? <script? src="js/dhtmlxtree.js"></script>
    ??? <div id="treeboxbox_tree"></div>
    ??? <script type="text/javascript">
    ??tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
    ??tree.attachEvent("onClick",onNodeSelect);
    ??tree.setImagePath("images/tree/");
    ??tree.setXMLAutoLoading("dept.do?action=folder_treeview");//逐級展開
    ??tree.loadXML("dept.do?action=folder_treeview&id=1");//初始化
    ??function onNodeSelect(nodeId){
    ????? document.getElementById("parent_folder_id").value = nodeId;
    ??}
    ??? </script>
    </body>


    2,初始化需要的xml,必須帶item
    <?xml version='1.0' encoding='utf-8'?>
    <tree id="0">
    <item nocheckbox="1" open="1" id="-1" select="0" text= "公司" >
    <item? open="1" child="1"? text= "財務部" id= "1"></item>
    <item? open="1" child="0"? text= "技術部" id= "2"></item>
    <item? open="1" child="0"? text= "人事部" id= "4"></item>
    </item>
    </tree>
    注意<tree>里的id的值必須和dhtmlXTreeObject的第4個參數(shù)的值保持一致,否則會報錯:
    Error type: DataStructure
    Description: XMLrefferstonotexistingparent

    3,逐級展開的xml
    <?xml version="1.0" encoding="utf-8"?><tree id="3">
    <item? open="1" text= "甲部門" id= "5" ></item>
    <item? open="1" text= "乙部門" id= "6" ></item>
    </tree>

    4,child屬性表示是否有子級

    posted @ 2009-01-15 23:58 leekiang 閱讀(1650) | 評論 (0)編輯 收藏

    Sun的JVM用下列方法可以產(chǎn)生Thread Dump堆棧信息:

    1,Solaris OS
    <ctrl>-’\’ (Control-Backslash)
    ?kill -QUIT <pid>

    2, HP-UX/UNIX/Linux
    Kill -3 PID?
    PID通過下面方法獲取
    ps -efHl | grep 'java' **. **

    3,Windows
    直接對MSDOS窗口的程序按Ctrl-break

    有些Java應用服務器是在控制臺上運行,如Weblogic,為了方便獲取threaddump信息,在 weblogic啟動的時候,最好將其標準輸出重定向到一個文件,用"nohup sh startWebLogic.sh > start.log &"命令,執(zhí)行"kill -3 <pid>",Stack trace就會輸出到start.log里。Tomcat的Thread Dump會輸出到命令行控制臺或者logs的catalina.out文件里。為了反映線程狀態(tài)的動態(tài)變化,需要接連多次做thread dump,每次間隔10-20s。

    Sun JVM的常見線程狀態(tài)

    對于thread dump信息,主要關注的是線程的狀態(tài)和其執(zhí)行堆棧
    線程的狀態(tài)一般為三類
    Runnable(R):當前可以運行的線程
    Waiting on monitor(CW):線程主動wait
    Waiting for monitor entry(MW):線程等鎖
    一般關注的都是第一和第三種狀態(tài)的線程
    Cpu很忙則關注runnable的線程
    Cpu閑則關注waiting for monitor entry的線程
    一種典型的死鎖是由于在server端應用(比如servlet)中請求由同一weblogic實例server的資源
    解決辦法就是將該servlet放到另外的執(zhí)行隊列里去執(zhí)行


    來源:http://www.searchfull.net/blog/2007/04/10/1176207938784.html

    Thread Dump Analyzer 主頁:https://tda.dev.java.net/

    posted @ 2009-01-14 14:29 leekiang 閱讀(1585) | 評論 (0)編輯 收藏

    利用jdk6查內存泄漏(見編寫對GC友好,又不泄漏的代碼)
    (1)jmap -dump:file=heap_file_name pid 會產(chǎn)生一個heap_file_name文件
    (2)jhat heap_file_name,然后打開瀏覽器http://localhost:7000/ 瀏覽。
    ?? 可看到里面顯示了運行的所有的類和實例及大小。平臺(例如tomcat)的不會包括在里面。
    (3)如果覺得不夠,還可以把heap_file_name文件加一個bin的后綴,然后讓Eclipse MAT來分析。看這里
    另外
    jps:與unix上的ps類似,用來顯示本地的java進程,可以查看本地運行著幾個java程序,并顯示他們的進程號。
    jinfo:的用處比較簡單,就是能輸出并修改運行時的java進程的運行參數(shù)。用法是jinfo -opt? pid 如:查看2788的MaxPerm大小可以用? jinfo -flag MaxPermSize 2788。
    jstat 也很有用,說明見這里


    3,
    SUN JDK所支持的典型選項以及說明:http: //java.sun.com/javase/technologies/hotspot/vmoptions.jsp 上面有很多選項
    -XX:-HeapDumpOnOutOfMemoryError 從jdk1.4.2 update 12 和java 5 update 7開始支持這個選項。

    4,
    關于jmap
    從JDK 5開始,SUN JDK開始提供JMap的工具。但是僅僅是實驗性質的,而且只有在solaris平臺上有。
    后來Jmap被反向移植到jdk 1.4.2_09。因為是實驗性質,所以jmap可能會出現(xiàn)dump失敗的情況。
    但是自從JDK 6之后,jmap的穩(wěn)定性和可用性都沒問題了。請注意各個版本的jvm都要用自己版本的jmap,
    而jhat可以用于分析各個版本的jmap dump出來的文件。至于jhat用于分析1g以上的dump文件,
    我們有過多次在筆記本上的成功經(jīng)歷,它對內存的要求可能并沒有那么高。
    http://space.itpub.net/27378/viewspace-521225

    5,J2SE6中使用jhat來分析內存堆
    http://hi.baidu.com/tister/blog/item/e7374482f4341ca70cf4d2e8.html

    6,Java內存溢出(OutOfMemory),內存分析相關工具
    http://uglytroll.ycool.com/post.3046111.html

    7,JDK中的好工具 jmap、jhat
    http://wangzaixiang.blogspot.com/2008/10/jdk-jmapjhat.html
    http://hi.baidu.com/zeorliu/blog/item/4f38989413601719d21b70d5.html

    8,SAP貢獻給eclipse基金會的MemoryAnalyzer,原來叫Java Memory Analysis
    能分析幾G的Memory Dump而不會內存溢出?
    http://www.eclipse.org/mat/
    可惜還是只支持jdk1.4.2 update 12 和java 5 update 7以上

    9,在一個方法里面的變量是不會引起內存泄露的。
    內存泄露都是發(fā)生在類變量和實例變量(且此實例被緩存、如單例模式)里。
    我建議你從HashMap、HashMap$Entry 入手查查。
    我也研究過一陣子的內存泄露問題,最終解決了。
    http://www.javaeye.com/topic/233080

    10,你遇到的是最理想的情況,但有時候,這種方法不能找到原因,只找到造成崩潰的點.就好比,
    一個HTTP 請求,沒有設置超時(對不起,默認是不超時,不知道為什么SUN要這樣設定),
    然后這條線程就卡在這里了,然后,這條線程里的一個堆棧被另一條線程放入內容,
    本來這些內容就是要這條閑線程去處理的,但是現(xiàn)在,這條線程卡住了,但是用你說的這種方法,
    絕對找不到造成內存泄露的原因是因為http不超時,一直卡在那里.

    我還有一個笨辦法做精細的內存分配比較:就是定期用pmap命令dump出來JVM進程的內存映射表,然后diff。
    http://www.javaeye.com/topic/256701

    11,http://calvin.javaeye.com/blog/91903
    ?java 不是有垃圾收集器了嗎?怎么還泄漏啊,唬我啊??
    ?? 嗯,此泄漏非比泄漏。C/C++的泄漏,是對象已不可到達,而內存又沒有回收,真正的內存黑洞。
    ?? 而Java的泄漏,則是因為各種原因,對象對應用已經(jīng)無用,但一直被持有,一直可到達。
    ?? 總結原因無外乎幾方面:

    ?? 1). 被生命周期極長的集合類不當持有,號稱是Java內存泄漏的首因。
    ????? 這些集合類的生命周期通常極長,而且是一個輔助管理性質的對象,在一個業(yè)務事務運行完后,如果沒有將某個業(yè)務對象主動的從中清除的話,這個集合就會吃越來越多內存,可以用WeakReference,如WeakHashMap,使得它持有的對象不增加對象的引用數(shù)。
    ?? 2). Scope定義不對,這個很簡單了,方法的局部變量定義成類的變量,類的靜態(tài)變量等。
    ?? 3). 異常時沒有加finally{}來釋放某些資源,JDBC時代也是很普遍的事情。
    ?? 4). 另外一些我了解不深的原因,如:Swing里的Listener沒有顯式remove;內部類持有外部對象的隱式引用;Finalizers造成關聯(lián)對象沒有被及時清空等。
    ?

    搭車
    我的SQL調優(yōu)公式T=S/V
    http://space.itpub.net/27378/viewspace-157789

    MetaWidget及SOA
    http://wangzaixiang.blogspot.com/2008/10/metawidget.html

    posted @ 2009-01-14 14:18 leekiang 閱讀(6065) | 評論 (2)編輯 收藏

    1,Kwok Information Server is an open source IT management system
    ?? http://www.kwoksys.com

    2,《守、破、離》 是一種做事方式。或許,對于一個程序員來說,離是我們追求的境界,但守是我們應該先做好的。相信你可以對應的上,這里的守,便是前面提到的那些要固化下來 的內容。守不僅僅是一個簡單的簡化編碼的方法,我們甚至可以把一些設計上的理念守下來,這樣,做類似的應用,我們就不必從頭再來。守的范圍越大,離的層次 也就可以越高。

    軟件開發(fā)的發(fā)展,就是一個守的范圍不端擴張的過程,操作寄存器的模式用高級程序設計語言的方式守了下來,一些良好的設計方法用設計模式的概念守了下來,一些好的編程習慣用最佳實踐的方式守了下來……
    http://dreamhead.blogbus.com/logs/33461687.html

    3,正確認識數(shù)據(jù)冗余
     主鍵與外鍵在多表中的重復出現(xiàn), 不屬于數(shù)據(jù)冗余,這個概念必須清楚,事實上有許多人還不清楚。非鍵字段的重復出現(xiàn), 才是數(shù)據(jù)冗余!而且是一種低級冗余,即重復性的冗余。高級冗余不是字段的重復出現(xiàn),而是字段的派生出現(xiàn)。

    〖例4〗:商品中的“單價、數(shù)量、金額”三個字段,“金額”就是由“單價”乘以“數(shù)量”派生出來的,它就是冗余,而且是一種高級冗余。冗余的目的 是為了提高處理速度。只有低級冗余才會增加數(shù)據(jù)的不一致性,因為同一數(shù)據(jù),可能從不同時間、地點、角色上多次錄入。因此,我們提倡高級冗余(派生性冗 余),反對低級冗余(重復性冗余)。
    http://itren.javaeye.com/blog/180385

    4,MapReduce
    是Google提出的一個軟件架構,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算。概念"Map(映射)"和"Reduce(化簡)",和他們的主要思想,都是從函數(shù)式編程語言借來的,還有從矢量編程語言借來的特性。[1]? 當前的軟件實現(xiàn)是指定一個Map(映射)函數(shù),用來把一組鍵值對映射成一組新的鍵值對,指定并發(fā)的Reduce(化簡)函數(shù),用來保證所有映射的鍵值對中的每一個共享相同的鍵組。

    你的編程語言可以這樣做嗎?(map/reduce的js示范)

    http://www.todd-lee.com/blog/article.asp?id=174


    5,TransactionInterceptor反編譯后有MISSING_BLOCK_LABEL_76

    6,AKBAR錫蘭紅茶

    7,在Java上實現(xiàn)RESTful Web Services可用Jersey

    8,外包網(wǎng)站 odesk,elance

    posted @ 2009-01-12 20:06 leekiang 閱讀(201) | 評論 (0)編輯 收藏

    1,<spring:bind>是spring2.0以前的寫法。
    2,public ModelAndView login(HttpServletRequest request,
    ?? ??? ??? ?HttpServletResponse response,HttpSession session,User user)
    ? public ModelAndView login(HttpServletRequest request,
    ?? ??? ??? ?HttpServletResponse response,User user)
    MultiActionController自動把最后一個參數(shù)當作Command對象。
    也可以覆蓋protected Object newCommandObject(Class clazz)方法,但這樣每個 Controller的Command對象就是同一個iele,
    同時要改為
    public ModelAndView login(HttpServletRequest request,
    ?? ??? ??? ?HttpServletResponse response,Object command)再對command造型
    ?? ??? ??? ?
    3,重定向寫法
    return new ModelAndView("redirect:/system/user.do?do=addUserForm");

    4,有2個JsonView的,或者更適合Ajax,當然自己寫一個JsonView都很簡單
    1) json-lib-ext-spring
    http://sourceforge.net/projects/json-lib/files/
    2) spring json view
    http://spring-json.sourceforge.net/download.html
    http://article.yeeyan.org/view/jdonee/10145

    5, 綁定的基本寫法
    ServletRequestDataBinder binder = new ServletRequestDataBinder(obj);
    ??? ??? SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    ??? ??? binder.registerCustomEditor(Date.class, new CustomDateEditor(
    ??? ??? ??? ??? dateFormat, true));
    ??? ??? binder.setDisallowedFields(new String[]{"endtime"});
    ??? ??? binder.bind(request);

    posted @ 2009-01-08 09:31 leekiang 閱讀(312) | 評論 (0)編輯 收藏

    1,為了盡量平穩(wěn)過渡,繼續(xù)用junit3.8,而不是直接使用junit4
    2,@ContextConfiguration(locations = { "classpath:applicationContext-sys.xml",
    ?? ??? ?"classpath:applicationContext.xml" })
    public class BaseTests extends AbstractTransactionalJUnit38SpringContextTests {
    }
    所有的TestCase都繼承上面這個類,使得spring配置文件重用,同時ApplicationContext也是同一個。

    3,要測試的service類通過@Autowired注入,例如
    ??? @Autowired
    ?? ?private UserDAO? userDAO;
    ?? ?
    4,注意,對于繼承了BaseTests的測試類里的每一個test方法,運行測試時都會按
    ?? setUp()-->test方法-->tearDown()的順序執(zhí)行,而且這3個組成一個事務,執(zhí)行完后默認會回滾。
    ?? 如果不想回滾,在類名前面@TransactionConfiguration(defaultRollback = false)
    ? ?
    5,因為還是用的junit3.8,故TestSuite的寫法照舊
    ? public class SuiteTests {
    ?? ?public static Test suite() {
    ?? ??? ?TestSuite suite = new TestSuite("運行所有測試");
    ?? ??? ?suite.addTestSuite(UserServiceTests.class);
    ?? ??? ?suite.addTestSuite(RoleServiceTests.class);
    ?? ??? ?return suite;
    ?? ?}
    }

    6,測試類并沒有當作bean配置在application.xml文件中,
    ?? spring測試框架是如何使"setUp()-->test方法-->tearDown()"處于同一個事務的呢?
    ?? 具體就要看AbstractTransactionalJUnit38SpringContextTests了,是通過注解實現(xiàn)的。
    ?? service方法在test方法里面,這兩個方法都配置有事務,即形成了事務的嵌套,這里有點復雜了,我還沒想清楚。
    ?? 不過可以肯定的是,如果test方法的事務不提交,那么service方法的事務也不會提交。
    ? ?
    7,如果想在jdk1.4下重用ApplicationContext,可采用以下的辦法,出處再補上。這個辦法與前面的進行比較,
    ?? 我覺得最大的區(qū)別是這種寫法要手動進行測試數(shù)據(jù)的清除。
    public class BaseTestCase extends TestCase {
    ?? ? static ApplicationContext context = null;

    ?? ?static {
    ?? ??? ?// perform the "global" set up logic
    ?? ??? ?// 這里的代碼會在類初始化時執(zhí)行,所以相當于BeforeClass
    ?? ??? ?String[] CONFIG_FILES_MIN = { "applicationContext-sys.xml",
    ?? ??? ??? ??? ?"applicationContext.xml" };
    ?? ??? ?context = new ClassPathXmlApplicationContext(CONFIG_FILES_MIN);
    ?? ??? ?System.out.println("setup");

    ?? ??? ?// and now register the shutdown hook for tear down logic
    ?? ??? ?// 將一個匿名方法寫到這里,就相當于AfterClass
    ?? ??? ?Runtime.getRuntime().addShutdownHook(new Thread() {
    ?? ??? ??? ?public void run() {
    ?? ??? ??? ??? ?System.out.println("shutdown");
    ?? ??? ??? ?}
    ?? ??? ?});
    ?? ?}

    ?? ?protected void setUp() throws Exception {
    ?? ?}
    }

    8,如果用junit-4.jar,去官網(wǎng)下載junit4.4.jar。不要采用myeclipse自帶的junit4.jar,因為這個不帶JUnit4ClassRunner類。
    ?? 另外不要用junit-4.5.jar,據(jù)說與spring2.5有沖突,
    ?? 詳見Spring Test Context Framework not compatible with JUnit 4.5,http://jira.springframework.org/browse/SPR-5145


    9,String htmlContent = "<html><head></head><body>html content</body></html>";
    String plainContent = "plain content";

    MockMultipartHttpServletRequest req = new MockMultipartHttpServletRequest();
    req.setContentType("multipart/form-data");
    //req.addHeader("Content-type", "multipart/form-data");//這樣寫應該是一樣的
    req.setMethod("POST");
    req.addFile( new MockMultipartFile("file","test1.html","text/html", htmlContent.getBytes( "US-ASCII" ) ) );
    req.addFile( new MockMultipartFile("file","test2.html","text/html", htmlContent.getBytes( "US-ASCII" ) ) );
    req.addFile( new MockMultipartFile("file","test.txt", "text/plain",plainContent.getBytes( "US-ASCII" ) ) );
    assertTrue( ServletFileUpload.isMultipartContent( req ) );
    int content_length = req.getContentLength();

    10,AbstractTransactionalJUnit38SpringContextTests
    ??? AbstractTransactionalSpringContextTests
    ??? AbstractTransactionalDataSourceSpringContextTests
    的區(qū)別?

    11,MockHttpServletRequest的addParameter方法和setParameter的區(qū)別


    參考:
    詳細講解在Spring中進行集成測試
    http://www.javaeye.com/topic/68185
    http://www.google.cn/codesearch/p?hl=zh-CN#Vq-IOboH1tI/trunk/test/es/peerreview/service/TestPeerReviewSpring.java
    用Spring提供的JUnit框架擴展對DAO或Service層進行單元測試
    http://code.google.com/p/anewssystem/source/browse/trunk/anewssystem/parent/core/src/main/java/anni/core/test/?r=105
    http://docs.huihoo.com/spring/2.5.x/zh-cn/testing.html
    http://arkxu.javaeye.com/blog/261679
    http://www.ibm.com/developerworks/cn/java/j-cb06066.html
    http://www.ibm.com/developerworks/cn/java/j-lo-spring25-test/
    基于mock對象和JUnit框架簡化Spring Web組件單元測試
    http://www.tkk7.com/calvin/archive/2005/09/21/13628.html
    http://www.yybean.com/testing-framework-to-use-spring-integration-testing


    posted @ 2009-01-04 18:13 leekiang 閱讀(1908) | 評論 (0)編輯 收藏

    1,做人、做事,做架構師——架構師能力模型解析

    2,劍法三套,程序員也能掙大錢

    posted @ 2008-12-29 22:57 leekiang 閱讀(238) | 評論 (0)編輯 收藏

    1,Junit測試Action
    http://lyx.javaeye.com/blog/57037

    2,在JUnit中多個testCase只執(zhí)行一次setup和tearDown的方法

    3,SoapUI當選最佳開源Web Services測試工具

    4,通過Spring2.5對單元測試的Annotation支持進行TDD開發(fā)

    5,sventon用于svn代碼的在線瀏覽,其單元測試代碼很規(guī)整。
    http://svn.sventon.org/repos/berlios/show/trunk/sventon/src/test/java/org/sventon/web/ctrl/template/GetFileControllerTest.java

    6,mockito似乎比easymock好用

    posted @ 2008-12-24 00:31 leekiang 閱讀(275) | 評論 (0)編輯 收藏

    1,項目中如何進行敏捷建模
    2,來自Rails世界的項目管理工具Redmine

    posted @ 2008-12-24 00:28 leekiang 閱讀(106) | 評論 (0)編輯 收藏

    1,范圍查詢,例如
    Term?begin=new?Term("publishdate","1999-01-01");
    Term?end
    =new?Term?("publishdate","1999-10-15");
    RangeQuery?q
    =new?RangeQuery(begin,end,true);





    1),
    Lucene-2.2.0 源代碼閱讀學習
    2)
    Lucene 中自定義排序的實現(xiàn)
    3)
    lucene學習筆記
    4)
    http://www.lucene.com.cn/sj.htm
    5)LRU
    LRU(最近最少使用算法) and MRU(最近最常使用算法)? 所謂的LRU(Least recently used)算法的基本概念是:當內存的剩余的可用空間不夠時,緩沖區(qū)盡可能的先保留使用者最常使用的數(shù)據(jù),換句話說就是優(yōu)先清除”較不常使用的數(shù)據(jù)”,并釋放其空間.之所以”較不常使用的數(shù)據(jù)”要用引號是因為這里判斷所謂的較不常使用的標準是人為的、不嚴格的.所謂的MRU(Most recently used)算法的意義正好和LRU算法相反.
    oracle緩存用到了LRU
    http://bluepopopo.javaeye.com/blog/180236
    6,Apache lucene知識匯集
    7,Lucene 2.3.1 閱讀學習(41)
    8,Lucene的score()實現(xiàn)
    9,Lucene 的排序修改
    10,6大原因讓你不選擇使用Lucene
    11,解決lucene范圍搜索中的TooManyClauses exception

    posted @ 2008-12-23 23:22 leekiang 閱讀(284) | 評論 (0)編輯 收藏

    僅列出標題
    共54頁: First 上一頁 27 28 29 30 31 32 33 34 35 下一頁 Last 
    主站蜘蛛池模板: 亚洲午夜精品久久久久久app| 一级中文字幕免费乱码专区 | 99精品视频免费在线观看| 337p欧洲亚洲大胆艺术| 成人永久福利免费观看| 精品一区二区三区免费视频| 亚洲酒色1314狠狠做| 国产精品公开免费视频| 日本亚洲欧洲免费天堂午夜看片女人员| 亚洲免费视频播放| 亚洲男人在线无码视频| 亚洲视频在线免费看| 成人午夜影视全部免费看| 亚洲最新在线视频| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 午夜影院免费观看| 亚洲精品伦理熟女国产一区二区| 国产亚洲美女精品久久久2020| 无码人妻精品中文字幕免费东京热| 视频一区二区三区免费观看| 久久久久亚洲AV无码网站| 亚洲成a人无码av波多野按摩| 精品免费久久久久久久| 国产精品午夜免费观看网站| 波多野结衣亚洲一级| 国产亚洲精品va在线| 国产精品免费视频网站| 1000部禁片黄的免费看| 中文字幕看片在线a免费| 亚洲av日韩综合一区二区三区| 亚洲一二成人精品区| 久久久久国产亚洲AV麻豆| 日本一道本高清免费| 希望影院高清免费观看视频| 免费成人在线视频观看| 黄网站在线播放视频免费观看| 亚洲人成网站在线观看播放青青| 亚洲高清国产AV拍精品青青草原 | 亚洲色WWW成人永久网址| 日本高清免费不卡视频| 97国产免费全部免费观看|