2018-05-01

其实Java并没有想象中的那么难,首先想要入这个行,要做好一个心理准备,那就是你想走远点,就得不间断的去学习,去汲取知识,前期不能怕辛苦,不要闲下来就打LOL、吃鸡、王者农药,有空就得多看看各种开源项目的代码,API的设计方式,各大网站的设计架构,理解各个环节的作用。补齐自己的知识视野。

当然这个行业也并不是什么门槛都没有,不要再私信我初中生、高中生、中专生能不能学习Java了。反正我个人是认为不可行的,或许你可以去问问其他大神? 或许他们会觉得可以的。

下图是我更新过的自学表,分别分为4个阶段。按照这四个阶段平稳的去学习并在每一个阶段做完相应的项目和练习,找一份工作是完全没有问题的 。当然,这里有个前提是你能学的下去,且通过查看网上的资料或视频能起码看得懂第一阶段的内容。如果第一阶段全职学习耗时2个月以上的话,我个人建议你就需要仔细考虑考虑是否真的要人这个行业吧。因为这个时间节点还没能够搞明白第一阶段的内容的话,从我个人的经验来讲可能后续走起来会更加吃力。

Java学习前的一些准备

JDK - (Java SE Development Kit)

JDK是Java开发所需要的环境,就跟我们想玩某个网游一样,玩之前一定是需要先安装相应的程序包的。 那这个JDK就是我们准备登陆Java大陆前需要安装的一个程序包。

IDE - (Integrated Development Environmen)

IDE是集成开发环境,一般集成开发环境都会带有JDK,可以使用自带的JDK也可以使用我们下载的JDK,不同的IDE配置不同。Java常用的IDE有Eclipse、MyEclipse、IntelliJ IDEA。IDE具备代码分析、补全、变异、调试等常用功能,可以大大的提高开发人员的编程效率。

1、入门基础

Java简介

了解什么是Java;代码语法基本格式;输出表达式。

了解Java大致的编译以及执行过程

Java语言基础、循环、数组 ; 了解类和对象

掌握Java的基本数据类型和引用数据类型有哪些;

掌握强制数据类型转换和自动类型提升规则;

常量如何声明及赋值;

循环的语法及作用;

数组的声明及定义;

掌握类的概念以及什么是对象。

OOP封装、继承、多态

面向对象的三大特征,本节内容非常重要也相对来说较为难以理解,一定要耐下心来好好理解。

java.util.*包下的常用类

util包下的Collection、Comparator、Iterator、List、Map、Set接口都很重要,着重看一下他们的实现类,如:ArrayList、LinkedList、HashSet、HashMap、Hashtable、TreeMap、TreeSet等。

java.lang.*包下的常用类

lang包下的基本数据类型对应的包装类(Byte、Short、Integer、Long、Double、Float、Character、Boolean);

字符串相关的类String、StringBuffer、StringBuilder。

IO流操作,多线程及Socket

掌握IO读写流相关的类,了解字节流,字符流和字符流缓冲区;

掌握线程的概念,多线程的创建、启动方式,锁和同步的概念及运用;

掌握Socket通信的概念,如何声明客户端服务端,如何完成双端数据通信。

数据库基础(Mysql)及JDBC

掌握数据库的基本概念,Mysql的安装、启动与停止

Mysql数据库客户端的安装与使用

JDBC的概念,在Java中使用Mysql驱动包连接Mysql

通过第一阶段的学习掌握Java语法和常用类,数据库入门技术相关知识。让自己对于存储,IO,这些有个大概的了解。这时候,暂时不需要花大量的精力以及篇幅去学习多线程和Socket,当然这里不是说他们不重要,而是对于现阶段的你,或许很难非常清晰的明白以及了解他们具体的作用。这里第一节忽略掉了Swing,Swing章节的内容可以不学,因为在实际的工作中基本上没有用武之地。

使用第一阶段的技术完成一个小型的系统,找一个自己做容易理解的系统练练手,比如超市管理系统、成绩管理系统等等这类需求简单却能讲整章内容结合起来使用的项目。当然这个时候可能会有人觉得没有图形界面没法完成系统操作。实际上我们可以通过Console的输入输出来做系统界面。

新手在第一阶段的学习时,是最难熬的,因为这个时候需要背的东西特别多,且不再像看小说一样,什么东西都能看明白。路就变成了前面熟悉,左右陌生。这个时候人的求知欲作祟,往往会把自己带着偏移了方向,因为我们自己也不知道这样走对不对。渐而远之,也就慢慢放弃了。而这样的放弃,是最不值得的。所以,学习Java一定要按照某一个大纲,一直往下不要往其他地方偏,先走完一遍之后,再回头慢慢捡。

