使用 AIStor 和 OpenSearch 增强搜索功能

news2025/2/24 11:12:35

在这篇文章中,我们将探讨搜索,特别是 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.0


ENV MINIO_ACCESS_KEY_ID minioadmin

ENV MINIO_SECRET_ACCESS_KEY minioadmin

ENV MINIO_ENDPOINT minio:9000

ENV MINIO_PROTOCOL http


RUN /usr/share/opensearch/bin/opensearch-plugin install --batch repository-s3

RUN /usr/share/opensearch/bin/opensearch-keystore create


RUN echo $MINIO_ACCESS_KEY_ID | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.access_key

RUN echo $MINIO_SECRET_ACCESS_KEY | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.secret_key

RUN echo $MINIO_ENDPOINT | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.endpoint

RUN 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 ls
 CONTAINER ID   IMAGE                                 COMMAND                  CREATED          STATUS          PORTS                                                                NAMES
 a937e018cee5   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.0


ENV MINIO_ACCESS_KEY_ID minioadmin

ENV MINIO_SECRET_ACCESS_KEY minioadmin

ENV MINIO_ENDPOINT minio:9000

ENV MINIO_PROTOCOL http


RUN /usr/share/opensearch/bin/opensearch-plugin install --batch repository-s3

RUN /usr/share/opensearch/bin/opensearch-keystore create


RUN echo $MINIO_ACCESS_KEY_ID | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.access_key

RUN echo $MINIO_SECRET_ACCESS_KEY | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.secret_key

RUN echo $MINIO_ENDPOINT | /usr/share/opensearch/bin/opensearch-keystore add --stdin s3.client.default.endpoint

RUN 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 ls
 CONTAINER ID   IMAGE                                 COMMAND                  CREATED          STATUS          PORTS                                                                NAMES
 a937e018cee5   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 等公有云中,您可能还需要按请求支付检索费用,因此用户应密切监控产生的任何费用。搜索远程数据有时会影响在同一节点上运行的其他查询的性能。通常建议工程师利用节点角色,并为性能关键型应用程序创建具有搜索角色的专用节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2304361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LLM】R1复现项目(SimpleRL、OpenR1、LogitRL、TinyZero)持续更新

note &#xff08;1&#xff09;未来的工作需亟待解决&#xff1a; 支持大规模 RL 训练&#xff08;PPO、GRPO 等&#xff09;的开源基础框架用于稳定训练的 GRPO 训练超参的自动化调优RL 训练数据的配比&#xff08;难度、领域、任务等&#xff09;基于 Instruct 模型训练 R…

买股票的最佳时机 - 2

买卖股票的最佳时机 III 题目描述&#xff1a; 提示&#xff1a; 1 < prices.length < 1050 < prices[i] < 105 分析过程&#xff1a; 写动态规划&#xff0c;我们需要考虑一下问题&#xff1a; 定义状态状态转移方程初始条件 遍历顺序 4种状态&#xff1a; …

Python基于flask的智慧交通可视化,大数据智慧交通数据可视化系统

博主介绍&#xff1a;✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447…

【Unity】鱼群效果模拟

鱼群效果模拟 文章目录 鱼群效果模拟Boid算法实现方式version1_CPUversion2_GPUversion3_Multilaterationversion4_Bitonic_Sorting &#xff08;GPU友好&#xff09;version5_Skinning &#xff08;TODO&#xff09; 细节项优化项参考链接 Boid算法 Boid算法是一种模拟群体行…

云图库平台(五)——后端图片模块开发

目录 一、需求分析二、库表设计三、图片的处理如何实现图片的上传和下载创建图片的业务流程如何对图片进行解析 四、创建并使用对象存储五、后端操作对象存储初始化客户端通用能力类文档上传文件下载 一、需求分析 管理员功能&#xff1a; 图片的上传和创建&#xff1a;仅管理…

postman调用ollama的api

按照如下设置&#xff0c;不需要设置key 保持长会话的方法 # 首次请求 curl http://localhost:11434/api/generate -d {"model": "deepseek-r1:32b","prompt": "请永久记住&#xff1a;110&#xff0c;1-12&#xff0c;之后所有数学计算必…

十、OSG学习笔记-多线程(OpenThreads)

上一节内容&#xff1a; 九、OSG学习笔记-NodeVisitor节点遍历器-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145742756?spm1001.2014.3001.5501 本章节代码&#xff1a; OsgStudy/Openthreads CuiQingCheng/OsgStudy - 码云 - 开源中国https://gite…

DeepSeek 助力 Vue 开发:打造丝滑的单选按钮(Radio Button)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

【行业解决方案篇十八】【DeepSeek航空航天:故障诊断专家系统 】

