【八股文】学习路线(hyc)

后端学习路线

1. Java SE

1.1 Java基础语法(2天)

运行环境、关键字、数据类型、运算符、方法、条件结构、循环结构、方法重载、数组

1.2 面向对象与封装(2天)

面向对象、this、[构造方法](https://so.csdn.net/so/search?q=构造方法&spm=1001.2101.3001.7020" \t "_blank)、面向对象三大特性:封装继承多态

1.3 Java语言高级(3天)

常用API、继承和多态、集合、异常、多线程、网络编程

1.4 推荐相关学习视频:

尚硅谷Java入门视频教程

黑马Java SE零基础入门

1.5 单元测验

任务1: 通过java se知识完成学生成绩管理系统的开发,包括学生、成绩的增删改查功能。完成后由师兄检查相应源码

**注:**以上的内容不要问哪些是重点,全都是重点,没有java基础就没有上层建筑。每一个知识点必须掌握,而且要很熟悉,在学习的过程中一定要记住多做练习题,两三个肯定是不够的,每一个阶段做做项目练习,把你学的知识点串起来。推荐视频时间较长根据自身基础选择性学习,有基础的同学用一周时间快速回顾java se知识,没有基础可以适当延长学习时间。

2. Java web

2.1 MySQL&JDBC(5天)

​ Mysql基本概念、常用sql语句练习,jdbc基础概念,熟悉java对数据库的增删改查操作

MySQL基础语句:

2.1.1排序 order by

select * form table_name order by id desc    # 从大到小
select * form table_name order by id asc    # 从小到大

2.1.2限制 limit

select * form table_name order by id asc limit 10    # 取查询结果的前10条
select * form table_name order by id asc limit 20,10    # 取查询结果从第20条开始 往后查10条
select * form table_name order by id asc limit 10 offset 20   # 取查询结果从第20条开始 往后查10条

2.1.3模糊查寻 like

select * from table_name where name like "张%"    # 以张开头的
select * from table_name where name like "%张%"    # 包含张的
select * from table_name where name like "%张"    # 以张结尾的
select * from table_name where name like "张_"    # 以张开头的 两个字的 
select * from table_name where name like "_浩_%"    # 三个字的 并且中间是 浩 的

2.1.4内连接查询

从左表中取出每一条记录,去右表中与所有的记录进行匹配: 匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留.

select a.id,a.name,a.sex,b.country,b.city,b.street 
from student a 
join addr b 
on a.addrid=b.addrid;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZZv3Uvbo-1655998971134)(C:\Users\10314\AppData\Roaming\Typora\typora-user-images\image-20220410110403443.png)]

2.1.5外连接查询

以某张表为主,取出里面的所有记录, 然后每条与另外一张表进行连接: 不管能不能匹配上条件,最终都会保留: 能匹配,正确保留; 不能匹配,其他表的字段都置空NULL。左表不管能不能匹配上条件,最终都会保留:能匹配,正确的保留; 若不能匹配,右表的字段都置NULL。

select a.id,a.name,a.addrid,b.country,b.city
from student a left join addr b
on a.addrid=b.addrid;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LymilFOU-1655998971137)(C:\Users\10314\AppData\Roaming\Typora\typora-user-images\image-20220410110420246.png)]

2.1.6右连接查询

右外连接(右连接), 以右表为主表 右表不管能不能匹配上条件,最终都会保留:能匹配,正确的保留; 若不能匹配,左表的字段都置NULL。

select a.id,a.name,a.addrid,b.country,b.city
from student a right join addr b
on a.addrid=b.addrid;

2.1.7联合查询

将多个select语句的查询结果合并到一块,可以使用union和union all关键字进行操作

select 语句1
union[union 选项]
select 语句2
union|[union 选项]
select 语句n

其中union选项有两个选项可选
all:表示无论重复都输出
distinct: 去重(整个重复)(默认的)

联合查询order by的使用

select *from
(select *from student 
where sex="woman" 
order by score)student
union
select *from
(select *from student 
where sex="man" 
order by score)student ;

2.1.8子查询

在查询的SQL中嵌套查询

带in关键字的子查询

使用in关键字可以将原表中特定列的值与子查询返回的结果集中的值进行比较

例:查询成绩大于80的学生的所有信息,
先在子查询中查出成绩大于80的结果集,然后将原成绩表中的成绩与结果集进行比较,如果存在,就输出这条学生的记录

select *
from student 
where score in
(select score from student where score>80);

带比较运算符的子查询

只包含一个单值,那么可以直接使用比较运算符连接子查询

