这个教程将 Java 的入门基础知识贯穿在一个故事中,逐步深入,可以帮助你快速进入 Java 编程的世界。万事开头难,逐步跟着这个教程走一遍,对 Java 应该就会有一种入门的感觉了。然后再去学习更高级的主题,或者更深入地学习其中的某些知识点。
第 1 课 什么是 Java
第 2 课 Java 的历史
第 3 课 Java 的特性
第 4 课 Hello World
第 5 课 Java 程序在编译和运行时发生了什么
第 6 课 JDK,JRE 和 JVM 之间有什么区别?
第 7 课 究竟什么是 JVM?
第 8 课 初识 Java 变量
第 9 课 一文搞懂 Java 中的基本数据类型
第 10 课 Unicode 字符集简介
第 11 课 操作符简介
第 12 课 一文搞懂 Java 的所有关键字
第 13 课 if/else
第 14 课 一文彻底搞懂 Java 命名约定
目前已经连载 41 篇,这里就不再贴了,希望能够对你有所帮助。
入门之后,可以考虑以下学习路径和内容:
1、学习的基本路径
首先建立好开发环境非常重要,工欲善其事,必先利其器。做任何开发,首先就是要把这个环境准备好,之后就可以去做各种尝试,尝试过程中就能逐渐建立信心。初学者往往在环境配置中被各种预想不到的问题弄得很沮丧。
建立起来环境了,改变世界就靠你的代码了。学习一门编程语言没有太多的诀窍,你可能可以去找一本比较好的经典的入门书籍,现在网络上也有非常多的资料,图文或者视频都可以,根据个人喜好选择。最重要的练习,熟能生巧,在不断的练习中去加深自己对程序语言的理解。
事实上要成为一个资深的 Java 开发者,对各种 API 和框架的学习,可能是花时间最多的一个地方。在软件开发中也有二八原则,少数的 API 能够胜任开发中的大部分场景。所以你只需要掌握这些关键部分,当在新场景下遇到不能解决的新问题时,再去查看帮助文档。所以帮助文档的阅读也是技术学习的一个关键因素。了解了基础原理之后一般就能上手开发了,帮助文档可以帮助你在实践中学习。
2、三个神器
三个神器,对于软件开发者来说非常重要。
第一个 Google,虽然因为各种原因的话有时候我们访问不了,但是这基本上是可以去寻找技术资料最好的方式。
第二个是 Github,Github 就是一个可以找到大量第三方库的地方,那是别人给我们封装好的可以复用的代码。比方说造一辆汽车的话,我们经常不要自己造轮子,而 Github 上可以找到很多优质的轮子,这些轮子还是免费(代码都是开源的),我们应该尽量利用它们来拼装自己的汽车。
第三个是 StackOverflow 网站,在这个问答网站上你遇到的几乎任何开发问题都能快速找到答案。
3、Java Web 全栈开发的推荐学习内容
简单总结一下,大概包括下面这些内容。每一部分都可以细化成很多知识点,这只是一个粗略的罗列。把它当做技术地图就好了。
开发环境的建立与项目管理:Intellij IDEA、Maven 和 Git
Java 编程基础:基本语法、面向对象特性、Java8 新特性、更高级库(比如 Guava)的使用等
前端开发技术:HTML、CSS、Vue 和 JavaScript 基础
Spring 基础:依赖注入 IoC、面向切面编程 AOP、SpringBoot
MVC 框架:Spring MVC,包括 URL 路由、模板、表单、Session、拦截器等知识
数据访问:关系型数据库、JDBC、Spring JDBC、事务、ORM 框架(MyBatis)
成熟应用的关键功能实现:邮件发送、异步任务、缓存、日志等
应用的测试和部署
4、Java Web 涉及到的内容
Web 基础,HTTP 协议
C/S 模型,浏览器访问网站过程
URL 基础知识
HTTP 消息——请求和响应
处理 HTTP 请求的应用程序
处理用户输入
HTTP 方法——GET v.s. POST
读取表单数据
构建 MVC 应用
Session
Session&&Cookie 基本概念
通过 Cookie 记录用户状态(类似购物车的例子)
使用 Session 跟踪用户(登录)
5、数据库相关的内容
除了动态的 Web 界面,一个有价值的 Web 应用必然需要进行数据存储,开发上我们一般称之为数据持久化(Data Persistence)。
从业务功能的角度出发,简单的应用可以认为就是数据的增删改查。比如一个产品级的博客应用,最核心的功能就是对博客内容的创建、修改、删除和查询,而这些功能都离不开 Web 服务器背后的数据库系统。
数据库基本概念
实体、关系(表)、记录(行)、列(属性)
主键、外键等
数据库表设计的基本原则
SQL 基础
MySQL 基本使用
SQL 中的 DDL——create,drop,alter,建立主键外键等约束
SQL 中的 DML——insert, select, delete, update,join
JDBC
数据库连接,连接池
使用 JDBC API 访问数据库
分页查询
事务的基本概念
JDBC 代码的封装与数据访问的三层架构
6、Spring 相关的内容
Spring 最重要的两个核心功能是依赖注入(DI,Dependency Injection)和面向切面编程(AOP,Aspect Oriented Programming)。其中 DI 用于管理 Java 对象之间的依赖关系,AOP 用于解耦业务代码和公共服务代码(如日志,安全,事务等)。DI 和 AOP 能够让代码更加简单,具有良好的松耦合特性和可测试性,极大地简化开发。理解这两者是使用 Spring 框架的基础。
Spring 的核心思想
依赖注入
面向切面编程(AOP)
基于 POJO 的编程模型
预置的模板代码(如 Spring JDBC)
依赖注入的基本原理
依赖注入的优点
依赖注入如何实现
依赖注入的使用
基于 XML 的装配方式
基于 Java Configuration 的装配方式
自动装配
多种装配方式的混用
处理装配的歧义
如何注入属性值
Spring Bean 的作用域
Singleton
Prototype
Request
Global
AOP
切面、目标对象、切点、通知、织入等基本概念
如何定义切点:定义切点的 aspectJ 语法
定义通知
前置通知(Before)
后置通知(AfterReturning)
异常通知(AfterThrowing)
最终通知(After)
环绕通知(Around)
如何给切面传参
7、Spring MVC 相关内容
Spring 作为 Java 系的全栈(full-stack)开发框架,当然也对 Web 开发有着非常好的支持。Spring 的 Web MVC 框架能够使开发者非常容易的开发 Web 应用,同时能够无缝享受到 Spring 本身的诸多好处——IoC 容器、AOP 编程等等。
Spring MVC 基本原理、配置
DispatcherServlet
WebApplicationContext
处理 HTTP 请求过程
实现 Controller
@Controller, @RequestMapping 注解
URL 模板模式,@PathVariable
获取 HTTP 请求参数,@RequestParam
@RequestMapping 方法支持的参数
@RequestMapping 方法支持的返回值
视图解析
处理静态资源
前后端分离
配置其它模板引擎
重定向
表单处理
表单数据绑定
Spring 表单标签
表单验证
文件上传
拦截器 Interceptors
Spring MVC 请求处理流程
HandlerInterceptor 接口
配置 Interceptor
异常处理
配置错误页面
使用 HTTP 状态码
@ExceptionHandler
ControllerAdvice 全局异常处理
REST API
@ResponseBody 和@RequestBody
处理 PUT 和 DELETE 请求
8、MyBatis 相关内容
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生 Map 使用简单的 XML 或标注,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录
MyBatis 基础
ORM 的概念
如何定义 Mapper 接口
如何定义 XML Mapper 映射
如何使用 Mapper
MyBatis 的基本使用
SqlSessionFactory
SqlSessionFactoryBuilder
SqlSession
MyBatis-Spring
基于 Spring 如何配置和使用 Mapper
SqlSessionFactoryBean 的配置
MyBatis Spring Boot Starter 的使用
增删改查
熟悉 Mapper 配置文件
select 元素
select 的 resultType 属性
insert 元素
update 元素
delete 元素
复杂查询
resultMap 元素
association 元素
嵌套结果与嵌套查询
collection 元素
discriminator 元素
动态 SQL
分页查询(分页插件)
9、Java Web 应用的部署
War 包规范和结构
在 IDE 中调试和部署
使用 IDE 导出 War 包
将 War 包部署到服务器
基于 Spring Boot 的部署
10、其它主题
缓存:EhCache、Spring Cache Manager、数据层缓存、服务层缓存、页面缓存、Redis
安全:Spring Security(HTTP 基本验证,角色验证,权限验证)
任务调度:Spring 任务执行器(Executor)
邮件发送:SMTP 协议、spring-boot-starter-mail
Web Socket:@SubscribeMapping, WebSocketConfig
日志:SLF4J 与 Logback、 Spring Boot Logging、 ConsoleAppender/RollingFileAppender 、Sentry、ELK
11、设计模式
12、更进一步
分布式、深入 Java 虚拟机、针对不同场景的 Java 技术框架,到这个阶段已经不仅仅是 Java 的学习了,而是大型应用场景的技术积累、架构设计的精进了。