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

【弹性计算】弹性计算的技术架构

弹性计算的技术架构

  • 1.工作原理
  • 2.总体架构
  • 3.控制面
  • 4.数据面
  • 5.物理设施层

虽然弹性计算的产品种类越来越多,但不同产品的技术架构大同小异。下面以当前最主流的产品形态 —— 云服务器为例,探查其背后的技术秘密。

1.工作原理

云服务器通常以虚拟机的方式提供给用户,在创建后被称为 “实例”(Instance)。每个实例至少需要一个块存储设备作为 系统盘,用来安装操作系统镜像,同时也可以搭载更多的块存储设备作为数据盘。弹性计算一般推荐使用 “云盘” 形态的虚拟块存储设备,因为它更加可靠和灵活。实例还需要通过虚拟的 “弹性网卡” 连接到虚拟网络交换机上,从而加入用户的 VPCVirtual Private Cloud虚拟专有网络)中与外部通信。下图描绘了云服务器的基本构成。

在这里插入图片描述
云服务器中包括虚拟机、虚拟的 “云盘” 和虚拟的 “弹性网卡” 等。很显然,“虚拟化” 是云服务器的基础技术,包括 计算虚拟化存储虚拟化网络虚拟化。虚拟化的基本原理是用软件将物理设备分隔成多个逻辑分片,这些分片提供与物理设备相同的接口和能力,相互不感知,从而实现 “虚拟” 的设备。这些虚拟设备与物理设备之间是多对一、多对多甚至一对多的关系。正是依靠虚拟化技术,弹性计算才能将物理资源池化,然后按照用户的需求动态地虚拟出大小不一的设备,灵活地提供给用户使用。

  • 计算虚拟化 技术的核心部件被称为 虚拟机管理器Hypervisor),它实现了对物理服务器的 CPU、内存等资源的分片,即把这些资源切分成多份,并将每一份模拟成标准的 CPU、内存等设备,变成一台虚拟的服务器,即虚拟机,如下图所示。每一台虚拟机可以运行自己的操作系统,并在逻辑上与运行在同一台物理服务器上的其他虚拟机完全隔离,不能互相访问彼此的数据。Hypervisor 还可以控制每台虚拟机能够使用的物理资源的性能容量,例如 CPU 时钟周期、内存大小等,从而实现虚拟机之间的性能隔离。主流的 Hypervisor 包括 XenKVM 等。

在这里插入图片描述

  • 存储虚拟化 采用当前最流行的计算和存储分离的架构,如下图所示,用池化的存储服务器提供虚拟的云盘,而计算服务器上的虚拟机则通过网络来访问这些云盘。存储虚拟化首先利用软件把多个存储服务器上的存储介质(例如 SATA 硬盘或者 SSD 盘)联合起来,形成一个巨大的存储资源池;然后把每个云盘需要存储的数据切分成一个个小块,并按照一定的映射规则分散存储到资源池的存储介质中,提升访问性能;最后将每个小块冗余存储在多个独立的物理介质中,实现极高的可靠性。

在这里插入图片描述

  • 网络虚拟化 一般采用 SDNSoftware Defined Network软件定义网络)的方式实现,解决云数据中心网络支持多租户同时使用的问题。用户可以在云上创建 VPC,相当于传统的自建数据中心网络,但是其中的网卡、交换机、路由器等网络设备变成了逻辑设备,一般通过软件技术来实现。不同的 VPC 之间是完全隔离的,除非经过特殊的互联授权,否则无法互相访问。一个 VPC 可以包含一台或多台虚拟网络交换机,每台虚拟网络交换机对应一个网络地址段资源,这些交换机之间通过路由器实现互联互通。而云服务器的网卡在创建时需要指定连接到某台虚拟交换机上,从中分配相应的地址资源,这样该云服务器就可以与同一个 VPC 中的其他云服务器进行通信了。网络虚拟化的多租户隔离逻辑可以通过网络的覆盖(Overlay)技术实现,就像在物理网络中构建出了一个个互相隔离的隧道:虚拟机使用虚拟网卡发出的数据包会被重新封装并加上虚拟网络的信息,然后根据虚拟网络的拓扑发送到目标物理服务器上;目标物理服务器在解包后,根据其携带的虚拟网络信息转发给相应的虚拟机。

2.总体架构

