摘要:
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[7,4 阅读全文
posted @ 2022-07-26 22:47
开源遗迹
阅读(23)
评论(0)
推荐(0)
摘要:
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums = [1,1,2]输出:[[1,1,2], [1,2,1], [2,1,1]]示例 2: 输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1 阅读全文
posted @ 2022-07-26 22:16
开源遗迹
阅读(34)
评论(0)
推荐(0)
摘要:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 输入:nums = [0,1]输出:[ 阅读全文
posted @ 2022-07-26 22:09
开源遗迹
阅读(26)
评论(0)
推荐(0)
摘要:
给你一个非负整数数组 nums ,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 假设你总是可以到达数组的最后一个位置。 示例 1: 输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置 阅读全文
posted @ 2022-07-26 21:31
开源遗迹
阅读(36)
评论(0)
推荐(0)
摘要:
给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。 '?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。 说明: s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小 阅读全文
posted @ 2022-07-26 20:31
开源遗迹
阅读(45)
评论(0)
推荐(0)
摘要:
1、SEE:https://elasticsearch.cn/article/322、倒排词典的索引需要常驻内存,无法 GC,需要监控 data node 上 segmentmemory 增长趋势。3、各类缓存,field cache, filter cache, indexing cache, b 阅读全文
posted @ 2022-07-26 19:14
开源遗迹
阅读(38)
评论(0)
推荐(0)
摘要:
Elasticsearch 提供的首个近似聚合是 cardinality 度量。它提供一个字段的基数,即该字段的 distinct 或者 unique 值的数目。它是基于 HLL 算法的。HLL 会先对我们的输入作哈希运算,然后根据哈希运算的结果中的 bits 做概率估算从而得到基数。其特点是:可配 阅读全文
posted @ 2022-07-26 19:12
开源遗迹
阅读(89)
评论(0)
推荐(0)
摘要:
1、可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖,由应用层来处理具体的冲突;2、另外对于写操作,一致性级别支持 quorum/one/all,默认为 quorum,即只有当大多数分片可用时才允许写操作。但即使大多数可用,也可能存在因为网络等原因导致写入副本失败,这样该副本被认为故障, 阅读全文
posted @ 2022-07-26 19:10
开源遗迹
阅读(183)
评论(0)
推荐(0)
摘要:
Trie 的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。它有 3 个基本性质:1、根节点不包含字符,除根节点外每一个节点都只包含一个字符。2、从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。3、每个节点的所有子节点包含的字符都不相同。 1、 阅读全文
posted @ 2022-07-26 19:03
开源遗迹
阅读(314)
评论(0)
推荐(0)
摘要:
1、拼写纠错是基于编辑距离来实现;编辑距离是一种标准的方法,它用来表示经过插入、删除和替换操作从一个字符串转换到另外一个字符串的最小操作步数;2、编辑距离的计算过程:比如要计算 batyu 和 beauty 的编辑距离,先创建一个7×8 的表(batyu 长度为 5,coffee 长度为 6,各加 阅读全文
posted @ 2022-07-26 18:58
开源遗迹
阅读(438)
评论(0)
推荐(0)
摘要:
1、删除和更新也都是写操作,但是 Elasticsearch 中的文档是不可变的,因此不能被删除或者改动以展示其变更;2、磁盘上的每个段都有一个相应的.del 文件。当删除请求发送后,文档并没有真的被删除,而是在.del 文件中被标记为删除。该文档依然能匹配查询,但是会在结果中被过滤掉。当段合并时, 阅读全文
posted @ 2022-07-26 18:53
开源遗迹
阅读(241)
评论(0)
推荐(0)
摘要:
1、当集群 master 候选数量不小于 3 个时,可以通过设置最少投票通过数量(discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解决脑裂问题;2、当候选数量为两个时,只能修改为唯一的一个 master 候选,其他作为 data节点,避免脑裂问题 阅读全文
posted @ 2022-07-26 18:21
开源遗迹
阅读(61)
评论(0)
推荐(0)
摘要:
1、关闭缓存 swap;2、堆内存设置为:Min(节点内存/2, 32GB);3、设置最大文件句柄数;4、线程池+队列大小根据业务需要做调整;5、磁盘存储 raid 方式——存储有条件使用 RAID10,增加单节点性能以及避免单节点存储故障。 1、64 GB 内存的机器是非常理想的,但是 32 GB 阅读全文
posted @ 2022-07-26 18:07
开源遗迹
阅读(220)
评论(0)
推荐(0)
摘要:
搜索拆解为“query then fetch” 两个阶段。query 阶段的目的:定位到位置,但不取。步骤拆解如下:1、假设一个索引数据有 5 主+1 副本 共 10 分片,一次请求会命中(主或者副本分片中)的一个。2、每个分片在本地进行查询,结果返回到本地有序的优先队列中。3、第 2步骤的结果发送 阅读全文
posted @ 2022-07-26 18:04
开源遗迹
阅读(112)
评论(0)
推荐(0)
摘要:
这里的索引文档应该理解为文档写入 ES,创建索引的过程。文档写入包含:单文档写入和批量 bulk 写入,这里只解释一下:单文档写入流程。 1、当分片所在的节点接收到来自协调节点的请求后,会将请求写入到 Memory Buffer,然后定时(默认是每隔 1 秒)写入到 Filesystem Cache 阅读全文
posted @ 2022-07-26 17:13
开源遗迹
阅读(117)
评论(0)
推荐(0)
摘要:
前置前提 1、只有候选主节点(master:true)的节点才能成为主节点。2、最小主节点数(min_master_nodes)的目的是防止脑裂。 核对了一下代码,核心入口为 findMaster,选择主节点成功返回对应 Master,否则返回 null。选举流程大致描述如下: 第一步:确认候选主节 阅读全文
posted @ 2022-07-26 17:01
开源遗迹
阅读(279)
评论(0)
推荐(0)
摘要:
动态索引层面基于模板+时间+rollover api 滚动创建索引,举例:设计阶段定义:blog 索引的模板格式为:blog_index_时间戳的形式,每天递增数据。这样做的好处:不至于数据量激增导致单个索引数据量非常大,接近于上线 2 的32 次幂-1,索引存储达到了 TB+甚至更大。一旦单个索引 阅读全文
posted @ 2022-07-26 16:56
开源遗迹
阅读(159)
评论(0)
推荐(0)
摘要:
传统的我们的检索是通过文章,逐个遍历找到对应关键词的位置。而倒排索引,是通过分词策略,形成了词和文章的映射关系表,这种词典+映射表即为倒排索引。有了倒排索引,就能实现 o(1)时间复杂度的效率检索文章了,极大的提高了检索效率 倒排索引,相反于一篇文章包含了哪些词,它从词出发,记载了这个词在哪些文档中 阅读全文
posted @ 2022-07-26 16:32
开源遗迹
阅读(154)
评论(0)
推荐(0)
摘要:
面试官:想了解应聘者之前公司接触的 ES 使用场景、规模,有没有做过比较大规模的索引设计、规划、调优。 ES 集群架构 13 个节点,索引根据通道不同共 20+索引,根据日期,每日递增 20+,索引:10 分片,每日递增 1 亿+数据,每个通道每天索引大小控制:150GB 之内。 仅索引层面调优手段 阅读全文
posted @ 2022-07-26 16:27
开源遗迹
阅读(544)
评论(0)
推荐(0)
摘要:
RSA 加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法。非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。公钥用于加密,私钥用于解密。 阅读全文
posted @ 2022-07-26 12:37
开源遗迹
阅读(157)
评论(0)
推荐(0)
摘要:
高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图: 阅读全文
posted @ 2022-07-26 12:34
开源遗迹
阅读(85)
评论(0)
推荐(0)
摘要:
现在假设有一个很实际的问题:我们要在 n 个城市中建立一个通信网络,则连通这 n 个城市需要布置 n-1 一条通信线路,这个时候我们需要考虑如何在成本最低的情况下建立这个通信网?于是我们就可以引入连通图来解决我们遇到的问题, n 个城市就是图上的 n 个顶点,然后,边表示两个城市的通信线路,每条边上 阅读全文
posted @ 2022-07-26 12:32
开源遗迹
阅读(63)
评论(0)
推荐(0)
摘要:
在搜索算法中优化中,剪枝,就是通过某种判断,避免一些不必要的遍历过程,形象的说,就是剪去了搜索树中的某些“枝条”,故称剪枝。应用剪枝优化的核心问题是设计剪枝判断方法,即确定哪些枝条应当舍弃,哪些枝条应当保留的方法。 阅读全文
posted @ 2022-07-26 12:16
开源遗迹
阅读(286)
评论(0)
推荐(0)
摘要:
将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。 public class radixSort {int a[]={49,38,65,97,76,13,27,49,78,34 阅读全文
posted @ 2022-07-26 12:14
开源遗迹
阅读(30)
评论(0)
推荐(0)
摘要:
桶排序的基本思想是:把数组 arr 划分为 n 个大小相同子区间(桶),每个子区间各自排序,最后合并 。基数排序是桶排序的一种特殊情况,可以把基数排序当成每个桶里只有一个元素的情况。1.找出待排序数组中的最大值 max、最小值 min2.我们使用 动态数组 ArrayList 作为桶,桶里放的元素也 阅读全文
posted @ 2022-07-26 12:03
开源遗迹
阅读(74)
评论(0)
推荐(0)
摘要:
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 public class MergeSortTest {public static void main(String[] args) 阅读全文
posted @ 2022-07-26 11:51
开源遗迹
阅读(85)
评论(0)
推荐(0)
摘要:
基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序” 时,再对全体记录进行依次直接插入排序。1. 操作方法:选择一个增量序列 t1, t2, …, tk,其中 ti>tj, tk=1;2. 按增量序列个数 k,对序列进行 k 趟排序;3. 每趟排序 阅读全文
posted @ 2022-07-26 11:45
开源遗迹
阅读(35)
评论(0)
推荐(0)
摘要:
快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。 一般选择序列的第一个元素。一次循环:从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果没有继续比较下一个,直到找到第一个比基准值小的值才交换。 找到这个值之 阅读全文
posted @ 2022-07-26 11:08
开源遗迹
阅读(35)
评论(0)
推荐(0)
摘要:
通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。插入排序非常类似于整扑克牌。在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。 为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较。无论什么时 阅读全文
posted @ 2022-07-26 10:56
开源遗迹
阅读(38)
评论(0)
推荐(0)
摘要:
(1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。(2)这样对数组的第 0 个数据到 N-1 个数据进行一次遍历后,最大的一个数据就“沉” 到数组第N-1 个位置。(3) N=N-1,如果 N 不为 0 就重复前面二步,否则排序完成 public static void 阅读全文
posted @ 2022-07-26 10:05
开源遗迹
阅读(30)
评论(0)
推荐(0)
摘要:
又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。 public static int biSearch 阅读全文
posted @ 2022-07-26 10:03
开源遗迹
阅读(36)
评论(0)
推荐(0)
摘要:
//面向对象思想实现篮子物品交换public class Demo5 {public static void main(String[] args) {//创建篮子Basket A = new Basket("A");Basket B = new Basket("B");//装载物品A.load(" 阅读全文
posted @ 2022-07-26 09:59
开源遗迹
阅读(782)
评论(0)
推荐(0)
摘要:
3、假设今日是2015年3月1日,星期日,请算出13个月零6天后是星期几,距离现在多少天(请用代码实现,谢绝调用API方法)import java.util.Scanner;//算出星期几public class Demo4 {public static String[] week = {"星期日" 阅读全文
posted @ 2022-07-26 09:41
开源遗迹
阅读(158)
评论(0)
推荐(1)
摘要:
写出代码判断一个整数是不是2的阶次方(请代码实现,谢绝调用API方法) public class Demo2 {public static boolean check(int sum) {boolean flag = true; //判断标志while(sum > 1) {if (sum % 2 = 阅读全文
posted @ 2022-07-26 09:38
开源遗迹
阅读(139)
评论(0)
推荐(0)
摘要:
数据里有{1,2,3,4,5,6,7,8,9},请随机打乱顺序,生成一个新的数组(请以代码实现) import java.util.Arrays;//打乱数组public class Demo1 {//随机打乱public static int[] srand(int[] a) {int[] b = 阅读全文
posted @ 2022-07-26 09:22
开源遗迹
阅读(218)
评论(0)
推荐(0)

浙公网安备 33010602011771号