- 博客(174)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 系统架构设计师论文-论软件体系结构的演化
本文以某鞋企"鞋业上云"电子商务项目为例,探讨了软件体系结构演化方法及其实践。项目旨在构建运动鞋线上商城,实现线下向线上营销转型。作为系统架构师,作者主导了架构设计工作,提出了三个关键演化原则:模块独立演化与影响可控原则、有利于重构重用原则、适应新环境新技术原则。通过业务系统服务化、分层架构设计和虚拟机风格应用,实现了各模块独立演化、系统重构优化以及对新环境的良好适应性。项目最终成功上线并经受住高并发考验,验证了演化原则在长生命周期信息系统建设中的重要性。
2025-11-05 23:49:57
668
原创 系统架构设计师论文-论软件架构的复用
摘要:本文以"鞋业上云"项目为例,探讨云原生架构设计与软件复用方法。该项目旨在为某鞋企构建电子商务平台,实现线下向线上营销转型,包含抢购、支付、物流等完整电商功能。作为系统架构师,作者采用三步复用法:获取、管理和使用软件资产,涵盖架构设计、建模分析等多个维度。通过复用已有构件、文档和专业人员,项目在6个月内顺利完成,成功应对海量用户访问需求,验证了软件复用对降低成本、提升效率的有效性。该实践为类似项目提供了可借鉴的架构复用经验。
2025-10-31 23:49:57
90
原创 系统架构设计师论文-论云原生架构设计及应用
本文以"鞋业上云"项目为例,探讨了云原生架构设计在电子商务系统中的应用。项目历时6个月,投资3000万,旨在构建运动鞋在线商城,实现线上抢购、支付、物流等完整电商功能。作为系统架构师,作者采用多种云原生架构模式:使用容器技术实现服务化架构,将业务模块划分为用户、订单等微服务;通过封装中间件平台实现Mesh化架构;采用存储计算分离模式确保系统高可用性。项目成功应对了高并发、高可用等挑战,按期上线并顺利通过首次秒杀活动考验。实践证明,针对不同非功能性需求选择适当的云原生架构模式是项目成功的关
2025-10-28 11:26:01
204
原创 软考高级系统架构设计师之架构设计扩展篇(二)
摘要 本文系统介绍了边缘计算与分布式系统架构的核心技术。在边缘计算部分,阐述了其本地化计算本质、三种类型(云边缘、边缘云、边缘网关)以及边云协同的六种模式。在系统架构方面,详细分析了大型网站从单体架构到分布式服务的十阶段演化过程,重点探讨了负载均衡、缓存一致性问题及解决方案。此外,深入剖析了Redis的分布式存储方案、集群切片方式、数据类型和持久化机制,并针对缓存雪崩、穿透等常见问题提出应对策略。最后对比了应用层和传输层负载均衡技术,区分了有状态与无状态服务特点。全文构建了一个完整的技术体系框架,为分布式系
2025-09-20 01:10:50
239
原创 软考高级系统架构设计师之架构设计扩展篇(一)
本文系统介绍了软件架构设计的主要理论与方法。首先阐述了层次式架构设计的重要性及其三方面影响,分析了C/S与B/S架构的演变过程。随后详细讲解了MVC、MVP、MVVM等常见架构风格及其特点,并介绍了表现层、中间层、数据访问层的设计模式。接着探讨了物联网、大数据等新兴领域的架构分层,深入解析了SOA、Web Service、REST等基于服务的架构技术。最后重点介绍了微服务架构的优势与挑战,包括解耦性、独立性等技术特点,以及数据一致性、测试复杂性等实施难点,并提供了四种典型的微服务架构模式方案。
2025-09-19 00:07:46
255
原创 软考高级系统架构设计师之构件与中间件技术篇
本文主要围绕软件构件和中间件技术展开讨论。首先阐述了构件的定义及特性,包括构件作为独立部署单元的特点。其次介绍了中间件技术的作用和优点,如简化结构、屏蔽差异、利于复用等。详细讲解了构件复用的完整流程,包括检索、理解、修改和组装四个环节。从构件外部形态将构件分为5类,并对中间件进行了8种分类。最后介绍了三种主流构件标准:CORBA、COM和EJB及其特点。全文系统性地梳理了构件和中间件相关概念、分类和应用,为软件复用和组件化开发提供了理论基础。
2025-09-16 23:05:37
622
原创 软考系统架构设计师之软件架构评估法-ATAM
摘要:软件架构评估方法ATAM分为四个阶段:1)描述和介绍阶段,明确商业目标与架构要求;2)调查分析阶段,识别架构步骤并分析质量属性;3)测试阶段,通过三种场景(用例、增长、探索性)评估架构;4)报告结果。其中测试阶段采用利益相关者头脑风暴的场景类型为用例场景、增长场景和探索场景(答案B)。该方法关注架构质量属性,识别风险点和权衡点,适用于复杂系统架构评估。
2025-09-16 22:14:20
169
原创 软考系统架构设计师之软件风格篇
本文摘要:文章系统介绍了六种主流软件架构风格。数据流风格(批处理和管道-过滤器)适合分步处理但交互性差;调用/返回风格(主程序/子程序、面向对象、分层)重用性好但分层困难;独立构件风格松耦合但控制力弱;虚拟机风格通过中间层实现跨平台;仓库风格以数据为中心,含数据库和黑板系统;闭环控制适合嵌入式系统。每种风格都配有典型应用场景分析,如编译器、IDE开发等,并指出其优缺点,为架构设计提供理论依据。
2025-09-14 00:36:02
539
原创 软考系统架构设计师之软件架构篇
摘要:文章系统介绍了软件架构的核心概念与开发方法。重点讲解了架构风格(数据流、调用/返回等5大类)、基于架构的软件开发过程(需求、设计、文档化等6个阶段)以及"4+1"视图模型(逻辑、进程等5个视图)。同时阐述了架构描述语言(ADL)的三大要素(构件、连接件、配置)和架构评估的重要性。文章还涉及云原生、Web等特定架构风格,以及软件质量属性和产品线等扩展内容,为软件架构设计提供了全面的理论框架和实践指导。
2025-09-12 18:37:36
1201
原创 软考系统架构设计师之项目管理篇
本文摘要:文章系统介绍了软件工程项目管理的核心内容,包括盈亏平衡分析、进度管理(WBS分解、关键路径法、甘特图)、软件质量影响因素(产品修改/转移/运行)、质量控制与保证、CMMI成熟度模型、软件配置管理(版本与变更控制)以及常用软件工具分类。重点阐述了进度管理的WBS分解原则、时间估算方法和关键路径计算,配置管理的基线配置项划分和版本控制规则,并提供了典型考题示例。全文涵盖了软件工程项目管理的关键知识点,为相关考试提供了重要复习资料。
2025-09-12 00:00:01
1039
原创 软考系统架构设计师之软件维护篇
摘要:软件可维护性受可理解性、可修改性、可测试性、可靠性和可移植性等因素影响。软件维护分为四种类型:改正性维护(修复错误)、适应性维护(适应环境变化)、完善性维护(增加新功能)和预防性维护(主动改进未来兼容性)。其中完善性维护是主要工作,改正性维护处理运行错误,预防性维护着眼未来系统改进。
2025-09-11 21:59:37
313
原创 软考系统架构设计师之软件测试篇
本文系统介绍了软件测试的分类与方法。主要内容包括:1)测试分类:动态测试与静态测试,白盒测试(结构测试)与黑盒测试(功能测试);2)静态分析方法:控制流、数据流、接口和表达式分析;3)测试阶段:单元测试、集成测试、系统测试和确认测试;4)特殊测试类型:AB测试、Web测试、回归测试等;5)性能测试类型:负载测试、压力测试、强度测试和容量测试。文章还通过示例题目解析了测试方法的选择与应用场景,为软件测试工作提供了系统性的知识框架。
2025-09-11 00:02:01
544
原创 软考系统架构设计师之软件系统建模
本文概述了软件系统开发中的关键设计方法。系统建模部分介绍了基本流程;人机交互设计提出"黄金三法则":用户控制、减少记忆负担和界面一致性;结构化设计包含模块划分原则(高内聚低耦合)和模块四要素;面向对象设计则涵盖基本过程、类的分类(边界/控制/实体类)和七大设计原则(如单一职责、开闭原则等)。这些方法论为构建高效、可维护的软件系统提供了系统化指导。
2025-09-10 22:51:14
868
原创 软考系统架构设计师之UML统一建模语言
【摘要】UML(统一建模语言)是一种平台无关的标准化建模语言,包含构造块、规则和公共机制三大组成部分。核心内容包括:1)用例图描述系统功能和参与者关系;2)类图展示类、接口及其关系(依赖、关联、聚合、组合等);3)交互图(顺序图、通信图)强调消息传递;4)状态图描述对象状态变化;5)活动图展示操作流程;6)部署图表示系统物理架构。SysML作为系统工程扩展,新增需求图等建模元素。典型应用场景包括需求分析、系统设计和交互流程建模。
2025-09-10 15:10:36
879
原创 软考系统架构师之需求工程篇
本文摘要:文章系统介绍了软件需求工程的全过程,包括需求开发和需求管理两大阶段。需求开发涵盖需求获取方法(如用户面谈、问卷调查等)、需求分析工具(数据流图、状态转换图等)、需求定义方法(严格定义法与原型法)以及需求验证;需求管理则涉及需求跟踪、变更管理流程(10个步骤)和变更控制委员会(CCB)的作用。文中通过典型例题解析了各环节的关键概念,强调需求基线管理的重要性,并指出需求变更需遵循规范流程,避免项目风险。
2025-09-08 00:38:54
1055
原创 从0到1学习纯血鸿蒙开发之组件编程技巧(上篇,有详细代码例子帮助理解)
当多个组件具有相同的样式时,若每个组件都单独设置,将会有⼤量的重复代码。为避免重复代码,开发者可使⽤ @Styles 或者 @Extend 装饰器将多条样式设置提炼成⼀个⽅法,然后直接在各组件声明的位置进⾏调⽤,这样就能完成样式的复⽤。
2025-07-19 00:18:32
467
原创 从0到1学习纯血鸿蒙系统开发之常用布局(下篇,有详细代码帮助理解)
本文介绍了常用布局中的列表组件(List)及其功能特性。List组件用于高效展示结构化、可滚动的列表数据,支持ListItem和ListItemGroup两种子组件。文章详细讲解了List的参数设置,包括列表项间距(space)和滚动控制器(scroller)的使用方法。同时介绍了List的常用属性:主轴方向(listDirection)、交叉轴对齐方式(alignListItem)、元素分割线设置(divider)以及滚动条样式(scrollBar)。每种属性都配有示例代码和效果图,展示了如何通过代码实现
2025-07-16 23:41:22
598
原创 从0到1学习纯血鸿蒙系统开发之常用布局(上篇,有详细代码帮助理解)
线性布局( LinearLayout )是开发中最常用的布局,可通过容器组件 Column 和 Row 构建,其子组件会在垂直或者水平方向上进行线性排列,具体效果如下图所示❗ 说明Column和Row容器均有两个轴线,分别是主轴和交叉轴主轴:线性布局容器在布局⽅向上的轴线,Row容器主轴为横向,Column容器主轴为纵向。交叉轴:垂直于主轴⽅向的轴线。Row容器交叉轴为纵向,Column容器交叉轴为横向。层叠布局是指将多个组件沿垂直于屏幕的⽅向堆叠在⼀起,类似于图层的叠加。
2025-07-16 01:04:34
541
原创 鸿蒙系统DevEco Studio开发⼯具的常用快捷键
摘要:DevEco Studio是鸿蒙开发的核心工具,基于IntelliJ IDEA打造。本文整理了其关键快捷键操作,涵盖编辑、查找/替换、编译运行、调试等五大类功能,帮助开发者提升效率。内容以清晰的图片形式展示常用快捷键组合,适合鸿蒙开发者收藏查阅。(98字)
2025-07-01 08:47:04
348
原创 从0到1学习纯血鸿蒙系统开发之ArkUI组件(有示例代码帮助理解)
自定义弹窗,开发者可以自定义弹窗的样式实现步骤:1、新建⼀个带@CustomDialog修饰符修饰的自定义组件代码块@Componentbuild() {// 自定义UI } }2、被@CustomDialog修饰的自定义组件必须配上controller:CustomDialogController弹窗控制器,不然报错代码块@Componentbuild() {Column() {// 自定义UI结构。
2025-06-30 23:38:25
1069
原创 从0到1学习纯血鸿蒙开发之ArkTS基础语法(有示例代码帮助理解)
ArkTS基础语法摘要 ArkTS是鸿蒙开发的编程语言,基于TypeScript扩展,包含装饰器等特有语法。本文介绍ArkTS的基础语法: 数据类型:三种基础类型(string、number、boolean) 变量与常量:let声明变量可修改,const声明常量不可改 数组:容器存储多个数据,通过索引访问 函数:包括普通函数、带参数函数和更简洁的箭头函数 对象:用interface定义结构,包含属性和方法 类型系统: 联合类型:变量可存储多种类型值 枚举类型:定义常量列表 类: 包含实例属性/方法、构造函数
2025-06-26 23:10:48
998
原创 从0到1学习纯血鸿蒙开发(环境安装篇)
点击File–>Settings–>Plugins -->Installed -->搜索Chinese -->勾选 --> OK -->Restart。1、下载完成双击deveco-studio-5.x.exe→浏览→新建Dev Eco⽂件夹→确定→下⼀步。点击设备管理器,再点击在线提交申请表,跳转之后填写信息即可申请模拟器,第⼆天就可以下发模拟器。3、输⼊项⽬名称、项⽬包名、项⽬存储位置–>Finish。2、新建Empty Ability–>点击Next。在申请到虚拟机之后,下载好新版本虚拟机。
2025-06-26 11:13:29
511
原创 研究生如何做科研
1、关注CCF(中国计算机学会)2、找到自己关注的顶级会议论文网址3、谷歌学术检索领域关键字4、文献阅读5、问题发现与创新点挖掘6、论文写作方法
2024-06-27 23:35:00
286
原创 软件工程之结构化设计篇
完成了需求分析,回答了软件系统能“做什么”的问题后,软件的生命周期就进入了设计阶段。软件设计阶段,研发人员将集中精力研究如何把需求规格说明书里归纳的分析模型转换成功可行的设计模型,将解决方案记录到相关的设计文档中。软件设计是回答“怎么做”才能实现软件系统的问题。即把软件系统能做什么的逻辑模型转换成怎么做的物理模型。软件设计在开发中处于核心地位。
2022-10-17 13:35:20
1340
原创 c++多线程:原子操作
1、原子变量声明头文件#include <atomic> // std::atomic, std::atomic_flag, ATOMIC_FLAG_INIT原子操作:对一个变量的访问操作,原来会分为好几个指令,由于多线程程序中,可能会存在数据竞争,可能导致对变量的操作不是原子性,那么从编译实现角度,将原本几个指令的操作变成一个指令来执行,可以在无锁情况下实现原子操作,从而避免数据竞争。std::atomic::atomicdefault (1) atomic()
2022-03-14 17:21:26
1982
原创 C++忘记返回值导致异常bug
问题在C++函数实现时,定义一个函数如下:bool MCUSerialImpl::InitDevInfo(){ _devInfo = std::make_shared<MCUInfo>(); if(!_devInfo) { LOG_ERROR << "_mcuInfo is null"; return false; } Wrapper::TryClearCache<std::string>(_v
2022-02-28 21:01:24
1917
1
原创 git合并多次提交为一次提交
**背景**有时候新人在git上提交代码时,如果不符合要求,会出现反复修改,导致提交次数过多,无法形成有效提交和回退,因为可能中间提交的版本有问题。所以查找一下是否有合并多次提交为一次有效提交的命令,果然很强大,像一个穿越时空机一样,可以任意修改已提交的版本。合并过程1、查找要历史提交版本git log2、查找要合并的几个提交id,并要找到最早要合并的提交id的父commit-id。git rebase -i commit-id //(commit-id是需要合并的提交中最早的提交的前一个
2022-02-22 15:28:09
13934
原创 git高频使用的命令
git pull origin dev-1.1.0 远端合并到本地分支git diff xxx/xxx.cpp 文件查看差异git checkout xx/xx.cpp 还原到原始版本git status . 查看状态git checkout -b feature/PA 创建远端分支git submodule update --init --recursive 更新子模块git add . //添加所有文件git add xxx/xxx.cpp 添加文件git commit -
2022-01-22 09:44:14
400
原创 git同步远程分支列表到本地
背景一段时间没有使用git,发现服务端的分支和本地不一致,需要同步远程分支列表本地,使用下面的命令即可更新git remote update origin --prune
2022-01-22 09:40:33
4007
原创 Linux下安装搜狗拼音输入法(Ubuntu18.04.2 LTS)
1.环境系统:Ubuntu 18.04.2 LTS宿主机:虚拟机Vmware2.下载打开 Firefox 浏览器,在地址栏输入 https://pinyin.sogou.com/linux/ 这个地址,可以看到下面画面:选择下载64位3.安装安装完毕后,打开 设置-》区域和语言-》管理已安装的语言-》添加或删除语言选中中文简体:切换键盘输入法系统为:fcitx (Flexible Input Method Framework)即小企鹅输入法,它是一个以 GPL 方式发布的输入法平台
2021-12-10 15:34:26
2595
原创 socat的下载和交叉编译安装
背景1.下载http://www.dest-unreach.org/socat/download本人这里使用的版本是socat-1.7.3.4.tar.gz,并非最新的包。2.解压//解压到当前目录$ tar -xvf socat-1.7.3.4.tar.gz//进入解压后的目录$ cd socat-1.7.3.43.安装//编译hisi600./configure --host=x86_64 CC=arm-hisiv600-linux-gccmake -j8make i
2021-11-06 17:04:17
4786
原创 FFmpeg学习详细笔记(一)
FFmpeg1.FFmpeg简介1.1 FFmpeg的定义FFmpeg既是一款音视频编解码工具,同时也是一组音视频编解码开发套件,作为编解码开发套件,它为开发者提供了丰富的音视频处理的调用接口,提供了多种媒体格式的封装和解封装,包括多种音视频解码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率转换等;FFmpeg框架提供了多种丰富的插件模块,包含封装与解封装的插件、编码与解码的插件等。FF:Fast Forward,Fast Free,Fast Fourier。mpeg:Moving
2021-10-24 17:44:55
3215
原创 牛客网NC105二分查找(查找第一个匹配数据)
题目题目描述请实现有重复数字的升序数组的二分查找给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1示例1[1,2,4,4,5],4返回 2说明从左到右,查找到第1个为4的,下标为2,返回2解题思路二分法:如果判断相等的话,需要判断当前是否是第一个匹配到的数,如果下标是0,则直接返回,如果不是,则判断是否大于前面一个数,是则返回,否则继续缩小右边范围进行下一轮查找。时间复
2021-04-06 20:11:38
384
原创 牛客网NC61《两数之和》数组+哈希
题目题目描述 给出一个整数数组,请在数组中找出两个加起来等于目标值的数, 你给出的函数twoSum需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解 例如: 给出的数组为 {20, 70, 110, 150},目标值为90 输出 index1=1,index2=2示例1输入[3,2,4],6返回值[2,3]解题思路暴力法:数组中每个数字相加,然后判断和是否与目标值相等,时间复杂度O
2021-04-06 19:33:36
393
原创 力扣33. 搜索旋转排序数组(二分查找)
整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为[nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …,nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为[4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一个整数 t.
2021-03-21 22:45:57
318
原创 力扣1115. 交替打印FooBar(多线程)
我们提供一个类:class FooBar { public void foo() {for (int i = 0; i < n; i++) {print(“foo”);} }public void bar() {for (int i = 0; i < n; i++) {print(“bar”);} } } 两个不同的线程将会共用一个 FooBar 实例。其中一个线程将会调用 foo() 方法,另一个线程将会调用 bar() 方法。请设计修改程序,以确保 “foob.
2021-03-21 22:43:22
419
原创 SQLServer数据库登录问题 Login failed for user ‘sa‘. (Microsoft SQL Server, Error: 18456)
1.登录失败的原因,是因为SQLServer默认只使用了Windows验证,没有设置以windows和Sql Server混合的登录方式;操作:Windows验证登录后-》右键服务器选择属性-》安全性-》Sql Server和windows身份验证模式-》确定2.重启SqlServer服务即可右键服务器-》重新启动...
2021-02-19 16:29:12
14342
原创 从零开始学python之继承
继承:定义一个类Animal(动物),这个类中需要两个方法:run() sleep()class Animal: def run(self): print('动物会跑') def sleep(self): print('动物睡觉')定义一个类Dog(狗)class Dog: def run(self): print('狗会跑')
2021-01-14 21:46:20
1276
QHttpDemo.rar_解压rar
2020-12-23
解决Qt中QSettings在断电时参数丢失问题
2018-11-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