学习历程
4.21 540P-553P(14P)
JDBC增删改查,
DriverManager:驱动管理对象
Connection:数据库连接对象
Statement:执行sql的对象
ResltSet:结果集对象
遍历数据
jdbc工具类
获取src路径下的文件的方式:ClassLoader 类加载器
4.22 554P-568P(15P)
PreparedStatement:执行sql的对象(预处理,?占位符)
jdbc工具类:配置文件,封装方法实现注册驱动,获取连接数据库对象,资源释放
JDBC控制事务:setAutoCommit(boolean autoCommit)、commit()、rollback()
数据库连接池:帮助快速创建Connection对象,只需要配置文件就可以实现注册驱动,加载驱动
C3P0:数据库连接池技术,xml配置文件 自动,DataSource ds = new ComboPooledDataSource();
druid:数据库连接池技术,properties配置文件,手动,conn = JDBCUtils.getConnection();
JDBCTemplate:简化JDBC开发
4.24 569P-602P(34P)
HTML标签:文件标签、文本标签、图片标签、列表标签、链接标签、div和span、语义化标签、表格标签、 表单标签
CSS样式:CSS语法 “:”,使用内联样式、内部样式、外部样式
CSS选择器:id选择器、元素选择器、类选择器、选择所有元素、并集选择器、子/父选择器、属性选择器、 伪类选择器
CSS属性:字体、文本、背景、边框、尺寸、盒子模型(根据视角)
4.25 603P-639P(37P)
JavaScript(ECMAScript):基本语法、基本对象:Function对象、Array、Boolean、Date、Math、 Number、String、RegExp:正则表达式对象、Global(全局对象,编码解码)
DOM(文档对象模型): Document:文档对象(创建元素对象、其他DOM对象)、Element:元素对象 (设置/删除属性)、Node:节点对象,其他5个的父对象(创建/删除/替换子节 点)
BOM(浏览器对象模型):Window:窗口对象(定时器,弹窗,其他对象的父对象)、Navigator:浏览器 对象、Screen:显示器屏幕对象、History:历史记录对象、Location:地址栏对 象(刷新,设置/返回url)
4.26 640P-659(20P)
DOM:innerHTML(标签体设置/获得,样式控制)、事件监听机制:点击onclick、焦点onblur,onfocus、加载 onload、鼠标onmouse…、键盘onkey…、选择和改变onchange,onselect、表单onsubmit
Bootstrap(一个前端开发的框架):响应式布局(栅格系统):container,container-fluid,row,col-设备代号-格 子数目(一个格子占几个位置),CSS样式和JS插件:按钮、图片、表格、表单、组件(导航条、 分页条)、插件(轮播图)
4.27 660P-674P(15P)
XML(可扩展标记语言):用于配置文件,语法、约束:用于约束xml的写法(DTD简单约束,XSD复杂约束)、引 入约束的方法,读取(解析)xml文档:Jsoup解析器(对象)、快捷查询方式: selector:选择器、xpath
4.28 675P-695P(21P)
WEB服务器(tomcat):文件目录,idea安装、配置tomcat
Servlet:一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则,
步骤:1.继承HttpServlet/GenericServlet/实现Servlet,2.实现方法doGet/doPost,3.配置(Servlet3.0 注解)@WebServlet(“资源路径”)、Servlet中的生命周期方法:init初始化、service服务、destroy销毁
HTTP:(类似约束,约束客户端和服务器之间发送数据的格式)默认端口号:80、请求消息数据格式:请求行(请 求方式 请求url 请求协议/版本)、请求头(User-Agent:浏览器版本信息,Referer:当前请求的由来)、 请求空行、请求体(封装post参数)
4.29 696-712(17P)
request功能:获取虚拟目录 getContextPath()、获取请求URI:/day14/demo1 getRequestURI()、请求头的名称获取请 求头的值getHeader(String name)
getParameter(String name)根据参数名称获取参数值、getParameterMap():获取所有参数 的map集合、中文乱码request.setCharacterEncoding(“utf-8”);请求转发(forward)、request 域:set/getAttribute()
4.30 713-728(16P)
JavaBean(标准的Java类):有空参的构造器、类必须被public修饰、成员变量必须使用 private修饰、公共setter和getter方法
BeanUtils工具类,用于封装JavaBean:set/getProperty(将javabean封装/获取值)、populate(Object obj , Map map) 封装所有信息进javaBean
HTTP协议(响应消息):响应行(状态码)、响应头(Content-Type编码格式、Content-disposition打开方式)、响应 体(传输的数据)
Response对象:重定向:sendRedirect(“虚拟路径+资源名称”)、重定向/转发的特点、服务器输出字符/字节数据到浏览 器、乱码问题:response.setContentType(“text/html;charset=utf-8”);、路径写法
5.3 729-761(33P)
ServletContext对象:获取MIME类型:getMimeType(String file)、域对象:共享数据(所有用户都可使用)、获取文 件的真实(服务器)路径getRealPath(String path)
客户端会话技术(Cookie):1.new Cookie(String name, String value) 、2.response.addCookie(Cookie cookie) 、 3.setPath(String path)、request.getCookies()
服务器端会话技术(Session):1.request.getSession()、2.set/get/removeAttribute
==session与Cookie的区别==:
session存储数据在服务器端,Cookie在客户端
session没有数据大小限制,Cookie有
session数据安全,Cookie相对于不安全
JSP:用于简化书写、JSP的脚本<% %><%! 成员变量%><%= 代码 %>,内置对象:request、response、out
response.getWriter()数据输出永远在out.write()之前
5.4 762-786(25P)
JSP:指令(page配置页面、include包含文件、taglib标签库)、注释、9大内置对象(pageContext获取其他八个内置对 象、request、session、application、response、page、out、config、exception)
MVC:开发模式:(M:Model,模型。JavaBean)(V:View,视图。JSP)(C:Controller,控制器。Servlet)
EL表达式:${表达式},作用:获取存储在域的值(值、对象、集合),获取内置对象:pageContext.JSP内置对象名
JSTL:标签库:<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core" %>,foreach:相当于java代码的for语句、 if:相当于java代码的if语句、choose:相当于java代码的switch语句
三层架构:web:(servlet、jsp)界面层(表示层):用户看的得界面、业务逻辑层(service):处理业务逻辑的、数据访问层 (dao):操作数据存储文件。
5.5 787-801(15P)
==案例==(用户信息操作):三层架构
技术选型:Servlet+JSP+MySQL+JDBCTempleat+Duird+BeanUtilS+tomcat+javaScript+el+jstl
实现功能:登录、添加、删除、删除所选、修改、全选&全不选、列表展示
5.6 802-808(7P)
==案例==(用户信息操作):三层架构
实现功能:分页查询、复杂条件查询
5.7 809-824(16P)
Filter:过滤器:步骤:1.定义一个类,实现接口Filter、2.复写方法、3.配置拦截路径,过滤器执行流程:执行,执行放行,执行放行后代码,拦截路径配置、拦截方式配置:资源被访问的方式、过滤器链(配置多个过滤器)
增强对象的功能:代理模式,:增强方式:增强参数列表、增强返回值类型、增强方法体执行逻辑
Listener:创建监听器步骤:1.定义一个类,实现ServletContextListener接口、2.复写方法、3.配置@WebListener
监听器:ervletContextListener:监听ServletContext对象的创建和销毁,contextInitialized(ServletContextEvent sce) (一般用于加载全局配置文件)
5.8 825-849(25P)
JQuery 基础:一个JavaScript框架(封装了一些js代码),步骤:1.下载JQuery、2.导入JQuery的js文件、3.使用
JQ对象–>JS对象:$(js对象)
基本操作:事件绑定、入口函数(相当于window.onload )、样式控制:css方法
选择器:基本选择器、层级选择器、属性选择器、过滤选择器、表单过滤选择器
DOM操作:内容操作html()、text()、val(),属性操作attr()/prop()、removeAttr()、对class属性操作、(标签)CRUD操作
JQuery 高级:动画:show……([speed,[easing],[fn]])、遍历:jq对象.each(callback)、$.each(object, [callback])callback——遍历的逻辑方法
5.9 850-871(22P)
JQuery 高级:事件绑定:jq对象.事件方法(回调函数)、jq对象.on/off(“事件名称”,回调函数)
插件:增强JQuery的功能:$.fn.extend(object) 定义jq对象的功能、$.extend(object)定义全局的功能
AJAX:(异步,提交不刷新页面)实现方式$.get(url, [data], [callback], [type]),
JSON:(JavaScript对象表示法)语法:obj obj = {“key”:”value”} 获取数据:json对象.键名 遍历
Java对象转换JSON:使用步骤:1.导入jackson的jar包,2.创建Jackson核心对象 ObjectMapper,3.调用方法 writeValue(参数1,obj)
5.11 872-891(20P)
Redis:非关系型数据库,redis的数据结构: string、hash、 list、set、sortedset、通用命令
持久化:RDB、AOF
Java客户端 Jedis(java操作redis数据库的工具):操作数据类型
jedis连接池: JedisPool:1.new JedisPool([config],[“localhost”],[6379])、2.调用方法 getResource()方法获取Jedis连接、 连接池工具类
5.12 Maven
Maven:是一个基于Java平台的 自动化构建工具(管理项目),jar包管理
下载配置、maven约定的目录结构、maven常见命令(compile、test、package、install、clean)
依赖:scope:依赖范围、依赖排除、依赖的传递性、继承、依赖原则:为了防止冲突、多个maven项目(模块) 之间依赖
在Eclipse中创建maven工程:创建maven工程、在Eclipse中配置maven
maven生命周期、修改项目的jdk
5.13-5.14 处理Maven配置问题
将setting.xml中的本地仓库设置好,将阿里云镜像加入
在cmd中输入 mvn help:system测试
出现error 8 2.5,2.6,2.7……不能下载:将网络设置里的代理——自动检测设置关闭
出现can’t translter ——不能从阿里云下载,先将本地仓库中相关的jar文件夹删除,再重新添加该依赖
要把该依赖相关代码重新剪切,等加载一会再粘贴
5.15 910-921(12P)
Web综合案例:注册:正则表达式校验、后台查询是否存在该用户、注册成功与失败信息回写、ajax不刷新获取回写信 息、验证码校验
5.17 922-932 (11P)
Web综合案例:注册:发送邮件、激活用户
登录:页面展示欢迎你+姓名 退出
5.18 933-937(5P)
Web综合案例:Servlet优化:减少Servlet数量,将一个模块的功能整合到一个Servlet中
分类数据展示:查询数据库,动态显示分类导航栏信息
5.19 938-941(4P)
Web综合案例:分类数据缓存处理:将分类导航栏保存在redis中,避免多次访问数据库
分页查询数据:分类传递id、分页查询(后台):封装PageBean对象
5.20 942-948(6P)
Web综合案例:分页查询数据:前台:展示总页码、总记录数、分页栏、分页数据、分页栏显示10个
线路查询:搜索信息进行模糊查询:和分页综合查询,在其他页面也可以查询线路
5.21 949-955(7P)
Web综合案例:旅游线路详情:动态获取线路的详情信息,商家信息,线路图片信息
线路收藏状态:已激活和未激活的状态、激活的次数
5.24 961-979(19P)
Linux:安装虚拟机VMware 、图形化界面CentOS 7、远程操控虚拟机CRT
Linux的目录结构、Linux常见命令:文件、目录,Vim编辑器、Linux的权限命令、
常用网络操作:主机名配置、IP地址配置、域名映射、网络服务管理
5.25 981-985(5P)
Linux:常用上传下载工具、安装jdk(已安装)、mysql、Tomcat、redis
5.26 1-8(8P)
框架:Mybatis:搭建 Mybatis 开发环境:创建maven工程、增加依赖、编写实体类、编写持久层dao、编写dao映射、编写 SqlMapConfig.xml xml,编写测试类、自定义Mybatis(了解)
5.27 18-29(11P)
Mybatis:CRUD操作
5.28 37-51(15P)
Mybatis:parameterType 配置参数:传递 pojo 包装对象(多个对象信息封装进一个查询对象中)、
resultType 配置结果类型(作用:让类中属性与数据库列名保持一致)、
SqlMapConfig.xml配置文件:properties(属性)(作用:将参数封装在外部)、typeAliases(类型别名)(给类型起别名,resultType和parameterType在使用全类名时可直接写类名)、mappers(映射器)(作用:不用单独映射,直接封装映射,注解和Xml配置都起效)
Mybatis 的连接池技术
Mybatis 的事务控制:Mybatis 自动提交事务的设置
动态 SQL(根据不同条件来追加sql语句):
多表查询:一对一查询(多对一):resultMap、association
5.30 52-67(15P)
Mybatis:一对多查询:resultMap、collection 多对多:resultMap、collection 连接中间表
Mybatis 延迟加载:select、column(通常:一对一正常立即加载 一对多使用延迟加载)
Mybatis 缓存:一级缓存(sqlsession范围)、二级缓存(mapper范围)
5.31 68-75(8P)
Mybatis:Mybatis 注解开发:基本 CRUD、实现复杂关系映射开发
6.1 76-97(22P)
Spring:概述(IOC反转控制、AOP面向切面编程)、工厂解耦、 IOC解决程序耦合
基于 XML 的 IOC 细节:ApplicationContext 接口的三种实现类、BeanFactory和 ApplicationContext 的区别 (创建对象时间点不同)
bean 标签和管理对象细节:实例化 Bean 的三种方式 (默认构造、静态方法、实例化类方法)、bean 标签 (scope:指定对象的作用范围)
6.2 98-109(12P)
Spring:xml方式依赖注入:构造函数注入、set方法注入、注入集合
基于注解的 IOC 配置:常用注解:用于创建bean对象、用于注入数据、用于改变作用范围、和生命周期相关 环境搭建
关于 Spring 注解和 XML的选择问题
6.3 110-119(10P)
Spring:基于XML的IOC案例:DBUtils 、c3p0 ,环境搭建、编写Xml配置文件、编写测试类
基于注解的IOC案例:环境搭建、注解编写业务层、持久层、编写Xml配置文件
纯注解形式,将xml变为注解:@Configuration 、@ComponentScan、@Bean、@Import @PropertySource
6.4 120-139(20P)
Spring:Spring 整合 Junit:帮助创建容器,获取对象 @RunWith、@ContextConfiguration、@Autowired
AOP:(面向切面编程),声明切入点与通知间的关系(给方法增强)、AOP 相关术语:连接点、切入点、 通知、目标对象、织入、代理、切面,
基于 XML 的 AOP 配置:导入依赖、约束、配置 spring 的 ioc 、通知类ioc、 aop:config声明 aop 配置 、 aop:aspect 配置切面、aop:pointcut配置切入点表达式 、 aop:xxx配置对应的通知类 型、环绕通知
6.5 140-148(9P)
Spring:基于注解的 AOP 配置:@Service(“accountService”)、@ComponentScan(指定扫描的包) 、 @Component(“txManager”) 、@Aspect声明切面类、@Before、 @EnableAspectJAutoProxy、@Pointcut(“execution(* com.itheima.service.impl..(..))”) 、@Around(“pt1()”)
JDBCTemplate:JDBCTemplate和DBUtils对比、步骤:导入依赖、配置数据源、在 dao 中定义 JdbcTemplate(所 xml、注解均适用)、extends JdbcDaoSupport(注解不适用)
6.6 149-155(7P)
Spring:基于 XML 的声明式事务控制:导入依赖、导入约束、配置业务层和持久层IOC、配置事务管理器、配置事务 的通知、配置事务的属性、配置 AOP 切入点表达式、配置切入点表达式和事 务通知的对应关系
基于注解的配置方式:导入依赖、创建 spring 的配置文件导入约束并配置扫描的包、注解Ioc、Xml配置事务管 理器并注入数据源、在业务层使用@Transactional 注解配置事务通知、开启 spring 对 注解事务的支持
6.7 159-165(7P)
Spring:案例:对IOC、AOP事务提交、XML和注解配置、纯注解配置进行复习
SpringMVC:三层架构和 MVC、SpringMVC 概述、SpringMVC的入门:步骤(依赖、核心控制器、扫描包、控制器、 请求映射、试图解析器、开启注解支持)、MVC组件(前端控制器、处理器映射器、处理器、处理器适 配器、视图解析器、视图)
6.8 166-182(16P)
SpringMVC:RequestMapping 注解(建立一二级方法关系)
请求参数的绑定(获取值):基本类型、实体类型、集合类型、解决中文乱码问题(spring过滤器)、自 定义类型转换器
常用的注解:RequestParam注解 (解决参数名称和传递参数名称不一致)、RequestBody注解(获取请 求体)、RequestHeader注解(获取请求头)、CookieValue注解(获取cookie中的值)、 PathVariable注解(获取resultful占位符上的值)、ModelAttribute注解(优先执行、获取优 先执行的返回值)、SessionAttributes注解(存到session域中)
6.9 183-203(20P)
SpringMVC:响应数据和结果视图:返回值分类(String、void(转发、重定向)、ModelAndView、)、转发重定向、 ResponseBody响应json数据
SpringMVC实现文件上传:SpringMVC传统方式文件上传(省去了解析request域获取上传文件项的过 程,直接获得文件项)、SpringMVC跨服务器方式文件上传
SpringMVC的异常处理(友好跳转错误页面):自定义异常类、自定义异常处理器、配置异常处理器
SpringMVC框架中的拦截器(类似过滤器):创建拦截器类,实现接口(接口内部已经实现了方法,需要 自己重载)、配置拦截器类
6.10 204-212(9P)
SSM整合:搭建整合环境、Spring、SpringMVC、Spring整合SpringMVC框架、Mybatis、Spring整合MyBatis框架
6.11 练习SSM整合
6.12 - 6.22
Hexo+matery+butterfly搭建两个静态博客
6.23 1-7 (7P)
Spring Boot:入门:环境搭建、微服务简介、分析Spring Boot 环境底层
6.24-6.29 8-41(34P)
Spring Boot:
日志(日志框架、SLF4j使用、SpringBoot日志关系、日志使用、切换日志框架)、
配置文件(YAML语法、配置文件值注入、配置文件占位符、Profile、配置文件加载位置、外部配置加载顺序、自动配置原理)
web开发:对静态资源的映射规则、模板引擎Thymeleaf、SpringMVC自动配置、如何修改SpringBoot默认配置、RestfulCRUD
6.30 42-51(9P)
Spring Boot:
错误处理原理、定制错误页面、定制错误数据、注册Servlet三大组件、切换嵌入式Servlet容器、使用外部Servlet容器、开启JSP支持
7.1 52-58(6P)
Docker:
Linux环境准备、docker安装启动停止、镜像操作常用指令、容器操作常用指令、安装Mysql
7.2-7.4 59-64(6P)
Spring Boot:
数据访问:JDBC、整合Druid数据源、整合Mybatis、注解使用Mybatis
7.5 Spring注解驱动教程 1-26(26P)
Spring注解驱动:
容器:组件添加、生命周期、组件赋值、自动装配(注入)、根据环境注册Bean
7.6 Spring注解驱动教程 27、36-37、53-58 (9P)
Spring注解驱动:
AOP:基于注解AOP的三大步:@Aspect、在切面类上的每一个通知方法上标注上通知注解、开启基于注解的AOP模式
声明式事务:基于注解的事务控制三大步:@EnableTransactionManagement、给方法标注上@Transactional ,表示当 前方法是一个由事务接管的方法、配置事务管理器来控制事务
Spring整合SpringMVC框架(纯注解版):创建Spring配置类、创建SpringMVC配置类、创建MyWebAppInitializer配置两 个配置类和MVC前端控制器的映射关系,定制MVC的三大步(在mvc配置类 中):@EnableWebMvc,开启SpringMVC定制功能、继承 WebMvcConfigurerAdapter、重写方法,进行定制
(开学)
8.31 复习Spring
https://www.bilibili.com/video/BV1WZ4y1H7du?p=27&t=447
P1-36:Spring IOC:XML和注解的方式,纯注解方式
,Spring整合Junit4的方式
9.1 复习Spring
P37-51:Spring AOP : XML和注解的方式,纯注解方式
复习反射机制:P462-469、https://www.bilibili.com/video/BV1uJ411k7wy
动态代理:P41、42,P820、821
9.2 配置JavaEE环境
安装Myeclipse2014(汉化、破解),配置Tomcat8,jre8
9.3 复习Spring
P52-71 : jdbcTemplate,Spring事务控制
9.4 复习SpringMVC
P72-127:maven工程创建web项目、SpringMVC执行过程、数据响应(页面跳转:String、modelAndView、model,回写数据:@ResponseBody,回写json)、参数绑定(基本类型、pojo、数组、集合)、Restful风格、拦截器、异常处理
9.5 复习Mybatis
P146-184 :快速入门、增删改查、核心配置文件解析(environments、mappers、properties、typeAliases、plugins)、动态sql(if、foreach标签
、sql片段抽取)、一对一模型(requestMap标签、association)、一对多、多对多模型(collection)
9.6 复习SSM整合
P185-200:mybatis注解开发:一对一(@results,result,One(@One)),一对多,多对多(Many(@Many)),SSM整合(Spring-SpringMVC用监听器,Spring-Mybatis将sqlSessionFactory加入Spring容器中),整理配置文件笔记
9.7 复习Maven,学习Git
P201-221:依赖传递/冲突(排除依赖,版本锁定、第一声明者优先、路径近者优先)、使用maven搭建SSM工程、分模块搭建工程、部署tomcat
P229-256:Git下载安装、代码托管服务(码云、Github)注册账号、创建仓库、邀请用户,Git常用命令(初始化init,克隆clone,),(工作目录、暂存区、版本库,文件状态(未跟踪、已跟踪(已修改、未修改、已暂存))),(查看文件状态 status,加入暂存区add,取消暂存reset,提交本地仓库commit ,删除rm,日志log,),忽略列表,远程仓库操作(查看远程仓库remote,增加远程仓库remote add,克隆clone,移除远程仓库关系remote rm,抓取不合并fetch,抓取合并pull,推送push)
9.8 学习Git,整理博客
P257-285:Git分支(查看、创建、推送、合并、删除branch)、标签(查看、创建、检出、删除tag)、图形化工具TortoiseGit、idea使用Git、SSH协议
9.9 整理JavaEE笔记
复习JSP、整理JavaEE配置环境笔记
复习Sring boot:https://www.bilibili.com/video/BV1Et411Y7tQ?p=33
P1-7:创建spring boot项目,快速入门,自动配置原理分析(自动装配)
9.10 复习Spring boot
https://www.bilibili.com/video/BV1PE411i7CV?p=21 狂神说和雷丰阳
P6-34:自动配置原理、
配置:yaml配置、properties配置、多环境Profile支持、配置文件加载位置、加载顺序
日志:日志框架slf4j(接口)、logback(实现)
web:thymeleaf模板引擎、SpringMVC自动装配、自定义组件加入容器(编写配置类)
9.11-12 复习Spring boot
P35-42:编写CRUD实验
静态引入资源规则、国际化、登录拦截器、Restful风格、公共页抽取、链接高亮、替换真实数据、页面重用2合1、CRUD操作、js表单提交
9.13 复习Spring boot
P43-50 :错误处理机制
自定义错误页面、自定义响应错误数据(不好写)
tomcat配置修改、注册servlet三大组件(servlet、Filter、Listener)、使用其他Servlet容器、使用外置tomcat容器
P325-335:https://www.bilibili.com/video/BV1WZ4y1H7du?t=797&p=335
lombok(简化实体类),hikari(数据源),事务,整合mybatis,通用mapper(简化dao),junit,redis,部署
9.14 复习Spring boot
P59-66:数据访问
整合Druid、配置数据源监控,整合Mybatis,整合SpringData JPA
看数据结构20页:逻辑结构(二元组、集合结构、线性、树形、图形),存储结构(顺序、链式、索引、哈希)
9.15 学习Redis、设计模式(单例)
P1-36:https://www.bilibili.com/video/BV1S54y1R7SB?p=36
Nosql概述、redis五大数据类型、命令操作、持久化(RDB、AOF)、事务、消息订阅发布、主从复制、哨兵模式、缓存穿透、缓存击穿、缓存雪崩、(jedis、springboot整合)
单例模式的八种实现:饿汉式2种、懒汉式3种、双重检查锁、静态内部类、枚举
9.16 学习ZooKeeper、Kafka
https://www.bilibili.com/video/BV1PW411r7iP?p=11
概述(分布式服务协调管理框架)、工作机制、特点(半数存活、全局数据一致、一主多从集群、数据原子性、实时性、更新请求顺序进行)、应用场景(统一命名服务、统一集群管理、统一配置管理、服务节点动态上下线、软负载均衡)、内部原理(选举机制、节点类型、监听器原理、写数据流程)、常用指令(ls path、ls2 path、create path value、set path value、get path、delete path、rmr path)
https://www.bilibili.com/video/BV1a4411B7V9?p=5
定义(分布式的消息订阅模式的消息队列),好处(解耦、削峰),两种模式(点对点、发布/订阅),基本架构(生产者、消费者、broker、Topic主题、partition分区、主从、消费者组、zookeeper),工作流程(偏移量),存储机制(分片、索引),生产者(分区策略、ISR、ack,消息一致性:HW、LEO:故障解决措施),精准一次(幂等性)、消费者(消费方式:推、拉,分配策略:轮询、range的优缺点、高效读写数据的原因)、Zookeeper 在 Kafka 中的作用
9.17-9.20 学习SringCloud
SpringCloud技术栈(服务注册与发现:Eureka、Zookeeper、Consul,服务负载与调用:Ribbon、openFeign),微服务架构搭建、postman、热部署、工程重构
Eureka:(客户端、服务器端)、注册和调用原理、单机版(pom依赖、yml、主启动@EnableEurekaServer/@EnableEurekaClient)、集群(服务器yml互相注册,服务提供者@LoadBalanced)、服务发现(DiscoveryClient,主启动类@EnableDiscoveryClient)、自我保护机制(CAP中的AP高可用高容错)
Zookeeper:启动zookeeper服务器,客户端(服务提供者/消费者:pom依赖、yml:zookeeper服务器ip+端口号),集群(搭建,在yml配置文件中加上多个zk地址)
Consul:安装启动、客户端(服务提供者/消费者:pom依赖、yml:consul服务器ip+端口号、服务名)
三个注册中心的异同:Eureka:AP高可用(自我保护机制),Consul/Zookeeper:CP高一致性(临时节点)
Ribbon负载均衡服务调用:Ribbon和Nginx的区别(客户端负载均衡和服务器端负载均衡)、工作机制(负载均衡+restTemplate)、使用(pom、restTemplate)、负载均衡算法(7个,轮询、随机、过滤掉故障的……)、替换算法的方法(创建配置类,主启动@RibbonClient(name=”访问服务名”,configuration=”配置类.class”))、轮询算法原理(rest接口第几次请求%集群总数量=调用服务的下标)
OpenFeigin服务接口调用:定义(定义一个接口,添加注解@FeignClient(“服务名”),写上调用方法,使用时调用这个接口的方法,完成微服务调用),使用(pom、yml、主启动@EnableFeignClients,方法接口@FeignClient,调用时注入接口使用)、超时机制(yml设置远程调用时间)、OpenFeign日志(NONE、BASIC、HEADERS、FULL全,使用:定义日志配置类(指定http日志级别)、yml指定命令行日志输出级别、哪个接口受日志监控)
Hystrix服务熔断:概念(处理分布式的延迟和容错),服务降级(不等待,返回备选方案),服务熔断(出现故障,先关闭服务,再降级,再恢复),配置降级(兜底方法,@HystrixCommand,@EnableCircuitBreaker/@EnableHystrix),@DefaultProperties全局降级,服务熔断(@HystrixCommand(commandProperties={@HystriProperty(name=,value=)})):到达阈值,错误率,断路器开启,休眠时间窗-降级,半开,关闭。服务监控@EnableHystrixDashboard
9.21 学习SringCloud
GateWay服务网关:概念(动态路由转发+执行过滤器链),使用(pom、yml)、断言(网关的规则)、过滤器(单一、全局(自定义实现接口))
Config服务配置:概念(为不同微服务应用提供中心化外部配置),服务端、客户端,使用(服务端:git、pom、yml、@EnableConfigServer、本地hosts),访问配置文件规则,使用(客户端:pom、yml(bootstrap)、controller(根据rest风格将配置暴露)),动态刷新(Pom监控、yml暴露监控、@RefreshScope、外部post请求客户端)
SpringCloud Bus 消息总线:概念(解决config一次性多刷新),设计思想(发给客户端/服务端),原理(客户端监听同一主题,当刷新数据,消息会放在主题上,客户端会更新配置),使用(配置RabbitMQ环境、改服务端:yml(mq配置、暴露监控)、pom监控和mq,改客户端:pom监控和mq、yml(mq配置)),配置定点通知(发送消息后面加微服务名:端口号)
9.22 学习SringCloud
SpringCloud Stream消息驱动:概念(屏蔽消息中间件的差异,统一消息编程模型),业务流程(生产-source-channel-binder-mq-binder-channel-sink-消费),使用(生产者:pom,yml,service@EnableBinding(source.class)发送消息方法,controller,消费者:pom,yml,controller@EnableBinding(Sink.class),@StreamListener(Sink.INPUT)接收消息方法),自定义分组(解决重复消费,持久化)
Spring Cloud Sleuth链路追踪:概念(追踪每个请求的整体链路),原理(TraceID,SpanID,ParentID),使用(安装zipkin,pom,yml)
Nacos注册中心+配置中心:服务器端(安装,运行),注册中心(服务提供者Pom,yml,@EnableDiscoveryClient,controller,@LoadBalanced负载均衡),与其他服务注册对比(ap,cp可切换),配置中心(客户端pom,yml(bootstrap,application),@EnableDiscoveryClient,@RefreshScope支持动态刷新),配置中心增加配置信息(配置命名规则),分类配置(NameSpace,Group,DataID)
多线程面试题
9.24 学习SpringCloud
Seata分布式事务:概念(一个分布式事务的解决方案),XID,TC,TM,RM,seata安装,搭建业务环境,seata原理(AT模式,一阶段、二阶段)
mysql面试题:索引,b+树,Innodb和MyISAM,聚集/非聚集/联合索引,隔离级别,并发出现的3大问题,3大范式,ACID特性
9.24-10.11 复习javaSE基础
二刷JavaSE,主要针对多线程、集合、数组、IO流加强复习
查找算法(二分法),排序算法(冒泡、快排)
10.12-10.14
复习zookeeper、kafka、联表查询
10.15-10.16
复习SSM,练习SSM
Spring(IOC、AOP)原理,SpringMVC,Mybatis的运行机制
IOC:工厂模式+反射,AOP:动态代理模式
10.17
学习IOC底层工厂模式+反射的实现原理
Springboot的实现原理
复习redis
10.18-10.19
Vue基础:EL挂载点,data数据对象,指令,axios网络库,axios+Vue
10.20-10.22
优化matery个人博客
10.23-10.27
搭建springboot个人博客
10.28-10.31
面试题整理,人事整理
11.1
java8新特性:
Lambda表达式:(六种情况:无参无返回、有参无返回、类型推断、1参、多参多语句有返回值、1语句)
函数式接口(只有一个抽象方法):消费性接口、供给型接口、函数型接口、端定型接口
方法引用、构造器引用:特殊情况下(有参数和返回值相同的实现方法)替换lambda表达式
Stream API(java层面对数据进行操作):Stream实例化、中间操作(筛选切片、映射、排序)、终止操作(匹配查找、归约、收集)
11.2
java8新特性:
Optional类
可重复注解、接口默认/静态方法、新类型注解
写毕业设计-任务书
复习反射、10.29面试题、redis数据库
11.3
mysql基础:1-69
概念(DB、DBMS、SQL),mysql软件操作、
mysql常用命令(show databases、use 库名、show tables、show tables from 库名、create table 表名(列名 列类型)、desc 表名、select version(),mysql –V,mysql –version)、
DQL数据库查询语言(基本查询select、条件查询where、排序查询order by、常见函数(单行函数、聚合函数)、分组查询group by)
11.4-11.5
70-132
DQL数据库查询语言
多表连接查询(内连接:等值连接、非等值连接、自连接、内连接,外连接:左外、右外连接、全外连接,交叉连接)
子查询(嵌套查询):出现位置(select、from、where/having、exists),结果集(标量子查询、列子查询、行子查询、表子查询)
分页查询 limit m n
联合查询 union
DML数据操作语言
插入:insert into 表名(字段名,) values(值1)
修改:update 表名 set 字段名=新值 where 条件
删除:delete from 表名 where 条件;truncate清空
DDL数据库操作语言
库的管理:
创建库:create database if not exists 库名
修改库:alter database 库名 character set 字符集
删除库:drop database if not exists 库名
表的管理:
创建表:create table 表名(字段名 列的类型(长度 约束),)
修改表:alter table 表名 change/add/alter/drop/rename column 列名 【类型】
删除表:drop table 表名
常见类型:
整型:Tinyint、Smallint、Mediumint、int/Integer、Bigint
小数:float、double、dec、decimal
字符型:char、varchar
日期型:date、datetime、timestamp、time、year
常见约束:
NOTNULL、UNIQUE、DEFAULT、CHECK、PRIMARY KEY、FOREIGN KEY
contraint 外键名 foreign key(从表列名) references 主表(主表列名)
11.6-11.7
133-178
标识列:自增长列,auto_increment
TCL事务控制语言:
特点(原子性、一致性、隔离性、持久性)、显式事务(set autocommit = 0,commit rollback)、隔离级别(读未提交、读已提交、可重复读、串行化)、问题(脏读、不可重复读、幻读)
视图:
视图与表的区别(一个是逻辑,一个是数据)、视图的创建(create view as),操作,修改视图数据
变量:
系统变量(全局变量、会话变量)、自定义变量(用户变量、局部变量)
用户变量 set @用户变量名=值
局部变量 declare 变量名 类型 default 值
存储过程(预先编译好的sql语句):
create proceduce 存储过程名(in/out/inout 参数名 参数类型)
begin 存储过程体 end
新结束标记: delimiter $
调用: call 存储过程名(实参列表) 结束标记
函数:
函数与存储过程的区别(函数有且仅有一个返回值,存储过程有0-多个返回值)
create function(参数名 参数类型) returns 返回类型
begin 函数体 end
调用: select 函数名(实参列表)
流程控制结构:
if函数,双分支,可以用在任何地方 if(条件,值1,值2)
case语句:多分支
case 表达式 when 值1 then 值 else 值 end case
case when 条件1 then 结果1/语句1 else end case
if语句:多分支
if 条件1 then 语句1; elseif 条件2 then 语句2; else 语句n;end if;
循环结构:
while:先判断,后执行
标签:while 循环条件 do
循环体;
end while 标签;
loop:死循环
标签:loop
循环体;
end loop 标签
repeat:先执行,后判断
标签:repeat
循环体;
until 结束循环条件;
end repeat 标签;
11.8-11.15 mysql高级(P179—P242)
mysql架构:linux安装Mysql,mysql配置文件,存储引擎
索引优化分析:join语句,
- 创建索引:create index 索引名 on 表名(索引列)
- 删除索引:drop index 索引名 on 表名
- 查看索引:show index from 表名
性能分析:explain(用于查看表的读取顺序,是否使用到索引,数据读取操作类型)
- id
- type(system>const>eq_ref>ref>range>index>all)
- key:实际用到的索引
- extra(using filesort,using temporary,using index)
索引优化:
- 单表、两边表、多表(join条件加索引)
- 索引失效:
- 最左前缀原则
- 第一个索引丢失会失效
- 中间索引隔开会失效
- 索引条件进行操作(计算、函数、类型转换:字符串没有加单引号)
- 范围查询后的索引会失效
- is not null、or、!=会失效
- like以%开头会失效(可使用覆盖索引解决)
- 最左前缀原则
- order by,group by优化:
- order by与where相连,最左前缀原则
- 没有where就不会使用到索引(可使用覆盖索引或强制索引解决)
- order by 中出现其他非索引列会失效
- group by分组前会先排序,所以和排序一样
查询截取分析:慢查询日志、show profile、全局查询日志(用于找到出问题的sql语句)
批量插入脚本:存储过程
锁机制:
加锁:lock table 表名 read/write;
释放锁:unlock tables;
查看锁:show open tables
查看表锁状态:show status like ‘table%’
分析行锁状态:show status like ‘innodb_row_lock%’
锁定一行:begin;sql查询语句 for update;
- 读锁:
- 读会阻塞写
- 写锁
- 写会阻塞读写,持有锁的session可以进行操作
- 行锁:Innodb默认,索引失效会导致行锁变为表锁
- 表锁:myisam默认
优化建议:
- 尽量使用索引来完成,避免索引失效
- 缩小锁的范围,避免间隙锁
- 控制事务大小,减少缩影资源量和时间长度
- 尽可能使用低级别的事务隔离级别
事务:
ACID:原子性、一致性、隔离性、持久性
并发问题:更新覆盖、脏读、不可重复读、幻读
隔离级别:读未提交、读已提交、可重复读、串行化
11.16-11.29
毕业设计任务书完成,文献综述完成ing…
个人博客网站搭建:
后端(登录、分类、标签、博客管理:分页查询、添加、修改、删除)
前端(首页展示、全局搜索、博客详情页、评论、分类、标签、归档、关于我)
11.30-12.16
毕业设计三件套完成:开题报告、任务书、文献综述
个人博客网站搭建前端完成,后端正在搭建ing
放假……
1.1-3.1
毕业设计个人博客网站前后端完成搭建
撰写毕业设计论文ing
3.1-3.18
毕业设计论文11797字完结撒花
3.19-3.20
复习mysql数据库
3.21
复习linux基础、高级
3.22
复习nginx、Git、Docker