- 博客(127)
- 收藏
- 关注
原创 rabbitMQ消息队列中发布确认中的确认以及回退回调的实现
在发布确认回调实现类中package com.it.springbootrabbitmq.callback;import lombok.extern.slf4j.Slf4j;import org.springframework.amqp.rabbit.connection.CorrelationData;import org.springframework.amqp.rabbit.core.RabbitTemplate;import org.springframework.beans.facto
2021-09-03 10:49:21
1081
原创 死信队列与延迟队列区别与问题优化
延时队列延时队列.队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说, 延时队列就是用来存放需要在指定时间被处理的元素的队列, 延时队列其实就是特殊的死信队列基于死信队列存在的问题:如果在消息属性上设置TTL的方式,消息可能并不会按时"死亡",因为RabbitMQ只会检查第一个消息是否过期,如果过期则丢到死信队列,如果第一个消息的延时时长很长, 而第二个消息的延时时长很短,第二个消息并不会优先得到执行,而是在第一个消息过期后才
2021-09-02 23:17:13
4066
原创 延迟队列的demo
配置类:package com.it.springbootrabbitmq.config;import org.springframework.amqp.core.*;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configu
2021-09-02 16:59:27
339
原创 linux系统中安装jdk/maven/docker流程
安装JAVA 运行环境第一步:上传或下载安装包cd/usr/localjdk-8u121-linux-x64.tar.gz第二步:解压安装包tar -zxvf jdk-8u121-linux-x64.tar.gz第三步:建立软连接ln -s /usr/local/jdk1.8.0_121/ /usr/local/jdk第四步:修改环境变量vim /etc/profileexport JAVA_HOME=/usr/local/jdkexport JRE_HOME=$JAVA_HOME.
2021-08-30 20:42:23
215
原创 (已解决)Unexpected token o in JSON at position 1
问题描述:前台登录模块中,在cookie中放了一个用户数据的对象, 然而在从cookie中取这个对象的时候,一直报Unexpected token o in JSON at position 1 这个错误通过查资料了解到: cookie中不能放对象, cookie里面只能存放文本信息解决方案 :将对象转换为json字符串放入cookie中: JSON.Stringify(this.loginInfo)再次尝试 , 页面可以正常回显登录用户的数据相关知识JSON.Stri.
2021-08-25 10:44:11
361
原创 在base64位编码过程中遇到java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter 解决方案
问题描述:org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverterat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java
2021-08-24 17:47:17
475
原创 缓存穿透与缓存击穿与缓存雪崩的理解
缓存穿透与缓存击穿与缓存雪崩的理解缓存穿透现象原因解决方案缓存击穿现象原因解决方案缓存雪崩现象原因解决方案缓存穿透与缓存击穿与缓存雪崩的区别缓存穿透现象1)应用服务器压力变大2)redis命中率降低3)一直查询数据库原因大量请求进行访问,且是非法访问,redis内存中没有数据命中率降低,便会不断向数据库进行请求查询,从而造成数据库崩溃1)redis查询不到数据库2)出现很多非正常url访问解决方案(1).对空值缓存 :如果一个查询返回的数据为空(不管数据是否不存在),我
2021-08-14 17:42:06
119
原创 redis之高可用集群配置
redis之高可用集群配置集群简介解决的问题配置集群1 创建集群每个服务器的配置文件2. 填写配置文件3 . 到redis的src目录下(redis6以上版本已经集成了rubby环境) 执行命令将六个节点进行合体4.以集群方式进行连接, 连接任意一个节点都可以redis cluster 分配节点slots 插槽添加值1.1添加单个值1.2 添加多个值常用命令故障恢复好处不足集群简介Redis集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分步存储在这N个节点中,每个节点存储总
2021-08-14 17:24:35
183
原创 详解redis常用结构:主从复制及哨兵模式
详解redis常用结构:主从复制及哨兵模式一.主从复制简介作用搭建一主多从1.1创建myredis文件夹1.1.1 修改配置文件(redis.conf)1.2 复制redis.conf到myredis文件夹中1.3配置一主两从, 创建三个配置文件1.4.启动三个redis服务,查看当前主机运行情况,在从机上执行slaveof 主机ip 端口号 会把从机加到主服务器中复制原理主从复制的特点二: 薪火相传特点缺点三:反客为主特点用法四:哨兵模式简介实现故障恢复(假如有一台主机突然掉线)1.1 新主登基
2021-08-14 17:13:00
144
原创 Redis持久化之RDB与AOF的比较
Redis持久化之RDB与AOF的比较RDB持久化1.1流程1.2缺点1.3恢复1.4优势AOF持久化1.1流程1.2 特点1.3恢复1.3.1 异常恢复1.4 持久化用哪个好RDB持久化1.1流程Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化进程都结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式
2021-08-14 16:52:21
99
原创 Redis秒杀事务高并发所产生的问题及解决方案
秒杀事务高并发所产生的问题及解决方案秒杀业务高并发产生的问题问题一:超卖问题解决方式一:采用乐观锁解决方式二: 采用LUA脚本1.1 LUA脚本介绍1.2 特点问题二:由于有些连接等待时间过长会出现连接超时的问题解决方案秒杀业务高并发产生的问题问题一:超卖问题解决方式一:采用乐观锁采用乐观锁, watch 监视库存, 同时将秒杀操作采用事务管理,解决超卖问题,不过会存在库存遗留问题缺点: 采用乐观锁方式会存在库存遗留问题解决方式二: 采用LUA脚本1.1 LUA脚本介绍LUA脚本是类
2021-08-14 16:39:57
441
原创 Redis事务之乐观锁与悲观锁的理解
redis事务之乐观锁与悲观锁的理解事务的简介事务的三个阶段1.1 Multi1.2 Exec1.3 discard事务的错误处理事务冲突解决方案:1. 悲观锁2. 乐观锁3. 乐观锁在redis中的应用Redis事务的三个特性1.1 单独的隔离操作1.2 没有隔离级别的概念1.3 不保证原子性事务的简介Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化,按顺序的执行,事务在执行过程中,不会被其他客户端发送来的命令请求所打断,redis事务的主要作用是串联多个命令防止别的命令插队事
2021-08-14 16:27:54
452
原创 redis五大数据类型&&redis6.0三大新数据类型详细总结
redis五大数据类型&&redis6.0三大新数据类型字符串String1.1介绍:1.12底层数据结构(指的是value的值)列表(List)1.1特点_底层数据结构1.2常用命令Set集合1.1 特点_底层数据结构1.2 常用命令Hash1.1特点_底层数据结构1.2 常用命令Redis有序集合zset1.1 特点1.2 数据结构1.3 常用命令新数据类型Bitmaps(针对位操作)1.1 特点1.2 常用命令Redis新类型:hyperLoglog(针对基数运算)1.1 常用命令1.
2021-08-14 15:47:53
452
原创 集群测试之ab工具进行高并发测试命令
get请求:ab -n 1000 -c 100 http://192.168.0.109:8080/redisTest/testLockpost带参请求ab -n 2000 -c 200 -k -p ~/postfile -T application/x-www-form-urlencoded http://192.168.2.115:8081/Seckill/doseckill
2021-08-14 10:49:12
244
原创 io.lettuce.core.RedisCommandExecutionException: MOVED 8718 192.168.93.130:6380 异常问题的解决
#Redis服务器地址spring.redis.host=192.168.93.130#Redis服务器连接端口spring.redis.port=6379#Redis数据库索引(默认为0)spring.redis.database= 0#连接超时时间(毫秒)spring.redis.timeout=1800000#连接池最大连接数(使用负值表示没有限制)spring.redis.lettuce.pool.max-active=20#最大阻塞等待时间(负数表示没限制)spring.re
2021-08-14 10:40:47
3365
原创 redis模拟手机验证码的发送验证过程
package com.it.jedis;import redis.clients.jedis.Jedis;import java.util.Random;//模拟手机验证码的发送public class PhoneCode { public static void main(String[] args) { // verifyCode("14430202020"); getRedisCode("14430202020","908593"); }
2021-08-12 15:02:32
103
原创 定时备份数据库的Shell脚本实现
1. 编写执行数据库备份的shell脚本#!/bin/bash#完成数据库的定时备份#备份的路径BACKUP=/opt/backup/db#当前的时间作为文件名DATETIME=$(date +%Y_%m_%d_%H%M%S)echo "=============开始备份=================="echo "===========备份的路径是$BACKUP/$DATETIME.tar.gz"#主机HOST=localhost#用户名DB_USER=root#密码DB_
2021-08-11 10:21:09
321
原创 linux终端登录页显示-bash-4.1# 原因及解决方法
很可能是自己无意间将用户目录下的-rw-r--r--. 1 root root 176 8月 8 20:22 .bash_profile-rw-r--r--. 1 root root 124 8月 8 20:22 .bashrc这两个文件给删除了, 只需登录到其他用户执行以下两个命令复制到自己的用户家目录下即可,拿root用户显示异常举例:cp .bash_profile /rootcp .bashrc /root即可恢复root用户的显示问题...
2021-08-08 20:40:23
658
原创 SpringBoot与SpringMVC拦截器功能的实现
1.编写一个拦截器实现HandlerInterceptor接口2.拦截器注册到容器中(实现WebMvcConfigurer的addInterceptors)3.指定拦截规则[如果是拦截所有,静态资源也会被拦截]实例代码:登录拦截器/** 登录拦截器* */@Slf4jpublic class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpSer
2021-07-30 15:59:40
125
2
原创 SpringBoot与SpringMVC数据响应与内容协商原理
1.数据响应与内容协商给前端自动返回json数据返回值解析器返回值处理器处理返回值this.returnValueHandlers.handleReturnValue( returnValue, getReturnValueType(returnValue), mavContainer, webRequest);寻找哪个处理器能处理返回值HandlerMethodReturnValueHandler handler = selectHandler(returnValue, retu
2021-07-29 13:20:48
223
原创 不知道请求参数是如何传递的?看看这篇Springboot以及SpringMVC中参数传递原理深入浅出剖析就明白了
HandlerMapping中找到能处理请求的Handler(Controller,method())为当前Handler找一个适配器HandlerAdapter:RequestMappingHandlerAdapter1.HandlerAdapter0-支持方法上标注@RequestMapping1-支持函数式编程的xxxx2.执行目标方法3.参数解析器:确定要执行的目标方法每一个参数的值是什么boolean supportsParameter(MethodParameter
2021-07-27 17:07:19
575
9
原创 自定义开启矩阵变量
//自定义WebMvcConfigurer开启矩阵变量 @Bean public WebMvcConfigurer WebMvcConfigurer() { return new WebMvcConfigurer() { @Override public void configurePathMatch(PathMatchConfigurer configurer) { UrlPathH...
2021-07-27 12:50:40
114
原创 SpringBoot自动配置原理总结
SpringBoot先加载所有的自动配置类,xxxAutoConfiguration每个自动配置类按照条件进行生效,默认都会绑定配置文件指定的值,xxxproperties里面拿,xxxproperties和配置文件进行了绑定生效的配置类就会给容器中装配很多组件只要容器中有着写组件,相当于这些功能就有了定制化配置:(1)用户直接自己@Bean替换底层的组件(2)用户去看这个组件是获取的配置文件什么值就去修改(application.properties)里面对应的值即可xxxAutoConfi
2021-07-26 00:54:08
80
原创 springboot快速启动
1.引入springboot父工程,从而可以使用boot的各种配置 org.springframework.boot spring-boot-starter-parent 2.3.4.RELEASE2.如果是web工程org.springframework.bootspring-boot-starter-web3.主程序类*** @SpringBootApplication注解:告诉这是一个springboot应用** */@SpringBootAp
2021-07-25 17:05:00
244
原创 jsp的有关总结
<%–这里通过path回显表示实体中的某个字段,items表示集合,itemLabel:展示在option中的数据,itemvalue:作为value属性–%><form:select path=“dept.did” items="${depts}" itemLabel=“dname” itemValue=“did”></form:select><%--单选框通过value回显--%>
2021-07-25 01:24:34
69
原创 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
遇到该问题:很可能是你原来的mapper中的sql语句最后加了 ; 分号, 所以导致limit 分页条件无法拼接,报语法错误.只需将分号去掉即可解决
2021-07-24 23:06:09
201
2
原创 Cannot convert value of type ‘java.lang.String‘ to required type ‘javax.sql.DataSource‘ for property
出现这个问题的原因可能是datasource在sqlsession中将ref 写成了value, 应该是引入这个值, ref
2021-07-24 19:34:05
392
1
原创 mybatis逆向工程总结
逆向工程定义:MyBatis Generator: • 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及bean类。支持基本的增删改查,以及QBC风格的条件查询。但是表连接、存储过程等这些复杂sql的定义需要我们手工编写使用步骤:一:编写generatorConfig.xml的配置文件(重要几处配置)1)jdbcConnection配置数据库连接信息2)javaModelGenerator配置javaBean的生成策略3)sqlMa
2021-07-24 11:30:28
212
原创 PersistenceException Error updating database关于mybatis批量修改数据库时无法批量操作的问题解决
由于数据库默认配置是不支持批量执行多条修改sql语句的,因此我们需要修改下数据库的配置, 在数据库连接地址url后面加上参数:?allowMultiQueries=true 即可解决这个问题
2021-07-23 21:32:21
646
原创 lazyLoadingEnabled延迟加载的配置
方式一:针对全局所有进行配置 <!--开启延迟加载--> <setting name="lazyLoadingEnabled" value="true"/> <!--是否查询所有数据--> <setting name="aggressiveLazyLoading" value="false"/>方式二:只针对特有的语句进行配置<collection property="emps" select="
2021-07-23 17:07:41
677
原创 mysql多表联查之多对一的处理
<!-- //查询所有员工信息 List<Emp> getAllEmp();--> <!--自定义emp类型的映射关系--> <resultMap id="empMap" type="Emp"> <!--id用于定义主键的映射--> <id column="eid" property="eid"></id> <!--result定义属性的映射-..
2021-07-23 15:11:39
855
原创 mybatis中获取主键以及参数传递的有关问题
<insert id="addEmp" useGeneratedKeys="true" keyProperty="eid"> insert into emp values(null,#{ename},#{age},#{sex}) /*insert into emp values(null,'${ename}',${age},'${sex}')*/</insert>
2021-07-22 23:27:53
142
原创 mybatis获取参数值的两种方式
${}:insert into emp values(null,admin,23,男)statement:必须使用字符串拼接的方式操作sql,一定要注意单引号问题#{}:insert into emp values(null,?,?,?)preparedstatement:可以使用通配符操作sql,因为在为String赋值时,可以自动加单引号,因此不需要注意单引号问题,使用建议:建议使用#{},在特殊情况下,需要使用${},例如模糊查询和批量删除,...
2021-07-22 23:08:16
439
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人