jni.h源码
/*
* jni.h
* Java Native Interface.
*
* Copyright (c) 1996, 1997
* Transvirtual Technologies, Inc. All rights reserved.
*
* See the file "license.terms" for information on usage and redistribution
* of this file.
*/ #ifndef __jni_h
#define __jni_h #include <stdio.h>
#include <stdarg.h>
#include "jtypes.h"
#include "jmalloc.h" #define JNIEXPORT
#define JNICALL struct JNIEnv_;
struct JNINativeInterface;
struct JavaVM_;
struct JNINativeMethod_;
struct JavaVMAttachArgs;
struct JavaVMInitArgs;
typedef const struct JNINativeInterface* JNIEnv;
typedef const struct JNIInvokeInterface* JavaVM;
typedef struct JNINativeMethod_ JNINativeMethod;
typedef struct JavaVMAttachArgs ThreadAttachArgs;
typedef struct JavaVMInitArgs JavaVMInitArgs; typedef void* jmethodID;
typedef void* jfieldID; #define JNI_TRUE 1
#define JNI_FALSE 0 #define JNI_COMMIT 1
#define JNI_ABORT 2 struct JNINativeInterface { void* reserved0;
void* reserved1;
void* reserved2;
void* reserved3;
jint (*GetVersion) (JNIEnv*);
jclass (*DefineClass) (JNIEnv*, jobject, const jbyte*, jsize);
jclass (*FindClass) (JNIEnv*, const char*);
void* reserved4;
void* reserved5;
void* reserved6;
jclass (*GetSuperClass) (JNIEnv*, jclass);
jbool (*IsAssignableFrom) (JNIEnv*, jclass, jclass);
void* reserved7;
jint (*Throw) (JNIEnv*, jobject);
jint (*ThrowNew) (JNIEnv*, jclass, const char*);
jthrowable (*ExceptionOccurred) (JNIEnv*);
void (*ExceptionDescribe) (JNIEnv*);
void (*ExceptionClear) (JNIEnv*);
void (*FatalError) (JNIEnv*, const char*);
void* reserved8;
void* reserved9;
jref (*NewGlobalRef) (JNIEnv*, jref);
void (*DeleteGlobalRef) (JNIEnv*, jref);
void (*DeleteLocalRef) (JNIEnv*, jref);
jbool (*IsSameObject) (JNIEnv*, jobject, jobject);
void* reserved10;
void* reserved11;
jobject (*AllocObject) (JNIEnv*, jclass);
jobject (*NewObject) (JNIEnv*, jclass, jmethodID, ...);
jobject (*NewObjectV) (JNIEnv*, jclass, jmethodID, va_list);
jobject (*NewObjectA) (JNIEnv*, jclass, jmethodID, jvalue*);
jclass (*GetObjectClass) (JNIEnv*, jobject);
jbool (*IsInstanceOf) (JNIEnv*, jobject, jclass);
jmethodID (*GetMethodID) (JNIEnv*, jclass, const char*, const char*);
jobject (*CallObjectMethod) (JNIEnv*, jobject, jmethodID, ...);
jobject (*CallObjectMethodV) (JNIEnv*, jobject, jmethodID, va_list);
jobject (*CallObjectMethodA) (JNIEnv*, jobject, jmethodID, jvalue*);
jbool (*CallBooleanMethod) (JNIEnv*, jobject, jmethodID, ...);
jbool (*CallBooleanMethodV) (JNIEnv*, jobject, jmethodID, va_list);
jbool (*CallBooleanMethodA) (JNIEnv*, jobject, jmethodID, jvalue*);
jbyte (*CallByteMethod) (JNIEnv*, jobject, jmethodID, ...);
jbyte (*CallByteMethodV) (JNIEnv*, jobject, jmethodID, va_list);
jbyte (*CallByteMethodA) (JNIEnv*, jobject, jmethodID, jvalue*);
jchar (*CallCharMethod) (JNIEnv*, jobject, jmethodID, ...);
jchar (*CallCharMethodV) (JNIEnv*, jobject, jmethodID, va_list);
jchar (*CallCharMethodA) (JNIEnv*, jobject, jmethodID, jvalue*);
jshort (*CallShortMethod) (JNIEnv*, jobject, jmethodID, ...);
jshort (*CallShortMethodV) (JNIEnv*, jobject, jmethodID, va_list);
jshort (*CallShortMethodA) (JNIEnv*, jobject, jmethodID, jvalue*);
jint (*CallIntMethod) (JNIEnv*, jobject, jmethodID, ...);
jint (*CallIntMethodV) (JNIEnv*, jobject, jmethodID, va_list);
jint (*CallIntMethodA) (JNIEnv*, jobject, jmethodID, jvalue*);
jlong (*CallLongMethod) (JNIEnv*, jobject, jmethodID, ...);
jlong (*CallLongMethodV) (JNIEnv*, jobject, jmethodID, va_list);
jlong (*CallLongMethodA) (JNIEnv*, jobject, jmethodID, jvalue*);
jfloat (*CallFloatMethod) (JNIEnv*, jobject, jmethodID, ...);
jfloat (*CallFloatMethodV) (JNIEnv*, jobject, jmethodID, va_list);
jfloat (*CallFloatMethodA) (JNIEnv*, jobject, jmethodID, jvalue*);
jdouble (*CallDoubleMethod) (JNIEnv*, jobject, jmethodID, ...);
jdouble (*CallDoubleMethodV) (JNIEnv*, jobject, jmethodID, va_list);
jdouble (*CallDoubleMethodA) (JNIEnv*, jobject, jmethodID, jvalue*);
void (*CallVoidMethod) (JNIEnv*, jobject, jmethodID, ...);
void (*CallVoidMethodV) (JNIEnv*, jobject, jmethodID, va_list);
void (*CallVoidMethodA) (JNIEnv*, jobject, jmethodID, jvalue*);
jobject (*CallNonvirtualObjectMethod) (JNIEnv*, jobject, jclass, jmethodID, ...);
jobject (*CallNonvirtualObjectMethodV) (JNIEnv*, jobject, jclass, jmethodID, va_list);
jobject (*CallNonvirtualObjectMethodA) (JNIEnv*, jobject, jclass, jmethodID, jvalue*);
jbool (*CallNonvirtualBooleanMethod) (JNIEnv*, jobject, jclass, jmethodID, ...);
jbool (*CallNonvirtualBooleanMethodV) (JNIEnv*, jobject, jclass, jmethodID, va_list);
jbool (*CallNonvirtualBooleanMethodA) (JNIEnv*, jobject, jclass, jmethodID, jvalue*);
jbyte (*CallNonvirtualByteMethod) (JNIEnv*, jobject, jclass, jmethodID, ...);
jbyte (*CallNonvirtualByteMethodV) (JNIEnv*, jobject, jclass, jmethodID, va_list);
jbyte (*CallNonvirtualByteMethodA) (JNIEnv*, jobject, jclass, jmethodID, jvalue*);
jchar (*CallNonvirtualCharMethod) (JNIEnv*, jobject, jclass, jmethodID, ...);
jchar (*CallNonvirtualCharMethodV) (JNIEnv*, jobject, jclass, jmethodID, va_list);
jchar (*CallNonvirtualCharMethodA) (JNIEnv*, jobject, jclass, jmethodID, jvalue*);
jshort (*CallNonvirtualShortMethod) (JNIEnv*, jobject, jclass, jmethodID, ...);
jshort (*CallNonvirtualShortMethodV) (JNIEnv*, jobject, jclass, jmethodID, va_list);
jshort (*CallNonvirtualShortMethodA) (JNIEnv*, jobject, jclass, jmethodID, jvalue*);
jint (*CallNonvirtualIntMethod) (JNIEnv*, jobject, jclass, jmethodID, ...);
jint (*CallNonvirtualIntMethodV) (JNIEnv*, jobject, jclass, jmethodID, va_list);
jint (*CallNonvirtualIntMethodA) (JNIEnv*, jobject, jclass, jmethodID, jvalue*);
jlong (*CallNonvirtualLongMethod) (JNIEnv*, jobject, jclass, jmethodID, ...);
jlong (*CallNonvirtualLongMethodV) (JNIEnv*, jobject, jclass, jmethodID, va_list);
jlong (*CallNonvirtualLongMethodA) (JNIEnv*, jobject, jclass, jmethodID, jvalue*);
jfloat (*CallNonvirtualFloatMethod) (JNIEnv*, jobject, jclass, jmethodID, ...);
jfloat (*CallNonvirtualFloatMethodV) (JNIEnv*, jobject, jclass, jmethodID, va_list);
jfloat (*CallNonvirtualFloatMethodA) (JNIEnv*, jobject, jclass, jmethodID, jvalue*);
jdouble (*CallNonvirtualDoubleMethod) (JNIEnv*, jobject, jclass, jmethodID, ...);
jdouble (*CallNonvirtualDoubleMethodV) (JNIEnv*, jobject, jclass, jmethodID, va_list);
jdouble (*CallNonvirtualDoubleMethodA) (JNIEnv*, jobject, jclass, jmethodID, jvalue*);
void (*CallNonvirtualVoidMethod) (JNIEnv*, jobject, jclass, jmethodID, ...);
void (*CallNonvirtualVoidMethodV) (JNIEnv*, jobject, jclass, jmethodID, va_list);
void (*CallNonvirtualVoidMethodA) (JNIEnv*, jobject, jclass, jmethodID, jvalue*);
jfieldID (*GetFieldID) (JNIEnv*, jclass, const char*, const char*);
jobject (*GetObjectField) (JNIEnv*, jobject, jfieldID);
jbool (*GetBooleanField) (JNIEnv*, jobject, jfieldID);
jbyte (*GetByteField) (JNIEnv*, jobject, jfieldID);
jchar (*GetCharField) (JNIEnv*, jobject, jfieldID);
jshort (*GetShortField) (JNIEnv*, jobject, jfieldID);
jint (*GetIntField) (JNIEnv*, jobject, jfieldID);
jlong (*GetLongField) (JNIEnv*, jobject, jfieldID);
jfloat (*GetFloatField) (JNIEnv*, jobject, jfieldID);
jdouble (*GetDoubleField) (JNIEnv*, jobject, jfieldID);
void (*SetObjectField) (JNIEnv*, jobject, jfieldID, jobject);
void (*SetBooleanField) (JNIEnv*, jobject, jfieldID, jbool);
void (*SetByteField) (JNIEnv*, jobject, jfieldID, jbyte);
void (*SetCharField) (JNIEnv*, jobject, jfieldID, jchar);
void (*SetShortField) (JNIEnv*, jobject, jfieldID, jshort);
void (*SetIntField) (JNIEnv*, jobject, jfieldID, jint);
void (*SetLongField) (JNIEnv*, jobject, jfieldID, jlong);
void (*SetFloatField) (JNIEnv*, jobject, jfieldID, jfloat);
void (*SetDoubleField) (JNIEnv*, jobject, jfieldID, jdouble);
jmethodID (*GetStaticMethodID) (JNIEnv*, jclass, const char*, const char*);
jobject (*CallStaticObjectMethod) (JNIEnv*, jclass, jmethodID, ...);
jobject (*CallStaticObjectMethodV) (JNIEnv*, jclass, jmethodID, va_list);
jobject (*CallStaticObjectMethodA) (JNIEnv*, jclass, jmethodID, jvalue*);
jbool (*CallStaticBooleanMethod) (JNIEnv*, jclass, jmethodID, ...);
jbool (*CallStaticBooleanMethodV) (JNIEnv*, jclass, jmethodID, va_list);
jbool (*CallStaticBooleanMethodA) (JNIEnv*, jclass, jmethodID, jvalue*);
jbyte (*CallStaticByteMethod) (JNIEnv*, jclass, jmethodID, ...);
jbyte (*CallStaticByteMethodV) (JNIEnv*, jclass, jmethodID, va_list);
jbyte (*CallStaticByteMethodA) (JNIEnv*, jclass, jmethodID, jvalue*);
jchar (*CallStaticCharMethod) (JNIEnv*, jclass, jmethodID, ...);
jchar (*CallStaticCharMethodV) (JNIEnv*, jclass, jmethodID, va_list);
jchar (*CallStaticCharMethodA) (JNIEnv*, jclass, jmethodID, jvalue*);
jshort (*CallStaticShortMethod) (JNIEnv*, jclass, jmethodID, ...);
jshort (*CallStaticShortMethodV) (JNIEnv*, jclass, jmethodID, va_list);
jshort (*CallStaticShortMethodA) (JNIEnv*, jclass, jmethodID, jvalue*);
jint (*CallStaticIntMethod) (JNIEnv*, jclass, jmethodID, ...);
jint (*CallStaticIntMethodV) (JNIEnv*, jclass, jmethodID, va_list);
jint (*CallStaticIntMethodA) (JNIEnv*, jclass, jmethodID, jvalue*);
jlong (*CallStaticLongMethod) (JNIEnv*, jclass, jmethodID, ...);
jlong (*CallStaticLongMethodV) (JNIEnv*, jclass, jmethodID, va_list);
jlong (*CallStaticLongMethodA) (JNIEnv*, jclass, jmethodID, jvalue*);
jfloat (*CallStaticFloatMethod) (JNIEnv*, jclass, jmethodID, ...);
jfloat (*CallStaticFloatMethodV) (JNIEnv*, jclass, jmethodID, va_list);
jfloat (*CallStaticFloatMethodA) (JNIEnv*, jclass, jmethodID, jvalue*);
jdouble (*CallStaticDoubleMethod) (JNIEnv*, jclass, jmethodID, ...);
jdouble (*CallStaticDoubleMethodV) (JNIEnv*, jclass, jmethodID, va_list);
jdouble (*CallStaticDoubleMethodA) (JNIEnv*, jclass, jmethodID, jvalue*);
void (*CallStaticVoidMethod) (JNIEnv*, jclass, jmethodID, ...);
void (*CallStaticVoidMethodV) (JNIEnv*, jclass, jmethodID, va_list);
void (*CallStaticVoidMethodA) (JNIEnv*, jclass, jmethodID, jvalue*);
jfieldID (*GetStaticFieldID) (JNIEnv*, jclass, const char*, const char*);
jobject (*GetStaticObjectField) (JNIEnv*, jclass, jfieldID);
jbool (*GetStaticBooleanField) (JNIEnv*, jclass, jfieldID);
jbyte (*GetStaticByteField) (JNIEnv*, jclass, jfieldID);
jchar (*GetStaticCharField) (JNIEnv*, jclass, jfieldID);
jshort (*GetStaticShortField) (JNIEnv*, jclass, jfieldID);
jint (*GetStaticIntField) (JNIEnv*, jclass, jfieldID);
jlong (*GetStaticLongField) (JNIEnv*, jclass, jfieldID);
jfloat (*GetStaticFloatField) (JNIEnv*, jclass, jfieldID);
jdouble (*GetStaticDoubleField) (JNIEnv*, jclass, jfieldID);
void (*SetStaticObjectField) (JNIEnv*, jclass, jfieldID, jobject);
void (*SetStaticBooleanField) (JNIEnv*, jclass, jfieldID, jbool);
void (*SetStaticByteField) (JNIEnv*, jclass, jfieldID, jbyte);
void (*SetStaticCharField) (JNIEnv*, jclass, jfieldID, jchar);
void (*SetStaticShortField) (JNIEnv*, jclass, jfieldID, jshort);
void (*SetStaticIntField) (JNIEnv*, jclass, jfieldID, jint);
void (*SetStaticLongField) (JNIEnv*, jclass, jfieldID, jlong);
void (*SetStaticFloatField) (JNIEnv*, jclass, jfieldID, jfloat);
void (*SetStaticDoubleField) (JNIEnv*, jclass, jfieldID, jdouble);
jstring (*NewString) (JNIEnv*, const jchar*, jsize);
jsize (*GetStringLength) (JNIEnv*, jstring);
const jchar* (*GetStringChars) (JNIEnv*, jstring, jboolean*);
void (*ReleaseStringChars) (JNIEnv*, jstring, const jchar*);
jstring (*NewStringUTF) (JNIEnv*, const char*);
jsize (*GetStringUTFLength) (JNIEnv*, jstring);
const jbyte* (*GetStringUTFChars) (JNIEnv*, jstring, jbool*);
void (*ReleaseStringUTFChars) (JNIEnv*, jstring, const jbyte*);
jsize (*GetArrayLength) (JNIEnv*, jarray);
jarray (*NewObjectArray) (JNIEnv*, jsize, jclass, jobject);
jobject (*GetObjectArrayElement) (JNIEnv*, jarray, jsize);
void (*SetObjectArrayElement) (JNIEnv*, jarray, jsize, jobject);
jarray (*NewBooleanArray) (JNIEnv*, jsize);
jarray (*NewByteArray) (JNIEnv*, jsize);
jarray (*NewCharArray) (JNIEnv*, jsize);
jarray (*NewShortArray) (JNIEnv*, jsize);
jarray (*NewIntArray) (JNIEnv*, jsize);
jarray (*NewLongArray) (JNIEnv*, jsize);
jarray (*NewFloatArray) (JNIEnv*, jsize);
jarray (*NewDoubleArray) (JNIEnv*, jsize);
jbool* (*GetBooleanArrayElements) (JNIEnv*, jarray, jbool*);
jbyte* (*GetByteArrayElements) (JNIEnv*, jarray, jbool*);
jchar* (*GetCharArrayElements) (JNIEnv*, jarray, jbool*);
jshort* (*GetShortArrayElements) (JNIEnv*, jarray, jbool*);
jint* (*GetIntArrayElements) (JNIEnv*, jarray, jbool*);
jlong* (*GetLongArrayElements) (JNIEnv*, jarray, jbool*);
jfloat* (*GetFloatArrayElements) (JNIEnv*, jarray, jbool*);
jdouble* (*GetDoubleArrayElements) (JNIEnv*, jarray, jbool*);
void (*ReleaseBooleanArrayElements) (JNIEnv*, jarray, jbool*, jint);
void (*ReleaseByteArrayElements) (JNIEnv*, jarray, jbyte*, jint);
void (*ReleaseCharArrayElements) (JNIEnv*, jarray, jchar*, jint);
void (*ReleaseShortArrayElements) (JNIEnv*, jarray, jshort*, jint);
void (*ReleaseIntArrayElements) (JNIEnv*, jarray, jint*, jint);
void (*ReleaseLongArrayElements) (JNIEnv*, jarray, jlong*, jint);
void (*ReleaseFloatArrayElements) (JNIEnv*, jarray, jfloat*, jint);
void (*ReleaseDoubleArrayElements) (JNIEnv*, jarray, jdouble*, jint);
void (*GetBooleanArrayRegion) (JNIEnv*, jarray, jsize, jsize, jbool*);
void (*GetByteArrayRegion) (JNIEnv*, jarray, jsize, jsize, jbyte*);
void (*GetCharArrayRegion) (JNIEnv*, jarray, jsize, jsize, jchar*);
void (*GetShortArrayRegion) (JNIEnv*, jarray, jsize, jsize, jshort*);
void (*GetIntArrayRegion) (JNIEnv*, jarray, jsize, jsize, jint*);
void (*GetLongArrayRegion) (JNIEnv*, jarray, jsize, jsize, jlong*);
void (*GetFloatArrayRegion) (JNIEnv*, jarray, jsize, jsize, jfloat*);
void (*GetDoubleArrayRegion) (JNIEnv*, jarray, jsize, jsize, jdouble*);
void (*SetBooleanArrayRegion) (JNIEnv*, jarray, jsize, jsize, jbool*);
void (*SetByteArrayRegion) (JNIEnv*, jarray, jsize, jsize, jbyte*);
void (*SetCharArrayRegion) (JNIEnv*, jarray, jsize, jsize, jchar*);
void (*SetShortArrayRegion) (JNIEnv*, jarray, jsize, jsize, jshort*);
void (*SetIntArrayRegion) (JNIEnv*, jarray, jsize, jsize, jint*);
void (*SetLongArrayRegion) (JNIEnv*, jarray, jsize, jsize, jlong*);
void (*SetFloatArrayRegion) (JNIEnv*, jarray, jsize, jsize, jfloat*);
void (*SetDoubleArrayRegion) (JNIEnv*, jarray, jsize, jsize, jdouble*);
jint (*RegisterNatives) (JNIEnv*, jclass, const JNINativeMethod*, jint);
jint (*UnregisterNatives) (JNIEnv*, jclass);
jint (*MonitorEnter) (JNIEnv*, jobject);
jint (*MonitorExit) (JNIEnv*, jobject);
jint (*GetJavaVM) (JNIEnv*, JavaVM**); }; struct JavaVMAttachArgs {
void* reserved0;
}; struct JNINativeMethod_ {
char* name;
char* signature;
void* fnPtr;
}; struct JNIInvokeInterface {
void* reserved0;
void* reserved1;
void* reserved2;
jint (*DestroyJavaVM) (JavaVM*);
jint (*AttachCurrentThread) (JavaVM*, JNIEnv**, ThreadAttachArgs*);
jint (*DetachCurrentThread) (JavaVM*);
}; struct JNIEnv_ {
const struct JNINativeInterface* functions;
}; struct JavaVM_ {
const struct JNIInvokeInterface* functions;
}; struct JavaVMInitArgs {
jint version;
char** properties;
jint checkSource;
jint nativeStackSize;
jint javaStackSize;
jint minHeapSize;
jint maxHeapSize;
jint verifyMode;
const char* classpath;
jint (*vfprintf)(FILE*, const char*, va_list);
void (*exit)(jint);
void (*abort)(void);
jint enableClassGC;
jint enableVerboseGC;
jint disableAsyncGC;
jint enableVerboseClassloading;
jint enableVerboseJIT;
jint allocHeapSize;
const char* classhome;
const char* libraryhome;
}; extern JavaVMInitArgs Kaffe_JavaVMArgs[]; #endif
jni.h源码的更多相关文章
- IPC之util.h源码解读
/* SPDX-License-Identifier: GPL-2.0 */ /* * linux/ipc/util.h * Copyright (C) 1999 Christoph Rohland ...
- UVW源码漫谈(番外篇)—— Emitter
这两天天气凉了,苏州这边连续好几天都是淅淅沥沥的下着小雨,今天天气还稍微好点.前两天早上起来突然就感冒了,当天就用了一卷纸,好在年轻扛得住,第二天就跟没事人似的.在这里提醒大家一下,天气凉了,睡凉席的 ...
- 从源码角度彻底理解ReentrantLock(重入锁)
目录 1.前言 2.AbstractQueuedSynchronizer介绍 2.1 AQS是构建同步组件的基础 2.2 AQS的内部结构(ReentrantLock的语境下) 3 非公平模式加锁流程 ...
- duilib 使用图片素材或者算法给窗体增加阴影(源码和demo)
转载请说明原出处,谢谢:http://blog.csdn.net/zhuhongshu/article/details/42580877 之前我写的程序使用阴影时,一直是使用codeproject网站 ...
- stl源码学习(版本2.91)--list
stl源码学习(版本2.91)--list 一,阅读list()构造函数的收获 1,默认构造函数的作用和被调用的时机 struct no{ no(int i){} //no(){ // std::co ...
- libevent源码分析二--timeout事件响应
libevent不仅支持io事件,同时还支持timeout事件与signal事件,这篇文件将分析libevent是如何组织timeout事件以及如何响应timeout事件. 1. min_heap ...
- java并发系列(四)-----源码角度彻底理解ReentrantLock(重入锁)
1.前言 ReentrantLock可以有公平锁和非公平锁的不同实现,只要在构造它的时候传入不同的布尔值,继续跟进下源码我们就能发现,关键在于实例化内部变量sync的方式不同,如下所示: /** * ...
- ReentrantLock(重入锁)的源码解析
转自:从源码角度彻底理解ReentrantLock(重入锁)](https://www.cnblogs.com/takumicx/p/9402021.html)) 公平锁内部是FairSync,非公平 ...
- 【转】Android 源码下利用jni编译自己的项目(参考系统development/samples/SimpleJNI)
原文网址:http://blog.csdn.net/qiuxiaolong007/article/details/7860481 记于正文前:环境是ubuntu10.10,android 源码是2.0 ...
随机推荐
- ios7之后 根据UILabel的文字计算frame的方法
ios7 新出来的根据label的文字和字体大小来确定label的宽高. 官方的方法是: - (CGRect)boundingRectWithSize:(CGSize)size options:(NS ...
- Java多线程概述
/*多线程1.首先说进程,进程---就是正在进行的程序 每一个进程都有一个执行程序.该顺序是一个执行路径,或者叫一个控制单元 2.线程:就是进程中的一个独立的进程单元 线程在控制着 ...
- memcached一些整理
.NET中使用Memcached的相关资源整理 Memcached官方站点:http://www.danga.com/memcached/ Memcached Win32 1.2.6下载: ...
- 使用css3背景渐变中的透明度来设置不同颜色的背景渐变
为了添加透明度,我们使用 rgba() 函数来定义颜色结点.rgba() 函数中的最后一个参数可以是从 0 到 1 的值,它定义了颜色的透明度:0 表示完全透明,1 表示完全不透明.rgba()后面的 ...
- ssh自动登录的4种实现方法
ssh自动登录的几种实现方法,记录在此. 1. 自动ssh/scp方法 A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.1 ...
- 解决Twitter Bootstrap Tab URL链接问题
例如这样的一个Tabs 代码: <ul class="nav nav-tabs" id="myTab"> <li class="ac ...
- VB-获取某字符在其中出现的次数
'方法1: Dim str As String " "))) '方法2: Dim n&, j& j = n = , text1.Text, "/ITEMN ...
- python 中函数的参数
一.python中的函数参数形式 python中函数一般有四种表现形式: 1.def function(arg1, arg2, arg3...) 这种是python中最常见的一中函数参数定义形式,函数 ...
- 基于Emgu CV 的手势识别实现PPT的控制放映
Emgu CV 简介 众所周知,Emgu CV是.NET平台下对OpenCV图像处理库的封装,也就是.NET版的OpenCV.开发者可以很方便的通过C#,VB等语言调用OpenCV函数 ...
- Java学习-数组
1.数组的是Object的直接子类,它属于“第一类对象”,但是它又与普通的java对象存在很大的不同,类名为:[I 一维数组:[I 二维数组:[[I 三维数组:[[[I 2.[代表了数组的维度,一个[ ...