数据工程解决的十大数据生命周期问题

news2024/11/14 15:24:15

欢迎来到雲闪世界。解决关键痛点的明确策略

使用Kandinsky 的AI 生成图像

在本文中,我想解决数据工程师在整个数据生命周期中使用管道时面临的一些最大挑战。了解如何管理数据生命周期是我们不断变化的领域的关键。作为一名数据工程师,我经常处理大量不同类型的数据,包括来自数据库、数据湖和第三方 API 等各种来源的非结构化数据。这些因素可能使管理关键数据变得非常困难。我们将介绍数据处理的所有重要阶段,从收集和分析到存储和销毁,我将分享我每天使用的最佳实践。

数据生命周期管理

数据生命周期管理使企业能够采用战略性和规范性的方法来组织和管理数据,从源头到目的地或最终状态(例如存档或销毁)。

本质上,这是一套政策,旨在在数据的整个使用寿命期间(从数据创建到数据过时或由于合规性法规而需要销毁)最大化数据的价值。

典型的数据生命周期遵循众所周知的 ETL 模式。

  1. 数据:数据正在某处创建。这是一个数据创建阶段。它可以是外部和内部数据源 — API(CRM 系统、会计软件等)、关系数据库(MySQL、Postgres)、云存储以及我们可能想要自己创建的许多其他数据源。
  2. 数据收集:提取(ETL 中的“E”)。我们希望从数据源中提取数据并对其进行处理 — 要么“按原样”加载,要么先转换然后加载。
  3. 数据提取:(ETL 中的“T”和“L”)。我们讨论的是可以转换数据、处理不同文件格式并将数据提取协调到数据仓库解决方案 (DWH) 或数据湖中的 ELT/ETL 服务。
  4. 数据存储:这一切都取决于我们的数据管道设计模式 [2],可以是数据湖、DWH 或 OLAP 数据库。它通常执行存储功能,即数据文件的着陆区,并作为许多其他管道的代理阶段。
  5. 数据治理:一套战略政策,确保我们的数据始终安全、准确地可供最终用户使用。
  6. 商业智能报告——创建报告显然是另一项具有挑战性的任务。BI 开发人员通常会做这件事。
  7. 数据编排:最后,我们希望有效地编排所有这些疯狂的事情。

据此,我们的数据平台基础设施通常看起来非常复杂:

简化的数据平台蓝图。图片由作者提供。

数据创建阶段

痛点一:数据源管理和数据可观测性

数据沿袭看起来没问题,但是这些数据来自哪里?

在协调从众多来源提取数据时,管理多个数据源可能成为一项重大挑战。考虑将来自十几个 API、关系数据库和原生平台(如 Google Analytics 4)的数据通过 Firebase 集成到数据仓库的复杂性。有效管理这些不同的输入至关重要,我们应该专注于这些数据库实体的细致声明。

这一切都与数据源及其声明有关。

解决方案:

  • 使用 Git 和元数据来声明源。
  • 添加数据源描述、数据来源和所有者。
  • 将来源添加到数据沿袭图,以便每个人都能找到有关它们的信息。
  • 使用现代数据建模工具为所有数据管道创建单一真实来源。
  • 部署数据可观察性测试以更好地了解数据健康状况。

Dataform(由 Google 提供)和 DBT 等高级工具提供了全面的功能,可简化和优化这些数据源的管理,确保高效、有序的数据集成。请考虑以下代码片段:

sources:
  - name: sales_data
    description: Data source description and origins of data.
    owner: data source owner
    database: analytics
    schema: raw_sales
    tables:
      - name: transactions
      - name: orders
          columns:
            - name: order_id
              tests:
                - unique
                - not_null
            - name: status
              tests:
                - accepted_values:
                    values: ['placed', 'shipped', 'completed', 'returned']
            - name: customer_id
      - name: customers

数据收集和摄取

