java learnging

一块探讨JAVA的奥妙吧
posts - 34, comments - 27, trackbacks - 0, articles - 22

2005年6月16日

Version Eclipse 3.1

1.性能

    a. 禁用缓存远程资源
       Window -> Preferences -> Internet -> Cache -> 选择Disable Caching
       这样在打开web.xml等文件时就不会 Loading xmlns 之类的信息了
   
    b. 禁用有效性验证
       Window -> Preferences -> Validation -> 选择Deselect All
       可能有效性验证是个不错的功能,不过有时候需要花的时间太长,有点受不了,基本上也不怎么需要
    c. 禁用启动eclipse时自动构建
       Window -> Preferences -> Launching -> 不选择 Build before launching

2.个人嗜好

    a. 修改Ant Document Url
       Window -> Preferences -> Ant -> Document Url -> 选择Ant Document目录
       这样要比eclipse默认去apache的网站访问快多了
   
    b. 修改快捷键的设定
       Window -> Preferences -> General -> Keys -> 按自己的需要修改
       尤其是Content assist 这么一个好用的功能和我的输入法冲突了,只有改了

    c. 修改java文件的source和output folder
       Window -> Preferences -> Java -> Build Path ->选择 Folders,并设为src和classes
       这样的项目文件目录比较标准,不过和maven的标准不太一样哦

    d. 修改Mark Occerencs
       Window -> Preferences -> Java -> Editor -> Mark Occerencs -> 把Mark Occerencs置为disable
       这样在选择一个单词的时候,与这个单词“具有同样含义”的单词就不会同时加亮了

posted @ 2005-08-17 17:38 bigseal 阅读(1476) | 评论 (0)编辑 收藏

Eclipse 3.0/3.1

Subclipse releases for Eclipse 3.x are hosted at our update site. Add http://subclipse.tigris.org/update as an update site in Eclipse's update manager (which you can find in the Help menu).

The update site itself can be downloaded and used as a local update site as well. Simply unzip the site archive, and add the path as a new "Local Site" in the Eclipse update manager. You can also host your own internal Subclipse update site by placing the site on your own HTTP server (be sure to update site.xml appropriately).

We also provide instructions for installing Subclipse in Eclipse 3.x

Eclipse 2.1.3

Subclipse 0.9.3.3 is linked against Subversion 1.1.4. Binaries for Windows are included.

Development for this version of Eclipse is no longer active. There are no new releases planned.

Download the Eclipse 2.x version

Note:如果把文件直接unzip到eclipse的安装目下,在使用的时候会没有授权文件文件之类的错误。

posted @ 2005-08-15 12:38 bigseal 阅读(15272) | 评论 (0)编辑 收藏

修改默认字符集(default character set)
在mysql的my.ini配置文件中设置,这样在mysql启动后就会自动加载
例如:把默认字符集设置为UTF-8

default-character-set=utf8

查看变量值:
例如:查看字符集设置

SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 
'collation_%'

设置变量值
例如:设置字符集变量
 set  character_set_server  = utf8;
 
set  character_set_system  = utf8;
 
set  character_set_database  = utf8;
 
set  character_set_client  = utf8;
 
set   character_set_connection  = utf8;
 
set  character_set_results = utf8;
 
 
set collation_connection = utf8_general_ci;
 
set collation_database = utf8_general_ci;
 
set  collation_server = utf8_general_ci;

posted @ 2005-07-25 17:38 bigseal 阅读(1425) | 评论 (0)编辑 收藏

java.util.*

java.util.StringTokenizer
作用: 根据标记分割字符串
例子:

StringTokenizer st = new StringTokenizer("this is a test");
     
while (st.hasMoreTokens()) {
         System.
out.println(st.nextToken());
     }
结果为:
     this
     is
     a
     test

但是该类已经不推荐使用了,如果要实现该功能可以通过String类的split方法或 java.util.regex package来代替。
     String[] result = "this is a test".split("\\s");
     
