• TCP、HTTP协议的深入研究

    底层基础知识通信模式在计算机通信领域中,常见的模型默认有三种:单工模式、半双工模式、全双工模式 单工模式(Simplex) 定义:数据只能沿一个方向传输,一方固定为发送端,另一方固定为接收端,无法反向通信。 特点:信道是单向的,无需考虑双向同步或冲突问题,结构简单但灵活性低。 举例:广播电视(电视台发送信号,电视机只能接收)、键盘向电脑输入数据(键盘仅发送,电脑仅接收)、打印机接收电脑指令(...
  • 分布式搜索和分析引擎——Elasticsearch(索引配置及优化)

    在创建索引时,可以对索引进行各种配置,比如分片数量、字段限制、索引方式等,下面进行详细介绍 配置写法Elasticsearch 支持两种等效的配置方式,分别为扁平式(Flat)和嵌套式(Nested),在早期版本的Elasticsearch更倾向于使用扁平式(如 1.x/2.x 时代)。随着JSON格式成为主流,嵌套式表达变得更直观,现在版本的Elasticsearch内部会将...
  • 分布式搜索和分析引擎——Elasticsearch(基础篇)

    Elasticsearch 是一个基于 Lucene 的开源分布式搜索和分析引擎,常用于全文检索、日志分析、实时数据处理等场景,具有分布式、高可用、易扩展等特点 核心特点 分布式架构:可自动将数据分散到多个节点,支持水平扩展,轻松应对大规模数据量和高并发请求。 实时搜索与分析:数据一经索引即可被搜索,能快速处理实时数据,满足实时查询和分析需求。 全文检索能力:支持复杂的文本搜索,包括关键...
  • 数据结构与算法——二叉树

    二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点。 相关术语 结点:包含一个数据元素及若干个指向其子结点的信息 结点的权:结点中存储的数据的值 路径:从根结点找到该结点的路线 度:一个结点拥有子结点的个数被称为结点的度,一个树...
  • 数据结构与算法——查找算法

    数据的查找算法较排序算法简单,并且常用的查找方案只有几种。 顺序查找 二分查找 插值查找 斐波那契查找 树表查找 分块查找 哈希查找 查找算法的分类 根据具体的实现逻辑不同,大体上可以把查找算法分为两大类:静态查找、动态查找, 静态查找:指查找表中无删除和插入操作。 动态查找:指查找表中有删除和插入操作。 根据查找的前提条件可以分为两大类:无序查找、有序查找 无序查找:指...
  • 数据结构与算法——排序算法总结

    时间复杂度 时间复杂度是判断一个算法的执行时间的性能指标,通常是一个代表算法输入值的字符串长度的函数,使用大O符号进行标数,不包括这个函数的低阶项和首项系数。 每一个算法都会存在一个实际的执行次数函数T(n),其中n代表的是每一个“操作单元”,并且认定每一个操作单元的所运行的时间都是相同的。如果将实际的执行次数函数T(n)中的低阶项、首项系数进行省略,就得到了我们所说的时间复杂度函数。省略...
  • 数据结构与算法——计数排序

    计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。 算法要点 计数排序也是桶排序的一种, 计数排序适用于数据量很大,但值分布范围很小的场景下 第一步需要获取到序列中的最大值,最小值,创建一个长度为最大值-最小值的空的计数序列,其中序...
  • 数据结构与算法——基数排序

    基数排序属于“分配式排序”,又称“桶子法”,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用 算法要点 基数排序属于桶排序的一种,所以桶排序的问题,在基数排序中依然存在 获取序列中最大元素的位数 依次根据序列中元素的个位数值,将元素放到0-9号十个桶中 将十个桶中的元素一次放回到序列中 继续根据每个元素的十位数值执行3步骤、4步骤,直到最大元素的位数...
  • 数据结构与算法——归并排序

    是创建在归并操作上的一种有效的排序算法。算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列。 算法要点 通过递归的模式,将序列不断的从中间拆分,直到不可拆分为止,这一步骤称为“分” 通过递归的模式,将拆分后的两个序列通过对比两个序列的每...
  • 数据结构与算法——快速排序

    通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 算法要点 在一个序列中,随机先找出一个基准点(基准点取得好不好,影响到快排的性能,后面回对基准点如何找进行详细学习并记录) 将比基准点小的元素放在基准点的左侧,比基准点大的放在基准点的右侧 从左到右依次与基准点比较,找到大于基准点的一个节点,并...
12347