在软件工程中,术语管理是一个极其冷门但是却非常重要的话题。 在很多项目上开发人员和业务人员之间的讨论有很大一部分是词汇的误解造成的,即使在技术人员、业务人员内部讨论也存在同样的情况。例如,某电信运营商项目,话费套餐属于商品还是产品这个问题经常被拿出来讨论,直到找到了总部给出的规范性文件才定性下来。 越是专业的软件系统对专业术语的定义需求越发迫切,这些定义往往需要极其精确,甚 […]
在软件工程中,术语管理是一个极其冷门但是却非常重要的话题。 在很多项目上开发人员和业务人员之间的讨论有很大一部分是词汇的误解造成的,即使在技术人员、业务人员内部讨论也存在同样的情况。例如,某电信运营商项目,话费套餐属于商品还是产品这个问题经常被拿出来讨论,直到找到了总部给出的规范性文件才定性下来。 越是专业的软件系统对专业术语的定义需求越发迫切,这些定义往往需要极其精确,甚 […]
在金融、保险、电商等涉及金额计算的领域,常常需要高精度计算。但是由于计算机原理受限,普遍存在精度丢失问题。 例如,使用 JavaScript 在浏览器控制台输入: (0.1+0.2) == 0.3 我们会得到一个 false 的计算结果。 如果使用编程语言原生的计算方法会遇到大量精度问题。一般来说,我们可以优先考虑使用整数计算,例如在电商领域为了简单往往以分为单位计算金额。 […]
在 Java 项目中,对象转换是一个比较繁琐的工作,常见的转换场景有: 页面请求对象(Use Case Command)转领域模型实体(Entity)。 领域模型转换为数据库操作对象(PO)。 领域模块转返回给前端的结果对象(Use Case Response)。 …… 这些对象统称为 POJOs,也就是 Plan Object Java Object 的缩写。 这一期的系 […]
在应用系统中,使用缓存不算非常难的事,但是设计好一套缓存策略比较麻烦,这样既能起到好的缓存效果也能在合适的时候更新缓存。 今天我们聊聊缓存。 不过,在计算机科学中,有很多种缓存。我们先聊聊缓存的类型,再谈应用系统中的缓存。 我们会涉及哪些缓存知识? 这里我把缓存分为两类: 非应用缓存:难以被程序员干预、控制和使用的缓存,但是我们能通过选择合适的数据结构,写出缓存友好的代码。 […]
作为一个开发,日常工作中免不了要画一些图,无论是技术架构图还是业务流程图。基于个人的一些经验,作者分享了他的作图方法,给大家一点思路提供参考,希望在未来的工作、生活中都能有所帮助。
笔者在一线互联网公司,经历过数次大型系统的重构项目,也多次担任技术负责人,经历的重构项目包含:日吞吐量数万亿的计算型系统、基础架构中间件系统、高并发高稳定性要求的C端系统、业务复杂性较高的B端系统等。 同时了解到大型重构项目风险高、难度大、易流产,因此总结了本文供大家参考学习交流。 任何系统在持续的演进迭代的历程中,都难免因各类因素导致迈向重构,比如:系统可塑性与业务需求无 […]
互联网时代越来越多的实时协作软件出现,例如在线点餐、文档编辑、在线绘图等。 今天来聊聊这些场景一般如何实现的。 场景和问题 实时协作软件一般用于多个人同时操作(也包括一个人多个会话)。例如 Google Doc 可以支持同时编辑文档,并将多人编辑的结果合并到一起展示,而且能相互看到其它人的操作。 但是,在实现过程中会有非常多的技术问题和业务逻辑问题需要考虑: Web 平台如 […]
大部分程序员都会遇到过类似的 Bug:用户创建或者更新的数据在查询时偏移了 8 个小时。 我们有时候会在网上找一些文章,胡乱的配置后问题修复了,但是过一段时间后往往又会出现。 时间和时区的问题往往就像幽灵一样发生在程序员身上。 这一期的系统设计话题我们来盘点一下时间的问题,澄清相关的概念,以及相关的解决方案。 生活中的时间和时区 古人尸佼说,天地四方曰宇,往古来今曰宙,其中 […]
这个话题来自网友提交和项目上真实的案例,即如何实现企业内部多个应用之间的数据交换。 这个话题非常实用,我们先从问题开始聊起(在很多系统设计的过程中,我们发现问题比答案有时候更有价值,因为问题贴合业务价值)。 问题 案例 1 业务和推荐系统集成 假设有两个系统,分别是 A 系统和 B 系统。A 系统是一个事务处理系统,而 B 系统则是一个算法和推荐系统。A 系统向 B 系统提 […]
在当前的环境下,为新业务设计系统的场景非常少了,很多系统开发工作都需要对原有系统进行迁移和切换。 不得不说,系统切换和迁移的难度有时候比新开发还大。这一期,我基于研讨会总结的内容,整理了一些迁系统迁移和切换的经验和模式。 问题和挑战 为了避免空谈,我们根据经验整理一些常见的场景,并以此分开讨论: 某企业开发了一套新的办公(OA)系统,需要将原有的审批信息迁移到新的办公系统。 […]
假如一个保险、CRM 系统,财务结算模块的结算方式有如下特点: 计算方式非常复杂 计算模式非常多 业务人员不希望把计算规则写到代码中,而是能保持业务可见性 当规则变化时不影响既往的业务单据 业务希望看到每类单据的计算方式和取值过程(计算透明化) 希望规则能版本化,比如保险政策变化时候能够提示用户使用了新的计算规则 某些计算需要一些准入条件,例如根据规模和用户评级采取不同的计 […]
在计算机领域,有很多成熟的技术标准非常有价值,参考技术标准容易找到标准的开源实现,也可以自己参考其原理做出更可靠的方案。例如 IETF 的 RFC 文档是最权威的技术资料来源。查阅技术标准也是最快捷的学习方式,但是阅读门槛比较高,而且大多是英文资料。 这篇文章结合技术研讨会总结的内容,整理了在技术方案设计中可以参考和使用的技术标准。 为了更好的组织内容,先介绍一下常见的技术 […]
本期聊聊大多数架构师都会涉及的一个问题:对于一个新的系统,该选择自增 ID 还是 UUID? 我们常常会被这两种 ID 困惑,其实在和架构师交流过程中还有一些其他概念,例如数据库 ID、代理键等词汇。 我们从澄清相关概念开始本篇。 分类法和概念澄清 关于 ID 生成,我把常见的 ID 分为如下几类: 根据业务用途:数据库 ID(相当于小名)、业务编码(相当于大名)。 根据实 […]
当一个应用系统演变的非常大时,配置会变得非常混乱。 有一些业务配置在数据库的配置表中,有一些又在配置中心,其它一些可能又在前端。 如何管理这些配置呢?我把项目上的一次技术例会整理出来如下。 首先配置管理需要考虑的一些问题和原则有: 安全:配置可靠,不容易丢失配置导致不同环境逻辑出现差异,进而造成线上事故。 透明:方便查找,当业务人员需要调查逻辑问题时,能快速找出配置。 成本 […]
一、背景 大促已经如期而至,接下来我会从技术的角度,跟大家聊聊大促备战的底层逻辑和实战方案,希望能够解答大家心中的一些疑惑。 首先,大促为什么如此重要呢?先从数据的角度简单做一下分析,以下表格罗列了我们历年大促GMV成绩单: 年份 618销售额(亿元) 年销售额(亿元) 618销售额占比 2022 3793 33155 11.4% 2021 3 […]
BeanUtils (1) BigDecimal (1) CDC (1) ETL (1) github (1) heap (1) LLaMa (1) MAT (5) MDM (1) Sora (1) TCP (1) 业务图 (1) 企业应用 (1) 停机迁移 (1) 内存泄露 (4) 协议 (1) 可用性 (1) 基础设施层 (1) 堆内存 (1) 堆外存 (1) 大事记 (1) 实时协作 (1) 对象转换 (1) 应用架构 (1) 异常 (3) 技术规范 (1) 技术选型 (4) 提示工程 (1) 数据交换 (1) 数据共享 (1) 数据双写 (1) 日期 (1) 时间 (1) 时间线 (1) 术语 (1) 架构方案 (14) 流程图 (1) 精度 (1) 线程模型 (1) 经验分享 (1) 网络编程 (2) 解耦 (1) 软件复杂性 (1) 软件工程 (1) 重构 (4) 重试 (1) 隔离级别 (1) 集群扩容 (1) 领域层 (3) 领域模型 (1)
COPYRIGHT © 2014-2024 verysu.com . ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang