`

Derby源码初体验

阅读更多
1,sysinfo.java类:
    从最简单的一个command开始,也就是DERBY_HOME和PATH设置完成后,用来check settings的那个command.
    

    1.1看bin\sysinfo.bat脚本文件:
        1.1.1 @echo off是关闭cmd的显示.
        1.1.2 @REM 是注释吧?看起来是.那光是"rem"又是什么意思呢?
        1.1.3 这里边有个 CALL "%~dp0derby_common.bat" %*
            1.1.3.1 从call来看,这句是调用bin\derby_common.bat脚本,那为什么又怎么来了个"~dp0"呢?这是什么意思?那这里的%又表示什么呢?
            1.1.3.2 从derby_common.bat内容来看,这里也又个rem,那它与@REM有什么区别?"rem     %~dp0 is expanded pathname of the current script under NT"
            1.1.3.3 先set DEFAULT_DERBY_HOME=%~dp0.. 从这个set也能看出"%~dp0"是DERBY的安装目录?
            1.1.3.4 如果系统中没有设置"%DERBY_HOME%"为空的话,就在这设置一下,设置完了DERBY_HOME后,就把DEFAULT_DERBY_HOME清空.
            1.1.3.5 下一步set _USE_CLASSPATH = yes,设置这个是什么意思?
            1.1.3.6 if ""%1""=="""" goto doneStart这里连着四个双引号是什么意思?与连着两个双引号有什么不同?从doneStart到setLocalClassPath,看到这里不错,可以自动地设置Derby所需的jar包路径,不错!
            1.1.3.7 这里的shift是个关键字呢?还是什么?
            1.1.3.8 这里的_USE_CLASSPATH与LOCALCLASSPATH有什么关系?

            1.1.3.9 有一句这样的:
                if "%_JAVACMD%" == "" set _JAVACMD=C:\Program Files\Java\jdk1.6.0_03\bin\java.exe

                又有这样的一句:
                    :noJavaHome
                    if "%_JAVACMD%" == "" set _JAVACMD=java.exe
            1.1.3.10 最后有这样一句:endcommon,这是什么意思?
        1.1.4 这里的"%_USE_CLASSPATH%"是什么呢?是Windows下的当前用户环境变量中的那个CLASSPATH?可能是这样的.
            这里的USE_CLASSPATH为"no"时就调用下面的 runNoClasspath.

            而这runNoClasspath里的?
                "%_JAVACMD%" %DERBY_OPTS% -classpath "%LOCALCLASSPATH%" org.apache.derby.tools.sysinfo %DERBY_ARGS% %DERBY_CMD_LINE_ARGS%

                "%_JAVACMD%"是指java这个命令么?那为什么不直接用java这个命令呢?
                %DERBY_OPTS%又是指什么?
        1.1.5 噢,这里的derby_common.bat正如名字所示,就是给Derby的运行设置环境.这样一设置后,就可能运行runNoClasspath或runWithClasspath,这里java命令的运行也没有像自写的那样直接调用java,而是通过derby_common.bat设置的变量来运行的.

        1.1.6 看到这里,别的已差不多了,就只剩下DERBY_OPTS、DERBY_ARGS和DERBY_CMD_LINE_ARGS三个变量没有着落,这三个变量是什么定义的呢?
    1.2 再看sysinfo.java这个类:
        1.2.1 sysinfo有main方法,这也是sysinfo.bat里运行里所要调用的那个main,而这个main又是调用Main.main(args);
            1.2.1.1 看Main类里的main方法:
                1.2.1.2 这里又调用LocalizedResouce类的getInstance()--> new  LocalizedResource()(关键是调用了这类的init方法)-->init方法里getEnvProperty(ENV_CODESET)-->java.security.AccessController.doPrivileged(this)(这里的doPrivileged方法是干啥的呢?).............
                1.2.1.3 噢,看这里的init是若没参数,就用LocalizedResource里默认的那些属性.
                1.2.1.4 看LocalizedResouce类里的LocalizedOutput(包装OutputStream,继承自PrintWriter,覆盖了父类里的close方法,主要是为了判断若不是System.out才close)和LocalizedInput(包装InputStream,继承自InputStreamReader,也覆盖了父类的close),为什么要另写这两个类呢?主要是防止关闭了System.out和System.in,这两个Stream能关掉么?有这样的限制又有什么作用呢?
                1.2.1.5 看到这里,发现了也就是得到LocalizedOutput的out,这样也或多或少地明白了些,为什么要另写LocalizedOutput与LocalizedInput这两个类了,这是本地化的两个类.
                1.2.1.6 再往下就是parseArgs方法了,也就是解析并处理传来的参数.
                    1.2.1.7 看这里parseArgs方法,明白了很多呀.这里并没有实际地调用哪一个方法,而是通过对args的判断修改了这个Main类的一些属性.
                1.2.1.7 -cp时,这样也就是Main里的cptester为true时,调用getClasspathInfo.
                1.2.1.8 -pause,
                1.2.1.9 看Main类,真是太佩服了!一个main方法写的这么灵活!!!这才是一个sysinfo,还没有真正地运行呢,已让我受益废气非浅了,研究高手代码,值!!!
2
3
分享到:
评论

相关推荐

    JavaSwing+derby通讯录源码

    在"JavaSwing+derby通讯录源码"中,lib目录下应该有Apache Derby的驱动程序,这些驱动是Java应用程序连接到Derby数据库的桥梁。开发者在程序中通过Class.forName()方法加载这些驱动,然后使用JDBC API建立数据库连接...

    Swing+derby仿QQ聊天软件及源码

    Swing和Apache Derby是Java开发中的两个重要工具,它们在构建桌面应用程序时起着关键作用。...通过深入研究源码和实际运行应用程序,你可以增强自己在Swing和Derby方面的技能,为未来开发更复杂的应用打下坚实基础。

    我的derby学习笔记之一:derby开始准备

    derby的eclipse插件 博文链接:https://hugebait.iteye.com/blog/47188

    javaSwing+derby电子相册源码

    Java Swing + Derby 电子相册源码是一个基于Java图形用户界面(GUI)开发的应用程序,它利用了Swing库来创建交互式的图像查看和管理功能,并结合了Apache Derby数据库来存储和检索相册数据。这个项目是Java初学者或...

    derby embedded模式设置用户名和密码

    通过配置 derby.properties 文件,可以实现对 Derby 嵌入式数据库的用户验证。具体步骤如下: 1. 在数据库所在目录下创建一个名为 derby.properties 的文件。 2. 在文件中添加以下内容: derby.connection....

    连接derby数据库方法—附图

    Derby数据库连接方法详解 Derby数据库连接方法是Java应用程序连接Derby数据库的主要方式。 Derby数据库是一种嵌入式关系数据库管理系统,可以嵌入到Java应用程序中,提供了一个轻量级、可靠的数据库解决方案。 ...

    derby.jar derby.jar

    这使得中国用户在使用Derby时能获得更友好的用户体验。 总结这些文件,我们可以看出这是与Java开发相关的资源集合,主要用于构建支持数据库操作(尤其是Apache Derby)、邮件处理以及Web表单文件上传的应用程序。...

    derby.zip,Derby数据库

    Derby数据库完整压缩包,解压缩即可使用,bat文件在bin文件目录下,驱动程序在lib目录下。 Apache Derby非常小巧,核心部分derby.jar只有2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在应用程序中使用。...

    apache derby 学习资料

    收集的学习资料,包括:Derby数据库(V10.9)用户手册(PDF版),用 Apache Derby 进行 Java 数据库开发,用 Apache Derby 进行数据库开发,03开源项目(三)嵌入式数据库Apache Derby(1)(开发指南).pdf ,Apache Derby ...

    Derby 命令(转载)

    总结来说,Apache Derby是一个功能全面且轻量级的数据库解决方案,其命令行工具和源码开放性使其在各种场景下都具有较高的灵活性和可扩展性。无论你是开发者、测试人员还是系统管理员,掌握Derby的命令行操作都将极...

    derby_plugin derby_ui_plugin

    Derby UI Plugin(文件名:derby_ui_plugin_1.1.0.zip)则主要关注用户界面的增强,旨在提供更友好的交互体验。此插件包含以下特性: 1. **图形化数据库设计**:提供了一个可视化工具,用于创建和修改数据库模式,...

    Eclipse插件Derby安装 Derby插件开发

    ### Eclipse 插件 Derby 安装与 Derby 插件开发详解 #### 一、Eclipse 插件 Derby 安装 在本节中,我们将详细介绍如何在 Eclipse 中安装 Apache Derby 相关插件,以便更好地支持数据库管理和开发工作。 ##### ...

Global site tag (gtag.js) - Google Analytics