河南移动:核心营业系统稳定运行超300天,数据库分布式升级实践|OceanBase案例
河南移动,作为电信全业务运营企业,不仅拥有庞大的客户群体和业务规模,还引领着业务产品与服务体系的创新发展。河南移动的原有核心营业系统承载着超过6000万的庞大用户量,管理着超过80TB的海量数据,因此也面临着数据规模急剧扩张与业务连续性要求高的双重挑战,对数据库的分布式升级显得尤为迫切。在全方位综合评估后,河南移动选择了OceanBase作为其核心系统的分布式数据库。
在 2024 外滩大会的 OceanBase 见解论坛上,河南移动高级专家彭庆军作为嘉宾受邀分享了河南移动营业系统核心数据库分布式改造升级经验。他表示:基于自研轩辕数据总线替换方案,河南移动在两个月内完成了一套承载 1500 万用户的核心系统,从传统数据库到 OceanBase 的平滑升级,并取得运维效率显著提升、7×24 小时稳定运行的卓越成效。
1. 建设背景:新一代干架构需要新一代数据库
河南移动的现网即核心营业系统 CRM 呈数据容量大、业务并发高、连续性要求高、数据安全性高四大业务特征:
-
数据容量大。伴随着业务发展,河南移动用户数量现已突破 6000 万,其营业核心系统数据量已超过 80TB。相当于每个库拥有 1500 万用户,大约 20TB 数据。
-
业务并发高。单库日 SQL 数量超 40 亿次,日订单量 3 千万笔(含查询工单),逢月末、月初业务量峰值更加持续增长。
-
业务连续性要求高。众所周知,移动行业是涉及民生的基础通信服务,需要为用户提供 7*24h 电信级服务保障,业务中断三个小时即为重大故障。
-
数据安全性高。核心营业系统数据库存储着超 1500 万用户的敏感信息和数据,数据不能错、不能丢,且存储和访问安全要求高。
彭庆军介绍,河南移动新一代 IT 架构对数据库有七大需求:高兼容、高可靠、高性能、高扩展、高容量、高安全、高运维。
对于当时的河南移动来说,数据库改造面临成本高、访问性能低、割接风险大、替换周期长四大难题。传统的数据库替换方案主要围绕功能、性能、运维,涉及数据库和应用系统两方面,一般存在两种替换方案:一,从 Oracle 迁移到国产数据库,需要该国产数据库完全适配应用和兼容 Oracle;二,应用适配国产数据库,这是目前数据库替换采用的主流方案。
因为数据库的替换历来高风险低收益,而通过应用进行大量适配改造的换库方式等于是单程车票,不仅并行期应用存在两个版本,且上线后难以回切,一旦替换后的新库不满足要求,再次替换的难度和风险更高。有没有第三种替换方案?
基于此,河南移动开始为核心系统探寻新的数据库。根据河南移动的经验,数据库选型可以分为两个方面:一是如何评估一家数据库企业;二是如何评估一款数据库产品。
在彭庆军看来,第一要看企业的综合实力,其次是企业的研发实力,最后需要关注这个企业做的产品是“长期主义”还是“短期的功利主义”。
2. 两个月完成割接上线成效显著
河南移动从选型到上线整体周期历经 7 个月。2023 年 5 月,河南移动开启国产数据库选型,并重点关注几大国产分布式数据库;6 月,河南移动选型集团公招标中标的 OceanBase;9 月,双方团队一起确认升级改造方案;10 月,召开国产升级启动会;12 月,核心系统成功割接上线。截止 2024 年 9 月底,河南移动核心营业系统数据库已稳定运行 300 余天。
彭庆军介绍:在确认升级改造方案时,团队一直比较犹豫,因为核心系统升级至国产数据库的动作很大,担心分布式数据库上线后运行不稳,害怕没有给业务带来任何效益。基于此,河南移动调研了已经上线 OceanBase 的山东移动和江苏移动。在听取了两地的实践经验后,整个团队心里底气大增。10 月份,正式启动了核心营业系统数据库的分布式产升级之路。最终仅用两个月,当年 12 月份即完成系统上线。”
完成迁移升级之后,河南移动建设成效显著,基本总结为“一少、二快、三稳、四超”。
-
投入少。应用不改,人力、资源、成本投入少,极大降低了国产数据库替换成本。河南移动营业核心库的分布式改造和以往数据库的替换方式不同,不仅自有人员和应用开发商投入特别少,而且核心营业库的替换所需测试资源只有 OceanBase 数据库的资源,先将 OceanBase 生产库的资源做测试库,做完适配验证、性能压测觉得可行后再转为生产库,就不需要搭建一套完整的测试环境;
-
替换快。生态不变,脚本不变,免学习,替换快,大库两个月、小库一个月。河南移动有 1500 万的营业核心大库,两个月就替换完毕;
-
割接稳。风险不升,应用适配、性能测试 360 度全覆盖,生产上线后性能和上线前压测一致;
-
性能超。实现性能不降,缓存提效,连接增效,最佳配置模型,硬件加速,数据压缩比高。
营业系统核心数据库上线 OceanBase后,河南移动运行效果也比较亮眼。下图为割接前后对比,主要分为 SQL 执行性能对比和数据库性能对比。
SQL 执行性能对比显示,通过跟踪业务整体运行、高峰时段运行,对比 Oracle 与 OceanBase SQL 平均执行时长,割接上线由平均 2.515 毫秒降低为 1.626 毫秒,性能整体提升 35.35%;通过跟踪核心 CBOSS 业务运行情况,对比多天 Oracle 与 OceanBase SQL 执行时长,割接上线后由原来平均 116 毫秒降低为 114 毫秒,平均节省 2 毫秒。
数据库性能对比显示,通过总线连接收敛能力,业务连接数 10760+ 不变的情况下,使用 OceanBase 进一步将数据库活跃连接数由原来的 4765 压降至 2140 ,数据库连接收敛比提升 45.4%。替换完成后,经历多个账期测试发现,整体业务运行稳定,数据库集群的平均资源利用率从 7%-10% 提升至 12%-20%,资源利用率大大提升。
从 2023 年 12 月份至今,河南移动核心营业系统稳定运行,平稳支撑多次月初、月末的流量高峰;与此同时,数据库集群平均的资源利用率也非常稳定,较原有集中式数据库的 CPU 利用率提升 8%-9%。
3. 自研轩辕数据总线中间件产品助力数据库升级
此前,河南移动 CRM 系统数据库现网的部署架构为集中式,各个应用系统通过数据总线连到后端 Oracle,该架构共 6 个 Proxy 节点,中间通过 SAN 路由交换机连接后端的全闪存阵列,这种配置较此前 Oracle 小型机+集中的高端存储性能提升明显。
原集中式数据库共 6 个 RAC 节点,共享存储 40TB,实际使用 15TB 左右,新分布式架构将 9 个计算存储合并为一个节点,总存储量 57TB。得益于 OceanBase 的数据压缩功能,三副本架构最终实际使用 15TB 左右,总占用容量和原库基本持平。
新架构前端应用先连接轩辕数据总线,再连到后端 OceanBase,共有 12 个节点,分为三个部分,每个部分有 3 个计算与存储一体的节点,和 3 个 OCP 管理节点,从新架构可以看出将路由器和比较昂贵的高端存储进行优化后,硬件成本得到一定下降,其数据库容量也有了显著提升。通过性价比高的本地存储代替昂贵集中存储,OceanBase 全库数据压缩成效显著,告别容量焦虑。在数据库软件许可成本层面,单台 x86 主机的 License 费用仅为此前 1/50,成本也实现了大幅下降。
新分布式架构中的轩辕数据总线,作为河南移动自主研发的一款助力数据库国产升级的数据库中间件产品,以应用不改、性能不降、风险不升、生态不变为目标,通过在业务应用与数据库之间增加一层“数据总线”抽象层,将国产数据库升级中的四大难题上移至轩辕数据总线层解决,以此助力大规模高并发场景 OLTP 数据库平滑国产升级,具有“投入少、替换快、割接稳、性能超”四大优势。
-
应用不改:不仅仅 JAVA 应用不改,C、C++应用,sqlplus、sqlldr、python 脚本及配置全部不改,经过 1.5 万个以上的生产程序检验以及真实生产割接验证,实现了国产数据库无感知平滑上线的重大突破;
-
性能不降:将性能调优的关注点从关注数据库单次访问性能上升到关注业务办理每笔交易的整体性能,针对性地创造了高效缓存技术和连接收敛技术两项创新点,使交易中访问次数下降 50%,连接数减少 80%,从而实现了国产库性能下降 40%的前提下,交易性能整体不降的重大突破。
-
生态不变:针对国产库替换后开发、运维人员整体转型学习成本巨大的问题,打造了异构数据库混合组网能力和透明的数据库运维工具两项功能,新库可异构组网替换且完全继承 Oracle 技术生态,从维护脚本、告警报错、维护工具,全部访问如初,无需改变,开发、运维人员无需改变技术栈,实现了数据库升级过程中选择权提升和替换后生态不变的可持续性突破。
总的来说,基于轩辕数据总线架构,河南移动国产数据库上线分 4 个步骤:
第一步,应用接入数据总线,实现应用和数据库解耦,从总线侧获取全量生产应用 SQL;
第二步,部署国产数据库,作为生产测试库;
第三步,流量回放及测试,将 Oracle 流量引入对应国产数据库,进行兼容性和性能的适配测试;
第四步,一键切换,通过总线一键切换功能实现国产数据库的生产上线。
轩辕数据总线为河南移动节省了数千万应用改造费用,同时为数据库国产升级探索出了一条全新且可行的道路。
4. 实践经验应用适配与性能提升
当下,对于新建系统的国产数据库升级改造往往会选择基于新的数据库进行开发,以避免适配迁移等问题,包括河南移动在内的众多企业数据库系统国产升级往往是指存量系统的国产升级。
虽然很多国产数据库的兼容性都可以达到 90%以上,但不同应用因这些不兼容的差异改造工作量不同,应用改造费用评估标准很模糊,所以对于存量系统有升级改造需求的企业如何选型一款性价比高的数据库是一个避不开的难题。以河南移动为例,彭庆军介绍了其所在数据库团队的应用适配和评估流程。
第一步,识别改造工作量。传统方式是通过数据库厂商提供的评估能力确认数据库中有哪些不兼容的语句,然后让应用花费大量人力通过排查代码进行评估;河南移动评估方式是基于河南数据库中间件的评估方案,记录应用到后端数据库每个 SQL 的访问情况,先将整个 SQL 进行回放以筛选不兼容的 SQL,同时根据 SQL 的访问记录去反查每个不兼容 SQL 下有问题的应用进程,统计出每个应用进程有多少处不兼容点,初步确认迁移改造的工作量;
第二步,对不兼容或不适配的 SQL 语句进行中间件改写,使其符合目标国产数据库并且能够在该数据库顺利运行。在这个过程中,河南移动自研了一套中间件产品轩辕数据总线,助力此次国产数据库平稳高效升级;
第三步,性能测试。传统的性能压测无法面面俱到,往往是通过主要业务根据日常配比去做测试。而河南移动采用的是真实全仿真的测试,将包括营业系统在内的每一天的全量 SQL 语句,以 200、300 的高并发,分别在国产数据库上进行压力测试,并将测试出来的较慢的 SQL 与该数据库一起进行优化,通过评估后确认具备上线条件。
在河南移动营业系统应用适配和性能提升过程中,由于营业 A 库数据量及每日归档量较大,原传统集中式存储空间紧张,归档过早清理导致 OMS 增量同步任务经常中断。在迁移演练阶段,OMS 产品通过多次及时发版提升了同步效率,最终在正式割接期间平稳迁移完成,数据校验 100%一致。在特定统计场景营业日报业务内,河南移动对递归查询进行了优化,进一步适配了 OceanBase,性能获得了明显提升,目前的性能基本可以保证在 40 多秒内进行查询。
此外,河南移动还利用自研轩辕数据总线产品承担了主要适配改造工作,解决了兼容性相对比较弱的一些问题代码。比如面对高 CPU 利用率的函数切换到国产数据库经常会出现的一些难题,针对性地对 OceanBase 进行了一定程度的性能优化。
可以说对比上面所提到的“单程车票”改造方法,基于轩辕数据总线架构的国产数据库升级方式是一张“往返车票”,支持无感切换回原数据库。
5.写在最后
未来,河南移动将持续推进 B(业务支撑系统)/M(管理支撑系统)/O(网管支撑系统)全业务域升级改造,并结合特有轩辕数据总线产品,推进 OceanBase 生态构建。
彭庆军表示:OceanBase 经过了十年的内部打磨,又经过五年的外部推广,作为一款顶天立地的产品,其未来发展大有可为。此次河南移动自研的轩辕数据总线可以帮助千行百业解决场景差异的 SQL 适配问题。相信在轩辕数据总线的加持下,会让整个 OceanBase 分布式生态如虎添翼,为企业节省大量的改造费用,同时加快分布式数据库改造推广的进度,实现多赢!
相关文章:
河南移动:核心营业系统稳定运行超300天,数据库分布式升级实践|OceanBase案例
河南移动,作为电信全业务运营企业,不仅拥有庞大的客户群体和业务规模,还引领着业务产品与服务体系的创新发展。河南移动的原有核心营业系统承载着超过6000万的庞大用户量,管理着超过80TB的海量数据,因此也面临着数据规…...
22.1 k8s不同role级别的服务发现
本节重点介绍 : 服务发现的应用3种采集的k8s服务发现role 容器基础资源指标 role :nodek8s服务组件指标 role :endpoint部署在pod中业务埋点指标 role :pod 服务发现的应用 所有组件将自身指标暴露在各自的服务端口上,prometheus通过pull过来拉取指标但是promet…...
OpenCV计算机视觉库
计算机视觉和图像处理 Tensorflow入门深度神经网络图像分类目标检测图像分割OpenCVPytorchNLP自然语言处理 OpenCV 一、OpenCV简介1.1 简介1.2 OpenCV部署1.3 OpenCV模块 二、OpenCV基本操作2.1 图像的基本操作2.1.1 图像的IO操作2.1.2 绘制几何图像2.1.3 获取并修改图像的像素…...
CentOS 系统中的文件挂载 U 盘
要将 CentOS 系统中的文件保存到 U 盘,可以按照以下步骤进行操作: 一、插入 U 盘并确定设备名称 将 U 盘插入 CentOS 系统的 USB 接口。使用 fdisk -l 命令查看系统中的磁盘和分区情况,确定 U 盘的设备名称。通常 U 盘会显示为类似于 /dev/…...
Lumerical脚本语言-变量操作(Manipulating variables)
下面的命令用来创建和存取变量。 命令描述= 赋值操作符 :数组操作符 []创建矩阵 % 创建包含空格的变量名称 linspace 创建线性空间数组 matrix 创建一个全为 0 的矩阵 randmatrix 创建一个所有元素为 0~1 之间的一个随机数的矩阵 randnmatrix 创建一个所有元素为平均值为 0…...
一个基本的包括爬虫、数据存储和前端展示框架0
创建一个完整的网络爬虫和前端展示页面是一个涉及多个步骤和技术的任务。下面我将为你提供一个基本的框架,包括爬虫代码(使用Python和Scrapy框架)和前端HTML页面(伏羲.html)。 爬虫代码 (使用Scrapy) 首先,你需要安装Scrapy库:bash pip install scrapy 然后,创建一个新…...
简历制作面试篇
一.面试技巧分析 模板: 推荐使用简洁一点的模板,不要太花哨,能够让HR和面试官清楚,快速知道信息就可以,太花哨容易分散别人的注意力。 格式: 一般选用PDF,不要用WORD。 照片: 技术岗一般不用贴照片,推进写上自己的联系方式或者微信。 专业技能: 描述专业技能…...
智能制造--EAP设备自动化程序
EAP是设备自动化程序(Equipment Automation Program)的缩写,他是一种用于控制制造设备进行自动化生产的系统。EAP系统与MES系统整合,校验产品信息,自动做账,同时收集产品生产过程中的制程数据和设备参数数据…...
LabVIEW混合控制器质量检测
随着工业自动化水平的提高,对控制器的精度、稳定性、可靠性要求也在不断上升。特别是在工程机械、自动化生产、风力发电等领域,传统的质量检测方法已无法满足现代工业的高要求。因此,开发一套自动化、精确、可扩展的混合控制器质量检测平台成…...
新技术浪潮下的等保测评:云计算、物联网与大数据的挑战与机遇
随着信息技术的飞速发展,云计算、物联网(IoT)和大数据等新兴技术正以前所未有的速度改变着我们的生活和工作方式。这些技术的广泛应用不仅为信息系统带来了前所未有的性能提升,同时也对等保测评(信息安全等级保护测评&…...
微信小程序技术框架选型
“近期在对团队的微信小程序进行技术框架选型,故对目前主流的微信小程序技术框架进行了一些分析和比较,包括各框架的维护团队、社区链接、GitHub star数、优缺点对比等方面,为团队提供技术框架选型参考” 一、引言 随着移动互联网的快速发展…...
SQL学习3
24.10.3学习目录 一.c语言操作数据库 一.c语言操作数据库 (1)打开、关闭数据库函数 //打开数据库 int sqlite3_open(char *db_name,sqlite3 **db);db_name:数据库文件名,若文件名中有ASCLL码中以外的字符,其必须为UT…...
Linux:进程控制(一)
目录 一、写时拷贝 1.创建子进程 2.写时拷贝 二、进程终止 1.函数返回值 2.错误码 3.异常退出 4.exit 5._exit 一、写时拷贝 父子进程,代码共享,不作写入操作时,数据也是共享的,当任意一方试图写入,便通过写时拷…...
初识算法 · 双指针(3)
目录 前言: 和为s的两数之和 题目解析: 编辑 算法原理: 算法编写: 三数之和 题目解析 算法原理 算法编写 前言: 本文通过介绍和为S的两数之和,以及三数之和,对双指针算法进行深一步…...
【AI知识点】近似最近邻搜索(ANN, Approximate Nearest Neighbor Search)
近似最近邻搜索(ANN, Approximate Nearest Neighbor Search) 是一种用于高维数据检索的技术,目标是在给定查询的情况下,快速找到距离查询点最近的数据点,尽管结果可能并不完全精确。这种方法特别适用于高维数据&#x…...
编程工具简介
在编程工作中,选择合适的工具确实能够显著提升工作效率。以下是一些被广泛推荐的工具: 1. Visual Studio Code (VS Code):这是一款轻量级但功能强大的代码编辑器,支持多种编程语言,拥有丰富的插件生态系统࿰…...
汽车信息安全 -- 存到HSM中的密钥还需包裹吗?
目录 1.车规芯片的ROM_KEY 2.密钥加密与包裹 3.瑞萨RZ\T2M的密钥导入 4.小结 在车控类ECU中,我们通常把主控芯片MCU中的HSM以及HSM固件统一看做整个系统安全架构的信任根。 所以大家默认在HSM内部存储的数据等都是可信的,例如CycurHSM方案中使用HSM…...
【PostgreSQL】入门篇——SELECT、INSERT、UPDATE 和 DELETE 语句,SQL 中最常用的四种操作用法
1. SELECT 语句 描述 SELECT 语句用于从数据库中查询数据。可以选择特定的列或所有列,并可以通过条件过滤结果。 语法 SELECT column1, column2, ... FROM table_name WHERE condition;示例 假设我们有一个名为 employees 的表,结构如下:…...
【Ubuntu】安装常用软件包-mysql
我的几个服务是部署在docker的同一个网络里,这样相互访问就可以通过docker容器的名字访问,比如容器A访问容器B,就可以http://B:8080/xxx 这样访问,不用关心ip是多少。 所以mysql前面文章给安装到主机里,感觉有点坑自己…...
幂等性及技术解决方案
文章目录 定义幂等性 为什么需要幂等性幂等性设计注意事项幂等性的范围分布式锁解决幂等性 设计 延伸阅读 定义幂等性 简单地说,我们可以多次执行幂等运算而不改变结果或者使用相同的输入参数中被调用多次,则不具有额外效果的操作,也就是多…...
正向代理 反向代理
正向代理 正向代理是一种网络服务,它作为客户端和目标服务器之间的中间人,代表客户端向目标服务器发送请求并接收响应。以下是关于正向代理的详细解释: 工作原理 客户端配置: 客户端(如浏览器)配置为使用…...
【分布式微服务云原生】如何在ActiveMQ中优雅处理提前支付的延时订单
摘要 本文将深入探讨在ActiveMQ中如何处理用户提前支付的延时订单问题。我们将介绍如何通过更新订单状态、检查延迟任务、取消延迟消息、使用死信队列、消息选择性消费、设置合理的超时时间以及及时反馈和日志记录等策略,来确保系统的一致性和及时响应用户操作。文…...
Easy Excel从入门到精通!!!
目录 1.文件导入 1.1基本方式读取excel文件内容 1.2注解模型映射器读取excel 1.3多行表头读取 1.4文件上传读取 2.文件导出 2.1基本方式导出 2.2模型映射导出 2.3设置行高、列宽等内容 2.4合并单元格 2.5导出设置超链接、批注、公式 2.6模板填充对象导出 2.7模板填…...
简易CPU设计入门:取指令(三),ip_buf与rd_en的非阻塞赋值
在开篇,还是请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后&…...
【算法】---归并排序(递归非递归实现)
参考 左程云算法 算法导论 前言 本篇介绍 归并排序分治法 前置知识 了解递归, 了解数组。 引入 归并排序 归并排序最早是由公认的现代计算机之父John von Neumann发明的, 这是一种典型的分治思想应用。 我们先介绍分治思想 分治思想 分治思想的…...
UniVue大版本更新:UniVue2.0.0-preview
大版本发布说明 距离上次更新好像已经过去很久了,最近太忙了没时间维护新版本,也是自己在使用的过程中发现了很多问题也有了更多的灵感,由于和之前的版本区别太大,决定重新开一个大版本。这个UniVue2之后的版本追求是性能…...
RabbbitMQ篇(环境搭建 - 下载 安装)(持续更新迭代)
目录 一、Windows 1. 下载安装程序 2. 安装配置erlang 3. 安装rabbitMQ 4. 验证 二、Linux 1. 下载rpm包 1.1. 下载Erlang的rpm包 1.2. 下载socat的rpm包 1.3. 下载RabbitMQ的rpm包 2. 安装 2.1. 安装Erlang 2.2. 安装socat 2.3. 安装RabbitMQ 3. 启动RabbitMQ服…...
C++基础补充(02)C++其他控制语句break continue goto等
文章目录 1. break2. continue 语句3. goto 语句goto的存在 4. 跳出多重循环4.1 goto 直接跳转4.2 C11及其后版本的 return 语句4.3 使用标志变量 在C中,控制语句用于管理程序的执行流程。常见有 break、continue 和 goto。 1. break break语句主要用于在循环或者s…...
决策树中联合概率分布公式解释说明
学习决策树时书本中有一公式 7-3 是: P ( X x i , Y y j ) p i j ( i 1 , 2 , … , m , j 1 , 2 , … , n ) P(X x_i, Y y_j) p_{ij} \quad (i 1, 2, \dots, m, \ j 1, 2, \dots, n) P(Xxi,Yyj)pij(i1,2,…,m, j1,2,…,n) 这个公式表示的是随机变…...
计算机毕业设计 农场投入品运营管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
企业网站找谁做/郑州seo优化外包公司
由于大部分计算都是在服务器进行。因此考虑增进NCL和Shell脚本水平,之前的博文Python读取HDF5介绍了HDF5文件及其读写,但是由于服务器本身系统版本较老,且属于内网原因,决定直接使用自带的NCL脚本对其进行撰写记录。 读取 NCL6版…...
单页产品销售网站如何做推广/seo服务的内容
ctrlshiftalt/ > registry> 勾选“ide.suppress.double.click.handler” 即可...
网站验证码怎么做的/网络舆情优化公司
http://caterpillar.onlyfun.net/Gossip/CppGossip/vector1.html您可以使用vector來替代陣列,並使用陣列型式(Array idiom)的方式來操作vector,要使用vector,必須含入vector表頭檔: #include <vector>…...
python合适做网站吗/网站快速排名的方法
本文主要讲述通过C#定时器Timers类及通过引用第三方类Aajx来实现‘OA’等系统中比较常用的信息提醒功能,并小做分析! 一,运用Timers定时器触发事件 此方法主要是指在触发事件里查询数据库,当需要的时候,调用Js…...
江苏城乡建设职业学院网站/seo课程培训机构
概述 最高传输速率:500kbpsRX 功耗:15.6ma单独的64 字节RX 和 TX 数据 FIFO 通信接口 cc2500 提供了spi 接口与外部的mcu通信。cc2500 作为spi slave 接口连线如下: 主控mcu 的spi 配置: spi 模式spi 配置备注SPI_MODESPI_M…...
专门做海外服装购的网站有哪些/软件制作平台
这里我们介绍一下form元素与表单提交方面的知识。form元素form元素的DOM接口是HTMLFormElement,继承自HTMLElement,因而它与其他的HTML元素拥有相同的默认属性,不过它自身还有几个独有的属性和方法:属性值说明accept-charset服务器…...