Apache Doris 创始人:何为“现代化”的数据仓库?
在 12 月 14 日的 Doris Summit Asia 2024 上,Apache Doris 创始人 & PMC 成员马如悦在开场演讲中,围绕“现代化数据仓库”这一主题,指出 3.0 版本是 Apache Doris 研发路程中的重要里程碑,他将这一进展总结为“实时之路”、“统一之路”和“弹性之路”,详细介绍了所对应的核心特性的设计思考与应用价值,揭晓了 2025 年社区发展蓝图。
本文节选自马如悦在 Doris Summit Asia 2024 上的演讲,以马如悦第一人称叙述,经编辑。
最具影响力开源大数据项目之一
Apache Doris 自 2013 年创建至今已 10 年有余,截至目前,GitHub Stars 已近 13,000,社区的贡献者达到近 670 名,平均每月活跃贡献者超过 120 名。这一成就使其超越了 Spark、Kafka 等项目,成为开源大数据和数据库领域中月活开发者最多的项目。此外,Apache Doris 在所有 Apache 项目中官网浏览量稳居第一,2024 年 4 月网站 PV 高达 900w,可见其受欢迎程度。
全球中大型企业规模突破 5000 家
在 Apache Doris 技术持续创新与稳步发展下,越来越多的用户及企业选择并使用 Apahce Doris。我记忆犹新的是,2022 年时,Apache Doris 所覆盖企业规模不足千家,然而时隔仅 2-3 年,目前正在使用 Apache Doris 的中大型企业已突破 5000 家,并且不断有新的用户了解并尝试使用 Doris。这一迅猛增长得益于社区所有用户及开发者的反馈、建议及开发共建,同时也离不开其商业公司飞轮科技提供的技术驱动、用户维系和社区建设等全方位的支持。
这 5000 家企业覆盖范围十分广泛且多元化,包括金融、互联网、电信、游戏、交通物流、零售快消、能源制造等多个领域,并且正在不断拓展新的应用场景,这充分证明了 Apache Doris 的强大性能及广泛适用性。今天到场的许多嘉宾正是我们的用户,在接下来的议程中,他们也将带来精彩的主题演讲,期待能给更多人带来启发与洞见。
2024 年,Apache Doris 重点推出了 3.0 版本,这一版本是研发之路上的重要里程碑。其缘由在于,自诞生之初,Apache Doris 就定位于现代化实时数据仓库。在 3.0 版本之前,尽管它在很多特性上都非常领先、大受欢迎,但并未完全实现现代化特性。然而,"现代化"这一理念在 3.0 版本中得以全面实现,并得到了充分的验证。接下来,我将从实时、统一和弹性三个方面,介绍 Apache Doris 在现代化数据仓库创新之路上的进展。
Real-Time,实时之路
随着工业 3.0 发展阶段的到来,数字技术已成为主流,企业正全面迈入实时分析时代。从以往批量报表转变为如今的实时仪表盘,从面向内部的分析扩展为面向外部的分析服务,从静态报表到交互式即时查询,从以人为中心到自动算法调用…这些变化都对实时性提出了非常高的要求。
实时分析是 Apache Doris 最为基础且核心的特性之一。项目建立之初,大多数用户正是被 Doris 的实时性所吸引。如今,Apache Doris 的实时性无疑已成为业界的标杆。那么,Apache Doris 是如何实现如此强大的实时分析性能呢?
01 秒级实时数据写入
实时数据的核心在于确保数据的新鲜度和快速可见性。为实现这一目标,Apache Doris 在实时数据的导入与存储方面进行了大量优化,具体分为以下三部分:
- 秒级实时数据写入: 支持秒级的实时数据写入,能够通过高效的 StreamLoad 和 Insert Into 功能实现快速数据导入。此外,它还支持服务端的批量 Group Commit,提升数据高频实时写入的效率。同时,Doris 可自动从 Kafka 拉取数据,并支持数据库的 CDC、Flink 和 Spark 的实时数据导入,并均可实现秒级入库。
- 高性能数据更新: 引入基于 Merge-on-Write 的主键模型,该表模型在数据写入时即对需要删除或更新的数据进行标记,始终保证有效的主键只出现一个文件中。同时,Doris 也支持 UPSERT 操作,包括条件更新、条件删除和部分列更新,以及基于 Sequence 列的并发导入事务。这对于高频写入的场景来说,大大减少了查询执行时的额外消耗。
- 轻量级元数据变更: 支持轻量级的元数据变更操作,如更改列名、增加或删除值列,以及调整 Varchar 列的长度等。这些操作可在毫秒级别内完成,确保数据能够实时更新,满足实时性需求。
02 极速交互式分析性能
相较于事务型数据库,分析数据库则更注重交互式分析体验。为提供更好的交互性分析,Apache Doris 在性能上不断优化,包括对向量化引擎、基于 CBO 的优化器、丰富的索引支持、单表/多表物化视图以及在 ARM 架构下的深度优化等。在这些能力的加持下,Apache Doris 在测试集中表现优异:
- 在 ClickBench 测试中,Apache Doris 分别在 2022、2024 年 10 月,在榜单上领先所有工业界数据库 。
- 在 TPC-H 测试中,Apache Doris 在 Join 场景中表现优异,其性能约为 Greenplum 的 3 至 8 倍。
- 在 TPC-DS 测试中,结果显示 Apache Doris 性能较 Trino/Presto 提升了约 3 倍。
03 超大规模用户高并发查询
在数据量不断激增的当下,高并发查询的需求也愈发的明显。Apache Doris 在高并发查询方面进行多项优化,最终实现了单节点最高上万 QPS 的并发:
- 分区分桶裁减:采用 Partition、 Bucket 两级分区,通过 Hash 将数据打散至各个节点中,以此提升读取并行度和吞吐量。
- 主键索引 & 倒排索引: 提供丰富的索引结构来加速数据的读取和过滤。通过索引显著减少了需要扫描的行数,降低 CPU 和 IO 的压力,大幅提升了系统整体并发能力。
- 行列混存:引入行式存储格式,在数据服务场景中行存更为高效,可减少磁盘访问次数。用户可指定开启行存,点查时每行只需一次 IO,在宽表列较多的情况下性能有数量级提升。
- 点查短路径及预处理语句优化:实现了点查短路径优化,绕过查询优化器以及 PlanFragment 来简化 SQL 执行流程,直接使用快速高效的读路径来检索所需的数据。同时,FE 端支持与 MySQL 协议兼容的预处理语句,在 CPU 成为瓶颈时,Prepared Statement 可实现 4 倍以上的性能提升。
04 高可用架构设计
分析型数据仓库如今不仅为企业内部提供 BI 报表和分析,还广泛服务于外部客户及大量高并发用户。因此实时系统需要秒级数据入库和查询,且不允许停机维护。对于此,Apache Doris 的优势也十分明显:
- 简洁架构设计:采用简洁的架构设计,确保元数据节点(FE)和存储计算节点(BE)均无单点故障,确保在硬件故障时,服务能够持续运行而不受影响。
- 在线扩容与滚动升级:支持在线扩容和滚动升级,用户能够在不中断服务的情况下,灵活地调整计算资源和存储容量,极大地提升了系统的弹性,允许用户根据实际需求快速扩展。
- 数据自动均衡:系统提供数据自动均衡功能,确保数据在各节点间均匀分布,从而提升查询性能和资源利用率。
- 在线模式变更:用户可以在不停机的情况下动态增删索引,快速响应业务变化,灵活地调整数据结构以满足不同场景的需求。
- 存算分离支持:在 3.0 版本中引入了存算分离,可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,计算和存储资源可以独立扩展,进一步提升了系统的灵活性和性能。
Unified,统一之路
在大数据分析领域,企业面临着多样化的分析需求,往往需要部署多个工具或技术来应对不同场景。这种做法往往导致组件繁多、运维成本高昂、数据链路冗长以及数据重复存储等诸多问题。
数据仓库几经发展,逐步从传统数据仓库演变为大数据平台/数据湖,如今又迎来了现代化数据仓库,对应的架构也在发生着变化。底层数据源类型从传统的结构化数据扩展为多种半结构化数据;中间层从 ETL、数据仓库、数据湖相互独立演变为相互融合;顶层则引入了数据科学、机器学习和人工智能应用。这些演变都对数据处理的时效性、灵活性与效率提出更高的要求。
在这样的背景下,Doris 作为现代化统一数据仓库,能够有效应对多样的分析场景。其 All-In-One 的设计理念不仅简化了数据的使用和管理,还使企业将精力从复杂的数据基础设施管理转向上层的数据应用。
01 湖仓无界
“湖仓无界”,即 Lakehouse,是数据领域的全新概念。Apache Doris 作为一款现代化的数据仓库,凭借其独特的架构,完美诠释了这一理念。而 Apache Doris 之所以能被称为 Lakehouse,主要得益于其两大特性:
- 联邦查询能力:Apache Doris 通过扩展 Catalog 和存储插件,使用户无需将数据物理集中至统一的存储空间,在保持各数据源独立性的同时,仅借助 Apache Doris 即可实现多个异构数据源的统一分析,既可以直查外部表以及存储文件、也可以执行内表和外表以及外表相互之间的关联分析。此外。目前 Apache Doris 已经支持了 10 余种主流湖、仓、关系型数据库的连接器。
- 开放的数据湖特性:Apache Doris 引入高吞吐读写 API,也称之为 Data API 或 Storage API。打破了数据封闭性,使外部引擎能直接、高效地访问和存储 Doris 中的数据,无需受限于造成性能瓶颈的 JDBC/ODBC 协议。
凭借这些特性,Apache Doris 既能作为强大的 SQL 查询引擎,也能作为开放、灵活的数据湖,实质上满足了 Lakehouse 的定义。
那么,Apache Doris 与其他纯粹的 Lakehouse 相比较,其优势在哪里? 其核心在于“避免过早复杂性”,这里我通过一个例子来说明。
对于许多业务团队而言,其业务数据量可能仅有几百 GB,甚至更少,且尚未引入如 HDFS 这类复杂的数据架构。对于这种情况,Apache Doris 只需简单的几个节点即可迅速投入使用,部署过程极为简便。随着系统和业务需求的逐步复杂化,比如需要集成机器学习引擎或查询 HDFS 上数据时,凭借 Apache Doris 灵活的架构设计及弹性,能够实现逐步的升级与演进,无需在最开始就搭建复杂的系统。
许多用户在使用某些 Lakehouse 产品时感到不便,其根源在于这些产品要求用户在数据量有限的情况下就搭建复杂的 HDFS 及多个组件,这无疑增加了不必要的复杂性,也即“过早复杂性”。相比之下,Apache Doris 则秉持着从简单到复杂的逐步演进原则,有效避免了这一问题。
02 半结构化数据分析
2024 年,我们注意到一个显著的趋势,将近一半的 Elasticsearch 使用者倾向于采用 Apache Doris 来替代 Elasticsearch。尽管 Elasticsearch 在半结构化数据分析领域占有一席之地,但随着 Apache Doris 的持续突破,正逐步成为未来半结构化数据分析的核心引擎。这一转变主要归功于三大关键点:
- 复合数据类型:支持 Array、Map、Struct、JSON 复合数据类型,常用于用户行为和画像分析、点查、查询数据湖中 Parquet ORC 等格式数据的场景。
- Variant 数据类型:支持 Variant 数据类型,支持存储半结构化数据以及包含不同数据类型(如整数、字符串、布尔值等)的复杂数据结构,无需提前在表结构中定义具体的列。擅长处理复杂多变的嵌套结构,可自动推断列信息并合并到现有 Schema,支持动态子列的存储。同时,表中可以同时包含灵活的 Variant 列和静态列,提供更大的存储和查询灵活性。相较于 JSON 类型,存储空间减少了约 65%,查询速度提升超 10 倍。
- String 数据类型:优化了正则匹配和子串匹配算法,引入了 NGram BloomFilter,提升了使用 LIKE 语句时的查询速度;同时,通过倒排索引,对文本进行细粒度分词,使得用户可以使用 MATCH 等相关语句,实现文本快速检索。
Elastic,弹性之路
弹性的重要性在于它能够提升数据库的灵活性、可扩展性以及资源利用率,同时可降低企业的运维成本和潜在风险。为此,Apache Doris 在提升弹性方面也不断努力。
01 存算一体
在存算一体时代,Apache Doris 便提供了弹性资源管理功能,先是推出了基于资源标签(Resource Tag)的物理隔离方案,后在 2.1 版本中推出了 Workload Group 管理方案,能够基于 CGroup 技术在每台机器上实现 CPU 资源的硬限和软限。在存储方面也很早便实现了冷热分层策略,热数据存储在成本更高的 SSD 盘上,而冷数据则存储在相对低成本的 HDD 盘甚至更为廉价的对象存储上,保存方式也从多副本变为单副本,冷数据无需占用宝贵的本地机器资源,从而避免了因扩充容量而购买更多机器的需求。
02 存算分离全新架构
而在 3.0 版本中,Apache Doris 开始支持存算分离模式,基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。在存算分离架构中,元数据存储在 FoundationDB,数据则存储在 S3 等对象存储中。在这一架构下,FE 和 BE 节点均变得无状态,所有数据都存放于共享的对象存储,而非本地存储。同时,为了提升性能,Doris 引入了高速缓存机制。
针对存算分离是否会影响性能的问题,我们进行了存算一体模式和存算分离模式在不同缓存下的 TPC-DS 1TB 性能测试。结果显示,在缓存命中的情况下,性能基本无损;部分命中缓存时,性能损耗约为 10%;而在缓存不命中的情况下,性能损失约为 30%。但相较于业内其他同类系统,存算分离模式下的 Apache Doris 仍有着极为明显的性能优势。
03 两种部署形态融合
弹性的资源管理始终是数据分析基础设施的永恒追求。我们提供存算一体和存算分离两种部署形态,以便发挥各自的优势:存算一体部署简便且性能优越,而存算分离则支持灵活的独立扩缩容。
进一步来看,存算分离的部署需要依赖高性能的对象存储或文件系统,以及充足的网络带宽。如果企业的存储基础设施或网络带宽受限,存算分离的性能可能受到影响。这也解释了为何存算分离常与云原生技术相关联,虽然存算分离并非云原生特有,但云原生环境为其提供了高带宽和优质对象存储,为其提供了理想的设施基础。
当前,一些用户认为在开始时就要选择存算一体或存算分离的部署形态并不合理,尤其是在数据量较小时。因此,Apache Doris 未来计划融合这两种部署形态,用户无需再纠结于选择哪种部署形态,无论是从存算一体切换到存算分离,还是反向切换,都可以通过简单的参数配置实现自动切换,而无需重建集群或重新导入数据。
2025,探索更多可能性
展望 2025,在功能需求上,Apache Doris 将更加专注于用户需求,聚焦四大板块,强化其技术实力:
- 内置 CDC 同步:Apache Doris 虽已支持丰富的数据导入方式,但 CDC 仍依赖外部工具或生态合作伙伴。未来将实现内置 CDC 同步功能,目前我们已研发出初步版本,支持从众多 TP 数据库直接 CDC 导入数据。
- 支持增量数据处理:投入大量人力支持基于增量式的批量处理。这种方式不同于 Spark 或传统 Hive 的批量模式,具备更高的时效性,能够显著提升数据处理效率。
- 完善湖仓一体:兼容 Trino/Presto Connector 框架,这意味着 Apache Doris 将能够直接使用 Trino 和 Presto 所支持的功能,无需重复开发。同时,还将完善高吞吐读写的 Data API,以提升整体性能。
- 存算一体和存算分离部署形态融合:Apache Doris 未来计划融合这两种部署形态,用户无需再纠结于选择哪种部署形态,无论是从存算一体切换到存算分离,还是反向切换,都可以通过简单的参数配置实现自动切换,而无需重建集群或重新导入数据,避免架构过早复杂性。
在非功能需求上,Apache Doris 将全力投入于三个方向持续发力:
- 更优:提升导入性能,将查询性能从秒级提升为亚秒级,为保持全球查询性能第一的位置而持续发力。
- 更稳:实行更加严格的版本迭代策略,三位版本将不再引入新 Feature,专注于 Bug 的修复,并加强更多测试覆盖。实现内核插件化,基于插件化引入新功能与周边功能。
- 更易用:对于配置较为复杂的参数,未来将努力简化参数配置,并提升产品文档质量,完善周边生态工具,以增强用户使用体验。
Doris Summit Asia 2024 峰会回放 & PPT 资料现已公开,前往 Summit 官网 点击查阅或下载
相关文章:
Apache Doris 创始人:何为“现代化”的数据仓库?
在 12 月 14 日的 Doris Summit Asia 2024 上,Apache Doris 创始人 & PMC 成员马如悦在开场演讲中,围绕“现代化数据仓库”这一主题,指出 3.0 版本是 Apache Doris 研发路程中的重要里程碑,他将这一进展总结为“实时之路”、“…...
json的作用?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有简洁、易读、易于解析和生成等特点,在前后端数据交互、配置文件、数据存储等多个领域发挥着重要作用,以下是具体介绍: JSON 的作用 数据…...
ChatGPT是如何生成长文的
说实话,现在我们对chatGPT的最深的印象就是他是一个各方面知识都比较全面的机器助手,我们的问题他都能生成答案,不过大家发现没有,它生成相对应的长文的时候,都是一个词一个词蹦出来的,有的时候是一个个词组…...
微服务——部署与运维
1、你是否有将 Java 微服务部署到容器(如 Docker)中的经验?请描述一下部署过程和相关注意事项。 部署过程: 编写 Dockerfile,定义基础镜像(如 openjdk)、应用 JAR 包路径和启动命令。构建镜像…...
json笔记
1、json的组成 JSON是一个标记符序列。这套标记符包括:构造字符、字符串、数字和字面值(false, true, null)。 1.1 构造字符 六个构造字符: 左方括号 [ 右方括号 ] 左大括号 { 右大括号 } 冒号 : 逗号 , 1.2 JSON值 json值包括:对象…...
从0入门自主空中机器人-1【课程介绍】
关于本课程: 本次课程是一套面向对自主空中机器人感兴趣的学生、爱好者、相关从业人员的免费课程,包含了从硬件组装、机载电脑环境设置、代码部署、实机实验等全套详细流程,带你从0开始,组装属于自己的自主无人机,并让…...
C++ 设计模式
代码示例 从封装变化角度分类 1.组件协作 现代软件专业分工之后的第一个结果“框架与应用程序的划分” ,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。 模板方法(Template Me…...
最新版Edge浏览器加载ActiveX控件技术——alWebPlugin中间件V2.0.28-迎春版发布
allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…...
HarmonyOS NEXT应用开发实战:免费练手的网络API接口分享
学习一项技能,最好也最快的办法就是直接动手实战。在实战中不断的总结经验和收获成就感。这里分享些好用且免费的网络API练手接口,这对于想要提升自己网络开发能力的开发者来说,无疑是极大的福音。今天,我将详细介绍一个API接口集…...
高级技巧-使用Mysql 实现根据条件过滤整个分组数据
博客-mysql exists实现过滤所属条件对应分组的全部数据 在数据查询中,有时需要根据某一条件来过滤整个分组的数据,尤其是当某条记录满足特定条件时,需要将该组内的所有记录排除。本文将介绍如何使用 MySQL 的 EXISTS 关键字来实现这种分组过滤…...
LeetCode 9. 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数 是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,…...
园区网综合拓扑实验
一、实验要求 实验拓扑图如上图所示 1、按照图示的VLAN及IP地址需求,完成相关配置 2、要求SW1为VLAN 2/3的主根及主网关 SW2为vlan 20/30的主根及主网关 SW1和SW2互为备份 3、可以使用super vlan(本实验未使用) 4、上层…...
Flink状态编程
Flink处理机制的核心就是“有状态的流处理”,在某些情况下,一条数据的计算不仅要基于当前数据自身,还需要依赖数据流中的一些其他数据。这些在一个任务中,用来辅助计算的数据我们就称之为这个任务的状态。 一、按键分区状态&…...
Ajax数据爬取
有时我们用requests 抓取页面得到的结果,可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,而使用requests 得到的结果中并没有这些数据。这是因为 requests 获取的都是原始 HTML 文档,而浏览器中的页面是JavaScript 处理…...
MVCC实现原理以及解决脏读、不可重复读、幻读问题
MVCC实现原理以及解决脏读、不可重复读、幻读问题 MVCC是什么?有什么作用?MVCC的实现原理行隐藏的字段undo log日志版本链Read View MVCC在RC下避免脏读MVCC在RC造成不可重复读、丢失修改MVCC在RR下解决不可重复读问题RR下仍然存在幻读的问题 MVCC是什么…...
PilotGo
title: 解锁 PilotGo:智能化运维的得力助手 date: ‘2024-12-29’ category: blog tags: PilotGo运维管理智能化工具技术应用 sig: ops archives: ‘2024-12’ author:way_back summary: PilotGo 作为一款创新的运维管理工具,凭借其智能化的特性和丰富的…...
【后端】LNMP环境搭建
长期更新各种好文,建议关注收藏! 本文近期更新完毕。 LNMPlinuxnginxmysqlphp 需要的资源 linux服务器 web服务软件nginx 对应的语言编译器代码文件 数据库mysql安装 tar.gz包或者命令行安装 进入root: sodu 或su mkdir path/{server,soft}…...
vue 本地自测iframe通讯
使用 postMessage API 来实现跨窗口(跨域)的消息传递。postMessage 允许你安全地发送消息到其他窗口,包括嵌套的 iframe,而不需要担心同源策略的问题。 发送消息(父应用) 1. 父应用:发送消息给…...
【人工智能】基于Python和OpenCV实现实时人脸识别系统:从基础到应用
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着人工智能和计算机视觉的快速发展,人脸识别技术已广泛应用于监控、安全、社交媒体、金融和医疗等领域。本文将介绍如何利用Python和Ope…...
vue2使用pdfjs-dist和jsPDF生成pdf文件
vue2使用pdfjs-dist和jsPDF生成pdf文件 1、安装依赖 npm install pdfjs-dist2.6.3472、引入依赖 import { jsPDF } from jspdf// 使用require方式导入pdfjs-dist v2.6.347,高版本报错(import导入会报错:GlobalWorkerOptions undefined&…...
深度学习算法选择
1. 卷积神经网络(Convolutional Neural Networks, CNNs) 简介 卷积神经网络擅长处理具有网格结构的数据,如图像。通过卷积层、池化层和全连接层,CNN能够自动提取和学习数据的空间特征。 应用场景 图像识别与分类:如…...
asp.net core系统记录当前在线人数
实时记录当前在线人数,登录后保持120秒在线状态,在线状态保存在缓存中,采用滑动过期,在120秒内请求了系统,自动续活120秒;超过时间则移除用户在线状态; 需要在登录过滤器标记用户在线状态需要排…...
【每日学点鸿蒙知识】Grid子项拖动、Swiper指示器、手势事件上报、指定使用发布版本API、打包签名失败报错109
1、HarmonyOS Grid组件子项拖动问题? Grid组件中有20个GridItem子组件,其中前4个GridItem是不能拖动的,其余GridItem可拖动排序。 关于可拖拽grid及gridItem可参考如下代码(注:其中 .draggable(parseInt(day) < 6…...
轻松实现向量搜索:探索 Elastic-Embedding-Searcher 项目
随着人工智能和机器学习技术的飞速发展,向量搜索已成为数据检索的重要方式。尤其是在处理大规模文本数据时,传统的基于关键词的检索方式已经难以满足需求。为了优化检索性能并提升搜索精度,向量搜索成为了更加高效的解决方案。而在这一领域&a…...
区块链平台安全属性解释
区块链平台安全属性解释 双向认证 解释:双向认证是指在通信过程中,**通信双方都需要对对方的身份进行验证,确保对方是合法的、可信任的实体。**只有双方身份都得到确认后,通信才会被允许进行,从而防止非法用户的接入和数据的窃取或篡改。举例:在基于区块链和联邦学习的数…...
matlab reshape permute
1.reshape 将向量按照顺序重新构建 矩阵,新矩阵 先排完第一列, 再第二列… 2.permute 将向量 维度变换...
《一文读懂卷积网络CNN:原理、模型与应用全解析》
《一文读懂卷积网络CNN:原理、模型与应用全解析》 一、CNN 基本原理大揭秘(一)从人类视觉到 CNN 灵感(二)核心组件详解 二、经典 CNN 模型巡礼(一)LeNet-5:开山鼻祖(二&a…...
深入理解 PyTorch 的 view() 函数:以多头注意力机制(Multi-Head Attention)为例 (中英双语)
深入理解 PyTorch 的 view() 函数:以多头注意力机制(Multi-Head Attention)为例 在深度学习模型的实现中,view() 是 PyTorch 中一个非常常用的张量操作函数,它能够改变张量的形状(shape)而不改…...
【每日学点鸿蒙知识】获取是否有网接口、获取udid报错、本地通知、Json转Map、Window10安装Hyper-v
1、有没有获取当前是否真实有网的接口? 比如当前链接的是wifi,但是当前wifi是不能访问网络的,有没有接口可以获取到这个真实的网络访问状态? 请参考说明链接:https://developer.huawei.com/consumer/cn/doc/harmonyo…...
《Vue3 四》Vue 的组件化
组件化:将一个页面拆分成一个个小的功能模块,每个功能模块完成自己部分的独立的功能。任何应用都可以被抽象成一棵组件树。 Vue 中的根组件: Vue.createApp() 中传入对象的本质上就是一个组件,称之为根组件(APP 组件…...
Linux:alias别名永久有效
一、背景 日常使用bash时候,有些常用的命令参数的组合命令太长,很难记,此时可以利用Linux提供的alias命令生成命令的别名(命令的隐射),但是我们会发现,当退出了终端后重新登录就失效了ÿ…...
MicroDiffusion——采用新的掩码方法和改进的 Transformer 架构,实现了低预算的扩散模型
介绍 论文地址:https://arxiv.org/abs/2407.15811 现代图像生成模型擅长创建自然、高质量的内容,每年生成的图像超过十亿幅。然而,从头开始训练这些模型极其昂贵和耗时。文本到图像(T2I)扩散模型降低了部分计算成本&a…...
网神SecFox FastJson反序列化RCE漏洞复现(附脚本)
0x01 产品描述: 网神SecFox是奇安信网神信息技术(北京)股份有限公司推出的一款运维安全管理与审计系统,集“身份认证、账户管理、权限控制、运维审计”于一体,提供统一运维身份认证、细粒度的权限控制、丰富的运维审计报告、多维度的预警…...
解决无法在 Ubuntu 24.04 上运行 AppImage 应用
在 Ubuntu 24.04 中运行 AppImage 应用的完整指南 在 Ubuntu 24.04 中,许多用户可能会遇到 AppImage 应用无法启动的问题。即使你已经设置了正确的文件权限,AppImage 仍然拒绝运行。这通常是由于缺少必要的库文件所致。 问题根源:缺少 FUSE…...
Pytorch | 利用PC-I-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
Pytorch | 利用PC-I-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集PC-I-FGSM介绍算法原理 PC-I-FGSM代码实现PC-I-FGSM算法实现攻击效果 代码汇总pcifgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CIFAR…...
前端往后端传递参数的方式有哪些?
文章目录 1. URL 参数1.1. 查询参数(Query Parameters)1.2. 路径参数(Path Parameters) 2. 请求体(Request Body)2.1. JSON 数据2.2. 表单数据2.3. 文件上传 3. 请求头(Headers)3.1. 自定义请求…...
对抗攻击VA-I-FGSM:Adversarial Examples with Virtual Step and Auxiliary Gradients
文章目录 摘要相关定义算法流程代码:文章链接: Improving Transferability of Adversarial Examples with Virtual Step and Auxiliary Gradients 摘要 深度神经网络已被证明容易受到对抗样本的攻击,这些对抗样本通过向良性样本中添加人类难以察觉的扰动来欺骗神经网络。目…...
【Java】IO流练习
IO流练习 题干: 根据指定要求,完成电话记录、 注册、登录 注册 题干: 完成【注册】功能: 要求: 用户输入用户名、密码存入users.txt文件中 若users.txt文件不存在,创建该文件若users.txt文件存在 输入…...
红魔电竞PadPro平板解BL+ROOT权限-KernelSU+LSPosed框架支持
红魔Padpro设备目前官方未开放解锁BL,也阉割了很多解锁BL指令,造成大家都不能自主玩机。此规则从红魔8开始,就一直延续下来,后续的机型大概率也是一样的情况。好在依旧有开发者进行适配研究,目前红魔PadPro平板&#x…...
小程序配置文件 —— 12 全局配置 - pages配置
全局配置 - pages配置 在根目录下的 app.json 文件中有一个 pages 字段,这里我们介绍一下 pages 字段的具体用法; pages 字段:用来指定小程序由哪些页面组成,用来让小程序知道由哪些页面组成以及页面定义在哪个目录,…...
供应链系统设计-供应链中台系统设计(六)- 商品中心概念篇
概述 我们在供应链系统设计-中台系统设计系列(五)- 供应链中台实践概述 中描述了什么是供应链中台,供应链中台主要包含了那些组成部门。包括业务中台、通用中台等概念。为了后续方便大家对于中台有更深入的理解,我会逐一针对中台…...
leetcode 面试经典 150 题:删除有序数组中的重复项
链接删除有序数组中的重复项题序号26题型数组解题方法双指针难度简单熟练度✅✅✅✅✅ 题目 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保…...
Python 中的 lambda 函数和嵌套函数
Python 中的 lambda 函数和嵌套函数 Python 中的 lambda 函数和嵌套函数Python 中的 lambda 函数嵌套函数(内部函数)封装辅助函数闭包和工厂函数 Python 中的 lambda 函数和嵌套函数 Python 中的 lambda 函数 Lambda 函数是基于单行表达式的匿名函数。…...
Android笔试面试题AI答之Android基础(7)
Android入门请看《Android应用开发项目式教程》,视频、源码、答疑,手把手教 文章目录 1.Android开发如何提高App的兼容性?**1. 支持多版本 Android 系统****2. 适配不同屏幕尺寸和分辨率****3. 处理不同硬件配置****4. 适配不同语言和地区**…...
PhPMyadmin-cms漏洞复现
一.通过日志文件拿Shell 打开靶场连接数据库 来到sql中输入 show global variables like %general%; set global general_logon; //⽇志保存状态开启; set global general_log_file D:/phpstudy/phpstudy_pro/WWW/123.php //修改日志保存位置 show global varia…...
HTML-CSS(day01)
W3C标准: W3C( World Wide Web Consortium,万维网联盟) W3C是万维网联盟,这个组成是用来定义标准的。他们规定了一个网页是由三部分组成,分别是: 三个组成部分:(1&…...
【服务器项目部署】⭐️将本地项目部署到服务器!
目录 🍸前言 🍻一、服务器选择 🍹 二、服务器环境部署 2.1 java 环境部署 2.2 mysql 环境部署 🍸三、项目部署 3.1 静态页面调整 3.2 服务器端口开放 3.3 项目部署 🍹四、测试 🍸前言 小伙伴们大家好…...
计算机网络 (14)数字传输系统
一、定义与原理 数字传输系统,顾名思义,是一种将连续变化的模拟信号转换为离散的数字信号,并通过适当的传输媒介进行传递的系统。在数字传输系统中,信息被编码成一系列的二进制数字,即0和1,这些数字序列能够…...
机器学习周报-TCN文献阅读
文章目录 摘要Abstract 1 TCN通用架构1.1 序列建模任务描述1.2 因果卷积(Causal Convolutions)1.3 扩张卷积(Dilated Convolutions)1.4 残差连接(Residual Connections) 2 TCN vs RNN3 TCN缺点4 代码4.1 TC…...
UniApp 页面布局基础
一、UniApp 页面布局简介 在当今的移动应用开发领域,跨平台开发已成为一种主流趋势。UniApp作为一款极具影响力的跨平台开发框架,凭借其“一套代码,多端运行”的特性,为开发者们提供了极大的便利,显著提升了开发效率。…...