当前位置: 首页 > news >正文

ByConity BSP 解锁数据仓库新未来

在这里插入图片描述

在这里插入图片描述

文章目录

    • 前言
    • BSP 模式简介
    • 基于 TPC-DS 的 ELT 活动
      • 测试环境
      • 登录 ECS
      • 数据查询配置
    • 执行 02.sql
      • sql解释:
        • 1. 第一步:创建 wscs 临时表
        • 2. 第二步:创建 wswscs 临时表
        • 3. 第三步:对比 2001 年和 2002 年的数据
          • 子查询 1:提取 2001 年数据
          • 子查询 2:提取 2002 年数据
          • 主查询:对比相邻年份的销售额
        • 最终输出:
    • 测试结果与心得
    • 总结

前言

在现代数据分析场景中,实时数仓与离线数仓各有侧重:实时数仓注重低延迟的数据入库与即时分析能力,而离线数仓则强调复杂任务的稳定执行及高效的内存管理。为满足用户多样化的数据需求,ByConity 作为一款开源云原生数据仓库,提供了全新的 BSP 模式,大幅提升了数据仓库的适用场景与性能表现。

BSP 模式简介

BSP 模式(Bulk Synchronous Parallel)为 ByConity 带来了以下关键能力:

  1. Task 级容错:在数据处理过程中实现更高效的错误恢复机制,确保任务的稳定性。
  2. 更细粒度的调度:以任务为单位进行资源调度,优化计算资源的使用效率。
  3. 资源感知调度:根据当前资源情况动态调整任务分配,提升并行执行的效率。

通过 BSP 模式,ByConity 实现了一站式的数据接入、加工和分析流程,为用户提供了更加便捷、高效的数据分析工具。

基于 TPC-DS 的 ELT 活动

为了让用户直观感受 BSP 模式的强大性能,ByConity 提供了基于 TPC-DS 1TB 数据集 的测试活动。以下是完整的测试过程分享。

测试环境

测试环境基于火山引擎 ECS,采用以下配置:

组件规格
ByConity 版本v1.0.1
Worker 节点4 * 16core 64G
Server 节点1 * 16core 64G
TSO1 * 4core 16G
Daemon Manager1 * 4core 16G
Resource Manager1 * 8core 32G
存储对象存储 TOS
FoundationDB3 * 4core 16G

登录 ECS

根据活动提供的登录凭据,通过 SSH 连接到远程 ECS 服务器。以下为登录过程:

  • MacOS 用户

    • 打开终端,输入以下命令并回车:
      ssh -p 23 root@14.103.145.182
      
    • 输入 yes 确认连接,并输入提供的登录密码。
  • 避免断连:创建 tmux 会话:

    tmux new -s your_session_name
    

  • 启动客户端:
    clickhouse client --port 9010
    

数据查询配置

  • 切换至测试数据库:
    use test_elt;
    

  • 设置 SQL 方言:
    set dialect_type = 'ANSI';
    

执行 02.sql

执行 TPC-DS 测试集查询, source 02.sql; 如下:

with wscs as(select sold_date_sk,sales_pricefrom (select ws_sold_date_sk sold_date_sk,ws_ext_sales_price sales_pricefrom web_sales union allselect cs_sold_date_sk sold_date_sk,cs_ext_sales_price sales_pricefrom catalog_sales) x),wswscs as (select d_week_seq,sum(case when (d_day_name='Sunday') then sales_price else null end) sun_sales,sum(case when (d_day_name='Monday') then sales_price else null end) mon_sales,sum(case when (d_day_name='Tuesday') then sales_price else  null end) tue_sales,sum(case when (d_day_name='Wednesday') then sales_price else null end) wed_sales,sum(case when (d_day_name='Thursday') then sales_price else null end) thu_sales,sum(case when (d_day_name='Friday') then sales_price else null end) fri_sales,sum(case when (d_day_name='Saturday') then sales_price else null end) sat_salesfrom wscs,date_dimwhere d_date_sk = sold_date_skgroup by d_week_seq)select d_week_seq1,round(sun_sales1/sun_sales2,2),round(mon_sales1/mon_sales2,2),round(tue_sales1/tue_sales2,2),round(wed_sales1/wed_sales2,2),round(thu_sales1/thu_sales2,2),round(fri_sales1/fri_sales2,2),round(sat_sales1/sat_sales2,2)from(select wswscs.d_week_seq d_week_seq1,sun_sales sun_sales1,mon_sales mon_sales1,tue_sales tue_sales1,wed_sales wed_sales1,thu_sales thu_sales1,fri_sales fri_sales1,sat_sales sat_sales1from wswscs,date_dim where date_dim.d_week_seq = wswscs.d_week_seq andd_year = 2001) y,(select wswscs.d_week_seq d_week_seq2,sun_sales sun_sales2,mon_sales mon_sales2,tue_sales tue_sales2,wed_sales wed_sales2,thu_sales thu_sales2,fri_sales fri_sales2,sat_sales sat_sales2from wswscs,date_dim where date_dim.d_week_seq = wswscs.d_week_seq andd_year = 2001+1) zwhere d_week_seq1=d_week_seq2-53order by d_week_seq1;

