对话Stack Overflow,OceanBase CTO 杨传辉谈分布式数据库的“前世今生”

近日, OceanBase CTO 杨传辉受邀出席全球知名开发者论坛 Stack Overflow 的最新一期播客节目,与 Stack Overflow 高级内容创作官 Ryan Donovan 展开对话。双方围绕分布式数据库的可靠性、一致性保障、HTAP 架构以及 AI 时代分布式数据库的发展趋势等热点话题进行了深入探讨和交流。杨传辉不仅揭秘了 OceanBase 的“前世今生”,还分享了其背后许多鲜为人知的趣闻轶事。

图片图片 

Ryan Donovan                                                                         杨传辉

Stack Overflow 高级内容创作官                                       OceanBase CTO

本期播客中的精彩摘要

对于 HTAP 来说

分布式数据库是最佳选择

首先,如果我们将 OLTP 系统和 OLAP 系统合并,数据量相比之前将大幅增加,分布式数据库能够处理更大规模的数据。其次,分布式数据库中每一份数据都有多个副本。我们可以在主副本中使用行存来处理 OLTP,在次级副本中使用列存来处理OLAP。只要我们有一个优秀的 SQL 优化器,就可以找到最佳方式来支持混合工作负载。

分布式数据库有很多种

原生分布式SQL数据库是终极解决方案

实现分布式数据库的方式有很多种,比如常见的 NoSQL 数据库、分库分表。相比之下,我认为原生分布式 SQL 数据库才是终极解决方案。它既能实现高可用性和可扩展性,又能提供完整的 SQL 支持。

高连续性业务

城市级容灾是必选项

对于支付宝等要求高业务连续性的企业,仅仅具备数据中心级别的容灾是不够的,城市级别的灾难恢复能力不仅是可选项,而是必选项,尤其是对于 OLTP 数据库来说,这一点至关重要。

相比独立向量数据库

通用数据库加向量插件是未来发展方向

向量数据库目前主要有两种类型:一种是独立的向量数据库,另一种是带有向量插件的通用数据库,也就是“SQL + AI”。后者在传统 SQL 数据库的基础上引入了向量存储和处理能力。我认为,带有向量插件的通用数据库是未来的发展方向。OceanBase 在 2024 年 10 月 正式发布了向量能力。

AI 时代数据库的一大技术趋势是

「混合搜索」

混合搜索指同时支持 SQL、NoSQL 和向量等多种数据模型。如果能在通用数据库的基础上支持向量功能,就可以通过一个 SQL 查询实现混合搜索。我认为这将大大简化 AI 技术栈,帮助企业更快地进行 AI 应用开发。

下文为对话全文(中文翻译)

Ryan:大家好,欢迎收听 Stack Overflow 播客,在这里,我们会讨论一切和软件与技术相关的话题。我是 Ryan Donovan。我负责编辑博客,也是 Stack Overflow 播客的联合主持人。在今天的节目中,我们将与 OceanBase 的首席技术官杨传辉一起聊聊他们如何打造一个能够处理超过十亿客户数据的数据库。欢迎来到 Stack Overflow 播客。

杨传辉:大家好。Ryan 你好。

Ryan:在节目开始之前,我们通常会先了解一下我们的嘉宾,听听他们是如何踏入软件和技术领域的。那么您的“入行故事”是怎样的呢?

杨传辉:我在大学学习计算机科学期间,偶然读到了谷歌在分布式计算和存储领域发表的几篇研究论文。其中,Google File System 这篇论文给我留下了深刻的印象。这是一篇非常有名的文章,也让我对这一技术产生了浓厚的兴趣。

毕业后,我加入了中国的一家搜索引擎公司,负责构建大规模分布式存储系统。2010 年,我发现阿里巴巴在大规模数据处理方面有巨大的需求,于是我加入了阿里巴巴,从零开始打造 OceanBase。

OceanBase 最初是为阿里巴巴和支付宝内部使用而开发的,如今经过多年的发展,它已经在全球范围内被超过 2000 名客户采用。在这个过程中,我与大量开发者进行了深入交流,尤其是在中国。我还基于自己在大规模分布式存储方面的经验,撰写了许多技术博客,并出版了一本技术书籍。这些内容受到了众多开发者的广泛欢迎。

