Redis7入门概述
作者:antirez Github
博客
Remote Dictionary Server(远程字典服务)是完全开源的,使用ANSIC语言编写遵守BSD协议,是一个高性能的Key-Value数据库提供了丰富的数据结构,例如String、Hash、List、Set、SortedSet等等。数据是存在内存中的,同时Redis支持事务、持久化、LUA脚本、发布/订阅、缓存淘汰、流技术等多种功能特性提供了主从模式、Redis Sentinel和Redis Cluster集群架构方案
Redis是一种缓存技术
分布式缓存,挡在mysql数据库之前的带刀护卫
内存存储和持久化(RDB+AOF), redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
高可用架构搭配
缓存穿透、击穿、雪崩
分布式锁
队列
排行版+点赞
…
数据库遵循 2(写)- 8(读)原则,为了让这两个保持平衡,我们使用redis缓存,将8(读)进行降低。
与传统数据库关系(mysql)
Redis是key-value数据库(NoSQL一种),mysql是关系数据库
Redis数据操 ...
版本适配
可通过查阅官方文件,可得springCloud适配的SpringBoot和JAVA的版本,建议通过GitHub对应的官方文档来查阅
SpringCloud作用
是将一系列微服务操作整合到一起
服务网关:Vue前台页面不应该直接知道后台服务器的真实地址,所以需要通过服务网关来实现
负载均衡:后台服务器不可能只有一个,需要对多个服务器进行调用,通过负载均衡来实现
分布式事务:后台数据库也不可能只有一个,为了能够实现各个数据库之间的数据一致,通过分布式事务来实现
服务熔断:当后台有服务器失效的时候,需要通过服务熔断来进行服务降级监控
SpringCloud就是将上述功能进行整合
如果有一些老项目还是需要使用一些不流行的框架
Base工程模块构建
构建父工程Maven
设置编码:设置 - 编译器 - 文件编码 - 全部UTF-8
设置注解生效:设置 - 构建执行部署 - 编译器 - 注解处理器 - 勾上启用注解
设置JDK版本:设置 - 构建执行部署 - 编译器 - JAVA编译器 - 设置目标字节码版本为17
设置忽略文件类型:设置 - 编辑器 - 文件类型 - ...
项目报错:Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/…
原因:缺少jaxb-api包导致的,在Java 8以及以前的版本,是默认包含jaxb这个jar包的;但是在java SE 9.0就不再包含着个包了,如果使用则需要手动引进。
导入如下包
1234567891011121314151617181920<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version></dependency><dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId&g ...
SpringSecurity
简介
一般Web应用的需要进行认证和授权
认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户
授权: 经过认证后判断当前用户是否有权限进行某个操作
而认证和授权也是SpringSecurity作为安全框架的核心功能
快速入门
准备工作
和SpringBoot工程整合
添加依赖 pom.xml
1234567891011121314151617181920<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0</version></parent><dependencies> <dependency> <groupId>org.springframework.boot</group ...
MybatisPlus入门
使用步骤
引入MybatisPlus的起步依赖
12345<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version></dependency>
定义Mapper继承MybatisPlus提供的BaseMapper接口,需要提供泛型为你的泛型
123public interface UserMapper extends BaseMapper<User>{ }
常见注解
MybatisPlus的约定
类名驼峰转下划线作为表名
名为id的字段作为主键
变量名驼峰转下划线作为表的字段名
如果表不满足当前的约定的话,MybatisPlus还提供了注解
@TableName:用来指定表名,类名和表明不一致的时候使用,如果不使用的话会 ...
VO包
当我们给前台传数据的时候,可能不想要将所有的数据项都传给前台,这时候需要使用VO映射类来封装我们的 数据
domain/vo/实体类名字
1234567891011121314151617181920package com.nuyoah.domain.vo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;/** * 当我们返回给前端数据的时候,并不是想要将数据库中的所有数据项都展示出来 * 这时候我们可以使用vo封装我们想要给前台展示的数据 */@Data@NoArgsConstructor@AllArgsConstructorpublic class HotArticleVo { private Long id; private String title; private Long viewCount;}
实体对象转换成VO对象
service/impl/service对象
1234567891011121314151 ...
Lambda表达式
基本格式
1(参数列表)->{代码}
一个接口并且只有一个方法要重写才能使用lambda表达式
例一
创建线程的时候匿名内部类写法
123456new Thread(new Runable() { @Override public void run() { System.out.println("哈哈哈") }}).start();
Lambda表达式
123new Thread(()->{ System.out.println("哈哈哈")}).start();
例二
方法
12345public static int calculateNum(IntBinaryOperator operator){ int a = 10; int b = 20; return operator.applyAsInt(a, b)}
调用
12345678publi ...
Vue快速上手
Vue概念
Vue是一个用于构建用户界面的渐进式框架
Vue两种使用方式
Vue核心包开发
场景:局部模块改造
Vue核心包 & Vue插件 工程化
场景:整站开发
框架:
优点:大大提升开发效率
缺点:需要记忆规则 -> 官网
创建实例
创建Vue实例初始化渲染
步骤:
准备HTML容器
引包-开发版本/生产版本
创建Vue实例 new Vue()
指定配置项 ->渲染数据
el指定挂载点
data提供数据
12345678910111213141516<div id="app"> {{ msg }}</div><script src="../libs/vue.js"></script><script> // 通过引入的Vue包,创建Vue实例对象 const app = new Vue({ // 通过el选择器,指定Vue管理的盒子 ...
Axios
使用方法
123456789101112131415<div class="box"></div><!-- axios库地址: https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js 省份数据地址: http://ajax-api.itheima.net/api/province--><!-- 先引入axios库 --><script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script> // axios 基本语法 axios({ url : 'http://ajax-api.itheima.net/api/province' }).then (result =>{ document.querySe ...
WEB API
DOM
DOM
文档对象模型:用来呈现以及与任意的HTML或XML文档交互的API
DOM树
将HTML中的内容以树状的形式直观的显示出来,直观的体现了标签与标签之间的关系
DOM对象
浏览器根据HTML标签生成的JS对象
标签的所有属性都可以在这个对象上找到
获取DOM对象
通过CSS选择器获取对应的标签
document.querySelector获取符合标准的第一个元素
12document.querySelector('CSS选择器')// css选择器: div, #ID .Class
document.querySelectorAll获取符合标准的所有元素
12document.querySelectorAll('CSS选择器')// css选择器: div, #ID .Class
其他方法
document.getElementByID
document.getElementByTagName
document.getElementByClassName
操作元素
内容
i ...