作为一个java后端开发工程师,我从上学以来接触java已经有6个年头,我在知乎上经常看到许多同学在问如何学习java,编程如何入门之类的问题,我知道刚开始学习java的你们肯定很着急,我当时也是这样,感觉对编程一无所知,焦虑又害怕。其实不必过于担心,只要找到一个合适的学习方法+勤奋的练习+合理的规划。然后静下心来仔细思考,你就能攻克java这门编程语言。
首先,开始学习java之前,我们要知道,我们要学习哪些东西。现在的编程技术发展的太快了,我们不可能把所有的知识都学会,那样也不现实。所以知道学习java要学习什么是相当关键的,可以避免我们走很多弯路。
下面我就来说说java的自学内容,下面也有一些资料供大家参考。
Java学习的重点和难点恰恰集中在Java的基础语法阶段,这个阶段要理解Java的各种“抽象概念”,逐渐建立Java的编程思想。Java语言是抽象程度比较高的语言,学习Java就是学习各种“抽象”,比如类、接口、抽象类、内部类、enum等概念。要想掌握这部分知识,一个重点就在于大量的练习。
学习基础知识的时候,我知道你们有时候会很迷茫,书看了一遍又一遍。但是感觉自己啥也没学到。如果你是处于这种状态,那你不妨去看看一些网上的视频。
学习的网站有:
(注:上面的书籍推荐,有些是和链接虽然分开的但也是匹配相关的,有的是文章、有的是问答、有的是大佬博客;总之能让你更好的加深理解。)
数据结构,你需要会使用一些简单的容易比如list或者set等,链表、hashMap等的使用,还要了解二叉树,树的遍历及图。计算机系统知识,内存,函数的调用,计算机的组成。操作系统,进程和线程、锁、并发问题,内存中的分段,页面置换等算法。学习数据库基础知识,并学习基本的增删查改。
这里推荐两本比较不错的书籍《SQL必知必会》,《数据库系统概念》,做开发的一定离开不了数据库,所以数据库知识要学习扎实。
(1) java8编程
其中包括lambda表达式、Stream api、并发增强、Nashorn。
下图是常用的api:
常用api
(2)jvm的学习
JVM 是 Java 后端面试(大厂)中非常重要的一环。不论是应届还是社招,面试国内的一些大厂,你都会被问到很多 JVM 相关的问题。比如程序计数器、虚拟机栈、本地方法栈、堆、方法区,类加载机制,双亲委派模型
(3)并发编程思想
这里可以推荐大家看看《java并发编程之美》、《深入浅出java多线程》,《Java并发实现原理:JDK源码剖析》这几本书,比较不错,我都看过,确实挺好。
java采取了更加传统的方式,在顺序语言的基础上提供对线程的支持.与多任务操作系统中分叉外部进程不同,线程机制是在由执行程序表示的单一进程中创建任务.这种方式产生的一个好处是操作系统的透明性,这对java而言是一个重要的设计目标。
线程的一大好处是可以是你从这个层次抽身出来,即代码不必知道它是运行在具有一个还是多个CPU的机器上.所以,使用线程机制是一种建立透明的 可扩展的程序的方法.多任务和多线程往往是使用多处理器系统的最合理方式。
了解线程的资源、synchronized关键字、共享资源和锁。
任务协作时,关键问题是这些任务之间的握手。为了实现这种握手,使用了相同的基础特性:互斥。
(4)Java设计模式
设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。
如Java 中的spring 框架。(如感觉spring框架太大可以学习spring boot)
Spring Boot基本上是Spring框架的扩展,它消除了设置Spring应用程序所需的XML配置,为更快,更高效的开发生态系统铺平了道路。 Spring Boot中的一些特征:
强调一点:Spring Boot 运用“约定优于配置”的思想,对使用 Spring Boot创建的工程,提供约定、缺省、默认的配置,去简化传统手动、一步一步配置的开发方式。
分阶段性的给自己定个目标,这样学习效率更高,每个阶段给自己一个评分,并习惯性的总结。
周期与目标:
学习周期:35天
学完后目标:掌握JAVA的基础知识,熟悉对数据库进行基本的增删改查。
学习周期:33天
学完后目标:可以仿制任何网站前端页面,解决网页浏览器兼容性问题,解决PC端和移动端兼容性问题;使用前端脚本进行相关网页功能特效编写,使用JavaWeb核心技术轻松写出任何网站功能模块,使用JavaWeb高级部分知识解决网站的相关高并发问题,无压力胜任javaEE开发工程师职位。
学习周期:18天
学完后目标:能够开发JavaEE的后台系统,能够搭建企业级的JavaEE开发框架,能够使用spring boot 开发后台代码。
学习知识点:Spring boot 、Spring框架、Hibernate5框架、Struts2框架。
周期与目标:
学习周期:16天
学完后目标:基于Oracle数据进行应用开发,可使用Quartz框架完成定时任务调度功能开发,可使用Shiro框架完成认证及授权功能开发,可使用CXF框架完成接口功能开发,可使用amChart完成图计报表功能开发,可使用ApachePOI组件完成导入及导出功能开发,可实现邮件的发送功能,可使用freemarker实现代码自动生成,据有一定的业务需求分析能力。
学习重点:
1)oracle
简单查询、oracle的常用函数、多表查询、集合操作、DDL操作管理表、DML管理数据、其它数据库对象、PL/SQL编程、存储过程与存储函数、触发器
2)maven
maven介绍、maven安装、maven的入门程序、maven仓库、项目构建、依赖管理、maven综合案例、maven的私服
3)项目练手
你可以从网上找点Demo练手、你也可以使用git找点项目练手。寻找项目的方法很多,多练习,才是掌握编程的核心。
一定要记住,学习java,能动手就不要BB。动手能力是一件非常有必要而且高效的事情。