拥有600+门店的宠物连锁医院,实现核心业务系统上云
瑞派宠物医院管理股份有限公司(以下简称“瑞派宠物“)从2017年开始数字化转型之路。瑞派宠物在全国有600+连锁门店,随着业务量增加,线下部署的财务系统存在设备老旧、机房环境差等问题,部分在公有云上的业务,安全防护问题也令人担忧。种种因素叠加,瑞派宠物开始规划一条创新的云化转型之路。
瑞派宠物目前的IT基础设备由两部分组成,一部分是本地机房,另一部分则是采用某公有云承载的云端服务。随着公司业务的快速发展,现有的以公有云共享区形式提供的云服务,已不能满足医院数据独享可控的需要,因此需要选择更适配的云服务模式进行业务承载。瑞派宠物面临的主要挑战如下:
- 线下部署的财务系统因设备老旧、机房环境差导致问题频发,但因为涉及敏感数据,财务部门出于安全考虑,对于上公有云较为担忧。
- 为了保障用户的信息安全,预计在安全防护上投入会越来越大,采用市面上其他云服务的部分安全组件,价格高昂。
- 公有云模式下,只提供安全工具式的方式并不能解决传统安全的威胁,而业务运行在公有云的共享区,使得上面任意一个虚拟机逃逸,都可能威胁到其他用户的资产,大量的服务资源也可能因为配置错误导致直接暴露到公网,存在很大的安全隐患。
- 自建私有云TCO成本居高不下,建设周期和人员制度的磨合期也对业务上线与稳定运行提出了更高的挑战。
其中,瑞派宠物对于财务系统的数字化升级尤为看重。财务系统的升级,可提高财务管理水平、优化业务流程、降低成本、支持企业决策等,并且可以通过集成的财务管理模块,帮助用户实现财务数据的自动化处理、数据分析和决策支持,满足不同行业的特殊需求。
财务系统如果发生故障,将导致较为严重的问题,在对比了市面上的各类产品及方案后,瑞派宠物决定采用深信服托管云——既具备公有云的资源弹性伸缩、资源在线化、服务化交付的特点,也具备私有云一样的专属资源物理隔离的特点,可满足瑞派宠物的上云需求。
一、托管云技术方案,支撑数字化升级
托管云整体方案架构
基于瑞派宠物医院的现有资源和新建资源需求,本次方案设计采用托管私有云方式设计,机房节点选择为天津一区节点,资源集群独享,以产品+服务的方式进行建设。同时专属托管私有云支持按年灵活计费,若后期需求变动可对资源以年为周期、按照节点数进行动态弹性伸缩,灵活应对医院后续业务需求。除此之外,还一站式提供等保三级所需的安全服务组件及配套的安全运营服务。
资源规划设计
深信服从性能、接入可靠性、安全等方面对用户财务系统进行了详细的设计,以确保业务的安全性和性能。
针对用户财务部门对上云安全性的担忧与质疑,托管云提供了端到端的安全防护措施,涵盖网络层、主机层和数据层。通过部署丰富的安全产品,实现全流程的安全防护,确保数据的完整性和保密性。此外还提供了安全托管服务MSS(Managed Security Services),为最终的安全效果负责。
在性能优化方面,托管云根据用户的业务负载特性,将其中WEB和WEB-API1/2作为前端接入层,负责请求的路由分发。在高峰时段,这些服务需要处理来自全国600多家连锁门店的并发请求,对CPU和内存资源的需求极高。为了应对这一挑战,方案配置了多种规格的虚拟机,包括4核/16GB、22核/44GB、16核/32GB和8核/16GB,以确保系统的稳定运行和响应速度。
对于财务系统业务的数据持久层,包括DB、File,它们都承担着大量的数据存储任务,特别是对于DB数据库,配置2.78TB的全闪存存储和32核/128GB的高性能虚拟机,以满足业务对性能和存储的严格要求。
经过以上设计,托管云的方案最终可支撑全国600+门店的100+业务人员同时在线操作的需求,并确保平均每4小时能处理4000至12000笔交易指令。
具体的业务规格配置如下:
这种高性能、高安全性的架构设计,大幅提升了业务的安全性和可用性,还解决了用户原先线下部署机房空间限制和弹性扩容能力不足导致的性能瓶颈问题。
更重要的是,托管云方案解决了在公有云共享环境中部署敏感业务时遇到的安全、数据主权、资源专属问题,确保了业务的连续性和数据的安全性,为用户提供了一个既安全又高效的业务环境。
除了提供的全闪卷以外,还配置了42T混合块存储,和单独提供8192GB的外网对象存储服务,500G的NAS文件存储服务,4000GB的数据备份服务。
在备份策略设计上,每小时备份一次,并且保留七天。
网络接入设计
- 在财务业务网络接入设计方面:
首先确保连接的安全性,同时兼顾网络链路的高可用性和用户使用习惯的保留。针对用户原先通过自建IPsec-VPN方式进行访问的使用习惯,在托管云侧配置了即插即用的托管VPN安全服务,以满足用户的安全需求。
为了支持最多100个业务人员同时在线操作的需求,并确保平均每4小时能处理4000至12000笔交易指令,专门设计主备双线路50MBps的带宽,以保障业务的高效运行。
- 在高可用性设计方面:
采用多线路主备策略,确保多条线路互为备份,以维持可靠运行。若任何一条线路出现故障,深信服托管VPN服务能够无缝切换数据至其他正常线路,不影响SSL VPN用户的接入和访问。断线重播功能通过ADSL实现,确保在VPN连接中断时能够迅速恢复。
在VPN本身的高可用性方面,采用了主备架构,实现了主备节点之间的Session同步,确保多台设备能够即时同时更新用户信息。在主节点出现故障时,3秒内即可恢复服务,并将服务中的用户无缝迁移至其他设备,从而确保设备的意外事故不会给用户的业务访问带来负面影响。
安全设计
本次安全建设的主要目标是等保合规建设及面向安全威胁的防护,在等保合规建设方面提供了一站式等保合规建设,包括等保组件的配置、配合用户进行等保整改等,让用户的业务系统快速过等保。
首先在安全产品组合上,针对访问层、主机层、数据层特别是面向勒索病毒等安全威胁,都配置了专业的安全产品,做到端到端的安全防护措施。
其次,通过安全托管服务MSS,以“人机共智”模式为手段,7*24小时在线值守,提前预防好所有的安全隐患,发现安全威胁最快30分钟以内响应,保障包括财务系统在内总计1005个资产的安全兜底,为最终的安全效果负责,从而彻底消除用户对财务数据上云的安全担忧。
业务迁移
在进行用户业务上云迁移的过程中,确保IP地址变更后的互访正常和降低停机时间是两个核心考虑点:
- 业务互访保障:由于业务上云涉及到IP地址的重新规划,首要任务是确保迁移后业务系统之间的互访不受影响。
- 降低停机时间:为了最小化业务迁移过程中的停机时间,采取将业务系统分4批进行迁移,每批迁移前进行测试和准备工作,确保尽可能快速且不影响现有业务运行。数据库方面,利用实时数据同步DTS进行全量和增量进行迁移,进一步减少停机时间。
在本次业务迁移项目中,针对IP地址变更及业务互访问题,采取了以下措施以确保业务的连续性和稳定性:
- 业务互访保障:由于涉及业务系统改造和IP地址的重新规划,深信服与用户业务相关方进行了深入的沟通和协作。用户业务相关方负责梳理各业务系统间的接口调用关系,深信服作为网络规划方,负责整体网络的规划和打通工作,以确保迁移前后的网络连通性。
- 业务配置文件的修改与重配置:在迁移后,用户业务相关方负责业务配置文件的修改和重配置工作,以适应新的网络结构。
针对业务迁移期间的停机问题,采取了以下两种策略来确保停机时间控制在30分钟以内,以最小化对医院日常运营的影响:
- 时间选择:与用户协商,将停机时间安排在晚上和周末,这些时段医院业务相对较少,从而最大程度减少对用户服务的影响。
- 迁移策略:
逐步迁移:采用分阶段迁移的方法,先迁移非核心业务,再逐步过渡到核心业务,确保在任何时候都有最少的服务中断。
并行运行:在迁移后,新旧系统将并行运行一段时间,以确保在新系统完全稳定之前,旧系统仍然可以提供服务。
业务运行情况
项目在一期阶段通过3台aSever-2305服务器组件独立的私有云集群,单台服务器可提供的计算资源如下:大内存型(202核/470G/14T)(3台*12月);内存资源升级服务(2X64G),总共可提供808核、1922G内存、42T块存储空间。随着用户业务的发展,又分别进行了第二期和第三期的扩容。目前,累计可提供的资源包括2680个vCPU和7004GB内存,以满足瑞派宠物不断增长的计算和存储需求。
当前,用户的财务系统和财务共享平台已在托管云上稳定运行,各项业务表现正常。上云后,财务系统的整体使用效果显著提升。原先VPN频繁掉线的问题,通过部署深信服SSL VPN并采用多线接入及主备方式得到彻底解决。
同时,性能瓶颈导致的应用进程卡慢和死机问题,在迁移至托管云并配置高性能云主机与全闪存卷之后,也得到了有效缓解。以处理交易订单为例,财务系统在托管云环境中每4小时能处理的交易指令数量达到4000至12000笔,相比以往有显著提升,并且可以根据性能曲线进行实时灵活调整。
截止至目前,瑞派宠物的业务在托管云上已平稳运行超过550天,期间未出现任何重大故障与报错。
相关文章:
拥有600+门店的宠物连锁医院,实现核心业务系统上云
瑞派宠物医院管理股份有限公司(以下简称“瑞派宠物“)从2017年开始数字化转型之路。瑞派宠物在全国有600连锁门店,随着业务量增加,线下部署的财务系统存在设备老旧、机房环境差等问题,部分在公有云上的业务,…...
OceanBase 跻身 Forrester 三大领域代表厂商,全面支撑AI场景
在生成式AI迅猛发展的当下,智能化数据管理已成为企业提升数字化水平、优化运营效率和强化市场竞争优势的战略重点。Forrester 最新发布的《2025年中国数据管理生态系统趋势报告》中,OceanBase凭借原生分布式架构和一体化产品优势,入选 全局数…...
学生管理系统微服务方式实现
//不用这种方式实现也可以,用这种方式是为了房间我们理解微服务的实现方式 微服务的实现方式就是把一个单项目应用的不同功能封装成单独的项目,然后向外暴露一个接口以便调用。如果需要这个功能我们直接调用这个功能对应项目的接口就可以了 服务之间的…...
OpenAI最新的4o图像生成模型 gpt-image-1 深度解析:API KEY 获取、开发代码示例
1. 引言 近期,OpenAI 正式发布了其最新的图像生成 API,模型标识符为 gpt-image-1。这一重要发布,首次将先前在 ChatGPT 中通过 GPT-4o 模型驱动、备受用户欢迎的先进图像生成能力,以编程接口(API)的形式提…...
NAT穿透
NAT是 Net Address Traslation的缩写,即网络地址转换 NAT部署在网络出口的位置。位于内网和公网之间,是连接内挖个主机和公网的桥梁,双向流量都必须经过NAT,装有NAT软件的路由器叫NAT路由器,NAT路由器拥有公网Ip NAT解…...
人工智能与机器学习:Python从零实现性回归模型
🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创…...
FreeRTOS
FreeRTOS任务调度的三种方式: 抢占式调度 针对优先级不同的任务 时间片调度 针对优先级相同的任务; FreeRTOS中的一个时间片就等于SysTick(滴答定时器)中断周期(1ms); 协程式调度 后续将不再支持。 …...
PCI 总线学习笔记(五)
PCI 总线学习系列,参考自 技术大牛博客: PCIe 扫盲系列博文连载目录篇 书籍:王齐老师的《PCI Express 体系结构导读》 下面的文章中加入了自己的一些理解和实际使用中遇到的一些场景,供日后查询和回忆使用 PCI 总线定义了两类配置…...
PyTorch与CUDA的关系
文章目录 前言一、如何查看PyTorch和torchvision的版本1.1 查看PyTorch版本1.2 查看torchvision版本二、如何确认PyTorch和torchvision是否支持CUDA加速2.1 检查PyTorch是否支持CUDA2.2 查看当前可用的GPU设备2.3 检查torchvision是否支持CUDA三、CUDA版本的秘密:为什么PyTorc…...
网络中断事件进行根因分析(RCA)
网络中断事件的根因分析(RCA)详解 根因分析(Root Cause Analysis, RCA)是网络运维中用于定位和解决故障的核心方法,目标是找到问题的根本原因,避免重复发生。以下是完整的RCA流程和方法: 1. RC…...
Mac中 “XX”文件已损坏,无法打开 解决方案
前言 Mac中打开软件 出现“XX”文件已损坏,无法打开的提示 怎么处理? 操作总结 1、查看当前 Gatekeeper 是否启用 spctl --status2、完全关闭 Gatekeeper(允许安装任何来源应用) sudo spctl --master-disable3、打开“系统设…...
如何通过python连接hive,并对里面的表进行增删改查操作
要通过Python连接Hive并对其中的表进行增删改查操作,可以使用pyhive库。下面是一个简单的示例代码,演示如何连接Hive并执行一些操作: from pyhive import hive# 建立连接 conn hive.connect(hostyour_hive_host, port10000, authNOSASL)# 创…...
对Mac文字双击或三击鼠标左键没有任何反应
目录 项目场景: 问题描述 原因分析: 解决方案: 项目场景: 在使用Mac系统的时候,使用Apple无线鼠标,双击左键能够选取某个单词或词语,三击左键能够选取某一行,(百度、…...
【维护窗口内最值+单调队列/优先队列】Leetcode 239. 滑动窗口最大值
题目要求 给定一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。滑动窗口每次只向右移动一位。要求返回滑动窗口中的最大值。 示例 1 输入:nums [1,3,-1,-3,5,3,6,7], k 3 输出:[3,3,5,5,6,7] 解释&#…...
【Leetcode 每日一题】2845. 统计趣味子数组的数目
问题背景 给你一个下标从 0 0 0 开始的整数数组 n u m s nums nums,以及整数 m o d u l o modulo modulo 和整数 k k k。 请你找出并统计数组中 趣味子数组 的数目。 如果 子数组 n u m s [ l . . r ] nums[l..r] nums[l..r] 满足下述条件,则称其为…...
SDC命令详解:使用get_cells命令进行查询
相关阅读 SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482 get_cells命令用于创建一个单元对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。 Synopsys:设计对象https://c…...
正则表达式及其游戏中应用
一、正则表达式基础知识 ✅ 什么是正则表达式? 正则表达式是一种用来匹配字符串的规则表达式,常用于搜索、验证、替换等文本处理场景。 比如你想找出玩家输入中的邮箱、命令、作弊码……正则就特别好用。 📚 常见语法速查表: …...
如何在 MinGW 和 Visual Studio (MSVC) 之间共享 DLL
如何在 MinGW 和 Visual Studio (MSVC) 之间共享 DLL ✅ .dll.a 和 .lib 是什么? 1. .dll.a(MinGW 下的 import library) 作用:链接时告诉编译器如何调用 DLL 中的函数。谁用它:MinGW 编译器(如 g&#x…...
【HTTP/2和HTTP/3的应用现状:看不见的革命】
HTTP/2和HTTP/3的应用现状:看不见的革命 实际上,HTTP/2和HTTP/3已经被众多著名网站广泛采用,只是这场革命对普通用户来说是"无形"的。让我们揭开这个技术变革的真相。 著名网站的HTTP/2和HTTP/3采用情况 #mermaid-svg-MtfrNDo5DG…...
ts中null类型--结合在vue中的使用、tsconfig.json
总结 TypeScript 中的 null 是一个独立的类型,用于明确表示“无值”或“空值”。在实际开发中,常通过联合类型(如 string | null)或与 ref 结合使用,确保代码的类型安全和可读性。 详情解释 在 TypeScript 中,null 是一个独立的类型,表示 null 值本身。以下是一些关于…...
Hadoop生态圈框架部署 - Windows上部署Hadoop
文章目录 前言一、下载Hadoop安装包及bin目录1. 下载Hadoop安装包2. 下载Hadoop的bin目录 二、安装Hadoop1. 解压Hadoop安装包2. 解压Hadoop的Windows工具包 三、配置Hadoop1. 配置Hadoop环境变量1.1 打开系统属性设置1.2 配置环境变量1.3 验证环境变量是否配置成功 2. 修改Had…...
深度学习笔记22-RNN心脏病预测(Tensorflow)
🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 一、前期准备 1.导入数据 import tensorflow as tf import pandas as pd import numpy as np dfpd.read_csv("E:/heart.csv") df 2.检查数据是否有…...
面试踩过的坑
1、 “”和equals 的区别 “”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重…...
【机器学习速记】面试重点/期末考试
自用,有错误欢迎评论区指出 目录 一、机器学习基础概念 二、机器学习类型分类 三、经典算法与原理 1. 线性模型 2. 决策树 3. SVM(支持向量机) 4. K近邻(KNN) 5. 贝叶斯分类 6. 集成学习 四、模型评价指标 五、模型泛化能力与调参 六、特征工程与数据预处理 七、维…...
Cursor如何手动添加多个大模型?
笔者在前面的文章Cursor接入API: deepseekV3(免费)_cursor api-CSDN博客中介绍了如何添加deepseek到Cursor中,如果要添加其他大模型,比如阿里的通义千问qwen-max-2025-01-25等,方法一样,在官方网站找到模型名称和base_url…...
FerretDB:基于PostgreSQL的MongoDB替代产品
FerretDB 是一种基于NoSQL的分布式数据库,它旨在通过优化存储和查询机制来提供卓越的性能和可靠性。它支持水平扩展和高并发访问,并提供灵活的数据模型,使开发人员能够轻松地存储和检索各种类型的数据。 Stars 数10,057Forks 数439 主要特点…...
JDBC 批处理与事务处理:提升数据操作效率与一致性的密钥
目录 一. JDBC批量添加数据 1. 什么是批量添加数据 2. 实现数据的批量添加 a. 方式一:不分块 二. JDBC事务处理 1. 什么是事务 2. JDBC事务处理实现 三. 总结 前言 本文来讲解JDBC的批处理和事务处理 这对数据的安全性和准确性以及高效率提供很好的办法 话不…...
vue2实现Blod文件流下载
实现思路: 动态创建一个a标签,模拟点击打开链接,实现下载 downLoad() { //调用下载接口Export({Id: id}).then(res > {this.showLoading false;if (res && res.data && res.data.returnCode -1) {this.msgError(res.d…...
js数据结构之栈
JavaScript数据结构 一、什么是数据结构? 数据结构是向相互之间存在一种或者多种特定关系的数据组成的集合, 采用合适的数据结构能给开发者提高开发和储存效率.比如我们在学习Es6中的我们新接触的到的(Set, map), 在合适的时候使用它们能帮助我们更快的的解决问题. 我们每个在…...
[Windows] 卡巴斯基Kaspersky 21.21.7.384 免费版
卡巴斯基免费版从界面到功能和使用体验来说,简洁、高效、严苛、轻巧,可以“弥补”火绒杀毒能力不强,同时也不会像 Microsoft Defender 误报。 链接1:https://pan.xunlei.com/s/VOOhFEeznr_4W6s7-XT8IwN-A1?pwdztn4# 链接2&…...
【HFP】蓝牙HFP协议中音频连接转移与拨号功能的深度解析
目录 一、核心功能矩阵 二、音频连接向 HF 转移 2.1 转移概述 2.2 前提条件 2.3 适用情况 2.4 转移流程 2.5 注意事项 2.6 示例图 三、音频连接向 AG 转移 3.1 转移概述 3.2 前提条件 3.3 特殊情况处理 3.4 转移流程 3.5 注意事项 3.6 示例图 四、通过HF提供号…...
Android学习总结之Glide篇(缓存和生命周期)
一、Glide缓存 1. 内存缓存 内存缓存主要包含活动资源缓存与 LRU 内存缓存这两个级别。 活动资源缓存(Active Resources) 作用:用于存放当前正在被显示的图片资源。当某张图片正展示在 ImageView 上时,它会被纳入活动资源缓存…...
Python 快速获取Excel工作表名称
文章目录 前言准备工作Python 获取Excel中所有工作表的名称Python 获取Excel中隐藏工作表的名称 前言 在数据分析与办公自动化领域,通过Python处理Excel文件已成为必备技能。通过获取工作表名称,我们可以: 快速了解文件结构自动化处理多工作…...
基于Docker的Flask项目部署完整指南
基于Docker的Flask项目部署完整指南 项目结构与文件说明 TextWeb/ ├── .dockerignore # Docker构建忽略配置 ├── Dockerfile # Docker镜像构建文件 ├── requirements.txt # Python依赖清单 └── WebServer/└── main.py # Fl…...
分布式定时任务(xxl-job)
简介 什么是XXL-JOB 详细的文档类容可以看下面这个链接进入readme xxl-job简介以及下载地址 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展 在Java Spring Cloud微服务架构中,使用独立的定时任务调度中心&…...
PostgreSQL使用LIKE右模糊没有走索引分析验证
建表&数据初始化可参考PostgreSQL 分区表——范围分区SQL实践 背景: 给t_common_work_order_log的handle_user_name新建索引后,使用LIKE右模糊匹配查询时,发现走的全表扫描 CREATE INDEX order_log_handle_user_name_index ON t_commo…...
Jenkins流水线管理工具
文章目录 前言: DevOps时代的自动化核心 —Jenkins一、Jenkins是什么?二、Linux安装Jenkinswar包方式安装依赖环境下载 Jenkins WAR 包启动 Jenkins 服务启动日志验证配置插件镜像源 docker镜像方式安装依赖环境拉取 Jenkins 镜像运行 Jenkins 容器获取初…...
2025年保安员证考试题库及答案
一、单选题 96、手指出血,为达到止血作用,应该压住()。 A.出血手指的尖端 B.出血手指根部前后两侧 C.出血手指根部左右两侧 D.腕部的桡动脉、尺动脉 答案:C 97、下列选项中对干粉灭火器使用方法叙述错误的是&…...
观测云数据在Grafana展示的最佳实践
背景 在当今的数据驱动世界中,组织越来越依赖于实时数据来做出决策。数据可视化是理解和分析这些数据的关键工具,它帮助用户将复杂的数据集转换成直观的图表和仪表板,从而更容易识别趋势、模式和异常。Grafana,作为一个功能强大的…...
点云从入门到精通技术详解100篇-基于二次误差和高斯混合模型的点云配准算法
目录 知识储备 结合二次误差度量与高斯混合模型的点云配准 算法核心创新点: 关键参数说明: 性能优化建议: 前言 国内外研究现状 全局配准算法的国内外研究 局部配准算法的国内外研究 2 点云配准相关概念与方法 2.1 什么是点云配准 2.2 点云的获取及点云主要数据…...
shell命令一
&> /dev/null yum -y install vsftpd &> /dev/null&> /dev/null &>:将命令的**标准输出(stdout)和标准错误(stderr)**同时重定向。/dev/null:Linux中的“黑洞”设备…...
MySQL性能常用优化技巧总结
1. 索引优化 创建合适的索引 -- 为常用查询条件创建索引 ALTER TABLE users ADD INDEX idx_email (email); ALTER TABLE orders ADD INDEX idx_customer_date (customer_id, order_date);避免索引失效的情况 -- 避免在索引列上使用函数 SELECT * FROM users WHERE DATE(crea…...
在 Spring Boot 中实现 WebSockets
什么是 WebSockets? WebSockets 是一种基于 TCP 的全双工通信协议,允许客户端和服务器之间建立持久的双向连接,用于实时数据交换。相较于传统的 HTTP 请求-响应模型,WebSockets 提供了低延迟、高效率的通信方式,特别适…...
stone 3d v3.3.0版本发布,含时间线和连接器等新功能
1.新加了时间线(timeline)编辑器,可以类似blender一样给对象制作动画 2.新加了度量(metrics)系统,通过scene对象检测器中的useMetrics属性来启用或禁用,启用时所选物体将显示三维度量数据 新加了…...
Parasoft C++Test软件单元测试_对函数打桩的详细介绍
系列文章目录 Parasoft C++Test软件静态分析:操作指南(编码规范、质量度量)、常见问题及处理 Parasoft C++Test软件单元测试:操作指南、实例讲解、常见问题及处理 Parasoft C++Test软件集成测试:操作指南、实例讲解、常见问题及处理 进阶扩展:自动生成静态分析文档、自动…...
Safety Estimands与Efficacy Estimands的差异剖析
1. 研究目标差异 1.1 安全性估计目标 1.1.1 关注潜在风险 安全性估计目标着重于治疗可能引发的不良事件(AE)、严重不良事件(SAE)或实验室指标异常,如化疗药物导致中性粒细胞减少症的发生率,这些指标直接关联到患者治疗过程中的健康风险。 这些潜在风险的评估对于确保治…...
HTML 详解:从基础结构到语义标签
目录 一、HTML 是什么?二、HTML 的基本结构✅ 简要说明: 三、常见 HTML 标签讲解3.1 标题标签 <h1> ~ <h6>3.2 段落和换行3.3 超链接3.4 图像插入3.5 列表无序列表:有序列表: 3.6 表格结构 四、HTML 语义化标签详解五…...
联合索引`ABC`,使用`B=... AND C=... AND A=...`会走索引吗?
在MySQL中,联合索引ABC的查询使用B... AND C... AND A...时,是否使用索引取决于查询条件的顺序和优化器的处理。 一、索引使用原理 最左前缀原则 联合索引的底层存储和查询优化遵循最左前缀匹配原则,即查询条件必须从索引的最左侧列开始连续匹…...
HTML 模板技术与服务端渲染
HTML 模板技术与服务端渲染 引言 在现代前端开发生态中,HTML模板技术与服务端渲染(SSR)构成了连接前后端的重要桥梁。当单页应用(SPA)因其客户端渲染特性而面临首屏加载速度慢、白屏时间长和SEO不友好等问题时,服务端渲染技术提供了一种优雅的解决方案…...
MySQL的MVCC【学习笔记】
MVCC 事务的隔离级别分为四种,其中Read Committed和Repeatable Read隔离级别,部分实现就是通过MVCC(Multi-Version Concurrency Control,多版本并发控制) 版本链 版本链是通过undo日志实现的, 事务每次修改…...