JAVA自学心得

1、为什么要选择学习JAVA?

现在疫情这么严重,各行各业都不好过,为了能有一技之长,找一个收入相对较高的工作,没有一点真本事可是不行的,我选择了学习java。

附上学习资源:ziyuanshare.cn/res/detail?resid=29

在大学里,本身不是学编程的,但是多多少少有所接触,那有人要问了,软件编程有很多,比如.net,php,嵌入式等等,为什么我就选择java呢?因为在选择之前,我做了大量的比较。

首先不要太过相信各种培训机构的说法,当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界。那么怎么才能确定自己将来的方向?如何才能从纷繁复杂、或真或假的数据世界中挖出一条路?我讲一个通过招聘网站的观察方法。可以先去各种招聘的网站上查询信息,综合了各大招聘网站的数据,这些数据都是最真实不掺假的原始数据,你可以每隔一段时间搜索一次,一些规律就会被总结出来了。比如说我在51job中搜索java,全国大概提供了3万个职位。 然后要多翻几页,这样不仅能够看清楚大概有多少是有效的职位,而且还可以看清楚用人单位最关心的技能是什么,这个很重要,决定着你将来要花多少时间和精力在特定的知识点上,比如说swing,搜了一下,全国只有700个左右的职位,仔细读了一下,也并非全是有效的职位,花太多时间和精力在这个上面就不值得了,当然自己感兴趣或者为了研究的话另当别论。不过如果是为了快速的就业,把太多时间和精力花在很多职业生涯的前一、二年用不到的知识上就太可惜了。同时,并非某一个行业的职位数目少,就不能当作一个方向进行选择,比如.NET,我搜索到的职位数是1.6万左右,比java少,是不是就选java了呢?不一定,因为java职位虽然多,但是可能竞争者可能也多,有些方向虽然职位数不多,但是和你竞争这些职位的人数量也少,不见得就不能选择。不过,如果某一个方向的职位数目过少,你可就要小心了,选择这样的方向风险会非常大,如J2ME。

我个人觉得java/J2EE、.net、嵌入式开发是不错的三个方向。如果非要在java和.net中选择的话,我个人是推荐java的,原因:

(1)Java能够开发linux、unix服务器上的程序;

(2)JavaEE和.NET在企业应用方面的关注点是差不多的,但是学习了java如果将来想转到.net上会比较简单,几天的学习然后上手开发应该是问题不大的,但是反之就不行了。

当然如果有了些经验之后,你就会发现语言或者平台不再是技术上的阻碍,一些原理性的东西学到手,然后再加上项目经验,使用什么平台,反而不是最重要的。不过如果非要用一种平台进入企业开发的领域,至少在目前,我推荐java。你完全可以不同意我的观点,但是毋庸置疑,如果是为了就业,多到招聘网站阅读阅读职位的信息,对你将来的方向和学习是大有益处的。

2、JAVA入门必备

从我个人的经验来讲,首先要学JavaSE,这是毋庸置疑的。与此同时,我会学习数据结构与算法,这里推荐马士兵老师的经典JAVA教程,我就是用这套教程学习的,讲的非常通俗易懂!

在这儿之后,可以试着完成一些小项目,同时关注一下设计模式的内容,不必强求自己能够完全掌握各种细节,往前走吧。

除此之外,需要掌握一种编程工具,比如说Eclipse;

数据库,可以选择使用Oracle或者MySQL开始。JDBC,用Java连接数据库。可以选择在这个地方切入Hibernate,也可以选择在Struts之后。

HTML \ CSS \ JavaScript,这些东西是做web项目必需的内容。

Servlet \JSP,服务器端必需。

XML 、AJAX,新的流行趋势不能不了解。

作一些小项目吧。比如BBS、留言系统、学籍管理、商城等等,随便找一些业务逻辑比较简单的来做一做:

Struts,MVC的典型应用,Hibernate,OR

Mapping的典范之作。Spring IOC + AOP,面向对象 + 面向切面,完善的旅程。把以前自己的小项目加入Struts、Spring、Hibernate的元素吧。去研究各种商业项目的业务逻辑吧,才能在你的简历中加入浓重的一笔。EJB3.0,java在走了很多弯路后的回归之作,值得研究。SOA,业界铁定的未来趋势,要紧紧跟随。

