只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 软件开发 >  零基础怎么学Java?


零基础怎么学Java?

发布时间:2019-09-02 20:44:51  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
题主好,零基础小白不请自来,哈哈^^刚到实习的公司一周,正在零基础学习Java,之后会继续学习Android开发。打算持续记录自己的学习过程。Day01内容:搭建Java开发环境工具:书里的内容比较老
零基础怎么学Java?

题主好,零基础小白不请自来,哈哈^^ 刚到实习的公司一周,正在零基础学习Java,之后会继续学习Android开发。打算持续记录自己的学习过程。 Day01 内容:搭建Java开发环境 工具:书里的内容比较老,所以开发环境的搭建是看的“慕课网”上的“安卓工程师计划”中的“Java入门第一季”和“Java入门第二季”的视频。建议这个视频只看看开发环境的搭建就好了,讲得内容比较浅,有很多细节还是看书比较好。但如果看书累了或是看了同一段内容三五遍都理解不了,可以听听这一段的视频换个思路缓解一下,毕竟我们是个需要激情的工种o(* ̄▽ ̄*)ブ 总结:开发环境就算熟手帮忙搭好了,最好也自己尝试着搭一遍,各种细节“为什么要勾选这个而不是那个”之类,可以帮助了解环境,以及,建立自信心(-__-)b。

Day02-Day05

内容:看《Java开发实战经典》第一部分 Java基础程序设计

<img data-rawheight="400" data-rawwidth="287" src="https://pic2.zhimg.com/829c0610ddbd349afb8aaad8089bfad5_b.jpg" class="content_image" width="287">


总结:边读的时候边做了简单的笔记(我是想直接在书上写写画画的,奈何是借的)。把看到的每一个例子都自己敲了一遍,光看和自己动手还是有区别的,敲的过程中思考这个例子和知识点,把想的过程顺手就敲到注释里。

Day06-Day09 内容:继续看《Java开发实战经典》第二部分 Java面向对象程序设计 待更新:明显感觉比第一部分难理解了,一天下来进度缓慢,看得我是四大皆空,心神俱灭( ▼-▼ )只想直奔静安寺去剃度……所以像找毒品一样在网上找学习视频,同学推荐了“传智播客”里的“Java基础班和就业班”,网上找了份免费的刘意老师的视频,就喜欢这种风趣幽默的男子,声音好有磁性……等等,我是来学习的== 所以,目前在看视频附带的PPT,枯燥的时候就听听视频,做的笔记直接保存在印象笔记里,方便以后随时随地翻看查阅,之前做得乱七八糟的笔记也扫描上传了。这里吐槽一句,印象笔记的扫描笔记功能感觉没有全能扫描王来得好用,自动识别功能像六脉神剑——是灵时不灵的,没有耐心一直举着手机对焦等扫描,它还总是只识别半页纸,索性关掉直接用拍照片功能了。

2015/08/26我来更新噜……q(≧▽≦q)…… 由于9月1号安卓组就要正式上项目了,可我还在慢悠悠的做耕地用的工具,所以我要边学Java基础边开始学习Android开发。==天啦噜,其实我的内心是拒绝的,但确实不加快进度,就被早来一个月的小伙伴们落得越来越远了 T^T

Day10-Day11

内容:在网上像吸毒的人一样狂找安卓的学习资料,一个一个链过去居然神奇地找到了免费的官方学习视频,真是业界良心(●'?'●)。(有需要资料的可以私信我呀,交个胖友嘛=3=)跟着视频操作记笔记。

总结:华为荣耀G621-TL00今天磨碎了一枚果粉对安卓开发的信心==感觉不会再爱了……

eclipse中创建模拟器时“Skin”选项不要选“No Skin”,不然就是下图的样子

<img data-rawheight="503" data-rawwidth="322" src="https://pic2.zhimg.com/6af6989bcb1d700e21c6280d2d8322b5_b.png" class="content_image" width="322">木有主页键,菜单键和返回键啊有木有~!本来应该是介个样子的

木有主页键,菜单键和返回键啊有木有~!本来应该是介个样子的

<img data-rawheight="505" data-rawwidth="556" src="https://pic3.zhimg.com/1593ad56c3e0f810b56acec0c45b5d56_b.png" class="content_image" width="556" data-original="https://pic3.zhimg.com/1593ad56c3e0f810b56acec0c45b5d56_r.png">我会告诉你我以为No Skin是小清新界面么(-__-)b我为我的脑残行为付出了两个小时的代价 T^T……

我会告诉你我以为No Skin是小清新界面么(-__-)b我为我的脑残行为付出了两个小时的代价 T^T…… 当外接安卓机上不能运行所写的app时,在手机上勾选允许“Usb调试”后还是不行的话(华为这个手机上找到此选项的操作真是让我不忍吐槽……当作经验之一写在下面了),试试装个豌豆荚一类的手机助手吧,有奇效== 寻找“Usb调试”: 设置——关于手机——版本号——狂戳“版本号”,就会提示你开启开发者模式,返回到设置里就会发现“开发人员选项”粗线了……粗线了……了……你造我找你找得好辛苦么。。 另:标题栏的5554是这个模拟器的电话号码,当然,它并不能真的打电话。

小白成功把生活过成了段子~法定节假日约约约起来啊喂,坐标魔都,快来带我装逼带我飞啊~~


2017/2/22

渣渣来更新了/(ㄒoㄒ)/~~时隔一年多,只求别打脸。

中间近一年被老板派去搞winform了,这是一个关于初入职场学生思维的long story,要找工作了,重拾java和Android。

兜兜转转看了java入门书籍和在应用时需要的java知识,发现小渣要想有系统的知识网络,还是要看基础的词典书,幡然领悟:我总是在寻求各种各样的捷径,以求在激烈的竞争中轻松的超过其他人,然而兜兜转转也没有找到一夜成为大神的法门,保持耐心、扎扎实实地不走捷径就是最好的捷径。最可怕的不是失败 没学明白 浪费时间,而是怀疑自己。今天BAT缩招了,明天TMD扩招了,小渣也不知道自己除了想赚钱到底想要做什么。面前有很多条路,不知道哪条是岔路,投入那么多时间精力甚至培训班的费用,可能每条都是岔路。但是,做技术的有个优势吧,技术可能被替代消亡,但只要学习的心不老不死,我们还掌握了知识框架啊,凡有所学皆有所用,无用之用方为大用。读过的书、走过的路和练习过的技术,都不会亏待你。

下面是亲测简明有效的安卓小白的成长套路:

《Java开发实战经典》第一部分 Java基础程序设计

——学过的就看得快些,没学过的就仔细看,看不明白或是没有耐心了就看看视频。不过还是看书比较快。

《第一行代码》

——照着建工程,每个例子都敲一遍,遇到问题,善用百度和去论坛请教大神小神。

“慕课网安卓工程师路径”

——里面像是考试或是游戏闯关一样,轻松愉快的就把主要的知识入门了。

好了,现在你已经入门了,下面是初级的推荐

1. 疯狂Android讲义

2. 第一行Android代码

3. Android开发权威指南

4.Android官方培训课程中文版

5.Java核心技术Ⅰ

6.Java核心技术Ⅱ

好了,现在你已经比我厉害了,进阶的菜鸟就去把大神们推荐的经典书都读一遍吧。

现在发现我的回答已经歪楼了,题主问的是“零基础学java”,我跟这答着答着就变成“零基础怎么学Android”了==

好在关注的人不多,还没有把我折叠。看到这里的有缘人,有需要的资料就私信我吧,百度云链接常失效就不贴了。

最近也在自学java开发。
完全零基础,也就是说编程我一点都不懂。
也买过很多书,看过很多视频。
第一个礼拜我每本书都粗略的看了第一章。
最后决定选择2样,同步学习java。
书的选择:疯狂java讲义,基础讲的不错。首选。疯狂Java讲义 (豆瓣),相对于head first java来说更适合入门,每个符号都解释的很清楚,建议呢是入门结束后再看下其他书籍,有个对照
视频选择:毕老师java开发入门Java基础视频教程。也是建议入门后,再去看下其他视频比对,主要是学习经验,毕竟每个老师讲的技巧都不一定一样我已经在java初学者,如何学习java?中回答了类似的问题,现转贴:

此回答适合理工类本科学生,有点C基础,接触过编程,好一点的专科生也适用。

如果是文科类,或者大部分大专生,或者毕业好几年的理工类学生,请找一个好点的培训机构,自学成功率不高,即使成功了,自己花的时间成本也太高,还不如去培训机构节省时间,早学会早入行、早拿工资可能成本更低。对于有良好JAVA基础的人来说,此文没有太大意义。

咱们先解决认识问题

1、学JAVA的过程及特点

我们研究一下那些985学校的学生,他们是怎么学会JAVA的,有知友马上会说,我去!是的,985很多学生志向高远,学JAVA只是他们一个小小的任务,但对我们大家来说,学JAVA是一个重要的任务,是解决体面工作、找到更好前途的重要任务,我们研究他们是如何学会JAVA,是研究规律性的东东,或者真的对大家有帮助。

一般这些985学校的老师都会有项目,然后博士当项目经理,硕士当组长,本科生当码工,码工很缺,假若是你就是985学生,而且你也想学JAVA,所以你就参加了,除了会点C,还有一点点JAVA基础,你就开始了。

你不知道怎么做,然后有个会JAVA的硕士生,或者本科生过来告诉你,你先看这本书,也不用全看,先看这部分,不明白的地方问他,然后经过这么努力一段时间,那人会告诉你,要不你看看项目的部分代码,试着敲敲,你就敲啊敲,不懂就问,然后你感觉差不多的,向那人要任务,结果人家是给了任务,但不是正式项目,作为测试作的任务,然后你又开始苦干了,当然在此期间出现了很多问题,但总有人会帮忙来解决,最后任务完成,组长说你可以了,可以加入项目承担任务了,就这么简单。

现在我们来分析一下这个过程,第一要有合理的学习路径,先学什么后学什么,得有人告知,第二,得有个人来帮你解决各种问题,第三,得有一批人和你一起干,第四,要敲代码,第五,得有紧迫感得坚持,他们的任务等着你呢,明白了吧,不是人家聪明,是人家有这个学习环境,所以不要妄自菲薄。

说过985学校学生,大家认为自己垃圾学校的,这种方法没法拿过来用,那么我们来看看培训机构的学生是怎么学会的,他们更多的也是垃圾学校的学生,甚至更差,还不如你,在他们学习过程中:

第一,他们的学习路径是机构设置好的;

第二,他们有老师帮他们解决各种问题;

第三,有一批志同道合的同学,相互鼓励前进;

第四,敲代码;

第五,培训有合理的期限,机构老师会督促大家坚持。

两者的区别,前者知识是自学的,看书看视频,后者,知识是老师教的,作为一个普通大学生实际上也能自学,只不过聪明程度和坚持的不同,学得时间长一点短一点而已,所以学习过程类似。

上面两个例子说明,学JAVA不要特别的智商,可以说,只是指导思想、学习环境和学习方法对路,只要不是弱智,大家都学得会,别去听有些人的瞎BB,我见过智商真的不怎么的人学会JAVA,相信自己很重要,我们又不想成为乔布斯、比尔盖茨,我们只是想学会JAVA有份体面的工作、有份体面的收入而已,至于以后成为什么样的,以后有的时间认识自己,别去相信什么程序员是野生的,没有野生的,他们也是在大学学习过的,也是家养的,是人类就没野生的,除非他们是非人类。

好,我们来分析一般JAVA自学者的状况,学习路径就是个问题,网上这找找那找找,这个说这个知识是必须的,那个说那个知识是以后的发展方向…..,然后我们就这个看看学学,那个看看学学,学不深,蜻蜓点水,结果一事无成。

我们碰到问题不知道去问谁,我们经常是孤独的学习者。

我们无法坚持学习计划,三天学一点,第四第五天就去弄别的事情去了,毕竟学习是个苦差事,学JAVA更是苦,所以要放松一下,结果很多人就不回来学了,回来学的又得从头开始了。

我们学习基本不敲代码,只是学知识,从小校到大学,学校都是这么教的,也不知道敲什么、怎么敲,敲不下去不知道找谁解决。

--------------------------------------------------------------

小贴士1:JAVA名字的由来

我们见到JAVA标志是一杯热咖啡,Java的名字是由何而来呢,JAVA前身叫Oak(橡树),在对Oak改进以后,需要一个新名字,据说有一天,几位Java创始人成员正在讨论给这个新的语言取什么名字,当时他们正喝着Java(爪哇)咖啡,有一个人灵机一动说就叫Java怎样,得到了其他人的赞赏,于是,橡树变咖啡,Java这个名字就这样传开了。随后Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。
------------------------------------------------------------

2、如何认识敲代码的重要性?

说到敲代码,我们必须着重说明一下,我们从小到到,老师传授我们的是知识(knowlegde),不是技能(skill),所以我们擅长的是学知识而不是技能,我们总用学知识的方法学编程,而编程是一个知识加技能的活,学技能必须练、必须实践,比如修钟表,比如踢足球、打篮球,光靠看看书、看看视频解决不了问题。

卖油翁的故事大家都学过,”我亦无他,唯手熟尔。”,所以学编程必须去敲代码、去实践,举个大家最熟悉的例子,英语,也是技能+知识,大家从小到大学了十多年,结果还是不会听、不会说,但如果把你放到说英语的国家几个月,你至少会听一点、说一点了。大学只会传授知识,不会传授技能,所以学不好英语,当然更不用说学编程了,英语大家慢慢明白了是什么原因学不好,编程学不好,大家不明白其中的原因,所以一般大学的计算机专业学生学到三年级的时候,发觉自己学不好编程,从自身找原因,认为自己不是这块料,这就尴尬了,学计算机专业的结果是搞明白了自己不是这块料,那人家培训机构怎么就让人学会了呢,悲哀啊。

说到了敲代码,马上就面临一个问题,错误。

3、如何认识在敲代码中遇到的错误呢?

有的初学者在运行程序之前恨不得烧柱香,祈祷程序运行不会出错。要明确一点,碰到错误不可怕,也不可避免,但是见的错误越多,那么说明你学的越快,这是好事,错误见多了,以后就不会再犯这种错误了,当然前提是你得找到出错的原因。

那么怎样才是解决问题的正确方式呢?碰到程序出错,首先要想着自己去解决,明确程序出了什么错误,找到程序出错的地方,比如哪一行或者哪个方法。然后理一下自己的思路,仔细想想哪里有什么遗忘的地方,按照程序执行的顺序,依次往下找,多找几遍。

但是,记住,如果超过一段时间(你自己可以设置一个时间,比如15分钟),你找不出解决方法,就不要找了,尽快找人帮助解决,毕竟学JAVA的碰到的问题太多了,花大把大把时间解决个别问题,你耗不起,这样学习效率过低了,会严重影响学习信心,当然别人帮你解决了问题,你就一定要问清楚为什么会出现这个问题,否则这 个敲代码效果就不一定好了。

这里又要纠正一种认识,从小到大,学校里老师告诉我们,题目要自己做,这样记得牢,所以绝大多数的我们,都是这样过来的,在学JAVA的时候也是这样学的,但是你学JAVA的碰到的问题太多了,都自己思考出结果来,恐怕对大多数人来说太费时间,今天几个问题没解决,明天几个问题没解决,一周后,你有多少问题没解决啊,这些都是你前进的包袱,对你学JAVA的信心来说,是一个致命的打击,所以牢记:一段时间想不明白就求助别人,扔掉包袱、轻装前进才是最重要的


4、如何让学习不是很痛苦,更easy点
  1. 别碰《JAVA编程思想》,呵呵了;


  2. 别把学习计划制定得太宏大,太紧凑,要有适当的长期打算,不要恨不得一天就把它学会了,但是学着学着就像霜打的茄子,焉了。
  3. 不要听到什么好去学什么,开始时别去想struts2,spring,mybatis这些高大上的框架,只要基础打扎实,学这些不难,IDE只要选一个弄明白就可以,不要多。
  4. 开始别玩Oracle,就玩MySQL,玩得差不多再玩Oracle很容易,开始也别用linux,就用windows,就是什么简单就用什么,别自己给自己制造麻烦,简单的学好了,复杂点学学很方便,高精尖的东西对于初学者来说,都是包袱,不是什么利器,是有毒的苹果。
  5. 不要就是碰到什么问题,都希望把问题弄的很透彻,因为有些东西不是你现阶段能够彻底理解的,这就类似与你跟一个四五岁的小朋友解释成年人之间的事,解释了半天发现他还是不懂,于是你会说:等你长大了也就明白了,知识是成体系的,后面的没学,前面的不容易理解,等你后面的学好,发现前面的很好理解。
  6. 尽快敲代码,是在基本理解例子的基础上,自己从头到尾敲一遍,不要把学过的知识点扔的太久之后才去敲,记住:聪明人可以在彻底理解的基础上开始敲代码,对于普通人,基本理解以后就可以开始敲代码,有很多时候,你想破头都不明白的问题,敲一下就立即明白。在敲完以后,这个时候要好好理解,就是把完全理解的任务后置,这会让学习更轻松。
  7. 找几个有共同兴趣的人组成JAVA学习小组,或者几个好的QQ的JAVA学习群,互想帮助,互相鼓励。
总之,前面一大段都是想说,不要把问题搞得太复杂,怎么简单怎么来,别自找麻烦,否则你学会JAVA的可能性就越小。


