架构师备考-背诵精华(系统质量属性)
系统质量属性
根据GB/T 16260.1 定义,从管理角度对软件系统质量进行度量,可将影响软件质量的主要因素划分为6种维度特性包括:功能性、可靠性、易用性、效率、维护性、可移植性
开发期质量属性
开发期质量属性包括:易理解性、可拓展性、可重用性、可测试性、可移植性
运行期质量属性
运行期质量属性包括:性能、安全性、可伸缩性、互操作性、可靠性、鲁棒性
质量属性场景描述
质量属性场景是一种面向特定质量属性的需求,由6部分组成:刺激源、刺激、环境、制品、响应、响应度量
- 刺激源:这是某个个生成刺激的实体。
- 刺激:该刺激是当刺激到达系统时需要考虑的条件
- 环境:该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况。
- 制品:某个制品被激励。这可能是整个系统,也可能是系统的一部分。
- 响应:该响应是在激励到达后所采取的行动。
- 响应度量:当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试。
面向架构评估的质量属性
性能
是指系统的响应能力,及要经过多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件的个数。经常用单位时间内处理事务的数量或系统完成某个事物处理所需的时间来对性能进行定量标识。性能测试经常要使用基准测试程序。
性能质量属性场景
- 刺激源:用户请求、其他系统触发等
- 刺激:事件(定期、随机、偶然事件)
- 制品:系统
- 环境:正常模式、超载模式
- 响应:处理刺激、改变系统状态
- 响应度量指标:处理时间所花时间、单位时间内处理事件的数目、处理的错误率/丢失率
提升性能的策略
- 资源的需求:减少处理事件时对资源的占用、减少处理事件的数量、控制资源的使用
- 减少处理事件时对资源的占用:改进算法、减少计算开销
- 减少处理事件的数量:控制事件到来的速率、控制采样频率
- 控制资源的使用:限制执行时间、限制队列大小
- 资源管理:并发机制、增加资源
- 增加资源:计算资源、存储资源、带宽资源
可靠性
可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。可靠性是最重要的软件特征,通常用来衡量在规定的条件和时间内,软件完成规定功能的能力。通常用平均失效等待时间MTTF 和平均失效间隔时间 MTBF 来衡量。在失效率为常数和修复时间很短的情况下,MTTF 和 MTBF 几乎相等。可靠性分为两个方面:
- 容错
- 容错的目的是错误发生时确保系统正确的行为,并进行内部“修复”。例如在一个分布式软件系统中失去了一个与远程构件的连接,接下来恢复了连接。在修复这样的错误之后,软件系统可以重新或重复执行进程间的操作,直到错误再次发生。
- 健壮性
软件/硬件可靠性对比
- 复杂性:软件失效可能性大于硬件
- 物理退化:硬件有物理退化,软件没有
- 唯一性:软件唯一,硬件不可能相同
- 版本更新快:软件更新比硬件快
软件可靠性定量描述
- 规定时间:人们使用执行时间来度量软件的可靠性最为准确,效果也最好
- 失效概率
- 可靠度:软件规定的条件下、规定的时间内不发生失效的概率
- 失效强度:单位时间软件系统出现失效的概率;
- 使用失效强度来表示软件缺陷对软件运行的影响程度
- 失效严重程度类就是对用户具有相同程度影响的失效集合
- 平均失效前时间(MTTF):Mean Time To Faliure:从t=0 时到故障发生时系统的持续运行时间的期望值,不包括老化失效。
- 平均恢复前时间 (MTTR)Mean Time To Restoration:从出现故障到修复成功的一段时间
- 平均故障间隔时间(MTBF)Mean Time Between Failures:失效或维护中所需的平均时间,包括故障时间以及检测和维护设备的时间;MTBF = MTTF+ MTTR
影响软件可靠性的因素
- 运行环境
- 软件规模
- 软件的内部结构
- 软件的开发方法和开发环境
- 软件的可靠性投入
软件可靠性建模
可靠性建模的步骤包括:模型假设、性能度量、参数估计方法、数据要求
- 模型假设。模型是实际情况的简化或规范化,总要包含若干假设,例如测试的选取代表实际运行剖面,不同软件失效独立发生等。
- 性能度量。软件可靠性模型的输出量就是性能度量,如失效强度、残留缺陷数等。在软件可靠性模型中性能度量通常以数学表达式给出。
- 参数估计方法。某些可靠性度量的实际值无法直接获得,例如残留缺陷数,这时需要通过一定的方法估计参数的值,从而间接确定可靠性度量的值。估计是通过收集到的失效数据进行统计分析,利用一定的推导过程归纳出模型的参数;预测则是使用软件产品自身的属性和开发过程来确定模型的参数,这种方法可以在开始执行程序前完成。
- 数据要求:一个软件可靠性模型要求一定的输入数据,即软件可靠性数据。不同类型的软件可靠性模型可能要求不同类型的软件可靠性数据。
- 模型的3个共同假设包括:代表性假设、独立性假设、相同性假设
- 代表性假设。此假设认为软件测试用例的选取代表软件实际的运行剖面,甚至认为测试用例是独立随机地选取。此假设实际上是指可以用测试产生的软件可靠性数据预测运行阶段的软件可靠性行为。
- 独立性假设。此假设认为软件失效是独立发生于不同时刻,一个软件失效的发生不影响另一个软件失效的发生。
- 相同性假设。此假设认为所有软件失效的后果相同,即建模过程只考虑软件失效的具体发生时刻,不区分软件的失效严重等级
- 好的可靠性建模满足:
- 基于可靠的假设
- 简单
- 计算一些有用的量
- 给出未来失效行为的好的映射
- 可广泛应用
软件的可靠性模型分类
类型 | |
种子法模型 | 预先在程序中播种错误“种子”,根据测试找出错误以及估计残留错误数量。 |
用来研究程序的失效率 | |
用回归分析的方法研究软件复杂性、程序中的缺陷数、失效率、失效间隔时间,包括参数方法和非参数方法两种。 | |
预测软件在检测过程中的可靠性改进,用增长函数来描述软件的改进过程 | |
根据程序、子程序及其相互间的调用关系,形成一个可靠性分析网络 | |
选取软件输入域中的某些样本“点”运行程序,根据这些样本点在“实际”使用环境的使用概率的测试运行时的成功/失效率,推断软件的使用可靠性。 | |
先计算程序各逻辑路径的执行概率和程序中错误路径的执行概率,再综合出该软件的使用可靠性 | |
以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测在今后软件的某使用时间点的累计失效数 | |
用于预测未来的数学模型 | |
软件可靠性管理
软件可靠性管理分为六个阶段:需求分析阶段、概要设计阶段、详细设计阶段、编码阶段、测试阶段、实施阶段
| |
| |
详细设计阶段 | |
编码阶段 | |
测试阶段 | |
实施阶段 |
软件可靠性设计
- 容错设计
- 恢复快设计:恢复快方法是一种动态的故障屏蔽技术,采用向后恢复策略。
- N版本程序设计:N版本程序设计是一种静态的故障屏蔽技术,采用向前恢复的策略。(订单、对账、清算工作)
- 防卫式程序设计:通过在程序中包含错误检查代码和错误恢复代码,使得一旦发生错误,程序就能撤销错误状态,恢复到一个已知的正确状态中去
- 冗余设计:改善软件可靠性的一个重要技术是冗余设计。在硬件系统中,在主程序运行的系统之外备用额外的元件或系统,如果出现一个元件故障或系统故障,则立即更换冗余的元件或切换到冗余的系统,则该硬件仍可以继续维持运行。在软件系统中,冗余技术的运用有所区别。如果采用相同两套软件系统互为备份,其意义不大,因为在相同的环境中,一套软件出现故障的地方,另外一套也一定会出现故障。软件冗余设计技术实现的原理是在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余的部分进行替换,从而维持软件系统的正常运行。
- 检错技术
- 采用检错技术要着重考虑几个要素:检测对象、检测延迟、实现方式和处理方式
- 检测对象:包含两个层次的含义,即检测点和检测内容。在设计时应考虑把检测点放在容易出错的地方和出错对软件系统影响较大的地方;检测内容选取那些有代表性的、易于判断的指标。
- 检测延时:从软件发生故障到被自检出来是有一定延时的,这段延时的长短对故障的处理是非常重要的。因此,在软件检错设计时要充分考虑到检测延时。如果延时长到影响故障的及时报警,则需要更换检测对象或检测方式
- 实现方式:最直接的一种实现方式是判断返回结果,如果返回结果超出正常范围,则进行异常处理。计算运行时间也是一种常用的技术,如果某个模块或函数运行超过预期的时间可以判断出现故障。另外,还有置状态标志位等多种方法,自检的实现方式要根据实际情况来选用。
- 处理方式:大多数检错采用:查出故障-停止软件系统运行-报警的处理方式,但也有采用不停止或部分停止软件系统运行的情况,这一般由故障是否需要实时处理来决定。
- 降低复杂度设计
- 软件复杂性常分为模块复杂性和结构复杂性
- 模块复杂性主要包含模块内部数据流向和程序长度两个方面
- 结构复杂性用不同模块之间的关联程度来表示
- 降低复杂度的思想就是在保证实现软件功能的基础上,简化软件结构、缩短程序代码长度,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。
- 软件复杂性常分为模块复杂性和结构复杂性
- 系统配置技术
- 系统配置技术主要包括双机热备、双机互备、双机双工、服务集群技术
- 双机热备:双机热备即是目前通常所说的active/standby方式,服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备。当 active服务器出现故障的时候,通过软件诊测(一般是通过心跳诊断)将standby机器激活,保证应用在短时间内完全恢复正常使用。
- 双机互备:在双机热备的基础上,两个相对独立的应用在两台机器同时运行,但彼此均设为备机,当某一台服务器出现故障时,另一台服务器可以在短时间内将故障服务器的应用接管过来,从而保证了应用的持续性。这种方式实际上是双机热备的一种应用。它避免了两个应用使用四台服务器分别实现双机热备。
- 双机双工:两台或多台服务器均为活动,同时运行相同的应用,保证整体的性能,也实现了负载均衡和互为备份。需要利用磁盘柜存储技术(最好采用san)。对于数据库服务而言,它同时需要数据库软件的支持,是比较复杂的。而WEB服务器或应用服务器就比较简单了。
- 服务器集群技术:集群技术是指一组相互独立的服务器在网络中组合成为单一的系统工作,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。大多数情况下,集群中所有的计算机拥有一个共同的名称,集群内任一系统上运行的服务可被所有的网络客户所使用。
可靠性测试
- 分为广义的可靠性测试与狭义的可靠性测试
- 广义的软件可靠性测试是指为了最终评价软件系统的可靠性而运用建模、统计、试验、分析和评价等一系列手段对软件系统实施的一种测试。
- 狭义的软件可靠性测试是指为了获取可靠性数据,按预先确定的测试用例,在软件的预期使用环境中,对软件实施的一种测试
- 目的
- 发现软件系统在需求、设计、编码、测试和实施等方面的各种缺陷
- 为软件的使用和维护提供可靠性数据
- 确认软件是否达到可靠性的定量要求
- 步骤
- 定义软件运行剖面
- 测试用例的设计
- 测试实施
- 测试结果分析
- 内容
- 软件产品标识
- 测试环境配置(软件和硬件)
- 测试依据
- 测试结果
- 测试问题
- 测试时间
可靠性评价过程
可靠性的评价过程包括:选择可靠性模型、收集可靠性数据、可靠性评估和预测
- 可靠性评估和预测
- 评估和预测依赖于可靠性模型
- 使用支持软件可靠性估计的软件工具;失效数据的图形分析法、试探性数据分析技术
可用性
可用性是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。
可用性质量属性
- 刺激源:故障(来自系统内部或外部)
- 刺激:系统出错,系统崩溃(反复出错),给出结果不及时,给出错误结果
- 制品:计算或存储或网络
- 环境:正常状态,降级模式
- 响应:错误报告,回传厂家;通知管理员或其它系统;关闭系统,系统在维修期间不可用
- 响应度量指标:故障时间百分比,平均故障修复时间,平均无故障时间
提升可用性的策略
- 错误检测 : 心跳,ping/Echo,异常
- 心跳:被监控组件定期向监控的组件发出心跳消息。若连续未收到的心跳信号到了一定的数目,则认为相应的系统已经出现故障。
- ping/Echo: 监控组件不定期向被监控的组件发出ping 消息,并根据收到的echo 消息做出响应
- 异常:需要编程语言的支持。如抛出+ 捕获+ 处理
- 错误恢复:表决、主动冗余、被动冗余、重新同步、内测、检查点/回滚
- 主动冗余:服务器A 和B并行完成同样的运算,它们的状态时刻保持一致,平时只取A算出的结果。当A 出现故障时,系统可以迅速切换到B
- 被动冗余:服务器A完成运算后,在一定时间内通知服务器B 进行更新
- 重新同步:主动冗余和被动冗余都需要在重新上线前,做状态的重新同步
- 检查点/回滚:定期保存,便于恢复
安全性
是指系统在合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性可根据系统可能受到的安全威胁类型来分类。安全性又可分为机密性、完整性、不可否认性及可控性等特性。其中,机密性保证信息不泄露给未授权的用户、实体或过程。完整性保证信息的完整和准确,防止信息被非法修改;不可否认性是指信息交换的双方不能否认其在交换过程中发送信息或接收信息的行为;可控性保证对信息的传播及内容具有控制的能力,防止为非法者所用。
安全性质量属性场景
- 刺激源:正确识别、非正确识别;授权、未授权
- 刺激:试图显示数据,改变/删除数据,访问系统服务
- 环境:在线或离线、联网或断网
- 制品:系统服务、系统中的数据
- 响应:对用户身份进行认证;隐藏用户的身份;阻止或允许访问数据或服务;
- 响应度量:用成功的概率表示;检测到攻击的可能性;确定攻击或访问、修改数据或服务的个人的可能性
提升安全性的策略
- 抵抗攻击
- 用户身份验证:动态密码、一次性密码、生物识别
- 用户授权:对用户访问进行控制管理
- 维护数据机密性与完整性:给数据和传输过程加密,维护数据完整性、MD5码校验
- 限制暴露:关闭无用端口、自启动的服务、无线路由SSID 等
- 限制访问:设置黑名单、白名单
- 检测攻击
可修改性
可修改性是指能够快速地以较高的性价比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价来衡量可修改性。可修改性分为4个方面
- 可维护性:这主要体现在问题的修复上,在错误发生后“修复”软件系统。可维护性好的软件架构往往能做局部性的修改并能使对其他构件的负面影响最小化。
- 可拓展性:这一点关注的是使用新特性来拓展软件系统,以及使用改进版本方式替换构件并删除不需要或不必要的特性和构件。为了实现可拓展性,软件系统需要松散耦合的构件。其目标是实现一种架构,能使开发人员在不影响构件客户的情况下替换构件。支持把新构件集成到现有的架构中也是必要的。
- 结构重组:这一点处理的是重新组织软件系统的构件及构件间的关系,例如通过将构建移动到一个不同的子系统而改变它的位置。为了支持结构重组,软件系统需要精心设计构件间的关系。理想情况下,它们允许开发人员在不影响实现的主体部分的情况下灵活地配置构件。
- 可移植性:可移植性使软件系统适用于多种硬件平台、用户界面、操作系统、编程语言或编译器。为了实现可移植性,需要按照硬件、软件无关的方式组织软件系统。可移植性是系统能够在不同计算环境下运行的能力,这些环境可能是硬件、软件,也可能是两者的结合。如果移植到新的系统需要做适当更改,则该可移植性就是一种特殊的可修改性。
可修改性质量属性场景
- 刺激源:最终用户、开发人员、系统管理员
- 刺激:希望增加、删除、修改、改变功能、质量属性、容量等
- 环境:系统设计时、编译时、构建时、运行时
- 制品:系统用户界面、平台、环境或与目标系统交互的系统
- 响应:查找架构中需要修改的位置,进行修改且不会影响其他功能,对所做的修改进行测试,部署所做的修改
- 响应度量:根据所影响元素的数量度量的成本、努力、资金;该修改对其他功能或质量属性所造成影响的程度
提升可修改性的策略
提升可修改性的策略有:局部化修改、防止连锁反应、延迟绑定时间
- 使用中介
- 数据中介:仓库(数据共享风格)
- 服务中介:桥接模式、工厂方法模式、代理模式
- 延迟绑定时间
- 运行时注册
- 即插即用
- 多态
- 运行时注册
- 配置文件
功能性
是系统完成所期望的工作的能力。一项任务的完成需要系统中许多或大多数构件的相互协作。
可变性
是指架构经扩充或变更而成为新架构的能力。这种新架构应该符合预先定义的规则,在某些方面不同于原有的架构。当要将某个架构作为一系列相关产品的基础时,可变性是很重要的。
互操作性
作为系统组成部分的软件不是独立存在的,通常与其他系统或自身环境相互作用。为了支持互操作性,软件架构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。程序和其他编程语言编写的软件系统的交互作用就是互操作性的问题,这种互操作性也影响应用的软件架构。
相关文章:

