后端学习计划

目录

学习计划参照

第一阶段  JAVA基础

Day 1

Day 2

Day 3

Day 4

Day 5

第二阶段  数据库MySQL

Day 6

Day 7

第三阶段  项目框架

Day 8


下表转自黄高原老师-《新生培训方案》

学习内容

学习资料

第一阶段:

 JAVA基础

(2周)

java环境搭建:对jvm,jre,jdk 和系统环境变量都有了解,能搭建运行编译环境,编译运行helloworld

java 语法,包括变量、对象、接口、泛型、异常、IO 都有了解

java8: stream、 lambda 等

视频 :

https://www.bilibili.com/video/BV1fh411y7R8

文档:

https://www.runoob.com/java/java-tutorial.html

https://www.runoob.com/java/java8-new-features.html

https://www.liaoxuefeng.com/wiki/1252599548343744

书籍

《Head First Java》

第二阶段:

数据库MySQL

(1周)

SQL 语句、索引,食物,库表设计

视频 :  https://www.bilibili.com/video/BV1Vy4y1z7EX

文档

SQL - 菜鸟教程:https://www.runoob.com/sql/sql-tutorial.html

MySQL - 菜鸟教程:https://www.runoob.com/mysql/mysql-tutorial.html

第三阶段:

项目框架

(4周)

maven

spring

springboot

spring jpa

视频:

Spring 5 框架最新版教程(idea版):https://www.bilibili.com/video/BV1Vf4y127N5

SpringMVC 2021 最新教程:https://www.bilibili.com/video/BV1Ry4y1574R

Maven 零基础入门教程:https://www.bilibili.com/video/BV1TW411g7hP

SpringBoot2 零基础入门:https://www.bilibili.com/video/BV19K4y1L7MT

网站:

maven和spring官网

学习计划参照

第一阶段  JAVA基础

Day 1

(2023-08-12)

1.1.1 学习内容

  • jvm, jre, jdk
  • Java环境搭建与运行

1.1.2 学习目标

  • 明晰JDK、JRE和JVM的意义和关系
  • 下载安装JDK,配置系统环境变量,搭建运行编译环境
  • 编译运行helloworld

1.1.3 学习成果

  • JDK、JRE和JVM关系图

        JVM (Java Virtual Machine  Java 虚拟机)

        JRE (Java Runtime Environment  Java 运行环境)

        JDK (Java Development Kit  Java 开发工具包)

  • 第一个helloworld程序

  • 运行结果

Day 2

(2023-08-13)

1.2.1 学习内容

  • 变量
  • 运算符
  • 程序控制结构
  • 数组、排序和查找

1.2.2 学习目标

  • 明晰Java变量、运算符、程序控制结构(if-else/ switch,for/ while/ do..while,break/ continue/ return)、数组(一维/二维)、排序和查找的基本用法和结构
  • 综合上述学习内容练习综合案例
  • 二维数组应用案例(如杨辉三角)

1.2.3 学习成果

public class ArrayTest {
    public static void main(String[] args) {
        MyTools mt = new MyTools();
        int[] arr = {10, -1, 8, 0, 34};
        mt.bubble(arr);
        System.out.println("======");
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i] + "\t");
            // System.out.println("args = " + Arrays.toString(args));

        }
    }

}


class MyTools {

    public void bubble(int[] arr) {
        int temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}

Day 3

(2023-08-14)

1.3.1 学习内容

   面向对象编程(基础)

  • 对象
  • 实例
  • 方法递归
  • 方法重载
  • this关键字

   面向对象编程(中级)  

  • 封装
  • 继承
  • 多态
  • 方法重写
  • 4种修饰符使用
  • super关键字

1.3.2 学习目标

  • 根据教程明晰Java面向对象编程的基本特征和方法
  • 完成零钱通项目,实现明细、入账、消费、退出的功能

  • 完成房屋出租系统项目,实现新增房源、查找、删除、修改、列表、退出的功能

1.3.3 学习成果

        8.14 学习成果

Day 4

(2023-08-15)

1.4.1 学习内容

  • 类变量和类方法
  • 代码块
  • 单例模式
  • final关键字
  • 抽象类和模板设计模式
  • 接口
  • 内部类

1.4.2 学习目标