----------------------------------------------------------------
小贴士2:J2EE名字的由来
这里的“2”,不是B2B,P2P中的“to”意思,它就是Two的意思,实际上Java在1995年刚推广的时候,只能说取得了一定的成功,我们称之为Java1,当时面临很多问题,在1998年,Sun公司对Java进行了革命性的改进,同时为区别Java 1,推出了Java 2平台,包括J2SE,J2EE,J2ME,其中J2EE极好地适应了互联网发展的需要,IBM等大型公司出于对抗当时如日中天的微软也加入到Java阵营,所以J2EE取得了极大的成功,从此J2EE的名字比Sun公司名字还响亮,大家一直叫J2EE,就是Sun公司在2005年把J2EE改成Java EE,大家还是叫J2EE,可惜Sun公司现在被Oracle公司收购了,不存在了。
------------------------------------------------------------------


解决了认识问题,接下来就是学习方法等技术问题了

1、学习教材选择
推荐《JAVA核心技术》,想多看点代码多练习可以找《java开发实战经典》
关于《JAVA编程思想》Thinking in Java,是本好书,有学JAVA圣经之说。
但是这本书对JAVA有基本功的人来说不错,学习此书可以对JAVA有一个比较深刻的理解,但对于初学者(除非脑子特好使)是个毒药,过于抽象,真不太好懂,所以不建议初学者使用。但是这本书对JAVA有基本功的人来说不错,学习此书可以对JAVA有一个比较深刻的理解,但对于初学者(除非脑子特好使)是个毒药,过于抽象,真不太好懂,所以不建议初学者使用。
但是这本书对JAVA有基本功的人来说不错,学习此书可以对JAVA有一个比较深刻的理解,但对于初学者(除非脑子特好使)是个毒药,过于抽象,真不太好懂,所以不建议初学者使用。


2、JAVA学习视频
马士兵JAVA视频、毕向东JAVA视频,关于视频,必须说明一下:
第一,最好看一个人的视频,因为每个老师的思维方式不一样。
第二,看视频是一个相当低效的学习方法,能不看就不要看,实际上看视频慢慢就落入学习知识而忽视技能练习的状态,开始去努力记知识点,不去敲代码, 这样是走不下去的,看视频时,一定要记得敲代码

3、JAVA学习网址
查找代码的网址:国外的,我们也牛皮一下
http://sourceforge.net
http://github.com
很遗憾,都是英文的,

国内的估计这两个链接基本解决了学习资料问题
下载详情_51CTO下载中心_IT技术资料免费下载或者
158个JAVA免豆精品资料汇总 - Java论坛 - 51CTO技术论坛 帮51CTO做广告了。
还有CSDN、博客园、开源中国和pudn这几个网站都不错。

关于学习JAVA的网站,先说明一下:
stackoverflow
一个IT的问答网站
很多人推荐不懂去stackoverflow,英语好的真不错,但是你看一下吧

对于广大英语不好的人来说,这就想当尴尬了。

如果你能为了解决JAVA问题,达到废寝忘食的地步,至少睡下去以后还在思考JAVA问题,那么恭喜你,你已进入状态,成功就在不远处。


---------------------------------------------------
小贴士3:安卓为什么要用Java来改造

大家知道安卓是google公司在Java的基础上改造而来的,现在Google和Oracle公司还在打官司,那么为什么安卓要选Java呢,这得回到Java的起源了,大家知道Java当初叫Oak,Oak语言当初真正的目的是为了解决消费电子产品(电视机顶盒、面包烤箱、移动电话)的智能化,由于没有市场需求,Sun公司才拼命让其适应互联网的发展,你瞧,30年以前这些人已经想到并为此设计出语言了,所以Java从开始就非常适合嵌入式设备、移动设备,Java就是为它们量身定制的。只是过于超前,市场没有这种需求,所以现在市场出现需求以后,Java的优点就立即被发现,同时也为Java创造出另外一片天地。


本来应该有个JAVA学习路径,但是这个网上到处都有,各位答主也给出了详细的说法,路径基本上都一样,所以不再详细阐述了,大家网上搜一下就可以了。学习Java不需要有编程的底子,也不需要先学C,C++等语言,Java是一本相对比较简单的语言,直接上手学习Java就行。
学习Java不需要数学非常好,初高中水平就行。
学习Java不需要英语非常好,初高中水平就行。
学习Java需要很大的毅力,Java学习是一个漫长的过程,换算成时间每天如果学8小时的话,大概需要4个月左右,涉及到的内容非常多,简单的网页制作,简单的js脚本,数据库,各种常用的框架等。
学习Java不需要你有多聪明,但是聪明一点的人学得会快一点,理论上来说,一个班里只要你成绩中等,学习Java编程就不是什么问题。
学习过程中时刻千万要记住,我们学习Java是为了找一份工作是为了找一份工作是为了找一份工作,而不是应付考试,那些高难度的死锁题等,写不了就写不了,直接跳过。 刚开始学习的时候,只要理解就行,有些地方一时理解不了,先跳过去,不要钻牛角尖。 一开始学习的时候,知道怎么用就行了(知其然),等到精力充足的时候,再回过头来深入学习(知其所以然)。
我外甥96年的人,初中未毕业,现在在北京一月是25K,说这一点,是希望大家坚持学习,并不是鼓励大家,不好好上学,直接来学编程,大学还是要上的,有些路,必须要走完人生才够完整。
关于就业,只要学好了,找工作是相当容易的,这个大家放心。
暂时想不起来了,想起来再补充。
大家在学习过程中,有什么问题或疑惑,都可以私信给我 写得不对的地方,请大家指正。

题主,你撞树上了.


我写了一个专栏, 正好符合你的问题.

Java编程零基础快速入门教程


知乎上大把问这样入门的问题的人, 耐心看完, 里面的例子自己都敲一遍.

Java基础差不多了, 再根据自己的爱好, 选个方向, Java web, java 服务器开发, Android 开发等.


记得帮忙点赞, 好多只藏不赞的. 这不科学. 先赞后藏才是好同志.

话不多说,直接推书:

1、Java 基础入门

《Java 基础入门》从初学者的角度详细讲解了 Java 开发中重点用到的多种技术。全书共 11 章,包括 Java 开发环境的搭建及其运行机制、基本语法、面向对象的思想,采用典型翔实的例子、通俗易懂的语言阐述面向对象中的抽象概念。在多线程、常用 API、集合、IO、GUI、网络编程章节中,通过剖析案例、分析代码结构含义、解决常见问题等方式,帮助初学者培养良好的编程习惯。最后,讲解了 Eclipse 开发工具,帮助初学者熟悉开发工具的使用。

2、Java 疯狂讲义

本书并不是一个简单的 Java 入门教材,也不是一门“闭门造车”式的 Java 读物。本

书来自笔者 6 年多的 Java 培训经历,凝聚了笔者将近 6000 小时的授课经验,总结了

上千个 Java 学员学习过程中的典型错误。 本书不在是知识点的铺陈,而是致力于将

知识点融入实际项目开发中,所以本书涉及了大量Java案例:精品QQ游戏大厅、MySQL

企业管理器、多线程、断点下载工具…希望读者通过编写这些程序找到编程的乐趣。

3、Java 核心技术·卷 1:基础知识(原书第 9 版)

《JAVA 核心技术(卷 1):基础知识(原书第 9 版)》是《Java 核心技术》的最新版,《Java

核心技术》出版以来一直畅销不衰,深受读者青睐,每个新版本都尽可能快地跟上 Java

开发工具箱发展的步伐,而且每一版都重新改写了的部分内容,以便适应 Java 的最新

特性。本版也不例外,它反遇了 Java SE6 的新特性。全书共 14 章,包括 Java 基本

的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing 用

户界面组件、部署应用程序和 Applet、异常日志断言和调试、叙述方式深入浅出,并

包含大量示例。

4、Java 核心技术(卷 2):高级特性(原书第 9 版)

Java 技术权威指南,全面覆盖 Java 技术的高级主题,包括流与文件、XML、网络、

数据库编程、高级 Swing、高级 AWT、JavaBean 构件、安全、分布式对象、脚本、

编译与注解处理等,同时涉及本地化、国际化以及 Java SE 6 的内容。《JAVA 核心技

术卷Ⅱ:高级特征》对 Java 技术的阐述精确到位,叙述方式深入浅出,并包含大量示

例,从而帮助读者充分理解 Java 语言以及 Java 类库的相关特性。

5、Effective java 中文版(第 2 版)

本书介绍了在 Java 编程中 78 条极具实用价值的经验规则,这些经验规则涵盖了大多

数开发人员每天所面临的问题的解决方案。通过对 Java 平台设计专家所使用的技术的

全面描述,揭示了应该做什么,不应该做什么才能产生清晰、健壮和高效的代码。本

书中的每条规则都以简短、独立的小文章形式出现,并通过例子代码加以进一步说明。

本书内容全面,结构清晰,讲解详细。


6、Java 编程思想 (第 4 版)

本书共 22 章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、

通过异常处理错误、字符串、泛型、数组、容器深入研究、JavaI/O 系统、枚举类型、

并发以及图形化用户界面等内容。这些丰富的内容,包含了 Java 语言基础语法以及高

级特性。


7、Java 多线程编程核心技术此书和《Java 并发编程实战》

相反,这本书的特点是大篇幅的代码+小篇幅的精讲解,可能这和中国人写的书比较

偏向实用主义的风格有关。本书关于线程安全、synchronized、 Reentrant、Timer

等等都用详细的代码进行了讲解,而且每个大知识点下的多个小知识点都会详细讲解

到,非常有实践价值。不过这本书的缺点就是对于 Java 并发包下的一些类像

CountDownLatch、Semphore、CyclicBarrier、Future、 Callable 等都没有讲到,

重点的 CAS 和 AQS 也没有触及,重点类的实现原理也没有提。当然,这很深入了,

在学习了这本书之后如果能再去对这些知识 进行一些学习、研究的话,你一定会慢慢

成长为一个很厉害的多线程高手。


8、深入理解 Java 虚拟机:JVM 高级特性与最佳实践(第 2 版)

这书是国内少有的描述 JVM 虚拟机原理的书籍,最大的特点是采用作者一贯的严谨而

生动的语言,清楚地向读者描述虚拟机的机制、特性、原理以及实践,非常值得一看,

比较推荐!


之前在另一个回答中分享过针对初学者的Java学习路径,这里不多写了,大家可以直接戳:

Java 学习线路图是怎样的?

最后,推荐牛客网的一个针对Java初学者的项目:

【牛客带你学编程】【Java方向】0基础小白入门培养计划!

看书是最好的入门方式, 相对于博客教程来说,出版出来的书籍更严谨,而有的好书在圈内早已盛名在外,下面推荐我觉得很厉害的几本书,有很多值得一读再读。

Head First Java


Head First系列早就盛名在外,这本书是一本真正的入门书,一周就能叫你怎么写Java程序,内容浅显易懂,很有趣,真的为初学者设计,但是它也是一本真正的入门书,并没有覆盖所有Java的点。如果你是从0基础几步,这本书是个好的选择,以免你看了下面的书直接放弃学习Java。

Java编程思想


这本大部头很容易让人望而却步,记得大一时候就买了它,却一直放在书架上睡觉。后来工作了,才慢慢啃了好几遍。真的后悔看得太晚了。不得不说,这本书无愧经典二字,内容覆盖了Java SE的方方面面,同时作者Bruce Eckel确实是大牛中的大牛,很多例子不知不觉得用上了各种设计模式,后来再读设计模式时,还会拿起这本书看例子,又有恍然大悟的感觉。有很多人对这本书有误解,一是觉得中文版不好,实际上我觉得相比于其它的书翻译得水平可以了,2是不适合新手,其实只要你有一点基本语句的基础,那么通读是没问题的。永远不要为自己的怯懦寻找借口,这是修炼Java内功必备的一本书。

另外我建议一是按知识点读,而不是从头到尾读,知识点主要以章节区分,Java基础知识按类别分其实可以分为好几块的,面向对象的部分,集合,多线程,泛型,枚举,网络,UI等等。最好当成工具书,项目上遇到不熟悉的,常常翻翻书,当你结合项目时,会产生对这个知识点的渴求,所以记忆更牢固。

总觉得还得读个10遍8遍的。

Java核心编程

这本书一般国内版本都分上下两侧,作为与上面的Java编程思想齐名的大全式图书,这本书的内容更加细致,偏重与讲解Java计数,举例说明了大量API,所以相比于Java编程思想,更注重于实用性。而且由于书籍分了上下两侧,文字排版舒服一点,没有上面那本书的文字那么密集,阅读压力小点。但是两本书加起来真的贵啊,所以当初没有买它入门,工作两年了才入手的,书的内容确实对得起书名Java核心,也是非常建议Java程序员看的。

Effectice java

这本书属于进阶一点的内容,如果你是初学者,读这本书可能没有什么深刻体会,很多内容可能读完就忘。但是当你有那么一两个项目的经验,再读这本书,就会发现书中提到的某个规则就是你在很多次工作经验后总结出来的最准确的描述方式。书中介绍了在Java编程中78条最具有实用价值的经验。每一条都以一篇文章给出,类似的系列还有C++的Effective C++。同时你也会发现,里面提到的很多知识点也是面试常客。

Java并发编程实战


并发编程时Java里一个很重要的点。如果看完上面基本大部头里面的多线程部分觉得不过瘾,那么这本书绝对是你的第一选择,相比于国内的图书重实践的风格,这本书可能在一开始阅读时会很慢。本书分4个部分,但是第一个部分就很难读,这一部分阐述了线程安全性,线程对象彼此间的共享,线程对象安全发布,如何设计足够安全的线程。后面的部分说一些线程工具使用的时候反而轻松点。外国人喜欢理论的东西,所以这本书更多地给你灌输一种并发的思维。反正是需要一些耐心看的,当然看下来觉得受益匪浅。

Java并发编程的艺术

这本书是阿里的大牛方腾飞出品,他的并发编程网是我十分喜爱的网站。这本书从JDK源码,JVM和CPU多角度介绍了并发编程的许多原理性的东西。个人感觉前3章写的比较好,比较深入,后面的章节就有点流水账的意思了。适合有一定JVM基础的人看。

深入理解Java虚拟机

JVM是深入Java不得不过的一个坎,而这本书是国内市场难得的一本关于JVM的好书。这本书从Java虚拟机的内存管理(内存区域划分、垃圾收集的算法和实现、性能监控和调优实战)讲起,接着介绍虚拟机如何执行(类文件的结构、类加载机制、字节码执行引擎介绍),最后还介绍了编译优化和高效并发部分。我看这本书还产生了一些博客。所以想对虚拟机进行深入学习,这本书当属首选。

Java性能权威指南

市面上介绍Java的书有很多,但专注于Java性能的并不多,能游刃有余地展示Java性能优化难点的更是凤毛麟角,本书即是其中之一。通过使用JVM和Java平台,以及Java语言和应用程序接口,本书详尽讲解了Java性能调优的相关知识,帮助读者深入理解Java平台性能的各个方面,使程序如虎添翼。另外本书关于G1收集器的部分解释的比较详细,弥补了中文图书这方面的空白。

Java程序员修炼之道

《Java程序员修炼之道》分为四部分,第一部分全面介绍Java7的新特性,第二部分探讨Java关键编程知识和技术,第三部分讨论JVM上的新语言和多语言编程,第四部分将平台和多语言编程知识付诸实践。这本书打开了通向其它基于JVM的语言的大门,书中含有大量代码示例,可以翻阅增长见识。

上面推荐的图书基本都是关于Java语言本身的学习资料,当然作为一个Java程序员需要研究的方向太多了。各类框架、数据库、分布式、大数据都能成为延伸方向,路漫漫,好好看书才是王道。


原文链接:https://juejin.im/post/5a6e79a3f265da3e393aabca

这篇文章是写给迷茫期的朋友,我的亲身经历也许能作为你人生经历的参考。也许你会对你所在的行业感到迷茫,或不公,我希望我这篇文章能帮助身边正在困惑的你……我以我的亲身经历和大家客观的讲一讲类似北大青鸟、达内培训机构的弊端。当我想写下这些文章的时候,我不知道应该怎么写起,从2008年开始说起,我考上了湖北中医药大学。

我学医的目的就是为了去治疗艾滋病,真的,我当时就是这么想的,出来社会才知道,很多时候人是在随着社会大流中,才能去决定我们能成为怎么样的人,很多职业成就都不是预先规划好的,是社会的趋势大流把你一直往前推,然后你在这股大流下努力,才成就了现在的你。我选择中医是因为我认为只有中医的思维方式能治疗这种人类难以攻克的疾病,这是我当时认为的,但是“实践才是检验真理的唯一标准”,一切道理都是行出来的,可不可行,去做就知道。在大学期间,我很快的掌握了524味中药,100多中方剂组成,掌握了基本的中医诊断,了解了人体解剖学,针灸、穴位、阴阳五行……理解到了中医的哲学文化。其实古人教给我们的只是平衡的道理,你要体会这种动态平衡,在相生相克这种动态平衡中去找到治病的解决之道。人生病了只是体内阴阳不平衡了,所以医者必须通过各种治疗办法例如西药、按摩、中药、针灸等把这种不平衡给纠正回来。

在中医的四大经典中,首推《伤寒论》,这就是我在大学背到了发黄的《伤寒论》,里面都是古文,我当时认为,中医是非常厉害的,所以非常努力的背诵中医古籍《伤寒论》,这本《伤寒论》就是被我读到发黄的书了。