3、动手,快速提升的必经之路

学习Java要动手,仅仅是看和听是不能够学好编程的。一开始的时候如果没什么思路,可以照猫画虎一段时间,我本人是在某一个领域画虎画了上万行代码的时候才慢慢有自己思路的。就像写作文,要有自己思路总是一般来说要经过几个阶段,首先学习词汇,然后学习造句,然后大量阅读别人的文章,自己模仿着写一些,逐渐的经验积累,才能形成自己的思路。学编程,恐怕也得慢慢的来吧,只是看一看、听一听视频,是不足以学好编程的。

所以,动手吧,跟着做,一行一行的跟着敲,一个项目敲完了,比如坦克,再试着加一些自己的功能,按照自己的思路敲一些代码,收获远比干听大的多。

顺便提醒一句,要理解代码思路之后再跟着敲,背着敲,千万不要左边摆着别人的程序,右边自己一个一个子母的写,这就不再是程序员了,成了打字员了。

4、提升学习效率

对于一个以前从来没有接触过java的人,java无疑是庞大的,似乎每个领域拓展开来都是一片开阔地,每一个领域要想深入接触到每一个细节所耗费的精力都是巨大的。这个时候大家都胸怀壮志,两眼发光的盯着每一个崭新的知识点,遇见了任何一个知识点都恨不得抠的清清楚楚,明明白白。

我不建议这么做,因为人的精力是有限的,我的学习方式是,抓大放小,要事为先,比如说我在学习J2SE的时候,学到GUI这一章,有的人认为,既然学到这儿了,我们去把SWING细细的了解一遍吧;还有的人,遇到了在Linux下的Shell编程,就恨不得把Shell先学成专家才肯,或者是才敢,继续往下学习;有没有过这样的感觉,一本书的上册没有学好,觉着下册心里也没底儿,甚至非要把上册复习一遍才敢继续学习。如果你也是这样,要去看看心理医生啦,没准儿会有洁癖的毛病。

任何事情都要追求完美才敢继续往后进行,是一种性格缺陷,大胆的放弃一些东西吧,有失才有得,把自己有限的、宝贵的精力用在对于就业直接相关的地方,这才是最有效率的学习方式!等你参加工作,有了可持续发展的事业动力和经济基础,有时间有精力闲的没事儿干的时候,再去研究那些其它吧。

5、有问题,不要怕!

既然是学习,就不可能不遇到问题。

那么,遇到问题之后,环境配不通,程序调不过,运行不正常,遇见这些恼人的问题的时候,该怎么办呢?

首先我要恭喜你,遇见问题,意味着你又有涨经验的机会了,每解决一个问题,你的JAVA经验值就应该上升几百点,问题遇到的越多,知识提升的越快。 但是总是解决不了也是很恼人的,怎么办呢?

我是这么来处理的:

(1)仔细观察错误的现象

学习编程并不是一件很容易的事情,自己首先要重视,要用心才可以。 在开发中,仔细观察出错信息,或者运行不正常的信息,是要做的第一件事。

对于错误的现象,这里又分三种情况:

A:错误信息读懂了,那么请进入2步:要仔细思考问题会出在哪些环节

B:没读懂,愣是一点没看懂,google一下

C:读了个半懂,有些眉目但是不太能确定,可以请教老师或者同学。

(2)要仔细思考问题会出在哪些环节(重要)

当你读懂了一个问题之后,要好好的思考这个问题可能会在哪些环节上出错。 

写一个网络程序,总是发现服务器端打印不出接收的数据,有几个环节会出错?仔细分析这个现象的环节:

客户端产生数据->按“发送”按钮->发送到服务器->服务器接收到后打印,这几个环节都有可能会出错:

有可能客户端根本就没产生数据,有可能发送按钮按下去后根本就没发出去,或者发出去的不是你产生的东西,或者根本就没连接网络,或者发送出去服务器没有接收到,或者接收到之前就打印了等等等等。