  • 静态方法只能访问静态成员,非静态方法可以访问所有成员,遵守访问权限
  • static代码块在类加载时才执行,只执行一次(创建对象实例、当创建子类对象实例时父类被加载、使用类的静态成员);普通代码块每创建对象一次调用一次
  • 创建对象时,对一个类的调用顺序为:静态代码块和静态属性初始化(两个都有看各自顺序)=》普通代码块和普通属性初始化(两个都有看各自顺序)=》构造方法
  • 创建子类对象调用顺序:父类静态 =》子类静态 =》父类普通 =》父类构造 =》子类普通 =》子类构造
  • final应用场景:类不能被继承(但可以实例化对象)、子类不能重写父类方法(但子类可以继承)、类属性值不能修改、局部变量不能修改
  • final赋初值:定义时、构造器中、代码块中;(静态)定义时、静态代码块
  • 抽象类abstract不能用private、final、static修饰
  • interface接口中(1 抽象方法 2 默认实现方法 3 静态方法)
  • 接口中属性等价 public static final 
  • 类继承类是单继承,但类和接口可以继承多个接口
  • 类的五大成员:属性、方法、构造器、代码块、内部类
  • 局部内部类:外部其他类不能访问局部内部类;访问外部类成员使用外部类名.this.成员访问;局部内部类直接访问外部类成员、外部类访问局部内部类成员需要先创建对象
  • 匿名内部类

1.4.3 学习成果

        8.15 学习成果

知识点:继承、多态、动态绑定、内部类接口

package com.weiwei.innerclass_;

public class InnerClassExercise02 {
    public static void main(String[] args) {
        CellPhone cellPhone = new CellPhone();
        cellPhone.alarmClock(new Bell() {
            @Override
            public void ring() {
                System.out.println("懒猪起床了");
            }
        });

        cellPhone.alarmClock(new Bell() {
            @Override
            public void ring() {
                System.out.println("小伙伴上课了");
            }
        });


    }
}

interface Bell{
    void ring();
}

class CellPhone{
    public void alarmClock(Bell bell){
        bell.ring();
    }
}

知识点:代码块静态变量(方法)、构造器

package com.weiwei.codeblock_;

public class CodeBlockDetail04 {
    public static void main(String[] args) {

        new B02();
    }
}

class A02 { 
    private static int n1 = getVal01();
    static {
        System.out.println("A02的一个静态代码块..");//(2)
    }
    {
        System.out.println("A02的第一个普通代码块..");//(5)
    }
    public int n3 = getVal02();
    public static int getVal01() {
        System.out.println("getVal01");//(1)
        return 10;
    }

    public int getVal02() {
        System.out.println("getVal02");//(6)
        return 10;
    }

    public A02() {
        System.out.println("A02的构造器");//(7)
    }

}

class B02 extends A02 { 

    private static int n3 = getVal03();

    static {
        System.out.println("B02的一个静态代码块..");//(4)
    }
    public int n5 = getVal04();
    {
        System.out.println("B02的第一个普通代码块..");//(9)
    }

    public static int getVal03() {
        System.out.println("getVal03");//(3)
        return 10;
    }

    public int getVal04() {
        System.out.println("getVal04");//(8)
        return 10;
    }

    public B02() {

        System.out.println("B02的构造器");//(10)

    }
}

Day 5

(2023-08-16)

1.5.1 学习内容

  • 异常
  • 泛型
  • IO
  • Java8

1.5.2 学习目标

  •  try-catch-finally 和 throws(默认)
  • 注意泛型的语法 ;泛型类、泛型接口、泛型方法( 泛型创建对象时,必须说明其类型,不指定默认为Object)
  •  InputStream 和 OutputStream

1.5.3 学习成果

       8.16 学习成果

        ( 代码见上 )

知识点:异常处理(try-catch、throws、throw)

知识点:泛型、集合的操作

第二阶段  数据库MySQL

Day 6

(2023-08-17)

2.1.1 学习内容

  • MySQL安装配置
  • 简单查询
  • 条件查询
  • 排序数据
  • 单行处理
  • 多行处理
  • 分组查询
  • 连接查询
  • 子查询
  • 表的创建

2.1.2 学习目标

  • DQL 语句总结:

        select 
                ...
            from
                ...
            where
                ...
            group by
                ...
            having
                ...
            order by
                ...
            limit
                ...
    
            执行顺序:
                1.from
                2.where
                3.group by
                4.having
                5.select
                6.order by
                7.limit..

DQL操作命令(操作符)语句结构
条件查询

=、<>、between...and...、is null、and、or、in、not、like

select...from...where...
数据排序order by、asc(desc)select...from...order by...(asc/desc)
单行处理lower、upper、substr、length、rand()、case...when...then...else...end、ifnullselect 命令(...) from...
多行处理count、sum、avg、max、minselect 命令(...) from...
分组查询group by、havingselect...from...where...group by...having...order by...
连接查询join...on...、inner/left outer/right outerselect...from...left/right outer join...on...
其他union、limit
DDL操作语法格式
建表

create table 表名(字段名1 数据类型, 字段名2 数据类型, 字段名3 数据类型);

    create table 表名(
        字段名1 数据类型, 
        字段名2 数据类型, 
        字段名3 数据类型
    );
 

DML操作语法格式
插入数据insert into 表名(字段名1,字段名2,字段名3...) values(值1,值2,值3);
修改数据update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3... where 条件;
删除数据delete from 表名 where 条件;

2.1.3 学习成果

       8.17 学习成果

        ( 代码见上 )

知识点:DQL操作

知识点:DQL操作

补充:DDL,DML操作

Day 7

(2023-08-18)

2.2.1 学习内容

  • 事务
  • 索引
  • 视图
  • DBA命令
  • 数据库设计三范式

2.2.2 学习目标

  • 事务只对DML语句有效果
  • 事务开启:start transaction; 回滚事务:rollback; 提交事务:commit;
隔离级别要求

 读未提交

(READ UMCOMMITTED)

允许一个事务可以看到其他事务未提交的修改

读已提交

(READ COMMITTED)

允许一个事务只能看到其他事务已经提交的修改,未提交的修改是不可见的

可重复读

(REPEATABLE READ)

事务不会读到其他事务对已有数据的修改,即使其他事务已提交

串行化

(SERIALIZABLE)

相当于单线程,后一个事务的执行必须等待前一个事务结束
索引操作语句结构
创建索引create unique index 索引名 on 表名(列名);
查看索引show index from ...;
使用索引explain select ... from ... where ...;
删除索引drop index ... on ...;
三范式要求
第一范式有主键,具有原子性,字段不可分割
第二范式完全依赖,没有部分依赖
第三范式没有传递依赖

2.2.3 学习成果

       8.18 学习成果