for (int x=0; x<result.length; x++)
         System.
out.println(result[x]);
结果为:
     this
     is
     a
     test

posted @ 2005-07-22 18:00 bigseal 阅读(1284) | 评论 (0)编辑 收藏

Container默认布局管理

Container       null
Panel             FlowLayout
Window        BorderLayout
Dialog           BorderLayout 
Frame           BorderLayout

有几个用于布局管理的类
BorderLayout
CardLayout
FlowLayout
GridLayout
GridBaglayout

BorderLayout水平扩展南北构件,使这些构件的宽度达到所在容器的宽度,但根据构件的首先高度调整它们的高度。东西构件被垂直扩展,并根据它们的首先宽度调整她们的宽度,中间构件布满剩下的空间。

在使用GridBaglayout管理布局时,需要通过GridBagConstraints来指定各构件的约束条件,下面是GridBagConstraints的一些设置
GridBagConstraints.anchor 构件在显示区中的位置
GridBagConstraints.fill         构件填充显示区的方式
GridBagConstraints.gridx/gridy  构件左上角的网格单元
GridBagConstraints.gridwidth/gridheigth 构件显示区的大小
GridBagConstraints.weighx/weighy 构件显示区可以消耗多少额外的空间
GridBagConstraints.insets 构件的空白区
GridBagConstraints.ipadx/ipady 构件的内部填充

posted @ 2005-07-22 17:50 bigseal 阅读(1606) | 评论 (0)编辑 收藏

The UML2 project is an EMF-based implementation of the UML 2.0 metamodel for the Eclipse platform designed to support the development of modeling tools. Further objectives of the UML2 project are to provide a common XMI schema to facilitate interchange of semantic models, test cases as a means of validating the specification, and validation rules as a means of defining and enforcing levels of compliance. For more details see Getting Started with UML2

posted @ 2005-07-15 14:06 bigseal 阅读(1471) | 评论 (0)编辑 收藏

    有两种方法要用到对Graphi的引用,这两种就是传递一个对Graphi的引用,或返回对Graphics的引用。

   1 .传递一个对Graphi的引用是诸如 void paint(Graphics g)的方法,通过override该方法来达到目的。

import java.awt.*;

public class SubPanel extends Panel{

    
public void paint(Graphics g){
        g.setColor(Color.RED);
        g.drawString(
"subPanel",5,5);
    }

}


2.返回对Graphics的引用是诸如 Graphiics getGraphics() 的方法,直接引用返回的Grapchics。

import java.awt.*;


import java.awt.
*;

public class SubPanel extends Panel {

    
public void test() {
        Graphics g 
= getGraphics();
        
if (g != null{
            g.setColor(Color.RED);
            g.drawString(
"subPanel"55);
        }

    }

}


其中,如果如果组件当前未显示getGraphics()方法返回null。

posted @ 2005-07-13 14:07 bigseal 阅读(1415) | 评论 (0)编辑 收藏

    AWT是JFC(Java基本类)的核心,为JFC的构成提供了以下的基本结构:

  • 代理事件模型
  • 轻量构件
  • 剪贴板和数据传输
  • 打印和无鼠标操作

    Java抽象窗口工具集有四个主要的类,即:构件类(Component)、容器类(Container)、图形类(Graphics)、和布局管理类(LayoutManager和LayoutMangager2)。容器包含构件,布局管理器确定容器内构件的位置和形状。图形(Graphics)类提供在构件中显示文本框和图形的方法。

1.强制一个容器布置它的构件