架构师备考-背诵精华(系统质量属性)
系统质量属性 根据GB/T 16260.1 定义,从管理角度对软件系统质量进行度量,可将影响软件质量的主要因素划分为6种维度特性包括:功能性、可靠性、易用性、效率、维护性、可移植性 功能性 适合性、准确性、互操作性、依从性、安全性 可靠性 容错…...

Pycharm下载安装教程(详细步骤)+汉化设置教程
今天讲解的是Pycharm安装教程和配置汉化设置,希望能够帮助到大家。 创作不易,还请各位同学三连点赞!!收藏!!转发!!! 对于刚入门学习Python还找不到方向的小伙伴可以试试…...
网络安全入门
网络安全入门是指学习和了解网络安全基础知识和技术的入门阶段。网络安全是指保护计算机系统、网络和数据免受未经授权的访问、使用、泄露、破坏以及其他威胁的技术和措施。 要入门网络安全,可以按照以下步骤进行: 了解网络安全基本概念:学习…...
你真的了解Canvas吗--解密十【ZRender篇】
目录 👊🏻入口 动画讲解二 Animator Element Transformable graphic 总结 书接上篇你真的了解Canvas吗--解密九【ZRender篇】由于一个bug的篇幅需要续写这个下篇,不过那块的bug内容对我们这篇要讲的动画也是息息相关的,因为Transformable这个类主要就是和变换相…...