这本书是在在东汉末年张仲景所著。这本《伤寒论》可以说是奠定了中医理、法、方、药的基础,为中医“辨证论治”提供了一种中医治疗的思考方式。整体阐述了一个人得了某一种疾病的传变规律。我们知道人冬天感受了寒冷会感冒、然后发烧,我们去打针就没事了。但是往往不是这样,如果发烧了打针好不了,就会传到胃,导致大便干硬,高热不退,满口说胡话……,如果高热不退还治不好,传到胆,那么就会浑身打颤,一时冷一时热。这时候你就会问我为什么传到胆,人体会一时冷一时热?这个中医没有办法给你解释,不论现在中医学、西医学怎么给你解释,都不一定是对的,我们从小受到太多的逻辑学的学习,总想问为什么。但是任何一个科学给你讲了一个问什么,只是我们人脑认为他是对的,然后方便我们记忆而已。当时在大学背书真的很认真,有这本书为证!已经背到发黄了!而且全部都是古文!

我们脑袋总想追究一个我们方便理解的线索,以便我们记住而已。这个世界很多时候都是各种因缘合和在一起,产生了一些奇妙的变化,这种变化会呈现出一些规律,我们捕捉到的只是这个规律,但是很多很多的变化,我们是很难去捕捉的。世间的道理都没有错,但是不一定对。我们渴望得到一些定理和公式,以便控制、驱动着这个自然界。这就是我们经常说的:“科学技术是第一生产力”。那么生产力就是人了利用自然、适应自然和使用自然的能力。以前我们用步行,现在我们科学家发现了某些自然之中力学的规律,能量守恒定律发明了汽车。之后我们又发现了空气动力学,发明了飞机。所以这一切都是我们发现了自然的规律,这些规律并不是我们创造和发明的。只是我们生活在自然之中,发现了自然这些规律产生的能量,然后把各种规律组合在一起,所以有了我们今天的汽车,飞机、原子弹等等。但是我们人类掌握了这些自然规律之后,地球环境正在慢慢的被人类破坏,这就是破坏了生态平衡。

一切都是由平衡导致的,2009年,发生很多变故,包括外在环境的和内在环境的变故。先说一说内在环境的变故,当时大学教了一本计算机语言VB编程语言。可以说当我学这门编程语言的时候的状态是完全“不知所云”。因为我不理解编程语言的思考模式,当时学校正好教一门早已经过时的编程语言VB,但就是VB打开了我编程的大门,当时学编程的感觉一点也不懂,因为从来没有这种思维。

很多人经常问学编程难不难?如果你脑子没有转换过来的时候,学编程可以说是一种痛苦。觉悟的本质就是“颠倒”你的思考方式。但是学任何一种学科,不论是商学、金融学、物理学……都是一种对世界抽象的思考方式,这些思考方式当你能体悟其中的奥妙,你就会觉得这门课程非常有意思。学习任何知识的时候,有的人一天就能体会其中的门道,而有的人要花一个月,有的人要花三年。为什么会这样?因为生长环境,造就了你的思考模式,所以见多识广是开阔思考方式的唯一办法,也是打破你固有偏见的唯一一种方式。

但同时,我在大学的国医堂帮一位有名的中医教授抄方子,有一个中年妇女得了直肠癌,已经去过西医院进行了检查,检查结果需要动手术,来国医堂的问了我们学校的老中医教授,需不需要动手术?获得的官方回答是:“你要听医生的话”。这句话非常耐人寻味,什么叫“听医生的话”?也就是说要听那个西医的话,要动手术咯。我当时好像明白了一切,别人就是不想动手术,来找了中医,把希望寄托在中医身上。而且一个治病治了40几年的老教授,这个病能不能治,你心理没有底吗?我对中医的教授产生了怀疑,我怀疑的不是中医,是庸医……

话说回来,当时对于VB这门编程语言老师也不怎么愿意教。为什么老师不怎么愿意教?因为大学所有的考核标准就是60分万岁了,至于你能不能成才,靠你自己图书管去自学去!这就是大学的教育方式呀!美其名曰:“全面发展”。任何一个大学放宽管理的绩效考核,对于学生毕业来说是最大的悲哀因为大学只是发了一个大学的毕业证和学位证,这样的成本是最低的成本的教育方式。

我到现在为止我也是想不明白为什么一个中医学院的学生要学计算机编程语言?大学有时候真的很奇怪,为什么要强制上一些我看不懂,并且一定要上的课程,还要考一些没有意义的证书。《思想道德和法律》、《马克思理论》、《VB编程基础》……这些课程和我的专业课有什么关系?这个社会分工得那么细,每个人的时间都是有限的,为什么要去学这些知识?还有我们学中医的为什么要让西医老师给我们上中医的诊断学?当时学VB编程的时候,听一个计算机系的学长说编程可以当黑客,所以就买了下面这本

但是里面的技术难点我根本就不知道怎么弄懂,让我越学越懵,我已经没办法成为一个黑客,因为里面的代码我看不懂,我内心很困惑,难道就这样放弃吗?我尝试的用我笨拙的搜索方式搜索VB黑客编程,没想到弹出了北大青鸟的广告,(现在才知道,北大青鸟的网络营销的费用最少每年200万,羊毛出在羊身上,最终转嫁的还是在学生的学费上)。我点了进去,然后右下角出现了咨询的窗口,我点击进去,我说我想学黑客编程,你那边教黑客编程吗?咨询师说他们那边教黑客编程,让我过去他们培训的地方做详细的咨询,当我我刚出社会很天真,去到他们培训的地方,他们就开始和我说编程多好,要成为黑客是需要学他们的技术的(其实是他们的营销话术,当时我不懂,就信以为真),要学ACCP的课程,课程体系有java和.net学费需要32000元,学1年半。我当时听到3万多元,当时我每个月的生活费只有600多,当时觉得好多钱啊。但是北大青鸟给我洗脑就是,他们是北大旗下的,有三次推荐就业机会,他们是印度知名的培训学校,18个月升级一次课程。给我洗脑的方式就是他们是最好的一家it培训机构,也是唯一一家it培训机构,毕业之后还会有accp高级软件工程师证书,这个证书就像下面这样子啦……

我当时在上大学,不懂城里人的套路深,觉得又多一个证书很好,因为从小到大的教育就是奖状,证书是最重要的。咨询完之后我就回去了,然后咨询师每天疯狂的关心你一样的打电话,他们的目的就是为了你报名之后他们的提成。

就在这时,上天给我开了一个玩笑,家里发生了经济变故,不过危险的到来,总是存在生机和转机,此时父母也同意我大学退学去学一技之长,养家糊口。

然后和5-60个大学同学借了3万多元去了北大青鸟。只要进进入了北大青鸟,一切洗脑就开始了。一个班都有班主任,一个教员。其实存在班主任的目的就是了解学员的情况,安抚学员,然后让他们交第二学期、第三学期的学费。然后经常考试测试我们的成绩,其实现在想起来,就算考100分能让我高薪就业吗?! 他们鼓吹他们的技术多牛逼多牛逼。等我学出来之后,我当时是北大青鸟那个班数一数二的成绩。出去找工作,投了简历在58同城上,有一家it培训机构招it实习生,我就纳闷了,本身就是it培训机构,为什么不从自己的学校招聘,当时我对自己的技术也没有底气,就去了那家培训机构去面试。没想到他们公司也是培训java的,而且学费2万,比北大青鸟的学费低了1万2千,而且只培训半年,我看了他们的教学大纲,当时立马懵逼,所培训的内容比北大青鸟的知识还要多很多。因为这家培训机构不知道我在北大青鸟培训过,然后类似像北大青鸟的洗脑方式又开始了,我当时就好像突然长大了,明白了很多事情,出社会套路很多,不要被人既浪费了时间,又被“骗”了钱,你还要感谢别人。

我拿着在北大青鸟的那一套知识在51job上投了简历,根本不需要推荐就业,所谓的推荐就业的机会,就是推荐而已,不是你毕业之后安排你的工作,所以推荐就业也是一个营销词汇。然后找了很多家高薪的企业,别人都不要我,因为我的技术不足以让我适应真正的企业的真正的技术核心,我只能去小的创业公司,经常加班,经常被骂,当时的工资只有3000多一个月的工作!我想想就不对劲, 凭什么我投入了3万多元,投入了1年半的时间只能找3千多一个月的工作。但是当时只能忍咬咬牙。在公司因为很多技术没有掌握,只能自己一个人加班,被骂是常事,我当时还是抱有学生思维,以为不懂就要问的傻逼思维,碰到不懂的技术就问人,问一次可以,两次,三次之后别人就烦了,所以慢慢的学会了碰到不懂的问题自己解决,就这样在那家公司工作了一年半,可以说这一年半过得很不开心!

讲讲我第一份工作的经历,当时我刚刚出社会,觉得一切都是那么的不公平,看什么都不爽,现在想起来觉得自己和可笑,当时在学校,一切那么多的隐性资源都是免费给你使用,出社会之后,什么都需要钱。一切关系不再是那么单纯,也许昨天做你旁边的同事,明天就要离职,在也没有了所谓的朋友,同学那样,可以和你说许许多多的事情。你有能力你就上,没有能力你就下,只有功劳,没有苦劳,如果一件事情你加班还是没有完成,那你也是拖后腿,因为大家都是团队工作,不能等你一个人在拖后腿,所以所有人对你都会产生意见,甚至呵责你,训斥你。也许你会感到委屈,但是这就是现实。

在武汉工作的过程中,曾经和别人合作个一些软件项目,和我的小伙伴一起参加了他们的项目,从中也得到了锻炼,当时和这家公司一起合作的时候,真的得到了很大的成长,不单单是技术上,还有眼界上,当时因为各种关系,认识到了很多有名的人。其实现在想想,如果没有关系,一切价值都创造不出来。有时候关系显得在中国非常重要。


无意间招聘的时候,去了一家中软科创的IT培训机构当讲师,我当时是热情满满,经常陪学生到晚上10点钟才回寝室,因为我觉得他们和我一样,都是找不到出路才来培训的,所以就非常的努力带这些学生,但是往往还是那句话,理想和现实总是有差距的,不了解人性,单凭着自己的理想主义去面对现实主义,你会摔得很惨,因为有的人并不是来学习的,只是来打发时间,或者是来拆台的,但是这群人,你没有数据你可以量化出来,如果你想着只要自己努力教就会有效果,这种想法天真的,因为你面对的是人,人如果管理不好就是内耗,人才是最大的成本

所以有时候当讲师,你要面对的三种关系,第一种关系是你和老板的关系,第二种:你和学生的关系,第三种:你和员工之间的关系,这三种关系中你都要达到平衡,要在这种平衡下去教学,如果你主观的凭借着自己认为的那样,高估了每个学生对你的看法,那么你会摔得很惨。

我就按照我自己这么多年来的做技术的方式给他们上课。直到5个月之后我知道他们的招生模式,就是他们公司通过在58同城上发布求职信息,吸引求职过来面试,然后通过各种办法说你技术不行,企业不需要你,必须要在我们这里培训,说什么企业会有补助之类的话,其实就是银行的信用贷款而已……所以果断选择了离职,因为我觉得太缺德了…

之后回到广州,去了两家IT培训机构任教,发现他们都是以营利为目的,并没有把教育的本质做好,因为我知道这个道理,所以去做这件事情,然后赚了钱,而不是因为我知道这个道理能挣钱,所以我去做这件事。这是两种不同的思维方式,可能和我嫉恶如仇的性格有关,这也是我后期决定好好在培训行业打下了思想的基石!这就是我在其他培训任教时的照片…

这是学生给我的评价,当时学生准备教第二个阶段,学生准备换老师,因为我经常陪着他们到晚上十点,帮他们解决问题,我当时为什么要这么做,因为他们就像我以前,为了一条出路,我想到了我以前自己在计算机这条路上,走过的艰辛和弯路,我只想让他们少走弯路。就如此而已,包括现在我的教育模式为什么要和学生一起住,就是为了让他们快速的解决问题

一路走来学了很多技术,有java、php、python、linux等等,下面就是我当前买的技术书籍啦…… 学完了这些技术,我已经没有编程语言的界限。很多人总是说java好、php好、python好,其实并没有什么语言好不好,而是使用这个编程语言的程序员怎么样不断学习编程的目的就是为了有更好的编程体验和编程格局观。这一点很重要,因为你曾经认为是对的,随着你不断学习的深入,你会改变你原来认知的东西,这个非常重要。

这些就是我这七年来所学的技术,只要学了这些综合性的技术才叫做一个合格的程序员,要不然如果你的技术点薄弱,你拿什么技术资本在公司里立足?很多培训学校只学习到框架方面的技术。但是linux高并发这块的配置,对高薪就业的影响很大。但是,我很想让学员能在半年之内学完,但是每个人的智力和接受能力真的很重要

之后公司又任命我培训一些南非的外国学生编程,临危授命,这些所有的一切都是通过自己的努力的来的!我也没有怎么学过英文,但是我在一边学习编程的时候,一边记忆单词,所以才慢慢的提升了我的英文水平,平常有空就在地铁上背诵英文单词,然后平常也经常看英文技术文档,所以这一切都是自己努力所得!

我设计了一套课程安排,学完之后应该具备了少走2年的技术弯路,公司里也能够有底气少挨骂,请你们认真看完里面的课程安排,这些技术是非常强悍的技术,我给学生学那么多技术,就是为了让学生在企业中独挡一面,在工作中少挨骂,少加班,工资能高点。

但是并不是每个学生都能有那么强的学习能力,有时候我太高估了我学生的学习能力,有时候我想一想,来培训的无非两类人,第一类:高中学历,在外面打工,没有提升空间了,所以才来培训,这一类人占大多数。这一类人本身就是在学习能力上失败的,所以学习特别慢,思维逻辑能力很差。所以当你踏入IT这一行的时候,因为你缺其他人太多东西了,但是思考能力又差,所以你必须要付出别人2倍以上的努力。有时候,学编程你会感觉到自己很无助,或者事倍功半,想放弃,那你就放弃吧因为现在你的样子就是你放弃了无数次的努力造成的,你也不介意在放弃一次。很多时候,别人就是多坚持了5分钟,掌声永远只在成功之后。

每个人都是这么走出来的,你的挫折什么的,别人也经历过,只是别人通过各种办法走出来了,而你没有找到一个让你能坚持的东西,这就是人与人之间的差距。我的例子中我吃过很多的苦,我也迷茫过。当年的我在学程序,看着窗外的建筑工人在打地基,我就在思考我的前途在何方?但是我还是坚持下来了,所以成为了现在的我。很多人都认为,你碰到了学程序最好的年纪,其实!我当时连程序是什么我都不知道!

如果说在北大青鸟花一年半学的技术如果不能达到企业的标准就是骗钱骗时间。学it的人很多,你拿什么跟别人比较,就在于你的技术能力和成长时间的长短。这都是需要成本的。跑的起点可以一样,但是工具用的好才能成就自己走了很多技术和职场上的弯路。现在也成立了自己的培训机构,大部分都是高中生。高中学生也能有月薪8千多一个月,所以没有什么不可能,难道高中的学生毕业之后就不能月薪过万?!

教育和医疗是最后的教育底线,我们应该守护好着最后的底线,让后来者能知道我最终的良苦用心。因为人年纪越大牵绊越多了,做什么事情多多少少都会受到身边人的阻碍或者是动力。是否能静下心来编程,获取一技之长要取决于你是如何取舍的。安心下来学习,改变自己,从来也不是年龄的问题,而是你的心之所向

当时我们的学员很少,因为我们经过了大量的筛选,被选择留下来的都是精英,这是早期的学员的照片,编程条件非常差……这些19-21岁的学员,他们知道自己没有学历,也只能靠自己的扎实的技术实力,和我传授给他们的职场经验在面试和工作中获取自己的一席之地……但是他们都有一颗上进的心……他们想改变自己的人生轨迹

自己管理了自己的IT培训学校,同样前期出现了一些这样或那样的问题,不可能每个地方都是完美的,只要大的方向不要错误,我就会去做医疗和教育是社会之本!有太多名老庸医造成无效的医疗,为之奈何?培训机构是最后的教育底线,让学员高质量的就业,才是首要任务!不能以忽悠,隐瞒等方式让学员缴费报名!我想让学生不在迷茫,看到生活的希望。这是我的希望,至于结果如何,只能尽人事,听天命了

学习路线建议

1,JavaSE(建议三个月):

毕向东任意版(启蒙或辅助)

小白人生导师,强烈推荐,两遍

刘意JavaSE(深入浅出精华版,主看这个)

2014年年底录制,和后面Javaweb比较配,两遍

毕向东JavaSE25天版由于有点老了,整个解说都没用eclipse,不利于小白掌握eclipse使用。但内容真心不错很照顾初学者。我自己初学Java看的是25天版本,后来又看了刘意老师的。毕老师的30天版里的多线程比25天版本讲得好,也讲了前端知识。

JavaSE小结: 主看刘意。 毕向东视频作为补充,重点看他的面向对象,集合,IO,30天版多线程很不错。 学完JavaSE先看下面的视频,会让你对前面所学和后面将学的内容有个整体认识,毕竟你可能从学JavaSE的第一天起就反复问自己:这特么学了有啥用? 链接:https://pan.baidu.com/s/1cWdOEa 密码:rdlq


2,JavaWeb(建议两个月):

崔希凡——超全面的JavaWeb视频

和刘意的JavaSE衔接比较好,同样深入浅出。day14和day24~26的项目,day17~19的JDBC以及最后两天的基础提高非常棒,强烈推荐,两遍。

唯一的遗憾是这套视频没有jQuery和bootstrap 等前端内容,需要自己另外找。jQuery可以去菜鸟教程或者w3cschool学一下就好了。或者看就业班的。农历新年我会更新进阶版的学习路线,里面会补充。

