在 SaaS 应用上构建 BI 能力的实战之路
SaaS 产品在持续运营过程中积累了大量数据,这些数据不仅是数字的记录,更是洞察市场趋势、优化产品功能、提升用户体验的宝贵资源。
因此,大部分的 SaaS 产品在发展到一定阶段后,都会开始构建自己的报表模块或分析模块,将数据的潜在价值转化为可操作的商业洞察,从而显著提升 SaaS 产品的附加值和市场竞争力。
本文从衡石服务了国内近200家头部 SaaS 和软件厂商的实践经验,与大家一起探讨:
· SaaS 分析工具与企业内部的分析工具有何异同
· 如何提升 SaaS 分析模块的产品附加值
· 落地分析能力的过程中有什么值得注意的点
SaaS 上数据分析的特点
从根本上说,在 SaaS 上进行数据分析,与企业内部的商业运营分析,在核心流程上基本一致,一般都可以概括为以下三个环节:
1,数据加工处理
数据的 ETL、数仓建模、分层预计算,由数据开发人员完成。
2,可视化开发
dashboard、报表开发,本质上是在定义分析框架和分析流程,由分析师完成。
3,业务侧消费
查看和消费制作好的报表,通过数据进行日常业务运营和决策,由运营人员或管理者完成。
但在实际运行中,两者也会存在一些显著的差异,从而带来不一样的挑战。这里的差异体现在两方面:
一方面,在分工的界限上
在 SaaS 上的分析是企业间的协作,而企业内部的运营分析则更多是部门间的配合。
在企业内部分析中,以上三个环节的工作,常常由数据中台团队和各业务线共同完成:
· ETL 和数仓部分由中台团队负责。
· 可视化报表的开发,有些是中台团队统一完成,有些由业务线的分析师自己定制。
· 最终各业务线的运营和决策者进行看板消费。
而在 SaaS产 品中,平台方承担了数据中台的角色,以及大部分的可视化展现,租户则主要进行业务数据消费。这种分工协作上的差异,会导致这两种分析场景在分析形态和侧重点上的不同。
另一方面,是分析主导权的差异
企业内部,分析的主导权在于业务部门,中台团队更多是承接需求,主要的原因是各部门或各业务线的分析内容可能差异化很大,比如在一些视频平台企业,广告商业化团队和用户增长团队的分析方法论和关注的指标可能截然不同,甚至有所冲突,无法用同一套分析方法论指引。
而在 SaaS 场景下,分析的主导权在于平台方(对应的企业内中台团队),主要原因在于 SaaS 产品往往是某个细分场景的数字化解决方案,具有极高的分析共性。同时 SaaS 平台作为行业内标准业务方法论的倡导者,在服务了 N 家租户后,有能力也有必要提炼出相对通用的分析方法论。
SaaS 企业是否意识到自己应该掌握分析主导权,也是SaaS 产品是否能真正构建出高附加价值分析模块的关键前提。
SaaS 数据分析的产品形态
如上文所述,SaaS 的分析流程中,分析师的角色(负责可视化报表的开发工作),可能分化为平台方分析师或租户自己的分析师,这种分化直接导致了 SaaS 分析形态的多样化。
具体而言,SaaS 的分析形态主要分为两种:
1,报表服务形态
平台方构建可视化看板和表格,租户作为纯粹的消费者,此时平台方提供的是分析成果。这种形态的典型如分贝通费控BI,以客户支出管理数据为出发点,构建了机票、酒店、餐饮等一个个专题看板,为租户展现差旅预算的多维度数据视角。
2,分析工具形态
平台方仅仅进行基础数据的处理和权限管理,租户用零代码或低代码的方式组装自己的个性化报表,此时平台方提供的是规范的数据及简单易用的BI工具能力。这种形态的典型代表如纷享销客的自助式BI,通过开放自助式BI的功能,用户可以在纷享销客上继承纷享销客paas平台的对象数据,通过简单的拖拽点选即可实现灵活定义分析模型和可视化自助分析。
在 SaaS 行业的实际发展中,这两种形态并非截然分开,多数情况下是报表服务形态占主导,同时辅以少量的租户自助分析的工具,而完全由租户进行自助分析的情况较为罕见。
大多数的 SaaS 产品,一开始只有报表模块,但随着租户的个性化分析需求越来越多,逐渐都会希望开放自助分析能力到租户。大家往往是出于朴素的技术本位思想,希望降低服务成本,零代码的工具给到租户自己分析,减少自己定制需求的开发压力。同时会认为这样可以提高产品价值,“授人以鱼不如授人以渔”,毕竟看起来卖工具应该比卖报表更有价值。
但这种想法很多时候会有些理想化,我们看到真正能推到租户侧进行自助分析的case还比较少。这里面的原因有两方面:
一方面是成本博弈
租户自助分析,某种程度上是将开发报表的成本转移到租户侧,租户本能上是抗拒的:平台做好了我直接消费,为什么要自己开发?除非平台方对个性化报表做好了明确定价,当定制成本+等待平台开发的时间成本,大于自助分析的成本时,租户才有可能考虑使用自助分析功能。这里平台对于报表模块和自助分析模块的定价策略将会成为关键。
另一方面是分析工具的使用门槛依然较高
零代码不代表零门槛,而中国当前的数字化水平现状,决定了大部分租户没有分析师团队,连 BI 的概念都没接触过,不具备使用自助分析工具的能力。当然,随着 AI 的发展,BI 的使用门槛有可能被大大降低,从而让自助分析的推广更易落地。
因此,在服务了国内大量头部 SaaS 的过程中,我们对于 SaaS 分析产品的形态,给出比较务实的建议:
建议1:重点做好报表服务,满足租户的标准报表和个性化报表需求
报表消费,仍是近90% SaaS 租户的主要分析方式。那么报表服务怎么能做到高附加价值呢?
首当其冲的关键,SaaS 产品应提炼具备行业高度的分析方法论。上文提到的,SaaS 平台需要掌握分析主导权,在服务众多行业客户后,形成行业 Know-how,输出带咨询属性的分析解决方案。如马上赢的品牌 CT 服务、神策数据的用户分析体系等,提供的不是简单的数据呈现,同时还有用户应该如何分析、诊断和洞察的分析方法论。
这些方法论往往是以行业关键指标体系作为框架,相关的指标分析看板为载体进行输出。因此,分析工具中沉淀和管理行业指标体系的能力,在近年来逐渐成为关注的重点。
其次,报表服务需要不断地迭代升级。市场和行业在不断变化,分析方法论也需要不断更新来保持行业先进性,确保 SaaS 产品的专家价值没有衰减。分贝通费控 BI,大约会以每半年~一年升级一次的频率更新报表模块,从而保持产品价值。
再次,KA 客户的定制化需求强烈,在标准模板基础上的个性化报表服务,是提升客户粘性和产品满意度的重要手段,也是不少 SaaS 产品增购收入的重要来源。因此,报表服务的分析底座,需要具备支持报表的快速迭代,以及基于模版高效分发的能力。
建议2:是否开放自助分析,以及自助分析的产品形式,需要审慎的判断和选择
SaaS 平台应谨慎辨别租户分析需求的个性化程度,以及租户是否有足够的数据素养。同时自助分析能力的提供,不应以转移成本为主要出发点,不应简单地将基础数据开放给租户,让租户在一张白纸上无边界地自助探索。而应以在标准分析方法论的基础上,提供更多灵活性为出发点。
因此,平台方依然需要承担主导分析框架的责任,应该在框定好方法论体系,以确保租户能真正用出自助分析的能力。
当前所观察到的情况而言,我们看到两种自助分析方式类型。其一是为租户开放完全可视化特性的能力模式,即相当于在 SaaS 产品中嵌入一个小型 BI,租户可以进行数据集处理、数据建模、复杂的 dashboard 开发和配置。在此模式下,平台方有必要事先封装整合好数据包以及基础的原子指标,从而为租户的自助分析搭建起稳固的数据基石。其二是以预先封装好的指标卡(或图表组件)作为最基本的分析单元,租户只能在已有的指标库(图表库)里,选择平台封装好指标卡(或图表),拼装自己需要的 dashboard。
相对方式一,方式二灵活性较弱,但使用门槛更低。具体何种方式,应根据实际的行业特性进行选择。
高效构建 SaaS 产品分析能力的路径选择
在实际打造自己的报表模块或分析模块的过程中,SaaS 平台往往面临着两种主要的路径抉择:其一是自研分析工具,其二则是集成第三方工具。
随着软件产品的生态发展和业界内的实践,大家对于这两条路径的认知也越来越明确:
1
自研 BI 是一个成本高(每年数百万以上的研发投入)、周期长(开发到上线1年以上时间)、风险大(技术难点多)的项目。
2
BI 是一个相对通用的产品,且与大部分 SaaS 的主要业务逻辑无关。
因此,集成一个第三方分析工具,成为更多 SaaS 企业的选择,不仅能高效地在产品中引入强大的分析能力,也能将宝贵的研发成本,聚焦在核心业务的拓展与优化上,提升 SaaS 平台的整体竞争力与市场适应性。
从衡石与上百家 SaaS 伙伴的集成经验看,只需要大约1个工程师的成本,1~2个月时间,即可完成产品的集成上线,极大地提高了 ROI。
当然,软件产品间的集成免不了一个相互磨合的过程。在与 BI 工具集成过程中,SaaS 平台也需注意避免几个潜在陷阱:
角色分工优化
一些伙伴因为自研报表时的工作习惯,会由前端工程师在BI工具上为客户开发可视化报表,这样不仅浪费研发资源,也可能影响报表构建效率。更合适的方式,是由数据产品经理或分析师进行相应的看板搭建,这类角色更贴近业务,也更适合作为SaaS分析主导权的把控者。
定制需求管控
个性化报表需求,是 SaaS 产品标准化流程之外的一个非标服务,因此需要小心应对,控制定制需求的范围,以便确保平台方能通过零代码的分析工具来降低定制化服务的服务成本。
BI 与数仓的协同
当前很多 BI 工具都带一定的 ETL 模块,但数仓与 BI 之间仍是相互配合的关系,BI 无法取代数仓的基础性数据加工的功能,特别在数据量较大的场景,还是需要 SaaS 平台的数据团队,在底层构建出坚实的数据底座,确保数据加工处理的高效与稳定。
结语
由于篇幅原因,关于 SaaS 产品中分析模块的构建实践就与大家分享到此。作为专注于赋能 SaaS 和软件厂商的企业级 BI PaaS 平台,衡石也将持续关注数字化领域的发展,与伙伴们一起探索在各个场景中智能化分析的未来。
相关文章:
在 SaaS 应用上构建 BI 能力的实战之路
SaaS 产品在持续运营过程中积累了大量数据,这些数据不仅是数字的记录,更是洞察市场趋势、优化产品功能、提升用户体验的宝贵资源。 因此,大部分的 SaaS 产品在发展到一定阶段后,都会开始构建自己的报表模块或分析模块,…...
代码随想录刷题day51|(二叉树篇)654.最大二叉树
一、二叉树基础知识 详见:代码随想录刷题day34|(二叉树篇)二叉树的递归遍历-CSDN博客 二、递归思路 递归三部曲 构造树一般采用前序遍历,因为先构造中间节点,然后递归构造左子树和右子树; 1.递归函数参数…...
深入理解 C++11 智能指针:独占、共享与弱引用的完美管理
文章目录 std::unique_ptr(独占式智能指针)std::shared_ptr(共享式智能指针)std::weak_ptr(弱引用智能指针)示例展示:智能指针的原理内存泄漏**什么是内存泄漏,内存泄漏的危害****如…...
1.2 编译器结构
编译器具有模块化的高层结构。还可以将模块化进一步细化。编译器可以看成多个阶段构成的流水线结构。 一种没有优化的编译器结构 更复杂的编译器结构...
文件操作助手
文件操作助手 在我们实现一个大型项目时,往往会有一个公共模块,这个公共模块是公用的,里面可能会包含文件操作助手、字符串操作助手、时间戳操作助手… 而我们今天就来实现一个文件操作助手,里面包含的功能有: 判断…...
线段树与扫描线 —— 详解算法思想及其C++实现
目录 一、线段树(Segment Tree) 基本概念 结构 操作 示例代码 二、扫描线(Sweep Line) 基本概念 应用场景 示例代码(矩形面积并集) 三、总结 一、线段树(Segment Tree) 基本…...
Leetcode 刷题笔记1 图论part04
leetcode 110 字符串接龙 def judge(s1, s2):count 0for i in range(len(s1)):if s1[i] ! s2[i]:count 1return count 1if __name__ __main__:n int(input())begin_str, end_str map(str, input().split())if begin_str end_str:print(0)exit()strlist []for _ in ran…...
快速入手:Nacos融合SpringCloud成为注册配置中心
快速入手:Nacos融合SpringCloud成为注册配置中心 前言安装Nacos项目搭建添加配置启动类添加注解运行项目服务调用RestTemplate 模式FeignClient 模式 前言 Spring Cloud是一系列框架的集合,提供了微服务架构下的各种解决方案,如服务治理、配…...
others-rustdesk远程
title: others-rustdesk远程 categories: Others tags: [others, 远程] date: 2025-03-19 10:19:34 comments: false mathjax: true toc: true others-rustdesk远程, 替代 todesk 的解决方案 前篇 官方 服务器 - https://rustdesk.com/docs/zh-cn/self-host/rustdesk-server-o…...
go:前后端分离
1.前端代码 新建一个前端文件夹,在该文件夹下新建一个.html文件,写入自己的html代码。 前端搞定。 2.后端代码 其核心是挂载路由接受前端传来的数据核心代码如下: func main() { // 服务运行提示 fmt.Println("go web server is runn…...
lodash 学习笔记/使用心得
lodash 学习笔记/使用心得 简单记一下 lodash 的一点学习笔记使用心得,最近也是打算清理一下所有的 dead code,然后发现我们用了好多的 lodash 方法。对比了之前的写法,重新看了一下官方文档,再自己重新动手写了点 util 之后发现…...
网络爬虫【爬虫库request】
我叫不三不四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲爬虫 Requests是Python的一个很实用的HTTP客户端库,完全满足如今网络爬虫的需求。与Urllib对比,Requests不仅具备Urllib的全部功能;在开发使用上&…...
AI日报 - 2025年3月24日
🌟 今日概览(60秒速览) ▎🤖 AGI突破 | Lyra生物序列建模架构效率惊人 在100生物任务中达最优,推理速度提升高达12万倍 ▎💼 商业动向 | OpenAI用户破4亿,Meta与Reliance探讨AI合作 生态扩展与全…...
Android平台毫秒级低延迟HTTP-FLV直播播放器技术探究与实现
一、前言 在移动互联网蓬勃发展的今天,视频播放功能已成为众多Android应用的核心特性之一。面对多样化的视频格式和传输协议,开发一款高效、稳定的视频播放器是许多开发者追求的目标。FLV(Flash Video)格式,尽管随着H…...
动态规划——混合背包问题
动态规划——混合背包问题 混合背包问题01背包与完全背包的混合:完全背包与多重背包的混合:三种背包混合混合背包OJ汇总 混合背包问题 将01背包、完全背包、多重背包混合起来的背包问题。也就是说,有的物品只可以取一次(01背包&a…...
数据库操作练习
一.向heros表中新增一列信息,添加一些约束,并尝试查询一些信息 //向表中添加一列age信息 alter table heros add column age int;//id列添加主键约束,设置自增 alter table heros modify column id int auto_increment primary key;//name列…...
3.milvus索引-HNSW
索引作用 加速大型数据集上的查询。 向量字段,仅只能创建一个索引。 milvus支持的向量索引类型大部分使用 近似最近邻搜索算法。ANNS该算法的核心不局限于返回最准确的结果,而是仅搜索目标的邻居。ANNS通过在可接受的范围内牺牲准确性提高检索效率。 …...
算法基础——栈
一、栈的概念 栈是⼀种只允许在⼀端进⾏数据插⼊和删除操作的线性表。 进⾏数据插⼊或删除的⼀端称为栈顶,另⼀端称为栈底。不含元素的栈称为空栈。进栈就是往栈中放⼊元素,出栈就是将元素弹出栈顶。 二、栈的模拟实现 1. 创建 本质还是线性表&#…...
开发语言漫谈-groovy
groovy是一门脚本语言,在前期的脚本语言中简单介绍了下。现在再深入介绍下,因为它是本平台上选用的脚本语言。所谓脚本语言就是不用编译,直接执行。这种特色非常适合做嵌入编程,即编即用。我们知道平台后台的业务开发语言是Java&a…...
ArkUI-List组件
列表是一个复杂的容器,当列表项达到一定数量,使得列表内容超出其范围的时候,就会自动变为可以滚动。列表适合用来展现同类数据类型。 List组件支持使用,条件渲染,循环渲染,懒加载等渲染控制方式生成子组件…...
数据仓库的 DWD 分层架构:构建高效数据平台的基石
在数据驱动的时代,数据仓库(Data Warehouse)作为企业数据分析的核心基础设施,扮演着至关重要的角色。而数据仓库的分层设计,则是确保数据高效流转、提升数据质量、支持复杂分析的关键。本文将深入探讨数据仓库的 DWD 分…...
山东大学数据结构课程设计
题目:全国交通咨询模拟系统 问题描述 处于不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能地短,出门旅游的旅客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编织一个全国城市间的交…...
动态规划-01背包
兜兜转转了半天,发现还是Carl写的好。 看过动态规划-基础的读者,大概都清楚。 动态规划是将大问题,分解成子问题。并将子问题的解储存下来,避免重复计算。 而背包问题,就是动态规划延申出来的一个大类。 而01背包&…...
【2025】基于node.js的中医药科普平台的设计与实现(源码、万字文档、图文修改、调试答疑)
项目完整功能以演示视频为准 基于Node.js的中医药科普平台的设计与实现功能结构图如下 课题背景 随着人们健康意识的提高,中医药作为传统医学的重要组成部分,越来越受到关注。然而,中医药知识专业性强,普通大众获取准确、全面的中…...
基于Flux模型的多模态可控图像生成工作流实践
一、技术框架与模型选型 当前图像生成领域对多模态控制与一致性保持的需求日益增强,本文将基于Black Forest Labs推出的Flux.1模型,结合ControlNet的循环一致性优化技术,构建一套融合Canny边缘检测与深度图(Depth)控制…...
缓存过期时间之逻辑过期
1. 物理不过期(Physical Non-Expiration) 定义:在Redis中不设置EXPIRE时间,缓存键永久存在(除非主动删除或内存淘汰)。目的:彻底规避因缓存自动过期导致的击穿(单热点失效ÿ…...
JVM类加载过程详解
文章目录 前言1.加载2.链接验证文件格式验证元数据验证字节码验证符号引用验证 准备解析 3.初始化4.类卸载 前言 类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为 7 个阶段:加载(Loading)、验证&a…...
第三十二篇 深入解析Kimball维度建模:构建企业级数据仓库的完整框架
目录 一、维度建模设计原则深度剖析1.1 业务过程驱动设计1.2 星型模式VS雪花模式 二、维度建模五步法实战(附完整案例)2.1 业务需求映射2.2 模型详细设计2.3 缓慢变化维处理 三、高级建模技术解析3.1 渐变维度桥接表3.2 快照事实表设计 四、性能优化体系…...
WPF 布局中的共性尺寸组(Shared Size Group)
1. 什么是共性尺寸组? 在 WPF 的 Grid 布局中,SharedSizeGroup 允许多个 Grid 共享同一列或行的尺寸,即使它们属于不同的 Grid 也能保持大小一致。这样可以保证界面元素的对齐性,提高布局的一致性。 SharedSizeGroup 主要用于需…...
19 数码管的动态显示
1、八段数码管 八段数码管 是一个 “ 8 ” 字型数码管,分为八段,a b c d e f g dp,其中dp为小数点。每一段为一个发光二极管,这样的 8 段称为 段选信号 。 2、实验 1、实验目标:让六位数码管 从 0 开始记数࿰…...
pytorch 笔记:张量索引的维度扩展规则
1 基本原理 在PyTorch中,张量索引的维度扩展规则遵循以下原则: 索引操作的核心规则: 当使用索引数组访问张量时: 索引数组的每个元素对应选取原张量的一个子张量结果形状 索引数组形状 原张量剩余维度形状 这么说可能不清…...
课外活动:怎么理解可变成本?
可变成本深度解析 🧮 一、可变成本的本质 #mermaid-svg-qoqQaFxQBuZZfAD2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qoqQaFxQBuZZfAD2 .error-icon{fill:#552222;}#mermaid-svg-qoqQaFxQBuZZfAD2 …...
深入理解 JVM 的垃圾收集器:CMS、G1、ZGC
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
IDEA 快捷键ctrl+shift+f 无法全局搜索内容的问题及解决办法
本篇文章主要讲解IDEA、phpStrom、webStrom、pyCharm等jetbrains系列编辑器无法进行全局搜索内容问题的主要原因及解决办法。 日期:2025年3月22日 作者:任聪聪 现象描述: 1.按下ctrlshiftf 输入法转为了繁体。 2.快捷键ctrlshiftr 可以全局检…...
智慧高速,安全护航:视频监控平台助力高速公路高效运营
随着我国高速公路里程的不断增长,交通安全和运营效率面临着前所未有的挑战。传统的监控方式已难以满足现代化高速公路管理的需求,而监控视频平台的出现,则为高速公路的安全运营提供了强有力的技术支撑。高速公路视频监控联网解决方案 高速公路…...
括弧匹配检验(信息学奥赛一本通-1354)
【题目描述】 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ࿳…...
MacOS安装 nextcloud 的 Virtual File System
需求 在Mac上安装next cloud实现类似 OneDrive 那样,文件直接保存在服务器,需要再下载到本地。 方法 在 官网下载Download for desktop,注意要下对版本,千万别下 Mac OS默认的那个。 安装了登录在配置过程中千万不要设置任何同…...
【秣厉科技】LabVIEW工具包——OpenCV 教程(11):人脸检测与识别
文章目录 前言级联分类器FaceDetectorYNFaceRecognizerSF1. 特征提取2. 人脸对比3. 人脸身份识别(最佳匹配法) 总结 前言 需要下载安装OpenCV工具包的朋友,请前往 此处 ;系统要求:Windows系统,LabVIEW>…...
C++-C++中的几种cast
文章目录 static_castPOD类型互转任意指针类型与void*互转基类继承类之间的互转具有目标类型转换函数的类/单参数的构造函数 dynamic_castreinterpret_cast static_cast 所谓static,意思是在编译期进行的转换,static_允许如下转换: POD类型…...
list的模拟实现和学习
1. list的介绍及使用 说白了就是带头循环双向循环链表 stl 的两大组件就是容器和算法 ,他们两个之间是通过迭代器进行联系的 这三种算法函数 迭代器的种类 性质(容器底层结构决定) 单项: forward_list /哈希(unord…...
程序代码篇---Pyqt的密码界面
文章目录 前言一、代码二、代码解释2.1用户数据库定义2.2窗口初始化2.3认证逻辑2.5角色处理2.6错误处理优化2.7功能扩展说明2.7.1用户类型区分管理员普通用户其他用户 2.7.2安全增强建议 三、运行效果四、运行命令五、界面改进建议5.1密码显示5.2用户头像显示5.3输入框动画效果…...
设计模式的六大原则
设计模式的六大原则 1. 单一职责原则 (Single Responsibility Principle, SRP) 一个类应该只负责一项职责。 示例代码 // 不好的设计:一个类承担多个职责 typedef struct {void (*read_data)(void);void (*process_data)(void);void (*save_data)(void);void (*…...
【Linux】信号:信号保存和处理
🔥个人主页:Quitecoder 🔥专栏:linux笔记仓 目录 01.阻塞信号信号集 02.捕捉信号sigaction可重入函数volatileSIGCHLD 01.阻塞信号 实际执行信号的处理动作称为信号递达:每个信号都有一个默认行为,例如终…...
Linux 线程概念
目录 一、什么是线程 1. 线程的本质 2. 线程的独有资源 3. 进程与线程关系示意图 二、线程的优缺点 2.1 线程的优点 2.2 线程的缺点 三、线程的异常与用途 1. 线程异常 2. 线程用途 四、进程 VS 线程 1. 核心差异 2. 进程的多个线程共享的资源 3. 进程和线程的关…...
红帽认证工程师价值
红帽认证工程师具有较高的价值,主要体现在以下几个方面: 行业认可度高 国际通用:红帽公司是全球领先的开源解决方案提供商,其认证在全球范围内被广泛认可。无论是在国内还是国外,拥有红帽认证工程师资格证书都能为个人…...
交换机远程登录
创建交换机 创建PC主机使用直通线连接交换机 配置交换机,使之能够与PC通信 双击交换机打开界面,选择CLI ">“表示用户模式 输入”?“查看可以使用的命令 “#” 特权模式,输入命令enable切换 输入”?“查看特权模式下可以使用…...
opencascade 源码学习 XmlDrivers-XmlDrivers
OpenCASCADE 中的 XmlDrivers 是用于处理 XML 格式的 CAD 数据持久化模块,属于 OCAF(Open CASCADE Application Framework) 的一部分。它允许将 OCAF 文档(包含 CAD 数据、属性、关系等)序列化为 XML 文件,…...
【Linux网络-五种IO模型与阻塞IO】
一、引入 网络通信的本质就是进程间的通信,进程间通信的本质就是IO(Input,Output) I/O(input/output)也就是输入和输出,在冯诺依曼体系结构当中,将数据从输入设备拷贝到内存就叫作…...
Redis、Memcached应用场景对比
环境 Redis官方网站: Redis - The Real-time Data Platform Redis社区版本下载地址:Install Redis | Docs Memcached官方网站:memcached - a distributed memory object caching system Memcached下载地址:memcached - a dis…...
Qt窗口控件之菜单栏QMenuBar
菜单栏QMenuBar 1. QMenuBar Qt 中的菜单栏是通过 QMenuBar 类型来实现的,一个主控件最多只能有一个菜单栏。一个菜单栏可以添加多个菜单,一个菜单又可以添加多个菜单项。 每个菜单又都是一个 QMenu 类型,每个菜单项都是一个 QAction。 2.…...