
用C++写的动态库的导出方法的代码如下:
1struct TestStruct { 2 int a; 3 int b; 4}; 5 6extern "C" __declspec(dllexport) TestStruct* ShowStruct(TestStruct* testStruct) 7{ 8 cout << "在动态库中打印:传入动态库中的结构成员a的值为:" << testStruct->a << endl; 9 10 //改变传入结构成员a的值为100 11 testStruct->a = 100; 12 return testStruct; 13}
Read More- 记得以前 Java 要调用C/C++写得动态库都是用的 JNI 方式,还需要自己写不少 C/C++ 代码。比如说要在Java中调用已有的动态库,如 Windows 的 user32.dll 的方法 MessageBoxA,具体步骤是 Java 中声明一个 native 方法,然后用 javah 命令生成JNI样式的头文件,再自己实现头文件中声明的方法,在实现方法中装载动态库 user32.dll,调用 MessageBoxA 方法,需要把自己写的这部分 C/C++ 代码封装成一个动态库,如Sample.dll,最后在 java 中装载 Sample.dll,然后执行其中所声明的本地方法。
可见,用老实的JNI方式,我们在调用一个已知动态库的时候还需要额外生成一个符合JNI规则的动态库作为桥梁,显得有点多余了。 Read More
LOG4J的配置之简单使它遍及于越来越多的应用中了:Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了 Read More- 曾经是Eclipse的拥趸,今天晚上在网上Down了一个NetBean 5.0,安装到电脑上,打开试用了一下,确实比以前版本快很多,而且功能也非常的丰富,直接支持EJB开发,AJAX,JSF1.1,Struts都到1.2.7了,还要看看Struts低版本是如何支持的,WebService的开发;还有把源文件输出为HTML格式的功能,导出要展示的代码很有用的。
NetBean也是免费的,虽说Eclipse也是免费的,但Eclipse还得倚仗着盗版的MyEclipse才能做实际的开发;NetBean也有插件啊。看来一被忽略的NetBean需要好好去发掘,以后在本机学习、测试、验证代码的话我就在NetBean下进行了。 - 先看下面的代码,看看程序执行会是什么样的结果:
1import java.lang.reflect.Method; 2/** 3 * @author Unmi 4 */ 5public class ExceptionTest { 6 7 public static void main(String[] args) { 8 try{ 9 foo1(); 10 }catch (MyException me) { 11 System.out.println("Exception Type: MyException"); 12 }catch (Exception e) { 13 System.out.println("Exception Type: Exception"); 14 } 15 } 16 17 public static void foo1() throws Exception{ 18 Method method = ExceptionTest.class.getDeclaredMethod("foo2",new Class[]{}); 19 20 //注意调用foo2时,foo2方法会抛出MyException异常 21 method.invoke(null,new Object[]{}); 22 } 23 24 public static void foo2() throws Exception{ 25 throw new MyException(); //foo2方法直接抛出异常 26 } 27} 28 29//一个自定义的异常 30class MyException extends Exception{ 31 32}
Read More - 还记得那个古老的Foxbase和Foxpro产生的数据库吗?与access(MDB)类似的文件型数据库,可是有些地方有人还在用它。DBF数据库一般都是在Foxbase或Foxpro中或由它们生成的应用程序来访问,也可以通过建立ODBC的方式来访问。
Java要访问什么数据库第一个念头就会是有没有相应的驱动啊,有驱动那好办,若是没有驱动那能不能通过配置ODBC,用JDBC-ODBC桥来访问呢?当然Java访问DBF文件是可以通过JDBC-ODBC的方式,但这样的话是不是纯Java实现还说,倒是得为要访问的DBF文件建一个数据源麻烦,尤其是程序移植时。 Read More
当我们在Oracle中用Java写的存储过程方法中,如果访问了本地文件系统、连接了网络、或者运行系统命令,就必须为执行该过程的模式赋予相应的权限。不然执行该存储过程就会报无该操作权限的异常。
本文所面对的是哪些会用Java写存储过程的朋友,可能你们在用Java写Oracle的存储过程也遇到过类似问题。希望对他们能有所帮助。关于如何用Java写Oracle的存储过程请参考我前面的一篇文章:Oracle8i中使用Java语言来开发存储过程,其中有相应的代码。 Read More- 认识StringBuilder大概是在一年前的八九月份里,还是在JDK1.5从未正式发布始,一直都是关注的它的几大显著特性--泛型、静态引入、装拆箱和不定参等,某些比较细微的差别却没注意到。
大家都知道处理字符串连接时StringBuffer比String效率高,因为从编译的字节码中也可以看到String的相加也是要转换为StringBuffer来进行的。
比如对于这几句代码 ①String s = "Hello"; ②s=s+" Java"; ③s=s+" World!"; 反编译之后从字节码可以看出虚拟机实际是如何处理的(具体字节码这里就略去了,对于详细字节码的分析我想如果需要的时候以后会单独写一篇来介绍):
Read More