自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 elasticsearch源码启动全记录

花了几天时间,终于完成了Elasticsearch的源码环境搭建和启动感谢小旋峰的博客 https://blog.csdn.net/wwwdc1012/article/details/81978966操作系统:win11Elasticsearch 源码版本: 6.3.2准备好装好 git 的 intellij idea下载项目首先 git clone https://github.com/elastic/elasticsearch.git这一步花了很久,通过git bash每次下载一半就中

2021-10-11 12:57:19 625 1

转载 约瑟夫环问题的数学解法

问题描述:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。当m和n不太大时,可以构造循环链表模拟,实现简单,容易理解,但是时间复杂度较高。这里主要研究一下数学解法(比较绕,我花了很久才想明白)。以下是转载自别人博客,对我有帮助的一篇讲解:原文 https://www.cnblogs.com/cmmdc/p/7216726.html为了简化出列的过程

2021-06-13 22:57:30 961

原创 intellij idea serializable 自动添加序列号

idea是企业版file -> settings -> editor -> inspections勾选该选项,apply,可能要重启idea光标放在类名上,再次按Alt+Enter键,这个时候可以看到"Add serialVersionUID field"提示信息

2021-05-24 09:59:17 1647

原创 Linux(fedora)下安装,配置zookeeper, kafka笔记

1. 安装zookeeper1.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

2021-03-06 21:51:44 274

原创 Linux下安装redis,搭建集群,哨兵笔记

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命令

2021-03-06 21:25:20 103

原创 为什么redis使用跳表而不使用红黑树 原作者回复

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

2020-12-29 20:38:24 232

原创 JVM九种垃圾收集器简单整理比较

Serial:最早的垃圾收集器,新生代,单线程,使用标记-复制算法SerialOld :最早的垃圾收集器,老年代,单线程,使用标记-整理算法parNew : Serial的升级版,新生代,多线程,使用标记-复制算法,目前依然是不少Hot Spot虚拟机服务端的首选收集器,因为只有它能与CMS配合工作Parallel Scavenge :新生代,标记-复制算法,多线程,被称为“吞吐量优先收集器”(吞吐量 = 运行用户代码时间 / (运行用户代码时间 + 运行垃圾手机时间)),可以根据系统运行情况自适应.

2020-12-03 15:58:50 194

原创 JAVA8 LinkedList 链表源码详细解析

如果做过像uva133这样的约瑟夫环类问题,可以想到最原始的方法就是写一个循环链表,那么能否用Java中自带的LinkedList类解决这个问题呢?比如能否写一个新类继承LinedList,写一个新方法让链表的头尾相连? 大家都知道Java中集合类都继承了Iterator接口,可以用Iterator遍历,但是否知道还有一个Listiterator接口?LinkedList类是否继承了Listiterator接口?如果没有的话又是怎么实现二者的结合的呢?想到这已经一脸懵逼了,话不多说,show me the

2020-12-03 13:58:57 236

原创 Idea下Maven工程,properties变量名与系统变量名冲突 - 一次有趣的Debug

