使用 AIStor 和 OpenSearch 增强搜索功能

在这篇文章中,我们将探讨搜索,特别是 OpenSearch 如何帮助我们识别模式或查看不断增长的数据中的趋势。例如,如果您正在查看运营数据,如果您的服务似乎是随机的,那么您需要尽可能回溯以识别模式并找出原因。这不仅适用于应用程序,还适用于来自每个可以想象的设备的大量日志,这些日志需要保留合理的时间,以便进行合规性和故障排除。但是,在快速存储(例如 NVMe)上存储数月/数年的可搜索数据可能会占用大量昂贵的驱动器空间。通常,过去几周的数据是搜索最多的,因此存储在最快的硬件上。但随着数据变旧,它对于立即进行故障排除的用处变得不那么大,并且不需要在昂贵的硬件上 - 即使它仍然包含一两个秘密。问题变成了,我们如何在不牺牲性能的情况下快速搜索这些存档数据。是否有可能两全其美?
OpenSearch 中的提示;基于 Apache Lucene 的分布式搜索和分析引擎。将数据添加到 OpenSearch 索引后,您可以对数据执行全文搜索。任何需要搜索的应用程序都有使用 OpenSearch 的用例,例如,您可以使用它来在应用程序中构建搜索功能,DevOps 工程师可以将 OpenSearch 用作日志分析引擎,后端工程师可以通过 OpenTelemetry 等收集器放置跟踪数据,以更好地了解应用程序性能。借助功能丰富的内置搜索和可视化功能,您可以查明基础架构问题(如磁盘空间不足、获取错误状态代码等),并在它们对运营造成严重破坏之前将其显示在控制面板中。但是,随着日志数据的增长,有时将所有数据保存在一个节点甚至单个集群上是不切实际的。我们喜欢 OpenSearch,因为它具有分布式设计,与 AIStor 不同,AIStor 可以并行存储您的数据并处理请求。AIStor 非常简单,只需一个简单的二进制文件即可启动和运行。您可以从笔记本电脑的单节点单驱动器配置开始,然后将其扩展到具有多驱动器、多节点和多站点的生产环境 - 具有您在企业级存储软件中期望的相同功能集。您不仅可以构建分布式 OpenSearch 集群,还可以随着集群的增长细分集群中各个节点的职责。您可以使用具有大磁盘的节点来存储数据,具有大量 RAM 的节点用于索引,以及具有大量 CPU 但较少磁盘的节点来管理集群的状态。
随着数据的增长,您可以将旧数据/存档数据分层到 AIStor 存储桶中,以便保留 SSD/NVMe 存储以存储添加到集群的最新数据。此外,当这些快照存储在 AIStor 存储桶中时,您可以直接搜索它们。从逻辑上讲,在移动快照时,重要的是要考虑到从远程驱动器访问数据比从本地驱动器访问数据慢,因此搜索查询的延迟通常较高,但提高存储效率通常是值得的。使用 AIStor,您可以获得最快的网络对象存储。高速网络上的分布式 AIStor 可以胜过本地存储。与其他速度较慢的对象存储不同,AIStor 可以无缝访问这些快照,就像它们在 OpenSearch 集群上的本地快照一样,从而在几秒钟内根据结果的大小在虹吸日志数据中搜索见解时节省宝贵的时间、网络带宽和团队精力。相比之下,本地还原需要数小时才能执行作,然后才能查询数据。OpenSearch 在与存储分层一起使用时效率更高,这降低了它的总拥有成本,此外,您还可以获得将数据写入 AIStor 的额外好处,这些数据是不可变的、受版本控制的,并且受纠删码保护。此外,将 OpenSearch 分层与 AIStor 对象存储结合使用,使数据文件可供其他云原生机器学习和分析应用程序使用。
基础设施
让我们使用 Docker 设置 OpenSearch 和 AIStor,并介绍一些功能来展示它们的功能。
开放搜索
我们将创建自定义 Docker 映像,因为我们将使用自定义插件构建它以连接到我们的 AIStor 对象存储。
FROM opensearchproject/opensearch:2.8.0ENV MINIO_ACCESS_KEY_ID minioadminENV MINIO_SECRET_ACCESS_KEY minioadminENV MINIO_ENDPOINT minio:9000ENV MINIO_PROTOCOL httpRUN /usr/share/opensearch/bin/opensearch-plugin install --batch repository-s3RUN /usr/share/opensearch/bin/opensearch-keystore createRUN echo $MINIO_ACCESS_KEY_ID | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.access_keyRUN echo $MINIO_SECRET_ACCESS_KEY | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.secret_keyRUN echo $MINIO_ENDPOINT | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.endpointRUN echo $MINIO_PROTOCOL | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.protocol
构建自定义 Docker 镜像
docker build --tag=opensearch-minio
运行以下 Docker 命令,使用我们之前下载的映像启动容器
docker run -d -p 9200:9200 -p 9600:9600 -v /usr/share/opensearch/data -e "discovery.type=single-node" opensearch-minio
使用默认的“admin”凭据将 curl 到 localhost 端口 9200,以验证 OpenSearch 是否正在运行
curl https://localhost:9200 -ku 'admin:admin'
您应该会看到类似于下面的输出
{"name" : "a937e018cee5","cluster_name" : "docker-cluster","cluster_uuid" : "GLAjAG6bTeWErFUy_d-CLw","version" : {"distribution" : "opensearch","number" : <version>,"build_type" : <build-type>,"build_hash" : <build-hash>,"build_date" : <build-date>,"build_snapshot" : false,"lucene_version" : <lucene-version>,"minimum_wire_compatibility_version" : "7.10.0","minimum_index_compatibility_version" : "7.0.0"},"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
我们也可以检查容器状态
$ docker container lsCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESa937e018cee5 opensearch-minio "./opensearch-docker..." 19 minutes ago Up 19 minutes 0.0.0.0:9200->9200/tcp, 9300/tcp, 0.0.0.0:9600->9600/tcp, 9650/tcp stupendous_burt
为 AIStor 设置存储库
为了设置可搜索的快照索引,您需要为 OpenSearch 集群设置一些先决条件和配置。我们将在这里详细介绍它们。
在 ‘opensearch.yaml’ 中,创建一个节点并定义节点角色
node.name: snapshots-node
node.roles: [ search ]
让我们使用“_snapshot”API 注册 AIStor 存储桶
curl -XPUT "http://localhost:9200/_snapshot/my-minio-repository" -H 'Content-Type: application/json' -d'
{"type": "s3","settings": {"bucket": "testbucket123","base_path": "my/snapshot/directory"}
}'
现在我们有了存储库,让我们继续创建一个可搜索的快照。
可搜索快照
为了制作快照,我们需要使用之前创建的存储库进行 API 调用。
curl -XPUT "http://localhost:9200/_snapshot/my-minio-repository/1"
我们来检查一下快照的状态
curl -XGET "http://localhost:9200/_snapshot/my-minio-repository/1"
{"snapshots": [{"snapshot": "1","version": "6.5.4","indices": ["opensearch_dashboards_sample_data_ecommerce","my-index","opensearch_dashboards_sample_data_logs","opensearch_dashboards_sample_data_flights"],"include_global_state": true,"state": "IN_PROGRESS",...}]
}
让我们在 AIStor 端也看看这个快照
root@aj-test-1:~# mc ls testbucket123/my/snapshot/directory
[2023-06-09 17:37:31 UTC] 1.5KiB STANDARD 1/
如上所示,我们在 AIStor 存储桶中使用 OpenSearch API 拍摄的快照副本。如上所示,我们在 AIStor 存储桶中使用 OpenSearch API 拍摄的快照副本。现在,您一定想知道,“我们已经拍摄了快照,但如何还原它,以便我们可以分析和搜索备份的索引?尽管使用 OpenSearch 非常有可能,但与传统意义上的恢复整个快照不同,我们将向您展示如何在快照仍存储在 AIStor 上时更有效地搜索快照。我们需要做的最重要的配置更改是将 ‘storage_type’ 设置为 'remote_snapshot”。此设置告诉 OpenSearch 快照是将在本地还原以供搜索,还是在存储在 AIStor 上时进行远程搜索。
curl -XPOST "http://localhost:9200/_snapshot/my-minio-repository/1/_restore" -H 'Content-Type: application/json' -d'
{"indices": "opensearch-dashboards*,my-index*","ignore_unavailable": true,"include_global_state": false,"include_aliases": false,"partial": false,"storage_type": "remote_snapshot","rename_pattern": "opensearch-dashboards(.+)","rename_replacement": "restored-opensearch-dashboards$1","index_settings": {"index.blocks.read_only": false},"ignore_index_settings": ["index.refresh_interval"]
}'
让我们列出所有索引,看看是否存在 ‘remote_snapshot’ 类型
curl -XGET "http://localhost:9200/my-index/_settings?pretty"{"my-index": {"settings": {"index": {"store": {"type": "remote_snapshot"}}}}
}
如您所见,将 AIStor 配置为 OpenSearch 远程存储库非常简单。
取回您的日志
通过利用 AIStor 作为 OpenSearch 的后端,您不仅可以拍摄可搜索的快照,还可以创建不可搜索(也称为“本地”)快照,并将其用作定期备份,这些备份可以恢复到其他集群进行灾难恢复,或者使用其他数据进行丰富以进行进一步分析。话虽如此,我们需要了解使用远程存储库作为快照位置的某些潜在陷阱。访问速度或多或少由 AIStor 的速度和性能决定,而 AIStor 通常受网络带宽限制。请注意,在 AWS S3 等公有云中,您可能还需要按请求支付检索费用,因此用户应密切监控产生的任何费用。搜索远程数据有时会影响在同一节点上运行的其他查询的性能。通常建议工程师利用节点角色,并为性能关键型应用程序创建具有搜索角色的专用节点。

在这篇文章中,我们将探讨搜索,特别是 OpenSearch 如何帮助我们识别模式或查看不断增长的数据中的趋势。例如,如果您正在查看运营数据,如果您的服务似乎是随机的,那么您需要尽可能回溯以识别模式并找出原因。这不仅适用于应用程序,还适用于来自每个可以想象的设备的大量日志,这些日志需要保留合理的时间,以便进行合规性和故障排除。但是,在快速存储(例如 NVMe)上存储数月/数年的可搜索数据可能会占用大量昂贵的驱动器空间。通常,过去几周的数据是搜索最多的,因此存储在最快的硬件上。但随着数据变旧,它对于立即进行故障排除的用处变得不那么大,并且不需要在昂贵的硬件上 - 即使它仍然包含一两个秘密。问题变成了,我们如何在不牺牲性能的情况下快速搜索这些存档数据。是否有可能两全其美?
OpenSearch 中的提示;基于 Apache Lucene 的分布式搜索和分析引擎。将数据添加到 OpenSearch 索引后,您可以对数据执行全文搜索。任何需要搜索的应用程序都有使用 OpenSearch 的用例,例如,您可以使用它来在应用程序中构建搜索功能,DevOps 工程师可以将 OpenSearch 用作日志分析引擎,后端工程师可以通过 OpenTelemetry 等收集器放置跟踪数据,以更好地了解应用程序性能。借助功能丰富的内置搜索和可视化功能,您可以查明基础架构问题(如磁盘空间不足、获取错误状态代码等),并在它们对运营造成严重破坏之前将其显示在控制面板中。但是,随着日志数据的增长,有时将所有数据保存在一个节点甚至单个集群上是不切实际的。我们喜欢 OpenSearch,因为它具有分布式设计,与 AIStor 不同,AIStor 可以并行存储您的数据并处理请求。AIStor 非常简单,只需一个简单的二进制文件即可启动和运行。您可以从笔记本电脑的单节点单驱动器配置开始,然后将其扩展到具有多驱动器、多节点和多站点的生产环境 - 具有您在企业级存储软件中期望的相同功能集。您不仅可以构建分布式 OpenSearch 集群,还可以随着集群的增长细分集群中各个节点的职责。您可以使用具有大磁盘的节点来存储数据,具有大量 RAM 的节点用于索引,以及具有大量 CPU 但较少磁盘的节点来管理集群的状态。
随着数据的增长,您可以将旧数据/存档数据分层到 AIStor 存储桶中,以便保留 SSD/NVMe 存储以存储添加到集群的最新数据。此外,当这些快照存储在 AIStor 存储桶中时,您可以直接搜索它们。从逻辑上讲,在移动快照时,重要的是要考虑到从远程驱动器访问数据比从本地驱动器访问数据慢,因此搜索查询的延迟通常较高,但提高存储效率通常是值得的。使用 AIStor,您可以获得最快的网络对象存储。高速网络上的分布式 AIStor 可以胜过本地存储。与其他速度较慢的对象存储不同,AIStor 可以无缝访问这些快照,就像它们在 OpenSearch 集群上的本地快照一样,从而在几秒钟内根据结果的大小在虹吸日志数据中搜索见解时节省宝贵的时间、网络带宽和团队精力。相比之下,本地还原需要数小时才能执行作,然后才能查询数据。OpenSearch 在与存储分层一起使用时效率更高,这降低了它的总拥有成本,此外,您还可以获得将数据写入 AIStor 的额外好处,这些数据是不可变的、受版本控制的,并且受纠删码保护。此外,将 OpenSearch 分层与 AIStor 对象存储结合使用,使数据文件可供其他云原生机器学习和分析应用程序使用。
基础设施
让我们使用 Docker 设置 OpenSearch 和 AIStor,并介绍一些功能来展示它们的功能。
开放搜索
我们将创建自定义 Docker 映像,因为我们将使用自定义插件构建它以连接到我们的 AIStor 对象存储。
FROM opensearchproject/opensearch:2.8.0ENV MINIO_ACCESS_KEY_ID minioadminENV MINIO_SECRET_ACCESS_KEY minioadminENV MINIO_ENDPOINT minio:9000ENV MINIO_PROTOCOL httpRUN /usr/share/opensearch/bin/opensearch-plugin install --batch repository-s3RUN /usr/share/opensearch/bin/opensearch-keystore createRUN echo $MINIO_ACCESS_KEY_ID | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.access_keyRUN echo $MINIO_SECRET_ACCESS_KEY | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.secret_keyRUN echo $MINIO_ENDPOINT | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.endpointRUN echo $MINIO_PROTOCOL | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.protocol
构建自定义 Docker 镜像
docker build --tag=opensearch-minio
运行以下 Docker 命令,使用我们之前下载的映像启动容器
docker run -d -p 9200:9200 -p 9600:9600 -v /usr/share/opensearch/data -e "discovery.type=single-node" opensearch-minio
使用默认的“admin”凭据将 curl 到 localhost 端口 9200,以验证 OpenSearch 是否正在运行
curl https://localhost:9200 -ku 'admin:admin'
您应该会看到类似于下面的输出
{"name" : "a937e018cee5","cluster_name" : "docker-cluster","cluster_uuid" : "GLAjAG6bTeWErFUy_d-CLw","version" : {"distribution" : "opensearch","number" : <version>,"build_type" : <build-type>,"build_hash" : <build-hash>,"build_date" : <build-date>,"build_snapshot" : false,"lucene_version" : <lucene-version>,"minimum_wire_compatibility_version" : "7.10.0","minimum_index_compatibility_version" : "7.0.0"},"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
我们也可以检查容器状态
$ docker container lsCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESa937e018cee5 opensearch-minio "./opensearch-docker..." 19 minutes ago Up 19 minutes 0.0.0.0:9200->9200/tcp, 9300/tcp, 0.0.0.0:9600->9600/tcp, 9650/tcp stupendous_burt
为 AIStor 设置存储库
为了设置可搜索的快照索引,您需要为 OpenSearch 集群设置一些先决条件和配置。我们将在这里详细介绍它们。
在 ‘opensearch.yaml’ 中,创建一个节点并定义节点角色
node.name: snapshots-node
node.roles: [ search ]
让我们使用“_snapshot”API 注册 AIStor 存储桶
curl -XPUT "http://localhost:9200/_snapshot/my-minio-repository" -H 'Content-Type: application/json' -d'
{"type": "s3","settings": {"bucket": "testbucket123","base_path": "my/snapshot/directory"}
}'
现在我们有了存储库,让我们继续创建一个可搜索的快照。
可搜索快照
为了制作快照,我们需要使用之前创建的存储库进行 API 调用。
curl -XPUT "http://localhost:9200/_snapshot/my-minio-repository/1"
我们来检查一下快照的状态
curl -XGET "http://localhost:9200/_snapshot/my-minio-repository/1"
{"snapshots": [{"snapshot": "1","version": "6.5.4","indices": ["opensearch_dashboards_sample_data_ecommerce","my-index","opensearch_dashboards_sample_data_logs","opensearch_dashboards_sample_data_flights"],"include_global_state": true,"state": "IN_PROGRESS",...}]
}
让我们在 AIStor 端也看看这个快照
root@aj-test-1:~# mc ls testbucket123/my/snapshot/directory
[2023-06-09 17:37:31 UTC] 1.5KiB STANDARD 1/
如上所示,我们在 AIStor 存储桶中使用 OpenSearch API 拍摄的快照副本。如上所示,我们在 AIStor 存储桶中使用 OpenSearch API 拍摄的快照副本。现在,您一定想知道,“我们已经拍摄了快照,但如何还原它,以便我们可以分析和搜索备份的索引?尽管使用 OpenSearch 非常有可能,但与传统意义上的恢复整个快照不同,我们将向您展示如何在快照仍存储在 AIStor 上时更有效地搜索快照。我们需要做的最重要的配置更改是将 ‘storage_type’ 设置为 'remote_snapshot”。此设置告诉 OpenSearch 快照是将在本地还原以供搜索,还是在存储在 AIStor 上时进行远程搜索。
curl -XPOST "http://localhost:9200/_snapshot/my-minio-repository/1/_restore" -H 'Content-Type: application/json' -d'
{"indices": "opensearch-dashboards*,my-index*","ignore_unavailable": true,"include_global_state": false,"include_aliases": false,"partial": false,"storage_type": "remote_snapshot","rename_pattern": "opensearch-dashboards(.+)","rename_replacement": "restored-opensearch-dashboards$1","index_settings": {"index.blocks.read_only": false},"ignore_index_settings": ["index.refresh_interval"]
}'
让我们列出所有索引,看看是否存在 ‘remote_snapshot’ 类型
curl -XGET "http://localhost:9200/my-index/_settings?pretty"{"my-index": {"settings": {"index": {"store": {"type": "remote_snapshot"}}}}
}
如您所见,将 AIStor 配置为 OpenSearch 远程存储库非常简单。
取回您的日志
通过利用 AIStor 作为 OpenSearch 的后端,您不仅可以拍摄可搜索的快照,还可以创建不可搜索(也称为“本地”)快照,并将其用作定期备份,这些备份可以恢复到其他集群进行灾难恢复,或者使用其他数据进行丰富以进行进一步分析。话虽如此,我们需要了解使用远程存储库作为快照位置的某些潜在陷阱。访问速度或多或少由 AIStor 的速度和性能决定,而 AIStor 通常受网络带宽限制。请注意,在 AWS S3 等公有云中,您可能还需要按请求支付检索费用,因此用户应密切监控产生的任何费用。搜索远程数据有时会影响在同一节点上运行的其他查询的性能。通常建议工程师利用节点角色,并为性能关键型应用程序创建具有搜索角色的专用节点。
相关文章:
使用 AIStor 和 OpenSearch 增强搜索功能
在这篇文章中,我们将探讨搜索,特别是 OpenSearch 如何帮助我们识别模式或查看不断增长的数据中的趋势。例如,如果您正在查看运营数据,如果您的服务似乎是随机的,那么您需要尽可能回溯以识别模式并找出原因。这不仅适用…...
Node.js中如何修改全局变量的几种方式
Node.js中如何修改全局变量。我需要先理解他们的需求。可能他们是在开发过程中遇到了需要跨模块共享数据的情况,或者想要配置一些全局可访问的设置。不过,使用全局变量可能存在一些问题,比如命名冲突、难以维护和测试困难,所以我得…...
基于Python和Neo4j开发的医疗辅助诊断系统的详细实现步骤和代码示例
以下是一个基于Python和Neo4j开发的医疗辅助诊断系统的详细实现步骤和代码示例。 1. 环境准备 首先,确保你已经安装了必要的库。可以使用以下命令进行安装: pip install py2neo2. Neo4j数据库初始化 在Neo4j中创建一个新的数据库,并启动N…...
第9章:LangChain结构化输出-示例2(数字提取服务)
如何使用LangChain4j框架创建和使用多种AI服务。它通过定义接口和注解,将自然语言处理任务(如情感分析、数字提取、日期提取、POJO提取等)封装为服务,并通过LangChain4j的AiServices动态生成这些服务的实现。 本章主要讲述基于Lan…...
【LLM】R1复现项目(SimpleRL、OpenR1、LogitRL、TinyZero)持续更新
note (1)未来的工作需亟待解决: 支持大规模 RL 训练(PPO、GRPO 等)的开源基础框架用于稳定训练的 GRPO 训练超参的自动化调优RL 训练数据的配比(难度、领域、任务等)基于 Instruct 模型训练 R…...
买股票的最佳时机 - 2
买卖股票的最佳时机 III 题目描述: 提示: 1 < prices.length < 1050 < prices[i] < 105 分析过程: 写动态规划,我们需要考虑一下问题: 定义状态状态转移方程初始条件 遍历顺序 4种状态: …...
Python基于flask的智慧交通可视化,大数据智慧交通数据可视化系统
博主介绍:✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
【Unity】鱼群效果模拟
鱼群效果模拟 文章目录 鱼群效果模拟Boid算法实现方式version1_CPUversion2_GPUversion3_Multilaterationversion4_Bitonic_Sorting (GPU友好)version5_Skinning (TODO) 细节项优化项参考链接 Boid算法 Boid算法是一种模拟群体行…...
Unity使用IL2CPP打包时,我们应该注意什么?如何避免(可以举例说明)
这一篇部分内容在Unity之中如何处理C#底层代码那篇博客之中有提及,接下来对这部分进行补充说明。(请先阅读--Unity之中如何处理C#底层代码) 目录 1 注意点 2 如何避免 1 注意点 IL2CPP 在编译过程中会将 IL(中间语言…...
Wireshark使用介绍
文章目录 Wireshark介绍Wireshark使用工作模式介绍1. 混杂模式(Promiscuous Mode)2. 普通模式(Normal Mode)3. 监视模式(Monitor Mode) 界面分区捕获过滤器语法基本语法逻辑运算符高级语法使用示例捕获过滤…...
云图库平台(五)——后端图片模块开发
目录 一、需求分析二、库表设计三、图片的处理如何实现图片的上传和下载创建图片的业务流程如何对图片进行解析 四、创建并使用对象存储五、后端操作对象存储初始化客户端通用能力类文档上传文件下载 一、需求分析 管理员功能: 图片的上传和创建:仅管理…...
postman调用ollama的api
按照如下设置,不需要设置key 保持长会话的方法 # 首次请求 curl http://localhost:11434/api/generate -d {"model": "deepseek-r1:32b","prompt": "请永久记住:110,1-12,之后所有数学计算必…...
十、OSG学习笔记-多线程(OpenThreads)
上一节内容: 九、OSG学习笔记-NodeVisitor节点遍历器-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145742756?spm1001.2014.3001.5501 本章节代码: OsgStudy/Openthreads CuiQingCheng/OsgStudy - 码云 - 开源中国https://gite…...
Gemma 2 的滑动窗口注意力(Sliding Window Attention)解析:源代码
Gemma 2 的滑动窗口注意力(Sliding Window Attention)解析 在 Transformer 结构 中,自注意力(Self-Attention)是核心机制之一。然而,标准的自注意力计算复杂度为 ( O ( n 2 ) O(n^2) O(n2) ),随…...
机器学习数学通关指南——链式法则
前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 一、定义与公式 链式法则&a…...
Python爬虫实战:从零到一构建数据采集系统
文章目录 前言一、准备工作1.1 环境配置1.2 选择目标网站 二、爬虫实现步骤2.1 获取网页内容2.2 解析HTML2.3 数据保存 三、完整代码示例四、优化与扩展4.1 反爬应对策略4.2 动态页面处理4.3 数据可视化扩展 五、注意事项六、总结互动环节 前言 在大数据时代,数据采…...
DeepSeek 助力 Vue 开发:打造丝滑的单选按钮(Radio Button)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
【行业解决方案篇十八】【DeepSeek航空航天:故障诊断专家系统 】
引言:为什么说这是“航天故障终结者”? 2025年春节刚过,航天宏图突然官宣"DeepSeek已在天权智能体上线",这个搭载在卫星和空间站上的神秘系统,号称能提前48小时预判99.97%的航天器故障。这不禁让人想起年初NASA禁用DeepSeek引发的轩然大波,更让人好奇:这套系…...
谷歌浏览器更新后导致的刷新数据无法显示
这几天突然出现的问题,就是我做了一个网站,一直用Google展示,前两天突然就是刷新会丢失数据,然后再刷新几次吧又有了,之前一直好好的,后端也做了一些配置添加了CrossOrigin注解,然而换了edge浏览…...
nvidia-docker2 和 NVIDIA Container Toolkit 的区别及推荐
NVIDIA Docker 和 NVIDIA Container Toolkit 1. NVIDIA Docker 和 NVIDIA Docker2 nvidia-docker 是 NVIDIA 最早推出的工具,用于在 Docker 容器中启用 GPU 支持。它以独立守护进程的形式作为 Volume Plugin 存在,但与 Docker 生态系统的兼容性较差&am…...
游戏设计模式阅读 - 游戏循环
游戏与普通程序最大的不同点在于: 游戏不像其他大多数软件,游戏即使在没有玩家输入时也继续运行。 如果你站在那里看着屏幕,游戏也不会冻结。动画会持续播放。视觉效果继续闪烁。 如果运气不好的话,怪物会继续暴揍你的角色。 那么…...
(五)趣学设计模式 之 建造者模式!
目录 一、 啥是建造者模式?二、 为什么要用建造者模式?三、 建造者模式怎么实现?四、 建造者模式的应用场景五、 建造者模式的优点和缺点六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方…...
github 怎么创建一个私有repository 并从另外一台电脑拉取下来更新
1.github上新建一个repository 设置为private tips删除在这 点setting 然后往下拖动 会有个这里是用来删项目的 2.另外 一台电脑拉取这个repository的时候 需要配置 一个ssh key 这个key的内容生成参考本地电脑的生成 然后在这配置 2.1 生成 SSH 密钥(如果还没有…...
Spring Boot嵌入式服务器深度解析:从配置到调优的全方位指南
文章目录 引言一、嵌入式服务器核心原理1.1 架构设计特点1.2 主流服务器对比 二、嵌入式服务器配置实战2.1 基础配置模板2.2 HTTPS安全配置 三、高级调优策略3.1 线程池优化(Tomcat示例)3.2 响应压缩配置3.3 访问日志配置 四、服务器切换实战4.1 切换至U…...
DeepSeek-R1本地化部署的硬件要求
DeepSeek-R1本地化部署的硬件要求全解析 引言 DeepSeek-R1作为一款高效的AI推理模型,凭借其卓越的推理性能和灵活的训练机制,成为了春节期间的热议话题。 然而,要在本地成功部署DeepSeek-R1,尤其是其满载的 671B 参数版本&#…...
AGI觉醒假说的科学反驳:从数学根基到现实约束的深度解析
文章目录 引言:AGI觉醒论的核心迷思一、信息论视角:意识产生的熵约束1.1 香农熵的物理极限1.2 量子退相干的时间屏障二、数学根基:形式系统的自指困境2.1 哥德尔不完备定理的现代诠释三、概念解构:AGI觉醒假说的认知陷阱3.1 术语混淆的迷雾3.2 拟人化谬误的认知根源四、意识…...
CSS—盒模型(3分钟结合示例精通盒模型)
个人博客:haichenyi.com。感谢关注 1. 目录 1–目录2–概念3–内容4–内边距5–边框6–外边距7–类型 概念 在HTML中,每一个元素都可以看作一个矩形的盒子。如图 如上图所示,一个一个的矩形都可以堪称一个元素。矩形有大有小,边有…...
蓝桥杯 3.搜索
蓝桥杯 3.搜索 文章目录 蓝桥杯 3.搜索DFS回溯DFS剪枝记忆化搜索编程66-75 DFS回溯 回溯法简介 使用**DFS(深度优先搜索)**实现, DFS是一种遍历或搜索图, 树或者图像等数据结构的算法, 当然这个图, 树未必要存储下来(隐式处理就是回溯法)搜索树一般是排列型搜索树 (总节点个数…...
JQD武学思想
无意识,无我,空,无形, 刚柔相济,时机, 战胜对手,克服内心。不预测结果,自发反击。 简单直接的攻击,去除一切冗余的东西。 李小龙其实反复在解释这些概念,常…...
供应链管理-谈判:分配式谈判、整合式谈判、原则式谈判
一、分配式谈判 序号要点解释1特点双方在一定资源或利益范围内进行分配,一方所得即另一方所失,因此也被称为“零和谈判”。2适用场景资源有限、关系不是关键因素,以及需要快速决策的情况。例如,在竞争对手之间,如拍卖…...