2、前端基础

HTML基本标签、表格、表单和框架

掌握网页的基本构成;

掌握HTML的基本语法;

表格的作用以及合并行、合并列;

表单标签的使用,提交方式get/post的区别;

框架布局的使用

CSS样式表

掌握CSS的语法及作用,在html中的声明方式;

掌握CSS布局的函数使用;

掌握CSS外部样式的引入。

JavaScript

掌握JS的语法及作用,在HTML中的声明方式;

掌握JS的运行方式;

掌握JS中的变量声明、函数声明、参数传递等;

掌握HTML中的标签事件使用;

掌握JS中的DOM原型

jQuery

了解如何使用jQuery,下载最新版或者老版本的jQuery.js

掌握选择器、文档处理、属性、事件等语法及使用;

能够灵活使用选择器查找到想要查找的元素并操作他们的属性;

动态声明事件;

动态创建元素。

BootStrap

掌握BootStrap的设计理念,以及使用方式。这是我们需要接触的第一个前端框架,使用起来也很简单;

掌握BootStrap的栅格系统、表单、全局样式、分页工具栏、模态框等。

Servlet

掌握Java中的Web项目目录结构;

掌握Java Web项目的重要中间件Tomcat;

掌握Servlet中的Request和Response;

掌握Servlet的基本运行过程。

掌握Servlet的声明周期

动态网页技术

JSP在Java Web中的角色;

JSP的编码规范,以及JSPServlet;

JSP显示乱码的解决办法等。

JSP数据交互

JSP中如何编写Java代码,如何使用Java中的类;

JSP中的参数传递。

状态管理Session和Cookie

掌握Session的作用及作用域;

掌握Cookie的作用及作用域;

掌握Session及Cookie的区别,存储位置,声明周期等;

掌握Session及Cookie分别在JSP和Cookie中的使用

JSTL和EL表达式

使用EL表达式输出page、request、session、application作用域中的值

使用JSTL来做逻辑判断或循环控制

JNDI数据库连接池

JNDI的作用以及如何使用JNDI连接数据库

分页和文件上传

掌握在JSP中如何使数据达到分页的目的;

掌握在JSP表单中如何上传文件,Servlet如何处理上传请求(Commons-Fileupload、Commons-IO)。

Ajax

掌握Ajax的基本概念;

掌握jQuery中的Ajax请求;

掌握JSON

Filter、Listener;

掌握Filter和Listener

掌握Session过滤器和编码过滤器

通过第二阶段了解前端相关的技术,如果你喜欢前端各种酷炫的效果,那么就深入学习JS、CSS。不大感兴趣的话,就浅尝辄止,并重点学习Servlet、Filter、Listener。重点学习,重点学习,重点学习。 重要的话说三遍!

学习完第二阶段的内容之后,就可以进行B/S版本的系统开发了。这个时候我们可以挑选个稍微复杂点儿的项目来练练手,能找到商业项目练手的那是最好不过的,没有的话,就写写学生管理系统,档案管理系统,人事管理系统之类的练练手吧。

3、主流技术应用


Struts2应用

通过学习Struts,了解什么是MVC;

掌握Struts是如何完成界面控制的;

掌握Struts的参数接收及传递;

掌握Struts的拦截器;

掌握Struts的OGNL和标签使用。

Hibernate应用

了解什么是ORM,ORM在项目中的作用及优势;

Hibernate中的hbm与实体类之间的关系;

什么是HQL,什么是关系映射(一对一,多对一,多对多);

了解Hibernate的事务、懒加载和缓存。

Spring应用

Spring容器的作用;

Spring的AOP和IOC;

Spring托管Hibernate事务;

Spring整合Struts2和Hibernate。

通过第三阶段了解目前Java领域比较经典的三大框架,了解他们的大概功能,并加以使用。通过使用SSH开发一个简易CRM之类的项目来加强了解,理清楚框架的大致原理。搞清楚这三个框架之间的作用域以及角色。

在第三阶段的内容学习完了之后,就应该对整个系统研发有个大概的印象,实际上这个时候,独立完成一个系统之后,再回过头来仔细思考下Servlet+JDBC+JSP与SSH实现项目的相同点及区别。这样会让你更加的有收获。

4、模拟实际项目开发

SpringMVC的应用

