- 博客(20)
- 收藏
- 关注
原创 Redis 底层数据结构
Redis 使用键值对存储数据,其中包括 5 种数据类型,即字符串、哈希、列表、集合、有序集合,它们是对外提供的,实际上在redis内部每种类型都有2种或更多的内部编码实现简单动态字符串Redis没有直接使用C字符串(即以空字符串’\0’结尾的字符数组)作为默认的字符串标识,而是自己构建的SDS(Simple Dynamic String简单动态字符串)作为默认字符串SDS 定义:struct sdshdr{ //记录buf数组中已使用字节的数量 //等于 SDS 保存字符串的长度 int l
2021-03-25 18:15:05
822
原创 Mysql集群搭建——主从复制
主从复制原理单机Mysql存在的问题:不能高可用,不能高并发,海量数据处理比较恼火。主从复制的原理就是主对外工作,从对内备份,读写分离过后,从数据库可以读原理还是比较简单,在对主机数据库进行增删改操作之后,如果打开了bin log功能的话,将语句存在bin log里面,从机数据库的IO Thread读到bin log,然后存到relay log(中继日志)里边儿,然后SQL Thread从中继日志中读取到数据库里边儿。不过这两个线程都是单线程,当主机的tps(每秒事务处理数)高于从机的Thread所能
2021-01-26 17:24:44
943
1
原创 Mysql优化——SQL语句优化
索引优化where 字段、组合索引(最左前缀)、索引下推(非选择行 不加锁)、索引覆盖(不回表)、on两边、排序、分组…explain分析语句情况,看建立索引没,或者建立错误,响应时间长的话可以看下慢查询日志尽量不要用 *查所有字段的话,select查询列中的字段如果没有索引的话,会造成回表LIMIT优化limit优化的特点是截断,就是可以停止全表扫描的,比如下面这个,肯定没走索引的,1000W条数据,就走了20条,截断了原SQL这种sql语句和索引都没关系了,可以对他进行优化,可以创建个
2021-01-25 17:06:37
863
原创 Mysql优化——SQL设计层面优化
设计中间表,一般针对于统计分析功能,或者实时性不高的需求(OLTP、OLAP)有些统计功能关联很多表,计算量特别打的时候,对实时性要求不高的话,可以设计一张单标,使用定时任务,在并发量小的时候将它们计算起来,插入或更新到一张表中,这时候就是简单地单表查询了,用户体验感会好很多为减少关联查询,创建合理的冗余字段有些字段不经常改变,可以创建到从表的字段中,比如订单,关联的user_id,可以把用户的名字字段创建过去,查询的时候就少关联一张表了。考虑数据库的三范式和查询性能的取舍,创建冗余字段还需要注意数据
2021-01-22 16:17:21
836
原创 Mysql优化——服务器层面优化
扩大buffer pool至合适大小扩大buffer pool的目的将数据保存在内存中,保证从内存读取数据,buffer pool默认的大小为134217728Byte=128M,可以扩大至当前服务器内存的3/4或者4/5,如果buffer pool不足够大的话,硬盘和内存交互会比较多,性能会比较差show variables like '%buffer_pool%';show global status like 'innodb_buffer_pool_pages_%';这个0代表当前的b
2021-01-22 14:59:07
957
1
原创 Mysql Query Profiler诊断分析工具
上篇文章记录了,Mysql慢查询日志分析及percona-toolkit的使用,如果慢查询日志没有找到问题的话,可以从数据库的角度分析下,可以使用mysql自带的诊断分析工具Query Profile,它可以分析出一条SQL语句的硬件性能瓶颈在什么地地方,比如CPU,IO等,以及该SQL执行所耗费的时间等开启Profile功能默认是关闭状态开启profile功能set profiling=1; --1是开启、0是关闭操作一条查询时间比较长的sqlselect id from tb_user
2021-01-22 14:17:51
830
原创 Mysql慢查询日志分析及percona-toolkit的使用
开启慢查询日志配置文件里边儿slow_query_log=ON long_query_time=3 //这儿设置的超过3sslow_query_log_file=/var/lib/mysql/slow-log.log //记录慢查询日志对应的文件
2021-01-22 13:46:36
1370
原创 mysqldump实现数据库的备份
利用mysql的工具mysqldump可以实现备份的,生成一个sql文件,例如mysqldump -h 127.0.0.1 -P 3306 -uroot -pmysql --databases dbname > F:\test.sqlmysqldump的使用可以参考MySQL之mysqldump的使用java代码中使用mysqldump实现数据库的备份,跟在cmd里边儿执行普通命令差不多得,不过要确保mysqldump和mysql所在的目录配置环境变量,例子在windows上面操作的,lin
2020-11-23 17:08:45
933
原创 Springboot 整合Spring Security Oauth2.0自定义登录接口
前面几篇文章用Springboot依次整合了Spring Security、Oauth2.0、JWT、向令牌添加额外信息,本篇文章主要记录使用自定义登录接口Springboot整合Spring Security Oauth2.0 + JWT (一)Springboot整合Spring Security Oauth2.0 + JWT (二)Springboot整合Spring Security Oauth2.0 + JWT (三)Springboot整合Spring Security Oauth2.0
2020-10-21 10:13:22
6660
原创 Springboot整合Spring Security Oauth2.0 + JWT (四)
前面三篇文章分别整合了Spring Security 与 Oauth2.0 与Jwt,这篇文章主要记录在它们增Token,放一些自定义的信息在Token里面Springboot整合Spring Security Oauth2.0 + JWT (一)Springboot整合Spring Security Oauth2.0 + JWT (二)Springboot整合Spring Security Oauth2.0 + JWT (三)修改UserDetailsServiceImpl修改loadUserB
2020-10-16 16:39:31
1823
原创 Springboot整合Spring Security Oauth2.0 + JWT (三)
前面两篇文章分别整合了Spring Security 和 Oauth2.0,Springboot整合Spring Security Oauth2.0 + JWT (一)Springboot整合Spring Security Oauth2.0 + JWT (二)这篇文章记录在前两篇文章的基础之上整合JWT引入依赖<dependency> <groupId>org.springframework.security</groupId> <art
2020-10-16 11:42:12
1851
原创 Springboot整合Spring Security Oauth2.0 + JWT (二)
上片文章已经整合Spring Security Springboot整合Spring Security Oauth2.0 + JWT (一),由于现在开发的项目基本上都是前后端分离,所以采用Spring Security Oauth2.0。至于Oauth2.0 协议以及下面的几个概念就不叙述了。整合Oauth2.0在第一篇的基础之上实现添加依赖<dependency> <groupId>org.springframework.security.oauth.boot&l
2020-10-15 11:33:39
2444
4
原创 Springboot整合Spring Security Oauth2.0 + JWT (一)
基于Springboot + Spring Security Oauth2.0 + Jwt实现RBAC权限模型,这几个概念就不做描述了,例子很多整合Spring Securitypom.xml依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dep
2020-10-14 16:21:16
3290
2
原创 Feign调用出现权限问题 feign.FeignException$Unauthorized: [401] during [GET] to[....]
使用Spring Cloud + Spring Security Oauth2.0 + JWT 做分布式认证的时候,内部微服务调用的时候出现权限问题这种情况为没有认证就请求了资源服务器的资源,解决办法为使用Feign的时候把请求的认证信息传递过去,或者资源服务那边开放一些接口。不过开放接口的话情况有点多,所以就选择把token携带过去了。feign提供了一个名为RequestInterceptor得拦截器,可以在请求的时候指定请求头@Configurationpublic class FeignCo
2020-09-25 14:52:15
14342
1
原创 Springboot使用自定义注解返回数据脱敏及整合FastJson
最初的想法是通过在实体类的getter方法操作,让它从数据库返回值过后运用自己的脱敏策略重新赋值不过这种方法有弊端,如果在后端还要使用值的话,拿到的值不是数据库的真是的数据,所以只能在springmvc返回前端的时候操作(如果从数据库后获取值不操作的话,可以直接在getter方法上面写)下面采用自定义注解和拦截器的方式引入fastjson依赖<!-- fastjson --><dependency> <groupId>com.alibaba<
2020-08-27 17:43:01
4373
原创 Springboot上传文件过大 FileSizeLimitExceededException
前端测试上传单据Http状态码413,原因为上传的文件过大了,看springboot日志发现默认大小仅有1045876 bytes = 1Mborg.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field files[] exceeds its maximum permitted size of 1048576 bytes.在application.yml的配置文件中配置下默认上传的大小spr
2020-08-21 11:05:32
1462
原创 List按照实体多个字段进行排序
List按照实体的多个字段进行排序实体类@Datapublic class Student { private Long id; private String name; private Double score; public Student() {} public Student(Long id, String name, Double score) { this.id = id; this.name = name;
2020-08-18 14:59:39
1511
原创 Springboot整合logback日志输出
不用添加相关依赖,直接在src/resources目录下添加logback.xml文件(仅仅是下面的操作没办法将sysout的输出打印到日志文件里边,操作步骤在上一篇博客)<?xml version="1.0"?><configuration> <!--这个是输日志文件的目录名--> <property value="/usr/local/app/tars/app_log/Test/TestHelloServer" name="LOG_HOME"
2020-08-18 14:42:35
825
原创 Logback整合控制台sysout输出到日志文件
项目中有些地方日志打印是通过sysout的,但是之前logback的操作只能输出info,error这些内容,问题不大,下面的操作可以将控制台的输出打印到日志文件里面(项目是基于springboot的)引入相关依赖<!-- https://mvnrepository.com/artifact/uk.org.lidalia/sysout-over-slf4j --> <dependency> <groupId>uk.org.lidali
2020-08-18 14:39:23
1823
原创 Linux下Mysql密码忘记解决
这里写自定义目录标题关闭mysqld服务编辑mysql的配置文件启动mysqld服务,进入mysql修改密码有段时间没用我的云服务器了,发现mysql密码忘了,但是问题不大,能操作关闭mysqld服务service mysqld stop编辑mysql的配置文件vim /etc/my.cnf在[mysqld ]下面添加skip-grant-tables (如果有这个东西的话,不管他好了)启动mysqld服务,进入mysqlservice mysqld startmys
2020-08-18 14:19:48
795
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人