推荐网络博文:JavaWeb学习总结 - 标签 - 孤傲苍狼 - 博客园
孤傲苍狼的博文,大概是根据传智方立勋或者其他老师的视频再加上自己的理解写成的。还是非常不错的。我推荐大家学习崔老师的视频时,多关注崔老师的word笔记、孤傲苍狼的博文,也可以看看我的思维导图。一定要多看,集思广益。


3,ssh框架(按顺序,建议20天):

重点看Spring,Struts2和Hibernate了解思想就好,看完就忘掉!!公司基本不用了。

崔希凡Struts2 + 刘悦东ssh框架 + 王泽2016ssh框架 + 王泽ssh综合项目实战

①崔希凡Struts2(衔接JavaWeb,作为过渡)

②刘悦东ssh框架(Struts2讲得不错)+ 梁桐spring

③王泽2016ssh框架(言简意赅,思路清晰) + ssh综合项目实战(最后Dao抽取不错)

崔老师的Struts2毕竟是2013年的,有点老了,会比较琐碎。最重要的是,现在Struts2都不怎用了,作为了解的话,主要看值栈和拦截器,了解思想。 这部分视频主要是为了给JavaWeb看崔老师视频的朋友一个过渡。怕你们舍不得崔老师。其实其他老师框架也讲得非常好。比如刘悦东,广陵散等。

看完崔Struts2,就看刘悦东的框架,hibernate重点了解思想,Struts2几个视频中他讲得最好最深。

最后,有了上面的铺垫,再看王泽的ssh2016,条理非常清晰,精炼,没有一句废话。每天只有2.5小时。过一遍很快。

为什么三个框架要看这么多视频?因为零基础初学者要进入框架学习其实需要适应时间。就好比广陵散(王泽)的,我一开始就是看他的,当时就想:什么东西?上来就讲一大堆配置?学习任何东西我都希望能知其然知其所以然,比较讨厌死记硬背。所以我列的视频顺序,是为了照顾初学者心理。

学习任何框架一定要知道,在没有它之前,前人是怎么做的,那样做存在哪些弊端,而框架又是怎么解决的。这样学才能形自己的理解。刘悦东和崔希凡算是课程上得比较有意思的。让他们带你们入门,心里好接受些。

但框架东西毕竟太多,最终还是要王泽这样精炼简洁的讲解给你们梳理一遍。 最后跟着王泽的ssh项目做一遍,ssh框架也就算入门了。struts2和hibernate理解思想即可,因为不用了!!但也不要走过场。你不了解Struts2和Hibernate,你就不知道学习SpringMVC和MyBatis有什么好处,各自的优缺点是什么,因为没有对比!!

我的建议是,Struts2和Hibernate做做笔记,了解思想。不用去敲代码。把你的大脑空出来给后面的springmvc和mybatis。都学的话,会混!!


3.5,崔希凡JavaWeb(day17~19,day27~28)

Javaweb阶段你可能觉得上面这几天内容不明觉厉,但又不知道具体有何用处。等你学完SSH就会发现这部分内容是真的很吊。看崔老师的JDBC能一窥框架的事务原理,基础加强讲到了如何利用注解+反射搭建山寨版的hibernate和spring。


4,SSM框架(重点中的重点)

①李旭讲的mybatis和springmvc

②黑马的《springmvc、Mybatis由浅入深教程》

③在掌握了上面的视频内容并有自己的一些见解后再去看尚硅谷的Mybatis,有稍微讲一下源码。

之所以先看李旭的springmvc和mybatis,原因无他,就因为他只讲重点,讲得快。总共十小时,讲完两套框架。如果你领悟力够强,理论上就成了。但绝大部分人都不可能看这么一套视频就会用sm框架。所以在看李旭的视频时,要随时记录自己的疑问,然后看燕青的视频时,带着疑问去学习。mybatis主要关注输入映射+sql配置+输出映射,了解mybatis如何解决jdbc的不足。springmvc没什么建议...自己看着办。


5,学习方法:

小白自学的难点在于: 1,找不到合适的资料。2,不知道学习重点。

我的学习路线,是个人认为最适合小白的。 至于学习方法,即使我这篇文章给出了重点,可能你们还是不会相信。所以我建议:不要想着彻底掌握一块知识点再去学下一块知识点,这样永远不可能把这一套视频学好。

你应该在理解的前提下用最快的时间完整过一遍,对整体学习路线有个把握。第一次学习争取每个知识点懂个50-60%,专门搞个txt文档记录观看过程中的疑问点,从后面的内容判断前面哪些知识点是重要的,常用的。然后回过头来有重点地攻克,抓大放小。

最后,我推荐的视频都是自己用过的,对比挑出来的。尽量追求深入浅出,通俗易懂。如果你觉得没看懂,就多看几遍!!“多看几遍”是最简单朴素道理,很奏效。但是很少有人相信。其他的跟着视频就好。前期用记事本工具,我用的是notepad++,你也可以用EditPlus。后期用MyEclipse,其实就是多了插件的eclipse。要尽快熟悉MyEclipse的各种快捷键。

bravo1988:零基础Java学习路线


bravo1988:零基础看视频还是看书?


如何理解 ssh 三大框架?

如果是自学的话,先建议你看看视频教程等自己了解了Java再去看书籍。

视频教程的话建议你先看看零基础的视频教程,Java教程中讲解了Java开发环境搭建、Java基础语法、Java面向对象。每一个知识点都讲解的非常细腻,由浅入深。Java基础入门教程

看完基础的教程之后在继续观看JavaSE的进阶教程,Java视频教程适合有一定编程语言基础的学员观看,在本Java视频教程中讲解了Java开发环境搭建、Java基础语法、面向对象、异常、数组、常用类、集合、IO流、线程、反射机制。该Java视频教程为讲师上课实录,共60个课时(1小时为1个课时)JavaSE进阶教程

看完JavaSE进阶视频教程后继续观看XML和JServer(多线程项目)的视频教程。

XMLJava视频教程主要讲解了可扩展标记语言XML,主要包含的内容有:XML概述、XML和HTML的区别与联系、异构系统整合理论、DTD/XSL/XSD、DOM解析、SAX解析、Java对XML文件的解析之dom4j,通过该视频主要掌握XML在开发中的作用以及如何解析XML文件。

JServer(多线程项目)Java视频教程主要任务是开发一个基于HTTP协议的Web服务器,也就是说手动开发一个Apache Tomcat服务器,从Java基础向JavaWEB过渡时学习此课程,可以让你很轻松掌握Servlet本质,服务器开发中使用了Java的网络编程、Java的多线程、Java的集合等知识,并且同时深度剖析了HTTP协议,制定了Servlet规范,并同时对Servlet规范进行了实现,最终在服务器开发成功后,又开发了Web应用对Web服务器进行测试,对于学习完Java基础向Java web过渡的同学,本Java教程是你的不二之选。XML及JServer(多线程)基础视频教程。这是JavaSE的全部知识点。如果想要看更多的视频教程请关注Java教程_Java零基础自学完整集锦。

学习Java的书籍:

1、《Effective Java中文版(第2版)》

  《Effective Java中文版(第2版)》的内容包括:

  全新的泛型、枚举、注解、自动装箱、fof-each循环、可变参数、并发机制,等等。

  经典主题的全新技术和实践,包括对象.类、类库、方法和序列化。

  如何避免Java编程语言中常被误解的细微之处:陷阱和缺陷。

2、《Java核心技术 卷I:基础知识(原书第10版)》

全新第10版!Java领域极具影响力和价值的著作之一,与《Java编程思想》齐名,10余年全球畅销不衰,广受好评

3、《深入分析Java Web技术内幕(修订版)》

阿里巴巴集团技术丛书。技术大牛范禹、玉伯、毕玄联合力荐!大型互联网公司开发应用实践!

4、《Java EE互联网轻量级框架整合开发》

(Spring MVC+Spring+MyBatis)和Redis实现 java ee企业

5、《高性能MySQL(第3版)》

《高性能MySQL(第3版)》是MySQL 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了MySQL5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16章和6 个附录,内容涵盖MySQL架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的MySQL和MySQL相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。

  《高性能MySQL(第3版)》不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。

6、《Oracle查询优化改写技巧与案例》

字典式写作,覆盖大多数DBA日常工作场景,分享大量SQL优化的实际工作经验

7、《大型网站系统与Java中间件实践》

《大型网站系统与Java中间件实践》出自淘宝技术部总监之手,他也是淘宝近10年来历次技术飞跃的参与者、贡献者和带领者,其中的经验直接来自淘宝服务框架、消息中间件及数据访问层。

8、尽在双11 阿里巴巴技术演进与超越

30多位P10级大牛联合打造,细数阿里八年技术演进,揭秘亿级流量网站技术进阶之路

9、《人人都是架构师:分布式系统架构落地与瓶颈突破

真正的大型网站架构解决方案来了!

10、《揭秘Java虚拟机:JVM设计原理与实现

Java工程师高质量成长的必读本,谷歌官方认可的android开发语言Kotlin的基石。看透JVM设计思想与原理,彻底领悟JAVA编程精髓,以不变应万变!

学完上面那些,就达到高级工程师的要求,但是还是有许多底层的知识点,比如多线程、并发、设计模式、各种服务器、Linux等知识。


大家学习的时候参考下面的Java的学习路线:

1、java基本语法(1 编写 HelloWorld、2 常量、3 变量、4 数据类型、5 运算符、6 方法、7 流程控制语句、8 IDEA使用:目前企业使用最多开发工具、9 数组)

2、面向对象(1 类、2 对象、3 封装、继承、多态、4 构造器、5super、this、6 接口、抽象类、7 权限修饰符、8 内部类、9 Random、ArrayList、String、Arrays、Math)

3、API(常用API:1 Date、2 DateFormat、3 Calendar、4 System、5 StringBuilde)

4、集合(1 Collection、2 泛型、3 List、4 Set、5 Collections、6 Map、7 HashMap)

5、异常(1 异常体系、2 异常分类、3 声明抛出捕获异常、4 自定义异常)

6、多线程(1 线程概念、2 线程同步、3 Lock、4 线程生命周期、5 线程池)

7、Lambda表达式(1 函数式思想概述、2 Lambda标准格式、3 Lambda语法与注意事项)

8、IO流(1 文件、2 字节流、字符流、3 转换流、高效流)

9、网络编程(1 网络编程三要素、2 Socket原理机制、3 UDP传输、4 TCP传输)

10、数据库(1 mysql、2 jdbc、3 连接池、4 JdbcTemplate )

11、前端技术(1 html5、2 css、3 javascript、4 bootstrap)

12、linux(1 linux安装、2 目录操作、3 文件操作、4 网络操作等)

13、nginx( nginx安装、配置、部署)

14、xml与(1 xml基本语法、2 约束)

15、jsonp( 1 jsoup概述、2 jsoup作用使用、3 xpath)

16、Servlet(1 tomcat、2 request、response、3 cookie、session、4 jsp、el、jstl、Filter)

17、web异步开发(1 jquery3、2 ajax、3 json)

18、redis(1 nosql介绍、2 redis数据类型、3 常用命令、4 jedis)

19、maven(1 maven概念与作用、2 idea集成maven、3 maven常用命令、4 依赖管理)

20、spring(1 spring体系结构、2 spring配置、3 bean管理、 4 IOC/DI、AOP、5 事务管理、6 spring5新特性 )

21、spring mvc(1 springmvc概述、2 控制器、3 常用注解、4 参数绑定、5 json数据交换、6 resutful、7 拦截器、8 文件上传、9 异常处理)

22、mybatis(1 自定义mybatis框架、2 mybatis入门、3 架构分析、4 常用API、5 配置与事务管理、6 mapper代理、7 数据封装、8 动态sql、9 关联查询、10 性能优化、11 查询缓存、12 SSM整合)

23、拓展(1 Oracle、2 springboot、3、spring data jpa、4 springcloud、5 vue.js 、6 分布式服务、7 中间件 、8 高并发 、9 微服务技术 等等)

以上路线 2-4月就可以学完,如需要定制学习路线和视频资料请关注,私信我(非培训机构,程序猿一枚哦)。。。

首先,应答主要求,推荐所有Java相关需要的书籍,我只推荐个人看过的还可以的。一切只按照个人习惯推荐一部分,非专家,非人生指导师。

然后,代码可不是看书就能看会的,三分学习七分练才是王道!


JavaSE篇

JavaSE,全称 Java Platform, Standard Edition,也就是Java基础平台的简称,所谓基础平台,就是Java平台的基础了。学习JavaSE差不多就算入门了一部分,毕竟,学习一门语言,不是会写给小程序就算入门了,而是面对企业开发,毕竟技术是需要产生生产力的。

  1. Head First Java


《Head First Java》(中文版)(第2版)是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括线程、网络与分布式程序等项目。最重要的,你会学会如何像个面向对象开发者一样去思考。

这本书相对简单,简单到原文有很多关于程序的小漫画。对于那些对程序完全没有一点概念的人,这本书无疑是比较友好的。最开始的我们,需要的就是这样简单通俗的书籍。


2. Java编程的逻辑


这本书和别的书有什么不同?
简单来说,其他书大多教你怎么用,而这本书帮助你透彻理解,从基本概念到高层框架,剖析实现原理与JDK源代码,融合专业理论与应用实践,使你透彻理解Java编程的实现原理和思维逻辑,融会贯通。具体来说:
1)对于每个编程概念,不仅介绍了语法和用法,还分析了为什么要有这个概念,实现原理是什么,背后的思维逻辑是什么;
2)对于Java的主要API(如Java基础类、各种容器类、文件、并发包等),不仅介绍了用法、示例和应用,还剖析了大量JDK源代码,解释了其内部实现机制;
3)对于实践中常用的系统程序和框架,如键值数据库、消息队列、序列化框架、DI(依赖注入)容器、AOP(面向切面编程)框架、热部署、模板引擎等,本书利用基本API演示了其基本实现原理;
4)本书不仅注重实现原理,同样重视实用性,介绍了很多实践中常用的技术,包含了不少实际开发中积累的经验和教训,使读者可以少走一些弯路;
5)本书虽然是Java语言描述,但以更为通用的编程逻辑为主,融入了很多通用的编程相关知识,如二进制、编码、数据结构和算法、设计模式、操作系统、编程思维等;
6)本书高度注重表述,尽力站在读者的角度,循序渐进、简洁透彻、通俗易懂。

这本书就没有前面那本有影响力了,但是个人觉得这是一本还不错的书,当然,对于Java完全不懂的人来说,这本书依然会看起来有些吃力。本书所包含的案例更全,代码解析也比较多,但不像前面那本还有简单的小漫画之类的。先看完前面那本再看这本的话,会好很多。


3. thinking in java(Java编程思想)

本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。
从本书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作。本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、JavaI/O系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的绝佳教材和参考书。

这本书很多知友都推荐过,怎么说呢,这本书相当于是教科书/API级别的,看起来就比较晦涩难懂。而且,这本书不是一下或者过一遍就能懂的。按我个人愚见,这本书可能至少需要看三遍以上。所以这本书需要跟随你好几年,多看几遍才对。且在这个时候,我并不推荐你看虚拟机,在我认为,这个时候看这本书毫无意义。


  • 总结
    • JavaSE部分的内容,我只有这三本书推荐给你,在这里面,我认为你可以直接略过不看GUI/Swing部分。Java关于桌面应用这块儿,已经没有公司使用它了,因为从桌面端开发来看,它甚至不如winform。也许你会说,会不会太少了,编程学习中,书不在多,而在于写。如果把学习编程划成10分,看书三分,写七分。
    • 每一个篇幅的学习,都应该有一些个人总结,资料整理的过程。所以我建议你可以下一个EverNote/有道云笔记。在使用之前可以学习一下markdown的使用,让你的笔记更加美观。整理总结的过程,相当于知识加深的一个过程,你完全没必要刻意的非得使用一个笔记本来手写所有的笔记,那样的话,效率太低。在学习编程的过程中,你可以将这些好习惯延申到工作中,对你以后的工作大有益处。

Web篇

Web主要分为HTML、CSS、JavaScript、jQuery和其他常用的前端轮子。

在说书之前,说说我个人的感想,在Java篇幅中学习web的话,其实w3school就够了。

w3school 在线教程

这个网站例子以及文档都比较简单明细,照着html、css、js的顺序看即可.当然,可能仍然还有很许多人喜欢看书,那么我就各推荐一本吧.


1.HTML5

首先这里扫盲一下,不要以为HTML5是一门新的技术,就比你之前听说的HTML屌,实际上,目前说的HTML的全称是HTML 4.01,而这个标准发布于2000年左右,我没记错的话。而HTML5是万维网于14年发布并确认的新标准。那么这两者之间的关系是什么呢? 从4.01-》5,很明显,这是版本升级,一般版本升级无非就是加入新的功能,HTML升级规范就是加了更多的标签、对象和特性。说白了,就是为了用规范来告诉各大浏览器厂商升级支持,让HTML更美观好看,功能更多。具体细节请直接百度

你可能想创建具有动态性、交互性、包含丰富数据而且互连的Web页面。先等一下,Web页面?为什么不用HTML5创建成熟的Web应用呢?另外,为什么不使用现代技术,像在移动设备上一样轻松地应用到桌面浏览器呢?当然,你肯定希望使用最新的HTML5技术来完成,比如地理定位、视频、2D绘制、Web存储、Web工作线程等,是不是?《Head First HTML5 Programming(中文版)》就是你的车票,拿到这张车票,你就能轻松地学习如何使用当前的标准和将来的最佳实践来构建Web应用。当然,在这本书中你会了解HTML5新API的基础知识,更妙的是,还将学习这些API如何与你的页面交互,JavaScript如何为这些API助一臂之力,以及如何使用这些API来构建让你的老板和朋友对你刮目相看的Web应用。