    在任何时间给定的构件都是有效(valid)或无效(invalid)的。无效的构件需要被布置,而有效的构件不需要。访问一个 无效容器(它的同位体已经产生)的validate()引起对容器layout()方法的调用。使构件无效的过程不仅使构件自己变得无效,而且也会使构件所在的容器变的无效。
使构件无效的Component和Container方法:
void Component.addNotify()
void Component.show() (invalidates parent container)
void Component.hide() (invalidates parent container)
void Component.reshap(int x,int y,int width,int height)
void Component.setSize(int width,int height)
void Component.setBounds(int x,int y,int width,int height)
void Component.setLayout(LayoutManager)
void Container.add(Component)
void Container.remove(Component)
void Container.removeAll(Component)
void Container.setLayout(LayoutManager)
因此我们可以把希望重新布置的构件设置为无效,然后调用该构件父容器的validate()方法即可。

posted @ 2005-07-13 14:04 bigseal 阅读(1342) | 评论 (0)编辑 收藏

Timer是一个线程用来调度在后台线程中运行的计划任务的使用工具。任务可能计划只运行一次,或者以一定的时间间隔重复运行。
下面是一个定时的小程序:

    /**
     * 弹出菜单显示3秒钟后自动隐藏
     * 
     
*/

    
private void timerToHidden() {
        Timer timer 
= new Timer();

        timer.schedule(
new TimerTask() {
            
public void run() {
                msgWindow.setVisible(
false);
            }

        }
3000);
    }

posted @ 2005-07-13 13:57 bigseal 阅读(1527) | 评论 (0)编辑 收藏

使用JDIC (Jdesktop Integration Components)类库做开发。
开发过程中遇到的问题:
  1. 主窗体最小化后隐藏
    当发生窗体最小化事件时把窗体隐藏就可以了
             /*
                 * 最小化窗体时把窗体给隐藏了 (非 Javadoc)
                 * @see java.awt.event.WindowListener#windowIconified(java.awt.event.WindowEvent)
                 
    */

                
    public void windowIconified(WindowEvent e){
                    e.getWindow().setVisible(
    false);
                }

  2. 单击系统托盘,显示程序主窗体
    单击系统托盘但时,把窗体置为可见,并把窗体从任务栏恢复
               // 单击系统托盘,显示程序主窗体
            tray_icon.addActionListener(new ActionListener() {
                
    public void actionPerformed(ActionEvent e) {
                    buddyFrame.setVisible(
    true);
                    buddyFrame.setState(JFrame.NORMAL);
                }

            }
    );

  3. 当有消息时在系统托盘图标旁显示一个消息提示
    (这是一个类似与MSN那种,而不是把鼠标放到托盘上显示的 ToolTip)
    当消息到来时在系统托盘图标旁显示一个弹出菜单即可
     
    public void promptMsg(String msg, String ticket, String url, String para,
                String userID) 
    {
            
    // 设置消息内容
            mViewMsg.setText(msg);

            
    // 设置url(点击 mViewMsg 菜单选项事件的监听程序)
            mViewMsg.addActionListener(new msgMenuActionListener(msgMenu, url + "?"
                    
    + para));

            
    // 设置菜单的大小和位置
            setMsgMenuSize();

            msgMenu.setVisible(
    true);
        }


        
    /**
         * 
         * 设置菜单的大小和位置
         
    */

        
    private void setMsgMenuSize() {
            Dimension menuSize 
    = new Dimension(200,150);
            msgMenu.setPopupSize(menuSize);
            
    int xMenu = tray_icon.getLocationOnScreen().x - menuSize.width + 50;
            
    int yMenu = tray_icon.getLocationOnScreen().y - menuSize.height;
            Point menuPoint 
    = new Point(xMenu, yMenu);
            msgMenu.setLocation(menuPoint);
            
        }

posted @ 2005-07-08 11:20 bigseal 阅读(2943) | 评论 (2)编辑 收藏

New and Noteworthy
文章来源:http://download.eclipse.org/downloads/drops/R-3.1-200506271435/index.php

posted @ 2005-06-29 14:39 bigseal 阅读(313) | 评论 (0)编辑 收藏

