自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

书山有路,学海无涯。记录成长,追逐梦想

专注于【大数据】、【云原生】、【云计算】、【测试技术】等领域

  • 博客(533)
  • 收藏
  • 关注

原创 【设计模式】入门 23 种设计模式(代码讲解)

设计模式是在软件设计中反复出现的问题的通用解决方案。它们是经过多次验证和应用的指导原则,旨在帮助软件开发人员解决特定类型的问题,提高代码的可维护性、可扩展性和重用性。设计模式是一种抽象化的思维方式,可以帮助开发人员更好地组织和设计他们的代码。它们提供了一种通用的框架,可以用于解决各种不同的软件设计问题。设计模式不是完整的代码,而是一种描述问题和解决方案之间关系的模板。

2024-11-17 16:21:33 1367

原创 【Kubernetes】K8s 实践之旅

Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明式配置和自动化,它拥有庞大且快速发展的生态系统,Kubernetes 服务、支持和工具随处可见。

2024-09-02 00:18:35 547 1

原创 【Elasticsearch】Elasticsearch 近实时高速查询原理

倒排索引是 Elasticsearch 能实现近实时查询的重要原因之一,那为什么倒排索引可以提高查询的速度呢?底层的工作原理又是什么呢?对比其他的查询搜索组件,Elasticsearch 的优势在哪里?

2025-06-10 23:23:07 928

原创 【Elasticsearch】正排索引、倒排索引(含实战案例)

文章摘要 本文详细介绍了搜索引擎中的两种核心索引结构:正排索引和倒排索引。正排索引通过文档ID映射文档内容,适合获取完整文档和排序计算;倒排索引通过词项映射文档ID列表,支持高效全文搜索。两者协同工作完成搜索流程:倒排索引定位匹配文档,正排索引获取文档内容。文中通过电商商品搜索案例,在Kibana中演示了两种索引的实际应用场景,包括全文搜索、排序、高亮等操作。最后还提供了索引性能优化建议,如禁用非必要字段的正排索引等。理解这两种索引的差异有助于优化搜索引擎的设计和使用。

2025-06-10 11:00:00 806

原创 【Elasticsearch】Elasticsearch 在大数据生态圈的地位 & 实践经验

Elasticsearch 是实时搜索和分析领域的王者,其优势源于倒排索引和分布式架构的深度优化。在大数据生态中,它与 HDFS、Hive 等组件不是替代关系,而是互补协作(例如用 HDFS 存储原始数据,用 ES 提供实时查询)。

2025-06-09 23:56:14 1550

原创 【Elasticsearch】一个图书馆的案例解释 Elasticsearch

在 Elasticsearch 中,索引(Index)既可以是 名词(存储数据的逻辑单元),也可以是 动词(写入数据的过程)。让我们用一个更生活化的比喻来彻底理清这个概念。

2025-06-09 23:25:42 1193

原创 【Elasticsearch】映射:null_value 详解

Elasticsearch中null_value参数详解:用于处理字段值为null或不存在的情况,允许指定替代值进行索引和查询。支持数值、字符串、日期等多种字段类型,使用时需注意类型匹配和存储开销。通过示例展示了如何为不同类型字段设置null_value,以及查询时的具体用法。主要应用于统一处理缺失值、聚合分析等场景,与exists查询和应用层处理相比各有优劣。该功能是处理null值搜索和聚合的直接解决方案,但会略微增加索引大小。

2025-06-08 23:42:34 1316

原创 【Elasticsearch】映射:详解 _source & store 字段

本文详细介绍了Elasticsearch中_source和store字段的区别与用法。_source字段默认启用,存储文档的原始JSON内容,支持完整文档检索、高亮和重新索引等操作。而store是字段级属性,单独存储特定字段,适合只需访问部分字段的场景。两者主要区别在于:_source是文档级存储,开销较大;store是字段级存储,更高效但功能有限。建议在大多数情况下保持_source启用,仅对需要频繁访问的特定字段设置store属性。合理使用这两个特性可以平衡存储开销和查询性能。

2025-06-08 19:16:21 1193

原创 【Elasticsearch】映射:fielddata 详解