mac安装brew时踩坑解决方案
安装包 mac上如果按照git等工具可能会使用brew,例如使用:$ brew install git命令,如果电脑没有按照brew,则会提示:zsh: command not found: brew 解决方案 需要我们打开brew的官网https://brew.sh/,复制…...

基于Handsontable.js + Excel.js实现表格预览和导出功能(公式渲染)
本文记录在html中基于Handsontable.js Excel.js实现表格预览、导出、带公式单元格渲染功能,在这里我们在html中实现,当然也可以在vue、react等框架中使用npm下载导入依赖文件。 Handsontable官方文档 一、开发前的准备引入相关依赖库 <!DOCTYPE ht…...

重学SpringBoot3-集成Redis(十三)之点排行榜实现
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(十三)之点排行榜实现 1. 为什么选择 Redis 来实现排行榜?2. 项目环境准备2.1. 添加依赖2.2. 配置 Redis 连…...
Java 中方法参数传递的陷阱
前言 在编程过程中,我们经常会遇到一些看似简单却容易出错的问题。本文将通过一个具体的例子,探讨 Java 中方法参数传递的陷阱,并提供详细的解决方法。希望这篇文章能帮助你在未来的开发中避免类似的错误。 问题背景 假设我们的任务是计算…...

哪家云电脑便宜又好用?ToDesk云电脑、顺网云、达龙云全方位评测
陈老老老板🤴 🧙♂️本文专栏:生活(主要讲一下自己生活相关的内容)生活就像海洋,只有意志坚强的人,才能到达彼岸。 🧙♂️本文简述:讲一下市面上云电脑的对比。 🧙♂️上一篇文…...