        ( 代码见上 )

知识点:事务

mysql> insert into t_vip values(9,'lwl');
Query OK, 1 row affected (0.00 sec)

mysql> insert into t_vip values(10,'lwl');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t_vip;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | zhangsan |
|  3 | zhangsan |
|  4 | zhangsan |
|  5 | zhangsan |
|  6 | zhangsan |
|  7 | zhangsan |
|  8 | zhangsan |
|  9 | lwl      |
| 10 | lwl      |
+----+----------+
10 rows in set (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t_vip;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | zhangsan |
|  3 | zhangsan |
|  4 | zhangsan |
|  5 | zhangsan |
|  6 | zhangsan |
|  7 | zhangsan |
|  8 | zhangsan |
+----+----------+
8 rows in set (0.00 sec)

知识点:索引

mysql> select * from emp;
+-------+--------+-----------+------+------------+---------+---------+--------+
| EMPNO | ENAME  | JOB       | MGR  | HIREDATE   | SAL     | COMM    | DEPTNO |
+-------+--------+-----------+------+------------+---------+---------+--------+
|  7369 | SMITH  | CLERK     | 7902 | 1980-12-17 |  800.00 |    NULL |     20 |
|  7499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 | 1600.00 |  300.00 |     30 |
|  7521 | WARD   | SALESMAN  | 7698 | 1981-02-22 | 1250.00 |  500.00 |     30 |
|  7566 | JONES  | MANAGER   | 7839 | 1981-04-02 | 2975.00 |    NULL |     20 |
|  7654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 | 1250.00 | 1400.00 |     30 |
|  7698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 | 2850.00 |    NULL |     30 |
|  7782 | CLARK  | MANAGER   | 7839 | 1981-06-09 | 2450.00 |    NULL |     10 |
|  7788 | SCOTT  | ANALYST   | 7566 | 1987-04-19 | 3000.00 |    NULL |     20 |
|  7839 | KING   | PRESIDENT | NULL | 1981-11-17 | 5000.00 |    NULL |     10 |
|  7844 | TURNER | SALESMAN  | 7698 | 1981-09-08 | 1500.00 |    0.00 |     30 |
|  7876 | ADAMS  | CLERK     | 7788 | 1987-05-23 | 1100.00 |    NULL |     20 |
|  7900 | JAMES  | CLERK     | 7698 | 1981-12-03 |  950.00 |    NULL |     30 |
|  7902 | FORD   | ANALYST   | 7566 | 1981-12-03 | 3000.00 |    NULL |     20 |
|  7934 | MILLER | CLERK     | 7782 | 1982-01-23 | 1300.00 |    NULL |     10 |
+-------+--------+-----------+------+------------+---------+---------+--------+
14 rows in set (0.00 sec)

mysql> explain select * from emp where ename = 'KING';
+----+-------------+-------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys   | key             | key_len | ref   | rows | filtered | Extra |
+----+-------------+-------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | emp   | NULL       | ref  | emp_ename_index | emp_ename_index | 13      | const |    1 |   100.00 | NULL  |
+----+-------------+-------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)

mysql> drop index emp_ename_index on emp;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> create index emp_ename_index on emp(ename);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> explain select * from emp where ename = 'KING';
+----+-------------+-------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys   | key             | key_len | ref   | rows | filtered | Extra |
+----+-------------+-------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | emp   | NULL       | ref  | emp_ename_index | emp_ename_index | 13      | const |    1 |   100.00 | NULL  |
+----+-------------+-------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)

第三阶段  项目框架

Day 8

(2023-08-21)

3.1.1 学习内容

  • 反射
  • Maven

3.1.2 学习目标

  • 反射机制和用法
  • Maven负责项目的自动构建,帮助开发人员做项目代码的编译,测试, 打包,安装,部署等工作;以及管理依赖(管理项目中使用的各种jar包)
  • maven工具的获取和安装
  • maven中的概念

    ①POM
    ②约定的目录结构
    ③坐标
    ④依赖管理
    ⑤仓库管理
    ⑥生命周期
    ⑦插件和目标
    ⑧继承
    ⑨聚合

  • 命令:

    1) mvn clean: 清理命令, 作用删除以前生成的数据, 删除target目录。

    2)mvn compile:编译命令,执行的代码编译。

    3)mvn test-compile: 编译命令, 编译src/test/java目录中的源文件。

    4)mvn test:测试命令, 作用执行 test-classes目录的程序, 测试主程序代码是否符合要求。

    5)mvn package:打包,作用是把项目中的资源class文件和配置文件都放到一个压缩文件中, 默认压缩文件是jar类型的。 

    6)mvn install : 把生成的打包的文件 ,安装到maven仓库。

  •  idea中集成maven

 

3.1.3 学习成果

        8.21 学习成果

        ( 代码见上 )

  知识点:反射

        Homework01.java

package com.weiwei.reflection.homework;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Homework01 {
    public static void main(String[] args) throws InstantiationException, IllegalAccessException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException {
        Class<PrivateTest> privateTestClass = PrivateTest.class;
        PrivateTest privateTestObj = privateTestClass.newInstance();
        Field name = privateTestClass.getDeclaredField("name");
        name.setAccessible(true);
        name.set(privateTestObj,"天龙八部");
        Method getName = privateTestClass.getMethod("getName");
        Object invoke = getName.invoke(privateTestObj);
        System.out.println("name的属性值=" + invoke);


    }
}


class PrivateTest{
    private String name = "hellokitty";

    public String getName(){
        return name;
    }
}

        Car.java

package com.weiwei.reflection;

public class Car {
    public String brand = "宝马";
    public int price = 500000;
    public String color = "白色";

    @Override
    public String toString() {
        return "Car{" +
                "brand='" + brand + '\'' +
                ", price=" + price +
                ", color='" + color + '\'' +
                '}';
    }
}

        知识点:Maven

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值