标签归档:Java

centos7 yum安装java环境

 centos7中安装java环境,在安装前先查看有无安装过java环境。直接运行java命令,会提示命令未找到,则是没有安装过java环境。

java[root@zixuephp ~]# java-bash: java: command not found

        也可以通过rpm命令查看:

bashrpm -qa |grep java

一、查看yum源的java包

bashyum list java*
java package list.png

二、安装java1.8 jdk软件

bashyum -y install java-1.8.0-openjdk
java sdk install.png

三、查看版本,检测是否安装成功

javajava -version
java -version.png

    如图中的会显示,表示已经安装java环境成功。

原文:https://zixuephp.net/article-406.html

Java HttpURLConnection POST方式调用接口并携带参数

package testi;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.net.URL;
import java.net.URLEncoder;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;

public class HttpsHelper {
	public static void main(String args[]) throws Exception {
		//System.out.println(args[0]); // 打印 Hello World 
		if(args.length != 3) {
			System.out.println("参数错误,0-postStr,1-url,2-方式:post或get");
			return;
		}
		else {
			if(args[2] == "post")
				new HttpsHelper().SendPostHttp(args[0], args[1]);
			else
				new HttpsHelper().SendGetHttp(args[0], args[1]);
		}
		
	  }

	  public void SendPostHttp(String postJsonStr, String url) throws Exception {
	    
	    String postData = postJsonStr;//getJson();
	    HttpsURLConnection conn = null;
	    //String param="name="+URLEncoder.encode("丁丁","UTF-8");
	    OutputStream out = null;
	    String rsp = null;
	    byte[] byteArray = postData.getBytes("utf-8");
	    try {
	      URL uri = new URL(url);
	      conn = (HttpsURLConnection) uri.openConnection();
	      //忽略证书验证--Begin
	      conn.setHostnameVerifier(new My_TrustAnyHostnameVerifier());
	      //忽略证书验证--End
	      conn.setRequestMethod("POST");
	      conn.setDoInput(true);
	      conn.setDoOutput(true);
	      conn.setRequestProperty("Host", uri.getHost());
	      conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
	      out = conn.getOutputStream();
	      out.write(byteArray);
	      out.close();
	      if(conn.getResponseCode()==200) {
	        rsp = getStreamAsString(conn.getInputStream(), "utf-8");
	      }else {
	        rsp = getStreamAsString(conn.getErrorStream(), "utf-8");
	      }
	      
	      System.out.println(rsp);

	    } catch (Exception e) {
	      if(null!=out)
	        out.close();
	      e.printStackTrace();
	      
	    }
	    
	  }
	  
	  public void SendGetHttp(String postJsonStr, String url) throws Exception {
		  	String postData = postJsonStr;//getJson();
		    HttpsURLConnection conn = null;
		    url = url + "?" + postData;
		    //OutputStream out = null;
		    String rsp = null;
		    //byte[] byteArray = postData.getBytes("utf-8");
		    try {
		      URL uri = new URL(url);
		      conn = (HttpsURLConnection) uri.openConnection();
		      //忽略证书验证--Begin
		      conn.setHostnameVerifier(new My_TrustAnyHostnameVerifier());
		      //忽略证书验证--End
		      conn.setRequestMethod("GET");
		      conn.setDoInput(true);
		      conn.setDoOutput(true);
		      conn.setRequestProperty("Host", uri.getHost());
		      conn.setRequestProperty("Content-Type", "text/html; charset=UTF-8");
		      //out = conn.getOutputStream();
		      ///out.write(byteArray);
		      //out.close();
		      if(conn.getResponseCode()==200) {
		        rsp = getStreamAsString(conn.getInputStream(), "utf-8");
		      }else {
		        rsp = getStreamAsString(conn.getErrorStream(), "utf-8");
		      }
		      
		      System.out.println(rsp);

		    } catch (Exception e) {
		      //if(null!=out)
		        //out.close();
		      e.printStackTrace();
		      
		    }
		}
	  
	  /**
	   * getJson
	   * 
	   */
	  private static String getJson() {
	    return "{" + "\"name\"" + ":" + "\"hello\"" + "}";
	  }
	 

	  private static String getStreamAsString(InputStream stream, String charset) throws IOException {
	    try {
	      Reader reader = new InputStreamReader(stream, charset);
	      StringBuilder response = new StringBuilder();

	      final char[] buff = new char[1024];
	      int read = 0;
	      while ((read = reader.read(buff)) > 0) {
	        response.append(buff, 0, read);
	      }

	      return response.toString();
	    } finally {
	      if (stream != null) {
	        stream.close();
	      }
	    }
	  }

	}

	//定制Verifier
	class My_TrustAnyHostnameVerifier implements HostnameVerifier {
	  public boolean verify(String hostname, SSLSession session) {
	    return true;
	  }

}

参考:

http://www.manongjc.com/detail/18-hgdiiupleyulnbu.html

https://www.jb51.net/article/73621.htm
https://blog.csdn.net/u011400521/article/details/78251857
https://www.jb51.net/article/168581.htm

安卓开发环境的搭建:eclipse + Android Studio

**安装环境:Win10 专业版,64位 **

第一步:安装前准备

  1. 安装JDK
    JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

这里我下载的是1.8 版本

**注意:在下载JDK版本的时候,要和后面下载的SDK版本一致,若不一致可能会导致SDK下的SDK Mamager 和AVD Mamager等其他相关工具打不开,出现一闪而过的情况 **

  1. 配置java环境变量
    新建系统变量
    变量名:JAVA_HOME
    变量值:JDK的 安装路径

在系统变量Path 中新建项,并添加%JAVA_HOME%\bin

测试是否成功:win + R调出cmd窗口,输入命令:java -version
显示如下则说明安装成功。

  1. 安装SDK(这个AS中有自带的SDK,可选)
    SDK 下载地址:http://tools.android-studio.org/index.php/sdk,
    这里有两种方式,一种是exe安装程序,一种是压缩包,我选择的是压缩包方式,下载解压即可。解压目录:

双击SDK/AVD应用程序,出现一下界面。则说明是没问题的:
SDK Manager:

AVD Manager:

如果之间的JDK 版本和SDK 版本不一致(JDK版本过高,则此处的SDK和AVD 都不会出现)

  1. 配置SDK环境变量
    新建系统变量
    变量值:ANDROID_HOME
    变量名:E:\SDK

在系统变量Path 中新增加两项:
%ANDROID_HOME%\tools
%ANDROID_HOME%\platform-tools

**测试是否成功:win + R调出cmd窗口,输入命令:adb 或android **

输入android 则会出出现上面的SDK Manager, 说明成功。

第二步:安装eclipse
安装说明:Google 已经于2015年起停止了对Eclipse Android 的支持,同时推出了自家的IDA Android Studio,如果出于开发的需要,最好在Android Studio 中开始你的项目。这里安装eclipse ,只是出于在有些情况下的需要

  1. 下载安装eclipse
    下载地址:
    http://www.eclipse.org/downloads/packages/
    选择32/64位的Eclipse IDE for Java EE Developers ,以分析或修改APK文件。
    下载好压缩包之后,直接解压,运行eclipse 即可。
  1. 安装ADK
    此处有两种安装方法,由于第一种方法需要FQ,所需略过不谈,直接上第二种——-离线的方式进行安装。
    先下载ADK包:链接:https://pan.baidu.com/s/1B9BVMan6ku6N8_z3Rc2oCQ 密码:6bl6

启动 Eclipse, 在help>install new software

配置ADT:windows>Preference>
SDK 为之前下载后的解压文件:

第三步:安装Android Studio

  1. 下载安装Android Studio
    下载地址:http://www.android-studio.org/
    选择合适版本(我选择是推荐方式)

下载后,启动安装程序,一路安装,应该问题不大。
注意其中有一步是第一次启动时会弹出设置代理选项,取消即可

  1. 修改配置
    在这里设置SDK JDK NDK 路径即可
  1. 进行测试
    创建项目

创建模拟器

按照向导,创建自己需要的安卓模拟器

最后运行,看看效果

  1. 遇到的问题
    由于Gradlle 版本问题,在创建完项目的时候,会一直卡在building “project name”gradle project info,界面,
    解决方法,可参照这篇博客:https://blog.csdn.net/veloi/article/details/72988189
    ————————————————

原文链接:https://blog.csdn.net/u013926216/article/details/81784745

参考文章:搞定Android开发环境部署——非常详细的Android开发环境搭建教程
关于JRE和JDK的区别
java下载需要oracle账户
Android Studio 常见错误分析
运行第一个安卓应用

史上最全的Android开发学习教程集锦【初学者】

根据Google的报告,截止2017年5月为止,Android活跃用户已超过20亿,并还在持续增长中。Android系统在几个主要的市场上已超过了iOS系统,特别是在美国,欧洲和日本,然而苹果确实在中国市场找到了一席之地。未来的市场到底谁是“霸主”我们还无从得知,但Android现在的趋势已经超过iOS。这也是为什么越来越多的设计师投身于Android开发设计。本篇文章从不同角度给Android开发提供丰富的教程资源:初级Android开发教程,YouTube视频教程,丰富的Android开发资源以及工具使用等。

1、初级Android开发教程:
https://developer.android.com/training/basics/firstapp/creating-project

当然,我们还是要从Google给的Android教程开始学起。“开发你的第一个Android应用程序”这个教程一开始就是为初学者准备的,如果你没有一点编程知识,那么学习起来会很困难,但如果你有一些编程背景,那很容易。

在教程的背后有几个“最佳实践”,这个可以说是非常重要的内容,这是你必须阅读的部分。

2、https://www.raywenderlich.com/120177/beginning-android-development-tutorial-installing-android-studio

这个Android教程没有任何附件的条件,只要你有一颗想学习的心和Mac。对的,Mac, 当然你也可以在PC端上开发Android应用程序,但这个教程是基于Mac开发人员的。从这个教程中你将学习到:
– 如何设置Android开发过程中使用的所有工具
– 如何下载并安装Android studio
– 如何在不同设备和模拟器中测试你的应用程序
– 创建简单的“hello world”Android应用程序,并可以打印到你的设备以及模拟器
– 如何将示例项目导入Android studio

3、https://www.tutorialspoint.com/android/index.htm

Android编程是基于Java语言的,如果你对Java编程有基本了解,那么学习起来会相对轻松些。这个教程会教你基本的Android编程,并带你了解一些与Android应用程序相关的高级概念。本篇教程完全是为初学者准备的,当你了解完这篇教程后,你将发现自己已达到了Android编程中等水平的专业知识,从而就可以进入下个阶段。值得一提的是,这个网站上涵盖了几乎所有的Android开发的知识,包括:Android的用户界面,Android高阶概念,Android应用程序样例以及各种Android资源。

4、https://www.raywenderlich.com/185299/building-android-library-tutorial

Android库在结构上与Android应用程序模块相同。 它可以包括构建应用程序所需的一切,包括源代码,资源文件和Android清单。在本教程中,你将学习到构建Android库的所有内容,从创建到发布以供其他人使用。教程内容包括:
– 如何创建Android库
– 如何发布你的Android库
– 如何使用你的Android库
– Android库的最佳实践

5、YouTube视频教程:
https://www.youtube.com/playlist?list=PLS1QulWo1RIbb1cYyzZpLFCKvdYV_yJ-E 

这个教程是Android开发系列教程,涵盖56个视频教程。从基础的介绍和安装配置Java JDK到安装Android studio以及开发应用程序,你可以了解到你想了解的一切关于Android开发的知识。

6、https://www.youtube.com/playlist?list=PLshdtb5UWjSrOJfpFOE-u55s3SnY2EO9v 

本教程总共有69个视频,从基础的开发知识到如何创建一个Android应用程序,你想知道的Android所有知识,都涵盖在这77个视频里。在学习完本系列教程,你可以创建自己的Android应用程序,并可以在Play store中发布你的应用程序。这个系列教程是2018年最新的。

7、https://www.youtube.com/watch?v=EOfCEhWq8sg

本教程是由在线学习网站Treehouse提供的。顺便说一句,这个网站的学习资源很丰富,有时间可以去看看。目前, Android开发都是有Android studio这个工具完成的,它有助于组织我们的项目,并提供一种用户友好的方式来创建我们找寻的东西。在本视频中,我们将学习到如何安装Android studio,然后制作应用程序,如果你没有一点编程知识,也没关系,跟着视频学习,你将了解更多Android应用程序。

附:Android开发资源:

https://www.udemy.com/java-tutorial/

本课程是为初学者准备的,如何学习Java编程语言,没有编程背景也不影响,并且是免费的。

https://www.youtube.com/playlist?list=PL9DF6E4B45C36D411

Java编程学习的系列YouTube视频教程,涵盖47个视频。

https://www.youtube.com/watch?v=WPvGqX-TXP0&feature=youtu.be

这个教程能够在30分钟内教你Java的核心知识。

https://academy.realm.io/posts/eric-maxwell-mvc-mvp-and-mvvm-on-android/

学习如何为复杂的Android应用程序选择合适的架构,实现更好的开发、测试、调试和维护。

https://www.w3schools.com/xml/

如果还对XML不熟悉的,现在是你学习它的最佳时机,因为你需要大量的使用它来设计Android布局,这个还比较简单,你不需要花费太多时间。

https://code.tutsplus.com/tutorials/a-beginners-guide-to-http-and-rest–net-16340

如果你需要通过Android应用程序进行API调用,那么了解HTTP和REST非常重要。

https://www.mockplus.com/blog/post/android-app-design

Android开发同样需要学习APP 设计,和设计师能够更好的沟通。

https://www.mockplus.cn/blog/post/947

这篇文章给我们提供了最全的材料设计 UI kit。

https://blog.google/products/android/

如果你想获得Android最新消息,那么不如直接从Google获取。

https://android-developers.googleblog.com/

如果你是Android的开发人员,那么这个博客可以获得Android所有的最新时讯,并提供最新的一些开发应用程序技巧以及丰富的培训资源。

AndroidGuys

这个博客为Android用户提供关于Android的产品、使用技巧以及最新的时讯。如果你想了解某个Android的操作系统以及设备,那么这个博客你绝对值得收藏。

How to use Material Design in your Android apps