事实上,这两个步骤通常会结合在一起,因为它们是由同一个数据服务执行的。它可以是任何能够执行高效数据操作的东西,例如内置在 Databricks 或 AWS Glue 服务中的 PySpark 应用程序。它也可以是由消息队列事件(Rabbit、SQS、Pub/Sub、Kafka 等)调用的小型云函数。

痛点2:

市场上的开箱即用 (OOTB) 解决方案缺乏功能。

在数据收集或提取过程中,我们总是可以使用 Fivetran 或 Stitch 等托管工具,但有时它们不具备您需要的功能。

例如,考虑一个使用 DWH 销售数据生成发票的数据管道。这些发票必须上传到您的会计系统中。这不是 OOTB 集成,而且不存在。您需要构建自己的数据服务并根据需要协调发票上传。您需要保持其处于热状态并不断刷新访问令牌,以便能够成功验证服务。

解决方案:

如果您是数据工程师,那么您就是解决方案。

如果有人拥有具备相关编程技能的数据工程师,为什么还需要为第三方服务付费呢?看看我每天用来设计和部署持久数据管道的这些 ETL 技术。

痛点三:

第三方工具太贵

无论是 Fivetran、Stitch 还是其他产品,它们的定价模型通常都是基于我们需要提取的数据的行。这通常会导致每月产生数千美元的账单。

解决方案:

  • 构建强大、耐用且经济高效的数据管道,并对副作用进行单元测试。
  • 确保您的代码是幂等的、可重用的并且易于维护。
  • 使用基础设施即代码有效地配置资源。

痛点 4:可扩展性、 洞察延迟和运营开销

为数据管道选择正确的架构是成功的关键

设计强大的数据管道是一项复杂的任务,需要进行彻底的需求分析。关注业务需求,确定数据处理的“内容”和“原因”。通过与技术团队合作开发的功能需求来定义“如何”处理。例如,如果业务部门需要实时分析,那么数据的新鲜度将决定是使用批处理还是流处理。

深入了解业务逻辑对于选择合适的工具至关重要。考虑一个简单的管道,将数据从数据仓库业务或集市模型传输到 Google 电子表格中——这对任何数据工程师来说都很简单。

然而,在处理交易监控合规管道中的高度敏感数据时,需要更复杂的解决方案来满足个人身份信息 (PII) 的监管要求并有效管理数据输入/输出功能。

解决方案:

  • 在第一个计划中重点关注高级业务需求,以项目为中心并了解局限性和截止日期。
  • 收集所有功能需求以满足业务需求。
  • 确保您了解最终用户和主要利益相关者的技能——这将定义数据工具。
  • 最后,选择最适合该框架的数据管道设计模式。

数据存储

在许多公司中,数据存储是数据平台的关键组件,用于暂存、保存、分类和存档我们从其他系统提取并用于分析的数据。

数据管道示例。图片由作者提供。

痛点五:

存储成本、模式漂移、文件格式和分区布局——如何优化以及使用哪些?

即使是数据仓库解决方案也有一个存储组件,这会产生相关成本。众所周知,现代 DWH 工具已将计算存储资源分离。尽管存储成本相对较低,但随着时间的推移,成本可能会累积。考虑一个具有活动模式的超大数据集,其中每天生成数 TB 的用户参与事件。现在想象一下将其加载到您的 BigQuery 数据仓库中。好处是三个月的数据被优化为接近冷线存储类,而且相当便宜,但此后的所有其他数据都进入标准存储类,而且价格要贵得多。

数据湖架构。图片由作者提供。

ORC 与 Parquet 与 AVRO。没有 JSON?

在应用程序世界中,大量数据以 JSON 格式收集和保存。那么为什么不将其存储在 JSON 中呢?因为 JSON 不携带任何架构信息,所以在处理大数据时,Hadoop 工具可能会很慢。基本上,它不适合大数据处理框架。这是创建 Parquet 和 ORC 格式的主要原因。

