数据仓库系列:StarRocks 入门培训教程

news2024/11/25 18:58:01

文章目录

  • 1. 什么是StarRocks?
    • 1.1. 适用场景
    • 1.2. [产品特性](https://docs.starrocks.io/zh-cn/latest/introduction/Features)
  • 2. 系统架构
    • 2.1. 系统架构
      • 2.1.1. 整体架构
      • 2.1.2. 高可用实现方式
    • 2.2. 数据如何管理?
  • 3. 表模型
    • 3.1. 明细模型
    • 3.2. 聚合模型
    • 3.3. 更新模型
    • 3.4. [主键模型](https://docs.starrocks.io/zh-cn/latest/table_design/table_types/primary_key_table)
  • 4. 数据导入导出
    • 4.1. 数据导入
    • 4.2. 导出数据
  • 5. 使用 Catalog 管理和查询内外部数据
    • 5.1. Catalog
    • 5.2. 外部表
    • 5.3. 文件外部表
  • 6. 物化视图
    • 6.1. 同步物化视图
    • 6.2. 异步物化视图
    • 6.3. Colocate Join(大表关联)
  • 7. 架构升级示例
    • 案例1 [海尔云链 金融数据查询增速三倍,服务器成本减半](https://blog.csdn.net/flyinthesky111/article/details/124407888)
    • 案例2 广告行业中的实时分析场景

其它文章请参考
数据仓库系列:StarRocks 下一代高性能分析数据仓库的架构、数据存储及表设计
数据仓库系列:StarRocks的简单试用及与clickhouse的对比
数据仓库系列:如何将StarRocks集群与Jupyter集成?

1. 什么是StarRocks?

StarRocks 是一款MPP DB, 对标ClickHouse、Vertica、Teradata、Greenplum,在查询性能上远超当代最快的开源数据库 clickhouse,目前已经被一众互联网企业在生产环境中采用。

新一代极速全场景 MPP (Massively Parallel Processing) 数据库

是fork doris后独立运营的商业化版本StarRocks

1.1. 适用场景

StarRocks 可以满足企业级用户的多种分析需求,主要使用场景如下:

  • OLAP (Online Analytical Processing) 多维分析 如自助式报表平台,用户行为分析
  • 实时数据仓库 如电商大促数据分析、广告投放分析
  • 高并发查询 如如广告主报表分析
  • 统一分析
    • 通过使用一套系统解决多维分析、高并发查询、预计算、实时分析查询等场景,降低系统复杂度和多技术栈开发与维护成本。
    • 使用 StarRocks 统一管理数据湖和数据仓库,将高并发和实时性要求很高的业务放在 StarRocks 中分析,也可以使用 External Catalog 和外部表进行数据湖上的分析。

详见适用场景

1.2. 产品特性

  • MPP 分布式执行框架
    在 MPP 框架中,数据会被 Shuffle 到多个节点,并且由多个节点来完成最后的汇总计算。在复杂计算时(比如高基数 Group By,大表 Join 等操作),StarRocks 的 MPP 框架相对于 Scatter-Gather 模式的产品有明显的性能优势
    在这里插入图片描述
  • 全面向量化 MPP 查询引擎: 充分发挥了 CPU 的处理能力,同时支持极速的单表和多表查询性能
  • CBO 优化器: 支持极速的秒级 AdHoc 查询
  • 可实时更新的列式存储引擎: 具备极致的实时更新和查询性能
  • 全新设计的数据分布模式,具备高并发查询能力, 可以支持每秒上万次的并发查询能力。
  • 智能的物化视图: 使用物化视图(materialized view)进行查询加速和数仓分层, 具备灵活透明的预计算加速能力
    在这里插入图片描述
  • 数据湖分析: StarRocks 主要负责数据的计算分析,而数据湖则主要负责数据的存储、组织和维护
    在这里插入图片描述

2. 系统架构

2.1. 系统架构

2.1.1. 整体架构

StarRocks 架构简洁,整个系统的核心只有 FE(Frontend)、BE(Backend)两类进程,不依赖任何外部组件,方便部署与维护

StarRocks 的整体架构如下图:

  • FE(Frontend)前端节点: 多个FE组成第一层,提供FE的横向扩展和高可用
    • 负责管理元数据,管理客户端连接,进行查询规划,查询调度等工作。
    • 每个 FE 节点都会在内存保留一份完整的元数据,这样每个 FE 节点都能够提供无差别的服务
  • BE(Backend)后端节点: 多个BE组成第二层
    • 负责数据存储与管理、查询计划执行等工作
  • FE 和 BE 模块都可以在线水平扩展,元数据和业务数据都有副本机制,确保整个系统无单点
  • StarRocks 提供 MySQL 协议接口,支持标准 SQL 语法

2.1.2. 高可用实现方式

FE 有三种角色:Leader FE,Follower FE 和 Observer FE。Follower 会通过类 Paxos 的 Berkeley DB Java Edition(BDBJE)协议自动选举出一个 Leader

  • Leader
    • Leader 从 Follower 中自动选出,进行选主需要集群中有半数以上的 Follower 节点存活。如果 Leader 节点失败,Follower 会发起新一轮选举。
    • Leader FE 提供元数据读写服务。只有 Leader 节点会对元数据进行写操作,Follower 和 Observer 只有读取权限。Follower 和 Observer 将元数据写入请求路由到 Leader 节点,Leader 更新完数据后,会通过 BDB JE 同步给 Follower 和 Observer。必须有半数以上的 Follower 节点同步成功才算作元数据写入成功。
  • Follower
    • 只有元数据读取权限,无写入权限。通过回放 Leader 的元数据日志来异步同步数据。
    • 参与 Leader 选举,必须有半数以上的 Follower 节点存活才能进行选主。
  • Observer
    • 主要用于扩展集群的查询并发能力,可选部署。
    • 不参与选主,不会增加集群的选主压力。
    • 通过回放 Leader 的元数据日志来异步同步数据。
      在这里插入图片描述

2.2. 数据如何管理?

StarRocks 使用列式存储,采用分区分桶机制进行数据管理。

表按照日期划分为 4 个分区,第一个分区进一步切分成 4 个 Tablet。每个 Tablet 使用 3 副本进行备份,分布在 3 个不同的 BE 节点上。
在这里插入图片描述

  • 一张表被切分成了多个 Tablet,StarRocks 在执行 SQL 语句时,可以对所有 Tablet 实现并发处理,从而充分的利用多机、多核提供的计算能力
  • Tablet 的分布方式与具体的物理节点没有相关性。在 BE 节点规模发生变化时,比如在扩容、缩容时,StarRocks 可以做到无需停止服务,直接完成节点的增减。节点的变化会触发 Tablet 的自动迁移
  • 支持 Tablet 多副本存储,默认副本数为三个。多副本能够保证数据存储的高可靠以及服务的高可用。

相关的SQL语句

-- 建表SQL
CREATE TABLE IF NOT EXISTS sr_member (
    sr_id            INT,
    name             STRING,
    city_code        INT,
    reg_date         DATE,
    verified         BOOLEAN
)
PARTITION BY RANGE(reg_date)
(
    START ("2021-01-01") END ("2021-12-31") EVERY (INTERVAL 3 MONTH)
)
DISTRIBUTED BY HASH(city_code) BUCKETS 4
PROPERTIES(
    "replication_num" = "1"
);

-- 查看表分区
show partition from test.sr_member;

-- 查看tablet
show tablet from test.sr_member;

3. 表模型

在这里插入图片描述

3.1. 明细模型

适用场景

  • 分析原始数据,例如原始日志、原始操作记录等。
  • 查询方式灵活,不需要局限于预聚合的分析方式。
  • 导入日志数据或者时序数据,主要特点是旧数据不会更新,只会追加新的数据。

建表示例

CREATE TABLE IF NOT EXISTS detail (
    event_time DATETIME NOT NULL COMMENT "datetime of event",
    event_type INT NOT NULL COMMENT "type of event",
    user_id INT COMMENT "id of user",
    device_code INT COMMENT "device code",
    channel INT COMMENT ""
)
DUPLICATE KEY(event_time, event_type)
DISTRIBUTED BY HASH(user_id) BUCKETS 8
PROPERTIES("replication_num" = "1");

注意事项

  • 排序键的相关说明:
    • 在建表语句中,排序键必须定义在其他列之前。
    • 排序键可以通过 DUPLICATE KEY 显式定义。本示例中排序键为 event_timeevent_type
      如果未指定,则默认选择表的前三列作为排序键。
    • 明细模型中的排序键可以为部分或全部维度列。
  • 建表时,支持为指标列创建 BITMAP、Bloom Filter 等索引。
  • 建表时必须使用 DISTRIBUTED BY HASH 子句指定分桶键, 也可以不指定(自 2.5.7 版本起,会自动设置分桶数量 (BUCKETS))

3.2. 聚合模型

适用场景:数据统计和分析场景

  • 大多数查询是聚合查询,例如SUM、COUNT和MAX。
  • 不需要检索原始的详细数据。
  • 历史数据不经常更新。只追加新数据。

建表示例

CREATE TABLE IF NOT EXISTS example_db.aggregate_tbl (
    site_id LARGEINT NOT NULL COMMENT "id of site",
    date DATE NOT NULL COMMENT "time of event",
    city_code VARCHAR(20) COMMENT "city_code of user",
    pv BIGINT SUM DEFAULT "0" COMMENT "total page views"
)
AGGREGATE KEY(site_id, date, city_code)
DISTRIBUTED BY HASH(site_id) BUCKETS 8
PROPERTIES ("replication_num" = "1");

注意事项

  • 排序键的相关说明
    • 在建表语句中,排序键必须定义在其他列之前。
    • 如果 AGGREGATE KEY 未包含全部维度列(除指标列之外的列),则建表会失败。
    • 如果不通过 AGGREGATE KEY 显示定义排序键,则默认除指标列之外的列均为排序键。
    • 排序键必须满足唯一性约束,必须包含全部维度列,并且列的值不会更新。
  • 在运行查询时,排序键在多版聚合之前就能进行过滤,而指标列的过滤在多版本聚合之后
  • 建表时,不支持为指标列创建 BITMAP、Bloom Filter 等索引
  • 将数据加载到使用聚合键模型的表中时,只能更新表的所有列

3.3. 更新模型

适用场景

  • 需要实时和频繁更新数据的业务场景,如在电子商务场景中,每天可以下数亿个订单,订单状态经常变化

建表示例

CREATE TABLE IF NOT EXISTS orders (
    create_time DATE NOT NULL COMMENT "create time of an order",
    order_id BIGINT NOT NULL COMMENT "id of an order",
    order_state INT COMMENT "state of an order",
    total_price BIGINT COMMENT "price of an order"
)
UNIQUE KEY(create_time, order_id)
DISTRIBUTED BY HASH(order_id) BUCKETS 8
PROPERTIES ("replication_num" = "1");

注意事项

  • 主键的相关说明:
    • 在建表语句中,主键必须定义在其他列之前。
    • 主键通过 UNIQUE KEY 定义。
    • 主键必须满足唯一性约束,且列的值不会修改。
    • 设置合理的主键。
      • 查询时,主键在聚合之前就能进行过滤,而指标列的过滤通常在多版本聚合之后,因此建议将频繁使用的过滤字段作为主键,在聚合前就能过滤数据,从而提升查询性能。
      • 聚合过程中会比较所有主键,因此需要避免设置过多的主键,以免降低查询性能。如果某个列只是偶尔会作为查询中的过滤条件,则不建议放在主键中。
  • 建表时,不支持为指标列创建 BITMAP、Bloom Filter 等索引。

3.4. 主键模型

适用场景: 适用于实时和频繁更新的场景

  • 实时对接事务型数据至 StarRocks
  • 利用部分列更新轻松实现多流 JOIN

建表示例

create table orders (
    dt date NOT NULL,
    order_id bigint NOT NULL,
    user_id int NOT NULL,
    merchant_id int NOT NULL,
    good_id int NOT NULL,
    good_name string NOT NULL,
    price int NOT NULL,
    cnt int NOT NULL,
    revenue int NOT NULL,
    state tinyint NOT NULL
) PRIMARY KEY (dt, order_id)
PARTITION BY RANGE(`dt`) (
    PARTITION p20210820 VALUES [('2021-08-20'), ('2021-08-21')),
    PARTITION p20210821 VALUES [('2021-08-21'), ('2021-08-22')),
    PARTITION p20210929 VALUES [('2021-09-29'), ('2021-09-30')),
    PARTITION p20210930 VALUES [('2021-09-30'), ('2021-10-01'))
) DISTRIBUTED BY HASH(order_id) BUCKETS 4 
PROPERTIES("replication_num" = "1","enable_persistent_index" = "true");

create table users (
    user_id bigint NOT NULL,
    name string NOT NULL,
    email string NULL,
    address string NULL,
    age tinyint NULL,
    sex tinyint NULL,
    last_active datetime,
    property0 tinyint NOT NULL
) PRIMARY KEY (user_id)
DISTRIBUTED BY HASH(user_id) BUCKETS 4 
PROPERTIES("replication_num" = "1","enable_persistent_index" = "true");

注意事项

  • 主键相关的说明:
    • 在建表语句中,主键必须定义在其他列之前。
    • 主键通过 PRIMARY KEY 定义。
    • 主键必须满足唯一性约束,且列的值不会修改。本示例中主键为 dtorder_id
    • 主键支持以下数据类型:BOOLEAN、TINYINT、SMALLINT、INT、BIGINT、LARGEINT、DATE、DATETIME、VARCHAR/STRING。并且不允许为 NULL。
    • 分区列和分桶列必须在主键中。
    • 合理设置主键的列数和长度。建议主键为占用内存空间较少的数据类型,例如 INT、BIGINT 等,暂时不建议为 VARCHAR。
  • the memory occupied by the primary key index 的计算公式: (主键长度+9) x 记录数量 x 副本数 x 1.5 = 占用内存大小
    • 9是每行不可变的开销,
    • 1.5是每个哈希表的平均额外开销
  • enable_persistent_index:主键索引可以持久化到磁盘并存储在内存中,以避免占用太多内存。

4. 数据导入导出

4.1. 数据导入

  • 所有导入方式都提供原子性保证,即同一个导入作业内的所有有效数据要么全部生效,要么全部不生效,不会出现仅导入部分数据的情况。
  • 通过导入作业实现数据导入。每个导入作业都有一个标签 (Label),由用户指定或系统自动生成,用于标识该导入作业
  • 提供两种访问协议用于提交导入作业:MySQL 协议和 HTTP 协议

详见用法参见: 导入总览
在这里插入图片描述

4.2. 导出数据

导出使用详见EXPORT,
注意

  • 导出路径需要各个BE节点都可以访问,不能是本地路径
  • 目前支持HDFS及对象存储,如
    • Alibaba Cloud OSS
    • Tencent Cloud COS
    • AWS S3
    • Huawei Cloud OBS
      在这里插入图片描述
      导出示例SQL
EXPORT TABLE db1.tbl1 
PARTITION (p1,p2)
(col1, col3)
TO "hdfs://HDFS_IP:HDFS_Port/export/lineorder_" 
PROPERTIES
(
    "column_separator"=",",
    "load_mem_limit"="2147483648",
    "timeout" = "3600"
)
WITH BROKER
(
    "username" = "user",
    "password" = "passwd"
);

5. 使用 Catalog 管理和查询内外部数据

5.1. Catalog

外部数据:指保存在外部数据源(如 Apache Hive™、Apache Iceberg、Apache Hudi、Delta Lake、JDBC)中的数据。
通过Catalog不需要执行数据导入就可以直接查询
在这里插入图片描述
External catalog: 外部数据目录,用于连接外部 metastore。在 StarRocks 中,您可以通过 external catalog 直接查询外部数据,无需进行数据导入或迁移。当前支持创建以下类型的 external catalog:

  • Hive catalog:用于查询 Hive 数据。
  • 数据湖
    • Iceberg catalog:用于查询 Iceberg 数据。
    • Hudi catalog:用于查询 Hudi 数据。
    • Delta Lake catalog:用于查询 Delta Lake 数据。
  • JDBC catalog:用于查询 JDBC 数据源的数据。
CREATE EXTERNAL CATALOG jdbc0
PROPERTIES
(
    "type"="jdbc",
    "user"="postgres",
    "password"="changeme",
    "jdbc_uri"="jdbc:postgresql://127.0.0.1:5432/jdbc_test",
    "driver_url"="https://repo1.maven.org/maven2/org/postgresql/postgresql/42.3.3/postgresql-42.3.3.jar",
    "driver_class"="org.postgresql.Driver"
);

CREATE EXTERNAL CATALOG jdbc1
PROPERTIES
(
    "type"="jdbc",
    "user"="root",
    "password"="changeme",
    "jdbc_uri"="jdbc:mysql://127.0.0.1:3306",
    "driver_url"="https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar",
    "driver_class"="com.mysql.cj.jdbc.Driver"
);

5.2. 外部表

StarRocks 支持以外部表 (External Table) 的形式,接入其他数据源。外部表指的是保存在其他数据源中的数据表,而 StartRocks 只保存表对应的元数据,并直接向外部表所在数据源发起查询。
目前 StarRocks 已支持的第三方数据源包括

  • MySQL、
  • StarRocks、
  • Elasticsearch、
  • Apache Hive™、
  • Apache Iceberg
  • Apache Hudi。

对于 StarRocks 数据源,现阶段只支持 Insert 写入,不支持读取,对于其他数据源,现阶段只支持读取,还不支持写入。

CREATE EXTERNAL TABLE mysql_external_table
(
    k1 DATE,
    k2 INT,
    k3 SMALLINT,
    k4 VARCHAR(2048),
    k5 DATETIME
)
ENGINE=mysql
PROPERTIES
(
    "host" = "127.0.0.1",
    "port" = "3306",
    "user" = "mysql_user",
    "password" = "mysql_passwd",
    "database" = "mysql_db_test",
    "table" = "mysql_table_test"
);

5.3. 文件外部表

文件外部表 (File External Table) 是一种特殊的外部表。您可以通过文件外部表直接查询外部存储系统上的 Parquet 和 ORC 格式的数据文件,无需导入数据。同时,文件外部表也不依赖任何 Metastore。StarRocks 当前支持的外部存储系统包括 HDFS、Amazon S3 及其他兼容 S3 协议的对象存储、阿里云对象存储 OSS 和腾讯云对象存储 COS。

USE db_example;
CREATE EXTERNAL TABLE table_1
(
    name string, 
    id int
) 
ENGINE=file
PROPERTIES 
(
    "path" = "s3://bucket-test/folder1/", 
    "format" = "orc",
    "aws.s3.use_instance_profile" = "true",
    "aws.s3.iam_role_arn" = "arn:aws:iam::51234343412:role/role_name_in_aws_iam",
    "aws.s3.region" = "us-west-2" 
);

6. 物化视图

6.1. 同步物化视图

同步物化视图下,所有对于基表的数据变更都会自动同步更新到物化视图中。您无需手动调用刷新命令,即可实现自动同步刷新物化视图。同步物化视图的管理成本和更新成本都比较低,适合实时场景下单表聚合查询的透明加速。

6.2. 异步物化视图

相较于同步物化视图,异步物化视图支持多表关联以及更加丰富的聚合算子。异步物化视图可以通过手动调用或定时任务的方式刷新,并且支持刷新部分分区,可以大幅降低刷新成本。除此之外,异步物化视图支持多种查询改写场景,实现自动、透明查询加速。

** 单表聚合**多表关联查询改写刷新策略基表
StarRocks 2.5 异步物化视图异步定时刷新手动刷新支持多表构建。基表可以来自:Default CatalogExternal Catalog已有异步物化视图
StarRocks 2.4 异步物化视图异步定时刷新手动刷新支持基于 Default Catalog 的多表构建
同步物化视图(Rollup)仅部分聚合算子导入同步刷新仅支持基于 Default Catalog 的单表构建

6.3. Colocate Join(大表关联)

Colocate Join 功能是分布式系统实现 Join 数据分布的策略之一,能够减少数据多节点分布时 Join 操作引起的数据移动和网络传输,从而提高查询性能。

  • 使用 Colocate Join 功能,您需要在建表时为其指定一个 Colocation Group(CG),同一 CG 内的表需遵循相同的 Colocation Group Schema(CGS),即表对应的分桶副本具有一致的分桶键、副本数量和副本放置方式
  • 如此可以保证同一 CG 内,所有表的数据分布在相同一组 BE 节点上。当 Join 列为分桶键时,计算节点只需做本地 Join,从而减少数据在节点间的传输耗时,提高查询性能

7. 架构升级示例

案例1 海尔云链 金融数据查询增速三倍,服务器成本减半

  • 在实时处理方面用 StarRocks 替代了以前的 Hbase+Phoenix,
  • 离线数据方面也部分用 StarRocks 替代了 Hive+Alluxio+Presto。

迭代新架构后

  • 查询效率大幅提升,查询平均耗时得到了大幅缩减
  • 服务器成本整体减低到接近原体系架构的一半
  • 以前使用多服务多组件,如今统一到 StarRocks,使得运维成本也得到了大大降低。
    在这里插入图片描述

案例2 广告行业中的实时分析场景

  • StarRocks 在写入和查询性能上都有比较好的表现;
  • StarRocks 的主键能力能够承担部分 ElasticSearch 的点查点更新的场景;
  • StarRocks 有 Connector 能力,能够直接将 ElasticSearch 作为外表关联进行一些数据探索的能力,同时也支持了谓词下推等能力,使 - - - StarRocks 与 ElasticSearch 的数据之间产生了很好的联系;
  • 因为在非常高的 QPS 的情况下,StarRocks 的能力还未能满足 QPS 和 latency 的要求,所以目前只是部分的更新和点查场景交给了 StarRocks,依然保留了 ElasticSearch 与 StarRocks 共存的场景;
  • StarRocks 的扩缩容能力较好,面对不断变化的业务负载有很好的管理。

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

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

相关文章

冷链NO.1技能,物流人第一天就应该学会!

储藏室的温湿度是许多行业中的关键因素,如医疗、食品、冷链物流等。确保储藏室内的温湿度在规定的范围内是保护物品品质和价值的关键。 储藏室温湿度远程监控是一项重要的任务,特别适用于需要实时掌握储藏室环境条件的场景。通过远程监控,可以…

凸优化理论基础

目录 一,仿射集 1,仿射集(affine set) 2,仿射组合(affine combination) ​编辑 3,仿射包(affine hull) 二,凸集 1,凸集 2,凸组合 3,凸包(convex hull) 本文部分内容来自网友…

JavaEE(系列22) -- IP协议和以太网

目录 1. IP协议 1.1 协议头格式 1.2 解决IPV4地址不够用的问题 1.3 IP地址管理 1.4 路由选择 2. 以太网 (数据链路层) 1. IP协议 P协议是位于OSI模型中第三层(网络层)的协议, 在这层上工作的不止这一个协议, 但IP协议是网络层传输所使用的最主流的一种协议, 有IPv4和IPv6两…

实现旋转切换效果的轮播图。

下面视频是实现后的效果图。具体实现方法可以通过下面链接进行观看 实现旋转切换效果的轮播图。_ღ张明宇࿐的博客-CSDN博客https://blog.csdn.net/zmx781284440/article/details/131466113 旋转切换轮播图

httprunner2.0 概述及使用说明

目录 一、概述 二、系统流程 三、文件组织 1、项目文件目录结构 四、用例编写 1、用例编写 2、编写用例注意事项 五、变量或函数引用 六 环境变量引用 1、编辑.env文件 2、引用环境变量 七、参数化数据驱动 一、概述 HttpRunner是一款面向 HTTP(S) 协议的通用测试…

2023亚马逊云科技中国峰会:如何让AI前景更广阔

今天,2023亚马逊云科技中国峰会的第二天,峰会现场精彩不断绽放! 值得关注的是,峰会上,亚马逊云科技大中华区产品总经理陈晓建在《专注创新,摆脱基础架构束缚》主题演讲中提出,云服务是支持数字创…

「UG/NX」BlockUI 树列表(回调函数)

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

如何创建WooCommerce会员网站

Web网站内容货币化的一种非常标准的方法是通过会员社区提供对内容的有限访问。您可以使用 WordPress 的众多付费专区插件之一轻松创建它。有些使用MemberPress或其他顶级 WordPress 会员插件,还有一些使用 WooCommerce。当您想到会员网站时,WooCommerce可…

Tomcat服务器的使用

一。Tomcat的概念 1.服务器 服务器:分为服务器硬件和服务器软件。在硬件服务器(其实就是一台计算机)上安装了服务器软件,才可以对外提供服务。 1.硬件:通常是指在互联网上具有独立IP的计算机,通常配置比…

u盘刷新系统

1.百度u盘制作将u盘进行刷成系统盘 点击添加系统 确认 关掉即可 到这里就制作完成了,u盘里也有系统了,下一步就是进入电脑的 bios 一般是f8 或者f2 或者esc 看你是什么电脑自己手机百度一下, 当进入u盘系统时候会发现一键刷机工具找不到镜像&…

【前端基础知识】iframe如何实现项目集成?如何防止被XFS?

目录 iframe介绍iframe语法如何实现集成效果如何将自己的网站实现禁止访问 iframe介绍 HTML 内联框架元素 (<iframe>) 表示嵌套的 browsing context。它能够将另一个 HTML 页面嵌入到当前页面中。 iframe语法 <iframe src"" name"" width"…

115.使用JS让移动导航工作起来

● 还记得我们之前的移动导航吗&#xff1f;需要手动添加类才能使其生效&#xff0c;现在我们用js来自动实现 const btnNavEl document.querySelector(".btn-mobile-nav"); const headerEl document.querySelector(".header"); btnNavEl.addEventListe…

【滤波】自适应滤波器

%matplotlib inline#format the book import book_format book_format.set_style()简介 到目前为止&#xff0c;我们已经考虑了跟踪与我们的过程模型相关的表现良好的对象的问题。例如&#xff0c;我们可以使用恒速滤波器来跟踪直线运动的物体。只要物体以合理的恒定速度沿直线…

文心一言vs通义千问 之前端文件夹命名

今天心血来潮想试试国内百度和腾讯的AI在解决前端难题–文件命名方面的效果。 如下&#xff1a; 综上&#xff0c;是百度会更贴近一些哈 大伙有什么命名的好工具嘛&#xff1f;

Flutter学习四:Flutter开发基础(六)调试Flutter应用

目录 0 引言 1 调试Flutter应用 1.1 日志与断点 1.1.1 debugger() 声明 1.1.2 print和debugPrint 1.1.3 调试模式、中间模式、发布模式 1.1.4 断点 1.2 调试应用程序层 1.2.1 转储Widgets树 1.2.2 转储渲染树 1.2.3 转储Layer树 1.2.4 转储语义树 1.2.5 调度&…

PyEcharts 学习总结

—— 如何用 pyecharts 绘制一切你想象得到的交互式图表&#xff1f; pyecharts 分为 v0.5.x 和 v1.0.0 两个版本&#xff0c;这篇总结针对新版本。 本文不包含基础例子的演示&#xff0c;主要记录一些细节方面的理解。示例看 gallery.pyecharts.org 一、简介 – Echarts &am…

基于Java网上手机商城设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

js获取文字的宽度

通过canvas api 获取文字宽度 const getTextWidth () > {const measureText document.createElement("canvas");const ctx measureText.getContext(2d)!return (name: string) > {const { width } ctx.measureText(name);return width 20 px} }const ge…

Java版企业工程项目管理系统源码-全面的工程项目管理+spring cloud

​ ​工程项目管理系统是指从事工程项目管理的企业&#xff08;以下简称工程项目管理企业&#xff09;受业主委托&#xff0c;按照合同约定&#xff0c;代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 如今建筑行业竞争激烈&#xff0c;内卷严重&#xff0c…

FTP-读取指定目录下的文件,上传到FTP服务器,一键复制黏贴,就是这么丝滑~

背景&#xff1a;需要定时将服务器下的日志文件上传到指定FTP服务器的目录下&#xff0c;并通知第三方平台文件已上传。 FTP服务器模拟工具&#xff1a; application.yml配置&#xff1a; spring:logfilepath: /home/jboss/server/default/log# ftp配置ftp:ip: 192.*****port…