Java后端基础学习路线

Java后端基础学习路线

在这里插入图片描述

目的:让同学们对后端开发有个基础了解,分享后端开发流程和常用工具

一、Java语言介绍

​ Java是一种编程语言。由Sun公司1995年推出Java(印度尼西亚爪哇岛的英文名,因盛产咖啡而闻名)。

说到Java不得不提到詹姆斯·戈士林(Java语言之父)他亲手设计了Java语言,并开发了Java编译器和Java虚拟机,使Java成为了世界上最流行的开发语言。Java支持的计算模式,已经成为了互联网的标准编程模式以及分布式企业级应用的事实标准。目前他还在投身于软件开发事业中。

在这里插入图片描述

真正的大佬是不需要头发的!!!

Java语言特点

在这里插入图片描述

Java基本类型

在这里插入图片描述

​ 2022年度Java语言市场占比

在这里插入图片描述
在这里插入图片描述

Java距今已经走过二十几年的时间,依然能经久不衰个人觉得是Java的生态强大,从基础的SSH(或者SSM)/Guava等编程框架,到各种MQ组件/zookeeper/hadoop软件群/spark等大数据处理软件,都有java身影。

推荐Java学习课程(从入门到入土,你值得拥有)

在这里插入图片描述

二、MySql

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

什么是关系型数据库?

顾名思义,关系型数据库(RDBMS,Relational Database Management System)就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。关系型数据库中,我们的数据都被存放在了各种表中(比如用户表),表中的每一行就存放着一条数据(比如一个用户的信息)。
在这里插入图片描述
有哪些常见的关系型数据库呢?

MySQL、PostgreSQL、Oracle、SQL Server、SQLite(微信本地的聊天记录的存储就是用的 SQLite)

MySQL 主要具有下面这些优点:

  • 成熟稳定,功能完善。
  • 开源免费。 文档丰富,既有详细的官方文档,又有非常多优质文章可供参考学习。
  • 开箱即用,操作简单,维护成本低.
  • 兼容性好,支持常见的操作系统,支持多种开发语言。
  • 社区活跃,生态完善。
  • 事务支持优秀, InnoDB 存储引擎默认使用REPEATABLE-READ 并不会有任何性能损失,并且,InnoDB 实现的 REPEATABLE-READ隔离级别其实是可以解决幻读问题发生的。
  • 支持分库分表、读写分离、高可用。