    我曾说,“照我说的那样做,但不要学我本人。”那么这里我要说的就是这样的。从来没有人——包括我自己——把我当成处理生活和工作的平衡关系的权威。

  41年以来,我执行的原则就是好好工作,好好享受,花一点时间来当父亲。但是回
头看去,很显然我所选择的平衡对于我家里和办公室的其他人都有不利的影响。例如,我的孩子们主要是由他们的母亲独自带大的。

  尽管工作与生活的平衡问题在90年代已经越来越成为前卫和中心的话题,但似乎直到我2001年退休之后,它才真正热门起来。在我过去三年去世界各地的时候,我遇到了许多这方面的问题。最常见的是,“你怎么会有那么多的时间去打高尔夫球,还能继续干好CEO的工作?”

  在个人应该如何排列生活中各部分的优先次序的问题上,我显然不是专家。何况我一直以为这些选择应取决于个人。但是,作为一名经理人,我处理过数十宗关于工作与生活平衡协调的难题,作为经理人的经理人则处理过数百宗。

  从这些经历里,我找到了一些感觉,关于老板们如何看待工作与生活的平衡,不知道他们是否告诉过你。

  管理的优先次序

  我们首先要谈谈所谓的“工作与生活的平衡”究竟指的是什么。它涵盖了我们所有人应该如何管理生活、支配时间的问题——关于优先次序和价值观的问题。基本上,这个平衡是关于“我们应该把多少精力消耗在工作上”的讨论。

  工作与生活的平衡是一个交易——你和自己之间就所得和所失进行的交易。平衡意味着选择和取舍,并承担相应的后果。让我们站到你的老板的视角上,换个位置对工作与生活的平衡问题做些思考。

  1.你的老板最关心的事情是竞争力。当然他也希望你能快乐,但那只是因为你的快乐能够帮助他的公司赢利。实际上,如果他的工作做得好,他就可以让你的工作变得很有吸引力,使你的个人生活显得不那么拖后腿。

  老板给你付工资的原因,是因为他们希望你贡献所有的一切——包括你的头脑、体力、活力和献身精神。

  2.绝大多数老板都非常愿意协调员工的工作与生活的矛盾,如果你能给他出色的业绩。这里的关键词是“如果”。

  实际上,我倒愿意通过一个老式的积分系统来处理工作与生活的平衡问题。那些有突出业绩的人可以获得“积分”,用以交换自己工作的弹性。

  3.老板们很清楚,公司手册上面关于工作、生活平衡的政策主要是为了招聘的需要,而真正的平衡是由一对一的谈判决定的,其背景是一个相互支持性的企业文化,而不要总是强调“但是公司说过……”

  公司手册是件华丽的宣传品,有醒目的照片、多项终生福利的介绍,也包括倒班或工作弹性等。然而许多聪明人很快就明白,手册上所列举的“工作与生活的平衡规划”主要是面向新人的招聘工具。

  真实的平衡安排是在老板与员工之间就具体问题进行单独谈判得到的,使用的方法正好是我们刚介绍过的业绩与弹性交换的制度。

  4.那些公开为工作与生活的矛盾问题而斗争、动辄要求公司提供帮助的人会被当做动摇不定、摆资格、不愿意承担义务或者无能的人,或者以上全部。因此,那些消极抱怨的人最后总免不了被边缘化的命运。

  所以,在你第五次开口,要求公司减少你的出差,要求在星期四上午请假,或者希望回家去照顾小孩之前,你应该知道自己是在发表一项声明。而且不管你用什么辞令,你的请求在别人听来都似乎是,“我对这里的工作并不真的感兴趣。”

  5.即使最宽宏大量的老板也会认为,工作和生活的平衡是需要你自己去解决的问题。实际上,绝大多数人也知道,的确有一些策略能帮助你处理好这个问题,他们也希望你能会采用。

