分类目录归档:编程

win10下配置NGINX+PHP+MYSQL

想在本地电脑配置一下PHP+MYSQL环境,在网上找了一些资料,大多数已经有点过时了,不一定能正常使用。记录一下自己的配置过程。

1.PHP

 1.1官方下载地址:

https://windows.php.net/download/

建议选择no-thread-safe版本,解压到D盘,得到路径,如:D:\php

 1.2配置

将php.ini-prodution重命名为php.ini(记得备份,以便有问题的时候还原),打开
查找 extension_dir,将;extension_dir = "ext"改为extension_dir = "D:\php\ext"
查找 cgi.fix_pathinfo,将;cgi.fix_pathinfo=1改为cgi.fix_pathinfo=1,也就是去掉前面的分号
查找 ;date.timezone = ,先去前面的分号再改为 date.timezone = Asia/Shanghai
查找 enable_dl = Off 改为 enable_dl = On
查找 ;cgi.force_redirect = 1 先去前面的分号再改为 cgi.force_redirect = 0
查找 ;fastcgi.impersonate = 1 去掉前面的分号
查找 ;cgi.rfc2616_headers = 0 先去前面的分号再改为 cgi.rfc2616_headers = 1
接下来启用扩展
查找extension,根据自身需要启用相关扩展,要使用mysql,必须启用extension=mysqli或者extension=pdo_mysql(去掉前面的分号就是启用)。
常用的还有bz2,curl,fileinfo,sockets等,没有启用的话运行一些PHP程序会出现相关错误提示。

2.NGINX

官方下载地址:http://nginx.org/en/download.html

建议下载stable version

解压到D盘,得到路径,如:D:\nginx

打开D:\nginx\conf\nginx.conf (NGINX的配置文件)

找到location /,并按注释说明作相应修改:

location / {
    root   html;#这是默认网站目录,可以修改为E:\wwwroot,就是将网站根目录改到E盘的wwwroot文件夹
    index  index.html index.htm; #默认索引首页,加入index.php default.php
}

完成后代码:

location / {
    root   E:\wwwroot;
    index  index.html index.htm default.html default.htm index.php default.php;
}

查找location ~ \.php$,去掉整段代码前面的注释号:#,将相应内容修改为:

location ~ \.php$ {
    root           E:\wwwroot;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

保存。

3.mysql

最新版,MySQL Community Server 8.0.20

3.1下载地址:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-winx64.zip

解压到D盘,得到路径:D:\mysql

在D:\mysql目录下新建mysql配置文件,mysql.ini,将如下内容粘贴进去:

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
#设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir=D:\mysql
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
innodb_file_per_table = 1
#等待超时时间
wait_timeout=172800
#交互式连接超时时间
interactive-timeout=172800

3.2安装,开始菜单–>系统–>命令提示符–>以管理员身份运行,如图所示,依次输入命令:

mysqld -install命令执行后,提示:Service successfully installed,表示安装成功。

PS:在windows 的cmd下安装mysql时,在mysql的bin目录下面执行: mysqld --install
出现报错信息如下:Install/Remove of the Service Denied

解决办法:
打开cmd.exe程序的时候选择“用管理员身份打开”。

我在安装的时候报错,提示缺少msvcp140_1.dll,下载一个(在文后提供的RunHiddenConsole.rar压缩包里已经附带)复制至windows/system32目录,按快捷键WIN+R,运行regsvr32 vcruntime140_1.dll注册即可。也可至微软官方下载系统对应版本安装。地址:https://support.microsoft.com/zh-cn/help/2977003/the-latest-supported-visual-c-downloads

3.3初始化,同样在命令提示符窗口,输入mysqld –initialize –console命令初始化,会生成一个初始root密码及在mysql安装目录生成数据库文件data目录,记录下来该密码,如图所示:

3.4启动mysql服务,输入net start mysql命令,如图:

PS:如果出现提示发生系统错误 5 拒绝访问,试着重新用管理员身份启动cmd操作试试

3.5修改root初始密码

输入mysql -uroot -p,然后输入前面记录的初始密码登录mysql

登录成功后即进入了mysql的命令行模式,输入命令:

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

123456为新的root密码,命令执行成功后exit退出。mysql安装配置完成。

4 添加拓展

我需要用到redis,故添加redis拓展,别的拓展可以以此类推

PHP 扩展库通常称为“php_*.dll”(其中星号代表具体某扩展的名字),位于“PHP\ext”目录下。

PHP 发行包中包括了大多数开发者最常用到的扩展库。这些被称为“核心”扩展库。

不过呢,如果用户所需要的功能并没有被任何核心扩展提供,那还是有可能在 PECL 中找到。PHP Extension Community Library(PECL,PHP 扩展社区库)是个 PHP 扩展的储存室,提供了对于所有已知扩展的下载及开发途径的指南。

到PECL上下载redis对应的no-thread-safe版本(如果安装的是thread-safe要选择对应的拓展):https://pecl.php.net/package/redis/5.3.1/windows

解压后,将dll文件复制到ext文件夹下,在php.ini中添加extension=redis,重启php服务,使用phpinfo(),可看到redis模块信息。

参考:

安装mysql Install/Remove of the Service Denied!错误的解决办法
win10下配置NGINX+PHP+MYSQL
thread-safety PHP & no thread-safety PHP 版本选择
在 Windows 上安装 PHP 扩展
Windows下安装phpRedis扩展
win10解决Mysql net start mysql启动,提示发生系统错误 5 拒绝访问
windows下搭建nginx+php开发环境

windows下npm安装vue

参考文章:https://www.cnblogs.com/liluxiang/p/9592003.html

使用之前,我们先来掌握3个东西是用来干什么的。

· npm: Nodejs下的包管理器。

· webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的合并和打包。

· vue-cli: 用户生成Vue工程模板。(帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装)

开始:

如图,下载8.9.3 LTS (推荐给绝大部分用户使用)

双击安装

可以使用默认路径,本例子中自行修改为d:\nodejs

一路点Next

点Finish完成

打开CMD,检查是否正常

再看看另外2个目录,npm的本地仓库跑在系统盘c盘的用户目录了(没见到npm-cache是因为没有用过,一使用缓存目录就生成了),我们试图把这2个目录移动回到D:\nodejs

先如下图建立2个目录

然后运行以下2条命令

npm config set prefix “D:\nodejs\node_global”
npm config set cache “D:\nodejs\node_cache”

如上图,我们再来关注一下npm的本地仓库,输入命令npm list -global

输入命令npm config set registry=http://registry.npm.taobao.org 配置镜像站

输入命令npm config list 显示所有配置信息,我们关注一个配置文件

C:\Users\Administrator\.npmrc

使用文本编辑器编辑它,可以看到刚才的配置信息

检查一下镜像站行不行命令1

npm config get registry

检查一下镜像站行不行命令2

Npm info vue 看看能否获得vue的信息

注意,此时,默认的模块D:\nodejs\node_modules 目录

将会改变为D:\nodejs\node_global\node_modules 目录,

如果直接运行npm install等命令会报错的。

我们需要做1件事情:

1、增加环境变量NODE_PATH 内容是:D:\nodejs\node_global\node_modules

(注意,一下操作需要重新打开CMD让上面的环境变量生效)

一、测试NPM安装vue.js

命令:npm install vue -g

这里的-g是指安装到global全局目录去

二、测试NPM安装vue-router

命令:npm install vue-router -g

运行npm install vue-cli -g安装vue脚手架

编辑环境编辑path

对path环境变量添加D:\nodejs\node_global

win10以下版本的,横向显示PATH的,注意添加到最后时,不要有分号【;】

重新打开CMD,并且测试vue是否使用正常

注意,vue-cli工具是内置了模板包括 webpack 和 webpack-simple,前者是比较复杂专业的项目,

他的配置并不全放在根目录下的 webpack.config.js 中。

初始化,安装依赖

运行npm install安装依赖

npm run dev

成功界面,提示打开地址http://localhost:8080

自动打开浏览器http://localhost:8080/#/

npm run build

生成静态文件,打开dist文件夹下新生成的index.html文件

nmp下新建出来的vue01的目录描述:

懂的越多,不会的也就越多,知识之路是不断进取的

安卓开发环境的搭建: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 常见错误分析
运行第一个安卓应用

HTML学习笔记

DOM

DOM - Document Object Model
This model can be described as a tree structure:
                      Document
                         |
                Root element:<html>
                         |
             ————————————————————————
            |                        |
   Element:<head>              Element:<body>
            |                        |
            |               ———————————————————
   Element:<title>         |                   |
            |          Element:<a>         Element:<h1>
            |       Attribute: "href"          |
            |              |                   |
   Text:"my title"   Text:"my link"       Text:"my header"

DOM是W3C(万维网联盟)的标准,它定义了访问HTML和XML文档的标准:W3C-DOM是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。
W3C-DOM分成3个不同的部分:
· 核心DOM:针对任何结构文档的标准模型
· XML DOM:针对XML文档的标准模型
· HTML DOM:针对HTML文档的标准模型

这里对HTML DOM进行详述
关于HTML DOM,它是:
· HTML的标准对象模型
· HTML的标准编程接口
· W3C标准

HTML DOM定义了所有HTML元素的对象和属性,以及访问它们的方法。

在HTML DOM中,所有事物都是节点(Node)。DOM是视为节点树的HTML。
· 整个文档是一个文档节点
· 每个HTML元素是元素节点
· HTML元素内的文本是文本节点
· 每个HTML属性是属性节点
· 注释是注释节点

关于节点的图述

HTML DOM方法和属性
HTML DOM方法是我们可以在节点上执行的动作。
HTML DOM属性是我们可以在节点设置和修改的值。

可通过JavaScript(或其他编程语言)对HTML DOM进行访问。
所有HTML元素被定义为对象,而编程接口则是对象的方法和属性。
方法是能执行的动作。属性是能够获取或设置的值。

如,一些常用的HTML DOM方法:
· getElementById
· appendChild
· removeChild
· getElementsByTagName
· getElementsByClassName
· replaceChild
· insertBefore
· createAttribute
· createTextNode
· getAttribute
· setAttribute

一些常用的HTML DOM属性:
· innerHTML – 获取元素内容
· parentNode
· childNode
· attributes

nodeName属性规定节点的名称↓↓

  • nodeName只读
  • 元素节点的nodeName与标签名相同
  • 属性节点的nodeName与属性名相同
  • 文本节点的nodeName始终是#text
  • 文档节点的nodeName始终是#document
  • nodeName始终包含HTML元素的大写字母标签名

nodeValue属性规定节点的值↓↓

  • 元素节点的nodeValue是undefined或null
  • 文本节点的nodeValue是文本本身
  • 属性节点的nodeValue是属性值

nodeValue属性规定节点的值↓↓

  • 元素节点的nodeValue是undefined或null
  • 文本节点的nodeValue是文本本身
  • 属性节点的nodeValue是属性值
<p id="intro">Hello World!</p>
<script>
x=document.getElementById("intro");
document.write(x.firstChild.nodeValue);
</script>

nodeType属性:返回节点的类型,nodeType是只读的。
比较重要的节点类型有:
元素类型 NodeType
元素 1
属性 2
文本 3
注释 8
文档 9

访问HTML元素等同于访问节点,可通过不同方式来访问HTML元素:

  • getElementById()
  • getElementsByTagName():返回节点列表,为一个节点数组,如:
    var x = document.getElementsByTagName(“p”);
    可以通过下标访问节点,如访问第二个:y=x[1],x.length为节点列表长度,返回的根节点不含样式,子节点包含所有的样式
  • getElementsByClassName()

HTML DOM的修改=改变元素、属性、样式和事件

  • 增删HTML元素
    创建:追加到已有元素上
    <div id="div1">
    <p id="p1">这是一个段落</p>
    <p id="p2">这是第二段落</p>
    </div>
    <script>
    var para = document.createElement("p");
    var node = document.createTextNode("这是个新段落");
    para.appendChild(node);
    var ele = document.getElementById("div1");
    ele.appendChild(para);
    </script>

    appenChild()是讲元素作为父元素的最后一个子元素进行添加,用insertBefore()插在元素前
    删除:removeChild()
    替换:replaceChild()
  • 改变HTML内容:最简单的方法是使用innerHTML属性
    (除了innerHTML,还可用childNodes和nodeValue属性获取元素内容,详见参考手册)
    <p id="p1">Hey</p>
    <script>
    document.getElementById("p1").innerHTML = "新内容在这";
    </script>
  • 改变CSS样式
    <p id="p1">hey</p>
    <p id="p2">world</p>
    <script>
    document.getElementById("p2").style.color = "blue";
    document.getElementById("p2").style.fontFamily = "Arial";
    document.getElementById("p2").style.fontSize = "larger";
    </script>
  • 改变HTML元素的属性
  • 改变事件
    HTML DOM允许在事件发生时执行代码
    当HTML元素“有事情发生”时,浏览器会生成事件:
    ~在元素上点击
    ~加载页面
    ~改变输入字段
    e.g. <input type="button" onclick="document.body.style.backgroundColor = 'lavender';" value="修改背景颜色" />

也可以:
<script>
function changeBg()
{
document.body.style.backgroundColor="lavender";
}
</script>

<input type="button" onclick="changeBg()" value="修改背景色" />

HTML DOM允许JavaScript对HTML事件做出反应,当事件发生时,可以执行JavaScript,如用户点击某个元素时执行代码,则把JS代码添加到HTML事件属性中:onclick=JavaScript
HTML事件例子:
~用户点击鼠标时
~网页已加载
~图片已加载
~鼠标移动到元素上
~输入字段被改变
~HTML表单被提交时
~用户触发按键时

以下两个方式等效:
a) <button onclick="displayDate()">点我</button>
b) document.getElementById("myBtn").onclick = function(){dispalyDate()};

onload,onunload,onchange
用户进入或离开页面时,会触发onload和onunload事件
onload事件可用于检查方可的浏览器类型和版本,以便基于这些信息来加载不同版本的网页。
onload和onunload事件都可用于处理cookies
onchange事件常用于输入字段的验证,如:
<input type="text" id="fname" onchange="upperCase()" />

HTML DOM 事件对象参考手册:
https://www.w3school.com.cn/jsref/index.asp
https://www.runoob.com/jsref/jsref-tutorial.html

DOM根节点的两个特殊属性可以访问全部文档
~ document.documentElement 全部文档
~ document.body 文档主体

Vue.js学习笔记

体积:33k
虚拟dom,更高的运行效率
双向数据绑定
生态丰富,基于vue.js的ui框架、常用组件
使用场景广泛

安装与部署
1、<script>引用
<script src="https://cdn.jsdelivr.net/npm/" />
2、CLI命令行工具使用,npm
3、CDN

创建第一个vue应用
视图+脚本
视图:<div id="app">
{{mes}}
</div>

脚本:
<script type="text/javascript">
var app = new Vue({
el: '#app',
data:{
mes: 'hello vue!'
}
});
</script>

数据与方法
每个Vue应用是通过Vue函数创建新的Vue实例开始的
var vm = new Vue({});