select *
from student 
where score> 
(select score 
from scholarship
where dengji=1);

带exists的子查询

exists: 是否存在的意思, exists子查询就是用来判断某些条件是否满足(跨表),
exists是接在where之后
exists返回的结果只有0和1.

select *
from student 
where exists
(select *from student where score>90);

带any关键字的子查询

any关键字表示满足其中的任意一个条件,使用any关键字时,只要满足内层查询语句结果的的任意一个,就可以通过该条件来执行外层查询语句。

select *
from student 
where addrid

带all关键字的子查询

all和any刚好是相反的,all关键字表示满足所有结果,使用all关键字,要满足内层查询语句的所有结果,才可以通过该条件来执行外层查询语句。

select *
from student 
where addrid>all
(select addrid 
from addr);

2.2 Servlet(5天)

​ 架构区别、cookie、session、filter

2.3 Tomcat(5天)

​ Tomcat基本概念,四大Servlet容器、与socket关系等知识点,完成静态页面的反向代理

2.4 推荐相关学习视频:

JDBC从入门到精通视频教程

千锋Servlet教程

Tomcat从入门到精通

Tomcat快速入门教程

**注:**这部分知识以了解为主,三部分知识相辅相成熟悉其相关作用以及在实际项目开发中所处位置,在后期框架学习中遇到不理解的知识点再回到本部分进行针对性的学习。

3. Java框架

3.1 SpringBoot基础入门(3天)

​ SpringBoot基础概念、自动配置原理入门

3.2 SpringBoot核心功能(3周)

​ 配置文件、web开发、数据访问、junit单元测试

3.3 推荐相关学习视频:

尚硅谷SpringBoot2零基础入门

3.4 单元测验

任务1:由师兄提供具体业务场景,自行分析业务需求,使用SpringBoot框架完成后端开发。

**注:**这部分内容切记不要只看不写,只有在实际编写的过程中才能加深对相关知识点的理解。在此部分内容的学习过程中,遇到不记得的知识点要及时查漏补缺。Java框架学习完成后应能够独立的完成基础xxx管理系统的后端开发工作。

4. 其他相关工具

4.1 Mybatis(5天)

​ 映射文件、动态sql、缓存,springboot整合mybatis

4.2 Maven(5天)

​ POM、坐标、仓库、熟悉Maven作用

4.3 Git&GitHub(5天)

​ 版本控制、暂存区、本地库、版本回退

4.4 Redis(5天)

​ 常用数据类型、配置文件、发布和订阅

4.5 Mybatis-plus

插入操作

User user = new User(); 
user.setAge(20); 
user.setEmail("test@itcast.cn"); 
int result = this.userMapper.insert(user);

设置id的生成策略

@TableId(type = IdType.AUTO) //指定id类型为自增长

private Long id;

更新操作

根据id更新

User user = new User(); 
user.setId(6L); //主键 
user.setAge(21); //更新的字段
//根据id更新,更新不为null的字段 
this.userMapper.updateById(user);

根据条件更新

User user = new User(); 
user.setAge(22); //更新的字段
//更新的条件 
QueryWrapper<User> wrapper = new QueryWrapper<>(); 
wrapper.eq("id", 6); 
//执行更新操作 
int result = this.userMapper.update(user, wrapper); 
System.out.println("result = " + result);

或者,通过UpdateWrapper进行更新:

//更新的条件以及字段
UpdateWrapper<User> wrapper = new UpdateWrapper<>(); 
wrapper.eq("id", 6).set("age", 23); 
//执行更新操作 
int result = this.userMapper.update(null, wrapper); 
System.out.println("result = " + result);

删除操作

deleteById

int result = this.userMapper.deleteById(6L); 
System.out.println("result = " + result);

deleteByMap

Map<String, Object> columnMap = new HashMap<>(); 
columnMap.put("age",20); 
columnMap.put("name","张三"); //将columnMap中的元素设置为删除的条件,多个之间为and关系 
int result = this.userMapper.deleteByMap(columnMap); 
System.out.println("result = " + result);

delete

User user = new User(); 
user.setAge(20); 
user.setName("张三"); //将实体对象进行包装,包装为操作条件 
QueryWrapper<User> wrapper = new QueryWrapper<>(user); 
int result = this.userMapper.delete(wrapper);

deleteBatchIds

int result = this.userMapper.deleteBatchIds(Arrays.asList(1L,10L,20L)); 
System.out.println("result = " + result);

查询操作

selectById

User user = this.userMapper.selectById(2L); 
System.out.println("result = " + user);

selectOne

