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

联华集团:IT团队如何实现从成本中心提升至价值中心|OceanBase 《DB大咖说》(十)

OceanBase《DB大咖说》第 10 期,我们邀请到了联华集团的CTO楼杰,来分享他如何思考 IT 业务价值,以及联华华商数据库的升级实践。

楼杰从大学毕业后就进入了联华工作,并一直扎根在近 20 年的,从一名底层的技术员成长为 CTO,全面负责联华信息系统的运营和规划工作。长期从事在零售领域,使得楼杰不光是一名 IT 技术专家,更是一名业务专家。成为为 CTO 以后,楼杰的视角也更多地开始站在业务层面,他与他的团队历时 5 年,推出了业财一体化,并真正开始服务业务经营。在联华华商的数据库面临升级时,他除了关注系统性能、成本等以外,更愿意从业务来思考,并为业务赋能。


杭州联华华商集团(以下简称联华集团)是一家由联华超市股份有限公司控股、杭州市商贸旅游集团有限公司和宁波联合集团股份有限公司参股的有限责任公司,大名鼎鼎的联华连锁超市就归属该公司。

联华集团总部位于杭州市,在浙江全省 11 个地级市拥有网点 568 家,全年营业收入近 140 亿元,已连续 22 年位居浙江省内连锁超市行业第一,拥有购物中心、大卖场、综合超市、标准超市、精品超市、便利店、校园店、品类店等零售业态。

对于拥有如此之多业态、年营业额达 140 亿元的联华集团,构建一个高效、可靠的业务系统至关重要。为了支持公司业务规模的高速成长和经营业态的不断丰富,集团业务系统一直在不断进化:业务系统从私有部署走向云端,架构从集中走向分布,数据库也从集中式走向分布式中间件+集中式数据库,最后走向了全分布式数据库,为联华的数智化转型提供了有力的支持。

一、频繁扩容,运维不堪重负

在公司业务系统持续演进的过程中,联华集团先后采用了多种数据库。早期以 IBM 的 Informix 数据库为主,期间也用过 Oracle、SQL Server 等。2017 年,集团业务上云后,数据库开始逐渐转向 MySQL、RDS 等,同时,采用了大数据平台和数据仓库等进行经营分析。

联华集团 CTO 楼杰见证了整个过程。楼杰介绍,Informix 是联华规模化使用的第一代数据库,支持联华从 2002 年 3 个亿的销售规模成长到 2008-2010 年的 100 亿规模。但当业务规模达到 100 亿以后,继续使用 Informix 明显开始感到吃力。为了分解数据库的压力,联华集团对业务功能进行了拆分,商品管理、会员管理、仓配系统、门店进销存功能等先后从原来的系统中独立出来。

拆分后的系统稳定运行到了 2015 年,系统再次面临升级。根据公司业务转型的要求,需要进行线上线下一体化。线上线下一体化意味着所有促销活动、商品价格无论是线上还是线下其解析规则必须一致,也就是要采用同一套引擎。

然而,线上负载和线下有很大不同,线上业务有明显的波峰波谷特性,为了应对高峰流量,联华在数据层引入分布式技术,DRDS 就是这个时间引入的。联华最先在卡交易系统采用了 DRDS,后来会员系统、营销系统、商品系统等也先后进行了分布式架构的转换。

这种架构进入 2021 年后,伴随着集团业务规模的增长,业务系统感受到更大的扩容压力:每次遇到大促等促销活动就需要扩容,扩容频繁导致成本攀升,同时也给运维人员带来很大负担。

以卡交易系统为例,每到大促的时候,线上、线下的业务并发量同时上来,需要对 DRDS 节点进行扩容,还要对其他节点进行扩容,大促结束再缩回来。这套流程下来很麻烦,运维压力很大。

为了提高系统可伸缩性,减少运维压力,联华集团引入了 K8s 的容器技术,同时,决定在数据层引入分布式数据库,数据库选型由此提上日程。

二、顺利升级,成本不变性能升级