这本书基本上满足你的好奇心吧,比较入门级别的HTML丛书,w3cschool满足不了你的或者不齐全的内容,这本书里基本上也都有。


----------待完善-------------

2.CSS

3.JavaScript



JavaEE篇



框架篇

这是一套相对比较完整的学习路线图。

零基础的话肯定是要先学习java零基础的,从java零基础开始一个阶段一个极端的开始学。

第一阶段:JavaSE基础,一定要把基础打好了,以后的知乎才能学的更彻底。

JavaSE基础包括:Java开发环境搭建、Java基础语法、Java面向对象。


1、Java开发环境搭建:Java程序的加载与执行;类加载器机制;Java8的下载与安装;path和classpath环境变量;第一个Java程序的编写;Java中的注释;public class和class的区别;


2、Java基础语法:标识符;关键字;字面量;数据类型;字符编码;进制换算;变量;运算符;控制语句 ;方法;方法重载;方法执行的内存分析;递归算法;


3、Java面向对象:面向过程和面向对象的区别、类和对象、this、super、JVM运行内存剖析、成员变量 和局部变量、隐藏和封装、深入构造器、类的继承、方法重写、多态、继承与组合、初 始化块、处理对象、类成员、final 修饰符、抽象类、接口及作用、内部类、枚举类、 对象与垃圾回收、修饰符的适用范围、使用Jar文件、内部类


第二阶段:环境搭建、基础语法、面向对象核心、异常、数组、常用类、集合、线程、IO流、反射机制、网络编程。


1、异常:异常继承结构图、捕捉异常、声明异常、异常与方法重写、自定义异常、手动抛出异常 、Java7多异常捕获、 访问异常信息、 使用finally回收资源、 异常处理的嵌套、Java 7自动关闭资源、catch 和 throw 同时使用、Java7增强的throw 语句、异常链追踪 信息。


2、数组/算法:数组存储结构、数组优缺点、一维数组、二维数组、多维数组、冒泡排序、选择排序、 二分法查找、工具类Arrays、二维数组实现酒店管理系统、数组拷贝、main方法的 args参数解析、数组扩容。


3、常用类:字符串相关String、StringBuffer、StringBuilder;八种基本数据类型对应的包装类 ;日期处理相关;数字处理相关;枚举类型;


4、集合/数据结构:Collection和Map集合继承结构图;Collections工具类;Iterator迭代集合;Array List、LinkedList、Vector集合适用场景分析以及Vector使用较少的原因;数组、单 向链表、双向链表数据结构;各种集合源码级分析;哈希表散列表数据结构;Hashtab le以及Properties属性类详解;SorteMap、TreeSet、TreeMap集合排序机制;红 黑树;


5、IO流:迅雷下载演示流的原理;流的分类;装饰器设计模式;IO流体系继承结构;文件字节/字 符输入输出流;带有缓冲区的字节/字符输入输出流;对象流、序列化和反序列化;标准 输出流、改变标准输出流的输出方向;数据流;文件File类以及递归算法复制目录;zip 压缩技术;


6、线程线程和进程;线程生命周期;线程调度;线程同步


7、反射机制获取Class的方式;读取配置文件中的类名来实例化对象;通过反射操作Field、Metho d、Constructor;通过反射机制调用Method;通过反射获取父类型;


8、网络编程IP地址以及端口号的作用;TCP/IP协议;UrlDecoder和UrlEncoder;Socket编程基 础;UDP协议以及多点广播;


9、注解Annotation注解和配置文件的区别;Java自带注解;自定义注解;通过反射机制读取注解;


10、MySQL初级MySQL的安装与配置;常用命令;简单查询;条件查询;排序;数据处理函数;分组函 数;分组查询;连接查询;子查询;union;limit;表的创建;增删改表结构;约束; 存储引擎;事务;索引;视图;DBA命令;数据库设计三范式;MySQL存储过程;


11、JDBCJDBC本质;JDBC开发前准备工作;编程六步;采用Class.forName方式注册驱动以 及注册原理;SQL注入;防止SQL注入;Statement和PreparedStatment对比; JDBC事务;JDBC行级锁;JDBC实现银行账户转账;

这一个阶段是最近刚更新的视频教程,这套视频教程为301一集的视频教程,可谓是史上最全、最细的视频教程。


第三阶段:


1、HTML/HTML5HTML基本结构、HTML表格、HTML超链接、HTML图片、HTML背景图片和背景色、 HTML字体、HTML列表、HTML基本标签、HTML格式标签、HTML实体符号、HTML 表单、HTML向服务器发送请求的多种方式、HTML DOM、HTML节点id属性、div和 span布局、HTML框架。


2、CSS/CSS3标签选择器、ID选择器、类选择器、CSS高级语法、派生选择器、属性选择器、CSS常 用样式、CSS框模型、CSS定位


3、JavaScriptJavaScript核心语法;JavaScript DOM编程;JavaScript BOM编程;JavaScript 继承;JavaScript闭包;手动开发jQuery框架;


4、jQueryjQuery九大选择器;增删改节点;样式操作;属性操作;事件操作;


5、Bootstrap下拉菜单、按钮组、按钮式下拉菜单,输入框组、面板和Well、警告框、进度条和列表 组件、导航和导航条Bootstrap媒体对象、栅格系统


6、XML+XPathXML是什么;开发中主要用XML干什么;XML和HTML的区别与联系;XML/DTD/XS D/XSL关系;XML的SAX解析和DOM解析;Java解析XML;dom4j解析XML;XML +XPath解析XML文件;


7、ServletServlet/GenericServlet/HttpServlet;Servlet生命周期;Http协议剖析;GET和 POST区别;转发和重定向;Cookie;Session;Servlet规范中常用接口的讲解;


8、JspJsp本质;Jsp和Servlet区别以及职责;小脚本;声明;表达式;动作;九大内置对象


9、EL通过EL表达式从作用域中取数据;EL的隐含对象;从数组、List、Map中取数据;EL常 用运算符;


10、JSTL核心标签core的使用;JSTL的实现原理;自定义标签;


第四阶段:


1、Filter实现Filter过滤器、Filter中方法剖析、Gof设计模式之责任链设计模式、剖析Tomcat 服务器源码查看Filter调用过程、字符编码过滤器实现、web站点登录拦截过滤器实现 、web站点ip地址过滤器实现、AOP编程思想、Filter生命周期、FilterConfig详解


2、Listener怎么实现一个Listener监听器、ServletContextListener详解、SessionListener详 解、Session对象销毁时完成购物车持久化操作、Gof设计模式之监听器模式、服务器 启动时监听器初始化资源、服务器关闭时监听器回收资源


3、Servlet3.0@WebServlet、@WebInitParam、@WebFilter、@WebListener、 @MultipartConfig、异步处理支持、可插性增强、ServletContext性能增强、 HttpServletRequest对文件上传的支持


4、AJAXajax发送get/post请求、eval函数、json处理、中文乱码解决方案、ajax核心对象创 建、注册回调函数、回调函数详解、readyState属性详解、status属性详解、 responseText属性详解、ajax完成自动补全功能、下拉列表联动效果、表单验证效果


5、MVC系统职能分工、MVC架构模式优点、开发原则:高内聚、低耦合。组件独立性/复用性、 Model数据:业务数据分析service、数据库数据分析dao。View视图:JSP、 Freemarker等。Controller控制器:完成调度,管理Model与View。MVC体现了 Gof设计模式之监听模式


6、ThreadLocal系统职能分工、MVC架构模式优点、开发原则:高内聚、低耦合。组件独立性/复用性、 Model数据:业务数据分析service、数据库数据分析dao。View视图:JSP、 Freemarker等。Controller控制器:完成调度,管理Model与View。MVC体现了 Gof设计模式之监听模式


7、Gof之代理模式静态代理模式;JDK自带的动态代理;CGLIB代理;动态代理方式控制事务;


8、连接池/C3P0/DBCP/Druid连接池实现原理;常用连接池C3P0/DBCP的使用;阿里巴巴的Druid连接池;


9、JNDIJava Naming and Directory Interface,SUN公司提供的一种标准的Java命名系统 接口;JNDI和连接池联合使用;


10、Gof之工厂模式工厂模式的适用场合、简单工厂模式、工厂方法模式、抽象工厂模式


11、MySQL高级事务、隔离级别、隔离级别与一致性问题的关系、并发事务与隔离级别示例、MySQL架 构组成,MySQL备份和恢复,MySQL查询和索引优化、MySQL存储引擎优化, MySQL锁机制优化及高可用设计、MySQL集群、视图、DBA命令、导入导出


12、OracleOracle的安装、服务的启动和关闭、监听器、网络服务名、VARCHAR2、sequence、 rowid、rownum、通用的分页SQL、Oracle索引实现原理剖析、数据库安全管理、表 空间、系统表、PLSQL Developer客户端工具的使用


13、PL/SQLPL/ SQL 字符集、 PL/ SQL 块、 PL/ SQL 高级编程、用 PL/ SQL 程序访问数据库、 声明和使用子程序、过程和函数、记录类型、%type和%rowtype属性、游标、集合、 异常处理、 PL/SQL 程序类型(包括:匿名 PL/SQL 块、存储过程和函数、删除存储过 程和函数 ) 、触发器


14、SQL优化什么是执行计划、SQL语句是否清楚的告诉查询优化器它想干什么、索引查找和全表扫 描、统一SQL语句写法、不要把SQL语句编写的太复杂、清晰SQL语句执行顺序、使用 临时表暂存中间结果、一些SQL查询语句添加nolock、使用like进行模糊查询应注意什 么、数据类型的隐式转换对查询效率的影响、尽量避免大事务操作,提高系统并发能力


15、MyBatisMyBatis实现原理、MyBatis入门、安装和配置MyBatis、使用映射语句、执行非查询 语句、使用高级查询技术、事务、使用动态SQL、使用高速缓存提高性能、MyBatis数 据访问对象、DAO使用进阶


每个阶段的视频教程都在我的专栏里。如果你喜欢这些知识点就去我的专栏里获取吧。

不请自来~~

Java火热,想学Java开发的人也越来越多~

我作为一个转行做JAVA的“过来人”回答这个问题还是比较有资格的,我是报班学的。我觉得这就是最有效,最快的学习方式,大家都经历过各个阶段的学习,任何时候大家都应该明白有一个经验丰富的老师教,遇到问题随时可以解答,并且遇到错误能够第一时间被发现和被改正,这是进步最快的方式。

相信以下罗列的五个问题是所有初学者学习Java最重要的几个问题。整个互联网在不断发展,Java技术也在不断进步,Java应用会越来越广泛,人才需求当然也不会止步于当前,所以不论现在还是未来,优秀Java工程师将成为市场争抢的资源,所以赶快抓紧时间去学好Java吧!

作为新手学习JAVA首先会遇到这些问题需要解决:

问题一:是否去培训

如果你的自制力和学习能力比较强的话,可以选择自学。但如果你这些都不具备又想赶快就业的,那么建议你选择一家靠谱能学到真本事的Java培训机构。现在网络这么方便,在线学习非常的方便,经济实惠,不受地域和空间的限制,只要你有网络在家就可以跟着老师面对面学习。

问题二:能看懂,不会写

这或许是很多Java初学者会遇到的问题。就是看视频或者听课的时候,能看懂,但是就是不会写。这个时候我们或许需要换一个适合自己的学习方法。课前预习课后复习,经常练习,不断的敲代码,这样可以加深你对代码的印象。

问题三:学完就忘记

我们如果克服了第一问题,就会立马迎来第二个问题,比如我们的HTML标签和一些css属性,用浮动去实现一个效果,几天之后发现,这个我怎么不会用了,就在脑海中,怎么都想不起来。如何解决这个问题呢?我们学习每一个知识点,必须跟三个案例以上,只有应用到实处,实际操作中,才能更好的记忆,在你学习之后的知识点,要不断的温习前面的东西,不然一定会忘记。

问题三:是否应该看书学

见过很多新手说,买一本从入门到精通的Java书,如果你觉得看一本书就可以学好Java找工作,那这个工作好像谁都可以做,新手在初学Java时建议别看书,等你学完一遍Java之后,在去看书籍,这样可能效果会非常的好,对于你前面学习的一些没有太懂的东西,进行了查缺补漏。

问题四:学了担心找不到工作

很多人学习Java基本上为了找工作,大多数人都担心一个严重的事情就是如何找找工作。根据职友集数据显示,北京、上海、深圳、杭州、广州等一线城市Java招聘需求量均过万,其中北京达到了48021个职位,上海达到了30332个职位,人才需求量非常大。并且全国Java平均工资:¥ 12330/月,随着工作年限的增加,工资也是一涨再涨。

在下是某985小硕,在2018年的校园招聘中拿到BAT头条网易滴滴亚马逊的offer。我用了两年的时间从一个小白成长成为了能够进入BAT的JAVA工程师,下面我也会分享一下我零基础自学Java的心得体会和学习路线,一路走来也遇到很多困难,也踩了很多坑,同时我自己也探索了很多的学习方法,总结了很多心得体会,

我写过一个Java工程师学习指南,我把它分为了四个部分,第一步是打好Java基础,掌握Java核心技术,第二步是掌握Java Web技术栈,能够做一些项目,第三步是掌握Java方面的进阶技术,包括网络编程、并发编程、JVM等,第四步是掌握后端进阶技术,比如分布式、缓存、消息队列等技术。

按照这样的一个脉络,我觉得能够掌握这里面的绝大部分内容,并且有过相应的一些实践,那么可以算是学好了Java。当然,学好Java只是一个开始,要真的干好活,做好项目,以及其他各方面的技术工作,则是在学好Java的基础去延伸和展开的。

最近开了个微信公众号【Java技术江湖】致力于分享Java技术文章,将会记录我两年时间里学习Java的经验心得,以及在阿里的技术之路,有兴趣的朋友可以了解关注一下。

接下来就是具体的四篇文章,建议大家按顺序阅读,有点长,收藏的时候记得点赞或者评论哈。笔芯!

Java工程师学习指南

入门篇

最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线。

所以,今天我们重新开一个新的专题,分别按照四篇文章讲述Java的学习路线(分别是入门篇,初级篇,中级篇,高级篇),笔者也打算趁此机会,回忆一下自己的Java学习历程。今天我们要讲的是,小白同学如何入门Java。

先声明一点,文章内容不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦。

本文所述的方法不一定适合所有人,如有错误敬请谅解。

01 前期准备工作

开发环境搭建

这一步我们往往会直接跳过,但既然是面向小白的教程,这里就提一下吧。首先你需要一台电脑,然后安装好JDK和JRE,JDK提供的是Java开发工具,也就是一些必备的jar包,JRE则是Java的运行环境组件,我们熟悉的JVM就在这里面。

安装好这两个东东之后,一般还要配置一下环境变量,否则有一些目录可能无法被正确找到。

IDE选择和安装

IDE指的就是本地开发编辑器,没有了它,你就只能直接在记事本这类工具里敲代码了。IDE最大的好处就是整合了大量的工具和功能模块,让你非常轻松地完成开发。

以前大家都用eclipse,不过eclipse已经不流行了,现在我推荐你直接用intellij idea作为你的第一个代码编辑器。如果是用过eclipse的同学,基本上也可以无痛切换。

intellij idea可以直接在官网上下载,试用版30天,如果想要永久使用,网上也有一些办法滴。

关于jar包

jar包是什么,其实就是将一堆class格式文件打包,Java中把它称为jar包,这些jar包在编译器中能被直接识别,让开发者使用。

对于新手来说,可能只需要用到JDK自带的一些API,但是如果你要引用外部jar包,可能就会遇到一些困难了。对于idea来说,导入外部jar包有两种办法,一种是手动导入jar包,一种是使用maven。后者会在Java Web相关的文章中讲起。

手动导入jar包其实也不难,你需要先下载好jar包,然后在对应的项目下选择导入jar包即可,具体的方法这里就不展开说了,因为在网上都找得到。

02 学习Java基础的几种方法

了解基础语法

学习一门语言,最开始要做的事情就是学习它的语法。我最早学习Java语法是在Runoob,这个网站可以让你对任意一门语言完成最快速的语法入门,当然,这只是相当于你浏览了一遍基础语法。

想要真正掌握Java语言基础,光看基础语法还远远不够,我在大三第一次接触Java课程,听老师讲面向对象三大特征听得一头雾水,连数组的初始化方式都理不清楚,但这些内容都是我们需要掌握的。所以,为了学好Java基础,我们还需要看视频或者看书进行学习。

看视频

视频的话,可以到极客学院或者慕课网听Java基础课程,当然也可以看我分享的Java视频课程。大家也都知道,现在Java的培训班非常多,基本上学的东西也都大同小异,不过它们的有些课程还不错,大家有渠道的话也可以去看一看。

看视频的好处是你可以更好地接收知识,同时也会耗费你更多实践,所以,有时候你也可以选择看书。

看书

看书的话,对于小白来说不推荐太复杂的书,比如《Java编程思想》这种书,新手千万不要看。我个人建议,你只需要先看看《Java入门到精通》这种类型的书就足够了,因为这个部分的学习只是为你后面的学习开个头,你以后可能还要回过头来重新研究这些内容。

现在市面上介绍Java基础的书籍实在太多了,质量参差不齐,内容同质化严重,笔者看过的其实也不多。给大家一个建议,你只需要挑一两本书来看即可,这里推荐两本最简单的吧,《head first java》和《Java从入门到精通》。