QueryWrapper<User> wrapper = new QueryWrapper<User>(); 
wrapper.eq("name", "李四"); 
//根据条件查询一条数据,如果结果超过一条会报错 
User user = this.userMapper.selectOne(wrapper);

selectCount

QueryWrapper<User> wrapper = new QueryWrapper<User>(); 
wrapper.gt("age", 23); //年龄大于23岁
Integer count = this.userMapper.selectCount(wrapper); 
System.out.println("count = " + count);

selectList

QueryWrapper<User> wrapper = new QueryWrapper<User>(); 
wrapper.gt("age", 23); //年龄大于23岁
List<User> users = this.userMapper.selectList(wrapper); 
for (User user : users) { 
    System.out.println("user = " + user); 
}

selectPage

QueryWrapper<User> wrapper = new QueryWrapper<User>(); 
wrapper.gt("age", 20); //年龄大于20岁 
Page<User> page = new Page<>(1,1); 
//根据条件查询数据 
IPage<User> iPage = this.userMapper.selectPage(page, wrapper); 
System.out.println("数据总条数:" + iPage.getTotal()); 
System.out.println("总页数:" + iPage.getPages()); 
List<User> users = iPage.getRecords(); 
for (User user : users) { 
    System.out.println("user = " + user); 
}

基本比较操作

eq 等于 =

ne 不等于 <>

gt 大于 >

ge 大于等于 >=

lt 小于 <

le 小于等于 <=

between BETWEEN 值1 AND 值2

notBetween NOT BETWEEN 值1 AND 值2

in 字段 IN (value.get(0), value.get(1), …)

notIn 字段 NOT IN (v0, v1, …)

模糊查询

like LIKE ‘%值%’

例: like(“name”, “王”) —> name like ‘%王%’

notLike NOT LIKE ‘%值%’

例: notLike(“name”, “王”) —> name not like ‘%王%’

likeLeft LIKE ‘%值’

例: likeLeft(“name”, “王”) —> name like ‘%王’

likeRight LIKE ‘值%’

例: likeRight(“name”, “王”) —> name like ‘王%’

排序

orderBy 排序:ORDER BY 字段, …

例: orderBy(true, true, “id”, “name”) —> order by id ASC,name ASC

orderByAsc 排序:ORDER BY 字段, … ASC

例: orderByAsc(“id”, “name”) —> order by id ASC,name ASC

orderByDesc 排序:ORDER BY 字段, … DESC

例: orderByDesc(“id”, “name”) —> order by id DESC,name DESC

逻辑查询

QueryWrapper<User> wrapper = new QueryWrapper<>(); 
//SELECT id,user_name,password,name,age,email FROM tb_user WHERE name = ? OR age = ? 
wrapper.eq("name","李四").or().eq("age", 24); 
List<User> users = this.userMapper.selectList(wrapper); 
for (User user : users) 
{ 
System.out.println(user); 
}

select

在MP查询中,默认查询所有的字段,如果有需要也可以通过select方法进行指定字段

QueryWrapper<User> wrapper = new QueryWrapper<>(); 
//SELECT id,name,age FROM tb_user WHERE name = ? OR age = ? 
wrapper.eq("name", "李四") .or() .eq("age", 24) .select("id", "name", "age"); 
List<User> users = this.userMapper.selectList(wrapper); 
for (User user : users) 
{ 
    System.out.println(user); 
}

4.6推荐相关学习视频:

尚硅谷MyBatis实战教程全套完整版

Maven零基础入门教程

尚硅谷Git入门到精通全套教程

Redis 6 入门到精通

**注:**这部分内容也是以了解为主,Mybatis学习springboot整合与使用操作,Maven学习其相关概念,git需要学习基本版本与仓库控制命令,包括项目拉取与上传、版本迭代、版本回退,redis学习其基本操作,学完后可尝试其与springboot结合实现项目热点数据的缓存功能。

5. 综合测验

任务1

任务内容:结合前端学习成果,单独完成前后端开发,完成前后端联调。使用git进行版本管理,项目完成后应向师兄提供项目远程仓库地址,查验学习成果。

任务要求:项目运行应当可靠、稳定,前端页面设计应当人性化。

前端学习路线

1.前端入门基础

1.1HTML5基础语法与标签(2天)

​ HTML语法与基础标签、列表标签、多媒体与语义化标签、表单标签、表格标签

1.2CSS3基础语法与盒模型(2天)

​ css3基于语法、CSS选择器、文本与字体属性、盒模型

1.3CSS3浮动定位与背景样式(3天)

