数据编织 VS 数据仓库 VS 数据湖
目录
- 1. 什么是数据编织?
- 2. 数据编织的工作原理
- 3. 代码示例
- 4. 数据编织的优势
- 5. 应用场景
- 6. 数据编织 vs 数据仓库
- 6.1 数据存储方式
- 6.2 数据更新和实时性
- 6.3 灵活性和可扩展性
- 6.4 查询性能
- 6.5 数据治理和一致性
- 6.6 适用场景
- 6.7 代码示例比较
- 7. 数据编织 vs 数据湖
- 7.1 数据存储和结构
- 7.2 数据处理方式
- 7.3 数据治理和质量控制
- 7.4 查询和分析能力
- 7.5 使用场景
- 7.6 代码示例比较
- 7.7 总结
- 总结
1. 什么是数据编织?
数据编织(Data Weaving)是一种高级数据集成技术,旨在将来自不同源头、格式各异的数据进行无缝整合,以创建一个统一的、可查询的数据视图。这种方法不同于传统的ETL(提取、转换、加载)过程,它更加灵活、动态,能够在不破坏原始数据结构的情况下创建数据之间的关联。
数据编织的核心理念是:
- 保留原始数据的完整性
- 创建数据之间的逻辑链接
- 提供实时的数据整合视图
- 支持跨源数据的复杂查询
对比一下常见的概念
特征 | 数据编织 | 数据仓库 | 数据湖 |
---|---|---|---|
数据存储 | 虚拟集成,数据保留在原始位置 | 集中式存储,结构化数据 | 分布式存储,支持所有类型数据 |
数据结构 | 通过语义层定义 | 预定义的模式(如星型、雪花) | 灵活,支持结构化、半结构化、非结构化 |
数据处理 | 实时查询转换 | ETL(提取、转换、加载) | ELT(提取、加载、转换) |
更新频率 | 实时/近实时 | 定期批量更新 | 可以实时或批量 |
数据量 | 中等到大 | 大 | 极大 |
数据质量 | 依赖源系统,通过语义层提升 | 高,经过清洗和转换 | 原始数据,质量参差不齐 |
查询性能 | 对于跨源查询较快 | 对预定义查询很快 | 可能较慢,需要优化 |
灵活性 | 非常高 | 相对固定 | 高 |
用户群 | 业务分析师,数据科学家 | 业务用户,分析师 | 数据科学家,高级分析师 |
主要用途 | 实时数据集成,跨系统分析 | 报表,商业智能 | 大数据分析,机器学习 |
数据治理 | 通过元数据和语义映射 | 集中化管理,易于实施 | 挑战大,需要额外工具 |
成本 | 中等 | 高 | 相对较低 |
实现复杂度 | 中等 | 高 | 低到中等 |
扩展性 | 高 | 受限于中央系统 | 非常高 |
历史数据处理 | 取决于源系统 | 优秀 | 优秀 |
数据探索 | 受限于预定义的语义层 | 受限于预定义的模式 | 非常适合 |
适用场景 | 需要实时、统一数据视图的企业 | 需要稳定、一致报告的企业 | 需要存储和分析大量多样化数据的组织 |
2. 数据编织的工作原理
数据编织通过以下步骤实现:
-
数据源连接: 建立与各种数据源的连接,包括关系型数据库、NoSQL数据库、文件系统等。
-
元数据提取: 分析各数据源的结构,提取元数据信息。
-
语义映射: 定义不同数据源之间的语义关系,创建数据元素之间的映射。
-
虚拟数据层创建: 基于语义映射构建一个虚拟的数据层,作为统一查询的接口。
-
查询转换: 将针对虚拟数据层的查询转换为对原始数据源的查询。
-
结果整合: 汇总来自不同数据源的查询结果,形成最终的数据视图。
3. 代码示例
下面是一个使用Python实现简单数据编织的示例代码:
import pandas as pd
from sqlalchemy import create_engineclass DataWeaver:def __init__(self):self.data_sources = {}self.virtual_view = Nonedef add_data_source(self, name, connection_string):engine = create_engine(connection_string)self.data_sources[name] = enginedef create_virtual_view(self, mapping):self.virtual_view = mappingdef query(self, query_string):results = {}for source, fields in self.virtual_view.items():if source in self.data_sources:engine = self.data_sources[source]sql = f"SELECT {', '.join(fields)} FROM {source}"results[source] = pd.read_sql(sql, engine)return pd.concat(results.values(), axis=1)# 使用示例
weaver = DataWeaver()# 添加数据源
weaver.add_data_source('customers', 'sqlite:///customers.db')
weaver.add_data_source('orders', 'sqlite:///orders.db')# 创建虚拟视图
weaver.create_virtual_view({'customers': ['id', 'name', 'email'],'orders': ['customer_id', 'order_date', 'total_amount']
})# 执行查询
result = weaver.query("SELECT * FROM virtual_view")
print(result)
这个简化的例子展示了数据编织的基本概念。在实际应用中,数据编织系统会更加复杂,需要处理更多的数据源类型、更复杂的查询转换和更高效的数据整合策略。
4. 数据编织的优势
-
数据灵活性: 不需要将所有数据物理地整合到一个地方,保持了数据的分布式特性。
-
实时性: 可以提供近乎实时的数据视图,而不是依赖于周期性的ETL过程。
-
降低存储成本: 避免了数据冗余存储,节省了存储空间。
-
数据治理: 通过元数据管理和语义映射,提高了数据的可理解性和可用性。
-
查询性能: 通过智能查询优化,可以提高跨源数据查询的性能。
5. 应用场景
数据编织技术在多个领域都有广泛应用,例如:
- 企业数据整合
- 物联网数据分析
- 客户360度视图
- 实时报表和仪表板
- 大数据湖和数据仓库的结合
6. 数据编织 vs 数据仓库
虽然数据编织和数据仓库都旨在整合和管理数据,但它们在方法和应用上有显著差异。让我们来详细比较一下:
6.1 数据存储方式
-
数据仓库:
- 采用集中式存储模型
- 将数据从各源系统提取、转换后存入一个集中的仓库
- 通常使用结构化的模式,如星型或雪花模式
-
数据编织:
- 采用分布式的虚拟集成模型
- 数据保留在原始源系统中
- 创建一个虚拟层来整合和呈现数据,无需物理移动
6.2 数据更新和实时性
-
数据仓库:
- 通常采用批量更新模式
- 数据更新有一定的延迟,通常是每日或每周
- 适合历史数据分析和趋势报告
-
数据编织:
- 支持实时或近实时的数据访问
- 直接从源系统获取最新数据
- 适合需要最新数据的实时分析和决策支持
6.3 灵活性和可扩展性
-
数据仓库:
- 架构相对固定,修改模式需要较大工作量
- 扩展性受限于中央存储系统的容量
- 添加新数据源可能需要重新设计ETL流程
-
数据编织:
- 高度灵活,可以轻松添加或修改数据源
- 扩展性强,可以无缝集成新的数据系统
- 适应性强,能快速响应业务需求变化
6.4 查询性能
-
数据仓库:
- 对预定义的查询和报表性能优秀
- 可以通过预聚合和索引优化提高性能
- 复杂查询可能需要大量计算资源
-
数据编织:
- 复杂查询性能可能不如优化过的数据仓库
- 但对于跨源的即时查询有优势
- 通过智能查询优化和缓存策略可以提高性能
6.5 数据治理和一致性
-
数据仓库:
- 提供一个"单一事实来源"
- 数据一致性高,易于实施数据治理
- 适合需要严格数据质量控制的场景
-
数据编织:
- 保留原始数据的完整性
- 通过元数据管理和语义映射实现数据治理
- 需要更复杂的机制来确保跨源数据的一致性
6.6 适用场景
-
数据仓库:
- 适合大规模的历史数据分析
- 企业级报表和商业智能应用
- 需要高度结构化和一致性的数据环境
-
数据编织:
- 适合需要实时数据整合的场景
- 动态的、跨系统的数据分析
- 快速变化的业务环境,需要灵活数据访问
6.7 代码示例比较
为了更直观地展示两种方法的区别,让我们看一下简化的代码示例:
数据仓库ETL过程:
import pandas as pd
from sqlalchemy import create_engine# 连接源数据库和数据仓库
source_engine = create_engine('sqlite:///source.db')
warehouse_engine = create_engine('sqlite:///warehouse.db')# 提取数据
df = pd.read_sql("SELECT * FROM source_table", source_engine)# 转换数据
df['new_column'] = df['column_a'] + df['column_b']# 加载到数据仓库
df.to_sql('warehouse_table', warehouse_engine, if_exists='replace')
数据编织过程:
import pandas as pd
from sqlalchemy import create_engineclass DataWeaver:def __init__(self):self.sources = {}def add_source(self, name, connection_string):self.sources[name] = create_engine(connection_string)def query(self, virtual_query):results = {}for source, query in virtual_query.items():results[source] = pd.read_sql(query, self.sources[source])return pd.concat(results.values(), axis=1)# 使用示例
weaver = DataWeaver()
weaver.add_source('source1', 'sqlite:///source1.db')
weaver.add_source('source2', 'sqlite:///source2.db')result = weaver.query({'source1': "SELECT column_a, column_b FROM table1",'source2': "SELECT column_c FROM table2"
})
这些示例清楚地展示了两种方法在数据处理上的根本区别。
数据仓库方法涉及数据的提取、转换和加载,而数据编织方法则是通过虚拟查询直接访问源数据。
总的来说,数据编织和数据仓库各有其优势和适用场景。数据编织为现代数据集成提供了更灵活、实时的解决方案,特别适合快速变化的业务环境。而数据仓库则在处理大规模历史数据分析和提供一致的企业级报告方面仍然占据重要地位。在实际应用中,许多组织选择结合这两种方法,以充分利用它们的优势。
7. 数据编织 vs 数据湖
数据编织和数据湖都是现代数据架构中的重要组成部分,但它们在设计理念和应用场景上有明显的不同。让我们来比较一下:
7.1 数据存储和结构
-
数据湖:
- 存储大量原始数据,包括结构化、半结构化和非结构化数据
- 数据以原始格式存储,通常使用对象存储或分布式文件系统
- “存储优先,架构滞后”(Schema-on-read)的方法
-
数据编织:
- 不直接存储数据,而是创建虚拟的数据视图
- 通过元数据和语义层连接不同的数据源
- 保持数据在原始位置,创建逻辑关联
7.2 数据处理方式
-
数据湖:
- 支持批处理和流处理
- 通常需要数据科学家或数据工程师来处理和分析数据
- 适合大规模数据探索和高级分析
-
数据编织:
- 主要关注实时数据集成和查询
- 通过预定义的语义映射简化数据访问
- 适合业务用户进行即时数据分析和报告
7.3 数据治理和质量控制
-
数据湖:
- 数据治理是一个挑战,容易变成"数据沼泽"
- 需要额外的工具和流程来确保数据质量和可追溯性
- 适合存储大量原始数据,但可能导致数据冗余
-
数据编织:
- 通过元数据管理和语义映射提供更好的数据治理
- 保持数据在原始源中,减少数据冗余
- 更容易实现数据血缘和影响分析
7.4 查询和分析能力
-
数据湖:
- 支持深度分析和机器学习任务
- 查询性能可能较慢,特别是对于未优化的数据
- 适合大规模数据挖掘和复杂分析
-
数据编织:
- 优化用于快速、跨源数据查询
- 提供统一的数据访问层,简化复杂查询
- 适合实时报告和交互式分析
7.5 使用场景
-
数据湖:
- 大数据存储和分析
- 数据科学和机器学习项目
- 长期数据存档和合规性要求
-
数据编织:
- 企业数据集成和实时报告
- 客户360度视图
- 跨系统数据分析和决策支持
7.6 代码示例比较
为了更直观地理解两者的区别,让我们看一下简化的代码示例:
数据湖处理示例(使用PySpark):
from pyspark.sql import SparkSession# 创建Spark会话
spark = SparkSession.builder.appName("DataLakeProcessing").getOrCreate()# 从数据湖读取数据
raw_data = spark.read.format("parquet").load("s3://data-lake-bucket/raw-data/")# 数据处理
processed_data = raw_data.filter(raw_data.column_a > 100)\.groupBy("column_b")\.agg({"column_c": "sum"})# 将结果写回数据湖
processed_data.write.format("parquet").mode("overwrite").save("s3://data-lake-bucket/processed-data/")
数据编织示例:
class DataWeaver:def __init__(self):self.sources = {}self.semantic_layer = {}def add_source(self, name, connection_string):self.sources[name] = create_engine(connection_string)def define_semantic_mapping(self, virtual_table, mapping):self.semantic_layer[virtual_table] = mappingdef query(self, virtual_query):# 解析虚拟查询,映射到实际数据源actual_queries = self.translate_query(virtual_query)results = {}for source, query in actual_queries.items():results[source] = pd.read_sql(query, self.sources[source])return pd.concat(results.values(), axis=1)def translate_query(self, virtual_query):# 这里应该包含复杂的查询转换逻辑# 简化版本仅作演示return {source: f"SELECT {', '.join(columns)} FROM {table}"for source, (table, columns) in self.semantic_layer.items()}# 使用示例
weaver = DataWeaver()
weaver.add_source('source1', 'postgresql://user:pass@localhost:5432/db1')
weaver.add_source('source2', 'mysql://user:pass@localhost:3306/db2')weaver.define_semantic_mapping('virtual_customer_view', {'source1': ('customers', ['id', 'name', 'email']),'source2': ('orders', ['customer_id', 'order_date', 'total'])
})result = weaver.query("SELECT * FROM virtual_customer_view")
这些示例展示了数据湖和数据编织在数据处理方式上的根本区别。数据湖侧重于大规模数据的存储和处理,而数据编织侧重于创建虚拟的、统一的数据视图。
7.7 总结
数据湖和数据编织各有其优势和适用场景:
-
数据湖适合存储和分析大量多样化的原始数据,特别是在需要进行深度数据挖掘和高级分析的场景。
-
数据编织则更适合需要实时、跨系统数据集成的场景,尤其是在业务用户需要快速访问和分析来自多个源系统数据的情况下。
在实际应用中,许多组织选择将数据湖和数据编织结合使用,以充分利用两者的优势。例如,可以使用数据湖存储和处理大量原始数据,然后通过数据编织技术为这些数据创建更易于访问和分析的虚拟视图。
这种组合方法可以提供强大的数据存储和处理能力,同时也确保了数据的可访问性和实时性,从而满足各种复杂的业务需求。
总结
数据编织作为一种先进的数据集成方法,为大数据时代的数据管理和分析提供了新的可能。
它不仅提高了数据的可用性和灵活性,还为企业提供了更快速、更全面的数据洞察能力。
随着技术的不断发展,数据编织必将在大数据生态系统中扮演越来越重要的角色。
相关文章:
数据编织 VS 数据仓库 VS 数据湖
目录 1. 什么是数据编织?2. 数据编织的工作原理3. 代码示例4. 数据编织的优势5. 应用场景6. 数据编织 vs 数据仓库6.1 数据存储方式6.2 数据更新和实时性6.3 灵活性和可扩展性6.4 查询性能6.5 数据治理和一致性6.6 适用场景6.7 代码示例比较 7. 数据编织 vs 数据湖7.1 数据存储…...
CSS(十一)——CSS分组和嵌套,尺寸(Dimension)
CSS 分组 和 嵌套 选择器 分组选择器 举个例子,多个标签有同一个样式,就可以不一个一个分开写,使用分组选择器 比如: h1 {color:green; } h2 {color:green; } p {color:green; } 就可以写为: h1,h2,p {color…...
必备神器!三款优秀远程控制电脑软件推荐
嘿,各位职场小伙伴们,今儿个咱们来聊聊个挺实用又带点“科技范儿”的话题——电脑远程控制那点事儿。作为刚踏入职场不久的新人,我深刻体会到,在这信息爆炸的时代,掌握几招远程操作的技能,简直就是给自个儿…...
关于正运动学解机器人手臂算法
机器人正运动学是机器人学的一个分支,研究机器人的运动和位置之间的关系。它通过解析机器人的结构和关节参数,以及给定的关节角度,来计算机器人的末端执行器的位置和姿态。 机器人正运动学算法通常使用DH(Denavit-Hartenberg&…...
MySQL 约束 (constraint)
文章目录 约束(constraint)列级约束和表级约束给约束起名字(constraint)非空约束(no null)检查约束(check)唯一性约束 (unique)主键约束 (primary key)主键分类单一主键复合主键主键自增 (auto_increment) 外键约束外什…...
用python程序发送文件(python实例二十六)
目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.文件上传 3.1 代码构思 3.2 服务端代码 3.3 客户端代码 3.4 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具…...
最新源支付系统源码 V7版全开源 免授权 附搭建教程
本文来自:最新源支付系统源码 V7版全开源 免授权 附搭建教程 - 源码1688 简介: 最新源支付系统源码_V7版全开源_免授权_附详细搭建教程_站长亲测 YPay是专为个人站长打造的聚合免签系统,拥有卓越的性能和丰富的功能。它采用全新轻量化的界面…...
HTML:lang属性作用
lang作用 用法常见语言代码优点示例结构效果说明分析HTML 基础结构导航栏内容部分总结 扩展 用法 HTML 文档级别: 在 <html> 标签上使用 lang 属性,指定整个文档的语言。 <!DOCTYPE html> <html lang"en"> <head><meta charse…...
Android SurfaceFlinger——纹理的绘制流程(二十八)
在系统开机动画的播放流程中,会从给定的资源文件中加载纹理数据并初始化一个 OpenGL 纹理对象,这里我们就来解析软件模拟纹理的绘制流程。 一、纹理概述 在 Android 的 SurfaceFlinger 系统组件中,纹理(Texture)是一个核心概念,特别是在涉及到图形渲染和显示的过程中。 …...
深入解析Memcached:C#中的应用与实战案例
目录 Memcached简介Memcached的特点Memcached的工作原理Memcached的应用场景Memcached的安装和配置Memcached与C#的集成 引入依赖配置Memcached客户端C#代码示例 存储数据读取数据删除数据深入解析Memcached 数据存储和过期策略分布式架构性能优化实战案例 缓存数据库查询结果实…...
keyring 库
目录 安装 keyring 基本用法 1. 设置密码 2. 获取密码 3. 删除密码 4. 返回当前使用的默认密钥环 5. 列出所有密码 支持的后端 keyring 是一个 Python 库,用于将敏感信息(如密码)安全地存储在操作系统的密码管理器中。它支持多种平台…...
[css3] 如何设置边框颜色渐变
div {border: 4px solid;border-image: linear-gradient(to right, #8f41e9, #578aef) 1; }参考: 5种CSS实现渐变色边框(Gradient borders方法的汇总...
Redux +Toolkit 工具包快速入门
您将学到什么 如何设置并使用 Redux Toolkit 和 React-Redux 先决条件 熟悉ES6 语法和功能了解 React 术语:JSX、State、Function Components 、 Props和Hooks理解Redux 术语和概念 1、基本使用 1.1、安装 Redux Toolkit 和 React- Redux 将 Redux Toolkit 和 Rea…...
【Python数据增强】图像数据集扩充
前言:该脚本用于图像数据增强,特别是目标检测任务中的图像和标签数据增强。通过应用一系列数据增强技术(如旋转、平移、裁剪、加噪声、改变亮度、cutout、翻转等),生成多样化的图像数据集,以提高目标检测模…...
实时同步:使用 Canal 和 Kafka 解决 MySQL 与缓存的数据一致性问题
目录 1. 准备工作 2. 将需要缓存的数据存储 Redis 3. 监听 canal 存储在 Kafka Topic 中数据 1. 准备工作 1. 开启并配置MySQL的 BinLog(MySQL 8.0 默认开启) 修改配置:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini log-bin"HELO…...
WINUI——Microsoft.UI.Xaml.Markup.XamlParseException:“无法找到与此错误代码关联的文本。
开发环境 VS2022 .net core6 问题现象 在Canvas内的子控件要绑定Canvas的兄弟控件的一个属性,在运行时出现了下述报错。 可能原因 在 WinUI(特别是用于 UWP 或 Windows App SDK 的版本)中,如果你尝试在 XAML 中将 Canvas 内的…...
C语言 | Leetcode C语言题解之第283题移动零
题目: 题解: void swap(int *a, int *b) {int t *a;*a *b, *b t; }void moveZeroes(int *nums, int numsSize) {int left 0, right 0;while (right < numsSize) {if (nums[right]) {swap(nums left, nums right);left;}right;} }...
WPF项目实战视频《二》(主要为prism框架)
14.prism框架知识(1) 使用在多个平台的MVVM框架 新建WPF项目prismDemo 项目中:工具-NuGet包管理:安装Prism.DryIoc框架 在git中能看Prism的结构和源代码:git链接地址 例如:Prism/src/Wpf/Prism.DryIoc.Wpf…...
【微信小程序实战教程】之微信小程序 WXS 语法详解
WXS语法 WXS是微信小程序的一套脚本语言,其特性包括:模块、变量、注释、运算符、语句、数据类型、基础类库等。在本章我们主要介绍WXS语言的特性与基本用法,以及 WXS 与 JavaScript 之间的不同之处。 1 WXS介绍 在微信小程序中,…...
Android中Service学习记录
目录 一 概述二 生命周期2.1 启动服务startService()2.2 绑定服务bindService()2.3 先启动后绑定2.4 先绑定后启动 三 使用3.1 本地服务(启动式)3.2 可通信的服务(绑定式)3.3 前台服务3.4 IntentService 总结参考 一 概述 Servic…...
Elasticsearch:Java ECS 日志记录 - log4j2
ECS 记录器是你最喜欢的日志库的格式化程序/编码器插件。它们可让你轻松将日志格式化为与 ECS 兼容的 JSON。ECS 兼容的 JSON 日志记录可以帮我们简化很多分析,可视化及解析的工作。在今天的文章里,我来详述如何在 Java 应用里生成 ECS 相兼容的日志。 …...
MongoDB自学笔记(四)
一、前文回顾 上一篇文章中我们学习了MongoDB中的更新方法,也学了一部分操作符。今天我们将学习最后一个操作“删除”。 二、删除 原始数据如下: 1、deleteOne 语法:db.collection.deleteOne(< query >,< options >) 具体参…...
时序分解 | Matlab基于CEEMDAN-CPO-VMD的CEEMDAN结合冠豪猪优化算法(CPO)优化VMD二次分解
时序分解 | Matlab基于CEEMDAN-CPO-VMD的CEEMDAN结合冠豪猪优化算法(CPO)优化VMD二次分解 目录 时序分解 | Matlab基于CEEMDAN-CPO-VMD的CEEMDAN结合冠豪猪优化算法(CPO)优化VMD二次分解效果一览基本介绍程序设计参考资料 效果一览…...
新版海螺影视主题模板M3.1全解密版本多功能苹果CMSv10后台自适应主题
苹果CMS2022新版海螺影视主题M3.1版本,这个主题我挺喜欢的,之前也有朋友给我提供过原版主题,一直想要破解但是后来找了几个SG11解密的大哥都表示解密需要大几百大洋,所以一直被搁置了。这个版本是完全解密的,无需SG11加…...
汽车免拆诊断案例 | 2014 款上汽名爵 GT 车发动机无法起动
故障现象 一辆2014款上汽名爵GT车,搭载15S4G发动机,累计行驶里程约为18.4万km。该车因左前部发生碰撞事故进厂维修,更换损坏的部件后起动发动机,起动机运转有力,但无着机迹象。用故障检测仪检测,发现无法与…...
vue3前端开发-小兔鲜项目-登录功能的业务接口调用
vue3前端开发-小兔鲜项目-登录功能的业务接口调用!这次,正式调用远程服务器的登录接口了。大家要必须使用测试账号密码,才能验证我们的代码。 测试账号密码是:账号(xiaotuxian001);密码是(1234…...
【Linux】vim编辑器使用详解
目录 一、vim编辑器简介二、 vim编辑器使用指南1.基本操作1.进入与退出2.模式切换 2.命令模式1.移动光标2.选择文本(可视模式)3.删除文字4.复制粘贴5.替换6.撤销7.注释8.多文件窗口切换 3.底行模式1.列出每行的行号2.跳转到某行3.查找字符4.保存文件5.在…...
手机怎么设置不同的ip地址
在数字化日益深入的今天,智能手机已成为我们生活、工作和学习中不可或缺的设备。然而,随着网络应用的广泛和深入,我们有时需要为手机设置不同的IP地址来满足特定需求。比如,避免网络限制、提高网络安全、或者进行网络测试等。本文…...
SpringBoot读取配置的6种方式
在SpringBoot应用开发中,配置文件是不可或缺的一部分。它们帮助我们管理应用的运行时参数,使得应用的部署和维护变得更加灵活。SpringBoot提供了多种方式来读取配置文件,每种方式都有其适用场景和优缺点。本文将介绍六种常用的SpringBoot读取…...
1.1 openCv -- 介绍
OpenCV(开放源代码计算机视觉库:http://opencv.org)是一个开源库,包含了数百种计算机视觉算法。本文件描述了所谓的OpenCV 2.x API,这是一个本质上基于C++的API,与基于C的OpenCV 1.x API(C API已被弃用,并且自从OpenCV 2.4版本起不再使用“C”编译器进行测试)相对。 …...
探索PostgreSQL的GUI工具:提升数据库管理效率
在当今快速发展的技术世界中,数据库管理是任何软件开发项目的核心部分。PostgreSQL,作为一款功能强大的开源关系型数据库管理系统,因其稳定性、可靠性和高度的可扩展性而广受开发者和数据库管理员的青睐。然而,尽管PostgreSQL自带…...
【从零开始实现stm32无刷电机FOC】【实践】【5/7 stm32 adc外设的高级用法】
目录 采样时刻触发采样同步采样 点击查看本文开源的完整FOC工程 本节介绍的adc外设高级用法用于电机电流控制。 从前面几节可知,电机力矩来自于转子的q轴受磁力,而磁场强度与电流成正比,也就是说电机力矩与q轴电流成正相关,控制了…...
springcloud接入seata管理分布式事务
下载安装包 链接: seata 配置seata-server 文件上传Linux解压 压缩包我放在/usr/local/seata中 tar -zxvf seata-server-2.0.0.tar.gz修改配置文件 设置nacos为注册和配置中心 进入文件夹 cd /usr/local/seata/seata/conf修改application.yml文件 ...... ...... cons…...
Android APP 音视频(02)MediaProjection录屏与MediaCodec编码
说明: 此MediaProjection 录屏和编码实操主要针对Android12.0系统。通过MediaProjection获取屏幕数据,将数据通过mediacodec编码输出H264码流(使用ffmpeg播放),存储到sd卡上。 1 MediaProjection录屏与编码简介 这里…...
java中log4j.properties配置文件浅析
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可按keyvalue格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。 1、配置文件 Log4J配置文件的基本格式如下: #配置根Logger log4j.roo…...
RV1126 Linux 系统,接外设,时好时坏(二)排查问题的常用命令
在 RV1126 Linux 系统中,排查外设连接问题时,可以使用多种命令来诊断和调试。以下是一些常用的命令和工具: 1. 查看系统日志 dmesg: 显示内核环形缓冲区的消息,通常包含设备初始化、驱动加载和错误等信息。 dmesg | grep <设备名或相关关键字>journalctl: 查看系统…...
鸿蒙北向开发 DevEco Studio 4.1 下载安装傻瓜式教程
开篇 由于鸿蒙处于快速发展中,鸿蒙的api快速迭代更新,老版本的DevEco studio无法支持更新版本的api,因此华为官网放弃了老版本的维护.直接从华为开发者官网无法下载老版本,当前华为开发者官网已经推出next版本了 DevEco studio3.1安装教程 上述教程提供的华为开发者官网地址已经…...
pglogical扩展的基本用法介绍
瀚高数据库 目录 环境 文档用途 详细信息 环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:14 文档用途 本文翻译了pglogical扩展的官方文档,介绍了pglogical扩展的各类管理函数及使用限制,详情请看下文. 一、节点管理 节点可以使用以下…...
2024年虚拟主机转移教程
转移网站并不困难,但选择正确的选项和最佳程序才是关键。网站托管服务被视为当今数字世界的基石,全球有18 亿个网站。网站所有者可以通过下载备份、将其上传到新服务器并指向域名来手动转移网站。他们还可以通过新网站托管商的助手请求来移动网站。对于初…...
Python 函数对象和函数调用
Python 函数对象和函数调用 在 Python 中,函数是第一类对象(first-class objects)。这意味着函数可以像其他对象(如整数、字符串、列表等)一样被传递、赋值和操作。理解函数对象和函数调用的区别是学习 Python 的关键…...
sql注入的专项练习 sqlilabs(含代码审计)
在做题之前先复习了数据库的增删改查,然后自己用本地的环境,在自己建的库里面进行了sql语句的测试,主要是回顾了一下sql注入联合注入查询的语句和sql注入的一般做题步骤。 1.获取当前数据库 2.获取数据库中的表 3.获取表中的字段名 一、sql…...
淄博网站建设贵不贵
淄博网站建设的价格因各种因素而异,它可能会根据您对网站的需求、功能和设计复杂性等方面的要求而有所不同。虽然淄博网站建设的费用可能因需求的不同而有所变化,但是无论如何,它通常是值得的投资。 首先,对于个人和小型企业来说&…...
【学习笔记】无人机系统(UAS)的连接、识别和跟踪(十)-无人机A2X服务
引言 3GPP TS 23.256 技术规范,主要定义了3GPP系统对无人机(UAV)的连接性、身份识别、跟踪及A2X(Aircraft-to-Everything)服务的支持。 3GPP TS 23.256 技术规范: 【免费】3GPPTS23.256技术报告-无人机系…...
基于迁移学习的手势分类模型训练
1、基本原理介绍 这里介绍的单指模型迁移。一般我们训练模型时,往往会自定义一个模型类,这个类中定义了神经网络的结构,训练时将数据集输入,从0开始训练;而迁移学习中(单指模型迁移策略)&#x…...
个性化音频生成GPT-SoVits部署使用和API调用
一、训练自己的音色模型步骤 1、准备好要训练的数据,放在Data文件夹中,按照文件模板中的结构进行存放数据 2、双击打开go-webui.bat文件,等待页面跳转 3、页面打开后,开始训练自己的模型 (1)、人声伴奏分…...
MFC列表框示例
本文仅供学习交流,严禁用于商业用途,如本文涉及侵权请及时联系本人将于及时删除 目录 1.示例内容 2.程序步骤 3.运行结果 4.代码全文 1.示例内容 编写一个对话框应用程序CMFC_Li6_4_学生信息Dlg,对话框中有一个列表框,当用户…...
Android TabLayout的简单用法
TabLayout 注意这里添加tab,使用binding.tabLayout.newTab()进行创建 private fun initTabs() {val tab binding.tabLayout.newTab()tab.text "模板库"binding.tabLayout.addTab(tab)binding.tabLayout.addOnTabSelectedListener(object : TabLayout.On…...
基于vite + pnpm monorepo 实现一个UI组件库
基于vite pnpm monorepo的vue组件库 仓库地址 思路 好多文章都是直接咔咔咔的上代码。跟着做也没问题,但总觉得少了些什么。下次做的时候还要找文章参考。。 需求有三个模块,那么就需要三个包。使用monorepo进行分包管理。 a. 组件库 b. 组件库文档…...
FDM3D打印系列——Luck13关节可动模型打印和各种材料的尝试
luck13可动关节模型FDM3D打印制作过程 大家好,我是阿赵。 最近我沉迷于打印一个叫做Luck13的关节超可动人偶。 首先说明一下,这个模型是分为了外甲和骨骼两个部分的。 为什么我会打印了这么多个呢? 一、第一次尝试——PLATPU 刚开始…...
windows10 获取磁盘类型
powershell Get-PhysicalDisk | Select FriendlyName, MediaType FriendlyName MediaType ------------ --------- NVMe PC SN740 NVMe WD 256GB SSD WDC WD10EZEX-75WN4A1 HDD 适用场景 SSD: 适合需要快速访问速度和较高响…...