Ryan:分布式存储是一项非常有趣的解决方案,而 OceanBase 的成长历程更是与支付宝紧密相连。能否请您分享一下支付宝在交易型数据库方面曾经遇到的挑战,以及 OceanBase 是如何针对性地解决这些问题的?

杨传辉:当然。支付宝是一个在全球范围拥有超过 10 亿用户的支付平台。当你到中国旅行时,完全不需要携带现金,只需通过扫描支付宝的二维码,就能轻松完成所有支付需求。此外,在中国,我们有“双十一”购物节,其流量是“黑色星期五”购物节的几十倍。应对如此巨大的流量冲击,对数据库来说是一个巨大的挑战。

当时,支付宝的一些团队尝试通过分库分表来解决可扩展性问题,比如在 MySQL 或 Oracle 上进行分库分表。但这种方法使得应用和数据库的维护变得更加复杂,甚至有些业务无法进行分库分表。因此,从 2010 年起,我们决定从零开始打造一个高度可扩展的数据库。

但你知道,从头开发一个全新的数据库是非常困难的,我们花了很长的时间让支付宝真正开始采用 OceanBase。最初,OceanBase 仅被用于阿里巴巴和支付宝的非核心业务。花了将近五年时间,OceanBase 才被我们的第一个核心业务——支付宝的交易业务所采用。又过了三年时间,支付宝的所有核心业务,包括交易、支付、账务等,都从 Oracle 和 MySQL 迁移到了OceanBase。OceanBase 也成为了支付宝唯一的数据库。

在这个过程中,我们最大的竞争对手是 MySQL 分库分表解决方案。我认为,与其相比 OceanBase 最大的优势是我们解决了无损故障恢复的问题。通过采用基于多数派共识的协议,OceanBase 实现了 RPO(恢复点目标)= 0。这意味着在发生故障时,无论是服务器故障、数据中心故障,甚至是整个城市的灾难,OceanBase 都可以自动恢复,且保障零数据丢失。此外,OceanBase 的存储引擎相比 MySQL 和 Oracle 更具成本效益。以支付宝为例,在迁移到 OceanBase 后节省了大约 70% 的数据库存储成本。

Ryan:如果我没听错的话,你们的分布式数据库采用的不是分库分表方案?

杨传辉:没错,我们采用的不是分库分表方案,我们是原生分布式数据库。

Ryan:听上去很酷,能不能详细讲讲这里的“分布式”是什么意思?比如,如果你们没有使用分库分表,那么背后的复制机制是怎么实现的?以及,这里的“原生分布式”到底是指什么呢?

杨传辉:其实,实现分布式数据库的方式有很多种。比如常见的 NoSQL 数据库,像 MongoDB、HBase、Cassandra、Redis 等。NoSQL 数据库在可扩展性和支持灵活的数据模型方面确实有优势,但通常不支持完整的 SQL 功能。一旦涉及到事务支持、复杂查询和数据一致性等问题,NoSQL 数据库就显得力不从心了。

另一种方案是分库分表,比如基于 MySQL 的分库分表、基于 PostgreSQL 的分库分表,这些都是很流行的方案。分库分表用一种非常直观的方式解决了数据库的可扩展性问题,但它会让系统变得更加复杂,对于应用程序的开发和数据库的维护来说,难度都会大幅增加。

相比之下,我认为原生分布式 SQL 数据库才是终极解决方案。它既能实现高可用性和可扩展性,又能提供完整的 SQL 支持。

目前,也有一些原生分布式 SQL 数据库,比如 Google Spanner、YugabyteDB、CockroachDB,还有 OceanBase 等等。OceanBase 的优势在于更高的性能。在 SysBench 基准测试中,针对简单的 OLTP 工作负载,OceanBase 的单节点性能是其他分布式 SQL 数据库的 3 到 10 倍。OceanBase 还是第一个通过 TPC-C 基准测试的分布式数据库,我们的 TPC-C 性能达到了 Oracle 的 20 倍。

Ryan:我注意到你非常强调性能。通常,当我们与事务型数据库的开发团队交流时,他们更关注的是可用性和可靠性。事务一旦记录,无论发生什么情况,必须确保每次都能成功。那么,OceanBase 是如何在保持可用性、可靠性、数据一致性的同时,还能提升性能的呢?