学着去这样仔细的分析程序的环节和这些环节可能会产生的问题,你的经验值定然会大幅度快速的提升,这样做很累人,但是一件事情如果做下来一点都不累的话,这个东西还有价值吗?

在网页A输入了一个人的名字,提交到B,首先存储到数据库,然后再读出来,发现乱码!怎么办?当然是分析环节:

客户输入->HTTP发送->B接收->存储到数据库->读出->展现到网页

(3)定位错误

定位有以下三种办法:

A 打印输出,比如java的System.out.println(),比如js的alert(),这种办法常用,必须掌握

B Debug,可以参考我们的视频《坦克大战》,详细讲了Eclipse的调试。

C 删掉一部分调试一部分,也就是去掉一部分的功能,做简化,然后调试剩下的功能,JSP和JavaScript常用。

(4)如果还不行,google吧

还查不出来?我多半是去请教别人或者进论坛发帖,请别人一起帮我解决问题。

6、附上我的学习步骤

(1)J2SE

面向对象-封装、继承、多态,内存的分析

递归                     集合类、泛型、自动打包与解包、Annotation

IO                      多线程、线程同步

TCP/UDP                 AWT、事件模型、匿名类

正则表达式               反射机制

(2)数据库(Oracle或者MySQL)

SQL语句                              多表连接,内外连接,子查询等

管理表、视图、索引、序列、约束等     树状结构存储

存储过程、触发器                     数据库设计三范式、

(3)JDBC

JDBC基础               连接池

树状结构存储与展现     DataSource & RowSet

JDBC连接Oracle及MySQL

(4)HTML_CSS_JAVASCRIPT

html、css、javascript基础语法      JavaScript Form判断

Dom编程基础(事件处理等)      JS常用效果如TreeView、下拉联动等

JS学习方法                      JS调试方法

DreamWeaver初步(建立HTML、Table、Form、CSS)等

(5)Servlet & JSP

tomcat基础         servlet基础

web.xml配置基础    web application的结构

servlet生命周期      request response等常用方法

ServletContext类     HTTP协议基础(GET POST)

Cookie  Session   Application

JSP的几种语法(包括JSTL等)注意在项目中练习,不要拘泥于语法细节而裹步不前。

(6)Struts

多层架构理论                 Model 1 and Model 2

Struts基本概念                MVC

Action与业务逻辑类的关系     在Struts与JSP之间传递数据

Struts处理流程(控制流)      Struts TagLib(了解常用的)

 JSTL                         ActionForm

字段收集                     上传文件

类型转换                     DTO

动态Action Form               验证框架

ActionForward 转发与重定向    动态生成ActionForward

全局与局部的ActionForward    Action Forward Scope

UnknownActionMapping        Action的线程安全

I18N       如何切换语言环境

Struts异常处理机制 程序处理 自动处理自定义异常处理器

Struts的多模块配置

(7)XML

(XML/XSL、XSLT/DTD、SCHEMA等基础的概念、关于Java的编程可以暂时扔在一边)

(8)Hibernate

OR Mapping原理

Hibernate基础开发步骤

Hibernate基本接口(重点Session)

普通属性映射

关联关系映射

Native SQL

inverse lazy cascade

继承关系映射

HQL

性能优化 一级缓存 二级缓存 查询缓存

事务与并发 悲观锁、乐观锁

OpenSessionInView

CurrentSession

(至于JTA、联合主键、自然主键、动态主键、Any类型 Creteria Queries Intercepter and Event自定义类型等,可以暂时扔在一边)

(9)Spring

IOC/DI

Spring配置

Spring架构

AOP及SpringAOP

声明式事务(AOP)

Spring + Hibernate Spring支持Web

Scope

(其他的Spring模块对于自学来说可以暂时扔在一边)

(10)EJB3.0

J2EE架构基础(JTA JMS等)

EJB基础(地位及基本理论、分类等)

Annotation

Ant编译与部署EJB

Session Bean

EJB的依赖注入

Persistence API

(可以用JBoss学习EJB3.0)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,809评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,189评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,290评论 0 359
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,399评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,425评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,116评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,710评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,629评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,155评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,261评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,399评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,068评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,758评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,252评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,381评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,747评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,402评论 2 358

推荐阅读更多精彩内容