今天学习基于注解的Spring,写了一个简单的基于MySQL的CRUD,运行一直出错,连接不上数据库。这是改正之前的部分文件,只看连接的部分就可以了,你们能看出来哪里有问题吗?JdbcConfig类:public class JdbcConfig { @Value("${driver}") private String driver; @Value("${url}") private String url; @Value("${jdbc.username}

2020-11-25 18:14:27 303

原创 Windows下tomcat和maven安装

先把可能需要的环境准备好1.Tomcat官网 http://tomcat.apache.org/下载Tomcat 7我选择了免安装的二进制版下好以后解压,还不知道放在那个路径合适,就解压到桌面上新建的tomcat文件夹下。解压以后打开,找到bin目录下的startup.bat,双击启动。如果出现乱码,需要修改conf文件夹里logging.properties文件,用记事本打开,找到java.util.logging.ConsoleHandler.encoding = utf-8更改

2020-11-15 15:03:22 116

原创 抽丝剥茧 Java多线程面试基础知识汇总(1)

这个部分的知识点太多了,每抽出一条都能无限深入下去,因此只抽出一些要点,便于记忆。1. 进程,线程 和 协程保存在硬盘上的程序运行以后,就是一个进程,它可以获得自己独立的内存体,有独立的地址空间,可以说进程是操作系统分配资源的最小单位。一个进程内部有一个或多个线程。线程不拥有系统资源,但可以访问隶属于进程的资源,线程是最小的执行单位。而协程比线程更加轻量级,可以由程序自主控制。2.并行和并发并发(Concurrent) 是一段时间内几个程序在宏观意义上同时进行。CPU分成了一些时间片,在这些程序之间

2020-10-14 21:53:11 86

原创 转战Linux 重装系统记录 windows - fedora

之前选择ubuntu,遇到各种问题,下了一个大白菜,没什么用,还废了一个U盘。后来在ubuntu官网重新下载镜像文件的时候,发现rufus这个宝贝软件,用它制作启动盘简单又方便。可惜,启动盘也烧好了,bios也设置从U盘启动了,Ubuntu也安装上了,重启以后就是无法引导进入,只好放弃,转战fedora。fedora就简单多了,下载ios镜像文件 - 烧制启动盘 - 从U盘启动 - 安装。rufus下载链接:http://rufus.ie/选好u盘位置,IOS文件,直接START。Fedora官网

2020-10-12 21:32:17 131 1

原创 Java中前缀树(Trie)的简介与使用 LeetCode 力扣 720 词典中最长的单词

Trie树是一种特殊的N叉树,又称字典树,单词查找树,键树等。一般用于字符串的储存,查找,比较,偶尔也会用于删除。除根节点外,Trie树的每一个节点包含一个字符,每个节点的子节点字符不重复(但不同节点可以有相同的子节点,比如表示字符串“aa”和“ba”)。从根节点到某一节点的路径为该节点对应的字符串,因此每条路径上的字符排列应该是唯一的。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销,对字符串的查找通常效率高于哈希表。画一棵前缀树:可以看到前缀树的几个要点:黄色的是根

2020-06-27 11:58:34 333

原创 算法竞赛入门经典第11章 最小生成树 Kruskal(克鲁斯卡尔)算法 和 Prim(普利姆)算法 详解及C++实现

考虑几个城市之间需要道路聯通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...

2020-03-05 04:28:14 491

原创 算法竞赛入门经典第11章 表达式树

题目:给出一个由数字及’+’,’-’,‘x’,’/’ 以及括号组成的合法算式,将其转化为表达式树。表达式树的所有树叶都是操作数,非叶子节点都是运算符。由于给出的运算符都是二元运算符,因此这道题得到的树一定是二叉树。可以先寻找“最后计算的运算符”,将这个运算符作为一个结点,然后递归计算运算符左右两个算式,计算结果作为该节点的左右儿子。直接上代码,需要注意的问题都写在注释里。#include&l...

2020-03-05 03:27:04 240

原创 算法竞赛入门经典第11章 无根树转有根树

题目:输入一个n个结点的无根树的各条边,并指定一个根节点,要求把该树转化为有根树,输出各个节点的父亲编号,n≤106n\leq10 ^6n≤106。可以把无根树看作无向无环且连通的稀疏图,所要做的就是从指定节点开始,深度搜索遍历所有节点,每次遍历等同于从根节点到叶子节点的过程,遍历过程中经过的节点按照先后保存为父亲节点和子节点。...

2020-03-05 03:01:28 721

原创 简单区间问题 选择不相交区间 区间选点 区间覆盖问题解答及代码 C++

1. 选择不相交区间数轴上有n个开区间(ai,bi)(a_i, b_i)(ai​,bi​)。选择尽量多个区间,使得这些区间没有公共点。这是最简单的区间问题,很多区间问题都需要先排序,要么对aia_iai​排序,要么对bib_ibi​排序。这道题直接将区间按照bib_ibi​排序,第一个区间一定要选择,然后选择下一个符合条件的区间(不与第一个区间重叠),以此类推。数据(5,7), (1,2),...

2020-03-02 23:28:17 649

原创 算法竞赛入门经典第八章 巨人与鬼问题(点配对问题)详细图解 C++

问题:在平面上有n个巨人和n个鬼,没有三者在同一直线上。每个巨人需要选择一个不同的鬼,向其发送质子流消灭它。质子流由巨人发射,沿直线前进,遇到鬼后小时。由于质子流交叉是很危险的,所有质子流经过的线段不能有交点,请设计一种给巨人和鬼配对的方法。说了这么多,其实题目就是平面上有偶数个点,两两配对并连线,找出连线不相交的配对方法。给出一组数据(3,4),(-9,0),(0,-5),(9,5),(-9,...

2020-02-29 00:39:07 975 2

原创 算法竞赛入门经典第八章 递归与分治 循环日程表问题

题目:有n=2kn=2^kn=2k个运动员进行网球循环大赛,需要设计比赛日程表。每个选手必须与其他n-1个选手各赛一次;循环赛一共进行n-1天。按此要求设计一张比赛日程表,它有n行和n-1列,第i行第j列为第i个选手第j天遇到的对手。如果只有两个选手,那么第一天1与2比赛,第二天2与1比赛,如下:如果有四个选手,如下:这是其中一种排法,比较容易理解。我们直接建立了n*n的数组,第一列储存...

2020-02-28 07:54:49 312

原创 算法竞赛入门经典第十章学习笔记 杨辉三角形(Pascal's triangle)

杨辉三角Pascal’s triangle)如下:其中每个格子是上一行与它相邻两个格子的和,最左和最右的格子值为1。如何快速推算出杨辉三角的第n行排列(n从0开始)?最容易想到的方法是由第一行开始递推,使用数组v储存结果,数组temp储存上一行:void pascal(int n, vector<int> &v){ vector<int> temp(n+...

2020-02-28 04:51:35 325

原创 算法竞赛入门经典第八章 递归与分治之棋盘覆盖问题

题目:有一个2k∗2k2^k*2^k2k∗2k的方格棋盘,恰有一个方格是黑色的,其他为白色。你的任务是用包含3个方格的L型牌覆盖所有白色方格。黑色方格不能被覆盖,且任意一个白色方格不能同时被两个或更多牌覆盖。由于棋盘是2k∗2k2^k*2^k2k∗2k的,很容易在中间横竖各一刀划分为4个2k−1∗2k−12^{k-1}*2^{k-1}2k−1∗2k−1的小棋盘,继续划分一直到k=1,成为2∗22...

2020-02-28 04:48:10 450

原创 [仅代码]算法竞赛入门经典第八章 归并排序 快速排序 二分查找 上限upper_bound和下限lower_bound C++

归并排序merge sort:void merge_sort(vector<int> &v, int x, int y){ vector<int> temp; if(y-x == 1)return; int m = x + (y - x) / 2; merge_sort(v, x, m); merge_sort(v, m, y); int i = x...

2020-02-28 03:02:52 160

原创 算法竞赛入门经典第八章 最大连续和问题4种非暴力解法 CPP

题目:给出一个长度为n的序列A1,A2,...,AnA_1, A_2, ..., A_nA1​,A2​,...,An​,求最大连续和。换句话说,要求找到1≤i≤j≤n1\leq i\leq j\leq n1≤i≤j≤n,使得Ai+Ai+1+...+AjA_i+A_{i+1}+...+A_jAi​+Ai+1​+...+Aj​尽量大。如果暴力枚举,时间复杂度是O(n3)O(n^3)O(n3)。第一种...

2020-02-27 23:48:39 155

原创 算法竞赛入门经典第十章学习笔记 大整数取模 幂取模

10-1 大整数取模题目:输入整整数n和m,输出n mod m的值。n≤10100,m≤109n\leq 10^{100},m\leq 10^9n≤10100,m≤109。这道题的特别之处在于n的范围很大,无法用整型变量保存和直接计算。大整数n用两个字符串保存,m可以用整型保存。我们可以将n的每位数字分离,变成如下形式:abcde=((((a×10+b)×10+c)×10+d)×10+e)ab...

2020-02-27 02:05:56 415

原创 算法竞赛入门经典第十章学习笔记 无平凡因子的数 素数/质数查找打表

无平方因子的数」题目:给出整整数n和m,区间[n,m]内的“无平方因子的数”有多少个?正数p无平方因子当且仅当不存在k>1,使得p是k2k^2k2的倍数。1≤n≤m≤1012,m−n≤1071\leq{n}\leq{m}\leq{10^{12}},m-n\leq{10^7}1≤n≤m≤1012,m−n≤107。首先需要理解什么是无平方因子的数。无平方因子的数是值将一个数分解,其因数中,没...

2020-02-27 00:28:36 438 1

原创 算法竞赛入门经典第十章学习笔记 除法表达式 最大公约数

除法表达式题目:给出除法表达式:X1/X2/X3/.../XkX_1/X_2/X_3/.../X_kX1​/X2​/X3​/.../Xk​,其中XiX_iXi​是整数。除法表达式应当按照从左到右的顺序求和,例如表达式1/2/1/21/2/1/21/2/1/2的值为1/41/41/4。但可以在表达式中嵌入括号以改变计算顺序,例如表达式(1/2)/(1/2)(1/2)/(1/2)(1/2)/(1/2...

2020-02-26 23:08:02 153

原创 Leetcode 力扣动态规划笔记 部分中等题算法总结CPP

5. Longest Palindromic SubstringGiven a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.给定字符串s,找出它的最长回文字符串。DP解法思路:如果有s的最长回文字符串t,那么把t的头尾去掉依...

2020-02-04 04:30:09 308

原创 Leetcode 力扣动态规划笔记 部分简单题算法总结CPP

53. Maximum subarrayGiven an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.在一个整数数组里找到和最大的部分数组并返回和。简单题。这道题不完全算动态规划,可以...

2020-02-04 00:24:57 348

原创 算法与数据结构学习笔记-最优二叉搜索树(optimal binary search tree)的动态规划实现详解

一串字符中可能进行多次查找,每个字符被查找到的频率都不同,如何根据字符被查找到的频率,建立一个二叉搜索树,使得花费时间最少呢?题目:给定一列按升序排列的键值K=[k1,k2,...,kn]K=[k_1,k_2,...,k_n]K=[k1​,k2​,...,kn​]和它们被搜索到的频率P=[p1,p2,...,pn]P=[p_1,p_2,...,p_n]P=[p1​,p2​,...,pn​],建立...

2020-01-30 03:14:46 3751 1

原创 算法与数据结构学习笔记-字符串之最长公共子序列,LCS问题的动态规划解法

问题:给定两个字符串,找出它们的最长公共子序列。首先了解题目,子序列和字串是不同的。在字符串匹配里,子串通常指的是给定字符串的一部分,是连续的不可断开的。而子序列是不同的,是在给定字符串里,按照顺序取字符,可以连续可以断开,然后组合构成新的字符串。通常子序列都不是给定字符串的子串,但是子串也可以称为子序列。另外公共子序列不一定是最长公共子序列的子串。不同的取字符方式可以构建出相同的子序列,如...

2020-01-29 03:21:25 396

原创 数据结构与算法学习笔记-动态规划(dynamic programming)不适用之有向图问题

前文提到动态规划的适用条件:1.最优子结构2.重叠子问题3.无后效性。有的时候明明看起来题目可以用动态规划来解答,实际上用这种方式找不到最优答案。第3条同样适用于贪心算法。首先看一道可以用动态规划解决的问题:给定一有向未加权图(directed unweightd graph),找到从u点到v点的最短路径。这条路径一定是没有环的简单路径,否则去掉环就从多条路变为一条路,可以使路径更短。...

2020-01-29 00:12:20 872

原创 数据结构与算法之字符串匹配(string matching)学习笔记 朴素算法,自动机,KMP

文本编辑过程中的查找,替换功能,在一段DNA中查找特定序列等,都要用到字符串匹配。简单地说,就是在一大段字符里(可能是英文或数字)找一小段目标字串(子串,是否存在,存在多少次)。《算法导论》里用了复杂的命名法解释这个问题与相应算法,这里尽量简化。A B A C A B A C C AA B A A B A子串ABC出现2次,位置0(或1,如果把第一个位置看作1),或位置4(或5,如果把...

2020-01-28 04:29:32 551 2

原创 算法与数据结构之动态规划(dynamic programming)学习笔记及矩阵连乘问题详解

在所有的面试题目里,动态规划题目算是较难的一类了。其实只要了解其本质,你会发现动态规划不过是recursion的加强版,这一类问题的解决方式都比较类似,如果能找到暴力的递归(recursion)解法,就能将其转化为动态规划解法。首先要了解,什么是动态规划?当我们能够用递归解决一个问题,但是发现在递归的过程中,很多子问题重叠(subproblems share subproblems),相同的解被...

2020-01-28 04:15:04 275

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除