  毫无疑问,谈判、协调这种平衡关系要给经理人的工作再增加一层复杂性。但是你的经理人应该欢迎这种挑战,因为那给他提供了另外一套工具,来激励和挽留优秀的员工。这套新工具与高薪、红利、晋升或其他所有形式的认可一样有效。

  不过,在此期间,你也可以并且应该学会帮助自己。有关工作与生活的话题已经讨论了相当长的时间了,也有不少好的经验被总结出来。那些非常老练的老板们都知道这些技巧,很多人自己已经开始采纳,他们也希望你能借鉴。

  经验之谈

  以下就是一些经验之谈:

  经验1:无论参与什么游戏,都要尽可能地投入。我们已经陈述过,工作希望你150%地投入,生活也同样。因此做事时要努力减轻焦虑、避免分心,或者说,要学会分门别类、有条不紊。

  经验2:对于你所选择的工作与生活平衡之外的要求和需要,要有勇气说“不”。最终,大多数人都会找到适合自己的工作与生活的平衡位置,以后的窍门就是坚持。

  学会拒绝将给你带来巨大的解脱,因此,你应该力争对一切不属于你有意识的平衡选择之外的项目说“不”。

  经验3:确认你的平衡计划没有把你自己排除在外。在处理事业与生活的平衡关系时,一件真正可怕的事情是陷入“为了其他所有人而牺牲自己”的综 合症。有许多非常能干的人,他们制定了完美的平衡计划,把自己的一切都贡献出来,给了工作、家庭、志愿者组织。问题在于,在这样的完美计划的核心,却有一 个真空,那就是对当事人而言根本没有乐趣。

  在认真考虑这个话题的时候,你会发现,如果自己想追求平衡和完美,最关键的不过是明白几个道理。

  ·除了工作以外,你要弄清楚,你还想从生活中得到什么。

  ·在工作中,你要明白自己的老板需要什么。

  ·争取业绩积分,根据自己的需要来兑换弹性,再不断补充它。

  ·找寻平衡将是一个过程,找对感觉需要反复实践。在获得经验和思考之后,你可以做得更好。最终,在一段时间过去之后,你会发现事情并没有那么艰难,不过是平凡的生活而已。(本文经许可改编自韦尔奇所著的《赢》,该书中文版已由中信出版社出版)

posted @ 2005-06-27 13:38 bigseal 阅读(389) | 评论 (0)编辑 收藏

现代人最常挂在嘴边的就是“忙得找不出时间来了”。每日为工作而庸庸碌碌,常常觉得时间不够用的人,就像常怨叹钱不够用的人一样,是“时间的穷人”,似乎 都有恨不得把24小时变成48小时来过的愿望。但上天公平给予每人一样的时间资源,谁也没有多占便宜。在相同的“时间资本”下,就看各人运用的巧妙了,有 些人是任时间宰割,毫无管理能力,二十四小时的资源似乎比别人短少了许多,有人却能“无中生有”,有效运用零碎时间;而有些懂得“搭现代化便车”的人,干 脆利用自动化及各种服务业代劳,“用钱买时间”。“时间即金钱”,尤其对于忙碌的现代人而言更能深切感受,每天时间分分秒秒的流失虽不像金钱损失到“切 肤”的程度,但是,钱财失去尚可复得,时间却是“千金唤不回”的。

  如果你对上天公平给予每个人24小时的资源无法有效管理,不仅可能和理财投资的时机性失之交臂,人生甚至还可能终至一事无成,可见“时间管 理”对现代理财人的重要性。想向上帝“偷”时间既然不可能,那么学着自己“管理”时间,把分秒都花在“刀口”上,提高效率,才是根本的途径。

  “忙”、“没有时间” 只是借口而并非真实,如果聪明才智相仿,而工作时数比别人长,绩效(薪水、所得、职位、成就)却不比别人好,那就该好好检讨,是不是没有充分发挥时间效 率?在心理上必须建立一个观念,力求“聪明”工作,而不是“辛苦”工作。例如别人六个小时可做到的事,我努力在四个小时之内完成。以追求最高的时间绩效为 目标,假以时日,时间自然在你掌握中!