新数据库需要支持多读、多写能力,要具有高度扩缩容能力,能应对海量数据的管理。另外,还要有多租户能力,因为将来数据库会逐渐统一,收敛到 OceanBase 等少数几个数据库。”楼杰说。

在市场上能满足联华集团的数据库并不多,经过前期的测试和综合评估,集团很快就选定了 OceanBase。2021 年初,联华开始数据库的迁移工作,先是卡系统业务,接下来是业财业务和线上 App。楼杰介绍,上线的这几个系统原来采用是DRDS+MySQL,而 OceanBase 对 MySQL 的兼容性非常好,语法上差异很小。

“此外,OceanBase 的保障团队非常给力,为我们提供了很多帮助,双方合作用了两个通宵就把卡交易系统顺利升级到 OceanBase。”他说。

OceanBase 数据库的上线给内部运维带来很大方便的同时,用户的使用体验也有了很大改善。

首先,实现了资源整合,不再有扩缩容的压力。借助 OceanBase 大集群、多租户的隔离模式,将原来多套规格、多种异构数据库进行了资源整合,统一迁移到了 OceanBase,达到资源集约的目的。现在,通过租户的模式,还可以随时进行动态扩缩容,满足业务弹性扩缩容的需求。“联华在三年内基本不用考虑扩缩容问题。”楼杰说。

其次,在保持成本不增加的前提下,性能提升 1-2 倍。原来业财系统的报表要 3-10 分钟才能出来,现在 1 分钟内就会出来,体验明显改善。同时,存储容量直接减少了一半以上。

“我们考虑到后续会有业务不断迁移过来,还有线上业务波峰非常明显,所以并没有刻意压缩成本。投入基本和以前基本差不多,但性能提升明显。”楼杰解释。

三、业财一体化,为精细化管理赋能

当然,联华进行数据库的迁移不只是为了降低成本和降低运维压力,更重要的是还提供了更多可能,来帮助联华的业务部门和管理层实现精细化管理,比如推进业财一体化,旨在为业务经营提供更多决策支持

此前由于数据库读写性能的限制,集团只能把各个门店每天的交易数据汇总后进行上传,上线 OceanBase 后,门店的每一笔交易实现了实时记录上传,400 多家门店实时提交,写的数据量增加了 1000 倍,给业务人员和管理层充分了解各个门店经营状况带来很大方便。这也是联华当初在选型时高度重视数据库的多读多写能力的重要原因之一。

楼杰介绍,现在联华可以清楚地算出门店每一笔交易其成本构成如何,是否赢利以及盈利细节等。以前,只能笼统地知道门店是赔还是赚,现在可以清楚知道每笔交易的赔或者赚。

精细化管理对公司业务经营非常重要,也是IT部门价值之所在。我们从 2017 年就开始大力推动业财一体化,目的也在于此。”楼杰说。

他解释,企业一般都有自己的财务报告也有业务报告。财务报告应国家管理要求,比较标准,它的粒度、维度、视角和业务部门都有很多不同,比如统计口径不同等,财务报告和业务报告两者不能很好匹配,非常不利于对企业经营状况的全面了解。业财一体化就是要改变这种状况,这就需要IT部门来做数据的整合和匹配工作。

“以前,管业务的人不懂财务,管财务的人不懂业务。如果两边数据能打通,业务和财务的人都可以非常清楚地看出实际经营状况,包括具体哪里的问题。这样可以更好地控制经营风险,更准确地进行销售预测。”楼杰说。

在过去的 5 年,联华在“业财一体化”上先后经历了管理在线化、管理数字化、管理一体化阶段,如今已经进入了业财融合阶段,给公司管理层进行业务分析、准确把握经营状况、进行管理决策带来了非常大的方便,也让IT部门成为营收驱动力,帮助IT部门从成本中心逐渐转向价值中心和利润中心。

为了进一步提升数据分析能力,楼杰透露,目前,联华正在评估 OceanBase 4.3 的 HTAP 能力。以前联华采用了其他数据仓库来进行数据分析,这个数据仓库部署在一个离线的数据中心,如果能用 OceanBase 的 AP 能力,这样不仅可以节省成本,还能实现实时分析,对于联华集团的经营和决策也会带来更多的方便。