<div id = "app">
{{a}} {{b}}
</div>
<script type="text/javascript">
var data = { a: 1 };
var vm = new Vue({
el : "#app",
data : data
});
data.a = 2;
</script>

Vue实例使用$区分方法和属性
e.g.
vm.data
vm.$watch —>方法list

生命周期
学习->API->生命周期钩子
生命周期函数不能使用箭头函数,箭头函数没有this
beforeCreate
created
beforeMount:相关的渲染函数首次被调用
mount ed:el创建成功
beforeUpdate:数据更新前
updated:数据更新完成
errorCaptured
activated, destroyed

模板语法
Vue.js使用用了基于HTML的模板语法,所有Vue.js的模板都是合法的HTML,能被遵循规范的浏览器和解析器解析。

文本:{{}}进行数据绑定
v-once,进行一次性插值

原始HTML,v-html标签可以使用html代码,v-bind绑定属性
<div id = "app">
<p v-html="rawHtml"></p>
<div v-bind:class="color">test…</div>
<p>{{number + 1}}</p>
<p>{{ ok? 'YES' : 'NO' }} </p>
<p>{{ mes.split('').reverse().join(' ') }} </p>
</div>

<script type="text/javascript">
var vm = new Vue({
el: "#app",
data:{
msg: "hey",
rawHtml: '<span style="color:red">this is should be red</span>',
color: 'red1',
number: 9 ,
ok : 1
}
});
<style type="text/css">
.red1{color: red;}
.blue1{color:blue: font-size:100px;}
</style>