计算、存储和网络的虚拟化技术只是弹性计算整体技术栈的冰山一角。我们可以从一台云服务器的创建过程来探讨一下弹性计算背后的技术,如下图所示。

  • 请求创建示例:用户创建实例的请求会被 Open API 层接收。
  • 分配服务器:该请求被传递给管控系统。管控系统相当于弹性计算的神经系统,需要执行大量的业务逻辑,比如售卖逻辑、约束校验、库存检查等;并在计算服务器的资源池中挑选一台合适的服务器来 “安顿” 新的虚拟机实例,这个决策是由一个高度复杂的调度子系统来完成的。
  • 创建实例:管控系统正式发起新实例的创建,将命令发送给计算虚拟化、存储虚拟化和网络虚拟化的管控子系统。
  • 资源虚拟化:网络资源和云盘创建就绪后,被选中的服务器上的 Hypervisor 创建虚拟机,挂载云盘,同时创建一张弹性网卡将该虚拟机接入指定的 VPC 中。至此,这台云服务器实例就创建好了。

在这里插入图片描述
创建 只是虚拟机生命周期中的一小步,之后的 运行重启迁移变配运维 等数十种操作,无不依赖弹性计算背后所集成的大量技术。下图描绘了弹性计算的整体技术架构。下面就以 控制面数据面 两个切面来展开介绍,引出其中的关键技术。

在这里插入图片描述

3.控制面

弹性计算的控制面管理着每个实例的生命周期,它暴露给用户的接触面通常包含 Open API 及基于 API 构建的 Web 控制台CLI 命令行 工具,除简单的管控操作外,还支持实例的迁移、部署、运维和伸缩等。用户可以通过直接使用这些工具或者第三方生态包装过的工具来管理其所购买的实例。

在用户可见的管理界面和工具的背后,是弹性计算的核心管控技术,实现了实例生命周期管理、资源调度、库存闭环和主动运维等,对弹性计算的性能提升至关重要,特别是弹性、成本和稳定性。

下面列举弹性计算在控制面上的关键技术。

  • 弹性伸缩技术。弹性伸缩技术允许用户配置触发的伸或者缩的规则,例如基于时间的规则、基于性能指标的规则等。预测式伸缩技术是利用机器学习来发现用户应用的负载变化规律、预测未来走势,并根据这个走势提前调整计算资源的规模,从而将弹性伸缩技术从自动化演进到智能化。
  • 库存闭环技术。弹性是一种供应能力,云服务提供商如何做到让用户无限索取的同时保证自身库存成本最优,是一件极具挑战的事情。库存闭环技术通过打通资源的售卖、跟踪、分析、预测、下单、生产、提货、上架、部署、上线等整条链路的闭环,以及自动化的产品转换、跨 IDC 产品平衡等库存调配,建立数据化、可视化、自动化、智能化和精细化的库存管理体系,从而提升资源利用率和弹性保障能力。
  • 资源调度技术。资源调度技术旨在分配合适的服务器给用户提供所需的计算或存储资源,而且这种分配可以随着变化来动态调整,以保障用户应用的高可用性和稳定性。弹性计算的服务器资源池通常包含很多版本和种类均不同的服务器,而产品规格也多达上百种,再加上用户的实际工作负载特征各异,如重 CPU、重存储 I/O、重网络等,有些负载持续稳定,而有些负载规律波动。资源调度技术通过一次在线调度和二次离线调度,可达到避免争抢、减少闲置、缩小宕机影响面的目的,让整个系统在性能、成本和稳定性上达到平衡。
  • 异常检测和预测技术。硬件的故障和软件的缺陷是不可避免的,通过对异常的检测和预测,实现及时补救,可以大大降低甚至避免故障带来的影响,从而提高弹性计算产品的稳定性,特别是可用性。异常检测,首先需要识别故障相关的关键指标,然后依托于精细、实时的监控和分析技术,及时发现异常,从而触发系统快速做出反应。而异常预测,则通过启发式规则、机器学习等技术,基于监控数据提前预知和规避可能的故障。阿里云弹性计算云服务器产品的单实例可用性能达到 99.975%,异常检测和预测技术功不可没。
  • 热迁移技术。热迁移技术能把一台运行中的实例或云盘从一个物理位置转移到另一个物理位置,同时不影响其运行,是支持库存优化、故障规避、轮转升级等场景的关键技术。它的难度堪比给飞行中的飞机更换引擎。热迁移实现的基本原理是把实例的状态从源服务器拷贝到目标服务器,由于在拷贝过程中实例的状态还在不断变化,所以在做最后的切换时需要暂停实例,并把新产生的变化再同步一次,然后完成切换,唤醒实例继续运行。热迁移云盘的做法与之类似,Post-copy 这种方式更好。无论哪种方式,降低对运行中的实例的性能影响,甚至做到 “无感” 都是重大挑战。