本文教你如何使用材料设计让你的Android应用程序更加美观吸引人。

Android 开发工具:
Android Studio
所有Android应用程序离不开Android studio,它是Google推出的Android开发环境,开发者可以在编写程序的同时看到自己的应用在不同尺寸屏幕中的样子。Android Studio还提供了更多功能,可在构建Android应用程序时提高你的工作效率,例如:C ++和NDK支持。

Mockplus

Mockplus是一款Android原型设计工具。快速原型设计是设计师与移动app软件需求方沟通的最好工具,我的理解就是在软件开发初期,先对所要开发的软件有一个大致的整体设计,毕竟现在的移动端多种多样,原型的重要性是降低开发成本,此阶段应该被充分利用,以避免后期因为不符合需求而改写大量代码。如果没有一个好的设计,很难做出一个比较优秀的软件,快速原型更有利于用户与开发人员的交互,使设计细致入微。

Android Device Monitor
Android Device Monitor是一个独立的调试监控服务工具,可为多个Android应用调试和分析工具提供UI。

APKAnalyser
这是一个静态、虚拟分析工具,你可以全面地概览应用的架构。可以用它来检查API参考文档,反编译字节码。APKAnalyser是一个完整的开源工具链,它支持修改应用的二进制代码,你可以重新打包、安装、运行以及验证logcat的结果。

总结
假如开始没有任何的开发经验的话,千万不要着急,不要想着在短时间内就把一个语言学习好,因为你之前没有任何的学习经验,在这个过程中需要有耐心地学习完JAVA的基础知识,然后才开始踏上Android开发之旅。有开发经验的,可以在Android上迅速上手,但是同样的是不可忽略Android的一些基础知识,只有把基础掌握好了,才能在后期取得大的进步。
————————————————

原文链接:https://blog.csdn.net/jongde1/article/details/80908094

Java第三方工具库/包汇总

一、科学计算或矩阵运算库

科学计算包

  • JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算结果的Java开源类库。它是Matlab、Octave、FreeMat、Scilab的一个克隆,但完全采用纯Java实现。
  • JSci:Java 科学对象(JSci)开放源代码项目是 Durham(英国 Durham)大学粒子理论中心的三年级研究生 Mark Hale 创立的。JSci 是一个包集合,包含数学和科学类。 使用 JSci,您既可以在 AWT 中也可以在 Swing 中创建简单的条形图、折线图和饼形图。 JSci.swing.JBarGraph 、 JSci.swing.JPieChart 和 JSci.swing.JLineGraph API 组件设计得也很好,这些组件和 AWT 绘图类都遵守 MVC 体系结构。
  • JScience:http://jscience.org/ JScience 是一个Java的科学计算包
  • jLab:jLab是数值计算的Java执行环境。该jLab环境的目的是提供一个基于Matlab / Scilab喜欢的科学计算平台所支持的脚本引擎执行的Java语言。 The current jLab
  • ND4J:在JVM上实现快速的科学计算;ND4J是一个开源的数值计算扩展 ,它将 Python中著名的 numpy 库的很多特性带到了Java中。ND4J可以用来存储和处理大型多维矩阵。它的计算和处理速度很快,但占用的内存却很少,程序员们可以很容易地使用它来与其他JAVA或Scala库作接口。https://github.com/deeplearning4j/dl4j-examples
  • dl4j(DeepLearning4j): java下的一个机器学习开源项目
  • nd4j: dl4j使用的底层的算法库,实现的几乎所有的矩阵相关的操作
  • Shared Scientific Toolbox:共享科学工具箱是一个用于科学和分布式计算的Java类库。它具有广泛的多方面的阵列线性代数和FFT支持;异步,高性能的网络层和诠释抽象类载入中,记录和消息传递。
  • Colt Matrix Libary:Colt Project 提供了一组开源的高性能的科学和数学计算的 Java库,Colt是一个高性能的数学库,由以下几个子库构成:基本的动态数组、稀疏矩阵、线性代数。
  • Jet库:数理统计、直方图。
  • CoreJava库:类printf的打印函数,并行计算。
  • PETSC:PETSc(Portable, Extensible Toolkit for Scientific Computation) ,读作Pet-see,是美国能源部ODE2000支持开发的20多个ACTS工具箱之一,由Argonne国家实验室开发的可移植可扩展科学计算工具箱,主要用于在分布式存储环境高效求解偏微分方程组及相关问题。PETSc所有消息传递通信均采用MPI标准实现。线性方程组求解器是PETSc的核心组件之一,PETSc几乎提供了所有求解线性方程组的高效求解器,既有串行求解也有并行求解,既有直接法求解也有迭代法求解。
  • Catalano:Catalano Framework 是一个 Java 和 Android 的科学计算框架。 主要计算功能: 图像处理 模糊逻辑 数学计算 统计 机器学习 神经网络

