相信很多J2EE的开发者都是在Windows上面开发程序,然后把程序上传到Linux下运行的吧。可是有时候在自己机器上运行的好好的程序,放到服务器下就出错了。单单看出错信息也推断不出是哪里的问题。这时候试试用Java的JPDA远程调试程序,一定可以让你很满意。
tomcat服务器已经内置了JPDA支持,只要用:
catalina.sh jpda start
这条命令启动tomcat,它就会监听8000端口,等待调试器的连接。要注意不能使用startup.sh脚本。tomcat会使用 JPDA_ADDRESS这个环境变量的值。比如想监听8017端口:
export JPDA_ADDRESS=8017
catalina.sh jpda start
接着,选一个自己喜欢的调试器,基本上现在主流的如Eclipse、NetBean都可以。我主要使用Eclipse,操作只要三步:
Host
和Port
分别填写你服务器的IP和JPDA的端口,默认是8000
,或者$JPDA_ADDRESS
。现在就可以像本机调试一样, 设置断点和跟踪调试了。
类型:Java,创建时间:Jan. 1, 2012, 11:52 a.m. 点击查看完整内容。。。首先定义只在本文中出现的两个基础概念:
这两个概念是我生造的,主要是为了避免和现有的一大堆术语混起来。
文字串不能理解成字符串。倒是像圆这样的数学概念,比较抽象一些,只存在于头脑里。可以把文字串写在纸上,也可以记在计算机里,还可以读出来。字节组就是文字串在计算机中的表现形式。想一想,在纸上圆可以用一个公式来表达,也可以用一个图形来表达,还可以用文字描述它。文字串也一样,可以表述为多种字节组。众所周知,计算机只能处理数字,所以为了描述文字,最简单的方法就是把文字列出来,每个文字用一个数字表示。不同的国家有不同的方法来做这件事,比如美国人和英国人只有字母,还有一些符号,总共排了256个文字,叫做ascii码。中国的文字就比较多了 ,那个康熙大字典据说有40万,所以中国人排了gb2312标准,big5,gbk、还有gb18030,里面包含的文字总数各不相同。
显然,美国人的ascii码是不能表示中国文字的,因为它只能表示256个文字。虽然,中国的标准可以表示美国人的文字,但是却不能表示阿拉伯字符和其它一些像型文字。后来大家意识到这个问题是文化交流的障碍,于是就在一起制定了一个unicode标准。简而言之,unicode标准就是穷尽这个世界上所有的文字,给每个文字编一个数字。 和gb2312,gbk等一样,其实unicode也只是一种编码标准,只不过它能够表示所有的文字。从此,如果一个计算机系统想要支持多种语言文字,只要简单地支持unicode就可以了。在这种系统里,我们可以认为文字串就是unicocde字节组,unicode字节组就是文字串。
类型:Python,C++ & Qt4,Java,创建时间:Dec. 31, 2011, 4:52 p.m. 点击查看完整内容。。。随着软件系统的不断发展,与其相配套的API也必定会发生着不断的变化。如何降低API变化对外部系统的影响是大多数软件系统都要面对的挑战。
在设计指令集、SDK或者API时,向后兼容可以说是最基本的道德,这已经被无法的例子所验证。不过随着软件系统功能的不断增加,维持原来的API往往是不可能的。两相权宜,只能选择有条件的向后兼容。通常的做法是保留原来的函数,然后增加新的函数。比如CreateWindow(String className)
,如果要新增了一个参数,名为style
,那么我们可以再新增一个函数如CreateWindowEx(String className, String style)
。显而易见,这种方法是最简便的,却可能不是最好的。利用高级语言的特性可以把它修改为具有默认参数的函数如:CreateWindow(String className, String style="default")
,或者简单地再创建一个新的同名函数:CreateWindow(String className, String style)
。虽然不能指定默认参数的值,但是Web Service支持前一种做法。
Java下的闭包(Closure):
public static Runnable outter_func(){
final String param=System.getenv("PATH");
Runnable r=new Runnable(){
public void run(){
System.out.println(param);
}
};
return r;
}
r.run();
这是在Java里面使用“闭包”的一个例子。run()
相当于Python里的__call__()
。可以看到在run()
方法里可以使用外层函数的变量。这是怎么做到的呢?答案是,Java在编译的时候做了手脚。r这个类其实还有一个隐藏的属性叫做“var$param”,在run()里面所有的param
被Java编译器偷偷替换成var$param
。此外在r
实例化完成后,Java还调用了:
r.var$param=param
假设param
不是使用final
修饰的变量,当param
指向了另外一个对象的时候,r.var$param
与param
就不是相同的了,这就会产生了语义上的问题。因此,闭包绑定的本地变量必须使用final
修饰。
这是一篇很长的文章。首先介绍了SSL的概况,解释一些基本的概念。然后又介绍了SSL的基础——非对称加密技术。短短的篇幅结束以后,就以一个现实世界的例子开始我们的安全之旅。
如果你碰到这些问题,看看这篇文章一定值。
openssl
以及Java的keytool
工具来制作电子证书。本文介绍使用CFX开发一个WebService服务器的几个基本步骤。