![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件架构
文章平均质量分 93
软件架构
-无-为-
从2009年毕业到现在,做过Java后台开发,PL/SQL开发,Pro*C开发,会编写shell脚本,项目管理,现为兼职开发的MySQL DBA。为人友善诚恳,工作踏实,吃苦耐劳,富有朝气,激情,以及团队合作意识。
展开
-
汤师爷【SaaS架构】:多组织管理的底层逻辑与架构设计
组织管理模块属于B端产品非常底层的架构,非常考验架构能力,几乎所有的业务场景都需要应用组织数据,背后反应的是企业决策层的经营战略和财务战略,因此需要掌握一定的企业管理知识和财务知识,如果能够掌握组织管理的概念和要点,对设计好B端产品帮助巨大。原创 2024-07-17 13:54:58 · 532 阅读 · 0 评论 -
汤师爷【SaaS架构】:面向中小连锁的SaaS系统整体规划
更重要的是,企业可以通过SaaS系统,统一收集不同销售渠道的客户数据,例如:线上商城、线下门店、社交媒体、各类平台等,从而实现客户的消费数据的闭环收集与分析。对于新零售连锁企业,业务场景非常复杂,用到的IT系统众多,无法用一款产品覆盖企业客户的所有业务场景,通常来说,需要聚焦某一细分领域,为企业客户提供解决方案。中央库存系统:统一管理全公司的库存,包括进货量、销售量和库存量等信息,并对库存进行监控和预警,提供库存分析和预测功能,帮助企业制定合理的采购计划和销售策略,实现库存管理的优化和协同。原创 2024-07-17 13:52:33 · 377 阅读 · 0 评论 -
汤师爷【SaaS架构】:商品管理系统架构设计
对于零售业务来说,商品系统几乎需要支撑所有业务系统,从商品采购、到仓库收货、上架、前台展示、下单、配送、用户收货、到售后服务等环节,都离不开商品系统。为了保障业务的稳定性、可扩展性,必须要重视商品系统建设,否则,后续业务和系统将很快丧失扩展性和灵活性,甚至无法支撑业务发展,必须推倒重来,付出巨大的代价才能挽救。原创 2024-07-17 13:49:16 · 760 阅读 · 0 评论 -
汤师爷【SaaS架构】:中央库存系统架构设计
近年来,越来越多的零售企业大力发展全渠道业务。在销售额增长上,通过线上的小程序、直播、平台渠道等方式,拓展流量变现渠道。在会员增长方面,通过多样的互动方式,全渠道触达消费者,扩大会员规模。而全渠道的库存管理,逐渐变成零售商在渠道运营方面的核心活动,也是提高库存周转率,保证利润的关键所在。在全渠道模式下,各渠道必须有足量的商品来满足客户需求,同时需有效管理总库存,平衡各渠道库存,以减少缺货或者滞销的情况发生。原创 2024-07-17 13:45:41 · 481 阅读 · 0 评论 -
汤师爷【SaaS架构】:促销系统架构设计
本文直接讨论了促销系统的设计。首先,分析了促销和营销的不同,并强调了新零售中促销活动的重要性和复杂性。然后,详述了各种促销工具以及其在消费者和商品生命周期中的应用。其次,深入讨论了促销活动的运行流程,包括策略规划、内容设计、准备与推广、实施与管理、数据分析与评估。最后,提出了一个抽象的促销系统模型,并详细解释了其组成部分,如优惠模型、卡券模型等。也解释了抽象出“优惠”模型的必要性,并介绍了系统的总体架构和依赖系统。原创 2024-07-17 13:43:40 · 508 阅读 · 0 评论 -
汤师爷【SaaS架构】:订单履约系统架构设计
订单履约系统负责管理从接收客户订单到将商品送达客户手中的全过程。它连接上游交易和下游仓储配送,以提高供应链效率。该系统的核心业务能力包括履约服务表达、履约调度和物流配送。根据物流和商品类型等因素,订单会被拆分成子订单。这样做可以提高处理速度并减少物流费用。在订单履约系统的应用架构中,应用层定义了软件的应用功能,包括C端履约服务和B端管理模块。领域层是业务逻辑的核心,专注于表示业务概念、业务状态流转和业务规则。原创 2024-07-17 13:42:05 · 442 阅读 · 0 评论 -
汤师爷【SaaS架构】:线上商城系统架构设计
线上商城系统架构设计主要解决了零售商家的服务范围限制、缺乏忠实顾客、运营成本增长和电商竞争压力等问题。系统定位包括拓宽门店服务半径、支持多渠道引流、提升用户体验和构建私域客户群。核心业务模式包括电商购物模式和O2O购物模式,这两种模式在消费场所、服务范围、物流配送和售后服务上有所差异。线上商城的概念模型设计包括订单、子订单、渠道信息、客户信息、营销信息、收发货信息、支付信息和交付信息等实体。应用架构包括C端服务模块和B端管理模块,领域层包括正向交易模块和逆向交易模块。原创 2024-07-17 13:40:08 · 540 阅读 · 0 评论 -
汤师爷【SaaS架构】:CRM客户管理系统架构设计
客户管理系统(CRM)的目标是建立、发展和维护良好的客户关系,以提高企业的盈利能力和竞争力。CRM系统可以增强客户忠诚度,提升销售效率和营销效果,以及促进内部合作。客户管理的业务流程包括数据沉淀、客户标签、人群圈选、场景营销、触达转化和数据分析。在概念模型设计中,介绍了客户域、客户行为域、客户资产域和客户运营域的实体模型。CRM系统的应用架构设计包括客户管理、客户标签、人群运营、触达渠道、数据分析和客户资产等功能模块。原创 2024-07-17 13:38:16 · 490 阅读 · 0 评论 -
科普文:深入理解Redis
话说有一名意大利程序员,在 2004 年到 2006 年间主要做嵌入式工作,之后接触了 Web,2007 年和朋友共同创建了一个网站,并为了解决这个网站的负载问题(为了避免 MySQL 的低性能),于是亲自定做一个数据库,并于 2009 年开发完成,这个就是 Redis。这个意大利程序员就是 Salvatore Sanfilippo 江湖人称 Redis 之父,大家更习惯称呼他 Antirez。原创 2024-07-17 11:03:43 · 480 阅读 · 0 评论 -
实战:在项目中常用的8种设计模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。对于一个进阶高级开发的技术人员来说,了解设计模式的理念和具体的实现颇为重要,本期内容分享就到这里了,希望对你能有所帮助。原创 2024-07-17 03:52:49 · 579 阅读 · 0 评论 -
科普文:详解23种设计模式
在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素)的书,该书首次提到了软件开发中设计模式的概念。四位作者合称GOF(四人帮,全拼 Gang of Four)。他们所提出的设计模式主要是基于以下的面向对象设计原则。原创 2024-07-17 03:51:24 · 324 阅读 · 0 评论 -
实战:Spring Boot与Apache CXF构建企业级服务SOAP
通过结合使用 SpringBoot 和 Apache CXF,开发者可以快速、高效地构建和部署高性能、可扩展的 Web 服务。SpringBoot 简化了配置和依赖管理,而 Apache CXF 提供了强大的 Web 服务功能和灵活性,使得构建现代企业级应用变得更加容易。通过 SpringBoot 的自动配置和依赖管理功能,开发者可以快速构建基于 Apache CXF 的 Web 服务应用。它通过自动配置、独立运行和生产就绪的功能,使开发者能够专注于业务逻辑,而无需处理繁杂的配置和依赖管理。原创 2024-07-17 03:50:34 · 700 阅读 · 0 评论 -
实战:SpringBoot 15个功能强大Bean
其实SpringBoot为我们注册了一个Bean对象,在代码中可以直接注入该对象我们还可以拿到原始配置的参数信息输出结果可以根据自己的需要进行解析处理。如果你想在项目中获取Banner信息,那么你可以直接在代码中注入对象。注意:确保你没有关闭Banner,也就是说你没有进行如下的配置。编程方式如果你关闭了Banner,那么上面的注入将会报错。ConversionService是个非常重要及强大的类,该类在SpringBoot启动过程中将配置文件中的配置数据转换为对应的数据类型。原创 2024-07-17 03:49:53 · 624 阅读 · 0 评论 -
科普文:java 9新特性 接口方法私有化
commons();commons();//定一个私有的方法,把重复部分的代码抽离出来。然后在methodA与methodB方法内部去调用。//私有方法只能在本类中调用,这里包括接口的实现类也不能调用。测试代码在接口中使用private修饰方法即可。在方法的内部去调用。在 Java 9 的接口中,私有方法可以分为实例私有方法和静态私有方法两种类型:实例私有方法:这些方法不能在接口外部调用,只能在接口内部的默认方法或其他私有方法中调用。原创 2024-07-17 03:49:03 · 397 阅读 · 0 评论 -
科普文:信创国产数据库兼容性一览
让我们先从一张《数据库库兼容性一览表》开始,谈谈各家兼容性。❖兼容对象在兼容对象上,大部分产品都将Oracle、MySQL、PostgreSQL作为兼容对象,部分产品还将如DB2、SQL Server等作为兼容对象。在实现上有些产品是支持多种模式,可以在初始化时进行选择,这里用[MultiDB]进行区分。原创 2024-07-16 07:58:36 · 775 阅读 · 0 评论 -
实战:利用FactoryBean实现SPI获取对象
Java 6 引入了一种功能,用于发现和加载与给定接口匹配的实现:服务提供者接口(SPI)。SPI 是 java 用于发现和加载与给定接口匹配的实现提供的一种实现机制。主要是为了扩展现有系统应用等。SPI机制是Java的一种服务发现机制,为了方便应用扩展。那什么是服务发现机制?简单来说,就是你定义了一个接口,但是不提供实现,接口实现由其他系统应用实现。你只需要提供一种可以找到其他系统提供的接口实现类的能力或者说机制。原创 2024-07-16 07:02:24 · 711 阅读 · 0 评论 -
科普文:BIO、NIO和AIO小结
BIO适合连接数目较少且固定的架构,NIO适合连接数目多,但是并发读写操作相对较少的场景,AIO则适合连接数目多,且并发读写操作也多的场景。可以发现,AIO和NIO的使用方式基本一致,数据都是从Channel读入Buffer,或者从Buffer写入Channel中,不同的是AIO是实现了异步非阻塞。), 通过上面代码和运行结果可以发现,在服务端和客户端进行通信时,我们并没有新建线程类进行通信,这也是NIO和BIO最大的区别之一。NIO适合一些复杂的、高频的、长连接的通信场景,例如聊天室、网络游戏等。原创 2024-07-16 06:37:01 · 675 阅读 · 0 评论 -
实战:SpringBoot项目开发中的扩展接口和开发技巧
Spring容器启动后在实例化所有bean之前会调用BeanFactoryPostProcessor,在这里的回调方法中我们可以对所有bean对应的BeanDefinition进行修改,以满足特定的需求,如上在UserService bean对象中有个name属性,在这里修改设置值为Pack。通过不断学习和实践,我们可以不断提升自己的技能水平,为项目的成功开发奠定坚实的基础。当需要修改或增加功能时,我们只需要在相应的扩展接口上进行操作,而无需改动项目的核心代码,从而降低了项目的维护成本和风险。原创 2024-07-16 06:10:50 · 910 阅读 · 0 评论 -
科普文:SpringBoot核心注解及应用梳理
如果没有指定 name 属性,当注解写在字段上时,默认取字段名进行名称查找。到这里你应该清楚了@Resource@Autowired注入的区别了,自身再通过源码走一遍流程,以后就不用在死记硬背这些东西了。Spring & SpringBoot提供了非常多的条件注解用来控制是否创建Bean对象,同时你还可以自定义条件注解。标记一个方法来定义要由Spring的IoC容器管理的bean,该方法的返回值变为bean实例。应用于类,以在一个全局处理组件中处理整个应用程序中的异常,它允许您定义应用于所有的。原创 2024-07-16 06:00:25 · 605 阅读 · 0 评论 -
实战:SpringBoot扩展功能ExitCodeGenerator生成的退出代码
通过实现和使用 ExitCodeGenerator,开发者可以更加灵活地控制和管理 Spring Boot 应用程序的退出行为,从而提高系统的可靠性和可维护性。是 Spring Boot 框架中的一个接口,它允许应用程序退出时生成自定义的退出代码。你可以根据不同的退出码,执行相应的动作,如:资源清理,日志记录等。当执行退出时,会遍历所有的对象,直到exitCode不为0时退出。这里的输出就与具体什么异常没有关系了,只要遇到第一个返回不为0的数字,则直接退出了。然后,在需要的时候,可以调用。原创 2024-07-16 05:48:44 · 249 阅读 · 0 评论 -
科普文:图解并发下的AQS原理及其实现的锁
AQS(抽象队列同步器)是一个用来构建锁和同步器的框架,它维护了一个volatile修饰的state(共享资源)和一个CLH(FIFO:先进先出)双向队列。科普文:深入理解并发下的AQS机制-CSDN博客AQS支持两种资源共享方式:独占式:同一时间只有一个线程可以获取到资源(如:ReentrantLock)。共享式:同一时间可以有多个线程获取到资源(如:CountDownLatch、Semaphore等)。原创 2024-07-16 05:26:45 · 570 阅读 · 0 评论 -
科普文:深入理解并发下的AQS机制
通过对java中的AQS锁机制的剖析,我们理解了独占和共享两种基本的持有锁的方式,并且分析了Mutex、可重入锁、公平锁、非公平锁的实现,读写锁等特殊的锁。通过对这些所的理解,我们更加深刻地理解了AQS的本质,以及其中线程的状态和活动轨迹。Java并发-AQS及各种Lock锁的原理_aqs及java各种锁-CSDN博客。原创 2024-07-16 04:46:59 · 648 阅读 · 0 评论 -
科普文:深入理解并发下的CAS机制
今天花了点时间了解了一下JDK1.8中的实现,发现它实现的主要思想就是依赖于CAS机制。CAS机制是并发中比较重要的一个概念,所以今天这篇博客就来详细介绍一下CAS机制以及Java中对CAS的适用。CAS全称需要修改的数据的内存地址(V);对这个数据的旧预期值(A);需要将它修改为的值(B);修改前记录数据的内存地址V;读取数据的当前的值,记录为A;修改数据的值变为B;查看地址V下的值是否仍然为A,若为A,则用B替换它;原创 2024-07-16 04:22:59 · 456 阅读 · 0 评论 -
实战:SpringBoot源码分析之启动流程
通过深入分析SpringBoot应用程序的启动流程,我们可以更好地理解其内部机制,进而在开发中更好地利用这些机制,提高开发效率和代码质量。文件配置,基本实现零配置启动项目,简化基于Spring框架的应用程序的开发过程。在这篇文章中,我们将深入探讨SpringBoot应用程序的启动流程,了解其背后的机制。这里的SpringApplication.run是启动SpringBoot应用程序的入口。:准备上下文,加载配置,注册Bean,调用监听器的 contextPrepared 方法。原创 2024-07-16 04:10:07 · 972 阅读 · 0 评论 -
实战:功能强大齐全BBS论坛项目Echo简介
Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java Web 技术栈(SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch + Spring Security + ...),并提供详细的开发文档和配套教程。原创 2024-07-15 10:45:16 · 745 阅读 · 0 评论 -
实战:MySQL运行在Docker容器中会损失多少性能
自从使用 docker 以来,就经常听说 MySQL 数据库最好别运行在容器中,性能会损失很多。一些之前没使用过容器的同事,对数据库运行在容器中也是忌讳莫深,甚至只要数据库跑在容器中出现性能问题时,首先就把问题推到容器上。那么到底会损失多少,性能损失会很多吗?为此我装了两个 MySQL,版本都是 8.0.34。一个用官网二进制包安装,另一个用 docker hub 的 MySQL 镜像安装。两个 MySQL 都运行在同一台机器,但不同时运行,先后运行测试。原创 2024-07-15 10:33:56 · 603 阅读 · 0 评论 -
科普文:分布式存储性能优化思路
企业实现私有云之后,云上的存储资源会是多元化的架构模式,基于上述提纲,在实践的过程当中实现更精细化的梳理、更准确客观的分析、更实事求是的态度,才能解决好云平台上存储架构性能与扩展性的平衡问题。分布式存储系统当中在哈希计算的时候之所以能保持集群的相对稳定性,就是因为虚拟对象(如Ceph的PG、Pool,如Swift的Container)设计,同样这些虚拟对象数量、管理方式、映射关系等方面的配置也是决定数据分布式算法计算因子是否优秀的重要方面,同样需要精细化设计。比如高速网络的选择要考虑到网络通讯质量的需求。原创 2024-07-15 10:17:06 · 980 阅读 · 0 评论 -
科普文:信创主流操作系统选型对比测试分析
国内本土操作系统主要以Linux为基础进行二次开发为主,目前国内信创类服务器操作系统主要分为开源社区版和商业版两大类。开源社区版主要以欧拉OpenEuler、龙蜥OpenAnolins、OpenCloud等,商业版主要以麒麟KylinOS、统信UOS、其他(中科方德Delix、红旗)等为代表,以下表格为其主要发行版本对比:(点击图片可放大)原创 2024-07-15 10:13:27 · 818 阅读 · 0 评论 -
科普文:中小银行银河麒麟操作系统性能优化实战经验
在配置系统之外,掌握收集基本的系统信息的方法也很重要,服务器版麒麟系统除了用命令行查看系统资源使用情况(命令与redhat一样,这里就不赘述了),还可以在系统监控工具的图形界面上查看和查找进程,改变进程的优先级以及杀死进程。默认系统监控工具会显示当前登录用户的进程列表,通过选择查看菜单下的不同选项,可查看活动的进程、查看所有进程、查看当前登录用户的进程、查看进程依赖,还可以通过按钮刷新进程列表,选中进程后杀死进程。如测试分区为tmpfs,可以提高部分测试程序的分数,修改IO调度器,会对此部分的性能有影响。原创 2024-07-15 10:10:07 · 764 阅读 · 0 评论 -
科普文:MySQL 数据库巡检
数据库巡检的内容通常涵盖主机硬件、操作系统和MySQL巡检项。其中,主机/os巡检主要包括:主机的硬件配置、CPU/内存/磁盘使用率以及磁盘的I/O使用情况;MySQL巡检项包括:数据库配置、用户权限、大表数据量、业务表主键和自增长情况、数据库的并发性、当前和历史连接情况统计、备份执行情况以及日志记录和慢SQL的分析优化等。原创 2024-07-15 10:06:00 · 528 阅读 · 0 评论 -
科普文:Linux服务器巡检小结
权限管理系统能够按照统一的策略实现层次化的信息资源结构和关系的描述和管理,提供统一的、基于角色和用户组的授权管理,对授权管理和访问控制决策策略进行统一的描述、 管理和实施, 提供基于属性证书和 LDAP 的策略和授权信息发布功能,构建高效的决策信息库和决策信息库的更新、同步机制,面向各类应用系统提供统一的访问控制决策计算和决策服务。即根据容灾备份系统的需求,明确哪些业务状态数据需要备份,事实上,需要提供最完善备份的是稳定的业务状态数据, 而处理流程当中的中间临时数据的备份需求较低。原创 2024-07-15 09:59:33 · 679 阅读 · 0 评论 -
科普文:存储 IO 性能优化策略总结
简单来讲从主机访问存储存在很多层的Queue(软硬件在传输过程中设计的Buffer大小,将串行流水线操作模拟成并行操作的一种并发交易模拟机制)。一般来说,更高的队列深度相当于更好的性能。如表5所示,OLTP系统中,单进程的LGWR进程有可能成为一个大瓶颈,特别是在无法保证在线日志IO写性能的情况下,很容易出现排队等LGWR进程的情况。而小IO的应用,比如数据库,则需要通过IOPS和延时的指标来评测性能,高IOPS和低延时同时满足的情况下,才能应对高并发且快速的数据库访问,如表2。原创 2024-07-15 09:50:31 · 658 阅读 · 0 评论 -
科普文:存储性能瓶颈分析与优化总结
分布式存储系统的核心设计思想是去中心化, 去中心化的难点主要在于是主控节点的去中心化,有主控节点的架构比如 HDFS 的架构设计思路是 map-reduce ,化大为小,分而治之,再合并处理,其架构中需要主控节点来协调,只是主控节点的负载都分发到了数据节点,数据节点上则存放着数据副本,每个数据副本又都分布在三个不同的数据节点上,如图 5 所示;随着数字化转型的深入,企业的 IT 系统建设也进一步加快,这一方面带来了数据量的急剧增长,另一方面也提高了数据的访问频率,存储的性能瓶颈的影响也会被进一步放大。原创 2024-07-15 09:48:19 · 551 阅读 · 0 评论 -
科普文:了解RAID独立冗余磁盘阵列
RAID 6思想最常见的实现方式是采用两个独立的校验算法,假设称为P和Q,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。外接RAID卡通过其硬件RAID控制器,接收主机发送的数据,按照预设的规则进行数据的分割、条带化,并根据所选的RAID级别,将数据分散存储到多个磁盘驱动器上。RAID的设计初衷是提供高端的存储功能和冗余的数据安全,在整个系统中,RAID被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的I/O性能。以满足不同数据应用的需求。原创 2024-07-15 09:43:39 · 823 阅读 · 0 评论 -
科普文:spring声明式事务@Transactional原理与实现
在使用事务的时候需要添加@EnableTransactionManagement注解来开启事务,Spring事务底层是通过AOP来实现的,所以启用事务后,同样会向容器中注入一个代理对象创建器,AOP使用的是AnnotationAwareAspectJAutoProxyCreator,事务使用的是InfrastructureAdvisorAutoProxyCreator。原创 2024-07-15 08:14:54 · 1176 阅读 · 0 评论 -
科普文:Linux服务器性能分析指标
基础性能指标CPU 使用率(CPU Utilization)含义: CPU 占用率。理想值: 低于70%。超过85%时需注意,超过90%可能需扩容或优化。内存使用率(Memory Utilization)含义: 内存已用量占总内存的百分比。理想值: 低于70%。超过85%需注意,超过90%可能需扩容或检查内存泄漏(OOM问题)。原创 2024-07-15 07:23:40 · 958 阅读 · 0 评论 -
实战:spring项目中不推荐用自带的声明式事务@Transactional
以上的事务管理适合大多数情况下需要编程式管理事务的情况,使用哪种方式需要架构师和程序员根据业务类型选择。Spring还提供了TransactionalOperator 和 ReactiveTransactionManager的方式来实现编程式事务,参考文章[2]中有说明,有兴趣的可以去查看Spring的官方网站。原创 2024-07-15 07:15:51 · 1021 阅读 · 0 评论 -
科普文:数据库事务、隔离级别和并发问题(MySQL)
事务:并发连接场景下,用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。MySQL的事务就是将多条SQL语句作为整体进行执行。:事务将数据库从一种一致性状态转换为另一种一致性状态;保证系统始终处于一个完整且正确的状态。:事务可由一条非常简单的 SQL 语句组成,也可以由一组复杂的SQL 语句组成。:在数据库提交事务时,可以确保要么所有修改都已经保存,要么所有修改都不保存。事务是访问并更新数据库各种数据项的一个程序执行单元。在 MySQL innodb 下,单条语句都具备事务。原创 2024-07-15 06:31:13 · 354 阅读 · 0 评论 -
科普文:Redis一问一答
缓存穿透是指在缓存系统中,频繁查询一个不存在于缓存中的数据,从而导致每次查询都必须请求数据库,造成数据库负担过重。这种情况通常发生在恶意攻击、大量无效请求或数据更新不及时的情况下。缓存穿透会导致以下问题:数据库压力增大: 由于每次查询都需要访问数据库,会导致数据库的负载大幅增加,可能引发性能问题。响应时间延长: 由于缓存未命中,每次查询都要请求数据库,导致响应时间延长,影响用户体验。原创 2024-07-14 17:02:02 · 787 阅读 · 0 评论 -
科普文:CodeReview小结
字段的设计,数据库的设计是对实际业务的映射,我们要保证每一个字段的出现都反应实际业务并且经过合理性的验证,比如设计table1的时候A字段在table2中已经出现,并且A和B表有相应的关联,那么要注意A字段对于table1的冗余是否有合理性,如果没有合理的说服性可以去掉A,而节省对A字段的维护成本(存储空间,更新操作等)。在做Code Review的时候,如果有大量的文件修改,那么Review起来是很困难的,但如果PR比较小,相对就比较容易Review,也容易发现代码中可能存在的问题。原创 2024-07-14 16:18:19 · 909 阅读 · 2 评论