大梦想家

5年开发工程师,2年实施经理,X年售前顾问,......
数据加载中……

测试Windows Live Writer

我也用用看~测试一下!

posted @ 2007-11-01 14:36 阿南 阅读(192) | 评论 (0)编辑 收藏
再次寻求从事过Java桌面的应用的朋友解惑~

       今天早上的Blog大家都看到了,大家的留言我也一一拜读过了~感谢 zhrb ,千里冰封 javazhai ,BeanSoft ,plankton13 ,mingj 等的回复。
        下午反省了一下自己的代码,得出一下结论和疑问,有时间,请大家再讨论一下。
        1.反省代码,整理所有用过的对象,特别上查询完数据库返回的上万条记录的结果集,一一将他们制空,然后再System.gc()看看效果;
        2.因为是通用数据查询平台,那么结果集的展示形式是可以由实施人员自由定义的,比方说字体,颜色,图片等等,虽然我没有使用JFace对资源封装的统一标准组件,但是绝对是在使用完一一做了销毁处理,我的疑问是,我对资源做了销毁处理,是不是这部分资源在虚拟机中的占用空间依旧存在,也就是并没有真正的销毁他们;
                这里谈谈自己的实践经验,如果真的是资源的问题,首先出问题的还轮不到Javaw,Eclipse马上就会出来叫嚣,告诉你没有足够的资源的可以使用,不能创建GC,字体,颜色或者是图片等等,如果还是不解决,客户端的GUI马上就会变形,变的面目全非~
        3.我现在碰到的问题还不是内存不足,或者内存溢出,而是Javaw的内存占有再不断的递增,并不是某一个恒定值区间;


        希望大家再次赐教!

posted @ 2007-10-21 20:34 阿南 阅读(1355) | 评论 (12)编辑 收藏
寻求从事过Java桌面的应用的朋友解惑~

       最近在公司从事一个通用的数据查询平台的开发,是一个基于Eclipse-RCP的应用,项目现在基本进入改进和修正BUG阶段。
    但是现在碰到了令人头疼的问题,程序在测试人员的机器上跑上半个多小时,整个应用程序的内存会占到300m以上,如果是做频繁的大数据查询,内存涨的更快。
    我加了每分钟调用一次System.gc()的线程,唯一的改观是在Eclipse下面的内存进度显示上,会出现小范围的减少,但是从任务管理器中检视应用程序的内存,还是居高不下~
       Java本身吃内存,我能理解,Eclipse-RCP也会加载大量的东西,我也能理解,大数据量的加载更可怕,我更能理解,但是无论怎么调用System.gc()都没有什么反应,我就不能理解了~
      希望做过这方面的研究或者应用的朋友帮忙解答,或者谈谈经验~也可以帮助我做一些改善~

posted @ 2007-10-21 11:24 阿南 阅读(1149) | 评论 (9)编辑 收藏
一个使用SWT Ribbon代替Eclipse-RCP上面Coolbar的例子~




我用代码硬生生的把Eclipse-RCP丑陋的Coolbar替换掉了,但是不爽的是,Viewer上使用的是CTabFolder,而这个CTabFolder的产生,我没有办法操控,希望有高手指点。
修改代码如下:
 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 阿南 阅读(3781) | 评论 (11)编辑 收藏
Nebula维护者的新作SWT Ribbon放出!

  

相信吗,这是SWT做的!这个就是Nebula项目维护者的新作~SWT Ribbon~前一段时间一直把玩的SWT Gantt也是他的作品,非常好用,功能十分强加~
    读过他的代码的朋友也许都有感觉,他的代码思路非常清晰,代码量不大,但是丝丝入扣,寥寥几行就能把功能实现~高手中高手~
    再赞一下Nebula的Grid,有了它,我已经不再考虑使用Table了~有时间大家都研究研究吧~

posted @ 2007-10-07 19:14 阿南 阅读(2005) | 评论 (2)编辑 收藏
部门要扩张了,又要走上讲台了!

    10.1忙七天,呵呵又跟5.1一样,没的休息~没办法,谁让咱们干这行了呢?老大的话就是命令,客户才不管你是死是活呢~
    部门要开始新一轮的扩张了,第一批进来6个开发人员,这次又是20个毕业生免费培训,层层筛选最后留10个。这种招人的方法确实很有效果~不过最辛苦的还是我们,每天不但要拼命的赶进度,还是给学生们培训~ 
   这次要好好的给学生们讲讲SWT和JFace,好好的给自己培养几个得力助手~
   10.1结束了,大家都加油吧~