fielddata 是 Elasticsearch 中一种数据结构,用于在内存中缓存字段数据。当需要对 text 字段或其他非 doc_values 支持的字段执行上述操作时,Elasticsearch 需要将这些字段的值加载到内存中,这就是 fielddata 的作用。

2025-06-08 14:18:18 1114

原创 【Kibana】Kibana 大数据分析实战(一)

kibana_sample_data_ecommerce 是 Elastic 官方提供的电商业务模拟数据集,主要用于 Kibana 的功能演示和数据可视化练习。这个数据集模拟了一个在线零售商的交易数据。

2025-06-07 17:15:38 1123 1

原创 【Elasticsearch】映射:Join 类型、Flattened 类型、多表关联设计

在 Elasticsearch 中,由于它是面向文档的 NoSQL 数据库,不像关系型数据库那样原生支持 JOIN 操作,因此需要采用特殊的设计方案来实现多表关联。

2025-06-07 11:51:02 831

原创 【Elasticsearch】映射:Nested 类型

Nested(嵌套)类型是 Elasticsearch 中一种特殊的数据类型,用于处理对象数组(object arrays)中对象的独立性。在默认情况下,Elasticsearch 会将对象数组扁平化(flattened),这会导致数组内对象之间的关联丢失。Nested 类型解决了这个问题,它使数组中的每个对象被独立索引和查询。

2025-06-06 23:54:28 1809 1

原创 【Elasticsearch】Elasticsearch 核心技术(二):映射

动态映射是 Elasticsearch 自动检测和创建字段映射的能力。当索引一个新文档时,如果包含未定义的字段,Elasticsearch 会根据字段值自动推断数据类型并创建映射。

2025-06-05 22:13:07 1094 1

原创 【Elasticsearch】ILM(Index Lifecycle Management)策略详解

ILM(Index Lifecycle Management,索引生命周期管理)是 Elasticsearch 提供的一种自动化管理索引生命周期的机制。它允许用户根据预先定义的策略,自动执行索引的滚动更新(rollover)、分片分配、冻结和删除等操作,无需人工干预。

2025-06-02 20:07:08 1266

原创 【Elasticsearch】Elasticsearch 核心技术(一):索引

索引模板(Index Template)是 Elasticsearch 中一种自动为新创建的索引应用预定义配置(包括设置、映射和别名)的机制。当新索引的名称与模板中定义的模式匹配时,Elasticsearch 会自动将模板中的配置应用到该索引。

2025-06-02 14:31:10 949

原创 【Python Cookbook】文件与 IO(三)

需要强调的一点是,内存映射一个文件并不会导致整个文件被读取到内存中。也就是说,文件并没有被复制到内存缓存或数组中。相反,操作系统仅仅为文件内容保留了一段虚拟内存。当你访问文件的不同区域时,这些区域的内容才根据需要被读取并映射到内存区域中。而那些从没被访问到的部分还是留在磁盘上。所有这些过程是透明的,在幕后完成!

2025-06-01 14:02:39 991

原创 【Python Cookbook】文件与 IO(二)

当你想模拟一个普通文件的时候,StringIO 和 BytesIO 类是很有用的。比如,在单元测试中,你可以使用 StringIO 来创建一个包含测试数据的类文件对象,这个对象可以被传给某个参数为普通文件对象的函数。需要注意的是, StringIO 和 BytesIO 实例并没有正确的整数类型的文件描述符。因此,它们不能在那些需要使用真实的系统级文件,如文件,管道或者是套接字的程序中使用。

2025-06-01 13:59:56 958

原创 【Python】解析 io.StringIO 与 io.BytesIO

io.StringIO 和 io.BytesIO 是 Python 中用于内存中模拟文件操作的两个类,分别用于处理文本数据和二进制数据。它们的主要优势是避免实际文件 I/O 操作,从而提高效率并简化代码。

2025-05-31 21:48:55 588

原创 【Python Cookbook】文件与 IO(一)

当读取一个未知编码的文本时使用 latin-1 编码永远不会产生解码错误。使用 latin-1 编码读取一个文件的时候也许不能产生完全正确的文本解码数据,但是它也能从中提取出足够多的有用数据。同时,如果你之后将数据回写回去,原先的数据还是会保留的。