杨传辉:在 OceanBase 中,我们通过一种基于多数派共识的协议——Paxos 协议,来确保数据的一致性和高可用性。例如,我们为每一份数据创建三个副本,并将这些副本分布在集群中的三个不同节点上。当事务提交时,如果三个节点中有至少两个成功提交,即达到“多数派”,那么这个事务就被认为是成功的,从而确保数据的一致性。

在这种架构下,即使任何一个服务器发生故障,事务仍然会存储在剩下的两个节点中的至少一个上。因此,即使主节点突然宕机,另外两个节点可以自动选举出一个新的主节点,系统依然可以正常运行,且不会丢失任何数据。

Ryan:那么,每个节点是否都记录了所有事务,并且会对每一笔事务达成共识呢?还是说它们之间存在某种分工?

杨传辉:是的,最终每个节点都会存储所有事务,每笔事务只有在同步到多数派节点(即三个节点中的至少两个节点)后,才会被提交。

OceanBase 在支付宝中得到了广泛应用,我们还首创了名为“三地五中心”的架构。依靠这一架构,支付宝不仅能够应对服务器级别或数据中心(IDC)级别的故障,还能有效应对城市级别的灾难。这一架构于 2018 年在支付宝正式上线。迁移到 OceanBase 后,支付宝的数据库能够在不到 30 秒内自动恢复,且零数据丢失。

这背后还有一个非常有趣的故事,我很乐意和大家分享。

Ryan:当然,我喜欢听这些实战故事。

杨传辉:2015 年,支付宝的数据中心设在杭州。2015 年的 5 月 27 日,因为一次道路施工,连接数据中心的地下光缆被意外挖断了,导致部分服务中断。从那天起,支付宝记住了这个教训,并且深刻意识到,城市级别的灾难恢复能力不仅是可选项,而是必选项,尤其是对于 OLTP 数据库来说,这一点至关重要。

在接下来的几年里,我们进一步完善了这一解决方案,如今已经能够实现 RPO(恢复点目标)= 0,RTO(恢复时间目标)小于 8 秒。这意味着,我们的数据库可以在不到 8 秒的时间内自动恢复服务,且保证零数据丢失。可以说,以支付宝为代表的客户的需求推动了分布式数据库,比如 OceanBase 的不断演进。

Ryan:说到容灾,人们通常对数据中心偶尔出现故障的情况进行各种应对计划,但真正有意思的是如何去应对像陨石撞击这样的极端情况,比如某种极端情况导致整个城市都瘫痪了该怎么办。

杨传辉:没错。

Ryan:那么,这种情况的极限是什么?比如,网络要中断到什么程度,系统才会停止运行?

杨传辉:数据中心之间的网络被挖断的那个时候,实际上,两个数据中心之间还有一条冗余的网络连接。但不巧的是,这两条光缆同时都被切断了。也是因为这件事,支付宝意识到,仅仅具备数据中心级别的容灾是不够的,我们必须具备城市级别的灾难恢复能力。

Ryan:这是一种防患于未然的手段。当你拥有一个庞大的交易型数据库时,你必须为任何可能性做好准备。

我们刚才一直在讨论交易型数据库,我们看到很多数据库之间是存在差异的,比如,一些生产数据库被用于实时记录事务信息;还有一些庞大的数据湖,存储所有用于分析的数据,后者通常位于 ETL 流程的末端。你觉得有没有办法弥合这种差距,让所有数据都实时存储在同一个数据库中?

杨传辉:当然。我认为这里有两大阵营:OLTP(在线事务处理)和 OLAP(在线分析处理)。OLTP 用于支持高并发事务,强调强一致性、ACID 特性;而 OLAP 用于支持复杂的数据分析和报表。将 OLTP 和 OLAP 结合起来非常困难,因为这两种工作负载的要求截然不同。

通常,我们需要使用行存来处理 OLTP 工作负载,使用列存来处理 OLAP 工作负载,然后通过 ETL 将数据从 OLTP 传输到 OLAP。这种解决方案从开发者的角度来看非常复杂。因此,我们需要 HTAP(混合事务和分析处理),即使用一个单一的数据库同时支持 OLTP 和 OLAP。

我认为对于 HTAP 来说,分布式数据库是最佳选择。首先,分布式数据库能够处理更大规模的数据。如果我们将 OLTP 系统和 OLAP 系统合并,数据量相比之前将大幅增加。其次,分布式数据库中每一份数据都有多个副本。我们可以在主副本中使用行存来处理 OLTP,在次级副本中使用列存来处理 OLAP。只要我们有一个优秀的 SQL 优化器,就可以找到最佳方式来支持混合工作负载。