sql解释:

这段 SQL 语句实现了对比两个年份(2001年和2002年)的每周日到周六的销售数据的相对变化。以下是对其结构和逻辑的详细解析:

1. 第一步:创建 wscs 临时表
with wscs as(select sold_date_sk, sales_pricefrom (select ws_sold_date_sk sold_date_sk, ws_ext_sales_price sales_pricefrom web_sales union allselect cs_sold_date_sk sold_date_sk, cs_ext_sales_price sales_pricefrom catalog_sales) x)

功能:

  • web_salescatalog_sales 两个表的数据合并到一个统一的临时表 wscs 中。
  • 提取销售日期键 (sold_date_sk) 和销售价格 (sales_price) 两列。

逻辑:

  1. web_sales 表:
    • 提取 ws_sold_date_sk(销售日期)和 ws_ext_sales_price(销售额)。
  2. catalog_sales 表:
    • 提取 cs_sold_date_sk(销售日期)和 cs_ext_sales_price(销售额)。
  3. union all
    • 不去重地合并两表的记录。
2. 第二步:创建 wswscs 临时表
 wswscs as (select d_week_seq,sum(case when (d_day_name='Sunday') then sales_price else null end) sun_sales,sum(case when (d_day_name='Monday') then sales_price else null end) mon_sales,sum(case when (d_day_name='Tuesday') then sales_price else  null end) tue_sales,sum(case when (d_day_name='Wednesday') then sales_price else null end) wed_sales,sum(case when (d_day_name='Thursday') then sales_price else null end) thu_sales,sum(case when (d_day_name='Friday') then sales_price else null end) fri_sales,sum(case when (d_day_name='Saturday') then sales_price else null end) sat_salesfrom wscs,date_dimwhere d_date_sk = sold_date_skgroup by d_week_seq)

功能:

  • 按照每周的编号(d_week_seq)计算每周每天(周日到周六)的总销售额。

逻辑:

  1. 关联 wscsdate_dim 表:
    • 利用 d_date_sk = sold_date_sk,将销售日期与日期维表匹配。
  2. 按周聚合:
    • 利用 d_week_seq 对每周数据分组。
  3. case when 语句:
    • 对每天的销售额分别求和,忽略不属于该天的数据。

结果:
wswscs 包含每周每天的销售额字段,例如 sun_salesmon_sales 等。

3. 第三步:对比 2001 年和 2002 年的数据
子查询 1:提取 2001 年数据
 (select wswscs.d_week_seq d_week_seq1,sun_sales sun_sales1,mon_sales mon_sales1,tue_sales tue_sales1,wed_sales wed_sales1,thu_sales thu_sales1,fri_sales fri_sales1,sat_sales sat_sales1from wswscs, date_dim where date_dim.d_week_seq = wswscs.d_week_seq andd_year = 2001)
  • 提取 2001 年的每周每天销售额,并标记为 *_sales1
  • d_week_seq1 表示 2001 年的周编号。
子查询 2:提取 2002 年数据
 (select wswscs.d_week_seq d_week_seq2,sun_sales sun_sales2,mon_sales mon_sales2,tue_sales tue_sales2,wed_sales wed_sales2,thu_sales thu_sales2,fri_sales fri_sales2,sat_sales sat_sales2from wswscs, date_dim where date_dim.d_week_seq = wswscs.d_week_seq andd_year = 2002)
  • 提取 2002 年的每周每天销售额,并标记为 *_sales2
  • d_week_seq2 表示 2002 年的周编号。
主查询:对比相邻年份的销售额
 select d_week_seq1,round(sun_sales1/sun_sales2,2),round(mon_sales1/mon_sales2,2),round(tue_sales1/tue_sales2,2),round(wed_sales1/wed_sales2,2),round(thu_sales1/thu_sales2,2),round(fri_sales1/fri_sales2,2),round(sat_sales1/sat_sales2,2)from ...where d_week_seq1 = d_week_seq2 - 53order by d_week_seq1;

功能:

  • 对比 2001 年每周与对应的 2002 年同一周(相差 53 周)的销售额。

逻辑:

  1. 字段匹配:
    • 根据 d_week_seq1 = d_week_seq2 - 53 确保对比的是相邻年份的同一周。
  2. 字段计算:
    • 利用 round(sun_sales1 / sun_sales2, 2) 等公式计算每周日到周六的销售额变化比率。
  3. 排序:
    • 按周编号(d_week_seq1)从小到大排序。
最终输出:

表格展示 2001 年相较于 2002 年的每周每天销售额变化百分比。

周编号周日变化周一变化周二变化周三变化周四变化周五变化周六变化
Week11.100.951.201.050.981.151.00

执行后截图如下:

测试结果与心得

通过执行 TPC-DS 的模拟查询,实际验证了 ByConity 在 ELT 任务中的强大表现:

  1. 性能提升:BSP 模式在任务分解与调度上表现优异,查询任务耗时显著减少。
  2. 任务稳定性:在高并发与复杂场景下依旧保持出色的容错能力。
  3. 一站式体验:用户无需额外切换工具即可完成数据加工与分析,全流程高效流畅。

总结

ByConity 的 BSP 模式为实时数仓和离线数仓之间架起了一座桥梁,其灵活性与高效性让企业能够更好地应对多变的数据分析需求。本次测试验证了其在 ELT 场景中的实际效果,也展示了 ByConity 在未来数据仓库领域的潜力与前景。

如果您也想体验 ByConity 的强大功能,欢迎参与测试活动,亲自感受开源数据仓库的无限可能!

相关文章:

ByConity BSP 解锁数据仓库新未来

文章目录 前言BSP 模式简介基于 TPC-DS 的 ELT 活动测试环境登录 ECS数据查询配置 执行 02.sqlsql解释:1. 第一步:创建 wscs 临时表2. 第二步:创建 wswscs 临时表3. 第三步:对比 2001 年和 2002 年的数据子查询 1:提取…...

应对 Google Play 政策违规:开发者账号被终止解除指南

目录 解封指南 申诉文案 谷歌问题 授权书 1、授权书标题及双方信息 2、游戏信息 3、授权内容 4、双方义务与责任 5、费用与支付 5、保密条款 6、争议解决 8、其他条款 9、签字盖章 10、日期 相关推荐 解封指南 由于开发人员的疏忽,移除了读写权限的动态申请,使…...

【ES6复习笔记】Map(14)

概念 Map 是 JavaScript 中的一种数据结构,它允许你存储键值对,并且可以通过键来访问对应的值。在本教程中,我们将学习如何声明、添加、删除、获取和遍历 Map 集合。 ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合。…...

重温设计模式--8、命令模式

文章目录 命令模式的详细介绍C 代码示例C代码示例2 命令模式的详细介绍 定义与概念 命令模式属于行为型设计模式,它旨在将一个请求封装成一个对象,从而让你可以用不同的请求对客户端进行参数化,将请求的发送者和接收者解耦,并且能…...

人工智能ACA(七)——计算机视觉基础

一、自然语言处理基本介绍 1. 自然语言处理的定义 1-1 自然语言 人类使用的在社会生活中自然形成的语言 1-2 自然语言处理 目标是让计算机能够理解、解析、生成和处理人类的自然语言 包含自然语言理解和自然语言生成两部分组成 2. 自然语言处理的发展趋势 3.自然语言处理…...

RCE常见姿势

