Redis学习笔记之高级篇
分布式缓存Redis持久化RDB持久化① 介绍 RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。 ② 执行时机 save命令 执行下面的命令,可以立即执行一次RDB: save命令会导致主进程执行RDB,这个过程中其它所有命令都会被阻塞。只有在数据迁移时可能用到。 bgsave命令 下面的命令可以异步执行RDB: 这个命令执行后会开启独立进程完成RDB,主进程可以持续处理用户请求,不受影响。 停机时 Redis停机时会执行一次save命令,实现RDB持久化。 触发RDB条件 Redis内部有触发RDB的机制,可以在redis.conf文件中找到,格式如下: 1234# 900秒内,如果至少有1个key被修改,则执行bgsave , 如果是save "" 则表示禁用RDBsave 900 1 save 300 10 ...
Redis学习笔记之实战篇
实战篇短信登录思路分析发送验证码: 用户在提交手机号后,会校验手机号是否合法,如果不合法,则要求用户重新输入手机号。如果手机号合法,后台此时生成对应的验证码,同时将验证码进行保存,然后再通过短信的方式将验证码发送给用户。 短信验证码登录、注册: 用户将验证码和手机号进行输入,后台从session中拿到当前验证码,然后和用户输入的验证码进行校验,如果不一致,则无法通过校验,如果一致,则后台根据手机号查询用户,如果用户不存在,则为用户创建账号信息,保存到数据库,无论是否存在,都会将用户信息保存到session中,方便后续获得当前登录信息。 校验登录状态: 用户在请求时候,会从cookie中携带者JsessionId到后台,后台通过JsessionId从session中拿到用户信息,如果没有session信息,则进行拦截,如果有session信息,则将用户信息保存到threadLocal中,并且放行。 实现发送短信验证码功能发送验证码 1234567891011121314151617@Overridepublic Result sendCode(String phone, Htt...
Redis学习笔记之基础篇
Redis 学习笔记基础篇认识 Redis认识 NoSQLNoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库。 结构化与非结构化① 传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束: ② 而NoSql则对数据库格式没有严格约束,往往形式松散,自由。可以是键值型、文档型、图格式。 关联和非关联① 传统数据库的表与表之间往往存在关联,例如外键: ② 而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合: 123456789101112131415161718{ id: 1, name: "张三", orders: [ { id: 1, item: { id: 10, title: "荣耀6", price: 4999 ...
MySQL学习笔记之运维篇
日志错误日志(1) 错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 (2) 该日志是默认开启的,默认存放目录 /var/log/,默认的日志文件名为 mysqld.log 。查看日志位置: 1show variables like '%log_error%' 二进制日志(1) 二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。 (2) 作用: ① 灾难时的数据恢复; ② MySQL的主从复制。 在MySQL8版本中,默认二进制日志是开启着的,涉及到的参数如下: 1show variables like '%log_bin%' (3) 日志格式 MySQL服务器中提供了多种格式来记录二进制记录,具体格式及特点如下: 日志格式 含义 statement 基于S...
MySQL学习笔记之进阶篇
存储引擎MySQL体系结构: (1) 连接层:最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 (2) 服务层:第二层架构主要完成大多数的核心服务功能,如 SQL 接口,并完成缓存的查询,SQL 的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。 (3) 引擎层:存储引擎真正的负责了 MySQL 中数据的存储和提取,服务器通过 API 和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。 (4) 存储层:主要是将数据存储在文件系统之上,并完成与存储引擎的交互。 存储引擎(1) 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表而不是基于库的,所以存储引擎也可以被称为表引擎。 (2) 默认存储引擎是InnoDB。 (3) 相关操作: 12345678-- 查询建表语句show create table account;-- 建表时指定存储引擎CREATE TABLE...
MySQL学习笔记之基础篇
MySQL基础篇DDL(数据定义语言)作用:用来定义数据库对象(数据库、表、字段) 数据库操作① 查询所有数据库 1SHOW DATABASES; ② 查询当前数据库: 1SELECT DATABASE(); ③ 创建数据库: 1CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集] [COLLATE 排序规则 ]; ④ 删除数据库: 1DROP DATABASE [ IF EXISTS ] 数据库名; ⑤ 使用数据库: 1USE 数据库名; 注意:UTF8字符集长度为3字节,有些符号占4字节,所以推荐用utf8mb4字符集 表操作(1) 查询当前数据库所有表: 1SHOW TABLES; (2) 查询表结构: 1DESC 表名; (3) 查询指定表的建表语句: 1SHOW CREATE TABLE 表名; (4) 创建表: 1234567CREATE TABLE 表名( 字段1 字段1类型 [COMMENT 字段1注释], 字段2 字段2类型 [COMMENT 字段2注释], 字段3 字段3类型...
SSM学习笔记之 MyBatis-Plus
MyBatisPlus入门案例与简介入门案例创建Dao接口123@Mapperpublic interface UserDao extends BaseMapper<User>{} 编写引导类12345678@SpringBootApplication//@MapperScan("com.itheima.dao")public class Mybatisplus01QuickstartApplication { public static void main(String[] args) { SpringApplication.run(Mybatisplus01QuickstartApplication.class, args); }} 标准数据层开发标准CRUD使用方法大全 新增语法格式1int insert (T t) T:泛型,新增用来保存新增数据 int:返回值,新增成功后返回1,没有新增成功返回的是0 代码示例1234567891011121...
SSM学习笔记之 SpringBoot
SpringBoot简介SpringBoot 快速入门对比 坐标 Spring 程序中的坐标需要自己编写,而且坐标非常多 SpringBoot 程序中的坐标是我们在创建工程时进行勾选自动生成的 web3.0配置类 Spring 程序需要自己编写这个配置类。这个配置类之前编写过,很复杂 SpringBoot 程序不需要我们自己书写 配置类 Spring/SpringMVC 程序的配置类需要自己书写。而 SpringBoot 程序则不需要书写。 配置文件配置文件格式application.properties配置文件1server.port=80 application.yml配置文件(推荐)12server: port: 81 注意: 在:后,数据前一定要加空格。 application.yaml配置文件12server: port: 83 三种配合文件的优先级1application.properties` > `application.yml` > `application.yaml yaml 格式语法规则 大小写敏感 属性层级关系使用多行描...
SSM学习笔记之 SpringMVC
SpringMVC学习笔记SpringMVC入门案例TomCat 的作用先搞懂核心定位(通俗比喻)把整个 Web 应用比作 “餐厅” 浏览器 = 顾客(发起点餐请求); Tomcat = 餐厅的「前台 + 传菜员 + 机房」:负责接待顾客、解析点餐需求、把需求传给后厨,再把做好的餐品送回顾客; SpringMVC = 餐厅的「后厨(控制器 / 服务 / DAO)」:负责处理具体的 “点餐需求”(业务逻辑),但后厨不能直接面对顾客,必须通过前台(Tomcat)衔接。 Tomcat 在 SpringMVC 中的核心作用Tomcat 首先是一个轻量级 Web 服务器,负责处理最底层的网络通信: 监听指定端口(默认 8080),接收浏览器发来的 HTTP 请求(比如 GET/POST); 解析 HTTP 请求的格式(比如请求头、请求参数、请求体),把杂乱的 HTTP 字节流转换成 Java 能识别的对象 ——HttpServletRequest(请求对象)和HttpServletResponse(响应对象); 处理完请求后...
SSM学习笔记之 Spring
SSM学习笔记Spring相关概念Spring4 架构图 核心层 Core Container:核心容器,这个模块是Spring最核心的模块,其他的都需要依赖该模块 AOP层 AOP:面向切面编程,它依赖核心层容器,目的是在不改变原有代码的前提下对其进行功能增强 Aspects:AOP是思想,Aspects是对AOP思想的具体实现 数据层 Data Access:数据访问,Spring全家桶中有对数据访问的具体实现技术 Data Integration:数据集成,Spring支持整合其他的数据层解决方案,比如Mybatis Transactions:事务,Spring中事务管理是Spring AOP的一个具体实现,也是后期学习的重点内容 Web层 这一层的内容将在SpringMVC框架具体学习 Test层 Spring主要整合了Junit来完成单元测试和集成测试 IoC、IoC容器、Bean、DI什么是控制反转?使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。 Spring和IoC之间的关系是什么呢? ...









