<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[vicoqi的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/vicoqi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; vicoqi]]></copyright><item><title><![CDATA[Mysql 索引的原理、结构、使用，超干货]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/115431370</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/115431370</guid><author>vicoqi</author><pubDate>Tue, 06 Apr 2021 12:02:44 +0800</pubDate><description><![CDATA[前言

MySQL支持诸多存储引擎，而各种存储引擎对索引的支持也各不相同，因此MySQL数据库支持多种索引类型，如BTree索引，哈希索引，全文索引等等。为了避免混乱，本文将只关注于BTree索引，因为这是平常使用MySQL时主要打交道的索引，至于哈希索引和全文索引本文暂不讨论。

本文主要从索引的原理、算法结构、各种索引存储类型进行介绍，及为什么选择B+Tree。

数据结构

索引的本质

MySQL官方对索引的定义为：索引（Index）是帮助MySQL高效获取数据的数据结构。提取句子主干，就可以得到索]]></description><category></category></item><item><title><![CDATA[mysql 什么时候加锁呢]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/115288261</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/115288261</guid><author>vicoqi</author><pubDate>Mon, 29 Mar 2021 00:04:30 +0800</pubDate><description><![CDATA[前言

相信大家对mysql 语法有个简单的运用了，知道了事务特性ACID，知道事务隔离级别，知道MVVC，知道了索引结构。但是知道了这些应该还是不知道为什么查询这么慢，为什么产生了死锁，为什么索引没有起作用吧。

介绍锁

关于锁，其实有好多，不同存储引擎支持的锁还不一样。

MyISAM：

注：不支持事务操作、支持外键

1）表级别：

MySQL表级锁有两种模式：表共享读锁（Table Read Lock）和表独占写锁（Table Write Lock）。什么意思呢，就是说对MyISAM表进行读操作]]></description><category></category></item><item><title><![CDATA[泛型的高级运用，代码重构必须要了解的技巧]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/109773834</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/109773834</guid><author>vicoqi</author><pubDate>Thu, 19 Nov 2020 14:29:09 +0800</pubDate><description><![CDATA[泛型的灵活运用，代码重构必须要了解的奇淫技巧
前言
泛型相信大家都不陌生，经常都会用到，像在一些集合类啊，一些开源框架啊，这种东西随处可见，如果不能好好理解的话，看起源码来也会增加了一点儿复杂度。
泛型的好处，扩展性强，低耦合业务内容，大幅度的减少重复代码。
本篇文章，基于对泛型有一定了解，想更进一步运用的朋友。
泛型的运用
场景一
当我们写了一个采用泛型的类，但是怎么获取到这个类上的泛型呢，直接 run 一段简短的代码看下。
/**
 * @author: wangqp
 * @create: 2020-]]></description><category></category></item><item><title><![CDATA[RocketMQ 一键部署能力，亲自搭建部署，超详细]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/108995780</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/108995780</guid><author>vicoqi</author><pubDate>Mon, 16 Nov 2020 17:10:09 +0800</pubDate><description><![CDATA[RocketMQ 一键部署能力

前言

   RocketMQ 越来越流行，强大的消息堆积能力，消息并发能力。但是RocketMQ自带的东西比较多，涉及rmqnamesrv，rmqbroker，如果需要界面可视化展示的话，还需要部署console控制台。所以希望通过docker compose 服务编排的能力实现这个三个组件的一键部署能力。

环境：

   安装有docker 的服务器环境或者本机环境。



一、docker-compose 文件

这个文件是核心，靠docker c...]]></description><category></category></item><item><title><![CDATA[面试，寻找最长的回文子串，典型动态规划]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/109721011</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/109721011</guid><author>vicoqi</author><pubDate>Mon, 16 Nov 2020 15:59:52 +0800</pubDate><description><![CDATA[最长回文子串，典型动态规划问题
这是  LeetCode 05. 最长回文子串 用动态规划的做法和讲解
请实现个函数，给定一个字符串 s，找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1：
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2：
输入: "cbbd"
输出: "bb"

思考
回文串：具有左右对称的字符串
那么是否可以认为这个字符串成立的前提是子字符串一定是回文的，题目是求最长，那么是否我们可以从已经成立的回文串中找到最]]></description><category></category></item><item><title><![CDATA[面试，求数组中哪两个数的和为指定值，时间复杂度 O(n)]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/109678930</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/109678930</guid><author>vicoqi</author><pubDate>Fri, 13 Nov 2020 17:41:03 +0800</pubDate><description><![CDATA[LeetCode 01.两数之和
LeetCode 01.两数之和
给定一个整数数组 nums 和一个目标值 target，请你在该数组中找出和为目标值的那 两个 整数，并返回他们的数组下标。
示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

分析
通常解法估计就是两个for循环，直到找到两个数和等于 target 的值；找到两个值的和等于目标值。
但是这种解法的时间复杂就是 O(]]></description><category></category></item><item><title><![CDATA[借用 github action ，不用自己买服务器 ，香]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/109647681</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/109647681</guid><author>vicoqi</author><pubDate>Thu, 12 Nov 2020 17:10:25 +0800</pubDate><description><![CDATA[香 –  不用自己买服务器，借用  github action
前言
一直想做个信息提醒自己的东西，因为平时自己可能初心或者有点儿忙。又要上班又要炒股又要买卖基金，下雨提醒带伞，又要关心女票，哎，生活不易啊。但是自己买云服务器，只是做个通知。。。这也太贵了，难道没有其它办法吗。最后果然被我找到办法了。
介绍
身为搬砖工，咱们肯定很熟悉 GitHub，但是咱们应该只是做下远程仓库或者看下别人优秀的代码。其实后面GitHub慢慢发展了很多东西，其中就引入了CI/CD 的流程，这样咱们可以利用它的一些特性白嫖一些]]></description><category></category></item><item><title><![CDATA[进程间通信方式 -- 层层讲解]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/109487692</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/109487692</guid><author>vicoqi</author><pubDate>Wed, 04 Nov 2020 14:11:29 +0800</pubDate><description><![CDATA[进程间通信
下面的内容主要来自小林coding。
每个进程的用户地址空间都是独立的，一般而言是不能互相访问的，但内核空间是每个进程都共享的，所以进程之间要通信必须通过内核。

Linux 内核提供了不少进程间通信的机制，我们来一起瞧瞧有哪些？
管道
如果你学过 Linux 命令，那你肯定很熟悉「|」这个竖线。
ps auxf | grep mysql

上面命令行里的「|」竖线就是一个管道，它的功能是将前一个命令（ps auxf）的输出，作为后一个命令（grep mysql）的输入，从这功能描述，可以看出管]]></description><category></category></item><item><title><![CDATA[Redis 操作多个数据库的配置用法]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/105968022</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/105968022</guid><author>vicoqi</author><pubDate>Sat, 05 Sep 2020 01:21:40 +0800</pubDate><description><![CDATA[redis 默认有 0-16 号数据库，一般我们操作redis时，用的是 0号数据库，但是有时我们的项目想同时操作多个数据库，又不想每次访问其它库数据时select 切换数据库，这样太繁琐。因此我们需要配置多个jedis client，但是jedis是容易阻塞，效率不太好，所以我这边采用了 Lettuce client，它是 reactive 连接，效率比较高。






import io...]]></description><category></category></item><item><title><![CDATA[Spring 循环依赖 - 揭开源码原来没那么神秘]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/107458728</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/107458728</guid><author>vicoqi</author><pubDate>Mon, 20 Jul 2020 15:34:34 +0800</pubDate><description><![CDATA[Spring 循环依赖源码解析
前言
自己也经常看Spring源码，但是当初看的时候没有太过关注Spring 对于循环依赖这部分的解决方法，偶然看到网上几篇讲解的Spring 怎么解决循环依赖的解释，感觉自己还是没看太懂，所以自己动手探索下Spring 怎么解决的。
问题
首先我们需要知道什么叫做循环依赖，它是怎么产生的？
其实产生的原因是怪我们太懒了，靠Spring做了很多事情，包括对象的创建，对象的注入（IOC,DI）,以至于帮我们注入的时候，发现实例A需要引用对象B的实例，但是实例B里又引用对象A的实]]></description><category></category></item><item><title><![CDATA[创建链表及逆序链表]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/106997578</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/106997578</guid><author>vicoqi</author><pubDate>Sun, 28 Jun 2020 14:06:10 +0800</pubDate><description><![CDATA[创建链表及逆序链表
前言
最近在刷题，就自己操作了，顺便记录下来。
代码
直接上代码，分为创建链表和反转链表部分，欢迎大家一起讨论。
package com.vic.algorithm;

import lombok.Getter;
import lombok.Setter;
import org.omg.CORBA.NO_IMPLEMENT;

/**
 * @description: 如何实现一个高效的单向链表逆序输出？
 * @author: wangqp
 * @create: 2020-06-18]]></description><category></category></item><item><title><![CDATA[RxJava 用法(一)]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/105472939</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/105472939</guid><author>vicoqi</author><pubDate>Sun, 19 Apr 2020 15:30:54 +0800</pubDate><description><![CDATA[RxJava 用法(一)
一、响应式编程库的选择
我先后接触过 RxJava1.X ，RxJava2.X，Reactor,但是我最后选择了RxJava2.X。
原因如下：
1）RxJava1.X 虽然有很多公司已经在用了，但是已经很有年代了，而且内部东西太多，好多无用的东西，而且和RxJava2.X兼容度不高。
2）Reactor 这个我接触比较的时间长些，因为它是spring 出的，并且比较新，...]]></description><category></category></item><item><title><![CDATA[运用java爬虫和python做词云图]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/80432553</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/80432553</guid><author>vicoqi</author><pubDate>Thu, 24 May 2018 12:54:01 +0800</pubDate><description><![CDATA[前言：        最近有点时间，就写个东西玩玩，就是分析电影评论做成词云图。这次没有采用python去爬取电影评论，而是采用了java中的多线程和线程池去爬取电影评论，但是用评论做词云图使用python写的。如果不喜欢用java做爬虫的朋友，也可以换成用python语言写，过程不是很重要，看自己喜好。环境：        windows 10         jdk 1.7        py...]]></description><category></category></item><item><title><![CDATA[win10 VMware 虚拟机 实现桥接模式 上网]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/79951236</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/79951236</guid><author>vicoqi</author><pubDate>Sun, 15 Apr 2018 18:44:56 +0800</pubDate><description><![CDATA[前言：    可能很多朋友想用VMware在自己的windows系统上体验下其它操作系统或者运行某些只能在Linux上的软件。但是可能自己买阿里云或者腾讯云感觉划不来。下面我来简单的来告诉大家，运用VMware的桥接模式，可以让大家像拥有另外一台不同操作系统的电脑一样在局域网中。同样可以来上网，可以和局域网中的其他机器一样通信，甚至可以暴露ip与端口到公网中，这样其他机器或者网页等也能访问它。环境...]]></description><category></category></item><item><title><![CDATA[git 的常用命令与用法，团队常用流程]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/79804935</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/79804935</guid><author>vicoqi</author><pubDate>Tue, 03 Apr 2018 17:09:58 +0800</pubDate><description><![CDATA[请大家转载的话，请知乎我一声，并标明出处，谢谢。今天有点空，刚刚写完了，上一个博客，现在看看还是时间就谢谢一个关于git的用法的博客吧。我分了五个小点。请参考下面的例子，都是我亲测的。一、第一次下载git代码或者分支。    例如我们需要下载这个分支下的dev分支的代码。ssh://git@10.9.236.75:10022/zhenghx/chan-pc-web-base-mgmt.git我们可...]]></description><category></category></item><item><title><![CDATA[springmvc源码分析原理及简单实现]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/79804178</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/79804178</guid><author>vicoqi</author><pubDate>Tue, 03 Apr 2018 15:31:35 +0800</pubDate><description><![CDATA[现在我主要分四步走。一、我们先来看下springmvc的配置与启动流程。这是spring与springmvc框架的web应用的web.xml简单配置。虽然这篇博客讲的是springmvc但是，它的启动流程还是离不开Spring的，所以我先简单提下Spring的启动流程，后期会写另一篇博客详细的说一说Spring的，请大家见谅。首先我们看到在这个web.xml中配置了&amp;lt;listener&amp;gt;...]]></description><category></category></item><item><title><![CDATA[ThreadLocalMap里弱引用]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/79743112</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/79743112</guid><author>vicoqi</author><pubDate>Thu, 29 Mar 2018 17:20:56 +0800</pubDate><description><![CDATA[要回答ThreadLocalMap里弱引用，我们需要弄清者三个问题第一个问题，我们先来看看引用相关的。其实Java中一直有争论关于值传递与引用传递（就我看到的百度是这样的）。我们先来看看代码。public static void main(String[] args){
	//测试引用传递
	Map&amp;lt;String,String&amp;gt; a = new HashMap&amp;lt;&amp;gt;();
	...]]></description><category></category></item><item><title><![CDATA[linux 负载均衡 nginx反向代理 tomcat web服务器]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/53696890</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/53696890</guid><author>vicoqi</author><pubDate>Fri, 16 Dec 2016 19:07:36 +0800</pubDate><description><![CDATA[我的实验环境：
Ubuntu 14  64位
tomcat 6 
jdk1.7
首先我们先介绍负载均衡：负载均衡（Load Balance）是分布式系统架构设计中必须考虑的因素之一，它通常是指，将请求/数据【均匀】分摊到多个操作单元上执行。（百度百科）其实说白了就是均衡分发请求，减轻服务器的压力，让多个服务器同时按一定策略的处理用户请求。优点：提高服务器工作效率，减轻服务器压力。提高处理响应速度，分]]></description><category></category></item><item><title><![CDATA[mysql 原理及配置优化]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/53506331</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/53506331</guid><author>vicoqi</author><pubDate>Wed, 07 Dec 2016 15:08:55 +0800</pubDate><description><![CDATA[假设我们用文本存储的数据和数据库里一样的数据结构并且遵循三范式，那数据库相比文本存储有什么大的优势呢。 
有了这个疑问后我们来简单探究下mysql数据库的原理，简单了解原理后我们在学习下配置的简单优化。 
我们先看下mysql的结构图 


1.最上层是一些客户端和连接服务，包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相]]></description><category></category></item><item><title><![CDATA[ant 构建的依赖项目 kettle项目 源码导入eclipse]]></title><link>https://blog.youkuaiyun.com/vicoqi/article/details/53471589</link><guid>https://blog.youkuaiyun.com/vicoqi/article/details/53471589</guid><author>vicoqi</author><pubDate>Mon, 05 Dec 2016 23:35:15 +0800</pubDate><description><![CDATA[最近在研究kettle，这个是比较强大的ETL 工具。是用java写的，而且是开源的，有个可视化的配置窗口。然而kettle 使用ant 构建的（我们一般是用的是maven），并且是个子项目互相依赖的项目，所以写一篇我自己用eclipse运行kettle的经历。首先我们需要去官网上下载kettle桌面工具的压缩吧，直接解压就能用了，点击Spoon.bat 就可以运行了。但是我们需要注意版本，因为这个]]></description><category></category></item></channel></rss>