文章目录 常见漏洞执行函数:1.系统命令执行函数2.代码执行函数 命令拼接符读取文件命令绕过:空格过滤绕过关键字绕过长度过滤绕过无参数命令执行绕过无字母数字绕过利用%0A截断利用回溯绕过利用create_function()代码注入无回显RCE1.反弹shell2.dnslog外…...

CSS系列(36)-- Containment详解

前端技术探索系列:CSS Containment详解 ⚡ 致读者:探索性能优化的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS Containment,这个强大的性能优化特性。 基础概念 🚀 包含类型 /* 布局包含 */ .layo…...

golang,多个proxy拉包的处理逻辑

在Go语言中,当你设置了多个代理(GOPROXY)时,Go工具链会按照你设置的顺序尝试每个代理。如果第一个代理失败,它会尝试下一个代理,直到成功获取到模块或者所有代理都尝试失败。最后,如果所有代理都…...

Vue使用Tinymce 编辑器

目录 一、下载并重新组织tinymce结构二、使用三、遇到的坑 一、下载并重新组织tinymce结构 下载 npm install tinymce^7 or yarn add tinymce^7重构目录 在node_moudles里找到tinymce文件夹,把里面文件拷贝一份放到public下,如下: -- pub…...

神经网络-AlexNet

AlexNet是在2012年的ImageNet竞赛后,整理发表的文章,也是对CNN网络的衍生。 网络结构 AlexNet网络结构如下图所示,网络分为了上下两部分,对应两个不同的GPU训练,可以更好的利用GPU算力。只有在特殊的网络层后&#x…...

《人工智能:洞察材料微观与宏观性能关系的神奇之眼》

在材料科学的广袤天地里,一个前沿且充满魅力的课题正吸引着全球科研人员的目光——如何借助人工智能的强大力量,精准模拟材料微观结构与宏观性能之间那错综复杂的关系。这不仅是解开材料性能之谜的关键钥匙,更是推动从航空航天到电子芯片等众…...

count(1)、count(_)与count(列名)的区别?

大家好,我是锋哥。今天分享关于【count(1)、count(_)与count(列名)的区别?】面试题。希望对大家有帮助; count(1)、count(_)与count(列名)的区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 SQL 中&#xff0c…...

Docker 镜像加速访问方案

在数字化时代,Docker以其轻量级和便捷性成为开发者和运维人员的首选容器技术。然而自2023年5月中旬起,Docker Hub 的访问速度较慢或不稳定,这对依赖Docker Hub拉取镜像的用户来说无疑是一个挑战。本文将提供 Docker Hub 访问的一系列替代方案…...

菜鸟带新鸟——基于EPlan2022的部件库制作(3D)

设备逻辑的概念: 可在布局空间 中和其它对象上放置对象。可将其它对象放置在 3D 对象上。已放置的对象分到组件的逻辑结构中。 将此属性的整体标识为设备逻辑。可使用不同的功能创建和编辑设备逻辑。 设备的逻辑定义 定义 / 旋转 / 移动 / 翻转:组…...

笔记工具--MD-Markdown的语法技巧

MD格式,全称为Markdown格式,是一种轻量级标记语言文件,主要用于创建格式化文本。以下是对MD格式的详细解释: 一、定义与特点 定义:MD文件是一种纯文本格式的文件,使用简单的符号或语法来标记标题、列表、…...

【ES6复习笔记】生成器(11)

什么是生成器函数 生成器函数是一种特殊的函数,它可以在执行过程中暂停并保存当前状态,然后在需要时恢复执行。生成器函数通过 yield 关键字来实现暂停和恢复执行的功能。 生成器函数的基本用法 定义生成器函数:使用 function* 关键字来定…...

【解决报错】AttributeError: ‘NoneType‘ object has no attribute ‘group‘

学习爬虫时,遇到如下报错: 报错原因: 正则表达式的 search 或 finditer 方法没有找到任何匹配项,可能是换行符处理不当等。 解决方法如下: 在正则表达式末尾加上re.S即可,re.S是一个编译标志&#xff0c…...

UE5.3 C++ Ceiusm中的POI 制作3DUI 结合坐标转化

一.核心思路WidgetComponent CesiumGloberAnchor 二.先制作POI 创建C Actor来制作,APOI。直接上代码 #pragma once#include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "CesiumGlobeAnchorComponent.h" #includ…...

机器学习系列(一)——K-近邻算法

