- 博客(98)
- 收藏
- 关注
原创 掌握ElasticSearch(八):聚集、文档间的关系
在这个示例中,interestsname和type。},在这个示例中,question和answer。question是父文档类型,answer是子文档类型。
2024-11-05 17:53:21 987
原创 掌握ElasticSearch(七):相关性评分
TF-IDF(Term Frequency-Inverse Document Frequency,词频-逆文档频率)是一种常用的统计方法,用于评估一个词对文档或语料库的重要程度。TF (Term Frequency, 词频):一个词在文档中出现的频率。IDF (Inverse Document Frequency, 逆文档频率):一个词在整个文档集合中出现的频率的倒数,用来衡量这个词的独特性。
2024-11-01 11:17:06 1277
原创 掌握ElasticSearch(六):分析过程
Elasticsearch 的分析过程是将文本数据转换成适合搜索的形式的关键步骤。这一过程主要包括四个阶段:字符过滤、分词、词条过滤和词条索引。描述:用户可以根据需要组合不同的分词器、字符过滤器和词条过滤器来创建自定义分析器。示例。
2024-10-30 11:02:48 853
原创 掌握ElasticSearch(五):查询和过滤器
在 Elasticsearch 中,查询(Query)和过滤器(Filter)是用于检索和筛选数据的重要组成部分。它们虽然都能用来查找文档,但在性能和用法上有所不同。下面详细介绍查询和过滤器的概念以及它们之间的区别。
2024-10-23 13:49:51 1186
原创 掌握ElasticSearch(四):数据类型、回复体
Elasticsearch 是一个分布式的搜索和分析引擎,适用于需要快速搜索大量数据的应用场景。当向 Elasticsearch 发送请求(例如搜索或索引操作)时,它会返回一个 JSON 格式的响应体。这个响应体包含了关于请求结果的详细信息。在 Elasticsearch 中,文档(Document)是最小的数据单元,每个文档都是 JSON 格式的数据。为了有效地索引和搜索这些文档,Elasticsearch 定义了多种数据类型来表示文档中的字段。
2024-10-23 12:59:34 1204
原创 掌握ElasticSearch(二):如何将一台电脑上的Elasticsearch服务迁移到另一台电脑上
Elasticsearch dump是一个用于将Elasticsearch索引数据导出为JSON格式的工具。你可以使用Elasticsearch dump通过命令行或编程接口来导出数据。将源电脑导出的插件放置到目标电脑的es的安装目录的plugins文件夹下。插件存放在安装目录下的plugins文件夹中。一个插件对应一个子文件夹。在目标电脑上安装同版本的Elasticsearch。拷贝原来的elasticsearch.yml配置。
2024-10-22 16:28:06 307
原创 掌握ElasticSearch(三):探索核心概念——文档、索引、分片、倒排索引
通过分片,Elasticsearch 可以将一个大的索引分成多个部分,这些部分可以分布在不同的节点上,从而实现水平扩展。Elasticsearch 支持动态映射,这意味着当我们第一次索引一个文档时,Elasticsearch 会根据文档的结构自动推断出字段的数据类型,并为这些字段创建映射。例如,如果一个字段的值总是相同的,或者某些字段不需要被搜索,动态映射可能会导致这些字段被索引,占用额外的存储空间。在 Elasticsearch 中,索引(Index)是一个非常核心的概念,它是存储相关文档的容器。
2024-10-22 15:48:30 1697
原创 掌握ElasticSearch(一):Elasticsearch安装与配置、Kibana安装
Elasticsearch是一个提供可扩展的企业级搜索服务的工具。它主要提供了大数据搜索和分析服务。相较于传统的关系数据库,Elasticsearch具有更高的性能、易扩展性和良好的容错性。传统的关系数据库在处理大数据时存在明显的短板,主要表现在性能差和扩展难的问题上。即使采用一定的方法去优化SQL,查询速度依然可能很慢,而关系数据库的集群搭建也不太容易,查询性能在很多业务场景中依然没有保障。相较于关系数据库,Elasticsearch存在几个明显的优点:高性能、易扩展和良好的容错性。
2024-10-21 19:36:26 1310
原创 Zookeeper快速入门:部署服务、基本概念与操作
持久节点 (Persistent Node)不会自动删除。可以有子节点。适用于需要长期存在的数据。临时节点 (Ephemeral Node)客户端会话结束时自动删除。不能有子节点。适用于表示客户端的存在或状态。持久顺序节点 (Persistent Sequential Node)不会自动删除。创建时自动添加序列号。适用于需要唯一标识符的场景,例如任务分配。临时顺序节点 (Ephemeral Sequential Node)客户端会话结束时自动删除。创建时自动添加序列号。
2024-10-12 21:54:00 1288
原创 Dubbo快速入门(一):分布式与微服务、Dubbo基本概念
在互联网时代,随着用户基数的急剧增长和技术的不断进步,互联网项目与传统项目相比有了显著的区别。因此,互联网项目更加注重用户体验,包括界面的美观度、功能的丰富性、加载的速度以及系统的稳定性。在互联网架构中,为了实现上述目标,通常会采用集群和分布式计算的技术方案。例如,在一个分布式系统中,为了提高系统的可用性和性能,通常会采用集群技术来部署关键组件,如Web服务器、数据库和缓存等。集群技术主要用于解决单点故障问题,提高系统的可靠性和可用性,同时也能通过负载均衡来提升系统的处理能力。
2024-09-26 10:47:46 1352
原创 MySQL连接查询解析与性能优化成本
也就是说一条语句在server层中执行的成本是和它操作的表使用的存储引擎是没关系的,所以关于这些操作对应的成本常数就存储在了server_cost表中,而依赖于存储引擎的一些操作对应的成本常数就存储在了engine_cost表中。当需要组合来自不同表的信息时,通常会使用连接查询。的驱动表(即,left join中左边的表,或right join中右边的表)的记录来说,如果无法在被驱动表中找到匹配ON子句中的过滤条件的记录,那么该记录仍然会被加入到结果集中,对应的被驱动表记录的各个字段使用NULL值填充。
2024-09-22 15:57:17 1032
原创 深入MySQL的索引实践及优化
索引是帮助MySQL高效获取数据的数据结构。简单来讲,数据库索引就像是书前面的目录,能加快数据库的查询速度。对于海量数据来说,它的目录也是很大的,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中。InnoDB提供的一种分类方式,InnoDB的每张表都会有一个聚集索引,有且仅有一个,这也是该表的物理存储方式;非聚集索引可以有多个;InnoDB和MyISAM会自动为主键或者声明为UNIQUE的列去自动建立B+树索引。- 聚簇索引(主键索引):根据主键构建的索引叫做聚簇索引。
2024-09-13 12:01:17 1231
原创 MySQL的启动选项与配置管理:掌握数据库的强大定制能力
MySQL是一个强大的关系型数据库管理系统,提供了丰富的服务以支持数据的存储、管理和访问。除了基本的数据操作功能之外,MySQL还允许用户通过启动选项和配置文件来调整其行为,以适应不同的应用场景。本文将详细介绍MySQL的启动选项及其配置管理方法,并通过示例来说明如何利用这些功能来优化MySQL的性能和安全性。MySQL的服务器程序和客户端程序有许多可配置的启动选项,这些选项允许用户在启动时改变程序的行为。如果同一选项在多个配置文件或组中定义,则最后读取的文件或组中的设置优先。选项名是区分大小写的,如。
2024-09-03 17:04:27 1017
原创 MySQL的服务器与客户端:架构解析与实践
MySQL是一个广泛使用的开源关系数据库管理系统,其核心架构由服务器端和客户端两大部分组成。本文旨在探讨MySQL服务器端和客户端的工作原理,理解它们是如何协同工作来完成数据的增删改查操作的。
2024-09-03 16:49:10 1309
原创 ~/.bashrc、 ~/.bash_profile、~/.profile、 /etc/profile几个配置文件的区别
/.bashrc:适用于每个用户的 bash shell,每次打开新的终端窗口时加载。:适用于每个用户的 bash shell,登录时加载,可以包含~/.bashrc。~/.profile:适用于每个用户的所有 shell,登录时加载。:适用于所有用户的系统范围配置,登录时加载。根据你的需求,你可以选择合适的地方来配置环境变量或其他个性化设置。通常,如果你只需要配置 bash shell 的个性化设置,可以使用~/.bashrc;如果需要设置全局环境变量,可以使用或~/.profile。
2024-09-02 14:33:46 1453
原创 软件开发最佳实践:接口设计、自测与效率提升
测试驱动开发(Test-Driven Development, TDD)是一种软件开发方法,它要求在编写功能代码之前先编写测试用例。这种方法有助于保证代码的质量,并促进更好的设计。接口设计是前后端通信的基础,合理的接口设计可以提高开发效率,降低维护成本。提升开发效率是每个软件团队都在追求的目标。
2024-08-28 18:58:10 1069
原创 全面解析软件开发流程:从需求分析到部署上线
后端开发者基于需求文档设计API接口,包括定义URL路径、HTTP请求方法(GET, POST, PUT, DELETE等)、请求参数及格式(如JSON、XML)、响应数据结构等。在项目启动阶段,需要确保产品团队、前端工程师、后端工程师、测试团队以及用户体验设计师(UED)等所有关键角色都能对项目需求有一个统一且深刻的理解。这一步骤旨在确保所选的技术方案能够满足项目需求,并且是可行的。在开发完成后,需要进行一系列的测试来确保系统的稳定性和性能符合预期。
2024-08-28 18:57:35 671
原创 提升代码质量的艺术:最佳实践与编码规范
在软件开发过程中,良好的编程习惯和代码规范是构建高质量软件的关键。本文将探讨一些实用的编码技巧,帮助开发者写出更加易读、易于维护的代码。将被调用的函数放置在其调用者之下,可以建立一种直观的自顶向下的逻辑流,使得阅读者能够更好地理解程序的执行顺序。避免将注释与代码混合在一起,而是将其放在合适的位置,以便于理解和维护。限制每行代码的长度,确保代码能在不拖动水平滚动条的情况下完全显示,有助于提高代码的可读性。即使循环或条件体为空,也应该使用明确的语法结构来增强代码的可读性。在面向对象的语言中,
2024-08-27 11:49:40 432
原创 回调机制在Java中的应用与实践
在软件工程中,回调是一种允许程序或对象将执行权交给另一个函数的编程模式。它使得一个函数可以被另一个函数调用,而不是直接控制整个流程。这种模式在异步编程、事件驱动系统以及多线程环境中非常有用。在Java中,我们可以使用多种方式来实现回调,其中最常用的是接口和匿名内部类,或者使用Lambda表达式(从Java 8开始)。首先,我们需要定义一个接口,这个接口将包含一个或多个方法,这些方法将在适当的时机被调用。实现回调客户端需要实现这个接口,并提供具体的方法实现。注册并触发回调现在可以在需要的地方注册这个回
2024-08-27 10:56:39 990
原创 优化代码设计:构建高效、安全与可维护的应用程序
自定义注解可以帮助简化代码,避免在多个地方重复相同的逻辑或配置。面向切面编程(AOP)是一种编程范式,用于模块化横切关注点。通过自定义注解结合AOP可以方便地记录对数据库的操作,便于后续日志分析。示例步骤 1: 创建自定义注解Retention;Target;步骤 2: 应用自定义注解// 更新用户信息// 这里可以是调用DAO层的方法// 创建新用户// 删除用户。
2024-08-23 10:35:37 926
原创 Java的Optional类——解决空指针异常的好工具
类是 Java 8 引入的一个容器对象,旨在解决空指针异常的问题。Optional类提供了一种优雅的方式来处理可能为 null 的值,从而避免了显式的 null 检查。这对于提高代码的可读性和减少空指针异常非常有用。
2024-08-20 14:11:38 392
原创 Java的Lambda表达式与Stream类
API,它提供了一种新的处理数据的方式,尤其适合于集合操作。流API的设计目的是为了更高效地处理数据集,尤其是当数据集很大时。它支持函数式编程风格,并且可以很容易地并行化。Lambda 表达式是 Java 8 引入的一个重要特性,它使得代码更加简洁、易于理解和维护。Lambda 表达式允许你把功能作为方法的参数,这极大地简化了函数式接口的使用。下面通过一些具体的例子来说明如何使用Stream API结合Lambda表达式。接下来,我们将通过几个具体的示例来展示如何使用 Lambda 表达式。
2024-08-20 11:46:56 1027
原创 WebSocket协议解析
掩码标志是一个位标志,用来指示WebSocket帧中的有效载荷数据是否已经被掩码(即加密)。这个标志位于WebSocket帧头部的第一个字节中,它是第7个比特位(从右向左计数)。
2024-08-19 20:02:08 1233
原创 函数代码规范
编写代码与写作其他类型的文章非常相似。在撰写论文或文章时,我们往往先将脑海中的想法直接记录下来,然后再进行精炼和打磨。初稿可能显得粗糙且杂乱无章,但我们可以不断地对其进行优化,直到它符合我们的预期。当我开始编写函数时,它们往往冗长且复杂,包含大量的缩进和嵌套循环,以及过长的参数列表。函数名可能是随意选取的,并且常常会出现重复的代码片段。不过,我会为这些函数编写一套单元测试,确保每一行代码都能被覆盖到。之后,我逐步对这些代码进行打磨:分解函数、修改命名、消除重复。
2024-08-19 15:50:10 302
原创 Java命名规范:名副其实、避免误导、做有意义的区分、易读和可搜索
在编程中,命名是至关重要的一环。一个好的命名能够提高代码的可读性、可维护性和可扩展性。本文将介绍一些关于Java命名的原则和技巧,帮助你写出更高质量的代码。
2024-08-15 17:34:26 390
原创 追求代码的整洁与美丽
追求代码的整洁与美丽是一个持续的过程,它要求我们不断地审视和改进我们的代码。通过消除重复和提高表达力,我们不仅能够编写出更易于维护的代码,还能够享受到编程带来的乐趣。通过抽象和重构,我们可以将重复的逻辑提取到单一的位置,使得代码更加清晰,易于管理。”这意味着,当我们审视自己的代码时,应当感受到一种愉悦,一种对于问题解决方案的满足感。在编程的世界里,代码不仅仅是实现功能的工具,它也是艺术的体现。一段整洁、优雅的代码就像一首好诗,让人赏心悦目。在这个改进后的版本中,我们不仅消除了重复,还提高了代码的表达力。
2024-08-14 20:56:43 290
原创 基础测试常识
在塑造高质量软件产品的旅程中,测试扮演着确保符合用户期望与需求的基石角色。本博客将介绍测试的基本理念、指导方针及多样化的测试类别,旨在构建一个清晰、高效的测试实践框架。
2024-07-23 20:38:11 310
原创 GitLab教程(六):通过rebase来合并commit
Git Rebase的基本逻辑是将一个分支的更改移到另一个分支上,同时看起来好像这些更改是在目标分支的最新提交之后直接进行的一样,以此来实现更简洁、线性的项目历史。:Rebase 可以让你的提交历史更加整洁,因为它可以将多个提交合并为一个或几个有意义的提交,从而简化项目历史,使其更易于阅读和理解。:通过将一个分支的更改重新应用到另一个分支的顶端,rebase可以创建一个看似连续的提交序列,这对于查看项目历史和回溯问题非常有帮助。
2024-06-14 18:42:47 1743
原创 GitLab教程(五):高效的工作模式——Feature Branching
特性分支(Feature Branching)是一种软件开发工作流,尤其在使用Git或其他版本控制系统时被广泛采用。这种策略鼓励开发者为每一个新功能、改进或者代码改动创建一个独立的分支进行开发,以此来组织和管理代码更改。创建分支:当开始开发一个新的功能时,首先从主分支(通常是main或master)创建一个新分支。这个新分支被称为“特性分支”,命名上通常会反映该分支所包含的特性的名称或目的,例如。独立开发:开发者在特性分支上进行代码编写、测试和修改,而不会影响到主分支上的代码。
2024-06-14 17:39:46 969
原创 GitLab教程(四):分支(branch)和合并(merge)
命令进行合并时,Git具备一定的智能自动化处理能力:如果一个分支仅修改了文件A,而另一个分支独立地修改了文件B,Git能够无缝整合这些更改,自动完成合并过程——即最终的代码既包含了对A文件的修改也包含了对B文件的修改。同样地,若两个分支虽然都修改了同一个文件,但涉及的是文件中互不重叠的部分,比如一个改动发生在第一行,另一个则在第二行,Git同样能巧妙地自动合并这些非冲突性修改。获取了远程分支的最新变化,或者当你想要合并本地的一个分支到当前分支时,就会用到这个命令。,默认会尝试合并远程分支到当前分支。
2024-06-12 19:46:34 5466
原创 GitLab教程(三):多人合作场景下如何pull代码和处理冲突
执行命令,在clone代码时指定本地仓库的文件夹名:我这里是指定了将拉下来的代码存在中,和在上一篇博客中产生的test文件夹相区分。也就是说,现在我本地有两个文件夹,用来模拟另一个同事A的本地仓库,test文件夹模拟我自己的本地仓库。
2024-06-11 19:53:34 964
原创 GitLab教程(二):快速上手Git
git clone用途:此命令用于从远程Git仓库下载代码库的完整拷贝到本地。当你想要在本地机器上拥有一个现有仓库的复制品并进行开发工作时,就会使用此命令。示例这里,是远程仓库的URL,username是仓库所有者的用户名,repository是仓库名。git status用途:此命令用来查看当前工作目录和暂存区的状态。它会显示出哪些文件被修改了、哪些文件是新建的但未被跟踪(untracked)、哪些文件已经准备好被提交(staged)等信息。示例输出上述输出显示了README.md。
2024-06-11 14:18:40 1779
原创 揭开ChatGPT面纱(4):单轮及多轮文本生成任务实践(completions接口)
openai版本==1.6.1,本博客对应文件夹04在前面的博客中介绍过了OpenAI一共有11个接口,其中completions接口常用于文本生成类任务。下面来对completions接口的参数、使用进行一些介绍。
2024-04-22 09:45:00 1219
原创 揭开ChatGPT面纱(3):使用OpenAI进行文本情感分析(embeddings接口)
openai版本==1.6.1,本博客对应文件夹03在这一篇博客中我将使用OpenAI的embeddings接口判断21条服装评价是否是好评。
2024-04-21 16:09:54 1140
原创 揭开ChatGPT面纱(2):OpenAI主类源码概览
OpenAI版本==1.6.1在上一篇博客中,我实现并运行了一个OpenAI的demo,我们可以发现,想要使用OpenAI完成一个需求仅需要两个步骤,第一步是 传入参数 配置并声明对象,第二步是 调用接口 实现需求。清楚这两点后,我们接着来看看源码。在openai包中,OpenAI类是核心类,它作为客户端库的入口点,提供了与OpenAI API进行交互的方法和属性。这个类封装了API的各种功能,使得开发者可以通过编写代码来使用OpenAI提供的各种服务,如文本生成、图像生成、模型微调等。下面我将针对Open
2024-04-21 10:45:00 1261
原创 AI应用实战3:使用可视化工具进行可视化实践
常用的可视化工具有三个:Matplotlib、Seaborn、Plotly。其中,Matplotlib是最基础的,其他二者的都是基于它进行的封装。Breast Cancer Wisconsin (Diagnostic) 数据集是一个广泛应用在乳腺癌诊断识别领域的医学数据资源,其可通过访问以下链接获取:https://archive.ics.uci.edu/dataset/17/breast+cancer+wisconsin+diagnostic。
2024-04-20 13:59:47 938
原创 PandasAI的应用与实战解析(二):PandasAI使用流程与功能介绍
PandasAI这个工具最突出的优点就是通过结合了Pandas和生成式LLMs,极大地为开发人员降低了工作量。可以看到,对于开发人员来说实现一个需求需要完成多个步骤。PandasAI 使用生成式 AI 模型来理解和解释自然语言查询,并将其转换为 python 代码和 SQL 查询。然后,它使用代码与数据进行交互,并将结果返回给用户。可以看到,
2024-04-13 13:30:21 2772 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人