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

三维家:SaaS的IT规模化降本之道|OceanBase 《DB大咖说》(十一)

OceanBase《DB大咖说》第 11 期,我们邀请到了三维家的技术总监庄建超,来分享他对数据库技术的理解,以及典型 SaaS 场景在数据库如何实现规模化降本的经验与体会。

庄建超,身为三维家的技术总监,独挑大梁,负责三维家的所有IT系统运维与开发工作,为公司的成长贡献了关键力量。他不仅是一位卓越的技术专家,而且随着角色的转变,他现今更多地从业务价值的视角审视技术,对技术的热情与专注始终未减。

庄建超认为技术人要想在工作中更上一个台阶,首先需要沉下心来认真钻研技术,同时对行业也要深入研究,两者结合才有可能更进一步。对于 DBA 的成长,他建议要多读源码,多参与到社区,多交流,多分享,多动手实践。


三维家是一家以家居产业为依托、依靠云计算、大数据和 AI 人工智能等多项核心技术打造的大家居产业云工业软件服务商,连续 5 年上榜广州“未来独角兽”创新企业,先后完成多轮融资,融资总额超过 10 亿元人民币。其一体化云设计软件(CAD+CAM)、数控系统以及前后端一体化智能制造解决方案 SaaS 服务支持着众多门店的经营,拥有广泛的企业客户。

三维家的一体化解决方案覆盖门店的营销、设计以及工厂生产计划管理、加工制造全流程,为全屋定制企业提供 C2M 柔性生产全链路工具。在整个过程中,同一套数据贯穿全流程,包括从最早的设计效果图、到后来的工厂机器生产、再到最后的交付,因此对其底层的数据库有很高的要求。

为了更好地支持业务发展,降低运维成本,从 2023 年下半年开始,三维家开始启动数据库的升级工作,从原来的 MySQL+某国产数据库(以下简称“XDB”)统一迁移到 OceanBase。

一、业务进一步增长,对数据库有了新需求

三维家成立于 2013 年,正值中国经济快速发展的黄金时期,经济的蓬勃成长带动了家装行业的蓬勃发展,三维家的业务也随之高速增长,对数据库的要求也不断提高。

三维家刚成立的时候采用的是某传统集中式数据库。该数据库功能强大,开发人员也熟悉,开发和运维都比较简单,很好地支持了业务发展。但随着公司业务的成长,数据量不断增加,时常需要对数据库进行扩容,扩容成本随之越来越高,压力之下,2017 年三维家把该数据库换成了 MySQL+ 某国产数据库 XDB 的组合。

庄建超是三维家的技术总监,也是三维家最早的技术人员,曾经一个人承担了三维家所有的 IT 工作,从开发到运维。

庄建超解释说,之所以选择 MySQL+ XDB 是由于三维家业务的复杂性。三维家有很多大客户,每个大客户就是一个数据库,客户对数据隔离性有较高要求,所以选择了 MySQL 的分库分表来满足。同时,三维家也存在合库的需求,比如对数据进行统一分析和统计,而 MySQL 可扩展性不够,同时也不支持太复杂的分析需求,所以分析工作就由 XDB 来完成。没有都采用 XDB 主要是成本上的考虑,该数据库节点多导致前期成本较高。

MySQL+XDB 的组合稳定运行了几年,MySQL 负责写,XDB 负责读,一直非常顺利。去年新的问题出现了,更准确地说——是三维家对数据库有了新的要求。

庄建超进一步解释了三维家更换数据库的原因:

第一,需要支持多基础设施的数据库。此前不止一家云厂商出现过服务中断事故,让三维家对稳定性更为看重。三维家的服务对客户很关键,如果停服将直接影响客户经营。因此,三维家考虑进行多基础设施部署,避免因某云服务中断而影响客户业务。如果继续使用 MySQL 的话,那就要在其他云上再复制一份数据,成本将直接翻倍。

第二,简化运维。MySQL 是用分库分表+中间件来解决数据量大和数据的隔离问题的,然后用 XDB 进行合库来解决数据分析问题。两个数据库之间要做同步,数据流程长,还要借助中间件,技术栈复杂,运维成本随之变高。

第三,云成本持续增长。三维家的业务增长很快,数据量同步增长,成本自然也水涨船高,考虑到未来的可持续发展,三维家对降本增效有了新需求。