4.数据面

弹性计算的数据面直接支撑着用户应用的运行,它暴露给用户的标准接口是 x86 服务器及其上运行的客户机操作系统(Guest OS)。这里有弹性裸金属服务器、虚拟机和弹性容器三种产品形态上的选择,而专有宿主机则给了用户独占物理服务器来运行虚拟机或容器实例的选项。

实现这些产品形态的核心技术是虚拟化技术;随着云原生应用的蓬勃发展,更轻量的安全沙箱技术也正变得日益重要。

下面列举弹性计算在数据面上的关键技术。

  • 客户机操作系统。客户机操作系统是弹性计算数据面上的主要接口,为用户的应用提供标准化的运行环境。弹性计算一般提供主流操作系统的镜像,其中包含适配底层的虚拟化和物理硬件所做的定制和优化。为了让这些定制和优化更加极致地为用户提供卓越的性能和体验,领先的云服务提供商都会推出自己的操作系统发行版,例如阿里云就推出了 Aliyun Linux。通过剪裁不必要的功能、模块和软件,针对自身的物理硬件和虚拟化技术做定向的优化,再搭载其特有的增值能力,例如安全加固和可服务性提升工具,Aliyun Linux 已成为阿里云弹性计算技术栈上重要的一环。
  • 软硬一体的虚拟化平台。虚拟化是弹性计算数据面上的核心技术,经历了几代技术变迁,最新一代已经演进到了软硬一体的虚拟化平台,例如阿里云的 神龙计算平台。该技术通过专用的硬件将原来在物理机上运行的网络、存储、管控等负载,完全下沉到定制的计算节点上并进行硬件加速,性能更好;而主机侧运行高度定制和 “瘦身” 的 QEMU 及 KVM 的虚拟机管理程序,使得物理机上的资源可以最大限度地被释放并用于售卖。
  • 异构资源虚拟化。异构计算加速是近年来的热点技术之一,被认为是处理多媒体、大数据和机器学习的利器,目前主要形态包括 GPU、FPGA 和 NPU 等。早期的异构计算走硬件直通的路线,随着 GPU SR-IOV 虚拟化和分片虚拟化技术的支持,vGPU 已经成为现实。FPGA 虚拟化技术更加复杂,不仅依赖 CPU 和系统软件虚拟化,还依赖 FPGA 的逻辑编程硬件抽象接口 Shell 实现硬件虚拟化的能力。而实现这些异构计算能力的池化是未来的重要技术发展方向,可进一步提高异构资源部署的灵活性和利用率。
  • 超高速云盘。云盘是云服务器常用的块存储设备形态,具备高可用、高持久、易运维、使用灵活等诸多优点。如何让云盘具备可以与本地盘媲美的高吞吐和低延时,则颇具挑战。例如阿里云的 ESSD 云盘基于计算和存储分离架构,存储端使用自研的分布式文件存储系统,而计算端采用多线程多队列轮询(Polling),VHost-User 新一代 I/O 虚拟化,软硬一体化的高性能用户态网络协议栈服务等机制,实现了超高 IOPS 、超低时延的云盘,为 I/O 密集型应用提供了一个更好的选择。
  • VPC 网络虚拟化。VPC 相当于一套虚拟的数据中心网络。如何实现同时具备强隔离、高性能、高可用和可扩展的虚拟网络,是一项巨大的技术挑战。以阿里云自研的 洛神系统(注:虚拟网络管理系统)为例,其控制面具备超大规模虚拟网络管理能力,用户通过 API 能够进行网络实时变配,秒级响应业务流量的弹性伸缩;洛神系统的数据面基于软硬件协同技术,具备高吞吐、低延迟的特点,使得云服务器的网络性能能够与物理机相媲美。另外,洛神系统基于数据驱动的管理平面能够自动分析和定位链路故障,通过冗余链路实施秒级容灾切换,在网络可用性指标上相比物理机具有更大优势。
  • 轻量级安全沙箱。轻量级安全沙箱为云原生应用而生,启动快、资源占用少,且安全隔离性好,是运行在容器上的应用的最佳选择。目前社区中存在多种技术路线,例如基于 Kata Containers 的 Micro VM 方案、基于进程虚拟化的 gVisor 方案,以及基于 Unikernel 的方案。阿里云的弹性容器实例就是运行在自研安全沙箱中的。这项技术充分利用了虚拟化层的技术和能力,并可对垂直业务场景实现端到端优化,是阿里云面向云原生时代的关键基础技术。