相关文章:

联华集团:IT团队如何实现从成本中心提升至价值中心|OceanBase 《DB大咖说》(十)

OceanBase《DB大咖说》第 10 期,我们邀请到了联华集团的CTO楼杰,来分享他如何思考 IT 业务价值,以及联华华商数据库的升级实践。 楼杰从大学毕业后就进入了联华工作,并一直扎根在近 20 年的,从一名底层的技术员成长为…...

计算机系统基础实训五—CacheLab实验

实验目的与要求 1、让学生更好地应用程序性能的优化方法; 2、让学生更好地理解存储器层次结构在程序运行过程中所起的重要作用; 3、让学生更好地理解高速缓存对程序性能的影响; 实验原理与内容 本实验将帮助您了解缓存对C程序性能的影响…...

PHP框架之CodeIgniter框架

CodeIgniter框架详细说明 CodeIgniter是一个简单而强大的PHP框架,专为快速开发Web应用程序而设计。它遵循MVC(模型-视图-控制器)设计模式,为开发者提供了丰富的功能和灵活性,同时保持代码的轻量级和易于管理。CodeIgn…...

714. 买卖股票的最佳时机含手续费

714. 买卖股票的最佳时机含手续费 原题链接:完成情况:解题思路:ExplanationSummary 参考代码:_714买卖股票的最佳时机含手续费 错误经验吸取 原题链接: 714. 买卖股票的最佳时机含手续费 https://leetcode.cn/probl…...

Linux系统查看程序内存及CPU占用

文章目录 1.free命令2.top命令3.PS命令3.1 查看内存占用前10位:3.2 查看CPU占用前10位 参考文档 1.free命令 可以通过free命令查看物理内存占用情况 #单位KB free #单位MB free -m #单位GB free -h 2.top命令 输入top命令,会输出定时刷新的程序PID、内…...

数据结构7---图

一、定义 对于图的定义,我们需要明确几个注意的地方:一线性表中我们把数据元素叫元素,树中叫结点,在途中数据元素我们则称之为顶点(Vertex)。 对于图的定义,我们需要明确几个注意的地方: 线性表中我们把数据元素叫元素&#xf…...

Excel 如何复制单元格而不换行

1. 打开excle, sheet1右键单击>查看代码>插入>模块 输入代码 Sub CopyText() Updated by NirmalDim xAutoWrapper As ObjectSet xAutoWrapper New DataObject or GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")xAutoWrapper.SetText ActiveC…...

前端 CSS 经典:mix-blend-mode 属性

前言&#xff1a;这是一个混合属性&#xff0c;作用是将两个颜色混合生成一个新颜色。可以将视频和文字相融合&#xff0c;产生动态文字效果。 效果 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" />&l…...

OpenCV--滤波器(一)

