- 博客(13)
- 收藏
- 关注
原创 十分钟搞懂传说中的Elasticsearch数字搜索原理
更多精彩内容请看我的个人博客或者扫描二维码,关注微信公众号:佛西先森文章目录前言简介数字直接变成字符串的问题字符串比较获取的范围过多ES是怎么把数字变成字符串数字的索引是什么样子查询原理总结One more thing参考前言Elasticsearch诞生的本意是为了解决文本搜索太慢的问题,ES会默认将所有的输入内容当作字符串来理解,对于字段类型是keyword或者text的数据比较友...
2020-04-27 12:25:27
2319
1
原创 带你走进神一样的Elasticsearch索引机制
更多精彩内容请看我的个人博客文章目录前言简介索引Inverted IndexFinite State TransducersPosting ListsFrame of ReferenceRoaring Bitmaps总结参考前言相比于大多数人熟悉的MySQL数据库的索引,Elasticsearch的索引机制是完全不同于MySQL的B+Tree结构。索引会被压缩放入内存用于加速搜索过程,这...
2020-04-20 23:01:20
916
原创 十九种Elasticsearch字符串搜索方式终极介绍
前言刚开始接触Elasticsearch的时候被Elasticsearch的搜索功能搞得晕头转向,每次想在Kibana里面查询某个字段的时候,查出来的结果经常不是自己想要的,然而又不知道问题出在了哪里。出现这个问题归根结底是因为对于Elasticsearch的底层索引原理以及各个查询搜索方式的不了解,在Elasticsearch中仅仅字符串相关的查询就有19个之多,如果不弄清楚查询语句的工作方式...
2020-04-16 23:41:44
839
原创 二叉树遍历方法大全(包含莫里斯遍历)
前言二叉树的遍历可能大家都比较熟悉了,这篇文章主要介绍了三种二叉树的遍历方法——递归、迭代和莫里斯遍历,他们各自有各自的特点。其中最重要的是莫里斯遍历,相对于前两种方法比较少见,只需要固定的空间就可以完成迭代遍历。这篇文章将会结合动图,带你了解关于树遍历的知识。简介我们通常希望通过访问树的每个节点来处理二叉树,每次执行特定的操作,例如打印节点的内容、得到树的所有节点的总和或者要找到最大的值。...
2020-04-08 23:31:32
745
1
原创 IntelliJ大师指南之原来搜索还可以这样用!
文章目录前言简介搜索任何地方 双击Shift类文件符号执行操作命令运行配置最近的文件总结参考前言IntelliJ IDE对于每一个Java开发工程师来说都是如雷贯耳,对于不知道这个开发IDE的同学我只能说他还活在上个世纪不认识这个世纪最先进的Java开发工具。我刚开始学习Java的时候用的是Eclipse,感觉用起来非常难受,后来朋友推荐了IntelliJ,才发现世界上原来还有这么好用的工具,...
2020-04-06 14:55:57
240
原创 世界上最快的排序算法——Timsort
Timsort前言简介算法限制二分插入排序Run合并合并条件合并内存消耗加速合并GALLOP模式总结参考前言经过60多年的发展,科学家和工程师们发明了很多排序算法,有基本的插入算法,也有相对高效的归并排序算法等,他们各有各的特点,比如归并排序性能稳定、堆排序空间消耗小等等。但是这些算法也有自己的局限性比如快速排序最坏情况和冒泡算法一样,归并排序需要消耗的空间最多,插入排序平均情况的时间复杂度太...
2020-03-29 18:14:32
2026
原创 十二种排序(冒泡、插入、归并、快速排序等包含希尔和计数排序)
前言排序算法在计算机科学入门课程中很普遍,在学习排序算法的时候,涉及到大量的各种核心算法概念,例如大O表示法,分治法,堆和二叉树之类的数据结构,随机算法,最佳、最差和平均情况分析,时空权衡以及上限和下限,本文就介绍了十二种排序算法供大家学习。简介排序算法是用来根据元素对应的比较运算符重新排列给定的数组的算法,输出的数组是一个根据比较符从小到大或者从大到小依次排列的数组。比较运算符是用于确定相...
2020-03-26 12:21:25
530
1
原创 leetcode实战—位运算(两数相除、只出现一次的数字、重复的DNA序列等)
位运算前言简介371 两整数之和29 两数相除191. 位1的个数268 缺失数字136 只出现一次的数字137 只出现一次的数字 II260 只出现一次的数字 III338 比特位计数187 重复的DNA序列总结参考前言对0和1的操作是计算机最底层的操作,所有的程序不管用什么语言写的,都要转化成机器能够读懂的语言也就是二进制进行基本的运算,而这些基本的运算就是我们今天要讲到的位运算。因为硬件...
2020-03-15 18:03:09
494
原创 leetcode实战—素数(埃拉托色尼筛选法包括证明、哈希、RSA)
前言素数这个概念人类已经研究了上千年,但是的具体的起源却不得而知。早在公元前300年,欧几里得就在他的著作元素中证明了有无穷多个素数,同时也证明了任何一个整数都能够被某一个素数整除。时至今日,素数在计算机科学这样一个和数学联系紧密的学科中也有这个广泛的应用,比如布隆过滤器、伪随机数、RSA加密算法等等,所以掌握素数的特性以及应用能够帮助我们解决不少实际问题。简介素数(又称质数)是一个只能被1...
2020-03-07 22:17:18
1104
原创 leetcode实战——二分搜索及其变形(寻找左右边界、查找插入位置)
二分查找前言说到二分查找很多人都是耳熟能详,这个算法基本是每个工科生(不仅仅是计算机相关专业)的必备知识点,在各种算法的题目中出现的频率也是极高的。然而很多考题并不会简简单单的去让你实现是个二分算法,而是通过各种变形来考验同学们对二分查找算法的理解程度,比如在在排序数组中查找元素的第一个和最后一个位置以及数组中的第K个最大元素这两道题里面就要用到二分搜索来寻找边界点和逼近最后的正确答案。我猜大...
2020-02-26 22:23:30
1263
原创 leetcode实战——300. 最长上升子序列(动态规划+分治法)
300. 最长上升子序列题目给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2)O(n^2)O(n2) 。思路首先看到这道题,刷题...
2020-02-16 20:05:04
699
原创 LeetCode实战——股票问题六道题通解的详细解释与实际案例分析
买卖股票的最佳时机这是一个系列的题目,核心的解体思路是使用动态规划找到最优解121 买卖股票的最佳时机(简单)122 买卖股票的最佳时机 II(简单)123 买卖股票的最佳时机 III(困难)188 买卖股票的最佳时机 IV(困难)309 最佳买卖股票时机含冷冻期(中等)714 买卖股票的最佳时机含手续费(中等)对于每个问题,都有很多的文章解释了如何解决。但是,大多数解体思路都...
2020-02-10 22:58:07
535
原创 leetcode实战——最大子序列的和(动态规划,分治法,Kadane算法)
这个题目需要使用到动态规划,还不清楚什么是动态规划的同学,可以看我的另一篇文章的解释题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为...
2020-02-08 17:48:25
1965
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人