基于上面这些考虑,去年三维家决定进行数据库升级,并同步启动新数据库选型。

“那时 OceanBase 已经开源,我们在对 OceanBase 进行评估和测试后,发现功能完全符合要求,同时,OceanBase 对 MySQL 的兼容性非常高,因此很快就敲定了 OceanBase。”庄建超表示。

庄建超补充说:决策的背后另一个重要原因是对 OceanBase 的信任。因为它经过了支付宝大规模金融场景的打磨,完全自研,多年成长,其稳定性和可靠性经过了很多客户验证,值得信赖。

二、分库分表加大迁移难度

从 2023 年 9 月份开始,三维家正式启动数据库的迁移工作。截至到目前,三维家已经完成 80% 的系统迁移,只有一些合库还没有合并,目前,这部分工作也在顺利推进之中。

庄建超介绍,三维家的官网系统是第一个迁移到 OceanBase 的系统。由于这个系统以静态页面为主,即使出现了故障也不会直接影响客户的业务,所以选择其进行首位升级。在官网迁移完成后,三维家开始真正进行其他关键业务系统数据库的升级。

“我们对数据库的切换很谨慎,采取两个系统并跑,也就是新旧系统都要同时写,一旦出问题,马上切换回去,保障尽量减少对业务的影响。”庄建超说。

迁移过程中最大的困难也恰恰是同步写,因为要保持两个数据库系统的数据一致性,这个难度比较大。尤其是多对一的合并迁移难度较高:迁移前分库分库表,迁移后合库合表,要确保能回退,数据就得回写到旧的数据库。

“OceanBase 的数据迁移工具 OMS 可以满足一部分数据迁移需求,对分库分表部分就得其他方式来回写了。我们选择的是 Flink CDC,同时也做了很多定制化开发和配置工作。”庄建超说。

为了确保数据库系统迁移成功,三维家做了很多准备工作,从功能测试、压力测试、到流量回放、SQL 优化、再到试点迁移等,以确保在 SQL 语法上兼容、SQL 性能没有问题。比如,针对三维家复杂的业务场景,在迁移过程中,也做了大量索引和执行计划的优化工作。

庄建超说,整体数据库迁移过程比较顺利。在迁移过程中,他也提议 OceanBase 可以进一步增强其监控和告警能力。比如,提供更细粒度的性能监控和提供监控的 API,这样他们可以把性能数据接入大屏做展示。

三、降本增效,效果看的见

随着数据库迁移工作的推进,升级效果也开始逐渐显露出来。

首先,成本下降明显。原有的 XDB 数据库被直接替换,服务器进一步节省,成本降低显而易见。而且,升级为 OceanBase 后,其对数据的高压缩比使得存储空间需求也降低了不少,整体存储成本下降了 30%。

庄建超解释说,MySQL 的数据迁移回报目前还没有充分体现出来。因为三维家需要保障业务稳定,所以目前还是双跑,为确保回退机制可行,目前整体成本还相对较高。如果双跑结束,成本会直接减少一半。

其次,运维复杂度降低。换成 OceanBase 后,原来的中间件没有了,数据库架构进一步简化,故障点更少,稳定性更好,灵活性能提升,接口响应更快。而且部署更加灵活,扩容也非常方便。

第三,对多租户架构的支持。SaaS 平台需要支持多租户,OceanBase 的多副本和分布式架构能够有效地隔离租户数据,保证租户间的数据安全和隔离,为不同客户规模的租户灵活实现提供了很大方便。

“过去用 MySQL 的时候,这一点非常头疼,采用分库分表也是出于这个方面的考虑。”庄建超说。

第四,对分析能力的支持。之所以此前使用 XDB 就是为了满足数据分析的需求,现在一个 OceanBase,TP、AP 同时都可以满足,不再需要进行数据同步,成本下降,运维也变得简单。

庄建超表示,接下来三维家将继续优化 OceanBase,同时,还会进行多基础设施部署,进一步实现多活。OceanBase 支持多基础设施部署,这为三维家提供更多便利。

另外,庄建超还透露,他对向量数据库非常感兴趣,因为三维家正在研发自己的知识库。“听说 OceanBase 正在研究这个功能,如果未来 OceanBase 能支持向量,我们搭建知识库的工作就会简单许多,将为我们业务开展带来很大方便。”庄建超说。