2025-05-31 18:14:05 829

原创 【OpenSearch】高性能 OpenSearch 数据导入

以下是一个高性能的 Python 脚本,用于向 OpenSearch 实例批量导入约 10GB 的数据。这个脚本使用了最佳实践来优化写入性能。

2025-05-30 23:25:14 1254

原创 【Python】yield from 功能解析

yield from 是 Python 中的一个语法(PEP 380),用于简化生成器(generator)中委托子生成器的操作。它的核心作用是让一个生成器能够将部分或全部生成逻辑 “委托” 给另一个生成器,从而避免手动编写循环来逐个生成子生成器的值。

2025-05-30 11:11:21 662

原创 【Python Cookbook】迭代器与生成器(四)

这种特殊的方法对于一些特定的会被重复调用的函数很有效果,比如涉及到 I/O 调用的函数。举例来讲,如果你想从套接字或文件中以数据块的方式读取数据,通常你得要不断重复的执行 read() 或 recv() ,并在后面紧跟一个文件结尾测试来决定是否终止。这节中的方案使用一个简单的 iter() 调用就可以将两者结合起来了。其中 lambda 函数参数是为了创建一个无参的 callable 对象,并为 recv 或 read() 方法提供了 size 参数。

2025-05-29 23:30:55 976

原创 【Python Cookbook】迭代器与生成器(三)

本文介绍了Python中处理迭代和集合操作的几种实用方法。首先讲解了使用itertools模块中的permutations()、combinations()和combinations_with_replacement()函数来生成排列组合。然后介绍了enumerate()函数在迭代时跟踪索引的用法,包括自定义起始索引值。接着说明了zip()函数如何同时迭代多个序列,以及使用zip_longest()处理不等长序列的情况。这些技巧可以简化代码,提高处理集合数据的效率,特别在需要组合、索引或并行迭代时非常实用。

2025-05-26 23:28:24 917

原创 【Python Cookbook】迭代器与生成器(二)

当你需要编写一个生成器函数,但这个生成器还需要提供一些额外的状态(比如历史记录、计数器等)给外部使用时,单纯用生成器函数可能不够方便(因为生成器函数的主要目的是 yield 值,而不是管理状态)。这时候,你可以改用类来实现,将生成器逻辑放在 __iter__() 方法中,并通过类的属性暴露外部状态。

2025-05-25 22:01:39 767

原创 【DevOps】Git 命令实战:一个简单的 Web 开发项目示例

让我们通过一个具体的 Web 开发项目来讲解 Git 的常用命令。假设我们要开发一个简单的个人博客网站。

2025-04-26 00:54:43 592 1

原创 【Python】迭代器(Iterator)vs 生成器(Generator)

迭代器是一个可以逐个访问元素的对象,比如 list、dict、set 都可以通过 iter() 转换成迭代器。

2025-04-18 00:12:46 736 1

原创 【Python Cookbook】迭代器与生成器(一)

DepthFirstIterator 类和上面使用生成器的版本工作原理类似,但是它写起来很繁琐,因为迭代器必须在迭代处理过程中维护大量的状态信息。坦白来讲,没人愿意写这么晦涩的代码。将你的迭代器定义为一个生成器后一切迎刃而解。

2025-04-17 23:56:16 901

原创 【AutoTest】自动化测试工具大全(Python)

一个精心整理的 Python 测试自动化框架、工具、库和软件的综合列表,帮助软件工程师在 Python 上轻松地启动测试自动化工作。

2025-04-12 17:47:15 1199

原创 【AutoTest】自动化测试工具大全(Java)

一个关于 Java 测试自动化框架、工具、库和软件的综合精心整理的列表,帮助软件工程师在 Java 上轻松启动测试自动化。

2025-04-12 16:39:50 1151

原创 【Python Cookbook】数字日期和时间(四)

Olson 时区数据库(也称为 tz database 或 zoneinfo database)是一个全球时区信息的标准数据库,用于计算机系统和软件中正确表示和转换不同地区的时区。它由 Arthur David Olson 创建并维护,因此通常称为 Olson 时区。