低通滤波器 代码和笔记 代码和笔记 import cv2 import numpy as np""" 滤波器--用于图像处理的重要工具&#xff0c;它们可以根据图像中像素的邻域信息来修改像素值&#xff0c;以实现去噪、模糊、锐化、边缘检测等效果。低通滤波器&#xff08;Low-pass Filte…...

MK的前端精华笔记

文章目录 MK的前端精华笔记第一阶段&#xff1a;前端基础入门1、&#xff08;1&#xff09;、&#xff08;2&#xff09;、 2、3、4、5、6、7、 第二阶段&#xff1a;组件化与移动WebAPP开发1、&#xff08;1&#xff09;、&#xff08;2&#xff09;、 2、3、4、5、6、7、 第三…...

低代码平台框架:开源选型、实践与应用深度解析

文章目录 1.1 低代码平台的重要性与应用背景2.1 表单建模2.2 流程设计2.3 报表&#xff08;打印&#xff09;可视化2.4 代码生成器2.5 系统管理2.6 前端UI开源选型3.1 如何选择合适的开源框架3.2 市场上的主要开源低代码平台对比3.3 开源项目的技术栈与优缺点分析 5.1 成功案例…...

深度学习500问——Chapter12:网络搭建及训练(3)

文章目录 12.3.5 Caffe有哪些接口 12.4 网络搭建有什么原则 12.4.1 新手原则 12.4.2 深度优先原则 12.4.3 卷积核size一般为奇数 12.4.4 卷积核不是越大越好 12.5 有哪些经典的网络模型值得我们去学习的 12.6 网络训练有哪些技巧 12.6.1 合适的数据集 12.6.2 合适的预…...

Android使用DevRing框架搭建数据库实体类以及使用

一、引用DevRing依赖 //导入DevRing依赖implementation com.ljy.ring:devring:1.1.8创建数据库表的依赖implementation org.greenrobot:greendao:3.2.2 // add libraryimplementation org.greenrobot:greendao-generator:3.0.0 二、修改工程目录下的.idea->gradle.xml文件&…...

高效BUG管理:定级、分类和处理流程

高效BUG管理&#xff1a;定级、状态跟踪与处理全流程 前言一、BUG的定义二、BUG的定级三、BUG的状态四、BUG的处理流程1. BUG报告2. BUG确认3. BUG修复4. BUG验证5. BUG关闭 五、常见问题与解决方案六、总结 前言 在测试工作中&#xff0c;BUG的定级和分类是一个重要环节&…...

服务器数据恢复—raid5热备盘同步失败导致阵列崩溃如何恢复数据?

服务器存储数据恢复环境&故障&#xff1a; 某品牌DS5300存储&#xff0c;包含一个存储机头和多个磁盘柜&#xff0c;组建了多组RAID5磁盘阵列。 某个磁盘柜中的一组RAID5阵列由15块数据盘和1块热备硬盘组建。该磁盘柜中的某块硬盘离线&#xff0c;热备盘自动替换并开始同步…...

Ubuntu iso 镜像下载 步骤截图说明

Ubuntu镜像下载&#xff0c;在这个网址&#xff1a; Enterprise Open Source and Linux | Ubuntu 步骤如下图所示&#xff1a; 1、登入网址 2、点击Get Ubuntu 3、点击Download Ubuntu Desktop 后续点击Downloadload 24.04 LTS直接下载就行 如果需要下载其它版本&#xf…...

git拉取gitee项目到本地

git安装等不做赘述。 根据需要选择不同操作 1.只是单纯拉取个项目&#xff0c;没有后续的追踪等操作 不需要使用git init初始化本地文件夹 新建一个文件夹用于存储项目&#xff0c;右键选择 git bash here 会出现命令行窗口 如果像我一样&#xff0c;只是拉取个项目作业&…...

力扣42.接雨水

力扣42.接雨水 前后缀数组 对于每个一个位置 求其前面最高高度pre_max[i] max(pre_max[i-1] , h[i])和后面最高高度suf_max[i] max(suf_max[i1] , h[i])当前i处的水容量 为min(pre_max[i] , suf_max[i]) - h[i] class Solution {public:int trap(vector<int>& …...

国产数据库与MYSQL兼容性?开发应该怎么选择?

国产数据库主要包括以下几种&#xff1a; TiDB&#xff1a;由 PingCAP 公司研发设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库&#xff0c;兼容 MySQL&#xff0c;支持无限的水平扩展&#xff0c;具备强一致性和高可用等特性。 华为GaussDB…...

Spring框架中Bean的生命周期

Bean的生命周期通常指的是从创建到初始化&#xff0c;经过一系列的流程&#xff0c;最终销毁的过程。只不过&#xff0c;在Spring框架中&#xff0c;Bean的生命周期是由Spring IOC容器来管理的。在Spring中&#xff0c;我们定义Bean时&#xff0c;也可以自己指定初始化和销毁的…...

从零到一学FFmpeg:avformat_alloc_output_context2 函数详析与实战

文章目录 前言一、函数原型二、功能描述三、使用场景四、AVFormatContext 结构体五、代码实例 前言 avformat_alloc_output_context2 是FFmpeg库中的一个函数&#xff0c;用于为输出多媒体文件初始化一个AVFormatContext结构体。这个函数在开始输出音频、视频数据到文件之前被…...

Lua 绕过元表

Lua 绕过元表&#xff0c;直接访问 table 的字段。 绕过元表 rawset(table, index, value)&#xff0c;在不触发元方法的情况下&#xff0c;设置 table[index] 的值为 value。 rawget(table, index)&#xff0c;在不触发元方法的情况下&#xff0c;获取 table[index] 的值。…...

pip方法总结(极简快速掌握)

pip是Python的包管理工具&#xff0c;它允许用户从PyPI等源安装和管理额外的库和依赖。以下是关于pip使用方法的详细总结&#xff0c;同时附上代码演示&#xff1a; 一、pip的基本功能 安装包&#xff1a;使用pip install 包名命令可以安装指定的Python包。例如&#xff0c;要…...

aigc基础概念(一)

目录 一、AI 1.1、基本术语 1、Artificial Intelligence (AI) —— 人工智能 2、Generative AI —— 生成性人工智能 3、Machine Learning (ML) —— 机器学习 4、Deep Learning (DL) —— 深度学习 5、Large Language Model (LLM) —— 大型语言模型 6、Transformers …...

USB学习——12、usb初始化和插拔驱动软件流程大致框架描述

usb初始化和插拔驱动软件流程大致框架描述&#xff1a; 当设备启动时&#xff0c;usb的主机控制器设备驱动&#xff08;HCD&#xff09;和 usb的root hub会先初始化&#xff1a; 1、xhci-plat.c主机控制器驱动那里&#xff0c;__usb_creat_hcd创建usb主机数据结构&#xff0c;m…...

【ARMv8/ARMv9 硬件加速系列 2.4 -- ARM NEON Q寄存器与V寄存器的关系】

文章目录 Q 与 V 的关系向量寄存器 v 的使用赋值操作寄存器赋值总结Q 与 V 的关系 在ARMv8/v9架构中,v寄存器和q寄存器实际上是对相同的物理硬件资源的不同称呼,它们都是指向ARM的SIMD(单指令多数据)向量寄存器。这些寄存器用于高效执行向量和浮点运算,特别是在多媒体处理…...

Oracle中递归查询(START WITH……CONNECT BY……)

一、基本语法 在Oracle中START WITH……CONNECT BY……一般用来查找存在父子关系的数据&#xff0c;也就是树形结构的数据。 SELECT * FROM TABLE WHERE 条件3 START WITH 条件1 CONNECT BY 条件2;start with [condition]&#xff1a;设置起点&#xff0c;用来限制第一层的数…...

【云原生|K8S系列】如何创建Kubernetes job和Cronjobs 入门指南

本kubernetes教程解释了如何创建kubernetes作业和cronjobs&#xff0c;以及它的基础知识、用例和一些提示和技巧。 什么是Kubernetes Job? Kubernetes job和cronjob是Kubernetes对象&#xff0c;主要用于短期和批处理工作负载。 kubernetes作业对象基本上部署了一个pod&…...

力扣每日一题 6/23 字符串/模拟

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 520.检测大写字母【简单】 题目&#xff1a; 我们定义&#xff0c;在以下…...

Google trend搜索关键词

Google trend地址&#xff1a;https://trends.google.com/trends/?geoUS&hlzh-CN 1、具体的操作步骤如下&#xff1a; 2、Google trend搜索页面如下&#xff1a;...

Unity C#调用Android,IOS震动功能

最近在Unity上需要很原生移动端进行交互&#xff0c; 原理&#xff1a;新建一个android项目&#xff0c;把生成的app module给干掉&#xff0c;然后留下一个vibrationPlugin module&#xff0c;在这个module下写android震动代码&#xff0c;将这个android工程构建出来的 aar移…...

Ruby 注释

Ruby 注释 在编程中&#xff0c;注释是用于解释代码如何工作以及为什么这样编写的重要工具。Ruby作为一种解释型、面向对象的脚本语言&#xff0c;提供了灵活的注释方式&#xff0c;帮助开发者更好地组织和理解代码。本文将详细介绍Ruby中的注释类型、用法以及最佳实践。 Rub…...

C语言入门系列:特殊的main函数和exit函数

文章目录 一&#xff0c;main函数二&#xff0c;exit函数1&#xff0c;exit函数2&#xff0c;atexit()函数2.1 atexit函数的简介2.2 atexit注册的函数一定会被调用吗2.2.1 正常退出测试2.2.2 异常退出测试 一&#xff0c;main函数 一个C程序至少包含一个函数&#xff0c;这个函…...

JAVA复习3

目录 19. 下列关于 do…while 语句和 while 语句的叙述中错误的是&#xff08; C &#xff09; 20. 若有定义 int a9, b6; System.out.println(a > b) 的结果是&#xff08; D &#xff09; 21. 关于接口和抽象类&#xff0c;下列说法正确的是&#xff08;A&#xff09; …...

Oracle共享内存不释放

Oracle数据库使用共享内存来管理其系统全局区&#xff08;SGA&#xff09;和程序全局区&#xff08;PGA&#xff09;。当Oracle数据库的共享内存没有正确释放时&#xff0c;可能会导致数据库启动失败或性能问题。以下是一些可能的原因和解决方法&#xff1a; /dev/shm空间不足&…...

windows cmd中单引号和双引号的问题

文章目录 前言单引号和双引号的用法单引号双引号 示例对比Linux ShellWindows CMD PowerShell中的引号用法结论 前言 这个问题的起因是在windows cmd中运行一个简单的命令 node -e console.log(process)发现没有输出&#xff0c;但是进入node环境后&#xff0c;直接执行conso…...

Nacos 2.x 系列【15】数据源插件支持达梦、Oracel、PostgreSQL......

文章目录 1. 概述2. 持久层机制2.1 固定语句2.2 数据源插件 3. 案例演示3.1 编译已实现插件3.2 自定义插件3.3 数据库初始化3.4 插件引入3.4.1 方式一&#xff1a;引入到源码3.4.2 方式二&#xff1a;插件加载目录 3.5 修改配置3.6 测试 1. 概述 在实际项目开发中&#xff0c;…...

HJ39判断两个IP是否属于同一子网(中)

提示&#xff1a;文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 接上文HJ39判断两个IP是否属于同一子网 查了下&#xff0c;atoi可以转换负数。 修改成下面的代码 #include <stdio.h> #include <stdlib.h> #include <stdbool.h>bool isTargetSonN…...

渗透测试基础(二) Linux+Win常用命令介绍

1. Linux常用命令 1.1 解压缩相关 1.1.1 tar命令 解包&#xff1a;tar zxvf FileName.tar 打包&#xff1a;tar czvf FileName.tar DirName1.1.2 gz命令 对于.gz格式的解压1&#xff1a;gunzip FileName.gz解压2&#xff1a;gzip -d FileName.gz压缩&#xff1a;gzip FileN…...

手机usb共享网络电脑没反应的方法

适用于win10电脑&#xff0c;安卓手机上可以 开启usb网络共享选择&#xff0c;如果选择后一直跳&#xff0c;让重复选择usb选项的话&#xff0c;就开启 开发者模式&#xff0c;进到 开发者模式 里设置 默认usb 共享网络 选项 &#xff0c;就不会一直跳让你选。 1.先用数据线 连…...

Scrivener v3 解锁版安装教程 (写作辅助软件)

前言 Scrivener&#xff0c;一个多功能的写作软件&#xff0c;被世界各地的作家广泛采用&#xff0c;从小说家到剧本家&#xff0c;再到非小说类作家和学术研究者&#xff0c;它的用户群跨越了广泛的领域&#xff0c;包括学生、法律专业人士、记者和翻译。这个软件非常注重用户…...

Python开发——用什么数据储存结构复杂的数据

在Python中&#xff0c;当需要储存包含不同类型的数据时&#xff0c;可以使用以下几种数据结构&#xff1a; 1. 字典&#xff08;dict&#xff09; 字典是一种非常灵活的数据结构&#xff0c;允许使用键-值对来存储不同类型的数据。 data {"name": "Alice&quo…...

【0-1系列】从0-1快速了解搜索引擎Scope以及如何快速安装使用(下)

前言 近日&#xff0c;社区版家族正式发布V2024.5版本&#xff0c;其中&#xff0c;社区开发版系列重磅发布Scope开发版以及StellarDB开发版。 为了可以让大家更进一步了解产品&#xff0c;本系列文章从背景概念开始介绍&#xff0c;深入浅出的为读者介绍Scope的优势以及能力…...

前端核心框架Vue指令详解

目录 ▐ 关于Vue指令的介绍 ▐ v-text与v-html ▐ v-on ▐ v-model ▐ v-show与v-if ▐ v-bind ▐ v-for ▐ 前言&#xff1a;在学习Vue框架过程中&#xff0c;大家一定要多参考官方API &#xff01; Vue2官方网址https://v2.cn.vuejs.org/v2/guide/ ▐ 关于Vue指令的…...

SD卡无法读取?原因分析与数据恢复策略

一、SD卡无法读取的困境 SD卡作为便携式的存储介质&#xff0c;广泛应用于手机、相机、平板等多种电子设备中。然而&#xff0c;在使用过程中&#xff0c;我们可能会遭遇SD卡无法读取的困扰。当我们将SD卡插入设备时&#xff0c;设备无法识别SD卡&#xff0c;或者虽然识别了SD…...

线程池的工作原理

线程池可以减少创建和销毁线程的次数&#xff0c;从而减少系统资源的消耗。当一个任务&#xff08;Runnable或Callable对象&#xff09;&#xff08;Runnable无返回值&#xff0c;Callable有返回值&#xff09;被提交到线程池时&#xff1a; 一、首先判断核心线程池中的线程是…...

Nikto一键扫描Web服务器(KALI工具系列三十)

目录 1、KALI LINUX 简介 2、Nikto工具简介 3、信息收集 3.1 目标IP&#xff08;服务器) 3.2kali的IP 4、操作实例 4.1 基本扫描 4.2 扫描特定端口 4.3 保存扫描结果 4.4 指定保存格式 4.5 连接尝试 4.6 仅扫描文件上传 5、总结 1、KALI LINUX 简介 Kali Linux 是一…...

全局变量和局部变量

全局变量未初始化&#xff0c;则它的值为0&#xff1b; 局部变量未初始化&#xff0c;则它的值为随机值&#xff1b; 局部变量的作用域是变量所在的局部范围; 全局变量的作用域是整个工程; 生命周期&#xff1a; 变量的生命周期指的是变量从创建到销毁的整个阶段。 局部变量的生…...

[机器学习算法]支持向量机

支持向量机&#xff08;SVM&#xff09;是一种用于分类和回归分析的监督学习模型。SVM通过找到一个超平面来将数据点分开&#xff0c;从而实现分类。 1. 理解基本概念和理论&#xff1a; 超平面&#xff08;Hyperplane&#xff09;&#xff1a;在高维空间中&#xff0c;将数据…...

Springboot应用的信创适配

CentOS7在2024.6.30停止维护后&#xff0c;可替代的Linux操作系统-CSDN博客 全面国产化之路-信创-CSDN博客 信创适配评测-CSDN博客 Springboot应用的信创适配 Springboot应用的信创适配&#xff0c;如上图所示需要适配的很多&#xff0c;从硬件、操作系统、中间件&#xff08…...

认识流式处理框架Apache Flink

目录 一、Apache Flink 的基础概念 1.1 Apache Flink是什么&#xff1f; 1.2 Flink的定义 二、Apache Flink 的发展史 2.1 Flink前身Stratosphere 2.2 Flink发展时间线及重大变更 三、Flink核心特性 3.1 批流一体化 3.2 同时支持高吞吐、低延迟、高性能 3.3 支持事件时…...

git pull拉取显示Already up-to-date,但文件并没有更新

1、问题&#xff1a; 使用git pull拉取远程仓库代码&#xff0c;显示更新成功&#xff08;Already up-to-date&#xff09;&#xff0c;但是本地代码没有更新 这是因为本地有尚未提交的更改&#xff0c;和远程代码有冲突导致无法更新 2、解决方法&#xff1a; 可以使用git s…...

嵌入式c语言——类型修饰符

register&#xff0c;将变量保存在寄存器中&#xff0c;使得访问速度增加 const是常量&#xff0c;static是静态量&#xff0c;volatile是...

代码随想录Day69(图论Part05)

并查集 // 1.初始化 int fa[MAXN]; void init(int n) {for (int i1;i<n;i)fa[i]i; }// 2.查询 找到的祖先直接返回&#xff0c;未进行路径压缩 int.find(int i){if(fa[i] i)return i;// 递归出口&#xff0c;当到达了祖先位置&#xff0c;就返回祖先elsereturn find(fa[i])…...

Go 语言多版本管理的最佳实践 —— Linux 和 Windows 专题20240702

Go 语言多版本管理的最佳实践 —— Linux 和 Windows 专题 引言 在软件开发的世界里&#xff0c;保持开发环境的最新和兼容至关重要。特别是 Go 语言&#xff0c;随着版本的更新&#xff0c;不同项目可能需要不同的 Go 版本。这时&#xff0c;如何在同一台机器上高效管理多个…...

爬虫逆向实战(42)-某巢登陆(AES、MD5、RSA、滑块验证码)

一、数据接口分析 主页地址&#xff1a;某巢 1、抓包 通过抓包可以发现在登录时&#xff0c;网站首先请求captcha/querySlideImage/来获取滑块验证码的图片&#xff0c;然后请求captcha/checkCode/接口来验证滑块验证码。滑块验证码校验成功后&#xff0c;请求noshiro/getPu…...

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

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

新火种AI|寻求合作伙伴,展开豪赌,推出神秘AI项目...苹果能否突破AI困境?

作者&#xff1a;小岩 编辑&#xff1a;彩云 2024年&#xff0c;伴随着AI技术的多次爆火&#xff0c;不仅各大科技巨头纷纷进入AI赛道展开角力&#xff0c;诸多智能手机厂商也纷纷加紧布局相关技术&#xff0c;推出众多AI手机。作为手机领域的龙头老大&#xff0c;苹果自然是…...

Unix环境高级编程--8-进程控制---8.1-8.2进程标识-8.3fork函数-8.4 vfork函数

1、进程控制几个过程 创建进程--》执行进程---》终止进程 2、进程标识 &#xff08;1&#xff09;专用进程&#xff1a;ID为0的进程是调度进程&#xff0c;常常被称为交换进程&#xff0c;也称为系统进程&#xff1b; ID为1通常是init进程&#xff0c;在自举结束时由内核调用…...

习近平将出席中国—阿拉伯国家合作论坛第十届部长级会议开幕式并发表主旨讲话

新华社北京5月26日电 外交部发言人华春莹26日宣布:经中阿双方共同商定,中国—阿拉伯国家合作论坛第十届部长级会议将于5月30日在北京举行。国家主席习近平将出席会议开幕式并发表主旨讲话。中共中央政治局委员、外交部长王毅将同阿方主席、毛里塔尼亚外长马尔祖克共同主持会议…...

JAVA系列:NIO

NIO学习 一、前言 先来看一下NIO的工作流程图&#xff1a; NIO三大核心组件&#xff0c;channel&#xff08;通道&#xff09;、Buffer&#xff08;缓冲区&#xff09;、selector&#xff08;选择器&#xff09;。NIO利用的是多路复用模型&#xff0c;一个线程处理多个IO的读…...

软件架构设计之质量属性浅析

引言 在数字化浪潮席卷而来的今天&#xff0c;软件已经渗透到我们生活的方方面面&#xff0c;从手机APP到大型企业级系统&#xff0c;无一不彰显着软件技术的魅力。然而&#xff0c;在这背后&#xff0c;软件架构设计作为软件开发的基石&#xff0c;其质量属性的重要性不言而喻…...