矩阵运算包:

  • EJML:Java矩阵操作库 Efficient Java Matrix Library (EJML)这是一个比较高效率的Java矩阵运算库,提供比较全面地计算。 但是和C++的矩阵运算还是不能比。
  • Jama:Jama是一个基本的线性代数java包。包括一个基本的Matrix类和5个矩阵分解类。Matrix类提供了基本的线性代数数值运算的功能,https://www.cnblogs.com/zangbo/p/5622351.html
  • UJMP (Universal Java Matrix Package)** 统一Java矩阵工具包是一个提供各种矩阵运算的Java类库。这个工具包提供了诸如稀疏矩阵和稠密矩阵的实现,以及矩阵的分解、求逆、加法、乘法,均值,方差和相关系数等运算功能. 此外还提供一些常用的线性代数运算功能,矩阵可视化功能和矩阵数据导入与导出的功能。
  • jlbas: 矩阵向量运算库jblas,http://blog.csdn.net/golden1314521/article/details/45484529,jblas is a fast linear algebra library for Java. jblas is based on BLAS and LAPACK, the de-facto industry standard for matrix computations, and uses state-of-the-art implementations like ATLAS for all its computational routines, making jBLAS very fast.
    主页地址:http://jblas.org/
    该库的API文档地址:http://jblas.org/javadoc/index.html
    相关例子和库文件jar包下载 http://download.csdn.net/detail/u012176591/8660849
    在Java工程中我们只要 引入jar包文件就可以了。