解决方案:

  • 将数据存储在优化的存储类中对于提高效率至关重要。利用云存储可以灵活地使用 Spark、AWS Glue 或 Databricks 在数据湖内的各个平台上处理数据。如果需要,它有助于将数据重新加载到数据仓库中。
  • Parquet 和 ORC将数据存储在列中,并提供比AVRO更高的压缩率。如果您的数据结构可能会随时间而变化,并且您需要架构演变支持,那么请选择AVRO。ORC通常被认为是HIVE的最佳文件格式选项,而 Parquet 被认为是整个 Hadoop 生态系统的最佳解决方案。
  • 使用主要云提供商之一(Google、AWS 或 Azure)为具有 HIVE 分区布局的存档创建云存储存储桶。
  • 建立例行程序来监控和卸载过时数据,并将其归档以降低成本。

考虑下面的代码。它显示了卸载数据然后重新加载是多么容易:

-- export data from BigQuery to GCP
EXPORT DATA
  OPTIONS (
    uri = 'gs://events-export/public-project/events.json',
    format = 'Parquet', -- or CSV, JSON, Parquet
    overwrite = true
)
AS (
SELECT *
FROM `firebase-public-project.analytics_153293282.events_20181001`
);

如果需要的话加载数据:

LOAD DATA INTO source.json_external_test
FROM FILES(
  format='JSON',
  uris = ['gs://events-export/public-project/*']
)

痛点六:

安全、主要访问控制和数据保留政策

如果我们处理的是敏感的公司数据,那么就必须对其进行保护。我们希望确保只有授权用户才能访问,并且我们拥有的数据可以被视为我们拥有的任何数据集和模型的唯一真实来源。

解决方案:

  • 使用 VPC 限制访问。虚拟私有云是一种很好的做法,可以确保您的数据与外界隔离。
  • 对数据应用版本控制。这旨在确保数据一致性,以防任何可能使用数据湖数据的用户或服务对我们的数据进行任何潜在更改。
  • 定期备份数据并引入数据丢失预防政策。

考虑下面的 Terraform 示例。它将在 AWS S3 存储桶上启用版本控制。这很简单,但它有助于保持数据沿袭的清洁和保护,确保数据湖是单一事实来源,包括任何潜在的数据库复制管道,其中可以轻松操作、更新或删除数据。

<span style="color:rgba(0, 0, 0, 0.8)"><span style="background-color:#ffffff"><span style="background-color:#f9f9f9"><span style="color:#242424">资源<span style="color:#c41a16">“aws_s3_bucket” </span> <span style="color:#c41a16">“示例”</span> { 
  bucket = <span style="color:#c41a16">“example-bucket”</span>
 }

资源<span style="color:#c41a16">“aws_s3_bucket_acl” </span> <span style="color:#c41a16">“示例”</span> { 
  bucket = aws_s3_bucket.example.id <span style="color:#5c2699">acl</span>
   = <span style="color:#c41a16">“private”</span>
 }

资源<span style="color:#c41a16">“aws_s3_bucket_versioning” </span> <span style="color:#c41a16">“versioning_example”</span> { 
  bucket = aws_s3_bucket.example.id <span style="color:#5c2699">versioning_configuration</span>
   { 
    status = <span style="color:#c41a16">“Enabled”</span>
   } 
}</span></span></span></span>

数据治理

数据治理就是要确保数据准确、安全并可供主要利益相关者使用。

痛点七:主要利益相关者和数据可用性的细粒度访问控制。

有时将 DWH 解决方案放入单独的数据处理阶段是个好主意。事实上,数据管理、基于角色的访问控制和强大的数据治理功能——所有这些都使这些工具在现代数据堆栈中非常实用 [3]。我在这里讨论过:

解决方案:

  • 如果不使用数据仓库,则对数据湖数据集应用基于身份的访问控制。
  • 在需要时对 DWH 数据应用基于行/列的访问控制。
  • 应用对象标记和基于标签的屏蔽策略。
  • 使用访问历史记录实现警报。如果您是 DBA,那么您必须掌控它。
  • 定期进行数据质量检查。可以安排检查或在 CI 中针对每个拉取请求运行检查。

例如,DBT 有一组通用和单一测试,我们可能希望定期对数据运行这些测试。这很容易实现,如下所示:

resource "aws_s3_bucket" "example" {
  bucket = "example-bucket"
}

resource "aws_s3_bucket_acl" "example" {
  bucket = aws_s3_bucket.example.id
  acl    = "private"
}

resource "aws_s3_bucket_versioning" "versioning_example" {
  bucket = aws_s3_bucket.example.id
  versioning_configuration {
    status = "Enabled"
  }
}

痛点八:

数据质量和测试

这才是数据开发中最重要的。您需要使用“不重复自己”(DRY)模块化方法,并创建模板化、易于维护、重用和单元测试的数据模型。

  • 在 DWH 和数据湖解决方案中引入单独的数据环境和单独的生产、开发和测试区域。
  • 使用数据建模和数据沿​​袭图作为数据管道。
  • 对每个数据转换运行单元测试。

拆分数据环境非常合理,因为您不希望暂存数据与生产数据混淆。从这个角度来看,最好设计数据平台以拆分数据环境层,如下例所示:

<span style="color:rgba(0, 0, 0, 0.8)"><span style="background-color:#ffffff"><span style="background-color:#f9f9f9"><span style="color:#242424">DATABASE_NAME SCHEMA_NAME      
<span style="color:#007400">-------------------------------</span>
 RAW_DEV SERVER_DB_1      <span style="color:#007400">-- 模拟数据</span>
RAW_DEV SERVER_DB_2      <span style="color:#007400">-- 模拟数据</span>
RAW_DEV EVENTS           <span style="color:#007400">-- 模拟数据</span>
RAW_PROD SERVER_DB_1      <span style="color:#007400">-- 来自管道的实际生产数据</span>
RAW_PROD SERVER_DB_2      <span style="color:#007400">-- 来自管道的实际生产数据</span>
RAW_PROD EVENTS           <span style="color:#007400">-- 来自管道的实际生产数据</span>
...                              
BASE_PROD EVENTS           <span style="color:#007400">-- 丰富数据</span>
BASE_DEV EVENTS           <span style="color:#007400">-- 丰富数据</span>
...                              
ANALYTICS_PROD REPORTING   <span style="color:#007400">-- 具体化查询和聚合</span>
ANALYTICS_DEV REPORTING   
ANALYTICS_PROD AD_HOC      <span style="color:#007400">-- 即席查询和视图</span></span></span></span></span>

SQL 单元测试非常有用,如果您想确保数据转换逻辑持久且保持不变,除非您有意更改它,那么这就是您要做的事情。

将数据治理视为一套政策和工具,旨在指导关键数据利益相关者(尤其是管理层)正确使用数据。一些数据仓库解决方案(如 Snowflake)为潜在的个人或敏感数据提供对象分类。此功能可在必要时帮助确保遵守隐私法规。

商业智能和报告

这是最有趣的一点,因为我不断看到 BI 工具越来越多地注入通常在以前的数据生命周期阶段实现的功能。

痛点9:

我的 BI 工具太贵了

确实,现代报告解决方案价格昂贵,尤其是针对企业级公司。如果我们是中小企业,该怎么办?

嗯,我想说一个数据工程师可以取代现代 BI 工具中的许多功能。