指令
v-前缀的特殊属性
v-if=”seen”
参数,一些指令能接受参数
修饰符,用.指明 <div @click="click1">
<div @click.stop="click2">click here</div>
</div>

class与style绑定
v-bind:class="[ isActive ? 'active' : '', isGreen ? 'green' : '']"
v-bind:class="{active : isActive, green : isGreen}"

样式绑定图示

在中括号里可以使用条件表达式
{}只能是json数组

条件渲染
v-if v-else-if v-else:条件改变少适用
v-show:始终渲染,常切换适用

数组渲染
v-for item in items

数组渲染逻辑

事件绑定:v-on
<button v-on:事件名:”方法名(参数,…,$event)”>
事件名:不同元素拥有各自的事件,如click,dblclick
$event 是原始DOM事件 常用事件修饰符:stop,prevent,passive,capture,self,once 表单输入绑定

v-model 在input,textarea,select上进行数据双向绑定

vue的组件应用:全局组件注册

component的局部注册,是在实例中添加component部分,并注册其名称,如下示范:

<div id="app">
<button-counter></button-counter>
<test></test>
</div>
<script type="text/javascript">
Vue.component('button-counter', {
        props: ['title'],
        data: function () {
                return {}
        },
        template: '<div><h1>hi…</h1></div>',
        methods:{
        }
})
var vm = new Vue({
        el : "#app",
        data : {
        },
        methods:{
        clicknow : function (e) {
                console.log(e);
                }
        },
components:{
        test : {
                template:"<h2>h2…</h2>"
                }
       }
});
</script>

实际应用中很少如上这样局部注册,更多的是通过类似java那样的单文件注册来完成的:

import ComponentA from './ComponentA' 
import ComponentC from './ComponentC' 

export default { 
    components: { ComponentA, ComponentC }, // ... 
}

单文件注册需要进行环境配置:

· 安装 npm

npm 全称为 Node Package Manager,是一个基于Node.js的包管理器,也是整个Node.js社区最流行、支持的第三方模块最多的包管理器。

npm -v

· 由于网络原因 安装 cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

· 安装 vue-cli

cnpm install -g @vue/cli

· 安装 webpack

webpackJavaScript 打包器(module bundler)

cnpm install -g webpack

参考:Vue.js视频教程
Dcloud
Vue.js文字教程
Vue.js API

小米的usb调试在哪里 如何开启USB调试模式

  1. 首先在手机上找到“设置”图标,点击后进入小米手机的设置页面。小米Miui9的usb调试在哪里 如何开启USB调试模式
  2. 在打开的小米设置页面中,点击“我的设备”菜单项。小米Miui9的usb调试在哪里 如何开启USB调试模式
  3. 在打开的我的设备页面中,点击“全部参数”菜单项。小米Miui9的usb调试在哪里 如何开启USB调试模式
  4. 这时会打开全部参数页面,连接点击七次“Miui版本”菜单项,这样就可以开启手机的开发者选项功能。
    小米Miui9的usb调试在哪里 如何开启USB调试模式
  5. 回到小米手机的设置页面,然后点击“更多设置”菜单项。小米Miui9的usb调试在哪里 如何开启USB调试模式
  6. 在打开的更多设置页面中,点击“开发者选项”菜单项。小米Miui9的usb调试在哪里 如何开启USB调试模式
  7. 在打开的开发者选项窗口中,点击“USB调试”菜单项。小米Miui9的usb调试在哪里 如何开启USB调试模式
  8. 这时就会弹出“是否允许USB调试”窗口,点击“确定”按钮,这样就开启了USB的调试模式。

参考:https://jingyan.baidu.com/article/425e69e602008cbe15fc161b.html

史上最全的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