<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Mervyn的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Rec_Mervyn</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Rec_Mervyn]]></copyright><item><title><![CDATA[JUC学习笔记]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/133676417</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/133676417</guid><author>Rec_Mervyn</author><pubDate>Sun, 08 Oct 2023 12:03:08 +0800</pubDate><description><![CDATA[本身是一种抽象的概念并不真实存在，它仅仅描述的是一组约定或规范，通过这组规范定义了程序中(尤其是多线程)各个变量的读写访问方式并决定一个线程对共享变量的写入何时以及如何变成对另一个线程可见，关键技术点都是围绕多线程的原子性、可见性和有序性展开的。它要做的事情是：让一组线程到达一个屏障（也可以叫同步点）时被阻塞，直到最后一个线程到达屏障时，屏障才会开门，所有被屏障拦截的线程才会继续干活。当一个线程在获取锁的时候，发现锁被其他线程占有，不马上阻塞自己，在不放弃CPU使用权的情况下，多次尝试获取。]]></description><category></category></item><item><title><![CDATA[MySQL笔记]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/129260660</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/129260660</guid><author>Rec_Mervyn</author><pubDate>Tue, 28 Feb 2023 14:15:59 +0800</pubDate><description><![CDATA[MySQL进阶部分个人笔记]]></description><category></category></item><item><title><![CDATA[Docker部署Nginx笔记]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/128856816</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/128856816</guid><author>Rec_Mervyn</author><pubDate>Thu, 02 Feb 2023 20:23:41 +0800</pubDate><description><![CDATA[Docker部署Nginx笔记]]></description><category></category></item><item><title><![CDATA[Vue使用beforeRouteUpdate和beforeRouteLeave解决路由前置钩子需要与实例通信的问题]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/123826674</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/123826674</guid><author>Rec_Mervyn</author><pubDate>Tue, 29 Mar 2022 17:13:00 +0800</pubDate><description><![CDATA[使用beforeRouteUpdate和beforeRouteLeave解决路由前置钩子需要与实例通信的问题
前景提要
近期项目有个需求：为了增加用户粘性，增加菜单要可配置成需要登陆后才允许访问的功能。
最初的想法：在路由前置钩子中，判断目标路由是否需要登陆，不需要就直接跳转，否则弹出登录对话框。
然后问题来了：当初写登录的时候，没有写成一个组件，仅仅是常驻组件header中的一个对话框，通过一个布尔loginFlag判断是否打开对话框。然而，在全局前置钩子中无法访问组件实例this，无法通过事件总线与对话]]></description><category></category></item><item><title><![CDATA[Vue路由添加公共参数]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/123747313</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/123747313</guid><author>Rec_Mervyn</author><pubDate>Fri, 25 Mar 2022 22:38:32 +0800</pubDate><description><![CDATA[Vue路由添加公共参数
如Vue-Router介绍所说，router.beforeEach是路由跳转前的钩子，需要增加公共参数可以在这里处理。

In that case, you must call next exactly once in any given pass through a navigation guard.

router.beforeEach中第三个参数next，必须在每一种给定的导航中严格执行一次。
执行分两种情况

next()，这种情况不再执行前置钩子
next('/')，这种情]]></description><category></category></item><item><title><![CDATA[事件总线，Vue兄弟组件通信、传值]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/123747040</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/123747040</guid><author>Rec_Mervyn</author><pubDate>Fri, 25 Mar 2022 22:23:44 +0800</pubDate><description><![CDATA[事件总线，Vue兄弟组件通信、传值
父子组件
在Vue中，父子组件通信、传值是比较方便的。
通过$emit和@事件名即可完成通信
&lt;!-- 子组件 --&gt;
&lt;template&gt;
	&lt;button @click="sendToParent"&gt;
        向父组件传值
    &lt;/button&gt;
&lt;/template&gt;
&lt;script&gt;
export default{
    name: 'son',
    data(){
    ]]></description><category></category></item><item><title><![CDATA[Windows、Linux定时备份Mysql数据库]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/122954429</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/122954429</guid><author>Rec_Mervyn</author><pubDate>Tue, 15 Feb 2022 23:46:12 +0800</pubDate><description><![CDATA[文章目录备份脚本定时任务LinuxWindows删除过时备份文件LinuxWindows参考资料
备份脚本
之前写过一篇Mysql备份与还原命令，其中今天的备份脚本就是用的这篇文章提到的mysqldump。
mysqldump是mysql自带的转储数据库以进行备份的客户端工具。常用于备份数据库
# mysqldump -h主机 -P端口 -u用户 -p密码 [选项] &gt; 转储目标文件
mysqldump -h127.0.0.1 -P3306 -uroot -p --all-databases &gt;]]></description><category></category></item><item><title><![CDATA[iView upload组件手动上传、图片预览]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/120656575</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/120656575</guid><author>Rec_Mervyn</author><pubDate>Fri, 08 Oct 2021 17:43:33 +0800</pubDate><description><![CDATA[iView upload组件手动上传、图片预览
手动上传
iview文档中并没有实际的上传操作

实现
&lt;Upload
        ref="upload"
        :format="['jpg','jpeg','png']"
        :before-upload="handleUpload"
        type="drag"
        :show-upload-list="false"
        :action="actionUrl"
        :data]]></description><category></category></item><item><title><![CDATA[基于OAuth2查询在线用户及强退用户]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/119563919</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/119563919</guid><author>Rec_Mervyn</author><pubDate>Tue, 10 Aug 2021 10:25:32 +0800</pubDate><description><![CDATA[基于OAuth2查询在线用户及强退用户
场景
最近工作的项目需要做认证授权、限制授权登录用户。
需要统计当前在线用户数，及强退指定用户。
效果

实现
获取所有在线用户
登录后，OAuth2会向Redis存放用户的token信息，键是token值，值是OAuth2的认证对象。
实现思路：从Redis中获取所有的token值，及通过RedisTokenStore获取到OAuth2的认证对象。
/**
 * VO
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
]]></description><category></category></item><item><title><![CDATA[Feign 传输 MultipartFile 的一些问题]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/117127791</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/117127791</guid><author>Rec_Mervyn</author><pubDate>Fri, 21 May 2021 16:52:31 +0800</pubDate><description><![CDATA[Feign 传输 MultipartFile 的一些问题
File 转 MultipartFile
pom.xml
&lt;!-- https://mvnrepository.com/artifact/org.springframework/spring-mock --&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.springframework&lt;/groupId&gt;
&lt;artifactId&gt;spring-mock&lt;/artifactId&g]]></description><category></category></item><item><title><![CDATA[用反射实现实体类数据导出excel]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/115460010</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/115460010</guid><author>Rec_Mervyn</author><pubDate>Tue, 06 Apr 2021 14:23:59 +0800</pubDate><description><![CDATA[// 参数解释：
// 1. title, Map&lt;Integer, String[]&gt;
//	1.1 key - Integer, 列数
//	1.2 value - String[] 容量为2的数组，0位置存储实体类属性名，1位置存储excel中该列标题
// 2. data, 需要导出的数据
// 3. clz, 需要导出的实体类的class
// 4. 文件名
public &lt;T&gt; HSSFWorkbook fillExcel(Map&lt;Integer, String[]]]></description><category></category></item><item><title><![CDATA[位运算 n & (n-1)、Leetcode231、面试题 05.06]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/109372059</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/109372059</guid><author>Rec_Mervyn</author><pubDate>Thu, 29 Oct 2020 22:04:19 +0800</pubDate><description><![CDATA[位运算 n &amp; (n-1)
作用
n &amp; (n-1)作用：将最低为的1改为0。
举例
  6  110	//原始数
&amp; 5  101
--------
  4  100	//6 最低位 1 改为 0
&amp; 3  011
--------
  0  000	//4 最低位 1 改为 0

应用
判断一个正整数是否为2的幂
如果(n &amp; (n-1)) == 0则这个正整数为2的幂。
解释
2的幂的二进制特点：有且只有一个1。
如果一个正整数二进制最低位1改为0后，没有其他的]]></description><category></category></item><item><title><![CDATA[Centos7 安装 RabbitMQ]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/109115465</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/109115465</guid><author>Rec_Mervyn</author><pubDate>Fri, 16 Oct 2020 14:09:57 +0800</pubDate><description><![CDATA[Centos7 安装 RabbitMQ
安装


查看RabbitMQ版本对应eralng版本
RabbitMQ Erlang Version Requirements


下载对应erlang版本
rabbitmq / erlang-rpm
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v23.1.1/erlang-23.1.1-1.el7.x86_64.rpm



下载RabbitMQ
rabbitmq - releases]]></description><category></category></item><item><title><![CDATA[摩尔投票，leetcode169，leetcode229]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/109000001</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/109000001</guid><author>Rec_Mervyn</author><pubDate>Sat, 10 Oct 2020 16:44:17 +0800</pubDate><description><![CDATA[摩尔投票
初步认识
涉及题目
LeetCode 169 - Majority Element
算法概述
在给定的数组中，找出其中出现次数超过n/2的元素。题目假定一定存在一个元素出现超过n/2次。
思路
每次删除数组中两个不相同的元素，遍历完数组后，剩下的元素一定是出现超过n/2次的元素。

定义候选者cand赋任意值、计数器count初始化为0
遍历数组

如果count值为0，将cand赋值为当前值nums[i]，count赋值为1
如果count值不为0，且当前值nums[i]等于cand的值，则co]]></description><category></category></item><item><title><![CDATA[Floyd判圈算法]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/108993383</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/108993383</guid><author>Rec_Mervyn</author><pubDate>Sat, 10 Oct 2020 11:10:44 +0800</pubDate><description><![CDATA[Floyd判圈算法
算法概述
Floyd 判圈算法（Floyd Cycle Detection Algorithm），又称龟兔赛跑算法（Tortoise and Hare Algorithm）。
是一个可以在有限状态机、迭代函数或者链表上判断是否存在环，求出该环的起点与长度的算法。
思路
设两个指针t和h已不同步伐（t一步h两步）从起点出发，如果存在环，两个指针必有某时刻相遇。
解决问题
是否存在环
设两个指针t和h已不同步伐（t一步h两步）从起点出发：

如果快指针到达了链表尾部，两者都没相遇，则没有环。]]></description><category></category></item><item><title><![CDATA[Java实现WebSSH，自适应宽高、心跳检查、断开自动重连]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/108791576</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/108791576</guid><author>Rec_Mervyn</author><pubDate>Fri, 25 Sep 2020 10:46:31 +0800</pubDate><description><![CDATA[文章目录效果自适应宽高心跳检查断开自动重连关键代码自适应宽高心跳检查断开后自动重连参考资料
基于NoCortY的项目WebSSH修改：

升级xterm到4.x
自适应宽高
心跳检查
断开自动重连

NoCortY的博客：使用纯Java实现一个WebSSH项目
篇幅限制，这里只放出效果及关键代码。完整代码见 mervynlam/Webssh-Java - Github
效果
自适应宽高

心跳检查

断开自动重连

关键代码
自适应宽高
前端
//terminal 大小改变
function resizeT]]></description><category></category></item><item><title><![CDATA[Windows下更新 Mysql5.6 到 5.7]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/108605005</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/108605005</guid><author>Rec_Mervyn</author><pubDate>Tue, 15 Sep 2020 17:51:46 +0800</pubDate><description><![CDATA[升级步骤


下载Mysql5.7


备份旧数据库
mysqldump -uroot -p123456 --all-databases &gt; all_db.sql



停止服务
net stop Mysql
# Mysql 替换为电脑中的服务名
# 等待出现 MySQL 服务已成功停止。



删除服务
在旧数据库bin目录下打开命令行
mysqld --remove Mysql
# Mysql 替换为电脑中的服务名
# 等待出现 Service successfully removed.



解]]></description><category></category></item><item><title><![CDATA[使用 PicGo + Github 为Typora 提供图床]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/108145493</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/108145493</guid><author>Rec_Mervyn</author><pubDate>Fri, 21 Aug 2020 13:57:08 +0800</pubDate><description><![CDATA[使用 PicGo + Github 为Typora 提供图床
Typora 是一款非常好用的跨平台“所见即所得”的 Markdown 编辑器。一直使用 Typora 编写 Markdown 文本：博客、笔记之类的。
但是在写笔记、博客时，使用的图片都是本地路径，上传到 Github 后，会有图片无法显示的问题。
所以今天学习一下使用 PicGO + Github 建立自己的图床。
软件下载及安装
Nodejs
Typora
PicGo
创建图片仓库
Github 中创建一个用于存放图片的库。
创建一个Tok]]></description><category></category></item><item><title><![CDATA[Mysql备份与还原命令]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/108009712</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/108009712</guid><author>Rec_Mervyn</author><pubDate>Fri, 14 Aug 2020 17:03:16 +0800</pubDate><description><![CDATA[Mysql备份与还原命令

备份命令：mysqldump -h127.0.0.1 -P3306 -uroot -p123456 mytable &gt; mytable.sql


还原命令：mysql -h127.0.0.1 -P3306 -uroot -p123456 mytable &lt; mytable.sql



-h主机
-P端口
-u用户名
-p密码
mytable需要备份的库
mytable.sql备份的文件名
Java 实现
//备份
public void backup() {
  ]]></description><category></category></item><item><title><![CDATA[展开、收起过高div]]></title><link>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/107670153</link><guid>https://blog.youkuaiyun.com/Rec_Mervyn/article/details/107670153</guid><author>Rec_Mervyn</author><pubDate>Wed, 29 Jul 2020 17:08:05 +0800</pubDate><description><![CDATA[&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;&lt;/title&gt;
    &lt;style type="text/css"&gt;
        .contentDiv {
            width: 300px;
        }
        .hideDiv {
            display: -webkit-box;
            -webkit-box-orient.]]></description><category></category></item></channel></rss>