特别感谢徐戟(白鳝)对本期《DB 大咖说》的特别支持。徐戟老师是业内资深 Oracle 数据库优化专家,南京基石数据的 CTO,在数据库领域深耕 20 余年。同时,也是知名科技公众号《白鳝的洞穴》主理人,热衷于分享他在数据库方面的多面见解。

相关文章:

三维家:SaaS的IT规模化降本之道|OceanBase 《DB大咖说》(十一)

OceanBase《DB大咖说》第 11 期,我们邀请到了三维家的技术总监庄建超,来分享他对数据库技术的理解,以及典型 SaaS 场景在数据库如何实现规模化降本的经验与体会。 庄建超,身为三维家的技术总监,独挑大梁,负…...

ai智能语音机器人是如何影响客户体验的?电销机器人部署

随着人工智能技术的进步,越来越多的企业在寻求如何将人工智能技术融合到现有的商业模式上,进而实现自动化、智能化。在通信行业大量使用智能语音机器人、聊天机器人、客服机器人时,它能和“客户体验”并驾齐驱吗,还是可以让客户体…...

vue3使用v-html实现文本关键词变色

首先看应用场景 这有一段文本内容,是项目的简介,想要实现将文本中的关键词进行变色处理 有如下关键词 实现思路 遍历文本内容,找到关键词,并使用某种方法更改其字体样式。经过搜寻资料决定采用v-html实现,但是v-h…...

C#面:举列 a=10,b=15,在不用第三方变量的前提下,把a,b的值互换

要在不使用第三方变量的前提下交换a和b的值,可以使用异或运算。异或运算的特性是,对于两个相同的数进行异或运算,结果为0;对于任意数与0进行异或运算,结果为该数本身。因此,可以通过多次异或运算来实现变量…...

编写动态库

1.创建库.c .h文件 2.编写Makefile文件 3.make之后形成.so文件 4.make output,形成mylib 5.把mylib拷贝到test里面 mv mylib /test 6.编译 gcc main.c -I mylib/include -L mylib/lib -lmymethod形成a.out 但是直接执行会出现以下问题 很显然没有找到动态库 7.解决加载找不…...

记一次阿里云服务器java应用无法响应且无法远程连接的问题排查

问题表现 java服务无响应,无法远程链接到服务器。 今天中午12点多,应用直接崩溃。后续进入到服务器,发现java进程都不在了, 排查过程 先安装atop工具 安装、配置并使用atop监控工具 等下次再出现时看相关时间点日志&#xff…...

雷池WAF+Modsecurity安装防护及系统加固

君衍. 一、雷池WAF1、什么是雷池2、什么是WAF3、雷池的功能4、WAF部署架构5、整体检测流程 二、雷池WAF环境依赖1、查看本地CPU架构2、Docker安装2.1 卸载旧版本2.2 安装yum-utils工具包2.3 设置镜像仓库2.4 安装docker2.5 启动docker并查看版本 3、Docker Compose安装3.1 卸载…...

【Python】已解决:SyntaxError: positional argument follows keyword argument

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:SyntaxError: positional argument follows keyword argument 一、分析问题背景 在Python编程中,当我们在调用函数时混合使用位置参数(p…...

leetcode-20-回溯-切割、子集

一、[131]分割回文串 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ] 分析&…...

利用深度学习模型进行语音障碍自动评估

语音的产生涉及器官的复杂协调,因此,语音包含了有关身体各个方面的信息,从认知状态和心理状态到呼吸条件。近十年来,研究者致力于发现和利用语音生物标志物——即与特定疾病相关的语音特征,用于诊断。随着人工智能&…...

TP8 JS(html2canvas) 把DIV内容生成二维码并与背景图、文字组合生成分享海报

方法一:前端JS生成(推荐) 注意: 1.这个网页只能截图图片效果代码,其它任何html效果都不能有,不然截图就不准确 2.如果要生成的图片DIV内容中引用了第三个方的图片,就是不使用同一个域名下的图片,需要把后…...

计算机科学中的接口(Interface)介绍

