<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mschessy的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mschessy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mschessy]]></copyright><item><title><![CDATA[elasticsearch源码启动全记录]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/120697808</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/120697808</guid><author>mschessy</author><pubDate>Mon, 11 Oct 2021 12:57:19 +0800</pubDate><description><![CDATA[花了几天时间，终于完成了Elasticsearch的源码环境搭建和启动

感谢小旋峰的博客 https://blog.youkuaiyun.com/wwwdc1012/article/details/81978966
操作系统：win11
Elasticsearch 源码版本: 6.3.2
准备好装好 git 的 intellij idea

下载项目
首先 git clone https://github.com/elastic/elasticsearch.git
这一步花了很久，通过git bash每次下载一半就中]]></description><category></category></item><item><title><![CDATA[约瑟夫环问题的数学解法]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/117886666</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/117886666</guid><author>mschessy</author><pubDate>Sun, 13 Jun 2021 22:57:30 +0800</pubDate><description><![CDATA[问题描述：
已知n个人（以编号1，2，3…n分别表示）围坐在一张圆桌周围。从编号为1的人开始报数，数到m的那个人出列；他的下一个人又从1开始报数，数到m的那个人又出列；依此规律重复下去，直到圆桌周围的人全部出列。
当m和n不太大时，可以构造循环链表模拟，实现简单，容易理解，但是时间复杂度较高。这里主要研究一下数学解法（比较绕，我花了很久才想明白）。
以下是转载自别人博客，对我有帮助的一篇讲解：
原文 https://www.cnblogs.com/cmmdc/p/7216726.html
为了简化出列的过程]]></description><category></category></item><item><title><![CDATA[intellij idea serializable 自动添加序列号]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/117217313</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/117217313</guid><author>mschessy</author><pubDate>Mon, 24 May 2021 09:59:17 +0800</pubDate><description><![CDATA[idea是企业版
file -&gt; settings -&gt; editor -&gt; inspections

勾选该选项，apply，可能要重启idea
光标放在类名上，再次按Alt+Enter键，这个时候可以看到"Add serialVersionUID field"提示信息

]]></description><category></category></item><item><title><![CDATA[Linux(fedora)下安装，配置zookeeper, kafka笔记]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/114458281</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/114458281</guid><author>mschessy</author><pubDate>Sat, 06 Mar 2021 21:51:44 +0800</pubDate><description><![CDATA[1. 安装zookeeper
1.1 安装jdk
需要配置好jdk环境，首先去官网下载jdk包：https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
可以使用rpm -qa|grep jdk命令检查是否已经安装了openjdk，如果安装了先卸载。卸载命令  dnf remove java java-1.8.0-openjdk*
解压jdk安装包tar -zxvf jdk-****-linux-x64.tar.gz]]></description><category></category></item><item><title><![CDATA[Linux下安装redis，搭建集群，哨兵笔记]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/114452879</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/114452879</guid><author>mschessy</author><pubDate>Sat, 06 Mar 2021 21:25:20 +0800</pubDate><description><![CDATA[1. Redis的下载，安装
下载：官网https://redis.io/download，下载所需版本tar.gz格式
解压：tar -zvxf redis-5.0.7.tar.gz，通常放在usr/local/redis目录下，可以使用mv /root/redis-5.0.7 /usr/local/redis
命令移动
进入解压后的文件中，可以看到redis的配置文件redis.conf
如果没有配置gcc环境需要先配置gcc yum install gcc-c++
在redis文件夹中执行make命令]]></description><category></category></item><item><title><![CDATA[为什么redis使用跳表而不使用红黑树 原作者回复]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/111936754</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/111936754</guid><author>mschessy</author><pubDate>Tue, 29 Dec 2020 20:38:24 +0800</pubDate><description><![CDATA[There are a few reasons:

They are not very memory intensive. It’s up to you basically. Changing parameters about the probability of a node to have a given number of levels will make then less memory intensive than btrees.
A sorted set is often target of m]]></description><category></category></item><item><title><![CDATA[JVM九种垃圾收集器简单整理比较]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/109681097</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/109681097</guid><author>mschessy</author><pubDate>Thu, 03 Dec 2020 15:58:50 +0800</pubDate><description><![CDATA[Serial：最早的垃圾收集器，新生代，单线程，使用标记-复制算法
SerialOld ：最早的垃圾收集器，老年代，单线程，使用标记-整理算法
parNew : Serial的升级版，新生代，多线程，使用标记-复制算法，目前依然是不少Hot Spot虚拟机服务端的首选收集器，因为只有它能与CMS配合工作
Parallel Scavenge ：新生代，标记-复制算法，多线程，被称为“吞吐量优先收集器”（吞吐量 = 运行用户代码时间 / （运行用户代码时间 + 运行垃圾手机时间）），可以根据系统运行情况自适应.]]></description><category></category></item><item><title><![CDATA[JAVA8 LinkedList 链表源码详细解析]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/110522532</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/110522532</guid><author>mschessy</author><pubDate>Thu, 03 Dec 2020 13:58:57 +0800</pubDate><description><![CDATA[如果做过像uva133这样的约瑟夫环类问题，可以想到最原始的方法就是写一个循环链表，那么能否用Java中自带的LinkedList类解决这个问题呢？比如能否写一个新类继承LinedList，写一个新方法让链表的头尾相连? 大家都知道Java中集合类都继承了Iterator接口，可以用Iterator遍历，但是否知道还有一个Listiterator接口？LinkedList类是否继承了Listiterator接口？如果没有的话又是怎么实现二者的结合的呢？
想到这已经一脸懵逼了，话不多说，show me the]]></description><category></category></item><item><title><![CDATA[Idea下Maven工程，properties变量名与系统变量名冲突 - 一次有趣的Debug]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/110138656</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/110138656</guid><author>mschessy</author><pubDate>Wed, 25 Nov 2020 18:14:27 +0800</pubDate><description><![CDATA[今天学习基于注解的Spring，写了一个简单的基于MySQL的CRUD，运行一直出错，连接不上数据库。
这是改正之前的部分文件，只看连接的部分就可以了，你们能看出来哪里有问题吗？
JdbcConfig类：
public class JdbcConfig {

    @Value("${driver}")
    private String driver;

    @Value("${url}")
    private String url;

    @Value("${jdbc.username}]]></description><category></category></item><item><title><![CDATA[Windows下tomcat和maven安装]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/109703862</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/109703862</guid><author>mschessy</author><pubDate>Sun, 15 Nov 2020 15:03:22 +0800</pubDate><description><![CDATA[先把可能需要的环境准备好
1.Tomcat
官网 http://tomcat.apache.org/
下载Tomcat 7

我选择了免安装的二进制版

下好以后解压，还不知道放在那个路径合适，就解压到桌面上新建的tomcat文件夹下。
解压以后打开，找到bin目录下的startup.bat，双击启动。

如果出现乱码，需要修改conf文件夹里logging.properties文件，用记事本打开，找到
java.util.logging.ConsoleHandler.encoding = utf-8
更改]]></description><category></category></item><item><title><![CDATA[抽丝剥茧 Java多线程面试基础知识汇总（1）]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/109083843</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/109083843</guid><author>mschessy</author><pubDate>Wed, 14 Oct 2020 21:53:11 +0800</pubDate><description><![CDATA[这个部分的知识点太多了，每抽出一条都能无限深入下去，因此只抽出一些要点，便于记忆。
1. 进程，线程 和 协程
保存在硬盘上的程序运行以后，就是一个进程，它可以获得自己独立的内存体，有独立的地址空间，可以说进程是操作系统分配资源的最小单位。一个进程内部有一个或多个线程。线程不拥有系统资源，但可以访问隶属于进程的资源，线程是最小的执行单位。而协程比线程更加轻量级，可以由程序自主控制。
2.并行和并发
并发(Concurrent) 是一段时间内几个程序在宏观意义上同时进行。CPU分成了一些时间片，在这些程序之间]]></description><category></category></item><item><title><![CDATA[转战Linux 重装系统记录 windows - fedora]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/109037269</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/109037269</guid><author>mschessy</author><pubDate>Mon, 12 Oct 2020 21:32:17 +0800</pubDate><description><![CDATA[之前选择ubuntu，遇到各种问题，下了一个大白菜，没什么用，还废了一个U盘。后来在ubuntu官网重新下载镜像文件的时候，发现rufus这个宝贝软件，用它制作启动盘简单又方便。可惜，启动盘也烧好了，bios也设置从U盘启动了，Ubuntu也安装上了，重启以后就是无法引导进入，只好放弃，转战fedora。
fedora就简单多了，下载ios镜像文件 - 烧制启动盘 - 从U盘启动 - 安装。
rufus下载链接：http://rufus.ie/

选好u盘位置，IOS文件，直接START。
Fedora官网]]></description><category></category></item><item><title><![CDATA[Java中前缀树（Trie）的简介与使用  LeetCode 力扣 720 词典中最长的单词]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/106980433</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/106980433</guid><author>mschessy</author><pubDate>Sat, 27 Jun 2020 11:58:34 +0800</pubDate><description><![CDATA[Trie树是一种特殊的N叉树，又称字典树，单词查找树，键树等。一般用于字符串的储存，查找，比较，偶尔也会用于删除。除根节点外，Trie树的每一个节点包含一个字符，每个节点的子节点字符不重复（但不同节点可以有相同的子节点，比如表示字符串“aa”和“ba”）。从根节点到某一节点的路径为该节点对应的字符串，因此每条路径上的字符排列应该是唯一的。
Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销，对字符串的查找通常效率高于哈希表。

画一棵前缀树：

可以看到前缀树的几个要点：

黄色的是根]]></description><category></category></item><item><title><![CDATA[算法竞赛入门经典第11章 最小生成树 Kruskal（克鲁斯卡尔）算法 和 Prim（普利姆）算法 详解及C++实现]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/104645020</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/104645020</guid><author>mschessy</author><pubDate>Thu, 05 Mar 2020 04:28:14 +0800</pubDate><description><![CDATA[考虑几个城市之间需要道路聯通
What is a Spanning Tree?
Given an undirected and connected graph , a spanning tree of the graph  is a tree that spans  (that is, it includes every vertex of ) and is a subgraph of  (eve...]]></description><category></category></item><item><title><![CDATA[算法竞赛入门经典第11章 表达式树]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/104667112</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/104667112</guid><author>mschessy</author><pubDate>Thu, 05 Mar 2020 03:27:04 +0800</pubDate><description><![CDATA[题目：给出一个由数字及’+’，’-’，‘x’，’/’ 以及括号组成的合法算式，将其转化为表达式树。
表达式树的所有树叶都是操作数，非叶子节点都是运算符。由于给出的运算符都是二元运算符，因此这道题得到的树一定是二叉树。可以先寻找“最后计算的运算符”，将这个运算符作为一个结点，然后递归计算运算符左右两个算式，计算结果作为该节点的左右儿子。
直接上代码，需要注意的问题都写在注释里。
#include&l...]]></description><category></category></item><item><title><![CDATA[算法竞赛入门经典第11章 无根树转有根树]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/104666936</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/104666936</guid><author>mschessy</author><pubDate>Thu, 05 Mar 2020 03:01:28 +0800</pubDate><description><![CDATA[题目：输入一个n个结点的无根树的各条边，并指定一个根节点，要求把该树转化为有根树，输出各个节点的父亲编号，n≤106n\leq10 ^6n≤106。
可以把无根树看作无向无环且连通的稀疏图，所要做的就是从指定节点开始，深度搜索遍历所有节点，每次遍历等同于从根节点到叶子节点的过程，遍历过程中经过的节点按照先后保存为父亲节点和子节点。

...]]></description><category></category></item><item><title><![CDATA[简单区间问题 选择不相交区间 区间选点 区间覆盖问题解答及代码 C++]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/104568433</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/104568433</guid><author>mschessy</author><pubDate>Mon, 02 Mar 2020 23:28:17 +0800</pubDate><description><![CDATA[1. 选择不相交区间
数轴上有n个开区间(ai,bi)(a_i, b_i)(ai​,bi​)。选择尽量多个区间，使得这些区间没有公共点。
这是最简单的区间问题，很多区间问题都需要先排序，要么对aia_iai​排序，要么对bib_ibi​排序。这道题直接将区间按照bib_ibi​排序，第一个区间一定要选择，然后选择下一个符合条件的区间（不与第一个区间重叠），以此类推。
数据(5,7), (1,2),...]]></description><category></category></item><item><title><![CDATA[算法竞赛入门经典第八章 巨人与鬼问题（点配对问题）详细图解 C++]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/104566741</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/104566741</guid><author>mschessy</author><pubDate>Sat, 29 Feb 2020 00:39:07 +0800</pubDate><description><![CDATA[问题：在平面上有n个巨人和n个鬼，没有三者在同一直线上。每个巨人需要选择一个不同的鬼，向其发送质子流消灭它。质子流由巨人发射，沿直线前进，遇到鬼后小时。由于质子流交叉是很危险的，所有质子流经过的线段不能有交点，请设计一种给巨人和鬼配对的方法。
说了这么多，其实题目就是平面上有偶数个点，两两配对并连线，找出连线不相交的配对方法。给出一组数据（3，4），（-9，0），（0，-5），（9，5），（-9，...]]></description><category></category></item><item><title><![CDATA[算法竞赛入门经典第八章 递归与分治 循环日程表问题]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/104549385</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/104549385</guid><author>mschessy</author><pubDate>Fri, 28 Feb 2020 07:54:49 +0800</pubDate><description><![CDATA[题目：有n=2kn=2^kn=2k个运动员进行网球循环大赛，需要设计比赛日程表。每个选手必须与其他n-1个选手各赛一次；循环赛一共进行n-1天。按此要求设计一张比赛日程表，它有n行和n-1列，第i行第j列为第i个选手第j天遇到的对手。
如果只有两个选手，那么第一天1与2比赛，第二天2与1比赛，如下：

如果有四个选手，如下：

这是其中一种排法，比较容易理解。我们直接建立了n*n的数组，第一列储存...]]></description><category></category></item><item><title><![CDATA[算法竞赛入门经典第十章学习笔记 杨辉三角形（Pascal's triangle）]]></title><link>https://blog.youkuaiyun.com/mschessy/article/details/104528608</link><guid>https://blog.youkuaiyun.com/mschessy/article/details/104528608</guid><author>mschessy</author><pubDate>Fri, 28 Feb 2020 04:51:35 +0800</pubDate><description><![CDATA[杨辉三角Pascal’s triangle）如下：

其中每个格子是上一行与它相邻两个格子的和，最左和最右的格子值为1。如何快速推算出杨辉三角的第n行排列（n从0开始）？
最容易想到的方法是由第一行开始递推，使用数组v储存结果，数组temp储存上一行：
void pascal(int n, vector&lt;int&gt; &amp;v)
{
 vector&lt;int&gt; temp(n+...]]></description><category></category></item></channel></rss>