基本参考菜鸟教程,java下载直接安装,注意文件名和类名需要一致的问题;

redis下载以后按菜鸟教程linux下安装,方式编译运行ok;

Java使用redis按菜鸟教程下载.jar,保存在本地某个路径,然后配classpath按这里的第一种方法:

export CLASSPATH=$CLASSPATH:/path/to/file/java-servlet-api.jar
source ~/.bash_profile //网站上少了~/

代码来自菜鸟教程:

import redis.clients.jedis.Jedis;
public class helloworld{
public static void main(String[] args){
System.out.println("Hello World");
Jedis jedis = new Jedis("localhost");
System.out.println("success");
System.out.println("running: "+jedis.ping());
}
}

效果:

javaTest song$ java helloworld
Hello World
success
running: PONG

jni编译路径找不到,mac os在这里:

/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/include/jni.h
/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/include/darwin/jni_md.h

------------18.03.12 Java读取图像并保存----------

多方参考,这里的代码可以读取,应该有什么依赖环境没装上,所以不能显示,想把读到的图片另存在本地,保存总是报错,后来添加头文件可以了。

import javax.imageio.*;//for ImageIO.read
import java.util.Arrays;
import java.awt.image.BufferedImage;
import java.awt.*;//for JFrame and JLabel etc
import javax.swing.*;//for JFrame and JLabel etc
import java.net.*;//for URL
import java.io.*;//for catch (IOException e),File,InputStream, BufferedInputStream,and FileInputStream ect
public class HelloJava{
public static void main (String[] args){
try {
// Read from a file
File sourceimage = new File("test.jpg"); //source.gif图片要与HelloJava.java同在一目录下
BufferedImage image = ImageIO.read(sourceimage);
File f = new File("test1.jpg");
ImageIO.write(image, "jpg", f); // Read from a URL(topit.me网站上随便找了一张图)
URL url = new URL("http://www.topit.cc/uploads/20180303/17/1520068648-XwNkvKgBVP.jpg");
image = ImageIO.read(url);
f = new File("topit.jpg");
ImageIO.write(image, "jpg", f);
} catch (IOException e) {
}
}
}

RGB转灰度

import javax.imageio.*;//for ImageIO.read
import java.util.Arrays;
import java.awt.image.BufferedImage;
import java.awt.*;//for JFrame and JLabel etc
import javax.swing.*;//for JFrame and JLabel etc
import java.net.*;//for URL
import java.io.*;//for catch (IOException e),File,InputStream, BufferedInputStream,and FileInputStream ect
public class readRGB2Grey{
public static void main (String[] args){
try {
// Read from a file
File sourceimage = new File("topit_cut.jpg"); //source.gif图片要与HelloJava.java同在一目录下
BufferedImage image = ImageIO.read(sourceimage); int width=image.getWidth();
int height=image.getHeight();
int imaRGB[][]=new int[width][height];//存放RGB信息数组,重点
int grey[][]=new int[width][height];//存放RGB信息数组,重点
//从bufIma读取RGB到数组中
int minx = image.getMinX();
int miny = image.getMinY();
int[] rgb = new int[];
for (int i = minx; i < width; i++) {
for (int j = miny; j < height; j++) {
int pixel = image.getRGB(i, j);//获得像素值
rgb[] = (pixel & 0xff0000) >> ;
rgb[] = (pixel & 0xff00) >> ;
rgb[] = (pixel & 0xff);
//此处为将像素值转换为灰度值的方法,存在误差,算法不唯一
grey[i][j] = (rgb[]*+rgb[]*+rgb[]*+)/;
}
} for(int i=;i<width;i++){
System.out.print("\n");
for(int j=;j<height;j++)
System.out.print(" "+grey[i][j]);
}
System.out.print("image size: "+width+" , "+height);
System.out.print("minx: "+width+" , miny: "+height);
} catch (IOException e) {
}
}
}

------18.03.14 jni---------------------

java 用JNI调c++程序包搞了两天半,基本是参考前人程序,步骤:

先编译通过c++程序,测试没问题以后打包成动态链接库,拷贝c.hpp到java目录;

在java工程目录下新建目录:com/test/,进入目录写java :helloword.java

javac helloword.java,如果没问题会生成hello.class

回到主目录javah com.test.helloword,如果没问题会生成com_test_nativehelloword.h

参考.h里的定义写jni_nativehelloword.cpp, 在这里include<c.hpp>调c++生成的动态链接库。

注意事项:

如果要返回一个jobject(ArrayList), jni里是返回jobject, return NULL, java里判断ArrayList是否为空用(arraylist!=null&&.size()>0),注意大小写。

-------18.03.15 jni-------------------

c++代码种新加了一个函数,java jni全更新过一遍,报错:

Undefined symbols for architecture x86_64:
"_queryDB", referenced from:
method_table in jni_SearchImage-a0aaca.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code (use -v to see invocation)

