java native interface(JNI)¼¼Êõ¼òµ¥Ó¦ÓÃ
ÊÖÉÏÒ»¸öÏîÄ¿ÐèҪͨ¹ýusb¿ÚÈ¥¶ÁÈ¡usbkeyµÄÐÅÏ¢£¬³§¼ÒÌṩµÄÖ»ÓÐC/C++µÄ½Ó¿Ú£¬¶øÖ÷Ó¦ÓÃÊÇjavaµÄ£¬ËùÒÔÐèҪʹÓÃjavaÈ¥µ÷Óö¯Ì¬Á´½Ó¿â£¬ËùÒÔ»¨Á˵ãʱ¼äÑо¿ÁËÏÂJNI¼¼Êõ£¬jdk¶ÔJNI¼¼Êõ·â×°µÃºÜµ½Î»£¬Ê¹ÓÃÆðÀ´·Ç³£¼òµ¥£¬JNI¼¼Êõ×î¹Ø¼ü»¹ÊÇÔÚÓÚjniÊý¾ÝÀàÐͺͱ¾µØÊý¾ÝÀàÐ͵Äת»»¡£Ïȼòµ¥ÂÞÁÐÏÂJNIµÄ´´½¨¹ý³Ì£º
Ê×ÏÈÐèҪдһ¸öjavaÀ࣬Ȼºó¶¨ÒåÐèҪʹÓÃC/C++ȥʵÏֵķ½·¨£¨ËäȻ˵jniÊÇjava native interface£¬µ«ÊÇĿǰֻ֧³Öc/c++ʵÏÖ£©£¬Ê¹ÓÃnative¹Ø¼ü×ÖÉùÃ÷¡£ÕâÀïдһ¸ö¼òµ¥µÄÀý×Ó£º
TestJNI.java
package test.jni;
public class TestJNI
{
static
{
System.loadLibrary("TestJNI");
//Õâ¸öÊÇÖ®ºó²úÉúµÄ¿âµÄÃû×Ö£¬²»ÐèÒª¼Óºó׺£¬
//×Ô¶¯¸ù¾ÝϵͳÕÒ.dll»òÕß.so;
}
public native String helloWorld();
public static void main(String[] args)
{
TestJNI t = new TestJNI();
System.out.println(t.helloWorld());
}
}
È»ºó½«ÒÔÉÏÎļþʹÓÃjavac±àÒ룬ȻºóʹÓÃjavahÃüÁÈçÏ£º
javac test\jni\TestJNI.java
javah test.jni.TestJNI
Ö®ºó»áµÃµ½Ò»¸ötest_jni_TestJNI.hµÄÍ·Îļþ£¬ÄÚÈÝÈçÏ£º
test_jni_TestJNI.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class test_jni_TestJNI */
#ifndef _Included_test_jni_TestJNI
#define _Included_test_jni_TestJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: test_jni_TestJNI
* Method: helloWorld
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_test_jni_TestJNI_helloWorld
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
È»ºó±àдc/c++ʵÏÖ£¬ÈçÏ£º
TestJNI.c
#include <stdio.h>
#include <jni.h>
#include <windows.h>
#include "test_jni_TestJNI.h"
JNIEXPORT jstring JNICALL Java_test_jni_TestJNI_helloWorld
(JNIEnv * env, jobject object){
//ÔÚcÖбØÐë¸øÐÎʽ²ÎÊýÉùÃ÷±äÁ¿Ãû£¬C++ÖпÉÒÔ²»Óã¬Í·ÎļþÖв»ÐèÒªÐ޸ģ»
const char* str = "helloWorld";
return (*env)->NewStringUTF(env,str);
//C++ÖпÉÒÔÖ±½Óenv->NewStringUTF(
Ïà¹ØÎĵµ£º
×î¼Ñ´ð°¸
1. ±àд·¶ÀýÎĵµ
public class TestNative
{
private native static int Max(int a,int b);
public static void main(String[] args)
{
System.out.println(Max(4,5));
}
static
{
System.loadLibrary("VCdll");
}
}
ÆäÖÐ
LoadLibraryÖеÄDLLÎļþÃû³Æ¿ÉÒÔ ......
Observer
Intent
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
How to
Subject
knows its observers. Any number of Observer objects may observe a subject.
provides an in ......
JXLµÄ´òÓ¡ÉèÖÃÔÚjxl.SheetSettingsÕâ¸öÀàÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ý·½·¨Sheet£¨»òÕßWritableSheet£©#getSettings()»ñÈ¡¡£
1.Ò³Ãæ
1.1·½Ïò
SheetSetting#setOrientation(PageOrientation po)£»
²ÎÊý£º PageOrientation#LANDSCAPE ºáÏò´òÓ¡
PageOrientation# PO ......
1. Òì³£»úÖÆ
Òì³£»úÖÆÊÇÖ¸µ±³ÌÐò³öÏÖ´íÎóºó£¬³ÌÐòÈçºÎ´¦Àí¡£¾ßÌåÀ´Ëµ£¬Òì³£»úÖÆÌṩÁ˳ÌÐòÍ˳öµÄ°²È«Í¨µÀ¡£µ±³öÏÖ´íÎóºó£¬³ÌÐòÖ´ÐеÄÁ÷³Ì·¢Éú¸Ä±ä£¬³ÌÐòµÄ¿ØÖÆÈ¨×ªÒƵ½Òì³£´¦ÀíÆ÷¡£
´«Í³µÄ´¦ÀíÒì³£µÄ°ì·¨ÊÇ£¬º¯Êý·µ»ØÒ»¸öÌØÊâµÄ½á¹ûÀ´±íʾ³öÏÖÒì³££¨Í ......
±¾ÎÄÀ´×Ô£ºhttp://www.javaeye.com/topic/130025 1 ¼ò½é<o:p></o:p> ¶ÔÏóÐòÁл¯(Serializable)ÊÇÖ¸½«¶ÔÏóת»»Îª×Ö½ÚÐòÁеĹý³Ì£¬¶ø·´ÐòÁл¯ÔòÊǸù¾Ý×Ö½ÚÐòÁлָ´¶ÔÏóµÄ¹ý³Ì¡£<o:p></o:p> ÐòÁл¯Ò»°ãÓÃÓÚÒÔϳ¡¾°£º<o:p></o:p> 1. ÓÀ¾ÃÐÔ±£´æ¶ÔÏ󣬱£´æ¶ÔÏóµÄ×Ö½ÚÐòÁе½±¾µ ......