解决方案:

  • 优化 数据建模:在 DBT 时代,具有数据建模功能的 BI 似乎有点矫枉过正。所有 SQL 数据转换都应在到达 BI 解决方案之前实施。在这种情况下,为 Looker 中的两个实例(开发和生产)付费对我来说没有多大意义,我们可以节省很多钱。
  • BI 和 专用 OLAP 多维数据集:为什么您需要在数据仓库之外处理数据的东西?使用具有此功能的 BI 工具支付双倍价格是没有意义的。
  • 缓存和数据新鲜度:即使是免费的社区型 BI 解决方案(如Looker Studio)也具有此功能。可以使用行条件或 DBT 通用测试来实现数据新鲜度测试。数据工程师将安排分析数据模型更新实现,并在需要时实现完整的数据刷新。
  • 语义层:这是一个很好的例子。可以将其视为一个模型,每个维度都有维度、指标或度量,以及关于它们如何连接的明确说明。这就是我喜欢 Looker 的原因;它将数据建模提升到了一个新的水平。但如果我告诉你你可以免费获得它呢?试试 DBT 语义层,dbt-metricflow你就会明白自己做并不难。
  • Git 和源代码控制:这是我最喜欢的。目前只有少数 BI 工具具有此功能。最受欢迎的是 Looker 和 Sisense,但如果我告诉你我们可以开源并自己做呢?尝试Apache Superset,创建虚拟数据集,在存储库中对其进行源代码控制,最后使用 API 部署它们。

数据管道编排

现在我们需要协调我们构建的所有现代数据堆栈和精美的管道。

痛点10:

编排

我之前的研究表明,强调异构性、支持多种编程语言、有效使用元数据以及采用数据网格架构是构建现代、强大且可扩展的数据平台的数据管道编排的基本趋势。

解决方案:

  • 如果您依赖使用 AWS Step Functions 的 Apache Airflow 构建的旧架构,那么我建议使用该堆栈。但是,如果您正在寻找更强大和异构的解决方案,那么 Mage 编排器可能更适合。
  • 如果您需要协调大量机器学习管道,我强烈建议您尝试 Flyte。

预计对多种编程语言的支持将成为未来几年的重要趋势。例如,Temporal 可容纳各种语言和运行时,而 Airflow 主要强调 Python。

结论

第三方数据提取工具通常无法满足特定需求,而且其定价模型(通常基于提取的数据量)可能非常昂贵。作为一名数据工程师,了解如何构建和部署持久、经济高效的数据管道非常重要。

数据存储带来了另一个可能并不立即显现的挑战。利用更高效的存储类别至关重要。云存储提供了在数据湖内各种环境(例如 Spark、AWS Glue 或 Databricks)中处理数据的灵活性,并在必要时方便将数据重新加载到数据仓库中。为数据湖存储桶实施版本控制和保护是一种最佳实践,建立数据保留策略来指定应存档哪些数据以及存档多长时间也是一种最佳实践。确保存档数据以标准大数据格式存储,以便在技术发展过程中保持可访问性。

数据治理应被视为一套全面的政策和工具,用于指导关键数据利益相关者(尤其是管理层)正确使用数据。该策略可确保所有相关方都能获得高质量的数据。

在 DBT 时代,具有数据建模功能的商业智能 (BI) 工具似乎有些多余。所有 SQL 数据转换都应在到达 BI 解决方案之前完成,这符合在部署之前应进行单元测试的原则。这种方法体现了数据治理和数据建模的精髓。