1. 算法定义 KNN 算法属于基于实例的机器学习方法。在对未知数据进行分类或回归之前,我们不需要对数据进行显式的训练或建立复杂的模型。它的核心思想是:对一个新的样本点,寻找在特征空间上与其最相似的 K 个已知数据点,采取“投…...

Android unitTest 单元测试用例编写(初始)

文章目录 了解测试相关库导入依赖库新建测试文件示例执行查看结果网页结果其他 本片讲解的重点是unitTest,而不是androidTest哦 了解测试相关库 androidx.compose.ui:ui-test-junit4: 用于Compose UI的JUnit 4测试库。 它提供了测试Compose UI组件的工具和API。 and…...

uni-app 跨端开发精美开源UI框架推荐

🎀🎀🎀uni-app 跨端开发系列 🎀🎀🎀 一、uni-app 组成和跨端原理 二、uni-app 各端差异注意事项 三、uni-app 离线本地存储方案 四、uni-app UI库、框架、组件选型指南 五、uni-app 蓝牙开发 六、uni-app …...

【微服务】微服务之Feign 与 Ribbon

文章目录 强烈推荐引言优点Feign示例什么是Ribbon?Ribbon 的优点Netflix Feign 和 Ribbon整合Feign 与 Ribbon 的关系Feign 与 Ribbon 结合使用的示例配置文件(application.yml)说明: Feign 与 Ribbon 结合使用的应用场景1. 动态服…...

【C语言】成绩等级制

将成绩分为A、B、C、D、E等级。具体的等级划分如下&#xff1a; A&#xff1a;90分及以上B&#xff1a;80分到89分C&#xff1a;70分到79分D&#xff1a;60分到69分E&#xff1a;60分以下 #include <stdio.h> int main() {float score 0;printf("请输入学生成绩&a…...

Flutter 插件开发入门

1、初识 Flutter Plugin Flutter 的插件类似于我们在 Android 中说的第三方库&#xff0c;通过使用插件&#xff0c;可以借助插件中的代码实现一些额外功能。 Flutter 的插件以 package 的形式存在&#xff0c;使用 package 的目的是为了达到模块化&#xff0c;可以让代码被共…...

2024.12.25在腾讯云服务器上使用docker部署flask

2024.12.25在腾讯云服务器上使用docker部署flask 操作系统&#xff1a;Ubuntu 根据腾讯云的说明文档安装 Docker 并配置镜像加速源&#xff0c;注意需要安装腾讯云的加速源&#xff0c;使用官网的加速源连接极其不稳定&#xff0c;容易导致运行失败。使用哪个公司的云服务器就…...

2024 年12月英语六级CET6听力原文(Lecture部分)

2024 年12月英语六级CET6听力原文(Long Conersation和Passage) 1 牛津大学关于普遍道德准则的研究及相关观点与建议 译文 2 食物颜色对味觉体验及大脑预期的影响 译文 3 财务资源对意义与幸福之间关系的影响研究 译文...

centos 释放系统预留内存并关闭Kdump服务

背景&#xff1a;Kdump是Linux系统的一种内核崩溃转储机制&#xff0c;它允许在系统发生内核崩溃&#xff08;例如内核panic&#xff09;时&#xff0c;捕获内存的转储信息&#xff0c;从而帮助事后分析故障原因。该过程需要一块预留内存&#xff08;称为crashkernel内存&#…...

基于WEB的房屋出租管理系统设计

摘 要 随着城市化程度的推进&#xff0c;越来越多的人涌入城市&#xff0c;同时也带来的旺盛的租房需求&#xff0c;传统的房屋出租管理依赖人 工记录的方式难以满足人们对房屋出租管理的需求。因此&#xff0c;本文根据房屋出租信息化的需求设计一款基于房屋出租 的管理系统。…...

云边端架构的优势是什么?面临哪些挑战?

一、云边端架构的优势 降低网络延迟&#xff1a;在传统集中式架构中&#xff0c;数据需传输到云计算中心处理&#xff0c;导致网络延迟较高。而云边端架构将计算和存储推向边缘设备&#xff0c;可在离用户更近的地方处理数据&#xff0c;大大降低了网络延迟&#xff0c;提升了用…...

clickhouse解决suspiciously many的异常