OceanBase 就是 HTAP 的一个绝佳例子,我们使用一个数据库系统和一份数据来同时支持 OLTP 和 OLAP。最初,OceanBase 主要用于 OLTP,但我们发现越来越多的用户开始将 OceanBase 应用于更多场景,比如实时 OLAP。因此,我们增强了 OLAP 能力,比如列存、并行执行、分布式 SQL 优化器,并发布了 OceanBase 4.3 版本来支持 OLAP 处理。我们还增加了许多重要的分析功能,比如全文索引、物化视图等。

举一个实际案例,有一家非常著名的餐厅叫海底捞火锅,它几乎是亚洲最有名的火锅品牌之一。原来它使用 MySQL 来处理 OLTP 工作负载,同时使用专门的分析型数据库来处理 OLAP 工作负载,并通过 ETL 将数据从 OLTP 传输到 OLAP 数据库。但这种模式下,OLTP 和 OLAP 之间存在数据延迟,可能会导致数据不一致。迁移到 OceanBase 后,我们用一份数据同时处理 OLTP 和 OLAP 工作负载,消除了数据延迟和数据不一致的问题,此外,还将总体拥有成本(TCO)降低了 40% 以上。

Ryan:这真是令人印象深刻的成果。如果不将它们整合在一起,显然你需要为两个不同的数据库付费,还得维护数据管道。那么,OceanBase 的 HTAP 需要对数据进行某种转换吗?还是这一切都是自动完成的?

杨传辉:确实如此。如果不使用 HTAP,像你刚才说的,就需要两套系统、两份数据,整个过程非常复杂。而在 OceanBase 中,所有 OLTP 和 OLAP 功能都被整合到了一个统一的系统里。并且对于用户来说,无论是 OLTP 还是 OLAP 的 SQL 处理,都是完全自动化的。用户无需关心哪些是 OLTP,哪些是 OLAP,这一切都由我们的 SQL 优化器自动完成。

Ryan:如今谈到数据,就不得不提到 AI,因为 AI 需要处理海量数据。那么,OceanBase 是如何融入当下的生成式 AI 浪潮中的呢?

杨传辉:我认为“SQL + AI”是未来的趋势。OceanBase 的愿景是打造一个统一的分布式数据库,可以处理各种类型的工作负载,包括 OLTP、OLAP 和 AI。在 AI 时代,我们需要向量数据库。目前主要有两种类型:一种是独立的向量数据库,另一种是带有向量插件的通用数据库,也就是“SQL + AI”。后者在传统 SQL 数据库的基础上引入了向量存储和处理能力。我认为,带有向量插件的通用数据库是未来的发展方向。OceanBase 在 2024 年 10 月,也就是去年,正式发布了向量能力。

AI 时代数据库的另一个技术趋势是混合搜索,即同时支持 SQL、NoSQL 和向量等多种数据模型。例如,当你想搜索一家“距离最近、评分最高且环境干净”的餐厅时,这个查询实际上同时涉及了多种数据模型:距离信息可能需要 GIS 数据,评分涉及结构化数据,而关于环境的评价则需要通过向量相似性搜索来实现。因此,如果能在通用数据库的基础上支持向量功能,就可以通过一个 SQL 查询实现混合搜索。我认为这将大大简化 AI 技术栈,帮助企业更快地进行 AI 应用开发。

在支付宝,我们也有许多应用团队正在为各种场景开发 AI 代理,最初,他们可能会同时使用独立的 SQL 数据库和独立的向量数据库。但在 OceanBase 支持混合搜索功能后,他们的所有工作负载都迁移到了 OceanBase,因为这比以前更容易操作,也更高效。

Ryan:是的,现在许多生成式 AI 应用都在朝着检索增强生成的方向发展,也就是为生成的内容提供参考文本。这需要将向量与大量其他类型的数据库存储技术相结合。

杨传辉:没错,这已经成为现实,我认为 AI 时代已经到来。

Ryan:没错,AI 时代已经到来。那么,关于 OceanBase 的未来,你最期待的是什么呢?