引言:为什么说这是“航天故障终结者”? 2025年春节刚过,航天宏图突然官宣"DeepSeek已在天权智能体上线",这个搭载在卫星和空间站上的神秘系统,号称能提前48小时预判99.97%的航天器故障。这不禁让人想起年初NASA禁用DeepSeek引发的轩然大波,更让人好奇:这套系…

谷歌浏览器更新后导致的刷新数据无法显示

这几天突然出现的问题&#xff0c;就是我做了一个网站&#xff0c;一直用Google展示&#xff0c;前两天突然就是刷新会丢失数据&#xff0c;然后再刷新几次吧又有了&#xff0c;之前一直好好的&#xff0c;后端也做了一些配置添加了CrossOrigin注解&#xff0c;然而换了edge浏览…

游戏设计模式阅读 - 游戏循环

游戏与普通程序最大的不同点在于&#xff1a; 游戏不像其他大多数软件&#xff0c;游戏即使在没有玩家输入时也继续运行。 如果你站在那里看着屏幕&#xff0c;游戏也不会冻结。动画会持续播放。视觉效果继续闪烁。 如果运气不好的话&#xff0c;怪物会继续暴揍你的角色。 那么…

(五)趣学设计模式 之 建造者模式!

目录 一、 啥是建造者模式&#xff1f;二、 为什么要用建造者模式&#xff1f;三、 建造者模式怎么实现&#xff1f;四、 建造者模式的应用场景五、 建造者模式的优点和缺点六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方…

github 怎么创建一个私有repository 并从另外一台电脑拉取下来更新

1.github上新建一个repository 设置为private tips删除在这 点setting 然后往下拖动 会有个这里是用来删项目的 2.另外 一台电脑拉取这个repository的时候 需要配置 一个ssh key 这个key的内容生成参考本地电脑的生成 然后在这配置 2.1 生成 SSH 密钥&#xff08;如果还没有…

DeepSeek-R1本地化部署的硬件要求

DeepSeek-R1本地化部署的硬件要求全解析 引言 DeepSeek-R1作为一款高效的AI推理模型&#xff0c;凭借其卓越的推理性能和灵活的训练机制&#xff0c;成为了春节期间的热议话题。 然而&#xff0c;要在本地成功部署DeepSeek-R1&#xff0c;尤其是其满载的 671B 参数版本&#…

AGI觉醒假说的科学反驳:从数学根基到现实约束的深度解析

文章目录 引言:AGI觉醒论的核心迷思一、信息论视角:意识产生的熵约束1.1 香农熵的物理极限1.2 量子退相干的时间屏障二、数学根基:形式系统的自指困境2.1 哥德尔不完备定理的现代诠释三、概念解构:AGI觉醒假说的认知陷阱3.1 术语混淆的迷雾3.2 拟人化谬误的认知根源四、意识…

CSS—盒模型(3分钟结合示例精通盒模型)

个人博客&#xff1a;haichenyi.com。感谢关注 1. 目录 1–目录2–概念3–内容4–内边距5–边框6–外边距7–类型 概念 在HTML中&#xff0c;每一个元素都可以看作一个矩形的盒子。如图 如上图所示&#xff0c;一个一个的矩形都可以堪称一个元素。矩形有大有小&#xff0c;边有…

蓝桥杯 3.搜索

蓝桥杯 3.搜索 文章目录 蓝桥杯 3.搜索DFS回溯DFS剪枝记忆化搜索编程66-75 DFS回溯 回溯法简介 使用**DFS(深度优先搜索)**实现, DFS是一种遍历或搜索图, 树或者图像等数据结构的算法, 当然这个图, 树未必要存储下来(隐式处理就是回溯法)搜索树一般是排列型搜索树 (总节点个数…

STM32的“Unique device ID“能否修改?

STM32F1系列的"Unique device ID"寄存器的地址为0x1FFFF7E8。 这个寄存器是只读的。 "Unique device ID"寄存器位于“System memory”中。“System memory”地址范围为“0x1FFF F000- 0x1FFF F7FF”。 所有STM32 MCU上都存在系统引导加载程序。顾名思义&a…

[内网基础] 内网基础知识 —— Windows 工作组

关注这个专栏的其他相关笔记&#xff1a;[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01&#xff1a;Windows 工作组介绍 在一个大型单位里&#xff0c;可能有成百上千台计算机互相连接组成局域网&#xff0c;如果不对这些计算机进行分组&#xff0c;网络的混乱程度是可想而知…

【新手初学】SQL注入之二次注入、中转注入、伪静态注入

二次注入 一、概念 二次注入可以理解为&#xff0c;攻击者构造的恶意数据存储在数据库后&#xff0c;恶意数据被读取并进入到SQL查询语句所导致的注入。 二、原理 防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理&#xff0c;但在恶意数据插入到数据库时被处…