看博客

这里再推荐另一种学习方式,就是看博客,博客比起书籍来说,更适合对于某个技术点的学习,你可以很容易地在网上找到这个知识点相关的原理,实现方法,以及代码范例。

我的博客里没有讲解特别基础的东西,如果你看一些比较基础的文章,可以到Runoob等网站上查看。如果你有一个很明确的知识点想要学习,相信搜搜引擎会给你更好的答案。

代码实践

除此之外,一般的Java书籍或者视频课程都会要求你相应完成一些练习题,这部分内容你需要自己在电脑里使用IDE完成。

在IDE里,你可以很好地熟悉Java语言的使用,基本代码的实现,同时可以尝试各种各样的API,并且测试一些语言特性,比如继承,封装,多态等等。

另外,这也是你熟悉IDE的一个好机会,因为在公司里做开发可能要用到IDE各种各样的功能,提前熟悉好IDE绝对是有益无害的。

03 Java入门必备知识点梳理

在Java入门阶段,你可能需要接触到以下这部分知识,不管你是从通过哪种方式学习,这些内容都是你学习Java基础时绕不过的重点。

Java基础知识

这部分内容是你必须要掌握的内容,在入门阶段你需要把这些基础打扎实,以便于在学习后面的内容时可以更上一层楼。

如何把基础打扎实呢,最好的办法就是在IDE上把书上或者视频上的每个例子都实现一遍,当然有的时候你也可以自己写一些有意思的例子。

1 基本数据类型

比如int,double,char,以及其包装类。

熟悉基本数据类型的使用,了解每种类型所占的字节数,以及它们和包装类之间的相互转换。

2 流程控制

比如for循环,if else,while循环等等

如果是学过c语言的同学,这部分可以跳过了。

3 字符串类型String的使用

字符串类型是Java中很重要的类型,它不是基本数据类型,但却很常用,熟悉和实践String相关的api,开始你对字符串的学习吧。

4 数组

数组的初始化方式有哪些,二维数组应该怎么写,把数组当成方法参数又该怎么处理?

5 类和对象

Java中最重要的两个概念:类和对象,它们有什么用呢,有什么区别和联系呢,请在代码中实践它们吧。

Java核心技术

对于这部分内容,我相信很多小白只能了解它们的基本使用方法,但是并不明白其背后的一些原理:比如为什么接口和抽象类有这些区别,多态的意义是什么,为什么要有反射。

新手在学习这部分内容时,只需要知道怎么用就可以了。当然,你最好把这些特性都实现一遍,以加深印象。

至于为什么有这些特性,这些特性背后的原理是什么,不是我们现在讨论的内容,这些内容我们将在初级和中级篇中讲述。因为,要了解这些原理,你得了解JVM,了解并发技术的基础,了解网络基础,甚至更多。显然,这不是你现在能做到的。

1 接口和抽象类

写一些接口,同时写一些实现类去实现这些接口,并且了解一下为什么我们需要接口,为什么子类需要实现接口里的方法。

同理,去实现一些抽象类吧。然后,看看它和接口有什么不同。

2 继承,封装和多态

如何理解继承,子类和父类之间有什么联系呢。

封装是一种保护代码的方式,有哪些方式可以实现封装呢。

多态一般分为重载和重写,它们分别怎么使用?

3 异常处理

Java中的异常处理主要用于捕获和处理错误,请你写一些try catch代码块去捕获错误吧。

4 集合类

集合类是我们经常需要打交道的东西,List,Map,Set等等,赶快去熟悉API,然后写一些测试例子吧。

5 IO输入流和输出流

IO输入流和输出流可以操作文件,网络数据等内容,如何在Java代码中完成这么复杂的操作呢,其实只需要简单的几个api就可以了。

6 多线程

为了让系统资源最合理地分配和调度,我们需要多线程,多线程会让程序变得有趣,也会带来很多问题,使用Thread和相关API,去尝试这些有趣的事情吧。

可选内容:

1 反射(了解即可,不是入门必须)

2 枚举类型和泛型(了解即可,不是入门必须)

3 网络通信(了解基本的socket使用即可,需要网络基础)

4 数据库操作(了解基本的JDBC即可,需要数据库基础)

04 总结

总而言之,对于一个Java小白来说,入门Java可以分为这几步:

1 首先搭建好Java开发环境 2 通过Runoob等一些网站熟悉Java的基本语法 3 通过看书看视频等方式熟悉Java基础知识,通过代码实践加深理解 4 通过看书看视频等方式初步了解Java核心技术,通过代码实践加深理解。

本文主要是为大家提供一个学习的思路,以及推荐一些学习方法,如果你能够按照这样的步骤去学习,并且配合上一些适合你自己的学习方法来完成学习计划,相信你可以很好地完成对Java的入门。

Java工程师学习指南

初级篇

最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线。

所以,今天我们重新开一个新的专题,分别按照四篇文章讲述Java的学习路线(分别是入门篇,初级篇,中级篇,高级篇),笔者也打算趁此机会,回忆一下自己的Java学习历程。今天我们要讲的是,小白同学如何入门Java。

先声明一点,文章内容不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦。

本文所述的方法不一定适合所有人,如有错误敬请谅解。

01 Java Web项目指南

jav在上一篇文章中,我们讲到了入门Java的几个步骤,先搭建好环境,然后熟悉基本语法,接着熟悉Java的一些核心技术,并且在代码中进行实现。

如果你已经完成了这部分内容的学习,应该会感觉自己对Java已经有一定了解了,可以轻松地写出一些Java代码,比如实现多线程输出数字,再如操作IO流等等。

当然,这些代码通常只是一些demo,我们在实际的项目中可能并不会这么简单地使用这些技术,我们可能会同时使用集合类,多线程,以及操作数据库的API。

所以,在今天的初级篇中,我们就来谈谈怎么做项目吧。

Java Web项目

对于大部分Java新手来说,最适合他们入门的项目就是Java Web了。因为Java天然适合做Web应用,并且生态完善,更有很多开源的工具和框架去支撑这些应用,比如Spring,Hibernate,SpringMVC等等。

那么,如何开始着手做一个Java Web项目呢。个人认为最好的方式就是看视频了。因为,看书的话,很多内容比较过时,并且一般不会提供源代码。也有一些大佬喜欢推荐开源的项目(在GitHub上面的项目),但是对于小白来说,如果没有很完整的文档去指导他们,那也是毫无意义的。

曾几何时,Java Web的项目还在使用JSP + Servlet进行开发,后来出现了Struts2,再后来,出现了我们现在也一直在用的SpringMVC,说实话,不论使用哪种开发框架,你都需要先花一些时间去学习相关的技术,否则你会发现,即使是看视频,你也不知道里面在讲什么。

要想做好一个JavaWeb项目,你不仅需要一个好的项目课程,还需要足够的知识储备,下面就让我们来理一理这些内容把。

知识储备

Java基础部分的内容咱们上次说过了,这里就不再重复啦~下面我们分别来说说其他几方面的知识储备把

02 前端知识

推荐资源:在w3cschool学习html,css和js,支持在线测试代码。

既然是做Web,就难免要涉及到前端技术,不过,现在前后端分离已经是一种趋势,所以,如果你对前端不感兴趣,也没必要花太多时间去学习。

对于大部分同学来说,你最好要了解html的基本标签和格式,自己能够写一些简单页面,CSS的话,也可以稍微接触一些。相对于前面两个服务于样式的技术,我们倒是更应该去学习一下JavaScript,了解它的一些基本语法,以及ajax的使用,因为在前后端交互时,ajax是非常重要的。

所以,做一个Java Web项目,你不需要花太多时间在写前端页面上,如果有源代码可以直接使用,当然,对于一些需要修改的前端页面,你得怎么去做修改它,因为有时候你需要使用JSP,JSP既包括前端代码也包括Java代码,如果你完全看不懂前端代码的话,那就很尴尬了。

03 Java Web常用技术

JavaWeb的技术栈其实比较庞大,所以我们不要求面面俱到,只是希望你能够熟悉一下项目中可能用到的技术。下面列举一些常见的技术,大家最好要了解一下。

1 JSP和Servlet

推荐资源:《JavaWeb入门到精通》,慕课网、极客学院等网站上的JavaWeb基础课程

这是Java Web开发最原始的形态,现在很少直接使用了,但是后来的各种框架其实也是建立在servlet之上来做的。你们需要了解这两个技术分别是用来干什么的,最好能写一些demo来实践。

对于JSP,有时候你可能还要学习jstl等标签语言,因为这些标签可以让你更方便地往JSP中插入Java代码。

2 Spring和SpringMVC

推荐资源:《Spring实战》,慕课网、极客学院等网站上的SpringMVC基础课程。

事实上,除了上述资源之外,你也可以直接到官网上查看快速开始文档。

Struts2早已被时代抛弃,Spring则是当今的霸主,你需要了解Spring如何使用,以及SpringMVC如何使用,并且学会在项目中使用它。

由于SpringBoot最近很火,并且搭建方式比SpringMVC更简单,你也可以先学习SpringBoot,以便更快速地搭建起你的第一个Java Web项目。

3 MySQL

推荐资源:《Sql必知必会》,Runoob上的MySQL基础教程,慕课网、极客学院等网站上的视频课程

一个JavaWeb应用一定要有数据啊,所以我们需要用到数据库,其实搭一个mysql数据库是非常简单的,但是对于初学者来说最麻烦的就是写sql了,所以,先学会建表,熟悉sql,对你以后做项目也是大有裨益的。

4 Hibernate和Mybatis

推荐资源:Runoob上的Hibernate和Mybatis基础教程,慕课网、极客学院等网站上的视频课程

当你学会了使用sql去查询数据,可能还不足以让你在项目中很方便地处理数据,因为我们还需要一个步骤,就是把数据库的数据转化成Java里的对象。orm框架就是为了解决这一问题而出现的,它可以让一张表和Java类一一对应,让数据查询变得非常方便。Hibernate和Mybatis都是orm框架,只不过现在mybatis越来越火了。

所以,你需要了解这一技术,因为它会广泛地运用到大部分Java Web项目中。

5 Maven

推荐资源:《maven实战》,易百教程里的maven教程,慕课网、极客学院等网站上的视频课程

刚才咱们已经说过了Spring,orm框架,以及MySQL等方面的技术了。实际上,一个简单的Java Web项目也只需要这些东西了。

但是,有一个问题,就是:一个项目里用到这么多技术,所需要的jar包也会很多,我们如何管理这些jar包呢。如果直接导入所需jar包,那当jar包更新或者需要替换时,每次都要手动操作,非常麻烦。另外,当jar包很多时,项目打包后的war格式文件也会很大,不利于传输。

为了解决上述问题,maven应运而生了。maven通过pom.xml文件来指定所需的jar包,并且自带了很多构建相关的功能,比如编译,打包,运行单元测试等等,因为它本身就是一个构建工具。

当然,新手可能还难以理解这些概念,你必须要知道的是,大部分Java Web项目需要用maven来管理,你需要学会maven的基本用法,最基本的用法就是:学会修改pom.xml文件。

6 Tomcat

推荐资源:慕课网、极客学院等网站上的视频课程。

对于小白来说,Tomcat相关的技术是非常复杂的,毕竟它是一个应用服务器啊,事实上这个时候,你只需要学会如何安装Tomcat即可。毕竟,它在项目中的作用就是提供一个运行环境而已。

正常来说,你只要下载解压Tomcat的压缩包即可。由于现在的IDE都支持集成Tomcat,所以一般情况下你都可以在IDE中配置好你的Tomcat路径,然后设置好你的项目路径,IDE会自动把你的工程代码部署到Tomcat服务器上。

如果你使用想跳过IDE直接部署工程到Tomcat上,也可以直接编译工程并且打包得到war格式的文件(这个步骤可以使用maven来完成),然后拷贝war文件到Tomcat下的特定目录即可。

上述两种部署方式的详细步骤请到搜索引擎寻找答案。

7 Git和GitHub

推荐资源:廖雪峰的Git教程,GitHub官网,慕课网、极客学院等网站上的视频课程。

既然要做项目,为什么不把它发布在GitHub上。当你熟悉了Git指令之后,你可以很方便地发布你项目中的每一次更新,并且同步到GitHub上,这样既可以让你更好地管理项目版本,又可以让你GitHub更加活跃,为你未来的面试加分。

所以,赶紧学好Git指令,然后开启你的项目之旅吧。

04 其他常用组件

除了上面几种必备的技术之外,有时候我们在项目中还会用到其他东西,在这里我们把它们叫做组件。这里只做简单的介绍,至于具体怎么使用,在网上都可以很容易地找到相关文章。

1 日志系统

当项目代码比较多的时候,容易发生错误,日志可以很好地记录代码运行时的错误,常用的日志系统有log4j,logging等等,另外你还需要了解一下slf4j。

2 单元测试

日志系统可以记录代码问题,单元测试则是为了避免代码出错,常用的单元测试组件主要是JUnit,建议你找个文档看一看,然后下载下来玩一下。

3 JSON

JSON逐渐成为前后端数据交互的标准格式,为了在项目中使用JSON的API,你也需要导入它的jar包,一般我们都会使用阿里提供的fastjson,赶快下载来玩一玩吧。

当然,常用的Java Web组件还有很多,比如HTTPClient,再比如一些加密工具,一些压缩工具等等,这里就不再一一列举了。

05 推荐项目课程

现在网上的项目课程那么多,哪一款更适合你呢?

其实我看过的视频课程也不是很多,早先在慕课网和极客学院看过一些项目课程,觉得比较一般,对新手来说不太友好。

我的一些同学看过一些培训机构的课程,专业讲师录的项目课程可能会稍微好一点。在我公众号后台回复“Java”可以领取某机构的视频课程,不过我不是打广告的,这个机构也没有给我钱啦。

当然,你也可以自己去找一些你感兴趣的项目课程,后续我也会收集更多的视频课程来分享给大家。

PS:如果找不到我说的这些资源,也可以微信私我。老规矩,公众号后台回复“少侠”可以勾搭作者。

06 总结

今天的内容就到这里了,与其说是初级篇,反而更像是“项目篇”呢。因为学完基础内容之后,做项目是最好的复习和实践方式了。所以这篇文章围绕着做项目来展开,也就不足为奇了。

今天我们主要讲的是,做好一个JavaWeb项目,需要哪些知识储备,需要了解哪些技术,并且我也推荐一些比较精品的视频课程。

后面我还会写一篇文章,专门讲一讲怎么做项目,会更加详细,更加侧重怎么去做,敬请期待吧。

总结以下今天说的几个要点吧:

1 Java基础知识储备 2 前端知识储备 3 了解和使用JavaWeb常用技术 4 JavaWeb常用组件介绍 5 视频课程推荐

俗话说的好,磨刀不误砍柴工,相信你看了本文之后,可以更好地做好知识储备,然后开始Java Web的项目实践,希望你能够顺利地完成你的第一个项目。

▼更多精彩内容

想了解Java后端学习路线?你只需要这一张图!

Java工程师修炼之路(校招总结)

你不可错过的Java学习资源清单

Java基础知识点总结

Java秋招面经大合集

笔者在今年秋招中成功拿到BAT头条网易等大厂的研发offer,期间总结了很多经验和技巧,我把它们写成文字,做成专题,发表在公众号上,希望让更多有需要的朋友看到。

关注微信公众号【程序员江湖】后,可以在后台回复“Java”即可领取精品Java学习资源(不断更新中),学习资源包括基础,实战以及求职等内容。

1、后台回复“少侠”,可以获取我的微信,有什么问题都能聊。 2、如果你想要加入微信交流群,那么可以在后台回复“江湖”。 3、如果你想要到我的技术博客看更多的Java后端技术文章,请回复“练级”。

Java工程师学习指南

中级篇

最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线。

所以,今天我们重新开一个新的专题,分别按照四个部分讲述Java的学习路线,笔者也打算趁此机会,回忆一下自己的Java学习历程。今天我们要讲的是第三部分,Java工程师学习指南(中级篇)。

先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦。

当然,本文提到的大部分内容都能在我的博客中找到对应的一些文章。所以也欢迎大家去我博客找到你们需要的资源。

本文中的方法不一定适合所有人,如有错误还请谅解。

上期回顾

在上一篇文章中,我们主要讨论的是如何做一个Java Web项目,以及前期需要哪些方面的基础。最后,我还推荐了几个比较不错的视频课程,以便给大家参考。

当然,跟着视频课程做完一个项目,你只是照葫芦画瓢又练习了一遍,可能其中有很多东西你并不太理解,比如你可能不知道为什么代码要分层,为什么要用maven进行线上编译,为什么Tomcat启动时会输出那么多的日志。

有疑问很正常,因为一个Java Web项目涉及的技术还是很多的,如果要理解这些技术的原理,光靠一个项目课程是远远不够的。所以,在你体验了Java Web项目的开发流程以后,你应该花些时间去了解相关技术原理了,今天我们要讲的也是这部分内容。

对于即将参加校招的同学来说,最重要的也是这部分内容,你需要了解JVM虚拟机原理,Java并发原理,并且熟悉JDK的部分源码,了解这些API的底层实现。除此之外,还有很多,下面我们分别来谈一谈。

PS:文中多次提到我的博客,是因为我的博客里整理了多个技术专栏,基本上包含了下面所说的内容。关注公众号后,在公众号后台回复“练级”即可获得我的技术博客地址,以及其他相关的资源。

01 计算机基础知识

计算机基础课程(非科班)