posted @ 2007-10-07 16:32 阿南 阅读(455) | 评论 (0)编辑 收藏
惊叹一下Lotus Symphony吧!

    9月18日IBM放出了酝酿已久的Lotus Symphony来对抗微软,这个上世纪八十年代就出现的小子,现在又返老还童了!
    今天,趁着加班的事件,网速不错,拖了回来,来感受一下Lotus Symphony的优秀,不!应该是感受一下Eclipse的优秀!
    Lotus Symphony是一个基于Eclipse-RCP的应用,不过启动速度确实不敢恭维,重要的还是它的界面,确实可以和Office2007有一拼~、

主启动界面

媲美Word的Lotus Symphony Documents
虽然从功能上Lotus Symphony 和Office还差的很远,但是我们终于又看到了一个敢和微软叫板的产品了~而且还是在Eclipse基础上构建的~这点是让人兴奋的,以后再有人问我,Eclipse-RCP有什么成功的案例,我就给他看Lotus Symphony!
此外IBM为Lotus Symphony 还在Eclipse基础上做了很多的新东西,有有待于慢慢研究~传说是Lotus Symphony 是开源的,但是在官方站上并没有找到CVS或者SVN地址~这点是让人无奈的!

posted @ 2007-09-22 10:01 阿南 阅读(1768) | 评论 (9)编辑 收藏
白痴的儿子们!

    ORM中,一对多关系一般都是单向的,简单的说是孩子们知道自己的父亲,父亲不知道自己的儿子们,在需要的时候再去取得自己儿子们~
    今天,我们加班对实体关系进行有优化,出现了一片白痴的儿子~没有一个儿子知道自己的父亲,而自己的父亲反倒知道自己的孩子们~真可怕!
    我们是基于SWT的开发,所有对象取下来,其实在SWT上全是对象,什么都可以找到了~不像BS的开发,东西取下来,每一次操作都要面向一次数据,这样的修改也是很合理的~
    总之今天是长见识了,白痴的儿子们万岁!

posted @ 2007-09-15 18:20 阿南 阅读(995) | 评论 (4)编辑 收藏
SWT---资源---第一!

     使用SWT做开发的朋友,一定要注意~资源是一个杀手!对于我们这些无知的开发人员,使用了资源,不释放它,比不写程序或者不提供这个功能还可怕~因为它经不起考验,到了时间肯定完蛋!
     前两个天就遇到了这个,同事写了一个插件,一次性从数据库中取得1W以上的数据然后组织成树表格,显示给客户~取得数据的速度,树组装的速度,树展开的速度,都做了反复的优化,一切优化完成以后,就宣布完成!但是没有测,当我连续打开4个树以后,程序就非掉了~
    我先加大rcp的启动内存,没用!疯狂调用cg,没用!而且这中错误错的很奇怪,如果是内存异常,应该是JVM报出的,但是这次不是,仔细阅读异常,竟然是SWT打开图片,颜色,字体的时候的异常~肯定是资源问题了!
   因为以前一直再用Jface的treeviewer组件,所以一直没有关心资源的问题~但是1W的数据,使用的SWT的原生Tree组装的~而且还用了一些字体~
排查代码,竟然发现有字体被new出,但是没有释放~问题就出在这里~
   调用了

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

那么就应该在不在需要这个Font的时候调用

font.dispose();

两个原则:
第一条是"谁占用,谁释放",第二条是"父构件被销毁,子构件也同时被销毁"。

posted @ 2007-09-14 16:34 阿南 阅读(1351) | 评论 (7)编辑 收藏
Eclipse3.3国际化的问题解决方法

    最近一直在忙,忙的不亦乐乎了~做了很多事情...属于商业机密,所以没有办法一一点出~
    终于闲一下,维护维护Blog吧~
    今天说说Eclipse3.3国际化的问题,Eclipse-RCP项目做做国际化的时候,存在两个层面,一个是控件上的中文,另一个是Plugin.xml中的中文信息,控件上的中文,没有什么可说的,用一个类,加一个资源文件就可以了~主要的问题是Plugin.xml中的中文信息;
    根据各大网站和资料的中描述,Plugin.xml中中文信息用一下方法处理:
    1.在Plugin.xml同目录下新建plugin.properties;
    2.将Plugin.xml文件中中文部分替换成%xxxx;
    不知道这样的办法是不是在Eclipse3.3以前的版本中有用,反正我在Eclipse3.3中,这招没有用,PDE可以解析到%XXX的内容,但是启动应用程序以后没有任何效果,所有修改的地方都显示为%XXX了~
   解决办法就是:

请在插件的 MANIFEST.MF 文件后面添加上 Bundle-Localization: plugin 和一个回车应该可以解决你的问题。
   在MF中多加一句就好了~
   遇到同类问题的朋友注意了~

posted @ 2007-09-13 12:19 阿南 阅读(1952) | 评论 (9)编辑 收藏
仅列出标题
共13页: First 上一页 2 3 4 5 6 7 8 9 10 下一页 Last