2025-04-12 12:22:22 650

原创 【Python Cookbook】数字日期和时间(三)

NumPy 是 Python 领域中很多科学与工程库的基础,同时也是被广泛使用的最大最复杂的模块。即便如此,在刚开始的时候通过一些简单的例子和玩具程序也能帮我们完成一些有趣的事情。

2025-04-11 22:13:50 1053

原创 【Python Cookbook】数字日期和时间(二)

大整数和字节字符串之间的转换操作并不常见。然而,在一些应用领域有时候也会出现,比如密码学或者网络。例如,IPv6 网络地址使用一个 128 位的整数表示。如果你要从一个数据记录中提取这样的值的时候,你就会面对这样的问题。

2025-04-06 20:52:18 1082

原创 【Python Cookbook】数字日期和时间(一)

对于大多数使用到浮点的程序,没有必要也不推荐这样做。尽管在计算的时候会有一点点小的误差,但是这些小的误差是能被理解与容忍的。如果不能允许这样的小误差(比如涉及到金融领域),那么就得考虑使用 decimal 模块了。

2025-04-06 19:38:25 765

原创 【Python Cookbook】字符串和文本(五):递归下降分析器

BNF(Backus-Naur Form,巴科斯-诺尔范式)和 EBNF(Extended Backus-Naur Form,扩展巴科斯-诺尔范式)是用于描述编程语言或其他形式语言语法的元语言(描述语言的语言)。它们是编译器设计、文档规范和协议定义中的基础工具。

2025-04-04 18:02:43 1873

原创 【Python Cookbook】字符串和文本(四)

在生成 HTML 或者 XML 文本的时候,如何正确的转换特殊标记字符是一个很容易被忽视的细节。特别是当你使用 print() 函数或者其他字符串格式化来产生输出的时候。使用像 html.escape() 的工具函数可以很容易的解决这类问题。

2025-04-04 16:00:49 1082

原创 【编程之路】动态格式化字符串

这段代码定义了一个函数 sub(text),它使用字符串的 format_map() 方法结合自定义的 safesub 函数和调用者的局部变量来动态格式化字符串。

2025-04-03 23:19:58 1064

原创 【编程之路】按指定大小合并数据块

这段代码定义了一个生成器函数 combine(),用于将多个小块数据(如字符串或字节)按指定大小(maxsize)合并成较大的块,然后通过文件操作写入文件。

2025-04-02 23:53:20 890

原创 【Python Cookbook】字符串和文本(三)

文本清理问题会涉及到包括文本解析与数据处理等一系列问题。在非常简单的情形下,你可能会选择使用字符串函数(比如 str.upper() 和 str.lower())将文本转为标准格式。使用 str.replace() 或者 re.sub() 的简单替换操作能删除或者改变指定的字符序列。你同样还可以使用 unicodedata.normalize() 函数将 Unicode 文本标准化。

2025-03-31 23:42:46 1075 1

原创 【弹性计算】异构计算云服务和 AI 加速器(五):EAIS & AI 加速器

除了支持预定义规格的异构计算加速实例,还可以通过弹性加速实例(Elastic Accelerated Computing Instance,EAIS)以池化的方式将前端 CPU 的核心数和后端的异构加速设备解耦,让前端 ECS 动态挂载、后端异构计算加速实例卸载。前端和后端异构计算加速实例都以虚拟化的方式启动。通过虚拟化的方式可以对 GPU、FPGA、NPU 等不同的异构加速实例化调度和管理。

2025-03-29 11:24:38 949

原创 【弹性计算】异构计算云服务和 AI 加速器(四):FPGA 虚拟化技术

将 FPGA 的高性价比算力通过云输出,使得 FPGA 的算力普惠化、平民化,这是 FPGA as a Service 的核心出发点和立足点。同时,云上使用 FPGA 与 FPGA 的传统使用方式也有着非常大的区别。FPGA as a Service 的核心就是 FPGA 虚拟化技术。

2025-03-27 22:34:37 1423

空空如也

空空如也

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

TA关注的人

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