常见Sql语句
-- 建表语句
CREATE TABLE `t_user_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


-- 新增语句 insert
INSERT into t_user_test(name,age) VALUES('tll',18)

-- 查询全部用户信息 select
SELECT * from t_user_test

-- 查询用户名为admin 的用户
SELECT * from t_user_test where name = 'tll'

-- 更新语句用update
UPDATE t_user_test set age = 20 where id = 1

-- 删除语句用户 Delete
DELETE from t_user_test where id = 1

二、Java常用编程软件

在这里插入图片描述

Eclipse

在这里插入图片描述

优点:免费、适合java语言,开发、编写、查错、编译、帮助等各方面非常方便

缺点:

1、大工程时,吃内存耗cpu,依然会出现很慢、卡顿、奔溃和无响应的情况

2、对于GUI和WEB界面设计,暂没有很好的支持

IDEA

在这里插入图片描述

 1.智能的选取。在很多时候我们要选取某个方法,或某个循环或想一步一步从一个变量到整个类慢慢扩充着选取,IDEA就提供这种基于语法的选择,在默认设置中Ctrl+w,可以实现选取范围的不断扩充,这种方式在重构的时候尤其显得方便

2.丰富的导航模式。IDEA提供了丰富的导航查看模式,例如ctrl+e显示最近打开过的文件,ctrl+n显示你希望显示的类名查找框

3.简洁易用的GUI界面

4.智能编辑。代码输入过程中,自动补充方法或类

5.自定义的快捷键。强大的快捷键设置,基本可以让程序员离开鼠标工作

缺点:

1.收费

2.资源消耗比较大,建个大中型的J2EE项目,启动后基本要200M以上的内存支持,包括安装软件在内,差不多要500M的硬盘空间支持
Navicat

在这里插入图片描述

Another Redis Desk Manager

在这里插入图片描述

ApiFox

在这里插入图片描述

三、常用框架

如果从事Java后端开发,基本上是离不开Spring家族框架,Java之所以有这么多人在使用离不开Spring家族框架。
语言的流行通常需要一个杀手级的应用,Spring 就是 Java 生态的一个杀手级的应用框架

Spring

什么是Spring:Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。
在这里插入图片描述
Spring官网
在这里插入图片描述

在这里插入图片描述

SpringMVC

Spring MVC 是 Spring 中的一个很重要的模块,主要赋予 Spring 快速构建 MVC 架构的 Web 程序的能力。MVC 是模型(Model)、视图(View)、控制器(Controller)的简写,其核心思想是通过将业务逻辑、数据、显示分离来组织代码。
在这里插入图片描述

SpringBoot

为什么会有SpringBoot?

使用 Spring 进行开发各种配置过于麻烦比如开启某些 Spring 特性时,需要用 XML 或 Java 进行显式配置。于是,Spring Boot 诞生了!Spring 旨在简化 J2EE 企业应用程序开发。Spring Boot 旨在简化 Spring 开发(减少配置文件,开箱即用!)。Spring Boot 只是简化了配置,如果你需要构建 MVC 架构的 Web 程序,你还是需要使用 Spring MVC 作为 MVC 框架,只是说 Spring Boot 帮你简化了 Spring MVC 的很多配置,真正做到开箱即用!

优点:

  • 良好的基因

因为SpringBoot是伴随着Spring 4.0而生的,boot是引导的意思,也就是它的作用其实就是在于帮助开发者快速的搭建Spring框架,因此SpringBoot继承了Spring优秀的基因,在Spring中开发更为方便快捷。

在这里插入图片描述

  • 简化依赖

如我们要创建一个 web 项目,使用 Spring 的朋友都知道,在使用 Spring 的时候,需要在 pom 文件中添加多个依赖,而 Spring Boot 则会帮助开发着快速启动一个 web 容器,在 Spring Boot 中,我们只需要在 pom 文件中添加如下一个 starter-web 依赖即可。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

我们点击进入该依赖后可以看到,Spring Boot 这个 starter-web 已经包含了多个依赖,包括之前在 Spring 工程中需要导入的依赖,我们看一下其中的一部分,如下:

<!-- .....省略其他依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.0.7.RELEASE</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.0.7.RELEASE</version>
    <scope>compile</scope>
</dependency>

由此可以看出,Spring Boot 大大简化了我们的编码,我们不用一个个导入依赖,直接一个依赖即可。

  • 简化配置

Spring 虽然使Java EE轻量级框架,但由于其繁琐的配置,一度被人认为是“配置地狱”。各种XML、Annotation配置会让人眼花缭乱,而且配置多的话,如果出错了也很难找出原因。Spring Boot更多的是采用 Java Config 的方式,对 Spring 进行配置。举个例子:

我新建一个类,但是我不用 @Service注解,也就是说,它是个普通的类,那么我们如何使它也成为一个 Bean 让 Spring 去管理呢?只需要@Configuration 和@Bean两个注解即可,如下:

public class TestService {
    public String sayHello () {
        return "Hello Spring Boot!";
    }
}
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class JavaConfig {
    @Bean
    public TestService getTestService() {
        return new TestService();
    }
}

@Configuration表示该类是个配置类,@Bean表示该方法返回一个 Bean。这样就把TestService作为 Bean 让 Spring 去管理了,在其他地方,我们如果需要使用该 Bean,和原来一样,直接使用@Resource注解注入进来即可使用,非常方便。

@Resource private TestService testService;

另外,部署配置方面,原来 Spring 有多个 xml 和 properties配置,在 Spring Boot 中只需要个 application.yml即可。

  • 简化部署

在使用 Spring 时,项目部署时需要我们在服务器上部署 tomcat,然后把项目打成 war 包扔到 tomcat里,在使用 Spring Boot 后,我们不需要在服务器上去部署 tomcat,因为 Spring Boot 内嵌了 tomcat,我们只需要将项目打成 jar 包,使用 java -jar xxx.jar一键式启动项目。
另外,也降低对运行环境的基本要求,环境变量中有JDK即可

MyBatis

MyBatis是什么?
它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低

  • Object Relation Mapping,对象关系映射。对象指的是Java对象,关系指的是数据库中的关系模型,对象关系映射,指的就是在Java对象和数据库的关系模型之间建立一种对应关系,比如用一个Java的Student类,去对应数据库中的一张student表,类中的属性和表中的列一一对应。Student类就对应student表,一个Student对象就对应student表中的一行数据

  • 用mybatis进行开发,需要手动编写SQL语句。而全自动的ORM框架,如hibernate,则不需要编写SQL语句。用hibernate开发,只需要定义好ORM映射关系,就可以直接进行CRUD操作了。由于mybatis需要手写SQL语句,所以它有较高的灵活性,可以根据需要,自由地对SQL进行定制,也因为要手写SQL,当要切换数据库时,SQL语句可能就要重写,因为不同的数据库有不同的方言(Dialect),所以mybatis的数据库无关性低。虽然mybatis需要手写SQL,但相比JDBC,它提供了输入映射和输出映射,可以很方便地进行SQL参数设置,以及结果集封装。并且还提供了关联查询和动态SQL等功能,极大地提升了开发的效率。并且它的学习成本也比hibernate低很多

四、编程心得

  • 好记性不如烂笔头。要有做笔记总结的习惯。

在这里插入图片描述

  • 心动万次,不如行动一次。
学习任何技术只看书和视频是达不到掌握的程度,需要动手实践起来才能会用,熟能生巧后才会有优化的思路。
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值