计算机科学中的接口(Interface)介绍 计算机科学中,接口是一个广泛的概念,在不同上下文中有不同含义: 1.任何两电路或设备间的连接电路,用于连接CPU与内存、CPU与外设之间。这是一个重要的硬件层面的接口概…...

大创项目推荐 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基…...

黑芝麻科技A1000简介

文章目录 1. A1000 简介2. 感知能力评估3. 竞品对比4. 系统软件1. A1000 简介...

详解C语言分支与循环语句

分支语句 if elseswitch 循环语句 whilefordo while goto语句 文章目录 1.什么是语句2.分支语句(选择结构)2.1 if语句2.1.1 悬空else2.1.3 练习 2.2 switch语句2.2.1 在switch语句中的break2.2.2 default子句 3.循环语句3.1 while循环3.1.1 while语句中…...

Python商务数据分析知识专栏(五)——Python数据分析的应用③使用Pandas进行数据预处理

Python商务数据分析知识专栏(五)——Python数据分析的应用③使用Pandas进行数据预处理 使用Pandas进行数据预处理1.合并数据2.清洗数据3.标准化数据4.转换数据 使用Pandas进行数据预处理 1.合并数据 2.清洗数据 3.标准化数据 4.转换数据...

Nosql期末复习

mongodb基本常用命令(只要掌握所有实验内容就没问题) 上机必考,笔试试卷可能考: 1.1 数据库的操作 1.1.1 选择和创建数据库 (1)use dbname 如果数据库不存在则自动创建,例如,以下…...

Pytest+Allure+Yaml+PyMsql+Jenkins+Gitlab接口自动化(四)Jenkins配置

一、背景 Jenkins(本地宿主机搭建) 拉取GitLab(服务器)代码到在Jenkins工作空间本地运行并生成Allure测试报告 二、框架改动点 框架主运行程序需要先注释掉运行代码(可不改,如果运行报allure找不到就直接注释掉) …...

SQL面试题练习 —— 查询前2大和前2小用户并有序拼接

目录 1 题目2 建表语句3 题解 1 题目 有用户账户表,包含年份,用户id和值,请按照年份分组,取出值前两小和前两大对应的用户id,需要保持值最小和最大的用户id排首位。 样例数据 ------------------------- | year | user_id | v…...

Arthas常见使用姿势

文章目录 Arthas常见使用姿势官网基本命令通用参数解释表达式核心变量说明常用命令一些常用特殊案例举例其他技巧关于OGNLOGNL的常见使用OGNL的一些特殊用法与说明OGNL内置的虚拟属性OGNL的个人思考OGNL的杂碎,收集未做验证 Arthas常见使用姿势 官网 https://arth…...

Apache Kylin的入门学习

Apache Kylin的入门学习可以从以下几个方面进行: 1. 了解Kylin的基本概念 定义:Apache Kylin是一个开源的分布式分析引擎,它基于Hadoop和HBase构建,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能…...

React@16.x(46)路由v5.x(11)源码(3)- 实现 Router

目录 1,Router 的结构2,实现2.1,react-router1,matchPath.js2,Router.js3,RouterContext.jsx4,index.jsx 2.2,react-router-domBrowserRouter.jsxindex.jsx 1,Router 的结…...

openGauss真的比PostgreSQL差了10年?

前不久写了MogDB针对PostgreSQL的兼容性文章,我在文中提到针对PostgreSQL而言,MogDB兼容性还是不错的,其中也给出了其中一个能源客户之前POC的迁移报告数据。 But很快我发现总有人回留言喷我,而且我发现每次喷的这帮人是根本不看文…...

【国产开源可视化引擎Meta2d.js】快速上手

提示 初始化引擎后,会生成一个 meta2d 全局对象,可直接使用。 调用meta2d前,需要确保meta2d所在的父容器element元素位置大小已经渲染完成。如果样式或css(特别是css动画)没有初始化完成,可能会报错&…...

c#与倍福Plc通信

bcdedit /set hypervisorlaunchtype off...

【OceanBase诊断调优】—— 如何通过trace_id找到对应的执行节点IP

1. 前言 OceanBase作为分布式数据库,查问题找对节点很关键。好在OceanBase执行的每一条SQL都能通过trace_id来关联起来,知道trace_id怎么知道是在哪个节点发起的呢,请看本文。 2. trace_id生成规则 ob内部trace_id的生成函数如下&#xff0…...

