{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

怎么样才能学好java编程?

MockingBirdMockingBird 回答0 收藏1
收藏问题

10条回答

nidaye

nidaye

回答于2022-06-28 15:10

不扯那些虚的,要来就来实质性的干货。

明确自己学习的原因

  • 问问自己是抱着什么目的要学习Java,没有目标的学习是效率极低的,并且容易半途而废;

  • 了解Java可以做什么,Java可以从事的岗位以及软件行业的发展情况;

  • 自己是否对Java方向感兴趣;

Java基础

学习准备

  • 推荐看视频入门,可以通过某宝以及某鱼购买相关的视频,别挑三拣四,选中一个视频看完再说,对于初学者,无论选哪一个都是值得你学习的。可以选择传智、黑马、尚学堂等教学视频,买一个系列的即可;

  • 有人说编辑器等IDE环境不适合看视频,浪费时间,但是初学者在学习第一个编程IDE时,推荐看视频或者通过搜索引擎了解工具的使用,看书其实在刚开始可能更浪费时间;

  • 看完基础视频对知识有个大概的了解,这时候看书就不会一头雾水,此时可以通过看书来深入学习,之后的学习可以自己选择看书还是看视频,最好的方法是花时间既看视频也看书;

  • 学着学着忘掉前面的别总想着回头记住,先往后学,有些基础知识暂时用不上,当你学到应用的知识时自然会慢慢理解;

书籍推荐

入门书籍:《Head First Java》、《Java 核心技术》

进阶书籍:《Java编程思想》


Java Web

学习完Java基础,接着适合学习Java Web,这个推荐看视频,学习数据库和JDBC基础知识以及基本的前端知识,然后学习SSM框架,学习路线为:

Mysql -> JDBC -> HTML、CSS、JavaScript、JSP -> Spring -> SpringMVC -> Mybatis -> SSM整合 -> SSM项目实战

推荐两本书:

《深入分析 java web 技术内幕》

《架构探险-从零开始写java web框架》:讲解 ioc、aop 通俗易懂,实现 ioc、aop


实战之后返回深入学习 Java 相关知识,自顶向下学习,通过大概学习基础,实战之后返回深入学习基础知识,由广至深。


并发编程

推荐书籍:

《Java并发编程的艺术》


设计模式

《Head First 设计模式》


JVM

《深入理解 Java 虚拟机》


要想超越别人,不仅仅要掌握实战技能,更重要的是基础扎实


算法

《算法》第4版


计算机网络

《图解TCP/IP》

《图解HTTP》


操作系统

《操作系统概念》(恐龙书)


这么多已经够你学习了,主要是行动起来,还有更深入的,比如数据库方面以及Java相关的方面,等你学完以上知识相信你自己已经知道需要学习什么了,不要一次被这么多内容吓到,只要静下心来,下一个大神就是你。


附上一张可供参考的详细思维导图

评论0 赞同0
  •  加载中...
icattlecoder

icattlecoder

回答于2022-06-28 15:10

我是17年某工科非计算机本科毕业的,坐标某二线城市,大四的时候找了某个中型企业做了一年的打杂工作。平时的工作就是负责到流水线上检验产品之类的,在办公室写写文档。薪资不高,但福利还算不错,五险一金交的基数是同城市最高的。

曾经有在五个月的时间里面,我一直都处在一个很焦虑的状态,所谓的焦虑就是钱少,上升空间也没有。每天拿着一点微薄的薪水勉强度日。上班忙于上班,下班了便躺在床上什么都不做,玩玩手机上上网。我一直在思考,这辈子是否会这么平庸的活下去,以我目前的薪资这辈子也不可能在这个城市里买房,我又不想回老家。那里已经没有我的圈子了,所以我必须思考着其它出路。那时候的我每天都很焦虑,活了这么久,却什么也没干,什么事情都是在拖延。我想我以后的生活可以按照自己的想法而活。

俗话说,鹌鹑要吃红樱桃,光想是没有用的。每一个疲惫生活里的英雄梦想都是从一个小的开始。

大概在三月份的时候,我向公司递交了辞职申请。主管和老板一直在挽留我,花了将近一个月的时间在给我做思想工作,给我描绘了大好的蓝图。不过我还是遵从了内心的指示。

很早就想做软件了,不仅仅是现在软件行业一直保持着快速健康发展的趋势,还有收入平均的增速。像我们这样非科班出身,如果想走软件这条路,大多数的方法就是先进入一家培训公司学习。我有好多同学在当初毕业的时候或者在大四的时候,都是这么选择的。从事的方向也很多,什么嵌入式,安卓、Ios、游戏什么的。不过据我所知,有的只是在学习课程结束后找了一个测试的工作。我也上网查了很多培训机构,琳琅满目,不过价格来说都是一个贵字。有些风评也不好,未必适合我。总之,最后根据自己的兴趣,决定从Java入手。因为岗位多啊!同志们。

下面就是我自己学习的一些心得和过程。

先确定学习的方向,因为我想从事Web开发,也就是说。我需要知道这门体系的一个学习路线图

20180216103838768.jpg

JavaSE

关于这方面的知识,网上有很多资源。一些培训机构的视频也可以下载下来看。我在这方面选择的是看书学习。先找了一本Java2实用教程(第五版),这里我不推荐一上来就看什么Java编程思想,核心技术这样的书。对我这种新人来说,里面的内容太苦难了。先把语法看懂,写一写书上的小例子,知道Java是怎么一回事就行。

等回过头来,再去翻翻Java编程思想会容易理解很多。当然,余下的时间我推荐你最好看看计算机内部底层是怎么一回事,不需要精通,只需明白是怎么回事就可以了。

学SE的过程中,可以有那些不懂的地方,可以看看那一部分视频。结合起来才能有效率。GUI可以不学,多线程也可以先了解。因为多线程不是你看书一时半会就能明白的,需要大量的实战。

数据库

关于数据库方面的知识也是必学的,这里我推荐某传刘道成的 MySQL 视频教程。一定要结合JavaSE写一些JDBC的操作。学习一下事务的特性,因为这个面试会问。我在好几家面试面试官都会问你JDBC驱动加载过程,事务是什么,有什么特性。

以上两方面的内容,假设在你每天学8小时的情况下,一个月就可以学完了。我觉得你应该是可以做一些小的软件了。比如聊天室(涉及Socket内容)、飞机大战等等。

JavaWeb

来说说这方面的知识怎么学,HTML、CSS、Javascript、Jquerry、Ajax肯定是必不可少的。企业开发必须要懂这些,没有捷径。

其次是Jsp、Servlet。Jsp其实底层就是Servlet,所以你一定要把Servlet学好。API你一定要会用。到时候面试问你Servlet的知识你一定要能答得上来。这方面的知识只能找视频学习,对于不是科班出身的人不推荐看书。我一开始也不知道怎么开始,在网上找了很多方法,遇到不懂的就百度查资料。一定要尝试,多写。俗话说万事开头难。

接下来就是框架了,现在企业流行SSM框架。所以我只学了这三个、Spring、SpringMVC、Mybatis。学完框架之后我想你可以开始试着做一个Web项目了。这部分网上的资源也很多。可以跟着做。遇到不明白的或者代码有报错可以求助网友,毕竟网友是很强大的。

此时,我想你已经具备了可以去实习了,仅仅是实习,因为现在的你才刚刚开始,还有更多的技术需要你去不断的学习。我就是因为觉得人生是不能停止学习的,才毅然辞职,选择从事软件的行业。

心路历程

整个学习的过程很痛苦,那种痛苦虽然比不上考研。我在图书馆,通宵熬夜没命的看书。每天回到出租屋里就会觉得空虚,迷茫。第二天起来又去图书馆。看到之前从事这方面的同学一个个都加薪了,心里面不是滋味。历时三个多月都是这种状态。找工作的时候更加如此,不断的撞南墙。回家查面试遇到不会的问题,其实选择公司面试的题目大部分都是差不多的。只要你虚心一点,和面试官多聊聊,我相信你会找到第一份软件开发的工作。

找工作部分

首先是简历,因为我没有这方面的经验和经历。简历一定要写的真诚,说明自己的清空。写明自己的教育背景,如果你的外语能力比较强,这也是比较加分的。然后就是Java的一些技能,千万不要写精通什么什么,被面试官问到深一点的你答不上来,那么印象分会大打折扣。如果你在学校有获得什么证书最好也写上。多投投一些要求低的。面试多了,你也就大概知道什么套路了。找工作的一个月时间里,我收到了四个offer,虽然不多。但是我很开心。最终选择了一家薪资,发展空间,平台也好的一家公司。对方很看重我的毅力,给了我4.5K的工资。虽然不多,但这才是开始!目前我已经在这家公司入职了,氛围很好,老人愿意带我,真的很幸运!

屏幕前的你,一定要相信自己,可以完成你想象中的事情!

评论0 赞同0
  •  加载中...
levinit

levinit

回答于2022-06-28 15:10

说道JAVA,本人也是有很深的体悟和感慨,本人也是从程序员开始,然后一直到现在从事产品工作,经历了挺多,也获得了挺多,好了不跑题了,在这里分享一下一些个人的体悟.


JAVA其实说白了就是一门开发语言,但是实际在社会上,利用JAVA这个开发的语言衍生出了非常多的工种和内容,比如Android的开发,JAVA后台的开发(Struts2,Spring,Hibernate,MyBatis等等框架)

假若你想想要走前端Android工程师路线,个人建议的学习路径:

JAVA语言学习(开发环境搭建,基本语法,面向对象,集合框架,泛型,等等等等,可购买书籍或网上下载视频) --> 数据库基础学习(可以专门学习Mysql等知识,网上有教程视频免费下载) --> Android基础学习(Android开发环境搭建,空间的学习,xml-Layout学习) --> 实战学习(自己摸索开发一款软件).

JAVA-WEB开发工程师路线,个人建议学习路径:

JAVA语言学习-->数据库学习(可重点学习Oracle)-->JAVAWeb基础学习(JDBC,HTML,CSS,TOmcat服务器,Ajax等等)-->JAVAWeb高级学习(Struts2,Spring,SpringMVC,SCM,Log4j等等框架内容)-->JAVAEE实战做项目

个人认为最好和快速的学习路径

其实就个人的建议,假若在时间的允许下,想要学习好JAVA并可以快速入门形成自有的竞争力,建议还是去一些培训机构学习. 相对与个人独自学习,培训机构有以下几点优势的:

  1. 更系统学习知识,有专门的老师教学
  2. 获得更多了未来志同道合的人员,并且可以在以后生涯中,可以共同共享非常多的知识.(这块在后期来说非常重要).
  3. 可以在更短的时间里,入门并形成能力.

当然假若去培训机构,也会有弊端:

  1. 需要花费一大笔钱,预计现在培训应该需要1~2w元左右
  2. 假若是脱产学习的方式,一般需要花费4个半月时间脱产学习,假若是社会人员,花费的时间成本高.

当然,相对于培训机构的弊端,个人认为他们优势还是比较大的,其实就本人经历来说,从毕业到现今,工作的也有6~7年的时光,其实在这些时间里,为了获得技能,也是花费了很多时间与成本在培训和学习上,如软件培训,产品经理学习,高级职称,高级管理师学习等等... 当然就个人而言,付出总会有回报,所以依据自己曾经走过的道路,在这里给出大家的小建议。

结语:

本人现今从事互联网产品工作,高级项目管理师,PMP国际管理师,欢迎有想在互联网或者在科技技术领域有所经验的人儿们相互关注交流学习.

评论0 赞同0
  •  加载中...
Astrian

Astrian

回答于2022-06-28 15:10

我使用Java的时间比较久,也出版过关于Java的编程书籍,所以对Java语言非常熟悉。

Java语言是目前使用最为广泛的编程语言之一,对于没有基础的初学者来说,学习Java还是有一定难度的。为了高效率学习Java我给出以下几点建议:

第一,学习Java的重点是对核心概念的理解。这里的核心概念有类、对象、属性、方法、封装、继承、多态,以及由这些核心概念派生出的一系列概念,比如方法重载、方法重写、虚方法、抽象方法、静态方法、接口等概念。

第二,掌握Java面向对象的编程过程和思想。Java的编程过程分为三个步骤:类的设计、对象的创建、方法的调用。核心思想是以对象为基础来构建功能间的交互,类则是对象的抽象。

第三,理解容器(JVM)的作用。Java的容器功能十分强大,基本上实现了所有系统级的问题,比如垃圾回收、线程管理、对象生命周期管理、事件管理、本地化管理等等功能。了解Java的重点是了解容器的机制,容器在java中无处不在。

第四,多做实验。无论学习什么语言,多做实验一定是对的,尤其对一些比较抽象的概念,通过实验能建立画面感,同时能通过实验验证自己的想法。

第五,多交流。学习编程语言要多与别人交流,尤其是资深的Java程序员。如果身边没有这样的资源,也可以通过看一些视频资料来辅助学习。

第六,做实际的项目(实习)。当学习完基本的语法,做了一定的实验之后,就应该通过实际项目来提升自己的编程能力了,通过实际项目获得的经验是十分宝贵的。

我在头条上写了关于Java学习的系列文章,想学习Java的朋友可以关注我的头条号,相信一定会对你有所帮助。

谢谢!

评论0 赞同0
  •  加载中...
chengjianhua

chengjianhua

回答于2022-06-28 15:10

谢邀。学习没有捷径

最快的方法就是语言迁移。

假如你已经知道任何其他编程语言,或者面向对象的知识?

如果是的话,你的学习路径可以更顺畅。转移到Java将非常容易和快速。

假如真实纯小白。个人建议先从基础开始吧。

从基础的概念开始。

比如,你先分清java和javascript吧。

从基础入手,可以是名师,书籍或者视频

入手的媒介因人而异,可以是书籍或者视频或者老师。名师出高徒,但是不是每个老师都是24小时的盯着你。基础的概念弄清楚:

Java基础知识,注释,修饰符,变量,运算符,条件语句,循环语句,字符串,数组,文件处理,方法和异常处理。 Java面向对象编程系统基础,继承,多态,抽象和封装。了解包,对象,类和实例方法、数据结构,线程等等基础知识。这些概念本身有很多细节和实践;

学习编程需要时间,书中代码片段撸起

无论何种语言入门,都会需要很多时间。 当然,你可以非常快地学习一些语法,但是你的代码很可能会在头几个月变得糟糕,而且会慢慢地变得更好。 基本上没有办法解决这个问题,直到人类能发明AI代码机器人。

最快的方法是分而治之,从专才到全才

计算机算法里有一个分而治之。

中国式的教育,无论哪种方式,都会从源头开始,全面学习,从高考到上大学。

学一种语言,个人觉得更适合专科的思路,即你先分而治之。

java学完基础之后,你要做网络编程, 就学网络的api,要做底层驱动就学驱动的api,分而治之,没必要都学习。

整理了需要掌握的,自己比较一下:


我是小鸟,多年深蹲于互联网大坑里,欢迎关注来撩。

评论0 赞同0
  •  加载中...
Anchorer

Anchorer

回答于2022-06-28 15:10

结合本人艰难的自学 Java 之路,谈谈自己的几点建议:

1.不要相信知乎上推荐的自学书籍 《Thinking In Java》,我甚至很是怀疑这些张口闭口推荐这本书的家伙自己有没有认真看完这本书,说实话,完全不适合自学的新手学习,反正一开始我是看的云里雾里的。

2.学习基础知识时不要着急,要多做练习多敲代码,熟悉 Java 常用的 API。一开始可以跟着视频教程学习,后面慢慢的就可以自己跟着教材学习(我是跟着一个个人站长的 Java 教程学习的),这个时候对教材的选择千万不要多,随便挑一本跟着好好学就对了。一定要自己多敲代码多做练习,只有写的多了,才会有感觉,说实话,我最开始学习的时候起个类名、变量名、方法名都要纠结半天。

3.学完基础知识后,尝试自己写个小项目。对于无人指导的自学者而言,这一点是最难的,因为一开始肯定时无从下手的,不知道怎样开始一个项目,甚至可能自己想要实现什么功能做个什么样的项目都是模模糊糊的。这时可以在网上找一个简单的项目跟着学习,先弄懂别人的项目,再仿造写一个类似的项目就 OK 了,在这个过程中你会遇到很多的问题,这时你的提升会非常快,也可以迅速的增强自信。比如,做一个 web 项目,首先会指定需求,然后设计表,最后开始编码工作……

当然,我上面谈的都是自学 Java,如果觉得自己的执行力和意志力不太够的话,也可以报个被训班,可以帮你快速入门,不会像自学这样痛苦,但就像大家说的,IT 技术日新月异,工作之后也要不断的学习充电,必须做好心理准备。

评论0 赞同0
  •  加载中...
Miracle

Miracle

回答于2022-06-28 15:10

我也是自学出来的,这里每个学习阶段的视频我都有,需要的话可以发私信我,放心我不会收取任何费用的。

1.基础阶段的学习

在这个学习阶段你应该找一个好的基础学习视频,对着视频认真进行学习,每天自己要逼着自己学习,大学很容易让人颓废。边看还要变敲代码,不要用ide用记事本有利于后期的代码编写习惯,还要做好笔记哦。

2.java web阶段的学习

当你学习了前面基础阶段后你肯定会困惑,天天打印几个字有啥用,其实不然基础阶段就是为这个阶段做准备的,有了前面的基础你可以轻松的学习这个阶段的知识:servlet,jsp,Tomcat,数据库等。同样这个阶段也要做好笔记用于以后的回顾。

3.框架学习阶段

上面两个阶段学习完后要想去参加工作是不行的,你需要学习一些公司流行的框架来提供开发效率和质量,现在流行的框架有:spring,springmvc,mybatis,shiro等等,学习这些框架时你不需要了解透彻它,你只要知道怎么用怎么去搭建环境就可以了,等以后有了工作后你自然会理解它。

大体就是这几个阶段吧,希望能帮到你,还有在大学里一定要能控制住自己不能颓废,两天打鱼,三天晒网。那样是学不好东西的,加油吧少年!

评论0 赞同0
  •  加载中...
helloworldcodin

helloworldcodin

回答于2022-06-28 15:10

先说一个我亲身的经历,我有一个同事是半路转行做JAVA的,他也是在培训机构学习之后才开始做JAVA编程。他现在可以说是已经达到了高级JAVA工程师的水平,无论是并发编程,分布式,设计模式,数据结构都能很好的应用,而他仅仅只用了2年的时间。要说真正的原因,首先是兴趣,其次是方法。

一、培养兴趣

大多数人都会对自己擅长的东西感兴趣,而对无法胜任的事情感到厌烦,因此首先要通过练习的方式让自己有成就感和自信,可以从简单的,有意思的示例,让自己对编程感兴趣。学习要循序渐进,不能冒进。

二、打好基础

无论学什么,打好基础很重要。作为一名在培训机构的学生,首先要认真学习培训课程,培训课程基本上都包含JAVA语言的基础、数据结构、算法、数据库等理论知识,这些知识是写好程序的奠基石,即便它们不会被立即使用,它们也将成为你能够在这一行中走的更远的奠基石。可以通过刷题的方式来检验自己的学习进度。

三、理论结合实践

俗话说实践出真知,JAVA中的很多概念特别抽象,像类和对象,继承和多态,多线程等,只有在真实的运行环境中才能够真正的体会抽象的概念,才能够真正的掌握其用法。因此,在学习理论的基础上,多思考,多写代码示例。

四、学习优秀的框架和优秀程序员的编码风格

大量的阅读JDK、框架(spring、struts、hibernate等)、git上的项目源码,可以说是提高编码水平的捷径。

总结

总之想要学好JAVA语言,就要理论结合实际,在多读书学习理论的基础上,完成一个又一个程序和项目,迭代自己的认知和编码水平。

关注@照亮职场,每天收获一点职场小知识。如果认可我的观点,烦请点赞、转发和评论。你的支持,是我最大的动力!
评论0 赞同0
  •  加载中...
harriszh

harriszh

回答于2022-06-28 15:10

本人自学Java也有一年多时间了,期间断断续续的学了好几次。以下说说自己学习Java的历程。

大二暑假在家,天天玩游戏,感觉玩腻了,又因为马上大三了,想搞一下学习,由于专业是计算机相关的,所以就想好好学一下编程,凑巧大二下学期开了Java课,但是没怎么听讲,期末考试也是踩线过的,当时不知道怎么想的,立马就百度搜了下如何自学Java,一搜全是培训的广告乱七八糟的。于是我就放弃百度了,转而去看看有没有Java自学群,QQ一搜果然有好多,随便加了几个群,询问一下群里的大佬如何学Java,经过大佬们的建议,我给自己设定了几个目标:

1. 跟着视频学,首先跟着老师敲,敲完有不明白的问问大佬或者百度。过程很枯燥,坚持下去定会有收获。(基础视频推荐毕向东老师的Java基础)

2. 学会做笔记,总结自己在最近学习中遇到的问题和收获。(有道云笔记或者为知笔记都是很好的工具,也可以写成博客与他人一起讨论)

3. 学完Java基础后,一定要做几个小项目,小游戏也好,小工具也行,总之要给自己一些激励。

附上自己学完Java基础之后做的一个小游戏


基础阶段学完之后,一般有两个方向Android开发和JavaWeb开发。根据自己的兴趣爱好选择即可,如果有足够的时间,两个方向都可以尝试一下,有比较才知道自己比较热爱哪个方面嘛。个人比较推荐两方面都了解了解。


最后,推荐一下书籍《Java核心技术卷一》,《Java核心技术卷二》,这两本书可以说是比较经典的教材了,建议在学习过程中多看多敲多思考。如果学完Java基础想学习Android开发则《第一行代码》是一个不错的选择哦。祝题主早日学会Java。

评论0 赞同0
  •  加载中...
dockerclub

dockerclub

回答于2022-06-28 15:10

你是一名希望开始或者正在学习机器学习的Java程序员吗?

利用机器学习编写程序是最佳的学习方式。你可以从头开始编写算法,但是利用现有的开源库,你可以取得更大的进步。

本文介绍了主要的平台和开放源码的机器学习库。你可以使用这些机器学习库。

环境

本节描述了用于机器学习的Java环境或工作域。它们提供了用于执行机器学习任务的图形用户界面,还提供了用于开发自己应用程序的Java API。

  • WEKA

怀卡托环境知识分析(Weka)( https:// www.cs.waikato.ac.nz/ml/weka/)是一个由新西兰怀卡托大学开发的机器学习平台。提供Java的图形用户接口,命令行接口和Java API接口。它可能是最流行的Java机器学习库,也是开始或练习机器学习的好地方。

  • KNIME

康斯坦茨信息挖掘(KNIME)(https://www.knime. com/)是德国康斯坦茨大学开发的一个分析和报告平台。它的研发重点是药物研究,但已扩展到一般商业智能。它提供一个图形用户接口(基于Eclipse)和Java API。

  • 快速挖掘

快速挖掘(https://rapidminer.com/)由德国多特蒙德应用技术大学研发。它提供了一个GUI和一个Java API来开发自己的应用程序。还提供了数据处理、可视化和建模的机器学习算法。

  • ELKI

ELKI是一个用于开发由索引结构支持的KDD-应用程序的环境(https://elki-project.github.io/),它是由德国慕尼黑的路德维希马克西米利安大学用Java语言开发的一款数据挖掘工作平台。它的重点是在关系型数据库中处理数据,例如异常值检测和分类(基于距离函数方法)。它提供了一个迷你GUI、命令行接口和Java API。

其实本文列出的每个项目都带有Java API库。不过在这一节中列出的这些项目仅提供了一个Java API。从狭义上来说,它们是机器学习库。

  • Java-ML

Java机器学习库(Java-ML)(http://java-ml.sourceforge.net/)提供了在Java中实现的机器学习算法的集合。它为每一种算法提供了标准接口,没有UI(用户界面),也没有引用相关的科学文献来进一步阅读。它包括数据操作、群集、特性选择和分类的方法。值得注意的是,截止本文成稿为止,它的最新一个版本是在2012年。

  • JSAT

Java统计分析工具(JSAT)(https://github.com /EdwardRaff/JSAT/tree/master)提供了一个纯Java语言实现的标准机器学习算法,用于解决中等规模的问题。JSAT的作者称他开发的这个库部分是为了进行自我学习,部分是为了完成工作。尽管如此,算法的列表还是令人印象深刻的。它包括分类、回归、合集、聚类和特征选择方法。

Java大数据项目

本节列出了适合大数据的Java项目,例如机器集群。

  • Mahout (Hadoop)

Apache Mahout(https://mahout.apache.org/)提供了用于实现Apache Hadoop平台(分布式映射化简)的机器学习算法。该项目主要关注集群和分类算法,一个流行的应用程序驱动实现是它在推荐系统的协作筛选中使用。还包括在单个节点上运行算法的引用实现。

  • MLlib (Spark)

Apache机器学习库(MLlib)(http://spark. apache.org/mllib/)提供了用于Apache Spark平台(HDFS,而不是映射化简)机器学习算法的实现。尽管Java库和平台支持Java、Scala和Python绑定。这个库是新的,算法的列表很短,但是增长很快。

  • MOA

大规模在线分析(MOA)(https://moa.cms. waikato.ac.nz/)是一个开源平台,由新西兰怀卡托大学的数据流挖掘设计。和Weka相同(开发在相同的地方),提供一个GUI,命令行接口和Java API。它提供了一长串的算法,重点是分类和支持离群检测,解决概念漂移。MOA使用先进的数据挖掘和机器学习系统(ADAMS)(https://adams.cms.waikato.ac.nz/)管理工作流,开发也在相同的地方。

  • SAMOA

可扩展的高级在线分析(SAMOA)(http://samoa-project.net/)是一个由雅虎开发的分布式流媒体机器学习框架。它的设计运行在Apache Storm 和 Apache S4上。系统可以利用MOA项目提供的算法来完成分类等任务。

自然语言处理

本节将致力于Java库和项目,用于解决来自机器学习的子领域的问题,称之为自然语言处理(NLP)。

自然语言处理不是我的领域,所以我仅仅指出关键的库。

  • OpenNLP: Apache OpenNLP(http://opennlp. apache.org/)是处理自然语言文本的工具包,它为诸如标记化、分割和实体提取等自然语言处理任务提供了方法。

  • LingPipe:LingPipe(http://alias-i.com/lingpipe/)是计算语言学的一个工具包,包括了主题分类、实体提取、聚类和情绪分析的方法。

  • GATE: 文本工程一般结构(GATE)(http://gate.ac.uk/)是一个开源的用于文本处理的库。它提供了针对不同用例子项目的数组。

  • MALLET:机器学习语言工具包(MALLET)( http://mallet.cs.umass.edu/)是一种Java工具包,用于统计自然语言处理、文档分类、集群、主题建模和信息提取。

计算机视觉

本节列出了机器学习子领域库,称之为计算机视觉(VC)。

计算机视觉不是我熟悉的领域,所以我仅仅指出关键的库。

  • BoofCV:BoofCV(http://boofcv.org/index.php?title=Main_Page)是一个用于计算机视觉和机器人应用的开放源码库。它支持图像处理、特征、几何视觉、校准、识别和图像数据输入等功能。

深度学习

随着深度学习方法和硬件的快速发展,神经网络又重新流行起来。本节列出了用于处理神经网络和深度学习的关键Java库。

  • Encog:Encog(http://www.heatonresearch.com/encog)是一个机器学习库,提供了诸如SVM、经典神经网络、遗传编程、贝叶斯网络、HMM和遗传算法的算法。

  • Deeplearning4j:Deeplearning4j(http://deeplearning4j.org/)被认为是一个用Java编写的商业级的深度学习库。它被描述为与Hadoop兼容并提供了一些算法,包括受限的Boltzmann机,深层的信念网络和堆叠的降噪自动编码器。

总结

在这篇文章中,当我们在Java中选择一个用于机器学习的库或平台时,我们已经接触到了大项目名称选项。这些是倍受学习者欢迎的项目,但绝不只这些列出来的。比如:看一下MLOSS.org (http://mloss.org/software/language/java/)上的这个页面,(截止本文时)它列出了71个基于java的开源机器学习项目。这是一件很重要的工作,我相信GitHub和SourceForge还有更多的工作要做。

学习者的关键是要认真考虑自己的项目和需求。从一个库或者一个平台中找出你需要的东西,然后选择和学习一个最适合自己的项目。

评论0 赞同0
  •  加载中...

相关问题

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<