玩命加载中 . . .

学习历程


学习历程

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的区别==:

  1. session存储数据在服务器端,Cookie在客户端

  2. session没有数据大小限制,Cookie有

  3. 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配置问题

  1. 将setting.xml中的本地仓库设置好,将阿里云镜像加入

  2. 在cmd中输入 mvn help:system测试

  3. 出现error 8 2.5,2.6,2.7……不能下载:将网络设置里的代理——自动检测设置关闭

  4. 出现can’t translter ——不能从阿里云下载,先将本地仓库中相关的jar文件夹删除,再重新添加该依赖

  5. 要把该依赖相关代码重新剪切,等加载一会再粘贴

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语句):标签(拼接条件语句)、标签 (简化上面 where 1=1 的条件拼装)、标签 (拼接 in 条件语句)

多表查询:一对一查询(多对一):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语句,

  1. 创建索引:create index 索引名 on 表名(索引列)
  2. 删除索引:drop index 索引名 on 表名
  3. 查看索引:show index from 表名

性能分析:explain(用于查看表的读取顺序,是否使用到索引,数据读取操作类型)

  1. id
  2. type(system>const>eq_ref>ref>range>index>all)
  3. key:实际用到的索引
  4. extra(using filesort,using temporary,using index)

索引优化:

  1. 单表、两边表、多表(join条件加索引)
  2. 索引失效:
    1. 最左前缀原则
      1. 第一个索引丢失会失效
      2. 中间索引隔开会失效
    2. 索引条件进行操作(计算、函数、类型转换:字符串没有加单引号)
    3. 范围查询后的索引会失效
    4. is not null、or、!=会失效
    5. like以%开头会失效(可使用覆盖索引解决)
  3. order by,group by优化:
    1. order by与where相连,最左前缀原则
    2. 没有where就不会使用到索引(可使用覆盖索引或强制索引解决)
    3. order by 中出现其他非索引列会失效
    4. 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;

  1. 读锁:
    1. 读会阻塞写
  2. 写锁
    1. 写会阻塞读写,持有锁的session可以进行操作
  3. 行锁:Innodb默认,索引失效会导致行锁变为表锁
  4. 表锁:myisam默认

优化建议:

  1. 尽量使用索引来完成,避免索引失效
  2. 缩小锁的范围,避免间隙锁
  3. 控制事务大小,减少缩影资源量和时间长度
  4. 尽可能使用低级别的事务隔离级别

事务:

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


文章作者: JM
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 JM !
评论