  时间管理与理财的原理相同,既要“节流”还要懂得“开源”。要“赚”时间的第一步,就是全面评估时间的使用状况,找出所谓浪费的零碎时间,第 二步就是予以有计划地整合运用。首先列出一张时间“收支表”,以小时为单位,把每天的行事记录起来,并且立即找出效率不高的原因,彻底改善。再来,把每日 时间切割成单位的收支表做有计划的安排,切实去达成每日绩效目标。

  “时间是自己找的”,当你把“省时”养成一种习惯,自然而然就会使每天的二十四小时达到“收支平衡”的最高境界,而且还可以“游刃有余”的处于“闲暇”的时间,去从事较高精神层次的活动呢!

  如果你是开车或乘公交车的上班族,平均一天有两个小时花在交通工具上,一年就有一个月的时间待在车里。如果把这一个月里每天花掉的两个小时集中起来,连续不断地坐一个月的车,或不眠不休地开一个月的车,就能体会其时间数量的可观了。

  要占时间的优势,就要积极地“凭空变出”时间来,以下提供一些有效的方法,让你轻松成为“时间的富人”。

  尽量利用零碎时间:坐车或等待的时间拿来阅报、看书、听空中资讯。利用电视广告时间处理洗碗、洗衣服、拖地等家事。不要忽略一点一滴的时间,尽量利用零碎时间处理杂琐事务。

  改变工作顺序:例如做饭时,先洗米煮饭、煮汤、再来洗菜、炒菜,等菜上桌的同时,饭、汤也好了。稍稍改变一下工作习惯,能使时间发挥最大的效益。此种“时间共享”的作业方式可在工作中多方尝试,而“研究”出最省时的顺序。

  批量处理,一次完成:购物前列出清单,一次买齐。拜访客户时,选择地点邻近的一并逐户拜访。较无时效性的事务亦以地点为标准,集中在同一天完成,以节省交通时间。

  工作权限划分清楚,不要凡事一肩挑:学习“拒绝的艺术”,不要浪费时间做别人该做的事,同事间互相帮忙偶尔为之,不要因“能者多劳”而做烂好 人。办公室的工作各有分工,家事亦同,家庭成员都该一起分担,上班族家庭主妇不要一肩挑。例如,先生的书房、车子;小孩的房间、玩具要求他们自己清理,家 事也要分工负责,把省下的时间用来自我充实,做个“新时代主妇”。

  善加利用付费的代劳服务;银行的自动转帐服务可帮你代缴水电费、煤气费、电话费、信用卡费、租税定存利息转账等,多加利用,可省舟车劳顿与排队等候的时间。

  以自动化机器代替人力:办公室的电话连络可以传真信函、电子邮件取代,一方面可节省电话追踪的时间内容又有凭据,费用亦较省。而且传真信、电子邮件简明扼要,比较起电话连络须客套寒暄才切入主题,节省许多无谓的“人力”与时间。

  家庭主妇亦可学习美国妇女利用机器代劳的快速做家事方法。例如使用全自动单缸洗衣机、洗碗机、吸尘器、微波炉等家电用品,可比传统人力节省超过一半的时间,十分可观。

posted @ 2005-06-27 13:36 bigseal 阅读(186) | 评论 (0)编辑 收藏

在右键菜单添加命令行

在“开始”-“运行”中输入“regedit”,打开注册表。找到\HKEY_CLASSES_ROOT\Folder\shell,如果 没有shell,可以在Folder下新建一个名为shell的键,在shell下新建一个名为“命令行(Command Windows)”的键,在这个键之下再建一个新的名为“Command”的键,设置默认值为“cmd /K cd /d %L”。

posted @ 2005-06-16 08:31 bigseal 阅读(181) | 评论 (0)编辑 收藏