鸿蒙开发Ability Kit(程序访问控制):【使用粘贴控件】

使用粘贴控件 粘贴控件是一种特殊的系统安全控件,它允许应用在用户的授权下无提示地读取剪贴板数据。 在应用集成粘贴控件后,用户点击该控件,应用读取剪贴板数据时不会弹窗提示。可以用于任何应用需要读取剪贴板的场景,避免弹窗…...

PL/SQL入门到实践

一、什么是PL/SQL PL/SQL是Procedural Language/Structured Query Language的缩写。PL/SQL是一种过程化编程语言,运行于服务器端的编程语言。PL/SQL是对SQL语言的扩展。PL/SQL结合了SQL语句和过程性编程语言的特性,可以用于编写存储过程、触发器、函数等…...

双非本 985 硕,我马上要入职上海AI实验室大模型算法岗

暑期实习基本结束了,校招即将开启。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑&…...

C盘清理和管理

本篇是C盘一些常用的管理方法,以及定期清理C盘的方法,大部分情况下都能避免C盘爆红。 C盘清理和管理 C盘存储管理查看存储情况清理存储存储感知清理临时文件清理不需要的 迁移存储 磁盘清理桌面存储管理应用存储管理浏览器微信 工具清理 C盘存储管理 查…...

晚上睡觉要不要关路由器?一语中的

前言 前几天小白去了一个朋友家,有朋友说:路由器不关机的话会影响睡眠吗? 这个影响睡眠嘛,确实是会的。毕竟一时冲浪一时爽,一直冲浪一直爽……刷剧刷抖音刷到根本停不下来,肯定影响睡眠。 所以晚上睡觉要…...

ardupilot开发 --- 坐标变换 篇

Good Morning, and in case I dont see you, good afternoon, good evening, and good night! 0. 一些概念1. 坐标系的旋转1.1 轴角法1.2 四元素1.3 基于欧拉角的旋转矩阵1.3.1 单轴旋转矩阵1.3.2 多轴旋转矩阵1.3.3 其他 2. 齐次变换矩阵3. visp实践 0. 一些概念 相关概念&am…...

git clone 别人项目后正确的修改和同步操作

简介 git clone主要是克隆别人的开源项目。但更高端的操作是实现本地修改的同时,能同步别人的在线修改,并且不相互干扰: 克隆原始项目:从远程仓库克隆项目到本地。添加上游仓库:将原始项目的远程仓库添加为上游仓库。…...

JAVA连接FastGPT实现流式请求SSE效果

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景! 一、先看效果 真正实流式请求,SSE效果,SSE解释&am…...

二分查找1

1. 二分查找(704) 题目描述: 算法原理: 暴力解法就是遍历数组来找到相应的元素,使用二分查找的解法就是每次在数组中选定一个元素来将数组划分为两部分,然后因为数组有序,所以通过大小关系舍弃…...

什么美业门店管理系统好用?2024美业收银系统软件排名分享

美业SAAS系统在美容、美发、美甲等行业中十分重要,这种系统为美业提供了一种数字化解决方案,帮助企业更高效地管理业务和客户关系。 美业门店管理系统通常提供预约管理、客户管理、库存管理、报表生成等一系列功能,以满足美容院、美发沙龙等…...

【文件上传】

