Oracle常用命令

冬天来了,开始进入工作的节奏做项目,项目使用Oracle数据库,由于之前学习使用过一段时间Oracle,现在补充一下Oracle方面的只是,便于熟悉记忆:

使用Oracle数据库需要理解的名词:用户、角色、表空间、权限,我在别人的电脑导出数据库dmp文件,然后在本机进行导入(我使用的win8系统,win+r进入运行,cmd进入dos):
imp username/password@netname file=path\filename.dmp log=C:\log.log full=y(只有管理员角色才有这样的权限 Only a DBA can import file exported by another DBA ),可以参考《dmp文件导入Oracle数据库》这篇文件。

阅读全文

线程设计面试题

昨天的关于JAVA Thread的面试题:设计四个线程,其中两个线程对j加1操作,另外两个线程对j减1操作。发现这个面试题网上一大片,我这里也简单地记录一下:

/**
 * @author effine
 * @date 2013-10-28  下午11:50:34
 */

public class InterviewThread {

    private int j = 0;

    public static void main(String args[]) {

        InterviewThread it = new InterviewThread();

        /* 实例化内部类 */
        Inc inc = it.new Inc();
        Dec dec = it.new Dec();

        /* 循环得到四个线程 */
        for (int i = 0; i < 2; i++) {
            Thread t = new Thread(inc);
            t.start();
            t = new Thread(dec);
            t.start();
        }
    } //main method finish

    /* 同步加1方法 */
    private synchronized void inc() {
        j++;
        System.out.println(Thread.currentThread().getName() + "-inc:" + j);
    }

    /* 同步减1方法 */
    private synchronized void dec() {
        j--;
        System.out.println(Thread.currentThread().getName() + "-dec:" + j);
    }

    /* 加1线程类 */
    class Inc implements Runnable {
        public void run() {
            for (int i = 0; i < 100; i++) {
                inc();
            }
        }
    }

    /* 减1线程类 */
    class Dec implements Runnable {
        public void run() {
            for (int i = 0; i < 100; i++) {
                dec();
            }
        }
    }
    
}

File Tree

看到windows文件资源管理器,突然想用Java来实现这种不同层的文件缩进,参考OSC中一个博主的思想,记录一下;Code如下:

/**
* @author effine
* @date 2013年10月26日  下午1:25:14
*/

import java.io.File;

public class FileTree {
public static int count = 0;

public static void parse(File[] files) {
    if (files.length == 0) {
        FileTree.count--;
        System.out.println();
        return;
    } else {
        for (File f : files) {
            if (f.isDirectory()) {
                FileTree.count++;
                for (int i = 1; i <= FileTree.count; i++) {
                    System.out.print("\t");
                }
                
                System.out.println(f.getName());
                File[] files2 = f.listFiles();
                
                FileTree.parse(files2);
            }
            
        }
        for (File f : files) {
            if (!f.isDirectory()) {
                for (int i = 0; i <= FileTree.count; i++) {
                    System.out.print("\t");
                }
                System.out.println(f.getName());
            }
        }
        FileTree.count--;
    }
    
}

public static void main(String[] args) {
        File file = new File("d:/test");
        File[] files = file.listFiles();
        FileTree.parse(files);
    }
}

Eclipse插件开发向导页问题分析

在开发Eclipse插件过程中,遇到这样的错误:

The selected wizard could not be started.xxxWizard cannot be cast to org.eclipse.ui.IWorkbenchWizard;

错误分析:

xxxWizard类使用了IWorkbenchWizard接口的init方法而没有实现该接口,我们只需要实现 INewWizard 接口即可(INewWizard接口是IWorkbenchWizard的子接口,而这两个接口又都是IWizard接口的子接口);

在Eclipse中,向导必须实现接口org.eclipse.jface.wizard.IWizard,如不实现IWizard接口而只继承Wizard类,则还需实现performFinish()方法,因为该方法在Wizard类中是对接口IWizard的抽象实现,即Eclipse提供的org.eclipse.jface.wizard.Wizard类是IWizard的抽象实现;一般我们编写自己的Wizard类既继承Wizard类,且实现INewWizard接口。

向导页必须实现接口org.eclipse.jface.wizard.IWizardPage,因为org.eclipse.jface.wizard.WizardPage 也是 IWizardPage 的一个抽象实现.