1. 问题背景 clickhouse安装在虚拟机上&#xff0c;持续写入日志时&#xff0c;突然关机&#xff0c;然后重启&#xff0c;会出现clickhouse可以正常启动&#xff0c;但是查询sql语句&#xff0c;提示suspiciously many异常&#xff0c;如图所示 2. 问题修复 touch /data/cl…...

爬虫 APP 逆向 ---> shopee(虾皮) 电商

shopee 泰国站点&#xff1a;https://shopee.co.th/ shopee 网页访问时&#xff0c;直接弹出使用 app 登录查看&#xff0c;那就登录 shopee 泰国站点 app。 手机抓包&#xff1a;分类接口 接口&#xff1a;https://mall.shopee.co.th/api/v4/pages/get_category_tree 请求参…...

用例图和活动图的区别与联系

在软件开发过程中&#xff0c;需求分析是至关重要的一步。为了更好地理解和描述系统的功能需求&#xff0c;开发人员通常会使用各种图形化工具。其中&#xff0c;用例图和活动图是两种非常常用的工具。虽然它们都用于描述系统的行为&#xff0c;但各自具有不同的特点和适用场景…...

接口请求中调试可以看到Origin,其具体的作用

接口请求中带 Origin 是浏览器在跨域请求时自动添加的一个 HTTP 请求头&#xff0c;用于标识请求的来源&#xff08;源&#xff09;。Origin 头的主要作用是支持跨域资源共享&#xff08;CORS&#xff09;和增强安全性。 Origin 的含义 Origin 包含发起请求的源信息&#xff0…...

知识图谱+大模型:打造全新智慧城市底层架构

在数字化时代&#xff0c;智慧城市的建设正迎来新一轮的变革。本文将探讨如何结合知识图谱和大模型技术&#xff0c;构建智慧城市的全新底层架构&#xff0c;以应对日益增长的数据量和复杂性&#xff0c;提升城市管理的智能化水平。 知识图谱&#xff1a;智慧城市的知识库 知识…...

Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆形图实现,Kotlin(2)

Android基于Path的addRoundRect&#xff0c;Canvas剪切clipPath简洁的圆形图实现&#xff0c;Kotlin&#xff08;2&#xff09; import android.content.Context import android.graphics.BitmapFactory import android.graphics.Canvas import android.graphics.Path import a…...

计算机图形学知识点汇总

一、计算机图形学定义与内容 1.图形 图形分为“图”和“形”两部分。 其中&#xff0c;“形”指形体或形状&#xff0c;存在于客观世界和虚拟世界&#xff0c;它的本质是“表示”&#xff1b;而图则是包含几何信息与属性信息的点、线等基本图元构成的画面&#xff0c;用于表达…...

【EtherCATBasics】- KRTS C++示例精讲(2)

EtherCATBasics示例讲解 目录 EtherCATBasics示例讲解结构说明代码讲解 项目打开请查看【BaseFunction精讲】。 结构说明 EtherCATBasics&#xff1a;应用层程序&#xff0c;主要用于人机交互、数据显示、内核层数据交互等&#xff1b; EtherCATBasics.h &#xff1a; 数据定义…...

AI 简史:从神经元到现代大模型

AI 简史&#xff1a;从神经元到现代大模型 人工智能 (AI) 和深度学习 (DL) 在过去的几十年中飞速发展&#xff0c;推动了计算机视觉、自然语言处理和机器人等领域的进步。今年的诺贝尔物理学奖更是颁给了美国科学家约翰霍普菲尔德 (John Hopfield&#xff09;和英国科学家杰弗…...

Kotlin入门到深入加强(1):基本介绍和第一个程序

吧&#xff0c; 一.关于本章和Kotlin 本章内容如要简单介绍一下Kotlin和创建并执行第一个Kotlin程序 什么是Kotlin,优势是什么,它和JAVA的关系又是什么 Kotlin是一种静态类型的编程语言&#xff0c;它运行在Java虚拟机上&#xff0c;并且可以与现有的Java代码无缝集成。Kotl…...

走进 Web3:探索分布式网络的未来

