知乎4000赞,自学Java怎么入门?

简介: 知乎4000赞,自学Java怎么入门?

这个教程将 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

Session

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 的学习了,而是大型应用场景的技术积累、架构设计的精进了。


相关文章
|
15天前
|
JSON NoSQL Java
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
33 0
|
16天前
|
Java
Java编程语言入门指南
Java编程语言入门指南
16 1
|
21小时前
|
SQL Java 关系型数据库
零基础轻松入门Java数据库连接(JDBC)
零基础轻松入门Java数据库连接(JDBC)
6 0
|
2天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
10 0
|
2天前
|
Java
Java一分钟之-类与对象:面向对象编程入门
【5月更文挑战第8天】本文为Java面向对象编程的入门指南,介绍了类与对象的基础概念、常见问题及规避策略。文章通过代码示例展示了如何定义类,包括访问修饰符的适当使用、构造器的设计以及方法的封装。同时,讨论了对象创建与使用时可能遇到的内存泄漏、空指针异常和数据不一致等问题,并提供了相应的解决建议。学习OOP需注重理论与实践相结合,不断编写和优化代码。
25 1
|
3天前
|
Java 编译器 对象存储
java一分钟之Java入门:认识JDK与JVM
【5月更文挑战第7天】本文介绍了Java编程的基础——JDK和JVM。JDK是包含编译器、运行时环境、类库等的开发工具包,而JVM是Java平台的核心,负责执行字节码并实现跨平台运行。常见问题包括版本不匹配、环境变量配置错误、内存溢出和线程死锁。解决办法包括选择合适JDK版本、正确配置环境变量、调整JVM内存参数和避免线程死锁。通过代码示例展示了JVM内存管理和基本Java程序结构,帮助初学者更好地理解JDK和JVM在Java编程中的作用。
16 0
|
11天前
|
设计模式 算法 安全
Java多线程编程实战:从入门到精通
【4月更文挑战第30天】本文介绍了Java多线程编程的基础,包括线程概念、创建线程(继承`Thread`或实现`Runnable`)、线程生命周期。还讨论了线程同步与锁(同步代码块、`ReentrantLock`)、线程间通信(等待/通知、并发集合)以及实战技巧,如使用线程池、线程安全设计模式和避免死锁。性能优化方面,建议减少锁粒度和使用非阻塞算法。理解这些概念和技术对于编写高效、可靠的多线程程序至关重要。
|
11天前
|
算法 Java 大数据
Java从入门到精通学习报告
Java从入门到精通学习报告
19 1
|
12天前
|
数据采集 存储 前端开发
Nutch库入门指南:利用Java编写采集程序,快速抓取北京车展重点车型
2024年北京车展凸显电动车全球热度,中国引领市场,展出117台全球首发车,包括30台跨国公司电动车。借助Nutch库抓取汽车网站数据,分析电动车市场趋势。通过配置代理和多线程爬虫,高效收集新车信息,助力理解市场动态,推动可持续交通发展。
Nutch库入门指南:利用Java编写采集程序,快速抓取北京车展重点车型
|
15天前
|
存储 设计模式 Java
Java8 CompletableFuture异步编程-入门篇
Java8 CompletableFuture异步编程-入门篇