二、图形绘制+图像处理包:

  • ***java的Graphics类:Java中绘制基本图形,可以使用Java类库中的Graphics类,此类位于java.awt包中。在我们自己的java程序文件中,要使用Graphics类就需要使用import java.awt.Graphics语句将Graphics类导入进来。
    Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等。本项目仅用到画直线的功能,其它图形绘制请自行点击查阅Java API。
    Graphics类的drawLine()方法:drawLine(int x1,int y1,int x2,int y2)
  • Oracle提供的 Java Advanced Imaging (JAI) 库处理2D图像还可以的。
  • ***Java Image Filters【Java Image Filters 是由 Jhlabs 开发的一组用来处理 Java 图像的类库,提供各种常用的图像处理效果,例如反转色、扭曲、水波纹、凹凸、黑白效果等等数十种效果,如下图所示,更多的效果请看其网站首页】http://www.oschina.net/p/javaimagefilters
  • **ImageJ:一个Java的图像处理和分析库,ImageJ是一个基于java的公共的图像处理软件,它是由National Institutes of Health开发的。可运行于Microsoft Windows,Mac OS,Mac OS X,Linux,和Sharp Zaurus PDA等多种平台。其基于java的特点, 使得它编写的程序能以applet等方式分发。
    ImageJ能够显示,编辑,分析,处理,保存,打印8位,16位,32位的图片, 支持TIFF, PNG, GIF, JPEG, BMP, DICOM, FITS等多种格式。ImageJ支持图像栈功能,即在一个窗口里以多线程的形式层叠多个图像, 并行处理。只要内存允许,ImageJ能打开任意多的图像进行处理。除了基本的图像操作, 比如缩放,旋转, 扭曲, 平滑处理外,ImageJ还能进行图片的区域和像素统计, 间距,角度计算, 能创建柱状图和剖面图,进行傅里叶变换。
    ImageJ是一个开放结构的软件, 支持用户自定义插件和宏。ImageJ自带编辑器, 并且导入了java的编译器,实现了简单的IDE功能, 用户可直接基于ImageJ进行图像处理
  • ***Sanselan:Sanselan 是一个纯 Java 的图形库,可以读写各种格式的图像文件,包括快速解析图片信息例如大小/颜色/icc以及元数据等。尽管因为是Java开发的,在处理速度上会稍微慢一 些,但具备良好的可移植性。http://www.oschina.net/p/sanselan
  • JJIL 是一个Java 的图像处理类库,有超过60个的图像处理任务,例如可以用来识别条形码之类。JJIL 主要面向J2ME 手机应用开发
  • ***Imagero 是 Java 的图像处理库,支持的图像类型包括:BMP, GIF, TIFF, PNG, JNG, MNG, JPEG (including CMYK and 12-bit grey), PSD, PBM, PGM, PPM, TGA, EPS, EPSI, EPSF, AI, PDF, MRW, CRW, NEF, DCR, and DNG。Imagero 可读取缩略图以及编辑图像元数据… 更多Imagero信息
  • 【商业】绘图库 DISLIN:DISLIN是一个高级别,易于使用的绘图库,支持曲线,条形图,饼图,三维彩色图,曲面,轮廓,和地图显示。支持多种输出格式,如X11的,VGA,PostScript , PDF格式,CGM, HPGL , TIFF和PNG等。绘图采用Perl解释语言 , 支持Python和Java,同时还支持大多数http://www.oschina.net/p/dislin
  • Thumbnailator 是一个用来生成图像缩略图的 Java 类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。
  • JAI-ImageIO:Java Advanced Imaging Image I/O Tools projects
  • ***Marvin: Java图像处理框架 Marvin 是一个Java开发的可扩展的图像处理框架,该框架主要提供以下几方面的功能: 基本图像操作; 从视频中捕获帧; 多线程的图像处理; 通过GUI界面集成插件; 插件性能分析; 通过插件进行功能扩展。 http://www.oschina.net/p/marvin
  • Java 图像处理框架 Processing: Processing 是一个为想要图像处理程序所提供的开源编程语言和环境,动画和互动。这是使用的学生,艺术家,设计师,研究人员和爱好者学习,原型及生产。这是建立基础教育计算机编程在视觉方面,并作为软件写生簿和专业的生产工具。http://www.oschina.net/p/processing
  • 图像处理标签库 JImageTaglib:JImageTaglib是个用来处理图片的的标签,在服务器中生成响应的处理图片,可以对图片进行过滤(如转灰度图,边缘查找等)另外还可以用来生成条形码。
  • Java图像处理库 jrawio:jrawio 是一个 Java Image I/O API 的服务提供者,用来处理数码相机拍摄的RAW格式的图片,包括NEF, CRW, CR2, PEF, SRF, MRW,这是一个纯 Java 的类库。
  • OpenCL的Java库 JavaCL: JavaCL 是一个封装了 OpenCL 图形API的 Java 类库,提供很多高级的图像处理功能。http://www.oschina.net/p/javacl
  • OpenCL库 JOCL:JOCL (Java OpenCL)提供一种简单的方式为OpenCL API添加Java binding。JOCL会提供两个级别:自动生成一个低级别的binding;还有一个需要人工编写的高级别的binding,提供一个方便的界面并将冗长降到最低。 特点: 高性能,跨平台高,http://www.oschina.net/p/jocl
  • 三维场景图开发类库 jReality: jReality是一个Java开源的三维场景图开发类库,设计用于数学领域的3D可视化。jReality是线程安全的,拥有一个灵活的着色模型基于场景图中的一种属性继承机制,独立于设备的用户交互并且支持真正的3D Audio(JACK)。http://www.oschina.net/p/jreality
  • ogre4j是一个可以在Java应用程序中能过JNI使用OGRE的开源项目。OGRE(Object-Oriented Graphics Rendering Engine):是一个被广泛使用的开源三维图形渲染库,成功地被应用于诸多三维仿真领域,其中包括网络游戏和一些商业的三维仿真项目)。
  • opencv: 计算机视觉和图像处理
  • //图像处理库:
    import java.awt.AlphaComposite;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.color.ColorSpace;
    import java.awt.geom.AffineTransform;
    import java.awt.image.AffineTransformOp;
    import java.awt.image.BufferedImage;
    import java.awt.image.ColorConvertOp;
    import java.awt.image.CropImageFilter;
    import java.awt.image.FilteredImageSource;
    import java.awt.image.ImageFilter;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
  • GIF动画制作工具 GiftedMotion
  • 二维的GUI框架 JHotDraw:JHotDraw是一个开源项目,它是一个二维的GUI框架,主要用于支持用Java开发的图形编辑器。它的设计中采用了许多著名的设计模式,因而具有良 好的框架、很好的复用性和扩展性。针对矢量图形软件开发过程中面临的各种难题,本文提出了基于JHotDraw的解决方案,实现…
  • 指纹识别开发包 SourceAFIS

三、 机器学习和深度学习库