5.物理设施层

弹性计算依赖大量物理设施和硬件,包括物理网络、数据中心、芯片和服务器等,每一个领域都涉及众多关键技术,例如物理网络中的自研交换机和网络协议,数据中心的选址、整机柜设计、弹性功耗调度、液冷,芯片中的厂商定制、自研芯片,服务器中的自研 L6 设计等,此处不再展开。

相关文章:

【弹性计算】弹性计算的技术架构

弹性计算的技术架构 1.工作原理2.总体架构3.控制面4.数据面5.物理设施层 虽然弹性计算的产品种类越来越多,但不同产品的技术架构大同小异。下面以当前最主流的产品形态 —— 云服务器为例,探查其背后的技术秘密。 1.工作原理 云服务器通常以虚拟机的方…...

RAG(检索增强生成)落地:基于阿里云opensearch视线智能问答机器人与企业知识库

文章目录 一、环境准备二、阿里云opensearch准备1、产品文档2、准备我们的数据3、上传文件 三、对接1、对接文本问答 一、环境准备 # 准备python环境 conda create -n opensearch conda activate opensearch# 安装必要的包 pip install alibabacloud_tea_util pip install ali…...

【踩坑】pytorch模型导出部署onnx问题记录

问题1:repeat_interleave 无法转译 具体报错为: TypeError: torch._C.Value object is not iterable (Occurred when translating repeat_interleave).原因是我的模型代码中有: batch_indices torch.repeat_interleave(torch.arange(can…...

利用prompt技术结合大模型对目标B/S架构软件系统进行测试

利用prompt技术结合大模型对目标B/S架构软件系统进行测试,可参考以下步骤和方法: 测试需求理解与prompt设计 明确测试点:梳理B/S架构软件系统的功能需求、非功能需求(如性能、安全性、兼容性等),确定具体的测试点,如用户登录功能、数据查询功能、系统响应时间要求等。设…...

DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗?

DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗? 文章目录 DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗?一、引言1. 背景2. 问题 二、DeepSeek vs ChatGPT:谁更胜一筹?2.1 语言生成能力评测对比场景…...

基于ollama搭建本地deepseek大模型服务

基于ollama搭建本地deepseek大模型服务 简介准备工作系统要求ollama的安装ollama 模型ollama 安装流程ollama 如何运行大模型前端部署注意事项简介 本指南旨在帮助初学者在本地环境中设置和运行DeepSeek大模型服务。本文将使用Ollama平台来简化这一过程,确保即使是新手也能顺…...

elementUI rules 判断 el-cascader控件修改值未生效

今天修改一个前端项目,增加一个多选字段,使用的是el-cascader控件,因页面是通过引用子页面组件形式使用,出现一个点选后再勾选原有值,输入框内不展示或取消后的也未正常隐藏,如果勾选的值是全新的则其他已选…...

讯方·智汇云校华为授权培训机构的介绍

官方授权 华为授权培训服务伙伴(Huawei Authorized Learning Partner,简称HALP)是获得华为授权,面向公众(主要为华为企业业务的伙伴/客户)提供与华为产品和技术相关的培训服务,培养华为产业链所…...

力扣-二叉树-257 二叉树的所有路径

思路 除去根节点&#xff0c;每一层添加->val&#xff0c;然后使用前序遍历的顺序 代码 class Solution { public:vector<string> res;void getTreePaths(string s, TreeNode* root){s "->";s to_string(root->val);if(root->left nullptr &…...

DeepSeek4j 已开源,支持思维链,自定义参数,Spring Boot Starter 轻松集成,快速入门!建议收藏

DeepSeek4j Spring Boot Starter 快速入门 简介 DeepSeek4j 是一个专为 Spring Boot 设计的 AI 能力集成启动器&#xff0c;可快速接入 DeepSeek 大模型服务。通过简洁的配置和易用的 API&#xff0c;开发者可轻松实现对话交互功能。 环境要求 JDK 8Spring Boot 2.7Maven/Gr…...

Vue.js 组件开发深入解析:Vue 2 vs Vue 3

Vue.js 是一个渐进式框架&#xff0c;旨在通过声明式渲染和组件化开发来提高开发效率和可维护性。组件是 Vue 应用的基本组成部分&#xff0c;几乎所有的功能都可以通过组件来实现。随着 Vue 3 的发布&#xff0c;Vue.js 引入了许多新的特性&#xff0c;使得组件的开发变得更加…...

MySQL数据库误删恢复_mysql 数据 误删

2、BigLog日志相关 2.1、检查biglog状态是否开启 声明: 当前为mysql版本5.7 当前为mysql版本5.7****当前为mysql版本5.7 2.1.1、Navicat工具执行 SHOW VARIABLES LIKE LOG_BIN%;OFF 是未开启状态&#xff0c;如果不是ON 开启状态需要开启为ON。{默认情况下就是关闭状态} 2.…...

PHP 基础介绍

PHP 学习资料 PHP 学习资料 PHP 学习资料 PHP 是一种广泛使用的开源服务器端脚本语言&#xff0c;尤其适合 Web 开发&#xff0c;能轻松嵌入 HTML 中&#xff0c;生成动态网页内容。接下来&#xff0c;让我们一起了解 PHP 的基础内容。 一、PHP 的安装与配置 在开始编写 PH…...

避雷,Ubuntu通过ollama本地化部署deepseek,open-webui前端显示

0.如题&#xff0c;预期在Ubuntu上本地化部署DeepSeek&#xff0c;通过浏览器访问达到chatgpt的对话效果。 1.裸机&#xff0c;安装Ubuntu。 原有的系统盘采用大白菜&#xff0c;下载24.04.1的镜像&#xff0c;插到电脑上&#xff0c;无法识别&#xff0c;重新查到笔记本&…...

package.json 文件配置

创建 Node.js 的配置文件 package.json npm init -y package.json 文件配置说明 配置说明示例name指定项目的名称&#xff0c;必须是小写字母&#xff0c;可以包含字母、数字、连字符&#xff08;-&#xff09;或下划线&#xff08;_&#xff09;&#xff0c;不能有特殊字符…...

Managed Lustre 和 WEKA:高性能文件系统的对比与应用

Managed Lustre 和 WEKA&#xff1a;高性能文件系统的对比与应用 1. 什么是 Managed Lustre&#xff1f;主要特点&#xff1a;适用场景&#xff1a; 2. 什么是 WEKA&#xff1f;主要特点&#xff1a;适用场景&#xff1a; 3. Managed Lustre 和 WEKA 的对比4. 如何选择 Managed…...

【matlab】大小键盘对应的Kbname

matlab中可以通过Kbname来识别键盘上的键。在写范式的时候&#xff0c;遇到一个问题&#xff0c;我想用大键盘上排成一行的数字按键评分&#xff0c;比如 Kbname(1) 表示键盘上的数字1&#xff0c;但是这种写法只能识别小键盘上的数字&#xff0c;无法达到我的目的&#xff0c;…...

Python实现从SMS-Activate平台,自动获取手机号和验证码(进阶版2.0)

前言 本文是该专栏的第52篇,后面会持续分享python的各种干货知识,值得关注。 在本专栏之前,笔者在文章《Python实现SMS-Activate接口调用,获取手机号和验证码》中,有详细介绍基于SMS-Activate平台,通过python来实现自动获取目标国家的手机号以及对应的手机号验证码。 而…...

HCIA项目实践--静态路由的拓展配置

7.7 静态路由的拓展配置 网络中的两个重要思想&#xff1a; &#xff08;1&#xff09; 实的不行来虚的&#xff1b; &#xff08;2&#xff09; 范围太大&#xff0c;划分范围。&#xff08;分治&#xff09; 7.7.1 负载均衡 &#xff08;1&#xff09;定义 负载均衡是一种网…...

缓存三大问题及其解决方案

缓存三大问题及其解决方案 1. 前言 ​ 在现代系统架构中&#xff0c;缓存与数据库的结合使用是一种经典的设计模式。为了确保缓存中的数据与数据库中的数据保持一致&#xff0c;通常会给缓存数据设置一个过期时间。当系统接收到用户请求时&#xff0c;首先会访问缓存。如果缓…...

Unity崩溃后信息结合符号表来查看问题

目录 SO文件符号表对调试和分析的重要性调试方面分析方面 错误数据安装Logcat解释符号表设置符号文件路径生成解析 相关参考 SO文件 so 文件&#xff08;Shared Object File&#xff0c;共享目标文件&#xff09;和符号表紧密相关&#xff0c;它们在程序的运行、调试和分析过程…...

C#的DataTable类精简汇总

目录 一、DataTable概述 1.创建 DataTable 2.添加行 3.修改行 4.删除行 5.查询行 6.排序行 7.合并 DataTable 8.克隆 DataTable 9.复制 DataTable 10.使用 DataView 过滤和排序 11.使用 DataTable 的事件 12.使用 DataTable 的约束 13.使用 DataTable 的表达式列 …...

DeepSeek官方发布R1模型推荐设置

今年以来&#xff0c;DeepSeek便在AI领域独占鳌头&#xff0c;热度一骑绝尘。其官方App更是创造了惊人纪录&#xff0c;成为史上最快突破3000万日活的应用&#xff0c;这一成绩无疑彰显了它在大众中的超高人气与强大吸引力。一时间&#xff0c;各大AI及云服务厂商纷纷投身其中&…...

STM32 ADC介绍(硬件原理篇)

目录 背景 AD转换器 采样与保持 量化 编码 AD转换器转换原理 DA转换原理 AD转换原理 1.逐次逼近型AD转换器 2.并联比较型AD转换器 编码器 同步D触发器和边沿D触发器 基本RS触发器 同步RS触发器 同步D触发器 边沿型D触发器&#xff08;维持-阻塞D触发器&#xff…...

pytest测试专题 - 1.2 如何获得美观的测试报告

<< 返回目录 1 pytest测试专题 - 1.2 如何获得美观的测试报告 1.1 背景 虽然pytest命令的报文很详细&#xff0c;用例在执行调试时还算比较方便阅读和提取失败信息&#xff0c; 但对于大量测试用例运行时&#xff0c;可能会存在以下不足 报文被冲掉测试日志没法归档 …...

Bash 中的运算方式

目录 概述&#xff1a; 1. (()) 运算符 2. let 命令 3. expr 命令 4. $[] 直接运算 5. bc&#xff08;计算器&#xff0c;支持浮点数&#xff09; 6. awk&#xff08;强大的文本处理工具&#xff0c;也可计算&#xff09; 概述&#xff1a; Bash 本身只支持整数运算&am…...

linux 板子的wifi模块连上路由器后,用udhcpc给板子wifi分配ip,udhcpc获取到ip,但没有写入wlan0网卡上

linux 板子的wifi模块连上路由器后&#xff0c;用udhcpc给板子wifi分配ip&#xff0c;udhcpc获取到ip,但没有写入wlan0网卡上 这里的问题是 /usr/share/udhcpc/default.script脚本有问题 用下面正确脚本&#xff0c;即可写进去 #!/bin/sh# udhcpc script for busybox # Copyr…...

超纯水设备的智能化控制系统为用户带来安全简便的操作体验

随着信息技术的发展&#xff0c;智能化已经成为工业装备的重要发展方向之一。超纯水设备在这方面也走在了前列&#xff0c;配备了高性能的PLC控制系统及人机交互界面&#xff0c;实现了全方位的智能监控和自动化操作。本文将重点介绍该设备的智能化控制系统&#xff0c;探讨它如…...

性格测评小程序03搭建用户管理

目录 1 创建数据源2 搭建后台3 开通权限4 搭建启用禁用功能最终效果总结 性格测评小程序我们期望是用户先进行注册&#xff0c;注册之后使用测评功能。这样方便留存用户的联系信息&#xff0c;日后还可以推送对应的相关活动促进应用的活跃。实现这个功能我们要先创建数据源&…...

Linux-C/C++《七、字符串处理》(字符串输入/输出、C 库中提供的字符串处理函数、正则表达式等)

字符串处理在几乎所有的编程语言中都是一个绕不开的话题&#xff0c;在一些高级语言当中&#xff0c;对字符串的处理支 持度更是完善&#xff0c;譬如 C、 C# 、 Python 等。若在 C 语言中想要对字符串进行相关的处理&#xff0c;譬如将两个字符串进行拼接、字符串查找、两个…...