MySQL 8.0的新特性-全局变量的持久化
在 MySQL 数据库中,全局变量可以通过 SET GLOBAL 变量来设置。例如,设置服务器语句超时的限制,可以通过设置系统变量 max_execution_time 来实现:
1SET GLOBAL MAX_EXECUTION_TIME = 2000;
使用 SET GLOBAL 语句设置的变量值只会临时生效。数据库重启后,服务器又会从 MySQL 匹配文件中读取变量的默认值。MySQL 8.0 版本增加了 SET PERSIST 命令。例如设置服务器最大连接数为1000:
1SET PERSIST GLOBAL max_connections = 1000;
MySQL 会将该命令的配置保存到数据目录下的 mysqlId-auto.cnf 文件中,下次启动时会读取该文件来覆盖默认的配置文件。注意:这个特性对于MAC用户来说很有用,MAC 下的 MySQL 是没有配置文件的,如果想要永久更改配置只能是自己新建一个配置文件,但是我觉得太麻烦了,现在只需要一行命令就可以永久的更改配置真的方便了很多!PERSIST 命令必须要以命名行的形式执行,亲测在 Navicat Premiun 1 ...
1052 - Column 'id' in where clause is ambiguous
MySQL报错 1052 - Column 'id' in where clause is ambiguous,这里记录以下错误原因
多进行多表关联的时候,很多个表如何出现相同的列表,但是你没有指明是哪个表的时候 MySQL 就会报此错误(我就是这个原因,太大意了😷)
在查询结果有相同的列名,但是你没有指出是哪个表,就会出现这个错误,其实本质上是一个原因只不过一个在 WHERE 条件中一个在 SELECT 中,一样的是都需要明确指出是哪个表的哪个字段
Mysql(二)
约束数据完整性是指数据的精确性和可靠性。它是防止数据中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制,从以下四个方面考虑:
实体完整性:例如,同一个表中,不能存在两条完全相同无法区分的记录
域完整性:例如,年龄范围0 - 120,性别范围男 / 女
引用完整性:例如,员工所在部门,在部分表中要能找到这个部门
用户自定义完整性:例如,用户名唯一,密码不能为空等,本部分经理的工资不得高于本部门职工的平均工资的5倍
非空约束限定某个字段 / 某列的值不允许为空。关键字:NOT NULL。默认所有的类型的值都可以是NULL,包括INT,FLOAT等数据类型;非空约束只能出现在表对象的列上,只能某个列单独限定非空,不能组合非空;一个表可以有很多列都分别限定了非空;空字符串不等于NULl,0也不等于NULL
12ALTER TABLE empMODIFY sex VARCHAR(30) NOT NULL;
唯一性约束用来限制某个字段 / 某列的值不能重复。关键字:UNIQUE。同一个表可以 ...
mapstruct
mapstruct 可以帮助我们快速的实现两个对象之间的转换
引入依赖
新建一个抽象类或者接口标注 @Mapper
写一个方法
获取对象并使用
相关的 pojo 之间的转换
123@Mapping(target = "name", source = "personName")@Mapping(target = "id", ignore = true)PersonDTO conver(Person person);
Mysql(一)
碎碎念一入Mysql深似海,只见树叶不见森林😓
关系型数据库关系型数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。关系型数据库以行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表,一组表则成了一个库。表于表之间的数据记录有关系。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系型数据库,就是建立在关系模型基础上的数据库
复杂查询: 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询
事物支持: 使得对于安全性能很高的数据访问要求得以实现
非关系型数据库非关系型数据库可看成传统关系型数据库的功能阉割版本,基于键值对存储数据,不需要经过SQL层的解析,性能非常高。同时,通过减少不常用的功能,进一步提高性能。目前基本上大部分主流的非关系型数据库都是免费的
关系型数据库设计规则
关系型数据库的典型数据结构就是数据表,这些数据表的组成都是结构化的(Structured)
将数据放到表中,表再放到库中
一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表明具有唯一性
表具有一些特征,这 ...
JWT认证原理
什么是JWTJWT 简称 JSON Web Token,也就是通过 JSON 形式作为 Web 应用中的令牌,用于在各方面之间安全的将信息作为 JSON 对象传输,在数据传输过程中还可以完成数据加密,签名等相关操作
JWT能做什么授权: 这是使用 JWT 最常见的方案,一旦用户登录,每个后续请求将包括 JWT,从而允许用户访问该令牌允许的路由,服务和资源。单点登录是当前广泛使用 JWT 的一项功能,因为它的开销很小并且可以在不同域中轻松使用
信息交换:JSON Web Token 是在各方面之间安全地传输信息的好办法,因为可以对 JWT 进行签名(例如使用公钥 / 私钥对),所以您可以确保发件人是他们所说的人。此外,由于签名是使用标头和有效负载计算的,因此还可以验证内容是否被篡改
为什么是JWT基于传统的Session认证认证方式我们知道,HTTP 协议本身是一种无状态协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还需要再一次进行用户认证才行,因为根据 HTTP 协议,我们并不知道是哪个用户发起的请求,所以为了我们的应用能够识别是哪个用户 ...
MybatisPlus
基本使用插入数据1userMapper.insert(user);
删除数据1userMapper.deleteById(1627302300654780418L);
123Map<String, Object> map = new HashMap<>();map.put("user_name", "wxz");userMapper.deleteByMap(map);
更新数据1234User user = new User();user.setAge(100);user.setId(4L);userMapper.updateById(user);
条件构造器我们在实际操作数据库的时候会涉及到很多条件,所以MP为我们提供了一个功能强大的条件构造器Wrapper,使用它可以让我们非常方便的构造条件。在其子类AbstractWrapper中提供了很多用于构造条件的方法。AbstractWrapper的子类QueryWrapper则额外提供了用于针对Select语法的select方法,可以用来设置查询哪些列。AbstractWr ...
java -source 8 中不支持 switch 表达式(请使用 -source 14 或更高版本以启用 switch 表达式)
碎碎念SpringBoot 最新版本已经标注了 JDK 最低版本是 17,相信以后 17 可能会作为主流版本,8 逐渐的会被替代,这个 BUG 主要是原因是 JDK 版本不符合,在最新的 SpringBoot 3.0.2 如何你还是用 JDK8 的话,它也会给你报一个无效的目标发行版:17,对于 IDEA 来说,大部分人可能只是改了 Project Structure 中的版本,可能没有注意到 Java 的编译环境(本人就是这里出的错)
解决办法这里主要有两个地方要修改,一个是 Project Structure 还有一个就是 Java Compiler
SpringSecurity
简介Spring Security 是 Spring 家族中的一个安全管理框架。相比较于另外一个安全框架 Shiro,它提供了更丰富的功能,社区资源也比 Shiro 丰富。一般来说中大型的项目都是使用 Spring Security 来做安全框架。小项目用 Shiro 比较多,因为相比与 Spring Security,Shiro 的上手更加简单,一般 Web 应用需要进行认证和授权:
认证: 验证当前访问系统的是不是本系统用户,并且要确认具体是哪个用户
授权: 经过认证后判断当前用户有权限进行某个操作
而认证和授权也是 Spring Security 作为安全框架的核心功能
认证Spring Security 的原理其实就是一个过滤器链,内部包含了提供了各种功能的过滤器
UsernamePasswordAuthenticationFilter:负责处理我们在登陆页天蝎了用户名密码的登陆请求
ExceptionTranslationFilter:处理过滤器链中抛出的任何 AccessDeniedException 和 AuthenticationException
FilterS ...
IDEA 链式调用格式化配置
IDEA 对链式调用设置格式化经典的就是 Lambda 表达式,有的时候一段 stream 流代码很长,这时候我们就可以设置 IDEA 的格式化代码,对于有非常严重代码洁癖的我来说看起来简直太爽了,打开 setting -> Editor -> Code Style -> Java -> Wrapping and Braces
我这里选的是 Chop down if long,你也可以根据自己的喜好选择别的形式,设置完之后 ctrl + alt + L 代码看起来舒服多了。除此之外你还可以把 Lambda 的图标调试出来,这样看起来代码更好看(个人看法),跳转起来也方便
选择 setting -> Editor -> General -> Gutter Icons,勾选 Lambda,大功告成😄,看一下成果