发表于: java/j2ee | 作者: | 日期: 2009/5/06 03:05

习惯于GUI工具的快捷与方便之后突然想重温一下最原始的Java程序编写方法。OK,废话少说,开始。

1、
新建HelloWorld.java文件,使用文本编辑器编辑该文件,输入如下内容:

class HelloWorld{
public static void main(String[] args){
System.out.println(“Hello World”);
}
}

2、
打开一个CMD窗口,进入HelloWorld.java所在目录,编译该文件:

E:\javawork\begin>javac HelloWorld.java

编译完毕,运行该文件:

E:\javawork\begin>java HelloWorld
Hello World

呵呵,一切顺利。

3、
接下来看一下如何编译打包之后的Java代码,在HelloWorld.java文件首行添加一行package代码,如下:

package com.darkmi.test;

class HelloWorld{
public static void main(String[] args){
System.out.println(“Hello World”);
}
}

编译:
E:\javawork\begin>javac -d . HelloWorld.java

编译完毕,运行:
E:\javawork\begin>java com.darkmi.test.HelloWorld
Hello World

4、
以下是sun官方文档对-d选项的解释:
-d directory
Set the destination directory for class files. The destination directory must already exist; javac will not create the destination directory. If a class is part of a package, javac puts the class file in a subdirectory reflecting the package name, creating directories as needed. For example, if you specify -d c:\myclasses and the class is called com.mypackage.MyClass, then the class file is called c:\myclasses\com\mypackage\MyClass.class.
If -d is not specified, javac puts the class file in the same directory as the source file.

Note that the directory specified by -d is not automatically added to your user class path.

原文链接:http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javac.html

评论关闭
发表于: DB/ES | 作者: | 日期: 2009/5/04 09:05


来源:http://edu.136z.com/DataBase/28631.html
作者:佚名

Oracle Net 工具(命令)tnsping,是一个OSI会话层的工具,它用来:

1)验证名字解析(name resolution,当然是oracle自己的网络服务名)

2)远程的listener是否启动

在验证上面两项功能方面,它是DBA手头上一个比较得心应手的工具。Oracle 网络接口支持不同的网络与传输协议,其中我们最熟悉的就是TCP/IP。这篇文章只描述TCP/IP 协议族,然而,在oracle网络接口支持的其它协议下,tnsping的功能是一样的。

Tnsping 可以用在多个网络协议上,但是本文只讨论TCP/IP网络协议

—————————————————————————–
ORACLE TNSPING
—————————————————————————–

Oracle的tnsping测试程序,在通讯时使用TCP协议。TCP 是面向连接的OSI传输层协议。面向连接的协议在初始建立连接的阶段需要进行初始的序列号的交换,这就是我们通常所指的三次握手。即tnsping测试程序在与listener进行通讯时会产生三次握手现象。

当在命令行中发出了tnsping命令后,会执行oracle 网络别名(即网络服务名,主机连接字符串)的解析工作。这个解析工作会在本地的tnsnames.ora文件或ORACLE的命令服务器或ORACLE LDAP(目录服务)中进行。解析的目的是得到目标listener所在的机器名(IP地址)和listener侦听的端口号。

一旦得到listener的机器名与端口号,就可以打开一个到目标机器与端口的TCP连接。为了打开这个TCP连接,listener的机器名必须被解析为ip地址(当然这只有在解析出的listener的连接地址为机器名时才这样做),然后TCP/IP执行三次握手来完成这次连接。

在连接建立之后,Tnsping工具然后就发送一个Oracle TNS 连接包给Oracle Listener,Listener然后就回应一个TNS 拒绝包(Refuse packet),在两个机器间的TCP/IP连接就结束了。从oracle 网络别名的解析到结束TCP/IP连接之间的总的耗费的时间就显示在tnsping命令的输出中。

一个例子:

C:\>tnsping V817 4

TNS Ping Utility for 32-bit Windows:

Version 8.1.7.0.0 – Production on 18-MAY-2001 14:27:57

(c) Copyright 1997 Oracle Corporation. All rights reserved.

Attempting to contact

ADDRESS=(PROTOCOL=TCP)(HOST=abadah.us.oracle.com)(PORT=1521))

OK (1770 msec)

OK (10 msec)

OK (0 msec)

OK (10 msec)

上面这个例子显示第一次tnsping需要1770毫秒,这些时间由在tnsnames.ora文件中解析V817网络别名需要的时间、利用DNS解析listener机器名“ abadah”需要的时间,三次TCP/IP握手需要的时间、TNS Connect 和Refuse packets传输需要的时间、断开TCP/IP连接需要的时间组成。第二次tnsping只花费了10毫秒,这是因为所有的信息 (V817别名与IP地址)都已经在cache中了,然而Tnsping程序仍然做 TCP的连接与断开操作。

