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

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

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

    Loading...

    java .net

    置頂隨筆

    一個喜歡coding的程序員,工作在北京,從事java web 開發(fā),喜歡JavaScript,平時關(guān)注技術(shù)新聞,試用各種新框架、新語言,學(xué)海無涯,有時也迷茫
    平時沒事翻翻編程思想、瀏覽各位同行的blog,將各種實際中的技巧、方法拿來養(yǎng)眼,并用到自己的項目中感受快樂
    頭兒的評價:不管遇到什么難題,都會鉆窟窿盜洞把它解決掉

    求職簡歷
    posted @ 2010-05-19 14:58 豬 閱讀(282) | 評論 (0)編輯 收藏

    2011年4月18日

    最近在學(xué)習(xí)如何使用maven,做了一個demo(基于S2S整合),總結(jié)一下與大家分享,期待與大家討論以期快速進步。

    一、maven介紹

    1、maven是什么

    http://maven.apache.org/
    官方解釋:Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標(biāo)準(zhǔn)集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(tǒng)(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(biāo)(goal)的邏輯。

    2、使用maven有什么好處,解決什么問題

    jar統(tǒng)一管理了:

    如果建立了一個本地的jar倉庫,那么所有人都是從倉庫里面下載jar,拷貝項目時只需要copy幾K的源碼即可!其次,依然是倉庫,使得每個人的jar版本都是一致的,不會出現(xiàn)因為版本不同,引起的莫名其妙的錯誤。
    項目的自動化:

    只需要mvn package命令,在eclipse里面,看run里面,只需要選擇就行了!它會自動的從編譯,測試開始,一直到打包,自動的運行,保證你的包沒有問題。

    我們在做多個不同的Java項目時,每個項目所用到的庫文件基本都是大同小異的,通常的做法是每個項目下面都會復(fù)制一份這些庫文件,甚至?xí)堰@些庫文件都提交到vss上去,這樣帶來的問題不僅是增大了項目占用的硬盤空間,而且也使包管理很混亂。

    我們可以這樣查看jar包的依賴關(guān)系,是不是很爽?!
    image

    還可以單元測試覆蓋率報表:

    image

    2、helloword

    1、下載Maven 附件中的maven3.jar 解壓到任意目錄

    2、安裝eclipse插件m2eclipse

    方式一:在線安裝 更新地址是:http://m2eclipse.sonatype.org/sites/m2e
    方式二:本地安裝 help-->install new softeware-->add-->name填寫maven-->archive..-->jar:file:/../m2e.zip!/-->ok
    安裝完成重啟eclipse,在Window-->Preferences-->Maven下配置

    image

    禁用eclipse啟動時更新maven index 主要是每次eclipse啟動時都更新很煩人

    image

    添加自己的maven

    3、新建maven項目

    按照下圖步驟

    image

    • groupId定義了項目屬于哪個組,這個組往往和項目所在的組織或公司存在關(guān)聯(lián)。譬如在googlecode上建立了一個名為myapp的項目,那么groupId就應(yīng)該是com.googlecode.myapp.
    • artifactId定義了當(dāng)前Maven項目在組中唯一的ID,groupId為com.googlecode.myapp的例子中,你可能會為不同的子項目(模塊)分配artifactId,如myapputil、myappdomain、myappweb等。
    • version指定了項目當(dāng)前的版本——1.0SNAPSHOT。SNAPSHOT意為快照,說明該項目還處于開發(fā)中,是不穩(wěn)定的版本。隨著項目的發(fā)展,version會不斷更新,如升級為1.0、1.1SNAPSHOT、1.1、2.0等。
    • name元素聲明了一個對于用戶更為友好的項目名稱

    點擊Finish完成

    4、maven項目結(jié)構(gòu)

    下圖為基于maven項目結(jié)構(gòu),這里跟我們以前的項目結(jié)構(gòu)很不一樣,以前的項目結(jié)構(gòu)約定俗成的只有兩塊 一個src 一個webRoot,當(dāng)然這些都可以隨意配置,比如WebRoot有的叫WebContent

    image
    這里maven倡導(dǎo)約定優(yōu)于配置,maven的約定就是以下目錄結(jié)構(gòu)
    src/main/java 下存放java類
    src/main/webapp 下存放頁面文件(需要手動創(chuàng)建)
    src/main/resources 下存放資源文件
    src/test/java 下存放單元測試代碼
    src/test/resources 下存放測試資源文件

    5、添加jar包

    只需維護pom.xml
    比如添加struts2-core
    <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.0.11.2</version>
    </dependency>

    我在172.20.66.230上部署了一個maven倉庫,訪問地址http://172.20.66.230:8081/nexus/

    maven會根據(jù)pom.xml中的配置訪問230的倉庫下載對應(yīng)的jar source 以及doc,下載到哪?這要看maven3/conf/settings.xml 55:

    <localRepository>F:/Maven3/repository</localRepository>

    6、編寫代碼

    附件中有一個struts2+spring 的demo,解壓然后import eclipse

    在項目名上右鍵 run as -->Run Configurations

    image

    按圖配置,點擊Run即可。瀏覽器中訪問http://localhost:8080/MavenSSH/

    Maven運行的生命周期

    • 復(fù)制src/main/resources資源文件到輸出目錄

    • 編譯src/main/java下的源代碼

    • 復(fù)制src/test/resources下的測試用資源文件到測試輸出目錄

    • 編譯src/test/java下的測試用例

    • 運行測試用例

    • 打包生成

    ===========================

    • 以上是一個簡單的例子,只是用它獲取依賴的jar包 。maven還有很多諸如項目管理方面的功能,比如文檔編制、發(fā)布管理、配置管理...

    • 第一個次運行項目會比較慢,因為要下載jar包。

    • MavenSSH.rar是一個struts2與spring集成的例子,頁面用到了sitemesh div+css 也值得學(xué)習(xí)

    • 項目debug是運行在jetty(類似于tomcat的容器)中。

    posted @ 2011-04-18 16:09 豬 閱讀(1332) | 評論 (5)編輯 收藏

    2010年11月15日

    如果部署GAE時正在upload files時退出,下次部署時會報錯

    Another transaction by user is already in progress for this app and major version. That user can undo the transaction with appcfg.py's "rollback" command

     

    找到eclipse中的GAE SDK目錄

    如:D:\eclipse\plugins\com.google.appengine.eclipse.sdkbundle.1.3.8_1.3.8.v201010161055\appengine-java-sdk-1.3.8\bin

     

    執(zhí)行命令

    appcfg.cmd rollback 后面跟gae項目war所在目錄

    如 appcfg.cmd rollback D:/spring/eclipse_workspace/taobaoke/war

     

    執(zhí)行:

    ********************************************************
    Warning: Future versions of the Dev App Server will require Java 1.6 or later. P
    lease upgrade your JRE.
    ********************************************************
    Reading application configuration data...
    2010-11-15 9:34:23 com.google.apphosting.utils.config.AppEngineWebXmlReader read
    AppEngineWebXml
    信息: Successfully processed D:/spring/eclipse_workspace/taobaoke/war\WEB-INF/ap
    pengine-web.xml
    2010-11-15 9:34:23 com.google.apphosting.utils.config.AbstractConfigXmlReader re
    adConfigXml
    信息: Successfully processed D:/spring/eclipse_workspace/taobaoke/war\WEB-INF/we
    b.xml
    2010-11-15 9:34:23 com.google.apphosting.utils.config.AbstractConfigXmlReader re
    adConfigXml
    信息: Successfully processed D:/spring/eclipse_workspace/taobaoke/war\WEB-INF/cr
    on.xml
    Beginning server interaction for taokeapp...
    0% Rolling back the update.
    Success.
    Cleaning up temporary files...

    posted @ 2010-11-15 09:55 豬 閱讀(425) | 評論 (0)編輯 收藏

    2010年10月21日

    在網(wǎng)上無意搜到一個用Ext實現(xiàn)的淘寶客,恩 ,咱用GWT做一個車輪

    下了淘寶的 SDK for java就開干 參考API文檔按部就班

    在淘寶的沙箱里測試,很順利,乘勝前進,到正式環(huán)境下測試

    問題來了

    invalid signature

    網(wǎng)上搜了一通,有說時間戳不對,果不其然,GAE使用的是標(biāo)準(zhǔn)時間,整整差了8小時,遂在獲得的當(dāng)前時間上加了8小時,OK

    invalid signature 可能的另一個原因是APP_KEY 或 APP_SERCET不正確,仔細(xì)檢查

     

    調(diào)用 taobao.item.get

     

    1 TaobaoClient client=new DefaultTaobaoClient(TaobaokeConstant.SANDBOX_URL, TaobaokeConstant.APP_KEY, TaobaokeConstant.APP_SERCET);
    2 ItemcatsGetRequest req=new ItemcatsGetRequest();
    3 java.util.Calendar c=java.util.Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
    4 c.add(Calendar.HOUR, 8);
    5 req.setTimestamp(c.getTime().getTime()) ;
    6 req.setParentCid(new Long(0));
    7 ItemcatsGetResponse response=client.execute(req);
    8 return response.getItemCats();

     

    調(diào)用 taobao.taobaoke.items.get

     
    1 TaobaoClient client=new DefaultTaobaoClient(TaobaokeConstant.SANDBOX_URL, TaobaokeConstant.APP_KEY,TaobaokeConstant.APP_SERCET);
    2 TaobaokeItemsGetRequest req=new TaobaokeItemsGetRequest();
    3 req.setFields("num_iid,title,nick,pic_url,price,click_url,commission,commission_rate,commission_num,commission_volume,shop_click_url,seller_credit_score,item_location,volume,taobaoke_cat_click_url,keyword_click_url");
    4 req.setCid(Long.parseLong(cid));
    5 req.setNick(TaobaokeConstant.NICK);
    6 req.setSort("commissionRate_desc");
    7 TaobaokeItemsGetResponse response=client.execute(req);
    8 return response.getTaobaokeItems();
     
    想用GAE JCache API 加入緩存以減輕壓力,但屢試不行,從緩存中取 的時候報錯
    沒找到原因
     
    改用自己寫的緩存,然后用App Engine Cron 服務(wù)管理緩存
     
    corn.xml
     
    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <cronentries>
    3   <cron>
    4     <url>/cron/recache</url>
    5     <description>Repopulate the cache every 1 hours</description>
    6     <schedule>every 1 hours</schedule>
    7   </cron>
    8 </cronentries>
    posted @ 2010-10-21 11:33 豬 閱讀(743) | 評論 (0)編輯 收藏

    2010年6月13日

    posted @ 2010-06-13 09:54 豬 閱讀(434) | 評論 (0)編輯 收藏
         摘要: 01 var $j = jQuery.noConflict(); 02 //使用此方法驗證所有text textarea 是否含有非法字符 03 $j(document).ready(function(){ 04    $j("input[type='text']").each(functio...  閱讀全文
    posted @ 2010-06-13 09:53 豬 閱讀(2047) | 評論 (1)編輯 收藏

    2010年5月19日

    一個喜歡coding的程序員,工作在北京,從事java web 開發(fā),喜歡JavaScript,平時關(guān)注技術(shù)新聞,試用各種新框架、新語言,學(xué)海無涯,有時也迷茫
    平時沒事翻翻編程思想、瀏覽各位同行的blog,將各種實際中的技巧、方法拿來養(yǎng)眼,并用到自己的項目中感受快樂
    頭兒的評價:不管遇到什么難題,都會鉆窟窿盜洞把它解決掉

    求職簡歷
    posted @ 2010-05-19 14:58 豬 閱讀(282) | 評論 (0)編輯 收藏
    Compiling module com.capinfo.cdss.gwt.olap.Olap
    Compiling 12 permutations
    Compiling permutation 0...
    Compiling permutation 1...
    Compiling permutation 2...
    Compiling permutation 3...
    Compiling permutation 4...
    Compiling permutation 5...
    Compiling permutation 6...
    Compiling permutation 7...
    Compiling permutation 8...
    Compiling permutation 9...
    Compiling permutation 10...
    Compiling permutation 11...
    Compile of permutations succeeded
    Linking into D:\spring\workspace\fusionchart\war\olap.
    Link succeeded
    Compilation succeeded -- 291.925s

    在#.gwt.xml中添加支持Firefox
    <!-- User Agent -->
    <set-property name="user.agent" value="gecko1_8" /> 
    編譯的確變得很快,但I(xiàn)E中果真不好使
    posted @ 2010-05-19 10:19 豬 閱讀(1158) | 評論 (1)編輯 收藏
    GWT設(shè)置UncaughtExceptionHandler 以捕獲為捕捉的異常,這gwt在host mode編譯后的JavaScript如果出現(xiàn)錯誤,No errors in Hosted Mode and Compiled localy, but deployed to tomcat yields in errors
    這是惱人,加上UncaughtExceptionHandler起碼有一絲線索
    GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() {
        public void onUncaughtException(Throwable throwable{
            String text = "Uncaught exception: ";
            while (throwable != null{
                StackTraceElement[] stackTraceElements = throwable
                        .getStackTrace();
                text += throwable.toString() + "\n";
                for (int i = 0i < stackTraceElements.lengthi++) {
                    text += "    at " + stackTraceElements[i] + "\n";
                }
                throwable = throwable.getCause();
                if (throwable != null{
                    text += "Caused by: ";
                }
            }
            System.err.print(text);
            text = text.replaceAll(" ", " ");
            Window.alert("系統(tǒng)錯誤:"+text);
        }
    });
    posted @ 2010-05-19 10:18 豬 閱讀(369) | 評論 (0)編輯 收藏
    java.lang.IllegalStateException:Should only call onDetach when the widget is attached to the browser's document

    這個異常是在com.google.gwt.user.client.ui.Widget protected void onDetach() 方法拋出的
    當(dāng)頁面重新加載或離開頁面時會執(zhí)行這個方法
    如果系統(tǒng)沒有正常初始化,會有這個異常
    郁悶的是No errors in Dev Mode but Compiled localy and deployed to tomcat in errors
    posted @ 2010-05-19 10:18 豬 閱讀(506) | 評論 (0)編輯 收藏

    private void showWaitMess(Frame window){
        final MessageBox box = MessageBox.wait("等待", "正在查詢數(shù)據(jù),請稍后...", "查詢中...");
        final Element frame = window.getElement();
        final Timer t = new Timer() {
            @Override
            public void run() {
                if (ready(frame)) {
                    this.cancel();
                    box.close();
                }
            }
        };
        t.scheduleRepeating(100);
    }
    private native boolean ready(Element frame)/*-{
        return frame.contentWindow.document.readyState=="complete";
    }-*/;
    posted @ 2010-05-19 10:15 豬 閱讀(295) | 評論 (0)編輯 收藏
    又漲見識了
    IE8報下面錯誤,而且是我的機器不報,同事的機器報,試了4臺,兩個報,兩個不報,IE版本都一樣,沒想明白
    解決:1、查看是否有未關(guān)閉的html標(biāo)簽,比如<table>而沒有</table> (我就是這個原因)
    2、是否在頁面未加載完前js代碼操作了body里的元素,將相關(guān)js代碼移到</body>后面



    網(wǎng)頁錯誤詳細(xì)信息

    用戶代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
    時間戳: Wed, 14 Apr 2010 08:33:56 UTC


    消息: HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)
    行: 0
    字符: 0
    代碼: 0
    URI:  


    http://support.microsoft.com/kb/927917
    posted @ 2010-05-19 10:11 豬 閱讀(1853) | 評論 (0)編輯 收藏

           本來系統(tǒng)是由JSP+潤乾報表做的,做出一版來給人家客戶演示,人家覺得體驗不夠,也沒不夠絢麗,要求回去返工,主要是因為他們看過他們兄弟部門的一個類似系統(tǒng),要求向那個系統(tǒng)靠攏,可殊不知人家那是.net做的C/S,交互體驗當(dāng)然好了。

          面臨一個抉擇,換.net平臺做winform,然后用sql server Analysis Services 的現(xiàn)成組件,這要技術(shù)上肯定可行,但是需要購買一堆微軟的東西,錢啊。

          正好以前看過一些GWT的資料,以及基于GWT的開源框架,它的界面效果倒是可以滿足客戶的要求,遂毛遂自薦,想試試用GXT實驗是否能實現(xiàn)要求的功能和效果,同時也有其他同事考察了SAP的BI,水晶E表,IBM的Cognos,結(jié)果因功能實現(xiàn)不夠或者商務(wù)問題擱淺

          好像春節(jié)后沒多久就開始搞GWT,現(xiàn)在終于實現(xiàn)了(或是變相實現(xiàn)了)要求的功能、滿足了客戶的意見,很有成就感,期間經(jīng)歷了兩次重構(gòu),現(xiàn)在采用的GXT提供的MVC模型,底層數(shù)據(jù)訪問是通過調(diào)用潤乾報表API,將潤乾報表運算結(jié)果轉(zhuǎn)化為一個List,然后交給GXT在頁面展現(xiàn)。

          頁面功能上,GXT挺全面,Grid列排序,隱藏顯示特定列,樹形展開收縮,用open chart封裝的統(tǒng)計圖表,數(shù)據(jù)鉆取,列標(biāo)題分組,拖拽形式動態(tài)設(shè)置列維度、行維度以實現(xiàn)靈活查詢,將靈活查詢行列維度保存起來供以后隨時打開,將結(jié)果到處Excel、PDF、Word,動態(tài)設(shè)置查詢條件的顯示隱藏,動態(tài)的進度條提示等等

          接下來還要融入GIS,實現(xiàn)報表到地圖,地圖到報表。

          值得注意的是所有這些功能都是在一個窗口中完成的,實現(xiàn)了菜單、維度定義、報表、統(tǒng)計圖功能的融合,不用客戶點來點去,一步了然。

    posted @ 2010-05-19 10:11 豬 閱讀(456) | 評論 (0)編輯 收藏

    OLAP(On_line Analytical Processing聯(lián)機分析處理) 和 OLTP(On_line Transaction Processing聯(lián)機事務(wù)處理)

    OLTP:On_line Transaction Processing 聯(lián)機事務(wù)處理 ,以業(yè)務(wù)處理為主

    OLAP:On_line Analytical Processing     聯(lián)機分析處理,則是專門為支持復(fù)雜的分析操作而設(shè)計的,側(cè)重于對決策人員和高層管理人員的決策支持

    posted @ 2010-05-19 10:05 豬 閱讀(329) | 評論 (0)編輯 收藏
    因為客戶不滿意界面設(shè)計,人家看中了兄弟單位用的系統(tǒng)的樣子,可他卻不知那時cs程序,要想用bs做成那樣的效果還是先天不足,就這樣開始了GWT GXT的探索,一邊摸索一邊用GXT重寫這個系統(tǒng)
    現(xiàn)在想想 經(jīng)歷了三個階段
    剛開始是demo階段,因為不知道路走不走的通,全面摸索GXT能實現(xiàn)的效果,也沒注意模塊的規(guī)劃,甚至就一個類
    而后發(fā)現(xiàn)還是能走通的,就開始添磚加瓦,發(fā)現(xiàn)代碼越加越亂,決心重構(gòu),定義了多個包,多個類負(fù)責(zé)不同的功能模塊,定義了一些Panel,一下子清晰多了,也遇到了不同模塊間互相調(diào)用的問題,自己想當(dāng)然的辦法就是在一個類中聲明每個模塊作為屬性,就像一個總管,每個屋子的鑰匙我都有了,也認(rèn)識到了這樣的缺點,一些模塊中的事件不等不在這個主管中定義
    現(xiàn)在Now,用一天時間再次改寫,仿照Gxt中的例子Explorer
    1、將各個模塊定義成com.extjs.gxt.ui.client.mvc.View,View中必須實現(xiàn)方法handleEvent(AppEvent event),負(fù)責(zé)處理發(fā)給自己的事件
    2、為每個View定義com.extjs.gxt.ui.client.mvc.Controller,每個Controller中包含View,在這里定義View要處理的事件
    3、在Dispatcher中注冊每個Controller

    這樣,每個View各司其職,他們各自有各自的功能,會接收為他們定義的所有事件并處理,發(fā)送事件Dispatcher.forwardEvent(appEvent);

    感覺這次改寫后 速度還沒有改寫前的快,現(xiàn)在每次操作url會自動添加Hash,想把它去掉,一直沒找到根結(jié)
    posted @ 2010-05-19 09:55 豬 閱讀(610) | 評論 (0)編輯 收藏
    Gwt中調(diào)用panel的setUrl方法嵌入一個網(wǎng)頁
    在網(wǎng)頁加載過程中加入wait
    在頁面中加入javascript
    var ready = false; 
    $j(document).ready(function(){
    ready = true; 
    });//這里用了jquery

    然后再java中聲明
    public native boolean ready(Element frame)/*-{
    return frame.contentWindow.ready?true:false;
    }-*/;

    然后在設(shè)置Frame的url時
    olapFrame = centerCp.setUrl(GWT.getHostPageBaseURL()
    + com.google.gwt.http.client.URL.encode("jsp/showOlap.jsp?dim="
    + dims + "&dimname=" + colLabels + ""));
    final MessageBox box = MessageBox.wait("等待", "正在查詢數(shù)據(jù),請稍后...", "查詢中...");
    final Element frame = olapFrame.getElement();
    final Timer t = new Timer() {
    @Override
    public void run() {
    if (ready(frame)) {
    this.cancel();
    box.close();
    }
    }
    };
    t.scheduleRepeating(100);
    posted @ 2010-05-19 09:54 豬 閱讀(479) | 評論 (0)編輯 收藏
    僅列出標(biāo)題  下一頁

    公告

    希望有一天

    我能用鼠標(biāo)雙擊我的錢包

    然后選中一張100元

    按住“ctrl+c”

    接著不停的“ctrl+v”

    嘻嘻~~~笑醒~~~



    導(dǎo)航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統(tǒng)計

    常用鏈接

    留言簿(6)

    隨筆分類(102)

    隨筆檔案(398)

    文章分類

    文章檔案(10)

    有趣網(wǎng)絡(luò)

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲系列国产精品制服丝袜第| 亚洲午夜无码AV毛片久久| 搡女人真爽免费视频大全| 毛片免费全部播放一级| 日韩中文无码有码免费视频 | 国产卡一卡二卡三免费入口| 国产成在线观看免费视频| 日韩在线视频免费看| 国产偷国产偷亚洲清高动态图| 亚洲不卡中文字幕无码| 亚洲成人免费网站| 久久久久久亚洲精品无码| 国产免费内射又粗又爽密桃视频| 久久久高清日本道免费观看| 四虎永久在线观看免费网站网址| 日本人的色道www免费一区| 久久国产成人亚洲精品影院| 亚洲精品无码AV人在线播放| 久久精品国产亚洲av水果派| 亚洲色在线无码国产精品不卡| 一级毛片aa高清免费观看| 三年片在线观看免费大全电影| 毛片网站免费在线观看| 亚洲欧洲日本在线| 亚洲欧洲自拍拍偷综合| 免费国产在线精品一区| 日本不卡免费新一区二区三区| 成人毛片18女人毛片免费96 | 日本无吗免费一二区| 亚洲精品制服丝袜四区| 亚洲人成电影网站久久| XXX2高清在线观看免费视频| 老司机在线免费视频| 综合亚洲伊人午夜网| 精品国产成人亚洲午夜福利| GOGOGO免费观看国语| 日韩吃奶摸下AA片免费观看| 亚洲色欲久久久综合网东京热| ass亚洲**毛茸茸pics| 亚洲人成网站在线观看青青| 亚洲色偷偷av男人的天堂|