【汇编语言】寄存器(内存访问)(三)—— 字的传送
文章目录 前言1. 字的传送2. 问题一3. 问题一的分析与解答4. 问题二5. 问题二的分析与解答结语 前言 📌 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。但仅仅从课程的角度出发就太片面了,其实学习汇编语言…...
6 机器学习之应用现状
在过去二十年中,人类收集、存储、传输、处理数据的能力取得了飞速提升,人类社会的各个角落都积累了大量数据,亟需能有效地对数据进行分析利用的计算机算法,而机器学习恰顺应了大时代的这个迫切需求,因此该学科领域很自…...

相似度为 K 的字符串
题目链接 相似度为 K 的字符串 题目描述 注意 s1和s2只包含集合 {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’} 中的小写字母s2是s1的一个字母异位词 解答思路 可以深度优先遍历交换字母使得s1和s2尽可能接近,基本思路是:设定一个指针idx指向s1和s2的…...
[云] Project Analysis
项目要求分析: 开放性选题: 主题范围:任何与云计算系统相关的主题。项目类型:可以是技术、商业或研究项目。团队规模:最多可组成三人小组。 示例主题: 分析公共云数据:例如,AWS公共数…...

腾讯六宫格本地识别,本地模型识别,腾讯六图识别
基于K哥爬虫昨天发的文章,特此训练了一版腾讯模型,效果不错,特此感谢K哥的指导,效果如下图: 有需求,有疑问的欢迎评论区点出...