—————————————————————————–
TCP/IP PING
—————————————————————————–

Transmission Control Protocol/Internet 协议族 (TCP/IP) 有一个称为ping的工具。它是到TCP/IP 协议族中ICMP(Internet Control Message Protocol)协议的命令行接口。

根据RFC 792:

“有时候,一个网关或目的地址需要同源地址进行通讯,如:为了给源地址一个关于在处理数据报的过程中产生的错误。为了这种目的,就需要使用ICMP协议。 ICMP需要网际协议(IP)的支持,这使它看起来就像一个更高层的协议,然而,ICMP实际上是IP的一个组成部分,在IP的每个模块中必须实现它。”

Ping命令的作用之一就是收集不同大小的IP数据包在网络上传输一个来回需要的时间。这可以用来估计网络的大体性能和响应时间。

Ping命令使用IP,而不是TCP,这样就不需要TCP的3次握手机制,当运行ping命令时,它只发送与接收一个ip数据包,这比oracle的tnsping程序运行时需要更少的数据包。

Ping的第一个的response time经常比平均response time要长,这是因为第一次一般需要对ping的机器名进行解析。这个解析可以通过本地的hosts文件、DNS服务器或其它方法实现。

一个ping的例子:

Pinging abadah.us.oracle.com [144.25.223.156] with 32 bytes of data:

Reply from AAA.BBB.CCC.DDD: bytes=32 time<40ms TTL=255 Reply from AAA.BBB.CCC.DDD: bytes=32 time<10ms TTL=255 Reply from AAA.BBB.CCC.DDD: bytes=32 time<10ms TTL=255 Reply from AAA.BBB.CCC.DDD: bytes=32 time<10ms TTL=255 上面的例子显示第一次的ping时间需要40毫秒,这包括DNS解析的时间。 从上面的介绍我们可以得出: 1.tnsping需要使用TCP,所以需要3次握手建立连接,而ping只使用IP,所以不需要3次握手,这也就解释了为什么有的机器不能ping通,但是用tnsping确能测试通。 2.Tnsping通,并不能说明客户端能与数据库建立连接。因为 Tnsping通只能说明客户端能解析listener的机器名,而且lister也已经启动,但是并不能说明数据库已经打开,而且tsnping的过程与真正客户端连接的过程也不一致。 但是如果不能用tnsping通,则肯定连接不到数据库。 关于第2条可以用tns-12545错误来说明: TNS-12545 (ORA-12545): Connect failed because target host or object does not exist 原因: 客户端不能正确解析服务器的机器名。该错误一般出现在客户端没有设置或没有正确设置域名服务器的情况下出现。 解决办法: 疑问:出现这种情况时,有时可以用tnsping 测程序测试网络服务名可以通过,但还是不能用程序连接数据库,你会感到很奇怪。有时即使将客户端的tnsnames.ora中的服务器的机器名换为ip地址,还是会报错,这会令人感到更加疑惑,会不会系统有问题? 要真正解决这个问题,需要知道客户端与服务器端在建立连接时所的数据流。并需要了解redirect session的概念。 当一个客户端连接在window上的数据库,或以共享连接的模式连接在unix上的数据库时(此时数据库为MTS模式),客户端的连接会发生重定向现象,也就是listener在接受客户端的连接后,会发送一个重定向的包给客户端,然后客户端利用这个重定向包中提供的信息(服务器的ip(或机器名)和端口等信息)重新发起一个真正的到数据库的连接。当将客户端的tnsnames.ora中的服务器的机器名换为ip地址,客户端的连接还是会报ora- 12545错的罪魁祸首就是这个重定向包中的内容。 当客户端连接window上的数据库,或以共享连接的模式连接在unix上的数据库时,因为tnsnames.ora中为服务器的ip地址,所以不存在名字解析的问题,客户端的连接请求会到达listener,这也就是tnsping 测试程序测试网络服务名可以通过的原因,因为tnsping测试程序不会产生重定向问题。在listener接受客户端的连接后,会跟据客户请求的连接模式(专用连接还是共享连接)和操作系统对socket的实现的情况,决定是否需要将客户端的连接进行重定向,如果需要进行重定向,则会产生一个重定向包,该包中包含的服务器的地址信息为从listener.ora文件中得到的listener侦听的地址(根据listener.ora中的配置可能为服务器的机器名,也可能为服务器的ip地址),该包中还包含客户端应该重定向连接的端口信息(同listener侦听的端口可能不为同一个),客户端在收到这个重定向包后,解析出应该重新连接的服务器地址(机器名或ip)和端口,重新利用解析出的信息建立一个新的连接,此时如果客户端得到的为服务器的机器名并且没有配置域名解析,就会因为解析不出服务器的ip地址,从而导致产生ora-12545错误。 所以,如果如果要彻底解决ora-12545错误,需要: 1) 配置一个域名服务器,并正确的设置客户端机器的域名服务器 2) 将服务器的机器名与ip配置在客户端的hosts文件中。 3) 将客户端tnsnames.ora和listener.ora中的地址部分都改为ip地址,而不是用机器名 4) 将客户端的连接改为专用连接,这样会避免redirect 现象。(适用与客户端tnsnames.ora中为服务器的ip地址的情况下)