随着互联网的不断演变&#xff0c;我们正站在一个全新阶段的门槛上——Web3。它是对传统互联网&#xff08;Web2&#xff09;的一次深刻反思与升级&#xff0c;标志着一个去中心化、更加自主的数字世界的到来。Web3不仅仅是技术的革新&#xff0c;更代表着对互联网价值体系的根…...

信管通低代码信息管理系统应用平台

目前&#xff0c;国家统一要求事业单位的电脑都要进行国产化替代&#xff0c;替代后使用的操作系统都是基于linux的&#xff0c;所有以前在WINDOWS下运行的系统都不能使用了&#xff0c;再者&#xff0c;各单位的软件都很零散&#xff0c;没有统一起来。需要把日常办公相关的软…...

C语言从入门到放弃教程

C语言从入门到放弃 1. 介绍1.1 特点1.2 历史与发展1.3 应用领域 2. 安装2.1 编译器安装2.2 编辑器安装 3. 第一个程序1. 包含头文件2. 主函数定义3. 打印语句4. 返回值 4. 基础语法4.1 注释4.1.1 单行注释4.1.2 多行注释 4.2 关键字4.2.1 C语言标准4.2.2 C89/C90关键字&#xf…...

硬件设计:RS232电平标准

RS232是一种常用的串行通信接口标准&#xff0c;主要用于计算机和外部设备之间的数据传输。以下是RS232电平标准的详细介绍&#xff1a; 1. 电气特性&#xff1a; 信号电平&#xff1a; 逻辑1 (MARK)&#xff1a;-3V到-15V之间。通常&#xff0c;-5V到-15V之间为有效的逻辑1。…...

前端初学基础

一.Web开发 前端三件 HTML &#xff0c;页面展现 CSS&#xff0c;样式 JS(JavaScript),动起来 二&#xff0c;HTML 1.HTML概念 网页&#xff0c;网站中的一个页面&#xff0c;网页是构成网站的基本元素&#xff0c;是承载各种网站应用的平台。通俗的说&#xff0c;网站就…...

在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc

在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc &#x1f4d6; 前言 在 CentOS 7 上使用 NVM 安装 Node.js 后&#xff0c;可能会遇到如下问题&#xff1a; node: /lib64/libm.so.6: version GLIBC_2.27’ not found (required by node) node: /lib64/libc.so.6:…...

mac中idea菜单工具栏没有git图标了

1.右击菜单工具栏 2.选中VCS&#xff0c;点击添加 3.搜索你要的工具&#xff0c;选中点击确定就添加了 4.回到上面一个界面&#xff0c;选中你要放到工具栏的工具&#xff0c;点击应用就好了 5.修改图标&#xff0c;快捷键或者右击选中编辑图标 6.选择你要的图标就好了...

C++简明教程(10)(初识类)

类的教程 C 类的完整教程 C 中&#xff0c;类&#xff08;class&#xff09;是面向对象编程的核心概念&#xff0c;用于定义对象的属性&#xff08;数据成员&#xff09;和行为&#xff08;成员函数&#xff09;。本教程将带你从零开始&#xff0c;循序渐进地学习如何定义和使…...

微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)

原理图设计 汇编代码 ; I/O 端口地址定义 IOY0 EQU 0600H IOY1 EQU 0640H IOY2 EQU 0680HMY8255_A EQU IOY000H*2 ; 8255 A 口端口地址 MY8255_B EQU IOY001H*2 ; 8255 B 口端口地址 MY8255_C EQU IOY002H*2 ; 8255 C 口端口地址 MY8255_MODE EQU IOY003H*2 ; …...

ctfshow-jwt

将信息进行安全的封装&#xff0c;以json的方式传递 三部分分别是: Header { typ: JWT token类型 alg: HS256 算法名称 } 将这个信息进行base64加密&#xff0c;构成了第一部分 payload载荷&#xff0c;存放主要信息的地方 { "sub": 1234567890, 标准中注册的…...

植物大战僵尸融合版,真无双版,喵版,抽卡版,杂交版v3

我用夸克网盘分享了「植物大战僵尸」链接&#xff1a; https://pan.quark.cn/s/11a45054a4da 融合版‌的作者为B站up主蓝飘飘fly。该版本在原版植物基础上创新地将两种不同的植物种植在一起进行融合&#xff0c;创造出独特的游戏体验‌。‌抽卡版、喵版、无双版是由B站UP主【时…...