SpringMVC中的控制器注解、请求注解、参数注解、响应注解等;

SpringMVC中的静态资源处理;

SpringMVC的容器。

Mybatis的应用

Mybatis的Mapping与实体映射;

Mybatis中的SQL语句写法;

Mybatis的缓存。

Spring+SpringMVC+Mybatis整合

SSM的整合使用;

回顾SSH与SSM的区别。

Redis+Mysql的查询优化设计

Redis的安装与连接;

Redis常用命令;

Redis存储机制;

Redis的持久化机制。

FastDFS的使用

什么是分布式文件系统;

分布式文件系统解决的问题是什么;

FastDFS的使用

Linux操作系统

Linux中的常用命令;

Linux下的JDK、tomcat安装;

Linux下的项目部署方式。

Nginx的使用

Nginx的作用;

反向代理和正向代理分别是什么;

Nginx实现tomcat代理。

Mysql集群方案

Mysql集群的常用方案有哪些;

Mycat中间件的概念

Mycat的使用准则;

了解数据库的主从复制;

了解数据库的主备切换;

为什么需要主从和主备。

Solr入门

什么是全文检索;

Solr做搜索的优势是什么;

Lucene、ElasticSearch、Solr之间的关系;

Solr的安装与使用。

JVM

回顾所有所学习到的知识,联系所有框架中的自定义容器、上下文来理解变量及对象的存储

理解垃圾回收是怎么一回事

理解集中回收算法

完全理解整个堆栈模型

通过第四个阶段了解更简单易用的SpringMVC,应用和存储集群相关的概念及实现方案。让自己具备一个设计高可用,可扩展的项目框架视野。这样对于后面继续专研SpringCloud / Dubbo、zookeeper这些RPC相关的框架有很大的好处。

第四阶段的内容更加偏向于互联网技术栈,通过这一节的内容能够脱离出基本的增删改查,了解出了增删查改之后,需要了解的集群、系统性能优化、外部缓存服务器使用、集群负载等概念。这些思维对于后面的提高以及学习会很有好处。

心态和预期

学习一定会碰到问题,犯错误,尤其初学。对待问题和错误的心态很重要,直接决定学习效果。

错误的心态有几种:

觉得自己是“知道”的,所以就放过去的

觉得错误是不“应该”的

碰到就躲,嫌麻烦

如果学习不和问题错误打交道,只拣好啃的骨头啃,那还学什么?学习过程中最有价值的地方,就是你碰到的问题,所犯的错误,用资料用个表面,学一点“容易”的东西,谁不会呢? 问题和错误一个个解决过去,解决一次很可能以后就不用再解决了,这就是“经验积累”。

所以学习者应该有形态要对:

问题和错误是“正常”的,“必要”的

问题和错误是“机会”

今天解决,以后就轻松了

我建议大家养成一个搜集错误的习惯,不需要很复杂,记一笔,放到一个地方就可以了,不需要记很多,解决一个删除一个,这个问题和错误清单能够帮助你集中注意力。

我提到的这些东西都能搜到对应的资料,无非多踩点坑罢了。但是,看文档or项目永远进步不了。一定要上手敲,想再多也不如动手。有机会联系一名优秀学长,有个走在前面的人给你指路肯定比你自己走要快得多。

最后,一定要动手,一定要动手,一定要动手。把代码敲烂,你才会有收获,不要被视频诱导,敲一遍之后误认为你自己会了,如果第二天你起来时已经忘了昨天学习了什么的话,那说明你还是没学会。好好加油吧。

在所有的学习过程中,每一个节点都应该有相应的练习或者项目来进行练手,看再多的博文和视频都是不行的, 不能让自己的双手停下来,只有不停的敲打键盘,写出自己的项目,然后在实际的开发中学会如何使用debug,总结所有遇到的bug及解决思路,这样才叫做学习技术。所以,希望有兴趣的同学,能够好好努力,不要因为一点点难度就懈怠、放弃。开发这条路途,无论你工作多久,都会遇到各种奇奇怪怪的问题,以及形形色色的bug等着你去解决。

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,515评论 25 707
  • 太多人喜欢夜晚,因为不用顶着世人的眼光去言谈,我也是,每一个夜晚,我都会编织一个属于虚幻的梦,梦里的人出不来,梦外...
    103e8bba767b阅读 191评论 0 0
  • 是时候认识你自己,让一切可能发生的事出现在你的生命里,告诉自己你撑的起所有美好。时光总是不经意带走所有好与不...
    立与破阅读 536评论 0 0