<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Mirage__的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Mirage__</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Mirage__]]></copyright><item><title><![CDATA[MyBatis流式查询的使用]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/116782760</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/116782760</guid><author>Mirage__</author><pubDate>Fri, 14 May 2021 10:57:35 +0800</pubDate><description><![CDATA[相关概念


流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器，应用每次从迭代器取一条查询结果。流式查询的好处是能够降低内存使用。
如果没有流式查询，我们想要从数据库取 1000 万条记录而又没有足够的内存时，就不得不分页查询，而分页查询效率取决于表设计，如果设计的不好，就无法执行高效的分页查询。因此流式查询是一个数据库访问框架必须具备的功能。
流式查询的过程当中，数据库连接是保持打开状态的，因此要注意的是：执行一个流式查询后，数据库访问框架就不负责关闭数据库连接了，需要应用在取完数据后自己关闭.]]></description><category></category></item><item><title><![CDATA[tryLock的使用]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/116348916</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/116348916</guid><author>Mirage__</author><pubDate>Sun, 02 May 2021 10:47:17 +0800</pubDate><description><![CDATA[tryLock的使用业务场景方法说明用法
业务场景
对于某些并发业务场景，我们可能想保证同一时刻只有一个线程在执行某一方法。
例如：对于缓存的初始化工作，此时我们可以使用tryLock()方法对代码进行上锁，只有拿到锁的线程可以执行操作，而其他线程则只会在进行一次尝试后返回false。
方法说明
Acquires the lock only if it is not held by another thread at the time of invocation.
只有在调用时它是空闲的才能获取锁。
获取锁]]></description><category></category></item><item><title><![CDATA[JUnit 5单元测试保证执行顺序]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/115747004</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/115747004</guid><author>Mirage__</author><pubDate>Thu, 18 Mar 2021 10:56:00 +0800</pubDate><description><![CDATA[一般实践认为，自动化测试应能够独立运行且无特定顺序，并且测试结果不应依赖于先前测试的结果。 但是在某些情况下，可以证明特定的测试执行顺序是正确的，尤其是在集成或端到端测试中。
默认情况下，在JUnit 5中，测试方法的执行在构建之间是可重复的，因此具有确定性，但是该算法是故意不明显的(作为库状态的作者)。 幸运的是，可以使用内置方法定购器或通过创建自定义定购器来调整执行顺序以满足我们的需求。
...]]></description><category></category></item><item><title><![CDATA[SpringBoot中从前端接受的Json中Date多8小时]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/114847387</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/114847387</guid><author>Mirage__</author><pubDate>Mon, 22 Feb 2021 14:48:00 +0800</pubDate><description><![CDATA[尝试过添加yaml配置项无效。
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
最终解决方法：在实体类上的Jackson注解添加timezone字段
@JSONField(format = DateTimeUtil.DATE_TIME)
 @JsonFormat(pattern = Date...]]></description><category></category></item><item><title><![CDATA[通过Base64编码的长度计算文件大小]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113897001</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113897001</guid><author>Mirage__</author><pubDate>Sat, 20 Feb 2021 10:31:00 +0800</pubDate><description><![CDATA[前言

在一些业务场景下，我们会将文件或图片转化为Base64编码进制传输，而业务中有需要对文件的大小进行限制，如何在不进行解码的情况下判断出文件的大小呢。

编码格式

Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24)，之后在6位的前面补两个0，形成8位一个字节的形式。
如果剩下的字符不足3个字节，则用0填充，输出字符使用'='，因此编码后输出的文本...]]></description><category></category></item><item><title><![CDATA[Docker安装redis与布隆过滤器bloomfilter插件]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113794165</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113794165</guid><author>Mirage__</author><pubDate>Thu, 11 Feb 2021 23:29:00 +0800</pubDate><description><![CDATA[目标

想使用Docker安装的redis添加bloomfilter插件，以实现一个布隆过滤器，经过搜索发现docker中有整合的redis与bloomfilter插件的镜像。直接使用redislabs/rebloom镜像。

安装


docker拉取镜像

docker pull redislabs/rebloom

运行容器

docker run -p 6379:6379 --...]]></description><category></category></item><item><title><![CDATA[Docker中RabbitMQ安装延迟队列插件rabbitmq_delayed_message_exchange]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113792189</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113792189</guid><author>Mirage__</author><pubDate>Thu, 11 Feb 2021 17:16:00 +0800</pubDate><description><![CDATA[下载rabbitmq_delayed_message_exchange插件


https://www.rabbitmq.com/community-plugins.html


在页面中搜索rabbitmq_delayed_message_exchange


下载对应版本的.ez格式的插件到本地


将插件上传至Linux服务器

可以使用rz命令或者Xftp软件将插件上传 (这里是...]]></description><category></category></item><item><title><![CDATA[CentOS 安装lrzsz实现便捷的文件上传]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113792188</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113792188</guid><author>Mirage__</author><pubDate>Thu, 11 Feb 2021 16:53:00 +0800</pubDate><description><![CDATA[安装lrzsz
yum -y install lrzsz
上传文件
rz
下载文件
sz

]]></description><category></category></item><item><title><![CDATA[Vue 监听属性Watch]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113734189</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113734189</guid><author>Mirage__</author><pubDate>Mon, 18 Jan 2021 16:01:00 +0800</pubDate><description><![CDATA[监听属性Watch
watch的作用可以监控一个值的变换，并调用因为变化需要执行的方法。可以通过watch动态改变关联的状态。
data:{
     a:1,
     b:{
         c:1
     }
 },
 watch:{
     a(val, oldVal){//普通的watch监听
         console.log("a: "+val, oldVal)...]]></description><category></category></item><item><title><![CDATA[SpringBoot中引入Activiti并完成基本业务流程]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113734190</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113734190</guid><author>Mirage__</author><pubDate>Fri, 15 Jan 2021 09:09:00 +0800</pubDate><description><![CDATA[Activiti
DB中各个表的作用
Activiti的后台是有数据库的支持，所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片，规则，等等)。
ACT_RU_*: 'RU'表示runtime。 这些运行时的表，包含流程实例，任务，变量，异...]]></description><category></category></item><item><title><![CDATA[java.lang.IllegalStateException: Found multiple @SpringBootConfiguration annotated classes]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113734191</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113734191</guid><author>Mirage__</author><pubDate>Sat, 19 Dec 2020 17:41:00 +0800</pubDate><description><![CDATA[在SpringBoot项目上进行单元测试的时候报了这个错误,这个异常的原因是因为项目中有两个声明了SpringBootApplication的启动类,单元测试类不知道使用哪个才报的异常.
而我出现这个异常的原因是因为使用的是公司封装的jar包,jar包里引用了两个启动类.
解决办法就是在单元测试类上的**SpringBootTest"注解上声明使用哪个启动类
@SpringBootTes...]]></description><category></category></item><item><title><![CDATA[Gateway中引入Sentinel基于api分组限流]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113734187</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113734187</guid><author>Mirage__</author><pubDate>Tue, 01 Dec 2020 00:01:00 +0800</pubDate><description><![CDATA[编写配置类
import com.alibaba.csp.sentinel.adapter.gateway.common.SentinelGatewayConstants;
import com.alibaba.csp.sentinel.adapter.gateway.common.api.ApiDefinition;
import com.alibaba.csp.sentinel.ad...]]></description><category></category></item><item><title><![CDATA[Gateway中引入Sentinel进行路由限流]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113734186</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113734186</guid><author>Mirage__</author><pubDate>Mon, 30 Nov 2020 23:52:00 +0800</pubDate><description><![CDATA[依赖引入
&lt;dependency&gt;
            &lt;groupId&gt;com.alibaba.csp&lt;/groupId&gt;
            &lt;artifactId&gt;sentinel-spring-cloud-gateway-adapter&lt;/artifactId&gt;
            &lt;version&g...]]></description><category></category></item><item><title><![CDATA[Vue router中携带参数与获取参数]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113734185</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113734185</guid><author>Mirage__</author><pubDate>Sun, 29 Nov 2020 19:48:00 +0800</pubDate><description><![CDATA[Vue路由路由参数传递的两种方式

Query方式
Query方式即是url参数，例如/login?id=1
&lt;router-link :to="{ name:'login',query:{id:1} }"&gt;登录&lt;/router-link&gt;

this.$router.push({
         path: '/login',
         query:...]]></description><category></category></item><item><title><![CDATA[Vue项目中使用axios发送ajax请求]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113734184</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113734184</guid><author>Mirage__</author><pubDate>Sun, 29 Nov 2020 16:53:00 +0800</pubDate><description><![CDATA[首先安装axios
npm install axios -S
在main.js中引入
import axios from 'axios'
Vue.prototype.$axios = axios
发送Get请求
this.$axios.get('/user?ID=12345')
  .then(function (response) {
    console.log(response)...]]></description><category></category></item><item><title><![CDATA[Vant UI 修改NavBar的颜色]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113734183</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113734183</guid><author>Mirage__</author><pubDate>Sun, 29 Nov 2020 16:44:00 +0800</pubDate><description><![CDATA[Vant UI 修改NavBar的颜色
&lt;style lang="css" scoped&gt;
         标题颜色
	/deep/ .van-ellipsis {
		color: #EE0A24;
	 } 

	/deep/ .van-nav-bar .van-icon {
		color: #EF1726;
	}

	/deep/ .van-nav-bar__text...]]></description><category></category></item><item><title><![CDATA[SpringBoot允许跨域访问]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113734182</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113734182</guid><author>Mirage__</author><pubDate>Sat, 28 Nov 2020 16:45:00 +0800</pubDate><description><![CDATA[SpringBoot允许跨域访问
添加配置类
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config...]]></description><category></category></item><item><title><![CDATA[Eratosthenes筛法 快速求素数]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/109684209</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/109684209</guid><author>Mirage__</author><pubDate>Fri, 13 Nov 2020 23:04:00 +0800</pubDate><description><![CDATA[Eratosthenes筛法，快速求素数。
时间复杂度 O(nlogn)。

思想

对于每个不超过n的非负整数p，删除2p，3p，4p，…，当处理完所有数后，还没有被删除的就是素数。

代码

#include &lt;iostream&gt;
#include &lt;ctime&gt;
using namespace std;

/**
 * Eratosthenes筛法，求1~n以内的素数
 */
int* Eratosthenes(int n) {
    int *vis = new int[n]]></description><category></category></item><item><title><![CDATA[第九届蓝桥杯国赛 题4 调手表]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/109682129</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/109682129</guid><author>Mirage__</author><pubDate>Fri, 13 Nov 2020 20:51:09 +0800</pubDate><description><![CDATA[第九届蓝桥杯国赛 题4 调手表

题目

标题：调手表
小明买了块高端大气上档次的电子手表，他正准备调时间呢。
在 M78 星云，时间的计量单位和地球上不同，M78 星云的一个小时有 n 分钟。
大家都知道，手表只有一个按钮可以把当前的数加一。在调分钟的时候，如果当前显示的数是 0 ，那么按一下按钮就会变成 1，再按一次变成 2 。如果当前的数是 n - 1，按一次后会变成 0 。
作为强迫症患者，小明一定要把手表的时间调对。如果手表上的时间比当前时间多1，则要按 n - 1 次加一按钮才能调回正确时间。
]]></description><category></category></item><item><title><![CDATA[LowBit原理实现格雷码的生成]]></title><link>https://blog.youkuaiyun.com/Mirage__/article/details/113410137</link><guid>https://blog.youkuaiyun.com/Mirage__/article/details/113410137</guid><author>Mirage__</author><pubDate>Fri, 13 Nov 2020 20:16:00 +0800</pubDate><description><![CDATA[第九届蓝桥杯国赛 题3

标题：格雷码
格雷码是以n位的二进制来表示数。
与普通的二进制表示不同的是，它要求相邻两个数字只能有1个数位不同。
首尾两个数字也要求只有1位之差。
有很多算法来生成格雷码。以下是较常见的一种：
从编码全0开始生成。
当产生第奇数个数时，只把当前数字最末位改变(0变1，1变0)
当产生第偶数个数时，先找到最右边的一个1，把它左边的数字改变。
用这个规则产生的4位...]]></description><category></category></item></channel></rss>