评论关闭
发表于: os/software | 作者: | 日期: 2009/4/30 05:04
标签:

使用excel的时候有这样一个需求:让一行或者一列固定总显示,可以通过如下方式实现:
请先选中需要固定的行的下一行的的第一个cell或要固定列的下一列的第一个cell,然后打开菜单栏中的“窗口”,点击“冻结窗格”即可。

让背景的网格线消失则可以按如下方式实现:
“工具”菜单——>“选项”,在打开的窗口中,选择“视图”选项卡,在其中找到“网格线”并将其前面的小勾勾去掉,然后点按“确定”按钮即可。

评论关闭
发表于: computer | 作者: | 日期: 2009/4/24 08:04

正线
又叫直通线或标准线,两端采用568B做线标准,注意两端都是同样的线序且一一对应。
具体的线序制作方法是:双绞线夹线顺序是两边一致,统一都是:1、白橙、2、橙、3、白绿、4、蓝、5、白蓝、6、绿、7、白棕、8、棕。注意两端都是同样的线序且一一对应。这就是100M网线的做线标准,即568B标准,也就是我们平常所说的正线或标准线、直通线。

反线
又叫交叉线,按照一端568B,一端568A的标准排列好线序并夹好。
具体的线序制作方法是:一端采用568B做线标准不变,另一端在这个基础上将这八根线中的1,3号线和2,6号线互换一下位置,这时网线的线序就变成了:1、白绿、2、绿、3、白橙、4、蓝、5、白蓝、6、橙、7、白棕、8、棕。这就是100M网线的568A标准,也就是我们平常所说的反线或交叉线。

反线一般用于相同设备的连接,比如路由和路由电脑和电脑之间;现在的很多也支持直通线了,但建议还是使用交叉线。
正线应用最广泛,不同设备之间,比如路由器和电脑、交换机和电脑等。
线序和传输速度一般没关系,要看网卡/网线/交换机/路由器/广域网接口所支持的最大传输速度。

评论关闭
发表于: sitebuild | 作者: | 日期: 2009/4/23 09:04

CSS cursor用来设置指针(光标)的类型。cursor的属性值可以是多个,其间用逗号分隔。假如第一个值无法被客户端浏览器识别或所指定的光标文件无法找到及显示,则第二个值将被尝试使用。依此类推。假如全部值都不可用的话,则此属性不会发生作用。光标不会被改变。

语法如下:
Object.style.cursor=cursortype

CSS中的写法示例:
sursor: default;
cursor: url(images/cat.cur),auto;

其他说明:
FF支持jpg、gif、cur等文件,不支持ani,IE则只支持cur、ani。
More …

评论关闭
发表于: java/j2ee | 作者: | 日期: 2009/4/21 10:04

为了找到Eclipse JVM的最优设置,我反复研究了sun工程师的演说与资料并经过了反复试验,以下是我找到的最优设置:

-vmargs -XX:+UseParallelGC

我的系统环境是双核+Windows+JDK5.0+Eclipse。 More …

评论关闭
发表于: java/j2ee | 作者: | 日期: 2009/4/19 04:04

Eclipse 可执行文件的一般格式是:
eclipse [platform options] [-vmargs [Java VM arguments]]

以下是较常用的 platform options 参数:

-data
用来设置工作区的特定位置。要使用 -data 命令行自变量,只要将 -data your_workspace_location(例如,-data c:\users\robert\myworkspace)添加至快捷方式属性中的目标字段或显式地将它包括在命令行上。