Transformer图解以及相关的概念
前言 transformer是目前NLP甚至是整个深度学习领域不能不提到的框架,同时大部分LLM也是使用其进行训练生成模型,所以transformer几乎是目前每一个机器人开发者或者人工智能开发者不能越过的一个框架。接下来本文将从顶层往下去一步步掀开transformer的面…...
Nginx缓存静态文件
在Python项目中,通过Nginx缓存静态文件(如CSS、JS、图片等),可以有效提升网页的加载性能。Nginx可以帮助你缓存静态资源,减少服务器负担,并加速页面加载。 1. 配置Nginx缓存静态文件 首先,你需…...

【隐私计算】隐语HEU同态加密算法解读
HEU: 一个高性能的同态加密算法库,提供了多种 PHE 算法, 包括ZPaillier、FPaillier、IPCL、Damgard Jurik、DGK、OU、EC ElGamal 以及基于FPGA和GPU硬件加速版本的Paillier版本。 本文我们会基于GPU运行HEU Docker容器,编译打包GPaillier并测…...
用C#实现互斥操作
1、传统的lock lock简单易用,适合大多数场景,但在高竞争用情况下可能会导致线程阻塞; Object obj new object(); void method1(){lock (obj){// 进行互斥操作}}2、SpinLock SpinLock在低延迟情况下更有效,因为SpinLock会在忙等…...

【黑马点评优化】之使用Caffeine+Redis实现应用级二层缓存
【黑马点评优化】之使用CaffeineRedis实现应用级二层缓存 1 缓存雪崩定义及解决方案2 为什么要使用多级缓存3 RedisCaffeine实现应用层二级缓存原理4 利用CaffeineRedis解决Redis突然宕机导致的缓存雪崩问题4.1 pom.xml文件引入相关依赖4.2 本地缓存配置类4.3 修改ShopServiceI…...

CEEMDAN +组合预测模型(BiLSTM-Attention + ARIMA)
往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享! EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(一)EMD-CSDN博客 EMD、EEM…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...

Redis上篇--知识点总结
Redis上篇–解析 本文大部分知识整理自网上,在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库,Redis 的键值对中的 key 就是字符串对象,而 val…...