Skip to main content

moregeek program

tidb 底层存储结构 lsm 树原理介绍-多极客编程

作者:京东物流 刘家存随着数据量的增大,传统关系型数据库越来越不能满足对于海量数据存储的需求。对于分布式关系型数据库,我们了解其底层存储结构是非常重要的。本文将介绍下分布式关系型数据库 TiDB 所采用的底层存储结构 LSM 树的原理。1 LSM 树介绍LSM 树(Log-Structured-Merge-Tree) 日志结构合并树由 Patrick O’Neil 等人在论文《The Log-St

Read More

重载的奥义之函数重载-多极客编程

一、基本定义                重载,顾名思义从字面上理解就是重复装载,打一个不恰当的比方,你可以用一个篮子装蔬菜,也可以装水果或者其它,使用的是同一个篮子,但是可以用篮子重复装载的东西不一样。        函数重载是C++多态(静态多态)的特征体现,它可以允许重复使用同一个函数名(篮子)的函数,但是函数的参数列表(篮子装的东西)是可以不一样的。这样就可以利用函数的重载功能设计一系列

Read More

c++ 不知树系列之二叉堆排序(递归和非递归实现上沉、下沉算法)-多极客编程

1. 前言 什么是二叉堆? 二叉堆是有序的 完全二叉树,在完全二叉树的基础上,二叉堆 提供了有序性特征: 二叉堆 的根结点上的值是整个堆中的最小值或最大值。 当根结点上的值是整个堆结构中的最小值时,此堆称为最小堆。最小堆中,任意节点的值大于父结点的值。 当根结点上的值是整个堆结构中的最大值时,则称堆为最大堆。最大堆中,任意节点的值小于父结点的值。 根据完全二叉树的特性,二叉堆的父

Read More

一种将函数模板定义和声明分开的方法-多极客编程

        在 C++ 中为了操作简洁引入了函数模板。所谓的函数模板实际上是建立一个通用函数,其函数类型或形参类型不具体指定,用一个虚拟的类型来表达,这个通用函数就称为函数模板。1、通用的写法        函数模板不是一个具体的函数,编译器不能为其生成可执行代码。定义函数模板后只是一个对函数功能框架的描述,当它具体执行时,将根据传递的实际参数决定其功能。为了容易使用,一般通用的写法都是在头文

Read More

一道map例题-多极客编程