3.1 机器学习库

  • ***opencv
  • ***TensorFlow: 一个是我们最喜欢的机器学习框架,被称作无与伦比的TensorFlow框架。 TensorFlow是一个使用数据流图进行数值计算的开源软件库,是GitHub上最受欢迎的机器学习项目,也是参与者和贡献者最多的机器学习项目。TensorFlow主要是用Python编写的,但它也支持Java和Go的一些用法。
  • ***Weka: http://www.cs.waikato.ac.nz/ml/weka/index.html 毫无疑问,Weka 是目前首选的 Java 机器学习库。完全基于 Java 环境,开源,免费,具有易于使用的图形界面,适合于数据挖掘,数据分析和预测建模等多种应用场景。Weka包括一系列的工具,如数据预处理、分类、回归、聚类、关联规则以及可视化。
  • ***ML:Java机器学习库ML官网:http://java-ml.sourceforge.net/,Java-ML是一个使用Java编写的一系列机器学习算法的Java API。它只提供了一个标准的算法接口。对于一个机器学习库来说,最基础就是数据处理能力,ml库给了dataset和instance两个类,dataset是矩阵,instance是行(可以理解是一个list,或一个double数组)。
    import net.sf.javaml.core.Dataset;
    import net.sf.javaml.core.DefaultDataset;
    import net.sf.javaml.core.DenseInstance;
    import net.sf.javaml.core.Instance;
    import net.sf.javaml.core.SparseInstance;
    import net.sf.javaml.tools.InstanceTools;
    import net.sf.javaml.tools.data.FileHandler;
  • **Massive Online Analysis(MOA)是一个面向数据流挖掘的流行开源框架,有着非常活跃的成长社区。它包括一系列的机器学习算法(分类、回归、聚类、异常检测、概念漂移检测和推荐系统)和评估工具。关联了WEKA项目,MOA也是用Java编写的,其扩展性更强。MOA 也是基于 Java 环境,开源,免费,在面对复杂问题时,MOA 还能和 Weka 协同工作。MOA 在运算效率和内存占用方面都做了特殊优化,通过提供易于扩展的底层结构、可复用的数据流分析设置以及一系列内部实现好机器学习算法,MOA 为实时数据流分析提供了一个非常优秀的基准框架,因此 在实时数据流挖掘领域的应用非常广泛 。其内部实现的机器学习算法包括:分类、回归、聚类、孤立点检测、概念漂移检测和推荐系统等。地址: http://moa.cms.waikato.ac.nz/
  • ***MALLET :地址: http://mallet.cs.umass.edu/ 主要由来自麻省大学(University of Massachusetts)的Andrew McCallum教授和其学生开发,是一个基于 Java 环境的开源机器学习工具包。主要应用于统计自然语言处理,文档分类,聚类,主题建模,信息提取等 文本类分析场景 。许多功能强大的工具,包括用于文档分类的高级工具,用于序列标记的工具,和用于主题建模的工具等。MALLET 还支持各种类型的算法,包括朴素贝叶斯,决策树和最大熵等。此外,MALLET 还提供了许多例程,包括分词,删除停用词,将文本转换为向量表示等。
  • MEKA项目提供了一个面向多标签学习和评价方法的开源实现。在多标签分类中,我们要预测每个输入实例的多个输出变量。这与“普通”情况下只涉及一个单一目标变量的情形不同。此外,MEKA基于WEKA的机器学习工具包。
  • Advanced Data mining And Machine learning System(ADAMS)是一种新型的柔性工作流引擎,旨在迅速建立并保持真实世界的复杂知识流,它是基于GPLv3发行的。
  • Environment for Developing KDD-Applications Supported by Index-Structure(ELKI)是一款基于Java的开源(AGPLv3)数据挖掘软件。ELKI主要集中于算法研究,重点研究聚类分析中的无监督方法和异常检测。
  • Mallet是一个基于Java的面向文本文件的机器学习工具包。Mallet支持分类算法,如最大熵、朴素贝叶斯和决策树分类。
  • Encog是一个先进的机器学习框架,集成了支持向量机(SVM)、人工神经网络、遗传算法、贝叶斯网络、隐马尔可夫模型(HMM)、遗传编程和遗传算法。Encog是一个先进的机器学习框架,集成了支持向量机(SVM)、人工神经网络、遗传算法、贝叶斯网络、隐马尔可夫模型(HMM)、遗传编程和遗传算法。
  • Mahout是一个内置算法的机器学习框架。Mahout-Samsara帮助人们创建他们自己的数学,并提供了一些现成的算法实现。
  • Rapid Miner是德国多特蒙特技术大学开发的。它为开发者开发应用程序提供了一个GUI(图形用户界面)和Java API。它还提供了一些机器学习算法,用来做数据处理、可视化以及建模。
  • Apache SAMOA是 一个机器学习(ML)框架,内嵌面向分布式流ML算法的编程抽象,并且允许在没有直接处理底层分布式流处理引擎(DSPEe,如 Apache Storm、Apache S4和Apache samza)复杂性的情况下,开发新的ML算法。用户可以开发分布式流ML算法,而且可以 在多个DSPEs上执行。
  • Neuroph通过提供支持创建、训练和保存神经网络的Java网络库和GUI工具,简化了神经网络开发。
  • Oryx 2是一个建立在Apache Spark和Apache Kafka的Lambda架构实现,但随着实时大规模机器学习而逐渐开始专业化。这是一个用于构建应用程序的框架,但也包括打包,以及面向协同过滤、分类、回归和聚类的端到端的应用程序。
  • Stanford Classifier是一个机器学习工具,它可以将数据项归置到一个类别。一个概率分类器,比如这个,它可以对一个数据项给出类分配的概率分布。该软件是最大熵分类器的一个Java实现。
  • JSAT是一个快速入门的机器学习库。该库是我在业余时间开发的,基于GPL3发行的。库中的一部分内容可自主学习,例如所有的代码都是独立的。JSAT没有外部依赖,而且是纯Java编写的。
  • Java Machine Learning Library(Java机器学习库)是一系列机器学习算法的相关实现。这些算法,无论是源代码还是文档,都编写的很出色。其主要语言是Java。
  • MLlib (Spark)是Apache Spark的可扩展机器学习库。虽然是Java,但该库与平台还支持Java,Scala和Python绑定。此库是最新的,并且算法很多。
  • H2O是用于智能应用的机器学习API。它在大数据上对统计学、机器学习和数学进行了规模化。H2O可扩展,开发者可以在核心部分使用简单的数学知识。
  • ELKI: https://elki-project.github.io/ Environment for Developing KDD-Applications Supported by Index-Structures,即 由索引结构支持的 KDD 应用开发环境 ,Environment for Developing KDD-Applications Supported by Index-Structures,即 由索引结构支持的 KDD 应用开发环境
  • Neo4j :Neo4j是一个世界领先的开源图形数据库。 它是由Neo技术使用Java语言完全开发的。图形数据库是以图形结构的形式存储数据的数据库。 它以节点,关系和属性的形式存储应用程序的数据。 正如RDBMS以表的“行,列”的形式存储数据,GDBMS以“图形”的形式存储数据。https://neo4j.com/ 教程:https://www.w3cschool.cn/neo4j/