如果你不是计算机专业的同学,那你可能要注意一下了。在学习下面这些内容之前,你最好要学习一下计算机基础课程。

这里我们说的计算机课程是:数据结构,操作系统,计算机网络。

数据结构:这门课应该算是三门课程比较简单的一门了,推荐《数据结构与算法(Java语言描述)》,看书结合代码实践,把基本的数据结构算法写一写就可以了。

操作系统:关于操作系统我看了很多本书,但是没有感觉特别好的,所以如果有时间的话可以先看另外一本书《深入理解计算机系统》,这本书讲了很多计算机的基本概念,不局限于操作系统。

然后可以看一看汤小丹写的《操作系统》,或者你们学校的教材。

计算机网络:网络方面的书也非常多,推荐看一下《计算机网络:自顶向下方法》,另外还有一本《TCP/IP 详解:卷一》也是备受推崇的书。

除此之外,我还要推荐一下刘欣老师的书《码农翻身》,书中用一些有趣的故事来讲解操作系统和计算网络的一些复杂概念,有助于大家理解这部分内容。

02 JVM虚拟机

JVM虚拟机

为什么把JVM放在第一位,因为它是最基础也最重要的一块内容。所有的Java代码都运行在JVM上,事实上,JVM在操作系统中只是一个进程。为了了解Java代码的运行方式,底层引擎的执行原理,以及内存的分配情况,我们必须要学习JVM虚拟机。

推荐资源:《深入理解JVM虚拟机》

很高兴地告诉你们,学习JVM你只需要把这本书吃透即可,当然,看一遍可不够,笔者前后至少看了三遍,有条件的话最好把书中的实例都跑一跑。

另外,JVM也是面试必考的内容,所以,相应地去准备一些面试题也是很有必要的,如果你基本掌握了这本书的内容,相信你不会惧怕任何JVM面试题。

03 设计模式与源码阅读

设计模式

为什么在这里提到设计模式呢,因为设计模式是Java编程规范的经典总结,并且在JDK源码中经常使用,由于我们后面会讲到JDK源码方面的学习,所以对于设计模式,建议大家先学习一下,最好的学习方式就是看书结合实践,把一些常用的设计模式自己实现一下。

推荐资源:《head first 设计模式》

JDK源码(主要指集合类源码)

接下来下场的选手是:JDK源码。不过对于大部分人来说,只要能够掌握集合类,字符串这些源码就可以了,其他部分的源码主要集中在JUC并发包里,而这些内容我们会放在Java并发技术里来讲。

为什么我们需要掌握集合类源码呢,其一是因为面试喜欢考,其二是因为集合类的源码实现都比较经典,难度也不算太大,并且运用了很多优化方法,所以了解它对于学习Java的同学来说大有裨益。

推荐资源

市面上并没有哪本书专门来讲JDK源码的,所以这部分内容的学习资源主要是两个部分,一是JDK源码本身,而是一些技术博客。

1 对于JDK源码,直接看可能比较有难度,不推荐新手这么做。 2 讲解源码的文章质量参差不齐,所以我只推荐几个我自己比较熟悉的,一个是importnew。一个是我的博客。另外,我之前分享的一篇文章《你不可错过的Java学习资源》中也推荐了很多大牛和博客,大家也可以去看看。

Spring源码

说实话,Spring源码的复杂度远高于集合类的源码,这也是因为Spring运用了很多的设计模式,并且有着非常繁杂的类关系。所以,我不建议大家直接去读Spring源码,因为即使是看Spring源码解析的书籍,你也会感到很吃力。

所以,我推荐的方式是,看书+看一些比较好的源码解析文章。另外要告诉大家的是,Spring的源码很多,并不是所有内容都需要你掌握的,大家都知道Spring最常用的特性就是IOC和AOP,所以看源码解析时,最重要的也是这两个部分了。

另外,看完Spring的源码解析以后,别忘了看SpringMVC的源码解析,学习方法也是一样的,找重点内容看即可。

推荐资源:《Spring源码深度》,我的博客专栏

04 Java并发技术

Java并发技术

相信你为了搞定集合类源码和Spring源码花了不少功夫了,接下来轮到Java并发技术出场了。我们在入门篇其实已经谈到了多线程,但是也仅仅停留在使用Thread或者Runnable实现简单的多线程demo。

实际上,为了理解Java并发技术的底层实现,我们还需要知道JMM模型,了解synchronized和volatile的底层实现,同时还要明白Java中的多线程和操作系统的多线程和什么联系和区别。除此之外,我们经常谈到的线程安全,有哪些实现方法,也是这部分内容的要点。

学习并发技术,我建议分为三个步骤

1 首先熟悉Java的多线程基础知识,比如Thread的使用,线程的状态转换,以及一些api的使用方式。 2 了解一些理论基础,比如JMM,操作系统的多线程实现。这部分内容推荐通过看书和看博客来学习。 3 了解并使用JUC的一些API,然后开始看JUC的一些源代码。这个阶段是最重要也是最困难的。

推荐资源: 书籍:《Java并发编程艺术》,《Java并发编程实战》 网站:我的博客专栏,并发编程网,importnew,《你不可错过的Java学习资源》

05 Java网络编程

Java网络编程

在搞懂Java并发编程技术之后,相信这部分内容也难不倒你。当然,前提是你对计算机网络有一定了解,因为网络编程涉及到TCP和HTTP相关的知识点。

在学习这部分内容的时候,你首先要了解socket的使用以及原理,然后再去了解NIO的相关API,多写一些客户端和服务端通讯的demo,以便熟悉这些内容。为了更好地理解网络编程,你还要去了解UNIX网络编程模型。

除此之外,如果你想要更好地理解Java网络编程,你还需要去了解Tomcat的实现原理。同时,Netty也是值得你去学习的一部分内容,最好有机会去用一用这一网络编程框架,学有余力的同学还可以考虑看看它的源码(笔者没有看)。

推荐资源:我的技术博客,《Java网络编程》,《你不可错过的Java学习资源》

05 Java8

Java的版本一直在更新,但目前在用的主要还是Java8和Java7,等再过几年可能这部分的内容就过时了。但是目前看来,对Java8的学习和了解还是很重要的,毕竟面试也喜欢考。

对这部分内容学习的最好方式就是:看文章+代码实践

推荐资源:《Java8实战》

06 总结

今天的内容貌似有点多,大家会不会感觉有点吃不消呢。没关系,因为这部分内容确实需要花很多时间去学习。对于一个在校的Java学习者来说,可能没有机会接触到多么高大上的项目,所以对内功的修炼显得格外重要。

看书,写demo,读源码,看似简单的事情实际上需要花费大量时间和精力,这个过程是需要你静下心来,慢慢沉淀的,在学习的过程中你也可以和笔者一样,写一些总结和博客,以便更好地回顾自己的学习历程。

总结以下今天所讲的内容吧:

1 计算机基础课程:数据结构,网络和操作系统 2 JVM基本原理 3 设计模式,JDK源码,Spring源码 4 Java并发技术,JUC源码 5 Java网络编程 6 Java8


微信公众号【黄小斜】大厂程序员,互联网行业新知,终身学习践行者。关注后回复「Java」、「Python」、「C++」、「大数据」、「机器学习」、「算法」、「AI」、「Android」、「前端」、「iOS」、「考研」、「BAT」、「校招」、「笔试」、「面试」、「面经」、「计算机基础」、「LeetCode」 等关键字可以获取对应的免费学习资料。


http://weixin.qq.com/r/fimstL3E7uCRrfnX93xs (二维码自动识别)

?

Java可以说是每个计算机从业者入门必学的语言之一了。在每年的HackerRank统计中,Java都是使用人数最多的编程语言之一。其实,编程语言有很多相通性,学会一门语言后,再学第二门就容易许多。因此,把Java作为自己的入门语言是一个不错的选择。

首先推荐一个Java相关的资源整理大合集:https://github.com/akullpp/awesome-java

包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等等。

也有伯乐在线整理的中文版,对各个资源进行了整理:https://github.com/jobbole/awesome-java-cn

然后,是一些适合 Java 学习者的经典书籍推荐:

基本阅读线路图:

by @phodal

给大家按照由浅至深的顺序,推荐一些适合自学的java书籍:

Java语言本身:

入门

《Head First Java》

真正的入门书籍,轻松搞笑,可以通过玩游戏、拼图、解谜题以及一些意想不到的方式与Java交互,再也不怕“从入门到放弃”。

如果你没有学过其他语言亦或是转行到计算机行业,可以先看看这本书。这本书图文并茂条理清晰,非常容易理解,练习也足够,可以让你一口气读很久而不会觉得有什么地方遗漏或者根本没记住。而且这本书可以让你从语言基础开始一直学习到包括线程、网络与分布式程序等项目,最重要的是,你将学会如何像个面向对象开发者一样去思考。

《疯狂Java讲义》

可以算是国人原创必读经典了,同样非常适合初学者。讲解内容细致全面,系统通俗,目录划分和查找非常方便,就算完全没有基础也可以学的没有什么压力。同时这本书还考虑了Java的版本升级,非常贴心。

进阶

《Java编程思想》

这是一本所有的Java学习者都无法避开的经典之作,被誉为全球最好的Java书籍。不同水平的人读这本书也会有不同的感觉,初学Java的时候也许会觉得学的非常慢,当你编程了一段时间之后再看这本书,你就会发现,你编程中遇到的问题在这本书中有很多的体现,这时候大概就是你进阶的时候了,你读这本书也会变得比从前轻松和愉快了。编程几年之后再看这本又会是怎样的感觉呢?不妨拭目以待。

《Java核心技术》

作为与《Java编程思想》齐名的大全式图书,这本书的内容更加细致,偏重与讲解Java计数,举例说明了大量API,内容翔实、客观准确,不拖泥带水,所以相比于《Java编程思想》,更注重于实用性。而且这本书全面而且易懂,放在案旁用到的时候查一查、看一看,也是Java初学者和Java程序员的必备参考书。

《Effectice java》

谷歌首席架构师的大作,也是一本经典。介绍了在Java编程中78条极具实用价值的经验规则,揭示了应该做什么,不应该做什么才能产生清晰、健壮和高效的代码,并通过例子代码加以进一步说明,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。

初学者读这本书可能没有太深的体会,当你有那么一两个项目的经验,再读这本书,就会发现书中提到的某个规则就是你在很多次工作经验后总结出来的最准确的描述方式

不过,这本书的中文版翻译不太好,有能力的话可以看原版。

《Java性能权威指南》

Java性能方面可能最好的一本书。深入介绍了JIT编译器、垃圾收集算法、线程同步等复杂问题,讲解了很多应用性能分析以及优化的方法,详尽讲解了Java性能调优的相关知识,帮助读者深入理解Java平台性能的各个方面,适合所有想了解性能优化的Java程序员。


以上是一些基于Java语言本身的书籍推荐,然而,作为一名工程师,从编写可读的代码,到重构现有的代码,再到设计模式,是编码的必备法则。

重构与设计模式:

《HeadFirst 设计模式》

HeadFirst 系列的另一本书《HeadFirst 设计模式》,同样是一本非常适合入门设计模式的书籍,没有之一。这本书介绍 了23 个设计模式,同样采用场景对话、打比方的方式来讲解,巧妙地让设计模式的理论在实际应用中体现出来,淡化了抽象性。

《设计模式》

设计模式领域的开山鼻祖,必读,并且值得多读几遍。虽然其中的例子是C++写的,但也很适合Java学习者读。

《设计模式解析》

如果你觉得《设计模式》太晦涩难懂,《Head First Design Pattern》又太不技术书籍了,那么这本《设计模式解析》就非常适合你。本书每章结束时都有小结和启发性复习题,可以帮助你更好地了解自学得如何了。而且这本书只介绍了几种比较常用简单的设计模式,因而在学习过程中会很有成就感。

《重构: 改善既有代码的设计》

好的代码是重构出来的,而不是一开始就写出来的,除非你的代码不用于任何业务。本书从一个重构实例开始,用代码和实例配合讲解了各种耳熟能详的重构方法,非常到位,总之,是一本程序员必读书目,书中的示例代码都是java写的。

《代码整洁之道》

篇幅不大,但却能让人受益匪浅。书中给了很多方法与规范,遵循它们可以写出整洁的代码。如何为函数,变量,类型准确的命名,如何减少注释做到代码即文档,如何通过良好的编程规范减少错误的代码等等,这些都需要在工作学习中总结经验形成习惯。

其他:

  • 数据结构与算法:《算法图解》《算法 第四版》《大话数据结构》
  • 学习操作系统相关知识:《深入理解计算机系统》《计算机网络》《数据库系统概念》《深入理解Java虚拟机》等

最后,读书是必要的,但是买书如山倒读书如抽丝,对于初学者来说,一下子买一堆书回去也不一定能吸收很多,最好的方式其实是 入门书籍+视频学习 的方式,不至于太枯燥无趣,遇到好的课程,还可以有人一起学习,有老师可以解答疑问。等慢慢上道了,再继续阅读进阶书籍。

九章基础算法班(Java):中文在线互动课,是Java和算法的结合课程,由硅谷资深Java工程师讲授,非常适合从零开始学习Java、算法与数据结构,或有转专业找工作需求的小伙伴们。现针对知乎用户推出限时免费,原价US$101.68(¥666),现在邀请一名好友共同报名,即可免费学习。添加微信jiuzhang6,回复“知乎Java”领取全额课程抵价券。


九章算法,硅谷一线工程师在线直播授课,已经帮助30000+人成功拿到心仪offer。

九章基础算法班(Java),零基础转专业找工作必备现,针对知乎用户推出限时免费,原价US$101.68(¥666)现在邀请一名好友共同报名,即可免费学习。添加微信jiuzhang6,回复“知乎Java”领取全额课程抵价券。

更多课程信息请访问:九章算法

刚开始学习Java是我相信很多同学都会问说,都会有一个疑问,我适合学习编程吗? 我能学会吗?一连串的疑问会让你还没有入门就想到了放弃,至于能不能学会,最起码也要给自己一个机会,只有自己亲自体会了,才是最直接的感受,是吧。还有一点就是你有没有看到别人拿这么高的薪资,那种羡慕心动的动力。

当然做任何事情除了要有一定的动力之外,还要有一定的毅力,也就是坚持的决心。遇到问题是在所难免的,遇到困难的时候,要想尽各种办法客服掉,这样记忆会更加深刻。

下面给大家简单的介绍一下学习经验。大家可以相互借鉴

基本套路是:视频+敲代码+笔记+总结

看视频:看视频是快速提高技术最直接的方式,如何选择一套适合自己的视频,显得尤为重要,网上有很多大量入门视频,大家可以从中选择一套适合自己的视频,坚持看下去。

敲代码:看十遍不如敲一遍,你的任务就是敲代码,有一句话怎么说的:键盘敲烂、薪资过万;记住,当你敲不出时,不到万不得已不要再回头看视频!此时不敲,更待何时?

做笔记:比敲代码更重要。写下自己学习心得以及理解,代码敲完可以忘,记下知识点和理解即可。我希望有正在学习的初学者把每周的学习笔记整理好,以便后面复习。

总结:学习总结分为大周总结和阶段总结。

周总结:周总结即为一个星期总结一次,找半天时间把这周学习的内容使用思维导图画出来,先尝试使用回忆的方式画,不到万不得已不要看笔记;实在想不起来,然后再根据笔记完善。

阶段总结:阶段总结可以为一个月总结一次。把前面几周学习的内容使用思维导图画出来,回忆巩固学习的内容。

下面是一个Java基础的思维导图,可以参考

自学入门的话:

1。要有明确的学习路线,让自己不迷茫。

2。有学习氛围,能够有伙伴监督交流分享

3。加入团队做demo练习,小项目练习,让自己速度成长。

学习路线以就业导向总结如下:

JAVA基础:基础语法,面向对象,集合,泛型,多线程,I/O流

前端基础:HTML CSS JS 浮动和定位 网页布局管理

Javaweb:JSP/servlet JSTL和EL表达式,过滤器 监听器

数据库开发:mysql JDBC

常用框架:MyBatis spring springMVC SpringBoot

设计模式:MVC模式,单例模式,工厂模式

工具与系统:Eclipse IDEA

在棒棒团通过组队学习形式,帮助找到自己的学习伙伴,一起学习,做项目,拿着项目经验找工作。

书籍推荐:

自学java选择的书本,

推荐java入门《java核心技术》、

掌握好java基础知识后

再看java进阶《Thinkinginjava》

然后在看java高级书籍《EffectiveJava中文版》

视频推荐拓胜董旭源老师的java教学视频,幽默风趣,浅显易懂。

一句话总结:零基础看视频学习吧。基础视频比如Java刘意,Java毕向东的都不错。

我也曾经写过从零学Java的路线,这里贴一下,希望对你有帮助。
一、为什么我要写下这篇文章
1.1直接缘由:

  • 在今天(2018年11月4日)有个同学给我发微信找我
    • 同学:能不能给他一个网页他改一下,他想参考一下,然后用于做毕业设计。
    • 3y:可以啊,你的题目是什么啊?想用Java来写吗?
    • 同学:对啊,我现在在学Java呢(ps:之前跟该同学聊天的时候"我看着这些代码就头晕,我对电脑真不感兴趣"....真香!)
    • 随后这个同学发了一个小视频过来,说自己在学Java。我看了一下:大概是在练习&^|这些操作符。