一、题目小明的一位同学是学霸,他的家中有很多藏书,真可谓汗牛充栋。小明想考一考学霸,给学霸出了一道难题。小明问这么多书籍,到底有多少本不一样的书,每样书的名字是什么?(因为有的书名是一样的,所以我们把它们视为同样的书)学霸就是学霸,张口就说出了答案。不知道你是否也是学霸?一起来挑战下!输入格式第一行是书籍总量n(1<=n<=1e6)。然后有n行书名(书名是一个英文字符串,字符串的长度小

Read More

stl库之map映射基础知识-多极客编程

前言:映射是指两个集合之间的元素相互对应关系。通俗地说,就是一个元素对应另外一元素。我们称其中的姓名集合为关键字集合(key),班级集合为值集合(value)。注意一个key不能对应多个value,这一点和函数法则一样!在C++中我们常用的映射是map。一、构造一个映射在C++中,我们构造一个map的语句是:map<T1,T2> m;这样我们定义了一个名为m的从T1类型到T2类型的映射

Read More

vector打印锯齿矩阵-多极客编程

一、题目锯齿矩阵是指每一行包含的元素个数不尽相同的矩阵,比如3 5 2 1 62 3 41 6 2 7读入若干对整数(x,y),表示在第x行的末尾加上一个元素y。输出最终的锯齿数组。初始时矩阵为空。输入格式第一行输入两个整数n,m(1<=n,m<=10000),其中n表示锯齿矩阵数组的行数,m表示插入元素的总数。接下来一个m行,每行两个整数x,y(1<=x<=n,0<

Read More

stl库之集合基本使用方法-多极客编程

引言:集合是数学中的一个概念,集合是由一些不重复的数据组成的。在C++中我们常用的集合是set。一、引用库c++中set的实现在一个<set>头文件中,在代码开头引入这个头文件,并且同样加上一句using namespace std二、构造一个集合C++中直接构造一个set的语句是:set<int>a.这样我们就定义了一个名为a的、储存数据类型为int的集合(与vector

Read More

【算法实践】他山之石,可以攻玉--利用完全二叉树快速实现堆排序-多极客编程

前言什么是堆堆是一种数据结构,它是完全二叉树或者是近似完全二叉树的一种数据结构,树中每个结点的值都不小于(或不大于)其左右孩子结点的值。何为完全二叉树完全二叉树是一种特殊的二叉树,完全二叉树是除了最后一层之外的其他每一场层都被完全填充,叶子节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树,也就是说所有节点都保持向左对齐。如果想了解更多关于二叉树的介绍,可参考之

Read More

#yyds干货盘点# leetcode程序员面试金典:动物收容所-多极客编程

题目:动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创建适用于这个系统的数据结构,实现各种操作方法,比如enqueue、dequeueAny、dequeueDog和dequeueCa

Read More

广告倒排服务极致优化-多极客编程

作者 | XY导读漏斗优化是检索系统不变的话题,过去一年来,广告漏斗优化一改往日做“加法”,而通过简化漏斗,提升全系统一致性。如百度这样庞大的广告库规模、高流量规模以及复杂的业务规则,要做到极简的漏斗层次,需要最高效的策略设计和最极致的工程实现。本文重点介绍了百度Geeker们在倒排数据结构上如何“抠细节”达到倒排召回无截断,对大家做高性能系统也将有所启发。全文6162字,预计阅读时间16分钟。0

Read More

go语言性能剖析利器--pprof实战-多极客编程

作者:耿宗杰前言关于pprof的文章在网上已是汗牛充栋,却是千篇一律的命令介绍,鲜有真正实操的,本文将参考Go社区资料,结合自己的经验,实战Go程序的性能分析与优化过程。优化思路首先说一下性能优化的一般思路。系统性能的分析优化,一定是从大到小的步骤来进行的,即从业务架构的优化,到系统架构的优化,再到系统模块间的优化,最后到代码编写层面的优化。业务架构的优化是最具性价比的,技术难度相对较小,却可以带

Read More

1分钟理清楚c++类模板和模板类区别_明解嵌入式的博客-多极客编程

1、定义区别       类模板和模板类主要关注点是后一个单词。类模板:主要描述的是模板,这个模板是类的模板。可以理解为一个通用的类,这个类中的数据成员,成员函数的形参类型以及成员函数的返回值类型不用具体的指定,这些类型都是虚拟的。在使用类模板进行对象定义的时候,才会根据对象的实际参数类型来替代类模板中的虚拟类型。通俗一点来说,可以看作是做蛋糕的模具。类模板标准定义格式如下:template &l

Read More

算法竞赛入门【码蹄集进阶塔335题】(mt2271-2275)_灵彧universe的博客-多极客编程

算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275)文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2271 完全立方数32. MT2272 质数率3. MT2273 元素共鸣4. MT2274 第k小素数5. MT2275 小码哥喜欢的数结语前言为什么突然想学算法了?> 用较为“官方”的语

Read More

想学算法吗少年,跟我来吧_周杰伦本人的博客-多极客编程

想学算法吗少年,跟我来吧 坚持原创,写好每一篇文章 为什么学习算法 伟大的编程领域的祖师爷尼古拉斯威茨提出程序=数据结构+算法,数据结构的重要性不言而喻,数据结构在计算机学习的过程中是一门必修课,考研一般也是数据结构必考,软件开发中的架构设计中也有很多数据结构的使用,越是底层尤其是存储这一块的东西,数据结构关乎着存储性能,比如MySQL的底层、redis的数据结构。这篇文章并不是将数据结构,而

Read More

利用python手把手带上实现冒泡排序_迷彩编程的博客-多极客编程

前言之前写过一篇关于Python算法分析的文章--《​​利用 Python 浅尝算法分析​​》,想要学好计算机,数据结构和算法几乎是无法回避的课题,因为我们学习编程第一节课老师都会跟你说:程序 = 数据结构 + 算法.所以说这必学的编程基础知识.在数据结构和算法这门课程中排序与查找算法是我们常用的算法,而且这两者也是我们工作中常用的算法.就比如排序就有很多经典的算法.;排序是让数据能够以更有意义的

Read More

防御式编程之断言assert的使用_明解嵌入式的博客-多极客编程

防御式编程的重点就是需要防御一些程序未曾预料的错误,这是一种提高软件质量的辅助性方法,断言assert就用于防御式编程,编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。使用断言是为了验证预期的结果——当程序执行到断言的位置时,对应的断言应该为真;若断言不为真时,程序会终止执行,并给出错误信息。可以在任何时候启用和禁用断言验证,因此可以在程序调试时启用断言而在程序发布时禁用断言

Read More

在实际应用中联合体union的妙用_明解嵌入式的博客-多极客编程

关键字union,又称为联合体、共用体,联合体的声明和结构体类似,但是它的行为方式又和结构体不同,这里的行为方式主要指的是其在内存中的体现,结构体中的成员每一个占据不同的内存空间,而联合体中的所有成员共用的是内存中相同的位置。       简单看下区别:struct MyStruct { double a; int b; char c;};struct MyStructunion

Read More

#yyds干货盘点# leetcode 腾讯精选练习 50 题:相交链表_灰太狼_cxh的博客-多极客编程

题目:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。自定义评测:评测系统 的输入如下(你设计的程序 不适用 此输入):intersectVal - 相交的起始节点的值。如果不存在相

Read More

遗留代码处理技巧与案例演示_京东云官方的博客-多极客编程

1 什么是遗留代码本质是一种技术债务,产生原因一方面是业务原因:如业务本身场景繁多、流程复杂等;另一方面是技术原因:如代码不规范、设计不合理、祖传代码文档注释缺失等。它会影响我们的程序很多方面:如可读性、可修改性、可复用性、可维护性、可测试性等。2 遗留代码处理过程拆解划分为梳理->重构/重写->替换/验证三个阶段2.1 梳理遗留代码的处理是一种逆向工程,从已有的代码+数据模型+文档倒

Read More