杨传辉:我非常期待 OceanBase 在一体化数据库的产品路线上继续发展,将 OLTP、OLAP 和 AI 整合在一起。这将使应用开发者的工作变得更加轻松,尤其是在 AI 时代。如果我们将各种类型的工作负载整合到一个系统中,数据量将比以前大幅增加。因此,我们需要分布式数据库,而且不仅仅是一个简单的分布式数据库,而是一个功能强大的分布式数据库。它需要能够处理各种类型的工作负载,具备高性能、低成本、高可用性和可扩展性等特点。我认为这些需求与 OceanBase 的发展路线和产品能力是一致的。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小结:计算机网路中的性能指标小结

发现B站的这套课程不错,开始学习并笔记之:计算机网络微课堂(有字幕无背景音乐版)_哔哩哔哩_bilibili 1) 速率 2) 带宽 3) 吞吐量 带宽1 Gb/s的以太网,代表其额定速率是1 Gb/s,这个数值也…

seasms v9 注入漏洞 + order by注入+​information_schema​解决方法

目录 一、当注入时,information_schema被禁用的解决方法 1.通过sys库可以获取到表名和库名 2.通过无列名注入join获取列名 二、seasms v9 注入漏洞 三、order by注入 一、当注入时,information_schema被禁用的解决方法 information_schema数据库是My…

FFmpeg-chapter2-C++中的线程

1 常规的线程 一般常规的线程如下所示 // CMakeProject1.cpp: 定义应用程序的入口点。 //#include "CMakeProject1.h" #include <thread> using namespace std;void threadFunction(int index) {for (int i 0; i < 1000; i){std::cout << "Th…

【华三】从零开始掌握SR技术:原理、架构与应用全解析

【华三】从零开始掌握SR技术&#xff1a;原理、架构与应用全解析 一、初识SR&#xff1a;路由技术的新革命1.1 传统网络的困扰&#xff1a;从真实案例看技术瓶颈1.1.1 企业网络运维之痛问题2&#xff1a;流量工程实现困难问题3&#xff1a;网络智能化缺失 1.2 SR的诞生意义&…

CogBlobTool工具

CogBlobTool是一款专用于图像斑点检测于分析的 工具&#xff0c;通过灰度值阈值分割和特征过滤&#xff0c;帮助在复杂背景中提取目标区域&#xff0c;并计算几何属性。 效果图 注意&#xff1a;在这里只有一张图像可以不使用模板匹配工具 CogBlobTool工具的功能 斑点检测于…

大模型应用案例 | 大模型+金融运维,擎创携手某证券创新运维能力新范式

一、当大模型遇上金融运维&#xff1a;一场让告警处理“脱胎换骨”的变革 2022年底&#xff0c;ChatGPT的横空出世让AI技术彻底出圈&#xff1b;短短两年后&#xff0c;大模型已悄然潜入金融行业的“心脏地带”——运维系统。面对指数级暴增的告警信息、碎片化的处理流程&#…

Linux三种网络方式

前言 发现运维啥都得会&#xff0c;这周就遇到了网络问题自己无法解决&#xff0c;因此痛定思痛学一下。 参考文献 你管这破玩意叫网络&#xff1f; 桥接模式、NAT模式、仅主机模式&#xff0c;原来是这样工作的 交换机 构成局域网&#xff0c;实现所有设备之间的通信。 …

基于PHP和MySQL的用户登录注册系统实现

系统架构 系统采用前后端分离的架构&#xff0c;使用PHP作为后端语言&#xff0c;MySQL作为数据库。以下是系统的整体架构图&#xff1a; 这个架构图展示了系统的三个主要层次&#xff1a; 前端界面层&#xff1a;包含用户交互的三个页面&#xff08;注册、登录和欢迎页面&am…

脚本无法获取响应主体(原因:CORS Missing Allow Credentials)

背景&#xff1a; 前端的端口号8080&#xff0c;后端8000。需在前端向后端传一个参数&#xff0c;让后端访问数据库去检测此参数是否出现过。涉及跨域请求&#xff0c;一直有这个bug是404文件找不到。 在修改过程当中不小心删除了一段代码&#xff0c;出现了这个bug&#xff0…

【计网】计算机网络概述

第一章 计算机网络概述 1.2 因特网概述1.2.1 网络、互联网和因特网1.2.2 因特网发展的三个阶段1.2.3 因特网的标准化工作1.2.4 因特网的组成 1.3 三种交换方式1.3.1 电路交换1.3.2 分组交换1.3.3 报文交换1.3.4 三种交换的对比 1.4 计网的定义与分类1.4.1 定义1.4.2 分类 1.5 计…