3.2 深度学习库

  • Deeplearning4j:地址: https://deeplearning4j.org/,Deeplearning4j(Deep Learning For Java)是 Java 和 Scala 环境下的一个开源分布式的深度学习项目,由总部位于美国旧金山的商业智能和企业软件公司 Skymind 牵头开发,并得到了腾讯的投资。正如它的命名,Deeplearning4j 的运行需要 Java 虚拟机 JVM 的支持。
    Deeplearning4j 旨在为工作在 Hadoop 框架下的 Java、Scala 和 Clojure 程序员提供一个可以灵活 DIY 的机器学习工具。团队在官网表示,他们希望通过一些机器学习算法的开发,将商业带入智能化数据的时代。也正是为了实现这一理想,惠及更多的用户,因此选择了移植性更好的 Java 环境来实现这些算法。目前,Deeplearning4j 在模式识别、时间序列检测和基于语音、文本的情感识别方面应用广泛,包括谷歌、Facebook和微软等巨头公司都是它的用户。

3.3 大数据处理

1) BID Data Project –能够运行快速、大规模的机器学习和数据挖掘的模式集合
2) Apache Singa  Apache Singa由新加坡国立大学的团队开发,是一个灵活可扩展的利用大数据分析的深度学习平台。这个深度学习框架为大量数据的可扩展分布式培训提供了灵活架构。Singa可扩展以运行各种硬件,主要应用在图像识别和自然语言处理(NLP)方面。
3) Singa目前是一个Apache孵化器项目,提供了简单的编程模型,可以在一个节点集群上工作。分布式深度学习在训练过程中使用模型划分和并行化,一般而言,Singa支持传统的机器学习模型,如逻辑回归。Singa是用Java,C ++和Python编写的,可以在AWS上或通过Docker尝试使用。

3.4 Neuroph –面向对象的神经网络

neuroph是用来开发常用的神经网络构架的轻量级java框架。该框架提供了一个java库以及一个GUI工具(称为easyNeurons),你可以用它来在java项目中创建和训练自己的神经网络。
Neuroph包含一个开源的java类库和少量对应基本神经网络概念的基类。对于刚开始使用神经网络,或者想知道它们如何工作的人来说,Neuroph是个非常好的垫脚石。你可以尝试Neuroph的在线演示,看看它是怎么运行的。

四、数据挖掘和统计分析工具库

WEKA:WEKA是一个可用于数据挖掘任务的机器学习算法集合。该算法可以直接应用到数据集或从自己的Java代码调用。 WEKA包含数据预处理,分类,回归,聚类,关联规则,和可视化工具。它也非常适用于开发新的机器学习方案。
jmotif:时间序列、分类、数据挖掘开发库
java-ml:Java机器学习库,聚类、分类、特征选择
flanagan: 数学和统计java开发库,包含回归算法,一次二次线性非线性回归算法,数据平滑算法,傅里叶变换,数值积分,插值法。http://www.ee.ucl.ac.uk/~mflanaga/java/
Mahout:Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。经典算法包括聚类、分类、协同过滤、进化编程等等,并且,在 Mahout 的最近版本中还加入了对 Apache Hadoop 的支持,使这些算法可以更高效的运行在云计算环境中。
JMulTi:时间序列分析开发库
jfreechart:【可实现数据统计图】下载地址:http://download.csdn.net/detail/pzhtpf/4327700
jcommon:【可实现数据统计图】
gnujaxp:【可实现数据统计图】
http://blog.csdn.net/pzhtpf/article/details/7600100
以上第三方工具库汇总不完整,归类不一定正确,仅供参考。
————————————————
原文链接:https://blog.csdn.net/panrenlong/article/details/79246349