文件上传漏洞 FileUpload 0x01 定义 服务端未对客户端上传文件进行严格的 验证和过滤造成可上传任意文件情况;0x02 攻击满足条件: 1. 上传文件能够被Web容器解释执行   2. 找到文件位置   3.上传文件未被改变内容。(躲避安全检查&#…...

Golang 单引号、双引号和反引号的概念、用法以及区别

在 Golang(Go 语言)中,单引号 ()、双引号 (") 和反引号 () 用于不同类型的字符串和字符表示。以下是它们的概念、用法和区别: 1. 单引号 () 概念 单引号用于表示 字符(rune 类型)。一个字符表示一个…...

linux和mysql基础指令

Linux中nano和vim读可以打开记事文件。 ifdown ens33 ifup ens33 关闭,开启网络 rm -r lesson1 gcc -o code1 code1.c 编译c语言代码 ./code1 执行c语言代码 rm -r dir 删除文件夹 mysql> show databases-> ^C mysql> show databases; -------…...

JDK 为什么需要配置环境变量

前言 首先,我们要知道 Java 程序的执行过程。首先将 xxx.java 文件(使用 javac 编译指令)编译成 xxx.class 文件(字节码文件),再将字节码文件(使用 java 执行指令)解释成电脑所能认识…...

ViewBinding的使用(因为kotlin-android-extensions插件的淘汰)

书籍: 《第一行代码 Android》第三版 开发环境: Android Studio Jellyfish | 2023.3.1 问题: 3.2.4在Activity中使用Toast章节中使用到了kotlin-android-extensions插件,但是该插件已经淘汰,根据网上了解,目前使用了新的技术VewBinding替…...

IOS Swift 从入门到精通:ios 连接数据库 安装 Firebase 和 Firestore

创建 Firebase 项目 导航到Firebase 控制台并创建一个新项目。为项目指定任意名称。 在这里插入图片描述 下一步,启用 Google Analytics,因为我们稍后会用到它来发送推送通知。 在这里插入图片描述 在下一个屏幕上,选择您的 Google Analytics 帐户(如果已创建)。如果没…...

QT4-QT5(6)-const char* QString 乱码转换

我简单粗暴的给出个结论: QString GBK编码正常,可以转UTF-8编码,但会有少量乱码。 const char* 编码就不要转编码,转哪个都是乱码。 UTF-8.cpp 下 1.QString GBK->UTF-8 2.const char * GBK->UTF-8 const char *…...

报错:RuntimeError_ cuDNN error_ CUDNN_STATUS_EXECUTION_FAILED

原因:pytorch与cuda版本不对 也有可能是内存空间不足,可以更改虚拟空间大小,参考:解决电脑内存不足问题:Win10虚拟内存设置指南...

黑马点评项目总结1-使用Session发送验证码和登录login和 使用Redis存储验证码和Redis的token登录

黑马先是总结了从session实现登录,然后是因为如果使用了集群方式的服务器的话,存在集群共享session互相拷贝效率低下的问题,接着引出了速度更快的内存型的kv数据库Redis, 使用Session发送验证码和登录login 举个例子&#xff1a…...

【大模型】Vllm基础学习

前言:vllm是一个大语言模型高速推理框架,旨在提高大模型的服务效率。优势是内存管理,实现的核心是pageattetion算法。仅在gpu上加速,不在cpu加速。 目录 1. PageAttention2. 实践2.1 安装2.2 离线推理2.3 适配OpenAI的api 1. Page…...

使用vue动态给同一个a标签添加内容 并给a标签设置hover,悬浮文字变色,结果鼠标悬浮有的字上面不变色

如果Vue的虚拟DOM更新机制导致样式更新不及时,你可以尝试以下几种方法来解决这个问题: 确保使用响应式数据: 确保你使用的数据是响应式的,并且任何对这些数据的更改都会触发视图的更新。在Vue中,你应该使用data对象中的…...

【ajax实战06】进行文章发布

本文章目标:收集文章内容,并提交服务器保存 一:基于form-serialize插件收集表单数据 form-serialize插件仅能收集到表单数据,除此之外的数据无法收集到 二:基于axios提交到服务器保存 三:调用alert警告…...

Codeforces Round 954 (Div. 3)(A~E)

目录 A. X Axis B. Matrix Stabilization C. Update Queries D. Mathematical Problem A. X Axis Problem - A - Codeforces 直接找到第二大的数&#xff0c;答案就是这个数与其他两个数的差值的和。 void solve() {vector<ll>a;for (int i 1; i < 3; i){int x;…...

基于Java微信小程序同城家政服务系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…...

面向对象进阶

面向对象进阶 文章目录 面向对象进阶static&#xff08;静态&#xff09;static内存图工具类练习 static的注意事项重新认识main方法 继承继承的特点练习 子类到底能继承父类中的哪些内容内存图构造方法成员变量成员方法小结 内存分析工具 继承中&#xff1a;成员变量的访问特点…...

自动驾驶AVM环视算法--相机的联合标定算法实现和exe测试demo

更新&#xff1a;测试的exe程序&#xff0c;无需解压码就可以体验算法测试效果 链接&#xff1a;https://pan.baidu.com/s/1OfuslVNcTXAZWvwiqflWsA 提取码&#xff1a;zoef 1、压缩包解压后显示如下所示 测试文件包括&#xff1a;可执行的exe文件、测试的图片等。 2.双击ex…...

【Git 学习笔记】第二章 Git 的配置(上)

说明 本篇根据原书第二章前半部分的学习笔记整理&#xff0c;涉及 2.1 ~ 2.4 小节内容。具体实操代码库&#xff0c;需使用 GitHub 线上版本。 第二章 配置 Git 相关主题&#xff1a; 配置目标检索已有配置配置模板.git 目录模板几个配置示例设置 Git 别名refspec 举例 2.1 …...

vue 代理

前端请求数据&#xff0c;要用ajax&#xff0c;由于浏览器的同源策略&#xff0c;涉及到跨域&#xff0c;解决跨域之后才能访问后端接口 一、常用的发送一个ajax请求&#xff1a; 1、xhr new XMLHttpRequest(),真正开发中不常用 2、jq&#xff0c;jq主要功能是获取dom&#xff…...

WPF对象资源

目录 参数复用 资源的定义 使用方式 资源统一设置&#xff1a;对象资源属性/向上搜索&#xff1a;APP、系统资源 参数复用 需求&#xff1a;想和C#代码一样&#xff0c;写一个全局的参数&#xff0c;都能使用。 <!--以下三个命名空间都可以在xaml中使用C#中的属性-->…...

HTTPS保证传输安全的关键点

哈喽&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;在如今高度数字化的世界里&#xff0c;信息的安全传输成为了至关重要的议题。HTTPS&#xff08;超文本传输安全协议&#xff09;作为HTTP协议的安全升级版&#xff0c;为网络数据的交换提供了强大的安全保…...

对比探界者Plus、探岳、CR-V,该如何选?

对于多数以家庭为购车出发点的消费者来说,一台15-20万级的合资SUV,基本能够满足品牌、空间、配置、品质方面的多重购车需求。因此这个价位的车型往往有着巨大的体量和需求,同时也意味着竞争的激烈程度非比寻常。以往大家做选择时,可能会将注意力放在德系和日系合资车型上,…...

低空经济发展加速碳纤维行业迎增量市场

近日,小鹏汇天旅航者X2在廊坊市成功完成首飞,标志着载人低空飞行器在京津冀地区实现首飞。根据德邦证券的测算,单台eVTOL对碳纤维的需求为100公斤至400公斤。业内人士表示,低空经济腾飞将为碳纤维复合材料带来增量市场,碳纤维行业有望迎来爆发式增长。利好政策频出2024年中…...

考拉五座北京车展惊艳亮相,黑科技再次成为制胜法宝

在刚刚结束的北京国际车展上,极狐品牌携旗下全系车型强势登场,其中考拉五座更是首次亮相,引起了广泛关注。这款车型的出现,预示着智能汽车领域又迎来了一位实力不俗的新成员。随着考拉五座的加入,新能源汽车市场的竞争无疑将更加激烈和多彩。车展上,观众们纷纷驻足观看,…...

秦L/海豹06的到来,扯下了合资燃油车最后一块遮羞布

从事汽车行业的小伙伴们肯定都知道,现在的新车价格很不稳定。即便是强如奔驰、宝马、奥迪这样的实力派传统豪华品牌,面对着市场环境的变化,中国品牌的崛起,在价格上一步一步下探,跌到了谷底中的谷底。可以预见的是,过去合资燃油车,靠品牌影响力,靠品质取胜的年代已经一…...

css卡片翻转 父元素翻转子元素不翻转效果

css卡片翻转 父元素翻转子元素不翻转效果 vue <div class"moduleBox"><div class"headTitle"><span class"headName">大额案例</span></div><div class"moduleItem"><span class"module…...

关于软件设计模式的理解

系列文章 关于时间复杂度o(1), o(n), o(logn), o(nlogn)的理解 关于HashMap的哈希碰撞、拉链法和key的哈希函数设计 关于JVM内存模型和堆内存模型的理解 关于代理模式的理解 关于Mysql基本概念的理解 关于软件设计模式的理解 文章目录 前言一、软件设计模式遵循的六大原则…...