-showlocation
用于在窗口标题栏中显示工作区的位置的选项。在发行版 2.0 中,此选项仅与 -data 命令行自变量一起使用。
当我们安装多个Eclipse时这个选项可以很方便的区分我们正在使用的是哪一个Eclipse。比如有一个Eclipse是用来进行php开发的,我们的启动参数如下设置:
eclipse.exe -showlocation MyPHP
另外一个Eclispe是用来进行Java开发的,启动参数设置如下:
eclipse.ext -showlocation MyJAVA
那么当两个Eclipse同时启动的时候,我们可以很方便的从标题栏上区分正在使用的是哪一个Eclipse。

-nosplash
启动时有该参数则不显示闪屏,建议不要使用。

-vm
用来设置 java VM。建议显式指定在运行Eclipse 时要使用哪个 Java VM。使用 -vm 命令行自变量(例如,-vm c:\jre\bin\javaw.exe)可以实现此目的。如果不使用 -vm,则Eclipse将使用在 O/S 路径上找到的一个 Java VM。当安装其它产品时,它们可更改现有的 Java VM的路径,导致在下一次启动 Eclipse 时使用另一 Java VM。

另外,通过window->preferences->Java->Installed JREs可以设置MyEclipse所使用的JRE,我一般使用这种方式来设置Eclipse当前使用的JRE。

完整的 platform options 参数说明:

Eclipse 启动参数
命令 描述 原因
-arch architecture
定义 Eclipse 平台在其上运行的处理器体系结构。Eclipse 平台通常使用 Java os.arch 属性的常用值来计算最佳设置。如果在此处指定该项,则这是 Eclipse 平台使用的值。此处指定的值可作为 BootLoader.getOSArch() 用于插件。示例值有:“x86”、“sparc”、“PA-RISC”和“ppc”。 2.0
-application applicationId
要运行的应用程序。应用程序由向 org.eclipse.core.runtime.applications 扩展点提供扩展的插件来声明。通常不需要此自变量。如果指定了此项,则该值会覆盖配置提供的值。如果不指定此项,则会运行“Eclipse 工作台”。 1.0
-configuration configurationFileURL
Eclipse 平台配置文件的位置,表示为 URL。配置文件确定 Eclipse 平台、可用插件集和主要功能部件的位置。注意,不允许使用相对 URL。当安装或更新 Eclipse 平台时配置文件被写至此位置。 2.0
-consolelog
将 Eclipse 平台的错误日志镜像到用来运行 Eclipse 的控制台。与 -debug 组合时很方便使用。 1.0
-data workspacePath
要运行 Eclipse 平台的工作空间的路径。工作空间位置也是项目的缺省位置。相对于从中启动 eclipse 的目录来解释相对路径。 1.0
-debug [optionsFile]
将平台置于调试方式,并从给定位置处的文件装入调试选项(如果指定的话)。此文件指示哪些调试点可用于插件以及是否已启用它们。如果未给出文件位置,则平台在启动 eclipse 的目录中查找称为“.options”的文件。URL 和文件系统路径都可作为文件位置。 1.0
-dev [classpathEntries]
将平台置于开发方式。将可选类路径条目(用逗号分隔的列表)添加至每个插件的运行时类路径。例如,当工作空间包含要开发的插件时,指定 -dev bin 会为每个插件项目的名为 bin 的目录添加类路径条目,允许在其中存储最新生成的类文件。除去了冗余或不存在的类路径条目。 1.0
-keyring keyringFilePath
磁盘上授权数据库(或“密钥环”文件)的位置。此自变量必须与 -password 选项配合使用。相对于从中启动 eclipse 的目录来解释相对路径。 1.0
-nl locale
定义 Eclipse 平台在其上运行的语言环境的名称。Eclipse 平台通常自动计算最佳设置。如果在此处指定该项,则这是 Eclipse 平台使用的值。此处指定的值可作为 BootLoader.getNL() 用于插件。示例值有:“en_US”和“fr_FR_EURO”。 2.0
-nosplash
运行平台而不显示启动屏幕。 1.0
-os operatingSystem
定义 Eclipse 平台在其上运行的操作系统。Eclipse 平台通常使用 Java os.name 属性的常用值来计算最佳设置。如果在此处指定该项,则这是 Eclipse 平台使用的值。此处指定的值可作为 BootLoader.getOS() 用于插件,并用于解析插件清单文件中提及的路径中 $os$ 变量的出现。示例值有:“win32”、“linux”、“hpux”、“solaris”和“aix”。 1.0
-password password
授权数据库的密码。与 -keyring 选项配合使用。 1.0
-perspective perspectiveId
启动时要在活动工作台窗口中打开的透视图。如果没有指定该参数,则将打开关闭时活动的透视图。 1.0
-plugincustomization
	  propertiesFile