最后,我告诉这同学:"你去找视频看吧,你现在学这些对你的毕业设计没有什么帮助的啊"。然后让他去B站找视频看了
ps:我并不是说学&^|这些运算符是没用的,但如果单纯是想自己用Java来写毕业设计的话,这些知识点应该是用不上的。
1.2间接缘由:
自身经历:
我学习Java也是自学的,在大学期间也是一直一个人在学(身边的同学可能家里有矿)。即便我在学习的时候也去搜了不少的意见,例如在知乎上找,<给刚开始学Java的年轻人一些建议>等等类似的话题,但是现在回过头来看,我还是走了不少的"弯路"了。
比如说,当时我花了蛮多的精力去学JSP,最后整理成博客发到网上去。网友的评论:

  • “不玩 JSP 十几年了“。
  • “jsp不是老掉牙的技术吗”。
  • “看这个有一种穿越的感觉……码了6w多字,看着就心疼……”。
  • “这十年前的技术都被挖出来了?”
  • “刚毕业时写过好几个自定义标签,那时候感觉好有成就感,但是现在,用于view的jsp,似乎有点过时了,view一般用【模板】或者【完全静态 + ajax + json】了”



嗯...那篇文章我当时在2018.02.07发布。我学JSP的时候是在2017年初吧,其实在2017年JSP也已经是落后的技术了,但我还是花了不少的时间去学习JSP的各种用法(自定义标签,JSTL,EL表达式等等)。
网友们其实说得都没有毛病,对我来说:在2017年花了不少时间去学如何使用JSP(过期的技术),这就是我认为的**"弯路"**。

  • ps:在2018年花点时间了解JSP是没毛病的,但深入学习的话是没必要的。

"弯路"说明:如果你有充裕的时间,怎么学都不是事,毕竟你是真真正正地在学编程。只要在学编程,就不是弯路,最怕你不学。


以这篇文章回复我部分的读者:
写博客以来,还是有部分读者是零基础学Java的,有转行的、也有年轻的师弟师妹的。一般他们也问我应该怎么学Java比较好,学习Java的路线应该是怎么样的。
emmmm,我一般都是比较简单的回复一下:让他们多做笔记啊,接下来应该花时间学什么,不学什么...就完了..
所以,写完这篇文章,遇到再问我如何学习Java的时候,我直接发个链接就完事了(懒人必备)..
1.3目的
如果你:

  • 想要用Java在短短的几个月时间内写出自己的毕业设计。
  • 想要用Java体验一下如何从零搭建一个属于自己的网站。

那么可以看一下我下面所写的不成熟的建议
二、如何快速学Java
这里我以Java EE(Jakarta EE)/Java Web的经验来说哦。(都把你们看做是零基础入门的了)
学习Java EE(Jakarta EE)总体来说会有以下三大模块:

  • Java
  • 数据库
  • Web前端



在我看来,无论学习什么技术都好,在学习该项技术的细节之前都得知道:这项技术是什么,为什么我要学习这项技术,学习了这项技术有什么好处

  • 看似好像我在说多余的话,但如果你在学习某项技术的时候无法回答上面的三个问题。再过几天,你很大程度上会忘记这项你所“学过”的技术。
  • 比如说,如何你连“为什么要用多线程”你都无法用通俗的话来解释清楚。即便你当时学习的时候知道多线程可以用xxx方式来创建,多线程的xxx的api。那再过两个月,人家问你”Java多线程有什么用啊?”。你想想你还能答什么,我认为你是记不住“多线程可以用xxx方式来创建、多线程的xxx的api”这些知识点了。
  • 再比如说,如果学习Spring时不知道IOC和new对象有什么区别,那我为啥不直接new对象而要那么麻烦去学Spring呢?

简单来说:如果你不知道学习某项技术是干嘛用的,那先不要学


如果你是零基础学习Java并理解力不是爆棚的话,我建议以视频学习为主。
可能你会看到这样类似的言论:

  • “看视频学习太慢了”
  • “直接看源码啊,源码就是最好的解释”
  • “有问题直接Google啊,用什么百度”
  • “最好的资料是官网文档”
  • .....

但是,那都是对有经验的人或者高智商的人群来讲的。
如果是零基础普通人,看视频学习/看不懂源码/用百度/看中文博客来学习不丢人
ps:如果看的视频讲师的语速不是特别快,建议以1.5或者1.75倍速观看。
2.1关于视频资源
我在学习Java的时候也收集了很多的视频资源,并不是每个都有看过。只是在混群的时候发现有人发了,就复制下来整理一下罢了。
关注我的公众号,回复“视频”即可免费领取全部资源!


其他的视频资源:

  • B站:(http://bilibili.com)一个神奇的网站。如果你想看哪个视频,可以先搜一下B站有没有。
  • 慕课网:(http://imooc.com)里头也有挺多的视频资源。
  • 公众号/混qq群/微信群:不少人手里都有几t的资源,如果跟群友的关系不错,一般都会免费给你发的
  • ......

2.1学习Java基础
零基础学习Java的路线我简单总结为以下:

  • 首先去官网下个JDK,按现在常用的版本JDK1.8就够学习了
    • 下载地址:JDK1.8下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  • 随后去下载现在Java常用的编辑器IDEA(也可以用eclipse,但现在IDEA的确是好用)..
    • 下载地址:IDEA下载:https://www.jetbrains.com/idea/
  • 1.5/1.75倍速观看Java基础视频(以刘意为例)

在学习Java基础时,我简单来说一下什么东西可以不碰

  • &^|位运算符,++ii++类似这种绕死人的语法
  • 内部类
  • AWT,SWING编程
  • 注解

需要深入理解的知识点:

  • 流程控制
  • 面向对象的概念
  • Java语法
    • this指针、重写和重载、final、static等等这些基础的东西
  • 集合(包括泛型)
    • 常用的集合类
  • IO流
    • IO流代码的编写
  • (理解这些知识点,能够在有提示的情况下码出代码,但不要为了一些细节钻牛角尖)

简单过一遍的知识:

  • 异常
  • 多线程
  • 网络编程
  • 反射机制
  • (你得知道这个知识点是干嘛用的,为什么要学这个知识点,能看懂具体的代码!)

对于上面所说深入理解的知识点,我个人是非常建议在学习期间写笔记(博客)的。如果你想写笔记的话,最好直接就用markdown语法来编写,而不是用word/简单的记事本。
markdown语法非常好学,几分钟跟着就可以学习了,几乎所有的it博客网站都支持markdown

  • markdown学习:https://www.jianshu.com/p/q81RER

如果喜欢画思维导图的,我这里推荐processOn就可以了。无需下载Xmind这么麻烦了:

  • ProcessOn来画思维导图:https://www.processon.com/i/5815483ce4b0baccb2d1f8c6

有的时候并不需要使用IDEA打开一个.java或者.xml这样的文件,可以使用notepad++记事本:

  • NotePad++记事本:https://notepad-plus-plus.org/

学会科学上网和使用Chrome浏览器,比如说下载拦截广告插件,英语翻译插件

  • Chrome浏览器:https://www.google.com/chrome/
  • 拦截广告插件:https://chrome.google.com/webstore/search/uBlock%20Origin?hl=zh-CN&_category=extensions
  • 英语翻译插件:https://chrome.google.com/webstore/search/%E6%B2%99%E6%8B%89%20%E6%9F%A5%20%E8%AF%8D?hl=zh-CN

虽然是快速学习Java,但学完上面的估计得一个月了(:..
一个月发现都是面向控制台编程(console),输入输出一些数据来玩。


期间可能就学习IO的时候可以复制文件,修改文件名有点意思。但好日子就要来临了
2.2学习Java Web基础
首先我们可以学习一下Web前端的知识(此部分都简单过一下就好了)

  • HTML/CSS/JavaScript/jQuery
  • CSS框架(都有中文手册,很快就上手了,选一个自己喜欢的就好了):
    • BootStrap:http://www.bootcss.com/
    • Materialize:http://www.materializecss.cn/

到目前为止,学完上面这些可以搭建“能看”的静态网页了。曾经看过一段话来总结上面的技术:

  • HTML是名词,CSS是形容词,JavaScript是动词

随后学习JavaWeb的路线如下:

  • Tomcat(简单过一下)
  • XML/注解(简单过一下)
  • Servlet(重点理解)
  • HTTP协议(重点理解)
  • Filter过滤器(重点理解)
  • Listener监听器(简单过一下)
  • JSP(简单过一下)
  • AJAX、JSON(简单过一下)


基于上面的学习,起码已经可以使用request对象来接收前端发送过来的数据,使用response对象将Java后端的数据返回给前端,使用Filter拦截器来处理中文乱码问题(Tomcat默认的编码是ISO-88591)。总的来说已经可以实现前后端交互了
2.3学习数据库
数据库这里指的是关系型数据库,一般我们以MySQL来入门就足够了。
在学习期间,其实很多时间都耗费在配置环境上面,比如我之前安装JDK,安装MySQL,安装Oracle就耗费了不少时间。后来我也将其写成博客,需要重新安装的时候翻一下博客就好了。

  • 比如MySQL安装教程:https://segmentfault.com/a/1190000013530782

主要学习SQL的基本使用吧:

  • 创建表(create table)
  • 增删改查(insert,delete,update,select)
  • 对于存储过程、触发器这些了解一下即可
  • 对于索引、锁后面再学(此部分很重要,但以快速入门来说,可以先不看)



2.4学习Java连接数据库(JDBC)
到这里,我们Java Web、数据库、Web前端的基础都已经基本学完了,但此时Java和数据库是相互独立的。我们想要以程序的方式来对数据库的数据进行操作,那就要学习一下Java连接数据库(JDBC)。
JDBC这项技术并不难呀,就是模板代码,来来去去就几个步骤:

  • 导入MySQL或者Oracle驱动包
  • 装载数据库驱动程序
  • 获取到与数据库连接
  • 获取可以执行SQL语句的对象
  • 执行SQL语句
  • 关闭连接

由于这些代码可能会重复出现,那我们可以学习一下DbUtils这个组件:可以帮我们减少编写JDBC的模板代码。
2.6项目管理和框架的学习
经过上面的学习,已经是可以在本地写一个Web项目了。

  • 页面框架使用BootStrap/Materialize框架来搭好
  • 请求处理交由Servlet,返回的数据可以通过AJAX或者使用JSP,DAO层可以使用DbUtils。
  • 数据保存在MySQL中

为了让写代码变得更爽,我建议用半天学一下Maven(项目管理工具),用几天学一下SpringBoot

  • 从Servlet直接跳到SpringBoot可能有点难理解,但多搞几天我相信还是可以的..

2.7Linux学习
最后,我们在本地上写完的项目想要让其他人都看得见,一般都会部署在Linux环境下的。(此部分的学习可以等到将项目写完,想要部署项目才学习)
我是不推荐使用虚拟机再搞Linux的,直接买一台方便很多
如果要买阿里云服务的,不妨通过这个链接去购买(可以领劵)

  • https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=pfn5xpli

三、总结
总结一下我认为学习Java的路线:

  • Java基础-->流程控制-->面向对象(包括Java语法)-->Java集合-->Java IO流-->异常-->多线程-->网络编程-->反射
  • JavaWeb基础-->HTML/CSS/JavaScript/jQuery-->Tomcat-->XML/注解->Servlet-->HTTP-->Filter过滤器和监听器-->JSP-->AJAX/JSON-->数据库(MySQL)-->JDBC和DbUtils
  • 项目管理和框架-->Maven-->SpringBoot
  • Linux基本命令

最后我们的项目是这样的:

  • 以Maven来管理我们的项目
  • 前端通过BootStrap来搭建页面框架
  • SpringBoot来搭建Java后端环境,SpringMVC处理前端请求(SpringBoot整合了)
  • DAO层使用DbUtils组件来完成,MySQL作为数据库

当然了,我的Java路线不一定就是对的,我这里只是给出一种路线。
再次说明:这套路线是以“快速”学习Java的,如果你想要找到一份好工作,上面的知识点是不够的


有帮助?点赞!

关注我的公众号:Java3y,获取更多的原创笔记,海量视频资源/原创思维导图/学习路线

所有的文章导航:https://github.com/ZhongFuCheng3y/3y (欢迎star)

对于这个话题,已经不止N次在线上或线下听到了。从这个话题被太多的人提问及回答,我们可以肯定地说,Java这个已经有近15年头的计算机编程语言是有着及其广阔的应用领域和独特而短期无法替代的优势。我们姑且不讨论这些,针对如何“自学Java语言”在此衷肯谈一下个人建议,希望对有此疑惑的伙伴们有些帮助。

首先,从技术角度作为计算机编程语言个人认为自学还是比较难的,通常需要学习者必需明确你学习Java的目的是什么。对于这个问题我个人认为不外乎两大类,其一就是出自对计算机编程的喜好(对Java的喜好);其二是能够掌握Java语言技术从而利用其能够解决自身生存问题。这两类人通常可以肯定的说后者居多,那么我们就以第二类人自学Java来聊一下。

从我们想以Java计算机编程技术来就业我们就一定要清楚了解企业用人的基本标准是什么。对于现在大多数企业级软件开发来讲,无论是大公司还是小公司通常要求必需掌握如下三方面技术应用点。

其一,Java 语言核心设计和编程思想,这个在Java核心基础中都可以接触到;

其二,数据库技术,必需强调这个和哪种计算机编程语言没有直接关系,不过我们必需清楚,对于java企业级软件开发来讲,一百个项目就有一百个数据处理业务,所以数据库技术是必需掌握的;

其三,Java 常用辅助框架,也就是说工具库,通常可以分为前端和后端。当然也就是网页技术和java后台服务器常用框架。

基于以上三点来说说这个三方面如何学习。对于学习Java 重中之重首当其冲必然是比较扎实掌握它的最核心的基础,因为无论你以后接触什么项目或应用相关Java哪种免费或收费的工具都是基于Java语言的,如果基础掌握不扎实一切都是乌云。因此强烈建议大家必需花足够的精力和时间牢牢掌握Java核心基础知识。

在掌握Java核心基础情况下,我们就可以深入学习一下数据库的开发技术了,这里我要说明一下,对于一个初中级的程序员来讲,我们只要能够熟练编写SQL语句及编写存储过程并能够使用Java在程序中操作数据库基本就可以达到一般企业开发的数据库处理技术要求,对于有些人说必需熟练掌握多种数据库的特性、优劣、高度优化及专业的设计这种说法我是及不赞成的,这个标准不是一个自学者短期内能完成的,必需经过多年开发经验的积累才能涉及这些深度的东西。

现在企业级软件开发几乎百分百都是web项目,那么我们在掌握以上两方面技术以后我们就可以着手学习web前端技术和Java后代常用工具框架,对于这Java后台框架技术实际就是一种基于某方面业务的工具,都是Java语言编写的,诸如Spring、Struts、Hibernate、mybatis 等等,这里必需强调一句:“如果Java基础核心掌握不好,Java后台框架技术是无法掌握的”。对于web前端开发,当前也就是以JS为主,当然JS现在以jQuery框架为主。

以上简单谈了关于企业对于Java 技术基本要求以及它们之间的关系,现在我们来说一下Java学习态度和方式。

俗话说”态度决定一切”,那么对于自学Java来讲,这句话就太重要了。可以自己问自己一下:“我是想要”还是“我是一定要”。如果只是“我想要”,那么我可以可定的说你遇见困难基本就会放弃,如果是“我是一定要”,那么你就有必需坚持下去的动力,知道到达自己的目的。

无论我们做什么内因固然重要,但是外因永远都不能被忽略,内因是动力,外因是走捷径的工具。那么外因是什么呢?个人认为外因就是能够在你疑惑和遇到困难时帮助你解脱的人。一个疑惑和困难可能会让你徒劳搭上很长时间而无法摆脱,甚至让你有放弃的念头,这个人是谁呢,可以是一个朋友,是一起学习的人,是一个你偶遇的人,归根到底他是一个能帮助你快速解决困难的老师,到哪里去找我们自己知道。

下面和大家谈谈实际学习Java语言的行动细节。对于计算机编程语言来讲,它就是一个熟练工种,要想掌握这门技术就必需动手,动手,多动手。在我们基本理解理论知识点的情况下,我们要花费近乎70%以上的时间用来敲代码,一遍又一遍,每遍我们都有不同的感受,程序是用代码实现的不是只理解掌握知识点实现,这点想必我们大家都知道,所以多敲代码是及其必需的。可以这样说一个成熟的计算机编程高手,极限时一天能够完成近万行代码量,那么对于一个初学Java的人来讲,要想增强动手能力并理解代码含义每天通常不能少于500行代码,在不断学习更多知识点后这个量还会不断增加。

最后和大家分享一下关于项目实际开发经验的积累,这个话题实际对于自学Java来讲,几乎是及其困难的,通常初学者不可能自己设计一个项目来实践,即使我们拿来一个接近完整的企业项目我们自学者也几乎无从下手,这也是自学Java最头疼的而且是无法解决的问题,那么怎么办呢,唯一的办法只能是找到一个做过实际开发的人及几个人组成团队,来完成若干个企业级软件项目开发从而积累开发经验,在其中这个做过实际开发的人会带我们如何实现项目开发,从而积累项目经验,而且个人认为通常你应该经历至少两个项目才接近初级项目经验的水平。

好了,暂时谈这些,实际自学中我们还会遇到很多问题,只要我们坚持,方法得当,耐得住寂寞,端正态度,坚持下去通常我们会有些收获,还是要强调一下,自学绝对不是一个人的事情,一个指导者是绝对必要的。最后祝伙伴们学有所成。

有任何关于学习Java的疑问随时私信我,希望可以给你更多宝贵的建议。

关注专栏“Java学习”更多Java学习干货。

Java学习

责任编辑:
热门阅读排行
© 16货源网 1064879863