大夢想家

          5年開發(fā)工程師,2年實(shí)施經(jīng)理,X年售前顧問,......
          數(shù)據(jù)加載中……

          測試Windows Live Writer

          我也用用看~測試一下!

          posted @ 2007-11-01 14:36 阿南 閱讀(202) | 評論 (0)編輯 收藏
          再次尋求從事過Java桌面的應(yīng)用的朋友解惑~

                 今天早上的Blog大家都看到了,大家的留言我也一一拜讀過了~感謝 zhrb ,千里冰封 javazhai ,BeanSoft ,plankton13 ,mingj 等的回復(fù)。
                  下午反省了一下自己的代碼,得出一下結(jié)論和疑問,有時(shí)間,請大家再討論一下。
                  1.反省代碼,整理所有用過的對象,特別上查詢完數(shù)據(jù)庫返回的上萬條記錄的結(jié)果集,一一將他們制空,然后再System.gc()看看效果;
                  2.因?yàn)槭峭ㄓ脭?shù)據(jù)查詢平臺,那么結(jié)果集的展示形式是可以由實(shí)施人員自由定義的,比方說字體,顏色,圖片等等,雖然我沒有使用JFace對資源封裝的統(tǒng)一標(biāo)準(zhǔn)組件,但是絕對是在使用完一一做了銷毀處理,我的疑問是,我對資源做了銷毀處理,是不是這部分資源在虛擬機(jī)中的占用空間依舊存在,也就是并沒有真正的銷毀他們;
                          這里談?wù)勛约旱膶?shí)踐經(jīng)驗(yàn),如果真的是資源的問題,首先出問題的還輪不到Javaw,Eclipse馬上就會出來叫囂,告訴你沒有足夠的資源的可以使用,不能創(chuàng)建GC,字體,顏色或者是圖片等等,如果還是不解決,客戶端的GUI馬上就會變形,變的面目全非~
                  3.我現(xiàn)在碰到的問題還不是內(nèi)存不足,或者內(nèi)存溢出,而是Javaw的內(nèi)存占有再不斷的遞增,并不是某一個(gè)恒定值區(qū)間;


                  希望大家再次賜教!

          posted @ 2007-10-21 20:34 阿南 閱讀(1381) | 評論 (12)編輯 收藏
          尋求從事過Java桌面的應(yīng)用的朋友解惑~

                 最近在公司從事一個(gè)通用的數(shù)據(jù)查詢平臺的開發(fā),是一個(gè)基于Eclipse-RCP的應(yīng)用,項(xiàng)目現(xiàn)在基本進(jìn)入改進(jìn)和修正BUG階段。
              但是現(xiàn)在碰到了令人頭疼的問題,程序在測試人員的機(jī)器上跑上半個(gè)多小時(shí),整個(gè)應(yīng)用程序的內(nèi)存會占到300m以上,如果是做頻繁的大數(shù)據(jù)查詢,內(nèi)存漲的更快。
              我加了每分鐘調(diào)用一次System.gc()的線程,唯一的改觀是在Eclipse下面的內(nèi)存進(jìn)度顯示上,會出現(xiàn)小范圍的減少,但是從任務(wù)管理器中檢視應(yīng)用程序的內(nèi)存,還是居高不下~
                 Java本身吃內(nèi)存,我能理解,Eclipse-RCP也會加載大量的東西,我也能理解,大數(shù)據(jù)量的加載更可怕,我更能理解,但是無論怎么調(diào)用System.gc()都沒有什么反應(yīng),我就不能理解了~
                希望做過這方面的研究或者應(yīng)用的朋友幫忙解答,或者談?wù)劷?jīng)驗(yàn)~也可以幫助我做一些改善~

          posted @ 2007-10-21 11:24 阿南 閱讀(1167) | 評論 (9)編輯 收藏
          一個(gè)使用SWT Ribbon代替Eclipse-RCP上面Coolbar的例子~




          我用代碼硬生生的把Eclipse-RCP丑陋的Coolbar替換掉了,但是不爽的是,Viewer上使用的是CTabFolder,而這個(gè)CTabFolder的產(chǎn)生,我沒有辦法操控,希望有高手指點(diǎn)。
          修改代碼如下:
           1package test;
           2
           3import org.eclipse.swt.SWT;
           4import org.eclipse.swt.graphics.Point;
           5import org.eclipse.swt.layout.FillLayout;
           6import org.eclipse.swt.widgets.Composite;
           7import org.eclipse.swt.widgets.Shell;
           8import org.eclipse.ui.application.ActionBarAdvisor;
           9import org.eclipse.ui.application.IActionBarConfigurer;
          10import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
          11import org.eclipse.ui.application.WorkbenchWindowAdvisor;
          12import org.eclipse.ui.internal.WindowTrimProxy;
          13import org.eclipse.ui.internal.WorkbenchMessages;
          14import org.eclipse.ui.internal.WorkbenchWindowConfigurer;
          15import org.eclipse.ui.internal.layout.TrimLayout;
          16
          17import com.hexapixel.widgets.generic.ColorCache;
          18import com.hexapixel.widgets.ribbon.RibbonTab;
          19import com.hexapixel.widgets.ribbon.RibbonTabFolder;
          20
          21public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
          22
          23    private TrimLayout defaultLayout;
          24    private Composite topComposite;
          25    private WindowTrimProxy topCompositeTrim;
          26    private Composite pageComposite;
          27    
          28    public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
          29        super(configurer);
          30    }

          31
          32    public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
          33        return new ApplicationActionBarAdvisor(configurer);
          34    }

          35    
          36    public void preWindowOpen() {
          37        IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
          38        configurer.setInitialSize(new Point(400300));
          39        configurer.setShowCoolBar(false);
          40        configurer.setShowStatusLine(false);
          41        configurer.setTitle("Hello RCP");
          42    }

          43
          44    @Override
          45    public void createWindowContents(Shell shell) {
          46        shell.setBackground(ColorCache.getInstance().getColor(182206238));
          47        // TODO Auto-generated method stub
          48        defaultLayout = new TrimLayout();
          49        defaultLayout.setSpacing(2222);
          50        defaultLayout.setMargins(22);
          51        shell.setLayout(defaultLayout);
          52        
          53        //topComposite
          54        topComposite = new Composite(shell, SWT.None);
          55        topComposite.setLayout(new FillLayout(SWT.VERTICAL)); 
          56        topComposite.setBackground(ColorCache.getInstance().getColor(182206238));
          57        
          58            final RibbonTabFolder ftf = new RibbonTabFolder(topComposite, SWT.NONE);
          59            RibbonTab ft0 = new RibbonTab(ftf, "Home");
          60            RibbonTab ft1 = new RibbonTab(ftf, "Insert");
          61            new RibbonTab(ftf, "Page Layout");
          62            new RibbonTab(ftf, "References");
          63        
          64        topCompositeTrim = new WindowTrimProxy(topComposite,"org.eclipse.ui.internal.WorkbenchWindow.topBar", WorkbenchMessages.TrimCommon_Main_TrimName, SWT.NONE, true);
          65        
          66        
          67        
          68        
          69        pageComposite = (Composite) ((WorkbenchWindowConfigurer) getWindowConfigurer()).createPageComposite(shell);
          70        setLayoutDataForContents();
          71    }

          72
          73    private void setLayoutDataForContents() {
          74        updateLayoutDataForContents();
          75        
          76    }

          77
          78    private void updateLayoutDataForContents() {
          79        if (defaultLayout == null{
          80            return;
          81        }

          82        defaultLayout.addTrim(SWT.TOP, topCompositeTrim);
          83        topComposite.setVisible(true);
          84        
          85        pageComposite.setBackground(ColorCache.getInstance().getColor(182206238));
          86        defaultLayout.setCenterControl(pageComposite);
          87        
          88    }

          89    
          90}

          91

          posted @ 2007-10-09 11:52 阿南 閱讀(3828) | 評論 (11)編輯 收藏
          Nebula維護(hù)者的新作SWT Ribbon放出!

            

          相信嗎,這是SWT做的!這個(gè)就是Nebula項(xiàng)目維護(hù)者的新作~SWT Ribbon~前一段時(shí)間一直把玩的SWT Gantt也是他的作品,非常好用,功能十分強(qiáng)加~
              讀過他的代碼的朋友也許都有感覺,他的代碼思路非常清晰,代碼量不大,但是絲絲入扣,寥寥幾行就能把功能實(shí)現(xiàn)~高手中高手~
              再贊一下Nebula的Grid,有了它,我已經(jīng)不再考慮使用Table了~有時(shí)間大家都研究研究吧~

          posted @ 2007-10-07 19:14 阿南 閱讀(2036) | 評論 (2)編輯 收藏
          部門要擴(kuò)張了,又要走上講臺了!

              10.1忙七天,呵呵又跟5.1一樣,沒的休息~沒辦法,誰讓咱們干這行了呢?老大的話就是命令,客戶才不管你是死是活呢~
              部門要開始新一輪的擴(kuò)張了,第一批進(jìn)來6個(gè)開發(fā)人員,這次又是20個(gè)畢業(yè)生免費(fèi)培訓(xùn),層層篩選最后留10個(gè)。這種招人的方法確實(shí)很有效果~不過最辛苦的還是我們,每天不但要拼命的趕進(jìn)度,還是給學(xué)生們培訓(xùn)~ 
             這次要好好的給學(xué)生們講講SWT和JFace,好好的給自己培養(yǎng)幾個(gè)得力助手~
             10.1結(jié)束了,大家都加油吧~

          posted @ 2007-10-07 16:32 阿南 閱讀(477) | 評論 (0)編輯 收藏
          驚嘆一下Lotus Symphony吧!

              9月18日IBM放出了醞釀已久的Lotus Symphony來對抗微軟,這個(gè)上世紀(jì)八十年代就出現(xiàn)的小子,現(xiàn)在又返老還童了!
              今天,趁著加班的事件,網(wǎng)速不錯(cuò),拖了回來,來感受一下Lotus Symphony的優(yōu)秀,不!應(yīng)該是感受一下Eclipse的優(yōu)秀!
              Lotus Symphony是一個(gè)基于Eclipse-RCP的應(yīng)用,不過啟動(dòng)速度確實(shí)不敢恭維,重要的還是它的界面,確實(shí)可以和Office2007有一拼~、

          主啟動(dòng)界面

          媲美Word的Lotus Symphony Documents
          雖然從功能上Lotus Symphony 和Office還差的很遠(yuǎn),但是我們終于又看到了一個(gè)敢和微軟叫板的產(chǎn)品了~而且還是在Eclipse基礎(chǔ)上構(gòu)建的~這點(diǎn)是讓人興奮的,以后再有人問我,Eclipse-RCP有什么成功的案例,我就給他看Lotus Symphony!
          此外IBM為Lotus Symphony 還在Eclipse基礎(chǔ)上做了很多的新東西,有有待于慢慢研究~傳說是Lotus Symphony 是開源的,但是在官方站上并沒有找到CVS或者SVN地址~這點(diǎn)是讓人無奈的!

          posted @ 2007-09-22 10:01 阿南 閱讀(1796) | 評論 (9)編輯 收藏
          白癡的兒子們!

              ORM中,一對多關(guān)系一般都是單向的,簡單的說是孩子們知道自己的父親,父親不知道自己的兒子們,在需要的時(shí)候再去取得自己兒子們~
              今天,我們加班對實(shí)體關(guān)系進(jìn)行有優(yōu)化,出現(xiàn)了一片白癡的兒子~沒有一個(gè)兒子知道自己的父親,而自己的父親反倒知道自己的孩子們~真可怕!
              我們是基于SWT的開發(fā),所有對象取下來,其實(shí)在SWT上全是對象,什么都可以找到了~不像BS的開發(fā),東西取下來,每一次操作都要面向一次數(shù)據(jù),這樣的修改也是很合理的~
              總之今天是長見識了,白癡的兒子們?nèi)f歲!

          posted @ 2007-09-15 18:20 阿南 閱讀(1052) | 評論 (4)編輯 收藏
          SWT---資源---第一!

               使用SWT做開發(fā)的朋友,一定要注意~資源是一個(gè)殺手!對于我們這些無知的開發(fā)人員,使用了資源,不釋放它,比不寫程序或者不提供這個(gè)功能還可怕~因?yàn)樗?jīng)不起考驗(yàn),到了時(shí)間肯定完蛋!
               前兩個(gè)天就遇到了這個(gè),同事寫了一個(gè)插件,一次性從數(shù)據(jù)庫中取得1W以上的數(shù)據(jù)然后組織成樹表格,顯示給客戶~取得數(shù)據(jù)的速度,樹組裝的速度,樹展開的速度,都做了反復(fù)的優(yōu)化,一切優(yōu)化完成以后,就宣布完成!但是沒有測,當(dāng)我連續(xù)打開4個(gè)樹以后,程序就非掉了~
              我先加大rcp的啟動(dòng)內(nèi)存,沒用!瘋狂調(diào)用cg,沒用!而且這中錯(cuò)誤錯(cuò)的很奇怪,如果是內(nèi)存異常,應(yīng)該是JVM報(bào)出的,但是這次不是,仔細(xì)閱讀異常,竟然是SWT打開圖片,顏色,字體的時(shí)候的異常~肯定是資源問題了!
             因?yàn)橐郧耙恢痹儆肑face的treeviewer組件,所以一直沒有關(guān)心資源的問題~但是1W的數(shù)據(jù),使用的SWT的原生Tree組裝的~而且還用了一些字體~
          排查代碼,竟然發(fā)現(xiàn)有字體被new出,但是沒有釋放~問題就出在這里~
             調(diào)用了

          Font font = new Font (display, "Courier", 10, SWT.NORMAL);

          那么就應(yīng)該在不在需要這個(gè)Font的時(shí)候調(diào)用

          font.dispose();

          兩個(gè)原則:
          第一條是"誰占用,誰釋放",第二條是"父構(gòu)件被銷毀,子構(gòu)件也同時(shí)被銷毀"。

          posted @ 2007-09-14 16:34 阿南 閱讀(1374) | 評論 (7)編輯 收藏
          Eclipse3.3國際化的問題解決方法

              最近一直在忙,忙的不亦樂乎了~做了很多事情...屬于商業(yè)機(jī)密,所以沒有辦法一一點(diǎn)出~
              終于閑一下,維護(hù)維護(hù)Blog吧~
              今天說說Eclipse3.3國際化的問題,Eclipse-RCP項(xiàng)目做做國際化的時(shí)候,存在兩個(gè)層面,一個(gè)是控件上的中文,另一個(gè)是Plugin.xml中的中文信息,控件上的中文,沒有什么可說的,用一個(gè)類,加一個(gè)資源文件就可以了~主要的問題是Plugin.xml中的中文信息;
              根據(jù)各大網(wǎng)站和資料的中描述,Plugin.xml中中文信息用一下方法處理:
              1.在Plugin.xml同目錄下新建plugin.properties;
              2.將Plugin.xml文件中中文部分替換成%xxxx;
              不知道這樣的辦法是不是在Eclipse3.3以前的版本中有用,反正我在Eclipse3.3中,這招沒有用,PDE可以解析到%XXX的內(nèi)容,但是啟動(dòng)應(yīng)用程序以后沒有任何效果,所有修改的地方都顯示為%XXX了~
             解決辦法就是:

          請?jiān)诓寮?nbsp;MANIFEST.MF 文件后面添加上 Bundle-Localization: plugin 和一個(gè)回車應(yīng)該可以解決你的問題。
             在MF中多加一句就好了~
             遇到同類問題的朋友注意了~

          posted @ 2007-09-13 12:19 阿南 閱讀(1977) | 評論 (9)編輯 收藏
          僅列出標(biāo)題
          共13頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 Last 
          主站蜘蛛池模板: 黄浦区| 满城县| 东辽县| 保定市| 吐鲁番市| 岳池县| 杨浦区| 安阳县| 怀安县| 尤溪县| 阿克陶县| 武安市| 芜湖市| 福州市| 汶上县| 灵璧县| 德化县| 油尖旺区| 元氏县| 泽普县| 蒲江县| 夏邑县| 敖汉旗| 垦利县| 高雄县| 富民县| 黔西县| 邳州市| 越西县| 林甸县| 洛南县| 土默特左旗| 水富县| 右玉县| 南丰县| 凉山| 嫩江县| 龙州县| 富民县| 托里县| 阳高县|