​ 浮动与定位、边框与圆角、背景与渐变、2D与3D转换

1.4CSS3动画(2天)

​ 过渡与动画

1.5JS基础语法与表达式(1天)

​ JS语法与变量、JS基础数据类型、表达式与操作符

1.6JS流程控制语句与数组(2天)

​ 流程控制语句与数组

1.7JS函数与DOM(3天)

​ JS函数、DOM、BOM基础

1.8面向对象(3天)

​ 上下文规则、原型链、继承、深浅克隆

1.9推荐相关学习视频:

前端HTML5+CSS3+移动Web全套教程

JavaScript从入门到精通

任务1: 通过前端入门基础知识完成学生成绩管理系统的开发,包括学生、成绩的增删改查功能。完成后由师兄检查相应源码

**注:**以上的内容不要问哪些是重点,全都是重点,没有前端入门基础就没有上层建筑。每一个知识点必须掌握,而且要很熟悉,在学习的过程中一定要记住多做练习题,两三个肯定是不够的,每一个阶段做做项目练习,把你学的知识点串起来。推荐视频时间较长根据自身基础选择性学习,有基础的同学用一周时间快速回顾前端入门基础知识,没有基础可以适当延长学习时间。

2.ES6、组件化和移动端webapp

2.1ES6基础入门(5天)

​ ES6基础知识、模板字符串与箭头函数、解构赋值、对象字面量与函数参数默认值

2.2ES6语法扩展、Promise和Class类(3天)

​ 剩余参数与展开运算符、Set与Map数据结构、遍历器与for…of循环、ES6新增方法

2.3ES6之Module模块与Babel编译(4天)

​ Module模块、Babel与webpack

2.4HTTP协议、存储、Ajax(3天)

​ 前端数据交互与HTTP协议、本地存储、Ajax&Fetch与跨域请求

2.5移动端基础、性能优化(4天)

​ 移动Web开发入门、响应式布局、移动端屏幕适配、移动性能优化

2.6推荐相关学习视频:

尚硅谷Web前端ES6教程,涵盖ES6-ES11

HTTP协议详解

六个案例学会响应式布局

**注:**这部分知识以熟悉掌握为主,知识相辅相成熟悉其相关作用以及在实际项目开发中所处位置,在后期框架学习中遇到不理解的知识点再回到本部分进行针对性的学习。

3.React框架

3.1React基础入门(5天)

​ jsx基础知识、父子组件传值

3.2React组件与生命周期、Hooks、Echarts(3周)

​ 常用的生命周期、hooks、echarts集成到react框架

3.3React进阶(2周)

​ HOC、usememo、Redux、各种钩子函数

3.4推荐相关学习视频:

必学课程:尚硅谷React技术全家桶全套完整版

参考课程:

React16免费基础视频教程

React实战技术博客系统

React项目全程实录#电商项目#react+UmiJS+Antd Pro#React全套技术

**注:**这部分内容切记不要只看不写,只有在实际编写的过程中才能加深对相关知识点的理解。在此部分内容的学习过程中,遇到不记得的知识点要及时查漏补缺。React框架学习完成后应能够独立的完成基础xxx管理系统的前端开发工作。

4.其他相关工具

4.1Git&GitHub(5天)

​ 版本控制、暂存区、本地库、版本回退

4.2Nginx(4天)

​ nginx相关概念、配置

4.3推荐相关学习视频:

尚硅谷Git入门到精通全套教程

尚硅谷Nginx教程由浅入深

**注:**这部分内容也是以了解为主,git需要学习基本版本与仓库控制命令,包括项目拉取与上传、版本迭代、版本回退。

5.综合测验

任务1

任务内容:结合前端学习成果,单独完成前后端开发,完成前后端联调。使用git进行版本管理,项目完成后应向师兄提供项目远程仓库地址,查验学习成果。

任务要求:项目运行应当可靠、稳定,前端页面设计应当人性化。

6.扩展学习

6.1Node.js全栈框架

6.1.1全栈必备基础Node.js(3周)

​ node基础入门、node处理http

6.1.2Express、Koa2、Egg.js框架与MongoDB数据库(3周)

​ Express、Koa2与Egg框架入门、MongoDB基础入门

6.1.3推荐相关学习视频:

Node.js 系列教程之 Express

6.2TypeScript语言的学习

6.2.1typescript基础语法学习(2周)

​ ts基础语法,类、接口以及类型

6.2.2推荐相关学习视频:

TypeScript从入门到精通视频教程

**注:**前端在学有余力的情况下学习扩展知识,提升自己的技术能力。

你可能感兴趣的