小白对时序数据库的理解
一、什么是时序数据库?
时序数据库(Time Series Database,TSDB)是一种专门用于存储、处理和分析时间序列数据的数据库管理系统。时间序列数据是按时间顺序记录的数据,通常由各种设备和传感器生成,例如智慧城市、物联网、车联网、工业互联网等领域的设备,以及证券市场的行情数据等。这些数据通常具有以下特点:
- 时间戳:每个数据点都带有时间戳,这对于数据的计算和分析至关重要。
- 结构化:与非结构化数据不同,时序数据通常是结构化的,具有预定义的数据类型或固定长度。
- 流式:数据源以近似恒定的速率生成数据,如音频或视频流,这些数据流彼此独立。
- 流量平稳可预测:与社交媒体等数据不同,时序数据的流量在一段时间内是稳定的,并且可以根据数据源的数量和采样周期进行计算和预测。
- 不变性:时序数据通常是只添加的(append-only),类似于日志数据,一般不需要修改原始数据。
时序数据库针对这些特点进行了优化,以提高数据的写入和查询速度,同时也提高了数据压缩率。此外,时序数据库还包含专有的时序数据分析功能和数据管理功能,使用户可以轻松地开发应用程序。
时序数据库的应用场景非常广泛,包括但不限于:
- 监控软件系统:如虚拟机、容器、服务、应用程序的监控。
- 监控物理系统:如水文监控、制造业工厂中的设备监控、国家安全相关的数据监控、通讯监控、传感器数据等。
- 资产跟踪应用:如汽车、卡车、物理容器、运货托盘的跟踪。
- 金融交易系统:如传统证券、新兴的加密数字货币的交易记录。
- 事件应用程序:跟踪用户、客户的交互数据。
- 商业智能工具:跟踪关键指标和业务的总体健康情况。
时序数据库在处理时序数据时面临的挑战包括数据的高吞吐量写入、高速聚合、降低存储成本以及多维度查询能力。因此,时序数据库通常采用特殊的数据结构和技术,如Log-Structured Merge-tree(LSM-tree)、基于时间的分区、数据压缩以及内置基于时间的函数和聚合,以提高性能和效率
二、用通俗点的例子来理解时序数据库
时序数据库就像是一个专门记录时间变化的超级账本。你可以把它想象成一个特殊的日记本,它不仅记录了每天发生了什么(就像普通日记本一样),而且每篇日记都有一个精确的时间戳,告诉你这件事是什么时候发生的。
这个日记本特别适合记录那些随着时间推移而变化的事情,比如:
-
家里的温度计:每过一段时间,温度计就会记录一次当前的温度,这些数据点连成一条线,就能看到一天中温度的变化。
-
股票市场的价格:股票价格每时每刻都在变化,时序数据库能够记录下这些变化,帮助人们分析股票的走势。
-
工厂里的机器:工厂里的机器在运转时会生成很多数据,比如速度、温度等,这些数据可以帮助工程师监控机器的运行状态,预防故障。
时序数据库的特别之处在于:
- 它写入数据非常快,因为世界上有很多设备每时每刻都在产生数据。
- 它查询数据也很快,尤其是当你想知道某个时间点或者时间段内发生了什么的时候。
- 它非常节省空间,因为它知道数据是按照时间顺序来的,所以可以用一种很紧凑的方式存储这些数据。
- 它有一些特殊的功能,比如可以很容易地计算一段时间内的平均值、最大值或者趋势等。
总的来说,时序数据库就是帮助我们更好地记录、存储和分析那些随时间变化的数据,让我们能够从这些数据中发现规律、预测未来,或者及时做出决策。
三、应用场景
时序数据库的应用场景非常广泛,它们特别适合那些需要记录和分析随时间变化的数据的情况。下面是一些典型的应用场景:
1. 工业监控:在工厂中,各种传感器会实时监测机器的运行状态,如温度、压力、流速等。时序数据库可以记录这些数据,帮助工程师实时监控生产线,预测维护需求,减少停机时间。
2. 智能家居:智能家居系统会收集各种设备的数据,如灯光、温度、安全系统等。时序数据库可以存储这些数据,让用户能够监控家庭状态,优化能源使用,提高安全性。
3. 金融交易:在金融市场中,股票、外汇和其他金融工具的价格实时变动。时序数据库可以记录这些交易数据,帮助分析师和交易员进行市场分析,识别交易模式。
4. 气象监测:气象站收集的温度、湿度、风速等数据随时间变化。时序数据库可以存储这些数据,帮助气象学家进行天气预测,预警极端天气事件。
5. 能源管理:智能电表和燃气表会定期记录能源使用情况。时序数据库可以分析这些数据,帮助能源公司和消费者优化能源消耗,降低成本。
6. 医疗健康:可穿戴设备和医疗监测设备会实时记录患者的健康数据,如心率、血压、活动量等。时序数据库可以存储这些数据,帮助医生进行远程监控,及时干预。
7. 交通监控:交通系统中的摄像头和传感器会收集交通流量、车速、事故等数据。时序数据库可以分析这些数据,帮助交通管理部门优化交通流量,减少拥堵。
8. 网络安全:网络安全系统会记录网络中的各种事件,如登录尝试、数据访问等。时序数据库可以存储和分析这些数据,帮助安全专家检测和响应安全威胁。
9. 应用性能监控:APM工具会监控软件应用的性能指标,如响应时间、错误率等。时序数据库可以存储这些数据,帮助开发人员诊断问题,优化应用性能。
10. 物联网(IoT):物联网设备会产生大量的数据,如位置跟踪、环境监测等。时序数据库可以处理这些数据,支持设备管理、数据分析和智能决策。
这些场景中,时序数据库的优势在于它能够高效地处理大量时间序列数据,支持快速的数据写入和查询,以及提供强大的数据分析功能。
四、时序数据库中的数据长啥样
时序数据库中的数据存储格式是专门为了优化时间序列数据的存储和查询而设计的。虽然不同的时序数据库可能在具体的存储格式上有所不同,但它们通常会包含以下几个关键组件:
1. 时间戳(Timestamp):这是每个数据点的首要特征,通常是一个精确到毫秒甚至微秒的时间标记,用来表示数据点的记录时间。
2. 度量值(Metric或Value):这是实际的数据值,可以是温度、速度、价格等任何被测量和记录的数值。
3. 标签(Tags):这些是附加在数据点上的键值对,用于提供额外的、不随时间变化的元数据,比如设备的ID、位置、类型等。标签通常用于数据的快速检索和分组。
4. 字段(Fields):与标签不同,字段包含的是随时间变化的数据,比如传感器记录的不同参数值。
5. 时间序列标识(Metric Name或Series Key):这是一个标识符,用来区分不同的时间序列。它通常由度量值的名称和一组标签组成,可以唯一地标识一个数据流。
一个典型的时序数据库中的数据点可以表示为:
<时间序列标识> <时间戳> <字段> <标签>
或者更具体地:
<度量值> <时间戳> <字段1> <字段2> ... <标签1>=<值1> <标签2>=<值2> ...
例如,假设我们有一个监控室温的温度传感器,它的数据点可能看起来像这样:
temperature 1633036800 22.5 location=living_room device_id=A123
这里,“temperature”是度量值的名称,`1633036800`是Unix时间戳(代表特定的日期和时间),`22.5`是温度值,`location=living_room`和`device_id=A123`是标签,提供了设备的额外信息。
在存储时,时序数据库会利用时间戳和标签来组织数据,以支持高效的写入和查询操作。数据通常会被压缩存储,以节省空间,并利用时间序列数据的特点(如数据的连续性和规律性)来优化存储格式。
五、举个例子来理解时序数据库与关系型数据库如何结合使用
在开发智能冰柜这样的应用时,时序数据库和关系型数据库可以协同工作,以实现数据的高效管理和分析。以下是具体的业务流程、开发的功能,以及时序数据库和关系型数据库的数据结合使用方式:
1. 业务流程:
- 消费者通过手机扫码或人脸识别打开智能冰柜。
- 消费者从冰柜中取出商品。
- 冰柜门关闭后,系统自动生成结算订单。
- 结算订单推送至消费者手机。
- 消费者完成支付并结算,购物流程结束。
2. 开发的功能:
- 温度监控:使用时序数据库记录冰柜内部的温度数据,确保食品的新鲜度和安全。
- 门锁控制:通过时序数据库记录门的开关状态,以及每次门开启和关闭的时间,用于分析顾客行为和冰柜使用频率。
- 视频监控:在冰柜门关闭时,摄像头拍摄视频,记录购物过程,视频文件的时间戳存储在时序数据库中,用于事后审计和分析。
- 商品识别:使用AI图像识别技术,结合时序数据库记录商品的取用情况,生成结算订单。
- 订单生成与推送:关系型数据库存储消费者的个人信息、购买历史和支付数据,时序数据库记录订单生成的时间戳,系统根据这些数据生成结算订单并推送至消费者手机。
3. 数据结合使用方式:
- 时序数据库(如InfluxDB、Prometheus、IoTDB)用于存储高频率的时间序列数据,如冰柜温度、门锁状态、视频拍摄时间戳等。这些数据通常具有高写入和查询速度的需求,并且需要支持时间范围查询和数据聚合。
- 关系型数据库(如MySQL)用于存储结构化数据,如用户信息、商品信息、订单数据等。这些数据需要复杂的查询和事务管理,如订单生成、支付处理和库存更新。
4. 具体数据存储:
- 时序数据库
存储的数据示例:
- 温度数据:`[时间戳, 冰柜ID, 温度值]`
- 门锁状态:`[时间戳, 冰柜ID, 门状态]`
- 视频拍摄时间戳:`[时间戳, 冰柜ID, 视频文件ID]`
- 关系型数据库
存储的数据示例:
- 用户信息:`用户ID, 姓名, 手机号, 邮箱`
- 商品信息:`商品ID, 名称, 价格, 库存`
- 订单数据:`订单ID, 用户ID, 商品ID, 购买数量, 订单状态`
5. 数据结合使用:
- 当消费者完成购物并关门后,系统会从时序数据库中获取视频拍摄时间戳,从关系型数据库中获取用户和商品信息,结合生成结算订单。
- 结算订单生成后,订单数据存储在关系型数据库中,同时订单生成的时间戳存储在时序数据库中,用于后续的数据分析和审计。
通过这种方式,时序数据库和关系型数据库各自发挥其优势,共同支持智能冰柜的高效运行和数据分析需求。
六、用关系型数据库,可以替换时序数据库吗?
关系型数据库(RDBMS)和时序数据库(TSDB)在设计和功能上有很大的不同,它们各自擅长不同的数据处理场景。虽然理论上可以使用关系型数据库来存储和查询时间序列数据,但在实际应用中,时序数据库通常更适合处理这类数据。以下是两者的一些关键差异:
1. 数据模型:
- 关系型数据库:基于行和列的表格模型,适合存储结构化数据,如用户信息、交易记录等。
- 时序数据库:专门设计来存储时间序列数据,通常以时间戳为主要索引,适合存储连续、按时间顺序记录的数据,如传感器读数、股票价格等。
2. 写入性能:
- 关系型数据库:虽然可以处理时间序列数据,但它们通常不是为高频率写入优化的。大量的写入操作可能会影响性能。
- 时序数据库:为高频率的数据写入优化,能够处理每秒数百万个数据点的写入。
3. 查询性能:
- 关系型数据库:擅长复杂的查询和事务操作,但对时间序列数据的查询可能需要复杂的SQL查询,性能可能不如专门的时序数据库。
- 时序数据库:提供针对时间序列数据的优化查询,如时间范围查询、数据聚合等,查询性能通常优于关系型数据库。
4. 存储效率:
- 关系型数据库:通常不会对时间序列数据进行专门的压缩,这可能导致存储效率不高。
- 时序数据库:提供针对时间序列数据的压缩算法,可以显著减少存储空间的需求。
5. 数据保留策略:
- 关系型数据库:通常需要手动实现数据保留策略,比如定期删除或归档旧数据。
- 时序数据库:提供内置的数据保留策略,可以自动管理数据的生命周期。
6. 扩展性:
- 关系型数据库:虽然可以进行水平扩展,但通常比时序数据库更复杂,且可能需要更复杂的配置和维护。
- 时序数据库:通常设计有良好的水平扩展能力,可以轻松地通过增加节点来扩展系统的容量和性能。
总的来说,虽然关系型数据库在某些情况下可以用于存储和查询时间序列数据,但它们可能不如时序数据库高效。时序数据库在写入性能、查询性能、存储效率和扩展性方面通常更有优势。因此,如果应用场景主要涉及大量的时间序列数据,使用时序数据库通常是更好的选择。
七、有哪些厂商的哪些产品是现在主流的
时序数据库(Time Series Database, TSDB)是专门设计用于处理时间序列数据的数据库,这类数据通常由时间戳和一组数值组成,常见于监控系统、物联网、金融交易等领域。时序数据库的设计理念在于优化时间序列数据的存储、查询和分析。
时序数据库的发展历程可以追溯到早期的RRDTool,它是基于Round-Robin架构的,能够高效地存储和查询时间序列数据。随后,像OpenTSDB、InfluxDB这样的基于分布式架构的时序数据库逐渐流行起来,它们针对时间序列数据的特性进行了深度优化,大大提高了数据处理和查询的效率。
目前,市面上有许多主流的时序数据库产品,以下是一些知名的时序数据库厂商及其产品:
-
InfluxDB:由InfluxData开发,是一个开源的时序数据库,支持高写入和查询性能,使用自定义的TSM引擎进行数据存储和压缩。
-
Prometheus:由SoundCloud的前Google员工创建,是一个开源的系统监控和报警工具,它有自己的查询语言PromQL,适用于实时监控数据。
-
TimescaleDB:基于PostgreSQL的开源时序数据库,提供了对SQL的完整支持,同时为时间序列数据提供了优化。
-
TDengine:由涛思数据开发的开源时序数据库,支持SQL,提供缓存、数据订阅、流式计算等功能,适合物联网、车联网、工业互联网等场景。
-
DolphinDB:由智臾科技研发,是一款为金融行业、物联网领域设计的高性能分布式时序数据库。
-
IoTDB:由清华大学主导的Apache孵化项目,是一款聚焦工业物联网的高性能轻量级的时序数据管理系统。
-
云服务商的产品:
- 阿里云的TSDB:提供了时序数据的高效读写、压缩存储和实时计算能力。
- 腾讯云的CTSDB:一款分布式、可扩展、支持近实时数据搜索与分析的时序数据库。
- 华为云的GaussDB for Influx:基于InfluxDB进行深度优化改造的时序数据库。
这些产品各有特点,例如InfluxDB以其高写入性能和查询效率而闻名,而TimescaleDB则因其对SQL的完整支持和PostgreSQL的强大功能而受到青睐。TDengine则以其高性能、分布式架构和对SQL的支持而在市场上占有一席之地。云服务商提供的时序数据库产品通常具有很好的可扩展性和弹性,能够满足不同规模的应用需求。
在选择时序数据库时,需要考虑数据的写入频率、查询复杂度、数据保留策略、集群支持、数据压缩、实时处理能力等因素。不同的应用场景可能对这些因素有不同的需求,因此选择合适的时序数据库对于确保系统的性能和可维护性至关重要。
八、时序数据库是哪一年出来的
时序数据库(Time Series Database, TSDB)是一种专门用于存储、处理和分析时间序列数据的数据库管理系统。时间序列数据是按时间维度顺序记录且索引的数据,这类数据广泛存在于物联网、金融、医疗、工业等领域。
时序数据库的概念并不是新兴的,最早的专用时序数据库可以追溯到1999年问世的RRDtool。然而,时序数据库的流行起始于2015年,随着物联网的快速增长,时序数据库逐渐成为流行度最高的数据库之一。
在2007年前后,虽然时序数据库的概念已经存在,但它们可能还没有像今天这样成熟和广泛使用。早期的时序数据库主要以非关系型数据库技术为基础,例如OpenTSDB和rrdtool,它们通过时间序列数据的压缩、聚合、轮换等手段来优化存储空间和查询速度。这些早期的时序数据库已经能够满足一些基本的时间序列数据处理需求,但可能在横向扩展能力、数据模型的灵活性等方面存在局限。
随着技术的发展,现代的时序数据库不仅继承了早期时序数据库的优点,还引入了更高级的数据处理能力、高效的压缩算法和符合时序特征的存储引擎。例如,InfluxDB采用了基于时间的TSM Tree存储结构,提供了Gorilla压缩、面向时序的窗口计算函数等特性。这些现代时序数据库能够更好地应对大数据时代的挑战,满足各种应用场景的需求。
总的来说,虽然2007年时已有时序数据库的存在,但它们可能还没有发展成为今天我们所熟知的高效、可扩展的时序数据库系统。现代时序数据库的发展和流行,得益于物联网、大数据、云计算等技术的推动,以及对时间序列数据处理需求的不断增长。
相关文章:

小白对时序数据库的理解
一、什么是时序数据库? 时序数据库(Time Series Database,TSDB)是一种专门用于存储、处理和分析时间序列数据的数据库管理系统。时间序列数据是按时间顺序记录的数据,通常由各种设备和传感器生成,例如智慧…...

打开游戏提示丢失(或找不到)XINPUT1_3.DLL的多种解决办法
xinput1_3.dll是一个动态链接库(DLL)文件,它在Windows操作系统中扮演着重要的角色。该文件作为系统库文件,通常存放于C:\Windows\System32目录下(对于32位系统)或C:\Windows\SysWOW64目录下(对于…...

netty的网络IO模型
参考: 聊聊Netty那些事儿之从内核角度看IO模型...

电子木鱼小游戏小程序源码系统 带完整的安装代码包以及搭建部署教程
系统概述 在快节奏的生活中,人们越来越注重内心的平静与放松。电子木鱼小游戏小程序正是基于这一需求而诞生的,它将传统的木鱼文化与现代科技相结合,为用户提供了一个简单、方便、有趣的冥想与放松工具。通过敲击屏幕上的虚拟木鱼࿰…...

支付域——交易系统设计
摘要 交易是业务流转的基础,其中交易系统和订单系统的设计至关重要。交易系统需确保安全、高效与稳定。在设计时,要考虑支付方式的多样性及兼容性,保障资金流转的准确与安全。同时,应具备良好的风险控制机制,防范欺诈等风险。订单系统则负责记录和管理交易的全过程。需清…...

IBus 和 Fcitx 框架下的rime输入法引擎
Rime 输入法引擎 Rime(中州韵输入法引擎):这是一个跨平台的输入法引擎,支持多种输入法方案,如拼音、五笔、注音等。Rime本身不提供前端界面,它需要与输入法框架(如IBus或Fcitx)结合…...

Java基础-JVM
JVM构成部分 类加载系统 类加载子系统的作用是将磁盘中的.class文件加载到内存当中。工作过程如下: 加载:通过类全路径名获取二进制字节流;将这个二进制字节流代表的数存储构转化为方法区运行时数据结构;在内存生成一个代表该类的…...

集成学习:投票法、提升法、袋装法
集成学习:投票法、提升法、袋装法 目录 🗳️ 投票法 (Voting)🚀 提升法 (Boosting)🛍️ 袋装法 (Bagging) 1. 🗳️ 投票法 (Voting) 投票法是一种强大的集成学习策略,它通过将多个模型的预测结果进行组合…...

波浪理论、江恩理论、价值投资的结合
结合波浪理论、江恩理论和价值投资,需要理解这三种方法的核心原理和应用方式。下面详细解析如何将它们融合在一起,形成一个更全面的投资策略: 1. 基本概述 波浪理论:由艾略特提出,通过分析市场波动的五个上升浪和三个…...

LRDDR4芯片学习(三)——命令和时序
ddr command: activate commandrefresh commandprecharge commandwrite/read commandburst write/read commandMRR/MRW command 一、Activate命令 在读写命令之前,必须要发送Activate命令,由ACTIVATE-1、ACTIVATE-2命令组成。ACTIVATE命令中包含了BA[…...

【趣学C语言和数据结构100例】
【趣学C语言和数据结构100例】 问题描述 61.假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,可共享相同的后缀存储空间,例如,loading 和 being 的存储映像如下图所示,设 strl 和 str2 分别指向两个单词所在单链表的头结点,链表结点结构为 data next。请设计…...

linux卸载数据库(最为完整的卸载方式)
1.首先检查是否安装了MySQL组件 我们可以看到有五个与mysql相关的组件 2.卸载前关闭MySQL服务 systemctl stop mysqld systemctl status mysqld 3.收集MySQL对应的文件夹信息 whereis mysql 4.卸载删除MySQL各类组件 #例如 rpm -ev --nodeps mysql-community-libs-5.7.…...

H7-TOOL的LUA小程序教程第15期:电压,电流,NTC热敏电阻以及4-20mA输入(2024-10-21,已经发布)
LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用ÿ…...

使用梧桐数据库进行销售趋势分析和预测
在当今竞争激烈的商业环境中,企业需要深入了解销售数据,以便做出明智的决策。销售趋势分析和预测是帮助企业把握市场动态、优化库存管理、制定营销策略的重要工具。本文将介绍如何使用SQL来创建销售数据库的表结构,插入示例数据,并…...

SQLITE排序
最终实现的效果:先查询第一层2列开始的1、4、2、3排,再查询第三列、四列...,然后第二层... 入库 排序优先级:层>列>排(1>2,4>3) 最终排的优先级 1>4>2>3 ORDER BY rack.rackLayer,rack.rackColumn, CASE rack.rackRowW…...

python的文件操作
文件操作 1.打开文件 2.读取文件内容 3.写入文件内容 4.关闭文件 要打开文件,可以使用open()函数并指定文件路径和模式。 file open("example.txt", "r") # 打开了一个名为"example.txt"的文件,并将其赋值给变量file。第…...

群晖通过 Docker 安装 MySQL
1. 打开 Docker 应用,并在注册表搜索 MySQL 2. 下载 MySQL 镜像,并选择版本 3. 在 Docker 文件夹中创建 MySQL,并创建子文件夹 4. 设置权限 5. 选择 MySQL 映像运行,创建容器 6. 配置 MySQL 容器 6.1 使用高权限执行容器 6.2 启…...

同程旅行面经
前言 一面 2024-10-11 实习项目架构,技术栈是怎么样的,自己实现了哪些功能?(文件上传,更新记录记忆,动态表格)写了多少行代码?(2~3k)项目有上线了吗&#x…...

【贪心算法】(第八篇)
目录 分发饼⼲(easy) 题目解析 讲解算法原理 编写代码 最优除法(medium) 题目解析 讲解算法原理 编写代码 分发饼⼲(easy) 题目解析 1.题目链接:. - 力扣(LeetCode…...

立即调用的函数表达式(IIFE)
立即调用的函数表达式(IIFE),它会立即执行并返回一个空对象 解析 Plugins: (() > { return {}; })():1、解析 () > { return {}; } 是一个箭头函数,它定义了一个返回空对象的函数。 在定义之后,() 表示立即调用…...

YOLOv11改进-卷积-引入小波卷积WTConv 解决多尺度小目标问题
本篇文章将介绍一个新的改进机制——WTConv(小波卷积),并阐述如何将其应用于YOLOv11中,显著提升模型性能。YOLOv11模型相比较于前几个模型在检测精度和速度上有显著提升,但其仍然受卷积核感受野大小的限制。因此&#…...

flask 接口还在执行中,前端接收到接口请求超时,解决方案
在 Flask 中,当某个接口执行时间较长而导致前端请求超时时,需要考虑以下解决方案: 1. 优化接口的响应时间 如果可能,先优化接口中的代码逻辑,减少处理时间。对于查询操作,可以考虑数据库索引优化、缓存机制等手段。2. 增加请求超时时间 如果接口确实需要较长时间完成,前…...

探索 Python 中的 XML 转换利器:xml2dict
文章目录 **探索 Python 中的 XML 转换利器:xml2dict**一、背景介绍二、xml2dict 是什么?三、如何安装 xml2dict?四、基本用法五、实际应用场景六、常见问题及解决方案七、总结 探索 Python 中的 XML 转换利器:xml2dict 一、背景…...

dbt-codegen: dbt自动生成模板代码
dbt项目采用工程化思维,数据模型分层实现,支持描述模型文档和测试,非常适合大型数据工程项目。但也需要用户编写大量yaml描述文件,这个过程非常容易出错且无聊。主要表现: 手工为dbt模型编写yaml文件,这过…...

springboot057洗衣店订单管理系统(论文+源码)_kaic
基于springboot的洗衣店订单管理系统 摘要 随着信息互联网信息的飞速发展,无纸化作业变成了一种趋势,针对这个问题开发一个专门适应洗衣店业务新的交流形式的网站。本文介绍了洗衣店订单管理系统的开发全过程。通过分析企业对于洗衣店订单管理系统的需求…...

南大通用(GBase 8s)数据库在 Spring Boot 中使用 Flyway
db-migration:Flyway、Liquibase 扩展支持达梦(DM)数据库、南大通用(GBase 8s)数据库,并支持 Flowable 工作流。 已支持 达梦数据库(DM 8)。默认支持 flowable 工作流。南大通用数…...

CMakeLists.txt 编写规则
目录 1. 注释 1.1 注释行 1.2 注释块 2. CMakeLists.txt的编写 2.1 同意目录下的源文件 2.2 SET指令 2.3 file和aux_source_directory 2.4 包含头文件 2.5 生成动态库和静态库 2.6 链接库文件 2.7 message指令 2.8 移除操作 2.9 find_library和find_package 3. 常…...

Javascript算法——二分查找
1.数组 1.1二分查找 1.搜索索引 开闭matters!!![left,right]与[left,right) /*** param {number[]} nums* param {number} target* return {number}*/ var search function(nums, target) {let left0;let rightnums.length-1;//[left,rig…...

node-sass/vendor/linux-x64-72 : Error: EACCES: permission denied, mkdir
npm i --unsafe-perm node-sassgithub解决问题...

uniapp-uniapp + vue3 + pinia 搭建uniapp模板
使用技术 ⚡️uni-app, Vue3, Vite, pnpm 📦 组件自动化引入 🍍 使用 Pinia 的状态管理 🎨 tailwindcss - 高性能且极具灵活性的即时原子化 CSS 引擎 😃 各种图标集为你所用 🔥 使用 新的 <script setup> …...