- 浏览: 512945 次
- 性别:
- 来自: 惠州
最新评论
-
fengyuxing168:
IBelyService bs = IBelyService. ...
为 Android 添加 Java 层服务也就是添加自定义的aidl服务到serviceManager 通过ServiceManager.getService取 -
dengzhangtao:
"由于ActivityManagerService是 ...
binder理解 -
yzyspy:
ActivityManagerService:startHom ...
Android的Launcher成为系统中第一个启动的,也是唯一的 -
Matchstick:
使用SELECT DISTINCT alias FROM Po ...
hibernate 一对多表查询时fetchMode.join 生成left outer join 出来数据重复问题 -
dlheart:
没看懂你什么意思啊,我遇到的问题是一对多,设了fetch = ...
hibernate 一对多表查询时fetchMode.join 生成left outer join 出来数据重复问题
文章列表
Java JNI由浅入深(包括:Java和C++互传ArrayList泛型对象参数)
2010-11-25 09:57 1168人阅读 评论(1) 收藏 举报
我们知道Java是一个运行在虚拟机里面的高级的编程语言,如果要调用系统的动态链接库的话,就要先声明native修饰的方法(类似接口里面的方法),再由C/C++程序来实现(类似实现接口里的方法)。这样Java调用这些native方法就相当于调用了C/C++里面实现了的方法。通常我们把这种机制叫做JNI(Java NativeInterfac),即Java 本地编程接口
Android也同理, ...
自己在外面偷偷的算了下,又有将近两个月没更新过blog了。趁着今天有兴致,来更新JNI编程的第二篇文章。在第一篇里,大概介绍了 JNI的特点、用途和优劣。并且做一个最简单的JNI的例子,不过说实话那个例子在实际的开发中没有太大的价值,实际开发中所需要的JNI程序要远远比那个复杂。所以这一篇就来介绍下如何通过JNI实现java和C++的相互通信,来满足实际开发的需要。
所谓”通信“,其实说白了无非也就是我们所说的方法调用,在上一篇的例子里介绍了如何在Java中调用本地的DLL,其实在Java代码中,除了对本地方法标注native关键字和加上要加载动态链接库之外,JNI基本上是对上层code ...
Android jni 常用方法备忘
- 博客分类:
- C/C++
Android jni 常用方法备忘
作者: Venus | 时间: 2011-03-02 | 分类: Android, IT技术 | 分享次数: 296 次 | 快来吐槽
有关Android JNI开发中比较强大和有用的功能就是从JNI层创建、构造Java的类或执行Java层的方法获取属性等操作。
一、类的相关操 ...
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
int myglobal;
pthread_mutex_t mymutex=PTHREAD_MUTEX_INITIALIZER;
void *thread_function(void *arg) {
int i,j;
for ( i=0; i<20; i++) {
pthread_mutex_lock(&mymutex);
j=myglobal;
...
主类
testlinklist.cpp
#include <stdio.h>
#include "LinkList.h"
#include <pthread.h>
#include <stdlib.h>
#include <sys/time.h>
#include <cstring>
#include <string.h>
#include <unistd.h>
using namespace std;
//delete data before 0x5a 0xa5,返回 ...
undefined reference to 'pthread_create'问题解决
分类: Linux Ubuntu程序开发 2008-08-31 09:51 12304人阅读 评论(10) 收藏 举报
由于是Linux新手,所以现在才开始接触线程编程,照着GUN/Linux编程指南中的一个例子输入编译,结果出现如下错误:
undefined reference to 'pthread_create'
undefined reference to 'pthread_join'
问题原因:
pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread. ...
strlen与sizeof的区别
- 博客分类:
- C/C++
strlen与sizeof的区别
最后一个int a[3] = {1, 2, 3};
在32位机上,sizeof a 应该等于4×3 = 12吧。
sizeof 运算符是用来求内存容量字节的大小的。而strlen是用来求字符串实际长度的。如果int *p = a; sizeof(p)应该等于4咯。
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
2.sizeof是算符,strlen是函数。
3.sizeof可以用类型做参数,strlen只能用char*做参数 ...
关于JAVA多线程同步
- 博客分类:
- java
因为需要,最近关注了一下JAVA多线程同步问题。JAVA多线程同步主要依赖于若干方法和关键字。将心得记录如下:
1 wait方法:
该方法属于Object的方法,wait方法的作用是使得当前调用wait方法所在部分(代码块)的线程停止执行,并释放当前获得的调用wait所在的代码块的锁,并在其他线程调用notify或者notifyAll方法时恢复到竞争锁状态(一旦获得锁就恢复执行)。
调用wait方法需要注意几点:
第一点:wait被调用的时候必须在拥有锁(即synchronized修饰的)的代码块中。
第二点:恢复执行后,从w ...
C/C++语言数组作为参数传递
- 博客分类:
- C/C++
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#define LINE 2
#define ROW 4
int array(char *szStr[ROW], int len)
{
for (int i=0; i<len; i++){
puts(szStr[i]);
}
return 0;
}
int main(int argc, char* argv[])
{
char str[LINE][ROW] = {"001"," ...
c/c++字符函数操作
- 博客分类:
- C/C++
// 取得Xml元素的值
// itemName:元素名
// buff:查找缓冲区
// return:value字符串
char* XmlPack::getElementValue(char* itemName, char* buff)
{
static char value[64];
int itemLen = strlen(itemName);
char* itemStart = new char[itemLen + 3];
memset(itemStart, '\0', itemLen + 3);
itemStart[0] ...
C++——指针,堆栈,引用,函数
- 博客分类:
- C/C++
C++——指针,堆栈,引用,函数
一. 指针
声明: int *a = 3; 声明了一个int类型的指针变量a,初始值为3。
赋值: int b = 3; a = &b; 将变量a的值(即地址)指向b,得到 *a == 3。
指针的好处:
1. 处理堆中存放的大量数据;
2. 快速访问类的成员数据和函数;
3. 以别名方式向函数传递参数。
const与指针:
指向常量的指针
是指针的值(地址)可以修改,可以指向其它 ...
今天看了两个小时
<<21
天学通
C++>>
把
C++
中的指针、引用、传值问题弄清楚了
记住引用理解成别名
形参
出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。 形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元
实参
出现在主调函数中,进入被调函数后,实参变量也不能使用。参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。
1.
指针
声明 ...
STL中的"集合类"的定义使用
- 博客分类:
- C/C++
STL
中的"
集合类"
的定义使用
#include <set>
#include <iostream>
using namespace std;
typedef set <double, less <double> , allocator
<double> > set_type;
ostream& operator < <(ostream& out, const
set_type&a ...
最后我学习一下如何在已有的链表上插入节点
我们要考虑四中情况,
1.链表为空!
2.插入点在首节点前
3.插入点找不到的情况我们设置放在最后!
4.插入点在中间的情况!
今天的程序在昨天的基础上做了进一步的修改,可以避免删除点找不到的情况,如果找不到删除点就退出函数!
#include <iostream
> using
namespace
std; struct
test
{
int
number;
float
socre;
test *next;
} ...
请注意,这一节内容是c++的重点,要特别注意!
我们先说一下什么是构造函数?
上一个教程我们简单说了关于
类的一些基本内容,对于类对象成员的初始化我们始终是建立成员函数然后手工调用该函数对成员进行赋值的,那么在c++中对于类来说有没有更方便的方式能够
在对象创建的时候就自动初始化成员变量呢,这一点对操作保护成员是至关重要的,答案是肯定的关于c++类成员的初始化,有专门的构造函数来进行自动操作而
无需要手工调用,在正式讲解之前先看看c++对构造函数的一个基本定义。 1.C++规定,每个类必须有默认的构造函数,没有构造函数就不能创建对象。
2.若没有提供任何构造函数,那么c++提供 ...