软件设计
文章平均质量分 84
佟格湾
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
UML 4+1 视图用途介绍
用例视图就是从用户和外部系统角度看:“电商系统能提供哪些功能,谁来使用这些功能”。逻辑视图就是从系统设计者/开发者角度看:“系统内部有哪些功能模块,它们是怎么组织的,类之间如何协作来实现业务逻辑”。开发视图就是从程序员/架构师角度看:“代码怎么分模块、怎么组织、包之间有什么依赖关系”。进程视图就是从系统架构师/运维/并发编程者角度看:“系统运行时多个任务是如何并发执行的,服务之间如何交互与协同”。部署视图就是从运维/DevOps/架构师。原创 2025-11-07 12:15:00 · 26 阅读 · 0 评论 -
电商系统高并发场景下库存扣减的线程安全实践:单体与分布式架构全方案详解
维度单体架构分布式架构典型部署单台服务器(如IIS/传统Tomcat),所有请求由同一进程处理多台服务器(负载均衡),多个服务实例共享库存数据库存存储位置数据库(主)或内存缓存(辅助,如本地字典)数据库(主)或分布式缓存(如Redis,主/辅)核心推荐方案数据库乐观锁(内存库存可选编程语言锁(如lock数据库乐观锁(跨实例通用)或分布式锁 + 缓存/数据库操作(复杂业务)或Redis原子操作(秒杀)或消息队列(削峰)是否依赖外部组件仅需数据库。原创 2025-11-05 14:33:37 · 247 阅读 · 0 评论 -
分享一个免费绘图工具网站draw.io
或者。原创 2025-10-24 15:31:35 · 232 阅读 · 0 评论 -
以电商系统为例,理解用户体验五层模型
用户体验五层模型包括:战略层(Strategy):明确产品目标与用户需求范围层(Scope):确定产品要提供哪些功能与内容结构层(Structure):设计功能与内容的组织逻辑与交互流程框架层(Skeleton):规划功能在界面中的布局与信息架构表现层(Surface):视觉设计与用户感知这五层从抽象到具体,从目标到呈现,构成了一个完整的用户体验设计体系。层级核心目标电商系统对应内容关键产出物举例战略层明确产品目标与用户需求。原创 2025-10-19 10:11:55 · 143 阅读 · 0 评论 -
软件架构4+1视图中的进程视图该怎么画?
画进程视图的核心,就是用一张图说清楚:谁在干活?(执行单元)怎么配合?(同步/异步/共享数据)要注意什么?(资源限制和容错)即使你的系统目前并发量不高,这张图也能帮你提前发现潜在问题,避免未来扩展时“改一处崩全局”。记住:好的进程视图不需要华丽,只要能让团队成员(开发、运维、测试)一眼看懂系统的“动态运行逻辑”,就是成功的架构设计!原创 2025-10-19 10:07:27 · 149 阅读 · 0 评论 -
关于UML顺序图中“消息”的一点思考
在UML顺序图中,“消息”严格定义为一个对象(发送方)向另一个对象(接收方)发起的调用请求,目的是要求接收方执行特定的操作或行为。其核心特征可概括为三点:主体是对象间的交互:消息存在于系统内部的对象(如类实例、组件、服务等)之间,而非用户与系统之间直接的物理行为;本质是行为调用:消息名称通常是动词或动宾短语(如),描述接收方需完成的具体动作;目标是触发操作:发送方通过消息“请求”接收方执行逻辑,而非描述发送方自身的行为。原创 2025-10-19 10:02:38 · 76 阅读 · 0 评论 -
界面设计的黄金三原则:让交互更简单、更人性
你有没有遇到过这样的场景?——用某个App时,明明想保存文件却找不到按钮,操作后没有提示不知道是否成功,不同页面的“返回”键位置还不一样……这些让人抓狂的体验,其实都是因为界面设计没做好。而解决这些问题的核心,正是界面设计领域公认的“黄金三原则”:。这三个看似简单的原则,却是所有优秀界面背后的底层逻辑。原创 2025-08-21 20:15:00 · 937 阅读 · 0 评论 -
信息系统人机交互五层模型:像盖房子一样设计用户体验
你有没有想过,为什么有些App用起来特别顺手——点几下就能找到想买的东西,界面清爽不刺眼,操作流程像“下楼梯”一样自然?而有些系统却让人烦躁——找功能像“捉迷藏”,页面花里胡哨看不清重点,操作步骤多到想放弃?这背后的秘密,就藏在信息系统人机交互设计的里。这个模型由用户体验专家杰西·詹姆斯·加勒特提出,它把设计过程拆解成五个层层递进的“楼层”,从最底层的“为什么做”到最顶层的“看起来如何”,就像盖一栋房子,每一层都决定了最终的用户体验。接下来,我们结合日常生活中的例子,带你轻松理解这五层模型。原创 2025-08-21 12:15:00 · 975 阅读 · 0 评论 -
熵增定律与软件模块化设计思想:对抗无序的工程智慧
模块化(Modularity)是指:将一个复杂系统拆解为多个相对独立、功能单一的模块(组件/服务),每个模块内部高度内聚(逻辑紧密相关),模块之间低耦合(依赖尽可能少),并通过清晰的接口进行交互。举个例子:一台电脑是一个复杂系统,但它被划分为CPU(计算)、内存(存储)、硬盘(持久化)、显卡(图形处理)等模块——每个模块专注自己的功能,只通过标准接口(如数据总线)与其他模块通信,即使某个模块升级(如换显卡),也不会影响其他部分的运行。熵增定律告诉我们:。原创 2025-08-20 14:02:12 · 803 阅读 · 0 评论 -
“模块”究竟是什么?
从技术视角看,模块是软件系统中具有独立功能、清晰边界和标准化接口的代码组织单元。它的核心目标是:通过拆分与封装,让复杂系统变得可管理、可维护、可复用。回到最初的问题——“模块究竟是什么?事实上,“模块”本身是一个弹性的概念,它没有绝对固定的形态,既可以指向代码层面的具体实现(如一个类、一个包、一个文件),也可以指向逻辑层面的功能划分(如“商品模块”“订单模块”)。当你在架构设计会上说“这个需求归订单模块负责”时,它是一个业务功能的抽象标签,帮助团队明确职责边界;原创 2025-08-20 10:36:52 · 1788 阅读 · 0 评论 -
缓存穿透、缓存击穿、缓存雪崩解决方案
对请求参数进行合法性校验(如 ID 格式、业务逻辑限制),过滤非法请求。在分布式系统中,缓存是提升性能的关键组件,但也可能面临。大量缓存集中失效或服务宕机。缓存服务器故障、批量过期。过期时间打散、高可用架构。热点键过期、主动删除。布隆过滤器、空值缓存。原创 2025-05-21 22:31:54 · 423 阅读 · 0 评论 -
数据库与Redis数据一致性解决方案
在分布式系统中,当多个服务节点同时对数据库和 Redis 进行写操作时,可能因并发导致数据不一致(如缓存击穿、脏数据)。:多个请求同时更新同一数据,可能出现 “先更新 Redis 后更新数据库” 的顺序错乱,导致缓存与数据库不一致。原创 2025-05-21 22:31:41 · 689 阅读 · 0 评论 -
名词科普:冷启动
冷启动问题是指在推荐系统中,由于新用户或新物品缺乏历史行为数据,导致系统无法准确预测用户偏好或物品属性,从而难以生成有效的推荐。用户冷启动:新用户注册后,系统无法根据其行为数据推荐符合其兴趣的内容。物品冷启动:新物品上线后,由于没有用户评价或互动记录,难以将其推荐给潜在感兴趣的用户14。原创 2025-05-20 06:35:55 · 1200 阅读 · 0 评论 -
日常组件复用与基于构件开发的本质区别
在软件开发领域,日常开发中的组件复用和基于构件的开发(Component-Based Software Development,CBSD)虽然都涉及组件的重复使用,但两者在多个关键层面存在显著差异。理解这些差异,有助于开发者在项目中选择更合适的开发方式。原创 2025-05-12 21:39:46 · 132 阅读 · 0 评论 -
基于构件的开发方法与传统开发方法的区别
在软件开发领域,基于构件的开发方法和传统开发方法有着截然不同的特点与应用效果,这些差异显著影响着项目的实施过程与最终成果。下面,我们将从多个关键维度展开对比分析。通过以上对比不难发现,基于构件的开发方法在提高开发效率、降低成本、增强系统可维护性和扩展性等方面具有明显优势。但在实际应用中,两种方法各有其适用场景,开发者需根据项目特点和需求合理选择,以实现最佳开发效果。最后补充一下,传统开发方法就像农村传统的建房方式,打地基,浇筑,一层层去建,而基于构件的开发方法就像模块化建房一样,网上下单,厂家发各种建房构原创 2025-05-12 21:39:31 · 118 阅读 · 0 评论 -
购物车构件示例
set;set;set;/// 购物车项set;} // 购物车项IDset;} // 用户IDset;} // 商品IDset;} // 商品名称set;} // 单价set;} // 数量set;} // 创建时间set;} // 更新时间set;} // 扩展属性set;set;set;} = 1;set;set;set;set;set;set;set;原创 2025-05-11 09:33:57 · 162 阅读 · 0 评论 -
用户登录构件示例
本文将演示一个完整的用户登录构件,采用C#实现,重点展示如何将构件化思想应用到实际开发中。用户界面用户名密码验证登录日志记录模块化设计,各组件职责单一使用接口抽象,便于扩展和测试依赖注入,实现松耦合通过这个示例,您将看到如何构建一个可复用的登录构件,并了解如何将其集成到业务系统中。原创 2025-05-11 09:33:39 · 176 阅读 · 0 评论 -
构件是一个逻辑概念,还是一个物理概念?
:构件是系统功能的逻辑划分,表示一组相关的职责或行为,不直接对应物理实现。。原创 2025-05-10 14:21:30 · 102 阅读 · 0 评论 -
构件是什么?
在软件工程中,构件(Component)被定义为系统中可替换的、物理的组成部分封装性:构件封装其内部实现细节,对外暴露明确的接口独立性:构件可以在不同的应用中独立使用和部署组合性:多个构件可以通过标准接口组合成更复杂的功能互操作性:构件遵循规范或标准,实现跨平台、跨语言的集成技术定义:国际对象管理组织(OMG)给出的定义是:构件是一个模块化的、可部署的软件单元,它封装了其实现并公开了一组可识别的接口。原创 2025-05-10 14:21:06 · 324 阅读 · 0 评论 -
CAP理论中的分区容错性(Partition tolerance)
分区容错性是分布式系统设计中的一个重要概念,它确保了即使在网络分区的情况下,系统仍然能够继续运行并提供服务。在上述示例中,通过允许一定程度的不一致性来保持服务的可用性,系统可以在网络分区期间继续运作。例如,当一个用户从美国的一个数据中心发起一笔转账操作时,该数据中心会更新其本地的数据副本,并将更新传播到其他数据中心,以确保所有副本的数据一致性。分区容错性是指在分布式系统中,即使网络分区导致部分节点无法相互通信,系统仍然能够继续运行并提供服务的能力。具有分区容错性的系统反应。无分区容错性的系统反应。原创 2025-05-08 08:03:13 · 391 阅读 · 0 评论 -
CAP理论介绍
CAP 理论是分布式系统设计中的一个重要概念,它描述了在分布式系统中一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个属性之间的权衡。: 如果你在银行账户中存入了 100,并且这个操作成功提交了,那么后续的所有查询都应该显示账户余额增加了100,并且这个操作成功提交了,那么后续的所有查询都应该显示账户余额增加了100。这意味着在分布式系统中,必须在一致性和可用性之间做出选择,同时必须保证分区容错性。选择一致性(CP 系统)原创 2025-05-08 07:39:33 · 1775 阅读 · 0 评论 -
为什么一些加密算法的加密结果通常需要使用Base64进行编码后展示或使用16进制进行展示?
加密算法的结果通常表现为二进制数据,而不是人类可读的文本。当你尝试直接打印这些二进制数据时,可能会看到“乱码”……原创 2025-03-17 14:42:58 · 370 阅读 · 0 评论 -
Base64编码详解
Base64 是一种将二进制数据转换为 ASCII 字符串格式的编码方式。它广泛应用于需要在文本协议(如电子邮件、HTTP 请求)中传输二进制数据的场景。原创 2025-03-16 13:19:19 · 8593 阅读 · 0 评论 -
哈希算法、一致性哈希算法在数据分片缓存中的应用原理
在实际开发中,随着业务的发展,经常会遇到单服务的性能瓶颈问题,比如:Redis 服务、MySQL 服务。那么对于单服务的性能瓶颈导致的诸如服务过载或者服务不可用的问题,该如何解决呢?转载 2025-04-18 21:13:00 · 209 阅读 · 0 评论 -
JSON Web Token 入门教程
JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法。转载 2025-04-17 06:23:36 · 144 阅读 · 0 评论 -
OAuth2.0详解
OAuth是一种广泛使用的授权框架,允许第三方应用程序在用户授权的情况下访问用户在某个服务上的资源,而无需共享用户的凭据(如用户名和密码)。原创 2025-04-16 20:28:35 · 2842 阅读 · 0 评论 -
单点登录原理与简单实现
本文为转载,原文链接及作者信息如下:作者:凌承一。转载 2025-04-16 13:03:21 · 103 阅读 · 0 评论 -
全局唯一标识符(UID)生成策略
在信息系统中,生成唯一ID是非常常见的需求,尤其是在分布式系统或高并发场景下。以下是几种常见的生成唯一ID的算法或方式:原创 2025-04-15 06:18:26 · 2224 阅读 · 0 评论
分享