感谢关注雲闪世界。(亚马逊aws和谷歌GCP服务协助解决云计算及产业相关解决方案)

 订阅频道(https://t.me/awsgoogvps_Host)
 TG交流群(t.me/awsgoogvpsHost)

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

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

相关文章

【Spring Boot】用 Spring Security 实现后台登录及权限认证功能

用 Spring Security 实现后台登录及权限认证功能 1.引入依赖2.创建权限开放的页面3.创建需要权限验证的页面4.配置 Spring Security4.1 配置 Spring MVC4.2 配置 Spring Security 5.创建登录页面6.测试权限 1.引入依赖 使用前需要引入相关依赖&#xff0c;见以下代码&#xff…

DeDe-cms 漏洞

一、文件管理上传shell 我们写一个一句话木马&#xff0c; 上传 点击访问后使用工具连接 连接成功 二、修改模板文件拿shell 找到index.html修改 保存,进行如下操作 更新html 访问返回的地址 拿工具连接 三、后台任意命令执行拿shell 写入一个木马 添加成功后点击代码 这里是文…

python-鼠标绘画线条程序

闲来无聊简单编写了一个绘图小程序。 主要思路 主要是基于Python中的内置模块turtle编写的&#xff0c;简单扩展了一下&#xff0c;通过绑定事件能够达到鼠标绘制、删除、存储已经绘制图案的线条这几个功能。 路径结构 -draw- define.py- main.py- myturtle.py使用 点住鼠…

zabbix7.0TLS-01-部署

文章目录 1 介绍1.1 架构1.2 主要概念和名词1.3 最新 7.0 TLS 版本的部分新特性更灵活的资源发现和管理 2 官方部署指导地址3 在 Rocky Linux 9 上安装 zabbix3.1 安装软件包3.2 创建初始化数据库3.3 配置zabbix-server3.4 启动Zabbix server和agent进程3.5 默认监听端口3.6 访…

电脑新加的硬盘如何分区?新加硬盘分区选MBR还是GPT

最近有网友问我,电脑新加的硬盘如何分区?电脑新加的硬盘分区选MBR还是GPT要看引导模式采用uefi还是传统的legacy模式&#xff0c;如果采用的是uefi引导模式&#xff0c;分区类型对应的就是gpt分区(guid)&#xff0c;如果引导模式采用的是legacy&#xff0c;对应的分区类型为mb…

springboot专家门诊预约管理平台-计算机毕业设计源码79775

摘要 随着互联网技术的快速发展&#xff0c;医疗健康领域数字化需求日益增长&#xff0c;专家门诊预约管理平台应运而生。本研究基于Spring Boot框架开发了一款专家门诊预约管理平台。该平台涵盖了患者用户、专家用户和管理员三个角色&#xff0c;实现了患者的预约、评价、信息…

Java:进程和线程

文章目录 进程线程的概念和区别总结如何创建线程1.继承Thread重写run2.实现Runnable重写run3.继承Thread重写run,通过匿名内部类来实现4. 实现Runnable重写run,通过匿名内部类来实现5.基于lambda表达式来创建 虚拟线程 并发编程: 通过写特殊的代码&#xff0c;把多个CPU核心都利…

C# OpenCvSharp 打开4K高清摄像头

一、前言 整了个1200w像素的usb摄像头&#xff0c;使用 OpenCvSharp读取&#xff0c;读取和设置分辨率代码耗时居然10几秒&#xff0c;查询资料发现&#xff0c;必须对VideoCapture进行设置&#xff0c;使用DSHOW模式打开&#xff0c;并且设置分辨率代码下必须增加 指定MJPG编码…

php的mysql操作可实现简单登录功能

文章目录 1. 表单和请求(1) 表单操作(2) 网络请求(3) $_REQUEST超全局变量 2. mysql数据库操作1) mysqli连接操作2) 操作数据库3) 预处理语句4) pdo操作数据库5) 创建连接并执行查询语句 1. 表单和请求 主要使用到**$_GET** 和 $_POST这两个超全局变量,分别对应两种请求 (1) …

【2024蓝桥杯/C++/B组/小球反弹】

题目 分析 Sx 2 * k1 * x; Sy 2 * k2 * y; &#xff08;其中k1, k2为整数&#xff09; Vx * t Sx; Vy * t Sy; k1 / k2 (15 * y) / (17 * x)&#xff1b; 目标1&#xff1a;根据k1与k2的关系&#xff0c;找出一组最小整数组&#xff08;k1, k2&#xff09;&#xff…

北京崇文门中医院贾英才主任解读头晕:症状与根源

