- 博客(110)
- 收藏
- 关注
原创 ElasticSearch深入解析(十):字段膨胀(Mapping 爆炸)问题的解决思路
最小化动态映射核心业务字段必须显式定义。动态字段使用Flattened类型或Runtime字段。分层处理数据将稳定字段与动态字段分离存储。对高频查询的动态字段,通过预定义映射。性能压测验证在模拟环境中测试字段数对写入、查询、聚合的影响。确保配置调整后性能指标符合预期。自动化运维使用索引模板(Index Templates)统一管理映射。结合 Logstash 或 Beats 在数据摄入阶段清洗字段。
2025-05-03 14:39:57
1285
原创 ElasticSearch深入解析(九):Object、Nested、Flattened类型
Elasticsearch 作为面向文档的搜索引擎,对嵌套数据的处理有多种方式,不同类型适用于不同的业务场景。Elasticsearch 中,JSON 文档的嵌套对象(如 )会被默认映射为 。其底层通过 字段扁平化 实现索引:将嵌套对象的字段展开为 的形式(如 、),存储为独立的字段。适用于 简单嵌套对象,且不需要对嵌套对象内部字段进行 关联查询 的场景。例如:此时 是一个简单对象,若只需查询 或 的独立值(不关心是否属于同一作者),Object 类型足够。当嵌套对象是 数组 时(如一个用户有多个
2025-05-03 14:28:18
1183
原创 ElasticSearch深入解析(八):索引设置、索引别名、索引模板
Elasticsearch 7.8及之后版本支持两种定义模板的方式,可简记为普通模板定义方式和组件模板新增/创建方式。PUT _index_template/<template_name> # 模板名称(唯一)"index_patterns": ["logs-*", "metrics-*"], # 匹配的索引名模式(支持通配符)"priority": 100, # 模板优先级(高优先级覆盖低优先级)"template": { # 新索引的配置内容。
2025-05-02 17:20:55
1319
原创 ElasticSearch深入解析(七):数据类型与回复体
Elasticsearch 是一个分布式的搜索和分析引擎,适用于需要快速搜索大量数据的应用场景。当向 Elasticsearch 发送请求(例如搜索或索引操作)时,它会返回一个 JSON 格式的响应体。这个响应体包含了关于请求结果的详细信息。在 Elasticsearch 中,文档(Document)是最小的数据单元,每个文档都是 JSON 格式的数据。为了有效地索引和搜索这些文档,Elasticsearch 定义了多种数据类型来表示文档中的字段。
2025-05-02 14:43:29
780
原创 ElasticSearch深入解析(六):集群核心配置
NIOFS(非阻塞文件系统)通常指基于非阻塞I/O(Non-blocking I/O)技术实现的文件系统或文件操作机制,其核心特点是允许在文件读写等操作过程中无需等待操作完成,即可继续处理其他任务,从而提升系统在高并发场景下的效率。mmapfs并非独立的物理文件系统,而是一种通过内存映射(Memory Mapping)技术实现的文件操作机制。它将磁盘文件的内容直接映射到进程的虚拟地址空间,使应用程序能像访问内存一样读写文件,无需显式执行I/O系统调用(如readwrite。
2025-04-29 21:15:00
1087
原创 ElasticSearch深入解析(五):如何将一台电脑上的Elasticsearch服务迁移到另一台电脑上
Elasticsearch dump是一个用于将Elasticsearch索引数据导出为JSON格式的工具。你可以使用Elasticsearch dump通过命令行或编程接口来导出数据。将源电脑导出的插件放置到目标电脑的es的安装目录的plugins文件夹下。插件存放在安装目录下的plugins文件夹中。一个插件对应一个子文件夹。在目标电脑上安装同版本的Elasticsearch。拷贝原来的elasticsearch.yml配置。
2025-04-28 18:42:02
683
原创 ElasticSearch深入解析(四):ElasticSearch 8.X的节点角色划分
在分布式搜索与数据分析场景中,合理的节点角色划分是 ElasticSearch 8.x 集群高效运行的核心架构设计。本文深度解析 ElasticSearch 8.x 全新的节点角色体系,通过node.roles参数的精细化配置,帮助开发者理解如何通过功能分离提升集群稳定性与资源利用率。以Elasticsearch 8.X版本集群为例,如果我们不手动设置节点角色,则默认节点角色为cdfhilmrstw:当集群规模比较大之后(比如集群节点数大于6个),就需要手动设定、配置节点角色。
2025-04-28 18:39:44
965
原创 ElasticSearch深入解析(三):Elasticsearch 7的安装与配置、Kibana安装
Elasticsearch是一个提供可扩展的企业级搜索服务的工具。它主要提供了大数据搜索和分析服务。相较于传统的关系数据库,Elasticsearch具有更高的性能、易扩展性和良好的容错性。传统的关系数据库在处理大数据时存在明显的短板,主要表现在性能差和扩展难的问题上。即使采用一定的方法去优化SQL,查询速度依然可能很慢,而关系数据库的集群搭建也不太容易,查询性能在很多业务场景中依然没有保障。相较于关系数据库,Elasticsearch存在几个明显的优点:高性能、易扩展和良好的容错性。
2025-04-23 23:15:00
1010
原创 ElasticSearch深入解析(二):核心概念
当某主分片所在的数据节点不可用时,会导致主分片丢失现象,若短时间内不对此采取补救措施,集群会将该分片对应的副本提升为新的主分片。与关系型数据库不同的是,Elasticsearch的一个字段可以设定两种或两种以上的数据类型,通过定义multi-field来灵活地满足复杂的业务需求。键是字段的名称,值是不同数据类型的字段。有了倒排列表,当检索“chatgpt”时,就无须对逐个文档进行扫描,而可以借助倒排索引锁定ID为1、2、3、4的文档,实现以O(1)的时间复杂度快速召回数据,达到快速响应的目的。
2025-04-23 13:28:56
727
原创 ElasticSearch深入解析(一):Elastic Stack全景
Elastic数据平台在和等场景中的应用颇具亮点。APM(Application Performance Management,应用性能管理)是一种用于监控和管理软件应用程序性能与可用性的技术框架,旨在帮助企业确保应用程序高效运行、快速定位性能瓶颈,并优化用户体验。Elastic公司经过两年精心研发,推出了一个全新特性ESRE(Elasticsearch Relevance Engine,最早发布于Elasticsearch 8.8版本)。它是一款基于AI的搜索引擎,实现开箱即用的卓越语义搜索。
2025-04-22 22:00:00
1036
原创 使用Spring boot的@Transactional进行事务管理
在 Spring Boot 中,是用于声明式事务管理的关键注解。它基于 Spring 的 AOP(面向切面编程)实现,可以简化数据库事务的管理。
2025-02-08 15:37:12
2278
原创 星火大模型接入及文本生成HTTP流式、非流式接口(JAVA)
接口文档在这个地址查看:https://www.xfyun.cn/doc/spark/HTTP%E8%B0%83%E7%94%A8%E6%96%87%E6%A1%A3.html#_1-%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E。本文以模型Spark Lite为例,重要信息(APIPassword、接口地址)在这个页面查看:https://console.xfyun.cn/services/cbm。相比非流式略微有一些不同,响应分成了多次,最后一个。
2025-01-24 10:30:13
1886
1
原创 分布式算法(五):初识ZAB协议
Zookeeper 是一种分布式协调服务,它帮助分布式系统中的进程或服务之间进行协作。配置管理:应用程序可以在 Zookeeper 中存储配置信息,并且可以在配置发生变化时得到通知。命名服务:为分布式系统中的组件提供一个统一的名字空间,类似 DNS 之于互联网。分布式同步:提供机制以确保多个节点之间的操作能够按照一定的顺序执行。组成员管理:跟踪集群中成员的状态,检测成员的加入和离开。领导选举:在一组服务器中选出一个领导者来协调某些活动。Znodes(节点)
2024-12-31 13:00:54
917
原创 分布式算法(四):Basic Paxos协议初探(角色、阶段)
在这个背景下,Paxos协议应运而生。想象一下,如果你正在使用一款流行的社交网络应用,无论是在世界的哪个角落,无论服务器集群内部发生了什么变化,你都能够顺利发布你的状态更新或与朋友交流,这就是Paxos等共识算法所保障的结果。在一个健康的Paxos系统中,少数派的意见不足以影响最终的决策结果,因为系统的设计原则是必须有超过一半的节点(即多数派)同意才能使提议生效。然而,随着节点数量的增加和地理分布的扩大,如何确保这些分散在全球各地的计算机能够像一个协调有序的整体一样工作,成为了工程师们面临的重大挑战之一。
2024-12-26 18:07:05
759
原创 分布式算法(三):分布式事务的解决方案——三阶段提交协议
文章目录一、核心实现原理优化三个阶段1.CanCommit询问阶段2.PreCommit预提交阶段3.DoCommit提交阶段二、故障恢复1.协调者发生故障心跳机制解决数据不一致问题2.部分参与者发生故障三、优缺点分析优点缺点三阶段提交协议(Three-Phase Commit, 3PC)是分布式系统中用于保证跨多个节点的数据一致性的算法。它是在两阶段提交(2PC)的基础上发展起来的,旨在解决2PC的一些局限性,如协调者单点故障和阻塞问题。3PC通过引入额外的准备阶段来尝试减少阻塞时间,并且允许参与者在某
2024-12-24 13:58:04
778
原创 分布式算法(二):分布式事务的解决方案——两阶段提交协议
两阶段提交协议(2PC)对强一致性的CP架构系统至关重要,它通过确保所有分布式节点在事务处理上达成一致,要么全部成功提交,要么全部回滚,从而维护了全局数据的一致性和完整性,同时提供了可靠的故障恢复机制,尽管可能牺牲一定的系统可用性和性能。这对于需要高度可靠和一致性的应用场景,如金融交易、分布式数据库操作等,具有不可替代的应用价值。然而,值得注意的是,虽然2PC非常适合强一致性的需求,但它也有一些缺点,特别是在高可用性和性能方面。
2024-12-23 17:28:50
984
原创 分布式算法(一):从ACID和BASE到CAP
BASE理论是“基本可用(Basically Available),软状态(Soft State),最终一致性(Eventual Consistency)”的缩写,它是对ACID的一种放松,旨在为高可用性和分区容忍性提供支持。这意味着在一个分布式的环境中,所有的节点需要同步进行更新,以保持数据的一致性。探索分布式系统中关于数据一致性和可用性的哲学——从ACID到BASE再到CAP定理,这是一个充满挑战和技术深度的话题,它不仅影响着我们如何设计和实现数据库,也深刻地改变了现代互联网应用的架构方式。
2024-12-19 18:18:13
1002
原创 ElasticSearch深入解析(十三):相关性评分
TF-IDF(Term Frequency-Inverse Document Frequency,词频-逆文档频率)是一种常用的统计方法,用于评估一个词对文档或语料库的重要程度。TF (Term Frequency, 词频):一个词在文档中出现的频率。IDF (Inverse Document Frequency, 逆文档频率):一个词在整个文档集合中出现的频率的倒数,用来衡量这个词的独特性。
2024-11-01 11:17:06
1490
原创 ElasticSearch深入解析(十二):分词
Elasticsearch 的分析过程是将文本数据转换成适合搜索的形式的关键步骤。这一过程主要包括四个阶段:字符过滤、分词、词条过滤和词条索引。描述:用户可以根据需要组合不同的分词器、字符过滤器和词条过滤器来创建自定义分析器。示例。
2024-10-30 11:02:48
927
原创 ElasticSearch深入解析(十一):查询和过滤器
在 Elasticsearch 中,查询(Query)和过滤器(Filter)是用于检索和筛选数据的重要组成部分。它们虽然都能用来查找文档,但在性能和用法上有所不同。下面详细介绍查询和过滤器的概念以及它们之间的区别。
2024-10-23 13:49:51
1626
原创 Zookeeper快速入门:部署服务、基本概念与操作
持久节点 (Persistent Node)不会自动删除。可以有子节点。适用于需要长期存在的数据。临时节点 (Ephemeral Node)客户端会话结束时自动删除。不能有子节点。适用于表示客户端的存在或状态。持久顺序节点 (Persistent Sequential Node)不会自动删除。创建时自动添加序列号。适用于需要唯一标识符的场景,例如任务分配。临时顺序节点 (Ephemeral Sequential Node)客户端会话结束时自动删除。创建时自动添加序列号。
2024-10-12 21:54:00
1422
原创 Dubbo快速入门(一):分布式与微服务、Dubbo基本概念
在互联网时代,随着用户基数的急剧增长和技术的不断进步,互联网项目与传统项目相比有了显著的区别。因此,互联网项目更加注重用户体验,包括界面的美观度、功能的丰富性、加载的速度以及系统的稳定性。在互联网架构中,为了实现上述目标,通常会采用集群和分布式计算的技术方案。例如,在一个分布式系统中,为了提高系统的可用性和性能,通常会采用集群技术来部署关键组件,如Web服务器、数据库和缓存等。集群技术主要用于解决单点故障问题,提高系统的可靠性和可用性,同时也能通过负载均衡来提升系统的处理能力。
2024-09-26 10:47:46
1499
1
原创 MySQL连接查询解析与性能优化成本
也就是说一条语句在server层中执行的成本是和它操作的表使用的存储引擎是没关系的,所以关于这些操作对应的成本常数就存储在了server_cost表中,而依赖于存储引擎的一些操作对应的成本常数就存储在了engine_cost表中。当需要组合来自不同表的信息时,通常会使用连接查询。的驱动表(即,left join中左边的表,或right join中右边的表)的记录来说,如果无法在被驱动表中找到匹配ON子句中的过滤条件的记录,那么该记录仍然会被加入到结果集中,对应的被驱动表记录的各个字段使用NULL值填充。
2024-09-22 15:57:17
1122
原创 深入MySQL的索引实践及优化
索引是帮助MySQL高效获取数据的数据结构。简单来讲,数据库索引就像是书前面的目录,能加快数据库的查询速度。对于海量数据来说,它的目录也是很大的,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中。InnoDB提供的一种分类方式,InnoDB的每张表都会有一个聚集索引,有且仅有一个,这也是该表的物理存储方式;非聚集索引可以有多个;InnoDB和MyISAM会自动为主键或者声明为UNIQUE的列去自动建立B+树索引。- 聚簇索引(主键索引):根据主键构建的索引叫做聚簇索引。
2024-09-13 12:01:17
1293
原创 MySQL的启动选项与配置管理:掌握数据库的强大定制能力
MySQL是一个强大的关系型数据库管理系统,提供了丰富的服务以支持数据的存储、管理和访问。除了基本的数据操作功能之外,MySQL还允许用户通过启动选项和配置文件来调整其行为,以适应不同的应用场景。本文将详细介绍MySQL的启动选项及其配置管理方法,并通过示例来说明如何利用这些功能来优化MySQL的性能和安全性。MySQL的服务器程序和客户端程序有许多可配置的启动选项,这些选项允许用户在启动时改变程序的行为。如果同一选项在多个配置文件或组中定义,则最后读取的文件或组中的设置优先。选项名是区分大小写的,如。
2024-09-03 17:04:27
1079
原创 MySQL的服务器与客户端:架构解析与实践
MySQL是一个广泛使用的开源关系数据库管理系统,其核心架构由服务器端和客户端两大部分组成。本文旨在探讨MySQL服务器端和客户端的工作原理,理解它们是如何协同工作来完成数据的增删改查操作的。
2024-09-03 16:49:10
1563
原创 ~/.bashrc、 ~/.bash_profile、~/.profile、 /etc/profile几个配置文件的区别
/.bashrc:适用于每个用户的 bash shell,每次打开新的终端窗口时加载。:适用于每个用户的 bash shell,登录时加载,可以包含~/.bashrc。~/.profile:适用于每个用户的所有 shell,登录时加载。:适用于所有用户的系统范围配置,登录时加载。根据你的需求,你可以选择合适的地方来配置环境变量或其他个性化设置。通常,如果你只需要配置 bash shell 的个性化设置,可以使用~/.bashrc;如果需要设置全局环境变量,可以使用或~/.profile。
2024-09-02 14:33:46
1843
原创 软件开发最佳实践:接口设计、自测与效率提升
测试驱动开发(Test-Driven Development, TDD)是一种软件开发方法,它要求在编写功能代码之前先编写测试用例。这种方法有助于保证代码的质量,并促进更好的设计。接口设计是前后端通信的基础,合理的接口设计可以提高开发效率,降低维护成本。提升开发效率是每个软件团队都在追求的目标。
2024-08-28 18:58:10
1153
原创 全面解析软件开发流程:从需求分析到部署上线
后端开发者基于需求文档设计API接口,包括定义URL路径、HTTP请求方法(GET, POST, PUT, DELETE等)、请求参数及格式(如JSON、XML)、响应数据结构等。在项目启动阶段,需要确保产品团队、前端工程师、后端工程师、测试团队以及用户体验设计师(UED)等所有关键角色都能对项目需求有一个统一且深刻的理解。这一步骤旨在确保所选的技术方案能够满足项目需求,并且是可行的。在开发完成后,需要进行一系列的测试来确保系统的稳定性和性能符合预期。
2024-08-28 18:57:35
1033
原创 提升代码质量的艺术:最佳实践与编码规范
在软件开发过程中,良好的编程习惯和代码规范是构建高质量软件的关键。本文将探讨一些实用的编码技巧,帮助开发者写出更加易读、易于维护的代码。将被调用的函数放置在其调用者之下,可以建立一种直观的自顶向下的逻辑流,使得阅读者能够更好地理解程序的执行顺序。避免将注释与代码混合在一起,而是将其放在合适的位置,以便于理解和维护。限制每行代码的长度,确保代码能在不拖动水平滚动条的情况下完全显示,有助于提高代码的可读性。即使循环或条件体为空,也应该使用明确的语法结构来增强代码的可读性。在面向对象的语言中,
2024-08-27 11:49:40
580
原创 回调机制在Java中的应用与实践
在软件工程中,回调是一种允许程序或对象将执行权交给另一个函数的编程模式。它使得一个函数可以被另一个函数调用,而不是直接控制整个流程。这种模式在异步编程、事件驱动系统以及多线程环境中非常有用。在Java中,我们可以使用多种方式来实现回调,其中最常用的是接口和匿名内部类,或者使用Lambda表达式(从Java 8开始)。首先,我们需要定义一个接口,这个接口将包含一个或多个方法,这些方法将在适当的时机被调用。实现回调客户端需要实现这个接口,并提供具体的方法实现。注册并触发回调现在可以在需要的地方注册这个回
2024-08-27 10:56:39
1157
原创 优化代码设计:构建高效、安全与可维护的应用程序
自定义注解可以帮助简化代码,避免在多个地方重复相同的逻辑或配置。面向切面编程(AOP)是一种编程范式,用于模块化横切关注点。通过自定义注解结合AOP可以方便地记录对数据库的操作,便于后续日志分析。示例步骤 1: 创建自定义注解Retention;Target;步骤 2: 应用自定义注解// 更新用户信息// 这里可以是调用DAO层的方法// 创建新用户// 删除用户。
2024-08-23 10:35:37
1046
原创 Java的Optional类——解决空指针异常的好工具
类是 Java 8 引入的一个容器对象,旨在解决空指针异常的问题。Optional类提供了一种优雅的方式来处理可能为 null 的值,从而避免了显式的 null 检查。这对于提高代码的可读性和减少空指针异常非常有用。
2024-08-20 14:11:38
457
原创 Java的Lambda表达式与Stream类
API,它提供了一种新的处理数据的方式,尤其适合于集合操作。流API的设计目的是为了更高效地处理数据集,尤其是当数据集很大时。它支持函数式编程风格,并且可以很容易地并行化。Lambda 表达式是 Java 8 引入的一个重要特性,它使得代码更加简洁、易于理解和维护。Lambda 表达式允许你把功能作为方法的参数,这极大地简化了函数式接口的使用。下面通过一些具体的例子来说明如何使用Stream API结合Lambda表达式。接下来,我们将通过几个具体的示例来展示如何使用 Lambda 表达式。
2024-08-20 11:46:56
1088
原创 WebSocket协议解析
掩码标志是一个位标志,用来指示WebSocket帧中的有效载荷数据是否已经被掩码(即加密)。这个标志位于WebSocket帧头部的第一个字节中,它是第7个比特位(从右向左计数)。
2024-08-19 20:02:08
1455
原创 函数代码规范
编写代码与写作其他类型的文章非常相似。在撰写论文或文章时,我们往往先将脑海中的想法直接记录下来,然后再进行精炼和打磨。初稿可能显得粗糙且杂乱无章,但我们可以不断地对其进行优化,直到它符合我们的预期。当我开始编写函数时,它们往往冗长且复杂,包含大量的缩进和嵌套循环,以及过长的参数列表。函数名可能是随意选取的,并且常常会出现重复的代码片段。不过,我会为这些函数编写一套单元测试,确保每一行代码都能被覆盖到。之后,我逐步对这些代码进行打磨:分解函数、修改命名、消除重复。
2024-08-19 15:50:10
323
原创 Java命名规范:名副其实、避免误导、做有意义的区分、易读和可搜索
在编程中,命名是至关重要的一环。一个好的命名能够提高代码的可读性、可维护性和可扩展性。本文将介绍一些关于Java命名的原则和技巧,帮助你写出更高质量的代码。
2024-08-15 17:34:26
429
原创 追求代码的整洁与美丽
追求代码的整洁与美丽是一个持续的过程,它要求我们不断地审视和改进我们的代码。通过消除重复和提高表达力,我们不仅能够编写出更易于维护的代码,还能够享受到编程带来的乐趣。通过抽象和重构,我们可以将重复的逻辑提取到单一的位置,使得代码更加清晰,易于管理。”这意味着,当我们审视自己的代码时,应当感受到一种愉悦,一种对于问题解决方案的满足感。在编程的世界里,代码不仅仅是实现功能的工具,它也是艺术的体现。一段整洁、优雅的代码就像一首好诗,让人赏心悦目。在这个改进后的版本中,我们不仅消除了重复,还提高了代码的表达力。
2024-08-14 20:56:43
319
原创 基础测试常识
在塑造高质量软件产品的旅程中,测试扮演着确保符合用户期望与需求的基石角色。本博客将介绍测试的基本理念、指导方针及多样化的测试类别,旨在构建一个清晰、高效的测试实践框架。
2024-07-23 20:38:11
332
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人