前端依赖nrm镜像管理工具

npm 默认镜像 &#xff1a;https://registry.npmjs.org/ 1、安装 nrm npm install nrm --global2、查看镜像源列表 nrm ls3、测试当前环境下&#xff0c;哪个镜像源速度最快。 nrm test4、 切换镜像源 npm config get registry # 查看当前镜像源 nrm use taobao # 等价于 npm…

LinkedList与链表

目录 1、链表 2、实现自己的链表 (不带头结点) 2.1、遍历链表 2.2、求链表长度 2.3、判断链表是否包含关键字 2.4、插入节点 2.5、任意位置插入一个节点 2.6、删除一个节点 2.7、删除所有值为key的节点 2.8、清空所有节点 1、链表 链表是一种物理结构上不连续的存储结…

StableDiffusion打包 项目迁移 项目分发 1

文章目录 SD项目迁移前置知识webui-user.batwebui.batlaunch_utils.py 下一篇开始实践 SD项目迁移 显卡驱动更新&#xff1a;https://www.nvidia.cn/geforce/drivers/ 下载安装三个程序&#xff1a; python3.10.6: https://www.python.org/downloads/release/python-3106/gi…

架构案例:从初创互联网公司到分布式存储与反应式编程框架的架构设计

文章目录 引言一、初创互联网公司架构演化案例1. 万级日订单级别架构2. 十万级日订单级别架构3. 百万级日订单级别架构 二、分布式存储系统 Doris 架构案例三、反应式编程框架架构案例总结 引言 分布式架构 今天我们将探讨三种不同类型的架构案例&#xff0c;分别探讨 一个初…

Xshell客户端免费版无需注册Linux连接客户端8.0详细安装教程(2025年最全最详细的图文教程)附安装包

目录 关联链接 前言 一、下载安装程序 二、安装Xshell客户端 1.启动安装 2.下一步 3.许可协议 4.安装目录 5.开始安装 6.安装完成 7.免费许可 8.大功告成&#xff01; 关联链接 Xftp免费客户端安装教程&#xff1a;https://blog.csdn.net/xiaoguo1001/article/detai…

electron多进程通信

进程间通信 | Electron 进程间通信 (IPC) 是在 Electron 中构建功能丰富的桌面应用程序的关键部分之一。 由于主进程和渲染器进程在 Electron 的进程模型具有不同的职责&#xff0c;因此 IPC 是执行许多常见任务的唯一方法&#xff0c;例如从 UI 调用原生 API 或从原生菜单触发…

登录日志管理:通用分页和排序封装、 查询登录日志列表、删除登录日志、清空登录日志、解锁用户登录状态(解锁密码错误次数超限)

文章目录 引言I 登录日志管理接口列表II 通用分页和排序封装Java 分页和排序封装vue前端排序页面III 工具类字段名转换 : 驼峰转下划线命名引言 I 登录日志管理 接口列表 import request from @/utils/request// 查询登录日志列表 export function list(query) {return

基于MATLAB红外弱小目标检测MPCM算法复现

摘要&#xff1a;本文详细介绍了一种基于人类视觉系统特性的红外弱小目标检测算法——Multiscale patch-based contrast measure (MPCM)。该算法通过增强目标与背景的对比度&#xff0c;有效检测红外图像中的弱小目标&#xff0c;并在MATLAB环境中进行了复现与实验验证。 关键…

Flutter系列教程之(8)——CheckBox多选框及动态更改多选框

目录 1.星级组件使用 2.多选框使用及数据更改 3.完整源码 最近项目需求需要调整页面,记录一下实现过程 这次主要是要实现个评价页面,选择不同的星级显示不同的多选框数据,加上之前也没有使用过CheckBox,今天便是一起讲吧 1.星级组件使用 首先,我们有使用到星级评分组件 在p…

神经网络|(十一)|神经元和神经网络

【1】引言 前序已经了解了基本的神经元知识&#xff0c;相关文章链接为&#xff1a; 神经网络|(一)加权平均法&#xff0c;感知机和神经元-CSDN博客 神经网络|(二)sigmoid神经元函数_sigmoid函数绘制-CSDN博客 神经网络|(三)线性回归基础知识-CSDN博客 把不同的神经元通过…