整个检查了一圈,各种怀疑,后来发现是jni里的函数名写错了。

Java Redis JNI的更多相关文章

  1. JAVA使用JNI调用C++动态链接库

    JAVA使用JNI调用C++动态链接库 使用JNI连接DLL动态链接库,并调用其中的函数 首先 C++中写好相关函数,文件名为test.cpp,使用g++编译为DLL文件,指令如下: g++ -sha ...

  2. 【Java的JNI快速学习教程】

    1. JNI简介 JNI是Java Native Interface的英文缩写,意为Java本地接口. 问题来源:由于Java编写底层的应用较难实现,在一些实时性要求非常高的部分Java较难胜任(实时 ...

  3. Redis操作Set工具类封装,Java Redis Set命令封装

    Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...

  4. Redis操作List工具类封装,Java Redis List命令封装

    Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...

  5. java通过jni方式获取硬盘序列号(windows,linux)

    linux系统java通过jni方式获取硬盘序列号 http://blog.csdn.net/starter110/article/details/8186788 使用jni在windows下读取硬盘 ...

  6. JAVA中JNI的简单使用

    了解JNI:JAVA因其跨平台特性而受人们喜爱,也正因此,使得它和本机各种内部联系变得很少,所以JNI(Java Native Interface)就是用来解决JAVA本地操作的一种方式.JAVA通过 ...

  7. Java通过JNI调用C/C++

    From:http://www.cnblogs.com/mandroid/archive/2011/06/15/2081093.html JNI是JAVA标准平台中的一个重要功能,它弥补了JAVA的与 ...

  8. java通过JNI接口调用C语言-初级

    JNI(java native interface):即java本地调用C的接口. 先看整体运行: 下面是过程: #vim test.java public class test{ public na ...

  9. Java通过JNI调用dll详细过程(转)

    源:Java通过JNI调用dll详细过程 最近项目有这样一个需求,在已有的CS软件中添加一个链接,将当前登录用户的用户名加密后放在url地址中,在BS的login方法里通过解密判断,如果为合法用户则无 ...

随机推荐

  1. P3292 [SCOI2016]幸运数字 线性基

    正解:线性基+倍增 解题报告: 先放下传送门QAQ 然后这题,其实没什么太大的技术含量,,,?就几个知识点套在一起,除了代码长以外没任何意义,主要因为想复习下线性基的题目所以还是写下,,, 随便写下思 ...

  2. 洛谷P4064 加法 [JXOI2017] 贪心

    正解:贪心 解题报告: 传送门! 首先最小值最大显然考虑二分?然后就二分一个值mid,从左往右考虑,对于小于等于mid的点显然可以求出这个点至少要加几次,然后找到覆盖这个点的右端点max的区间区间加上 ...

  3. 编写第一个H5页面

    <!DOCTYPE html><html ><head> <meta charset="UTF-8"> <title>第 ...

  4. python中由于中文路径引起的os.path.isfile(imgpath) == False问题

    昨天在用python脚本处理文件的时候,遇到了题述问题,明明文件时存在的,但是在用os.path.isfile(imgpath) == False进行判断的时候总是成立,在一开始以为是正反斜杠wind ...

  5. python脚本获取文件的创建于修改日期并计算时间差

    由于在计算一个算法的运行时间的时候,需要将文件的创建日期与修改日期读取到,然后计算两者之差,在网上搜索了相关的程序之后,自己又修改了一下,把代码贴在这里,供以后查阅使用,也希望可以帮到其他人. # - ...

  6. localstorage 和 sessionstorage 是什么?区别是什么?

    localstorage 和 sessionstorage 一样都是用来存储客户端临时信息的对象,他们均只能存储字符串类型对象: localstorage生命周期是永久的,这意味着除非用户在浏览器提供 ...

  7. oracle sqlplus login.sql设置

    sqlplus在启动时会自动运行两个脚本:glogin.sql.login.sql这两个文件 执行顺序为 1.默认在在$ORACLE_HOME/sqlplus/admin路径下查找glogin.sql ...

  8. s3存储桶:s3可扩展的云存储

    S3(Simple Storage Service,简单存储服务),即可扩展的云存储,又称桶存储,S3 是一种面向 Internet 的存储服务.S3为任意类型的文件提供临时或永久的存储服务.用于存储 ...

  9. 部署 tomcat

    解压 root@mysql soft]# ll 总用量 -rw-r--r--. root root 11月 : apache-tomcat-.tar.gz -rw-r--r--. root root ...

  10. 唯美MACD

    上证30 分钟产生背离,60 分钟高位,但并没有背离,若调整,也是30F 级别的.算是上涨途中的歇脚. 1.股票如果非要从MACD 上去判断怎么拿,那么一句话:要大跌,一般都需要背离.所以,没有背离的 ...