包含插件首选项缺省设置的属性文件的位置。这些缺省设置覆盖在主要功能部件中指定的缺省设置。相对于从中启动 eclipse 的目录来解释相对路径。 2.0
-product productId
要运行的产品的标识。该产品为 Eclipse 的已启动实例提供了产品个性并确定使用的产品定制信息。此项替换 -feature,由于兼容性方面的原因,仍然支持后者。 3.0
-refresh 
启动时执行工作空间的全局刷新的选项。这将使从上次平台运行以来在文件系统中所做的任何更改一致。 1.0
-showlocation 
用于在窗口标题栏中显示工作空间的位置的选项。在发行版 2.0 中,此选项仅与 -data 命令行自变量一起使用。 2.0
-vm vmPath
要用来运行 Eclipse 平台的“Java 运行时环境”(JRE)的位置。如果不指定此项,则 JRE 位于 jre(它是 Eclipse 可执行文件的兄弟目录)。相对于从中启动 eclipse 的目录来解释相对路径。 1.0
-vmargs args
当传递至 Eclipse 时,此选项用来定制用来运行 Eclipse 的 Java VM 的操作。如果指定此项,则它必须在命令行的末尾。给定的自变量依赖于要运行的 VM。 1.0
评论关闭
发表于: lnmp | 作者: | 日期: 2009/4/12 06:04
标签:

功能说明
将文本文档内容加以排序,以行为单位进行排序。 More …

评论关闭
发表于: sitebuild | 作者: | 日期: 2009/4/08 02:04

未优化之前的写法

function setChecked(flag) {
var inputs = document.getElementsByTagName('input');
for(var i = 0; i < inputs.length; i++){ if(flag=='0'){ inputs[i].checked = true; } if(flag=='1'){ inputs[i].checked = false; } } }

优化之后的写法为:

function setChecked(flag) {
var inputs = document.getElementsByTagName('input');
if(flag == '0'){
for(var i = 0; i < inputs.length; i++){ inputs[i].checked = true; } }else if(flag == '1'){ for(var i = 0; i < inputs.length; i++){ inputs[i].checked = false; } } }

说明:
未优化之前每次循环中都要对flag进行判断,优化之后,将对flag的判断移到了循环外边,仅需判断一次即可。

评论关闭
发表于: lnmp | 作者: | 日期: 2009/4/06 07:04

基本概念

PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。因此既可以把php的数组当做普通数组使用,也可以用它来模拟字典、集合、栈、队列、树等多种其他数据结构。

数组的创建

创建数组的一般格式为:$arrName = array( [key =>]value, ...),其中key 可以是 integer 或者 string,而value 可以是任何值。

示例:

$arr1 = array('aaa', 'bbb');
$arr2 = array('a'=>'AAA', 'b'=>'BBB');

创建空数组:

$arr = array();

如果数组不存在,那么向数组存放值将创建数组,但是在一个还没有定义的数组中检索一个值不会创建数组。

$arr[0] = 'aaa';
$arr[1] = 'bbb';
foreach($arr as $v){
echo $v;
}

操作数组

1:在数组末尾添加值

$arr = array('a'=>'AAA', 'b'=>'BBB');
$arr[] = 'CCC';

2:遍历数组

方法1

$arr = array('a'=>'AAA', 0=>'BBB');
foreach($arr as $a){
echo $a;
}

方法2

$array = array(1, 2);
$count = count($array);
for ($i = 0; $i < $count; $i++) { echo $array[$i]; }

3:清空整个数组

unset($arr);

4:清空指定元素

unset($arr[index]);

常用数组函数

print_r($arr);

查看数组信息;

unset();

该函数允许取消一个数组中的键名。要注意数组将不会重建索引。

$a = array( 1 => 'one', 2 => 'two', 3 => 'three' );
unset( $a[2] );

/* 将产生一个数组,定义为
$a = array( 1=>’one’, 3=>’three’);
而不是
$a = array( 1 => ‘one’, 2 => ‘three’);
*/

count()或者sizeof()

获得数组大小;

array_pad()

填充数组

零碎知识点

php的数组分为两种数组:索引数组和关联数组。索引数组的键值为整数,从0开始;关联数组的键值为字符串。
不管是索引数组还是关联数组,键值都不能重复。重复的话,之前的值会被覆盖。
$arr[1] 与 $arr[‘1′]引用相同的元素,但与 arr[’01’] 引用不同元素。
关联数组的索引值要加单引号或者双引号,在php5中不加引号会报错。但在字符串中引用数组元素时则不能加引号。

$arr['a'] = 'AAA';
$arr['b'] = 'BBB';
echo "array[a] is $arr[a]";
评论关闭