Spring5_06_新功能(日志、@Nullable、Junit5)
Spring5 新功能 整个Spring5框架的代码基于Java8,运行时兼容JDK9,许多不建议使用的类和方法在代码库中删除 Spring5.0框架自带了通用的日志封装 Spring5已经移除Log4jConfigListener,官方建议使用Log4j2 Spring5框架整合Log4j2 第一步,引入相关的jar包 第二步,创建log4j2.xml配置文件 1234567891011121314151617181920<?xml version="1.0" encoding="UTF-8"?><!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><!--Configuration后面的status用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,可以看到log4j2内部各种详细输出--><configuration status ...
Spring5_05_事务
Spring5 事务 事务概念 什么是事务 事务是数据库操作最基本的单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败 典型场景:银行转账 lucy转账100元给mary lucy少100,mary多100 事务四个特性(ACID) 原子性 一致性 隔离性 持久性 搭建事务操作环境 创建数据库表,添加数据 123456CREATE TABLE t_account( id VARCHAR(20), username VARCHAR(50), money VARCHAR(50))INSERT INTO t_account VALUES('1','lucy',1000)INSERT INTO t_account VALUES('2','mary',1000) 创建service,搭建dao,完成对象创建和注入关系 service注入dao,在dao注入JdbcTemplate,在JdbcTemplate注入DataSource 1234567@Servicepublic clas ...
Spring5_04_JdbcTemplate
Jdbc Template Jdbc Template(概念和准备) 什么是JdbcTemplate Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作 准备工作 创建数据库和表 12345CREATE DATABASE user_dbCREATE TABLE t_book( userId BIGINT PRIMARY KEY, username VARCHAR(100) NOT NULL, ustatus VARCHAR(50) NOT NULL) 引入相关的jar包 在Spring文件中配置数据库的连接池 12345678<!-- 数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="url" value="jd ...
Redis相关资料_安装Canal(数据同步-异步通知)
安装和配置Canal 下面我们就开启mysql的主从同步机制,让Canal来模拟salve 1.开启MySQL主从 Canal是基于MySQL的主从同步功能,因此必须先开启MySQL的主从功能才可以。 这里以之前用Docker运行的mysql为例: 1.1.开启binlog 打开mysql容器挂载的日志文件,我的在/tmp/mysql/conf目录: 修改文件: 1vi /tmp/mysql/conf/my.cnf 添加内容: 12log-bin=/var/lib/mysql/mysql-binbinlog-do-db=heima 配置解读: log-bin=/var/lib/mysql/mysql-bin:设置binary log文件的存放地址和文件名,叫做mysql-bin binlog-do-db=heima:指定对哪个database记录binary log events,这里记录heima这个库 最终效果: 1234567[mysqld]skip-name-resolvecharacter_set_server=utf8datadir=/var/lib/mysqlser ...
Redis相关资料_安装OpenResty(Nginx多级缓存)
安装OpenResty 1.安装 首先你的Linux虚拟机必须联网 1)安装开发库 首先要安装OpenResty的依赖开发库,执行命令: 1yum install -y pcre-devel openssl-devel gcc --skip-broken 2)安装OpenResty仓库 你可以在你的 CentOS 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包(通过 yum check-update 命令)。运行下面的命令就可以添加我们的仓库: 1yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo 如果提示说命令不存在,则运行: 1yum install -y yum-utils 然后再重复上面的命令 3)安装OpenResty 然后就可以像下面这样安装软件包,比如 openresty: 1yum install -y openresty 4)安装opm工具 opm是OpenResty的一个管理工具,可以帮助我们安装一个第三方的Lua模块。 ...
Redis_04_高级篇_多级缓存(nginx本地缓存、查询Redis、JVM进程缓存、缓存同步)
多级缓存 0.学习目标 1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: •请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 •Redis缓存失效时,会对数据库产生冲击 多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提升服务性能: 浏览器访问静态资源时,优先读取浏览器本地缓存 访问非静态资源(ajax查询数据)时,访问服务端 请求到达Nginx后,优先读取Nginx本地缓存 如果Nginx本地缓存未命中,则去直接查询Redis(不经过Tomcat) 如果Redis查询未命中,则查询Tomcat 请求进入Tomcat后,优先查询JVM进程缓存 如果JVM进程缓存未命中,则查询数据库 在多级缓存架构中,Nginx内部需要编写本地缓存查询、Redis查询、Tomcat查询的业务逻辑,因此这样的nginx服务不再是一个反向代理服务器,而是一个编写业务的Web服务器了。 因此这样的业务Nginx服务也需要搭建集群来提高并发,再有专门的nginx服务来做反向代理, ...
Spring核心_03_面向切面编程AOP
Spring核心之面向切面编程AOP 什么是AOP 面向切面编程(方面),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 通俗描述:不通过修改源代码方式,在主干功能里面添加新功能 使用登陆例子说明AOP AOP底层原理 AOP底层使用动态代理 有接口的情况,使用JDK动态代理 创建接口实现类代理对象,增强类的方法 没有接口情况,使用CGLIB动态代理 创建子类的动态对象,增强类的方法 AOP(JDK动态代理) 使用JDK动态代理,使用Proxy类里面的方法创建代理对象 java.lang.reflect Class Proxy java.lang.Object java.lang.reflect.Proxy 调用newProxyInstance方法 方法有三个参数: 第一参数,类加载器 第二参数,增强方法所在的类,这个类实现的接口,支持多个接口 第三参数,实现这个接口InvocationHandler,创建代理对象,写增强的部分 编写JDK动态代理代码 创建接 ...
Spring核心_02_控制反转IOC
Spring核心之控制反转IOC IOC 概念和原理 什么是IOC 控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理 使用IOC目的:为了降低耦合度 做入门案例就是IOC实现 IOC 底层原理 xml解析、工厂模式、反射 原始方式与工厂模式对比 图解IOC底层原理 IOC 接口(BeanFactory) IOC思想基于IOC容器完成,IOC容器底层就是对象工厂 Spring提供IOC容器实现两种方式:(两个接口) BeanFactory:IOC容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用 特点:加载配置文件时候不会创建对象,在获取对象(或者使用对象)才去创建对象 ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人人员进行调用 特点:加载配置文件时候就会把在配置文件对象进行创建 ApplicationContext接口有实现类 FileSystemXmlApplicationContext configLocation:要写上配置文件在系统盘(某个盘)里的 ...
SpringMVC_01_入门案例
SpringMVC 入门案例 视频链接:https://www.bilibili.com/video/BV1Ry4y1574R?p=6&vd_source=663fd1669a3590a30ae5f8e48a5ac865 开发环境 IDE:idea 2020.3.3 构建工具:maven3.8.4 服务器:tomcat7 Spring版本:5.3.1 创建maven工程 a>添加web模块 b>打包方式:war c>引入依赖 12345678910111213141516171819202122232425262728293031323334353637 <groupId>org.example</groupId> <artifactId>springtest</artifactId> <version>1.0-SNAPSHOT</version> <!--*******************************--><packaging>wa ...
Redis相关资料_搭建集群(单机、主从集群、哨兵集群、分片集群)
Redis集群 本章是基于CentOS7下的Redis集群教程,包括: 单机安装Redis Redis主从 Redis分片集群 1.单机安装Redis 首先需要安装Redis所需要的依赖: 1yum install -y gcc tcl 然后将课前资料提供的Redis安装包上传到虚拟机的任意目录: image-20210629114325516 例如,我放到了/tmp目录: image-20210629114830642 解压缩: 1tar -xzf redis-6.2.4.tar.gz 解压后: image-20210629114941810 进入redis目录: 1cd redis-6.2.4 运行编译命令: 1make && make install 如果没有出错,应该就安装成功了。 然后修改redis.conf文件中的一些配置: 123456# 绑定地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问bind 0.0.0.0# 保护模式,关闭保护模式protected-mode no# 数据库数量,设置为 ...