头晕是一种常见的症状&#xff0c;可能由多种原因引起。为了更深入地了解头晕这一症状&#xff0c;我们有幸邀请到了北京崇文门中医院的贾英才主任&#xff0c;听听他对于头晕的见解。 北京崇文门中医院贾英才主任指出&#xff0c;头晕并非一种单一的疾病&#xff0c;而是许多潜…

鉴权-RBAC模型

文章目录 1.技术选型1.网址2.Sa-Token介绍3.[Sa-Token 功能一览](https://sa-token.cc/doc.html#/?idsa-token-功能一览) 2.鉴权数据模型设计1.数据模型图2.SQL1.用户信息表2.角色表3.用户角色表&#xff08;关联表&#xff09;4.权限表5.角色权限表&#xff08;关联表&#x…

1518.换水问题

1.题目描述 超市正在促销&#xff0c;你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始&#xff0c;你一共购入了 numBottles 瓶水。 如果喝掉了水瓶中的水&#xff0c;那么水瓶就会变成空的。 给你两个整数 numBottles 和 numExchange &#xff0c;返回你 最多 可以喝到…

辩论赛评委依据什么标准进行评分呢

在辩论赛中&#xff0c;评委依据什么标准进行对参赛个人和团队进行评分呢&#xff1f;下面对这两部分介绍一些常用评分标准。 一、 个人评分标准 语言表达 1、普通话标准、语速适中&#xff1b; 2、语调平仄合理&#xff1b; 3、口头、肢体语言和谐&#xff1b; 4、修辞得当、…

C基础项目(学生成绩管理系统)

目录 一、项目要求 二、完整代码实例 三、分文件编写代码实例 一、项目要求 1.系统运行&#xff0c;打开如下界面。列出系统帮助菜单&#xff08;即命令菜单&#xff09;&#xff0c;提示输入命令 2.开始时还没有录入成绩&#xff0c;所以输入命令 L 也无法列出成绩。应提…

解决 Vue 页面中地址栏参数变更不刷新的问题

在一次Vue项目开发中&#xff0c;遇到了只改变路由中的参数&#xff0c;路由地址不改变页面数据不刷新的问题。造成这个问题的原因&#xff0c;是因为 vue-router 同一个页面地址栏参数改变&#xff08;比如文章的发布和编辑是同一个页面&#xff09;&#xff0c;不会触发vue的…

cms-wordpress 漏洞

登录后台 一、后台改模板 点击外观&#xff0c;编辑&#xff0c; 找一个php文件&#xff0c;在最开头加入一句话木马&#xff1b; 点击更新&#xff0c;访问模板类路径下的这个文件(不知道默认模板路径可以搜) 使用工具连接 二、上传主题拿shell 点击外观&#xff0c;主题&am…

NeRF学习——基于Pytorch代码复现的笔记

代码复现的框架是基于&#xff1a;pengsida 的 Learning NeRF 源代码框架是基于 Linux 的&#xff0c;我在 Windows 上进行复现有些许 bug&#xff0c;Windows 上 bug 修复的框架版本&#xff1a;Learning NeRF 希望各位可以通过学习 NeRF-Pytorch 的源码来自己复现一下试试看…

Lanproxy开箱即用的内网穿透工服务!!

Lanproxy快速上手配置服务器转发到内网!! 本教程云服务器推荐使用的开发环境如下&#xff1a;服务器端配置配置端口登录Web界面 内网客户端配置下载客户端配置客户端端口 最终效果测试 本文主要记录了使用Lanproxy搭建内网穿透服务的过程&#xff0c;其中包括服务端和客户端的详…

使用redis缓存文章浏览量

效果展示 好处 首先初始化所有浏览量 访问文章后增加的浏览量**不直接修改数据库&#xff0c;先存到redis然后访问也是获取redis的浏览量&#xff0c;做个定时任务&#xff0c;后续自定义时间同步数据库**&#xff0c;好像也就是一个集中处理罢了 CommandLineRunner实现项目…