首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当你开发一个库的时候,我们应该把根对象图存储在哪里?

当你开发一个库的时候,我们应该把根对象图存储在库的代码仓库中。根对象图是指库的主要对象和它们之间的关系图。将根对象图存储在库的代码仓库中有以下优势:

  1. 代码和根对象图的一致性:将根对象图与库的代码存储在同一个仓库中,可以确保代码和根对象图之间的一致性。当开发人员修改代码时,可以直接更新根对象图,确保根对象图与代码的变更保持同步。
  2. 方便版本控制:将根对象图存储在代码仓库中,可以方便地进行版本控制。开发人员可以使用版本控制系统管理根对象图的变更历史,轻松地回溯、比较和恢复先前的版本。
  3. 提高协作效率:将根对象图存储在代码仓库中,可以方便团队成员之间的协作。团队成员可以通过代码仓库共享和讨论根对象图,减少沟通成本,提高开发效率。
  4. 便于文档维护:将根对象图存储在代码仓库中,可以方便地与库的文档进行关联和维护。开发人员可以在代码仓库中添加相关文档,描述根对象图的结构和用法,提供给其他开发人员参考和使用。

对于腾讯云相关产品,推荐使用腾讯云的代码托管服务——腾讯云开发者工具平台(Tencent DevOps),它提供了代码仓库、版本控制、协作和文档管理等功能,适用于存储根对象图和库的代码。详情请参考腾讯云开发者工具平台官方文档:Tencent DevOps

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

韦东山:6000字长文教你如何学习嵌入式开发

1.2, 硬件操作上单片机和Linux是类似的 以点灯为例, 无论是单片机还是Linux,我们要做事情都一样: ① 看原理,确定引脚是哪一个,确定它输出什么电平才可以 ② 看芯片手册,确定要怎么操作寄存器...③ Linux内核 Linux内核最主要目的是去启动APP,APP保存在哪里?保存在“文件系统”里。“文件系统”又保存在哪里Flash、SD卡等设备里,甚至可能在网络上。...要了解一下文件系统 你辛辛苦苦写出了应用程序,怎么它放到板子上,让它开机就自动启动? 你写程序,它依赖于哪些,这些放到板子上哪个目录? 怎么做一个可升级系统?...③ Linux内核 Linux内核最主要目的是去启动APP,APP保存在哪里?保存在“文件系统”里。“文件系统”又保存在哪里Flash、SD卡等设备里,甚至可能在网络上。...要了解一下文件系统 你辛辛苦苦写出了应用程序,怎么它放到板子上,让它开机就自动启动? 你写程序,它依赖于哪些,这些放到板子上哪个目录? 怎么做一个可升级系统?

2.1K1915

DDD话语“聚合”中伪创新-软件方法(下)第8章Part15

AGGREGATE是一簇相关联对象我们它作为数据变化单元来对待。...……是AGGREGATE成员中唯一允许外部对象持有引用,…… 以8-133为例,按照这个说法,我们可以说: (“植物”+“”+“茎”+“叶”)等一簇相关联对象形成了一个Aggregate,其中...要把这个圆过去,可以“植物”排除组成Aggregate“一簇相关联对象”之外,说“一簇、茎、叶对象组成了植物Aggregate”,不过,Eric Evans又说了“是AGGREGATE成员...这是一个伪创新。 对象就是由其部件(包括属性值和其他对象)组成部件去掉,对象就什么都不剩了,哪里还有什么?...如果某个对象集合组成了另一个对象,那么这个类应该还有会其他属性(或关联)。

38510
  • 翻译 | 我 React-Native app开发中曾经犯过11个错误

    . 2、当你预测 form时候-你最好要一并考虑一下数据验证层.例如,当你使用React Native开发应用程序时候,你会比使用Cordova时写更多代码. 3、如果你需要在已经已经开发完毕,...如果有更多复杂结构,我建议使用这个计划.你会明白什么是什么.在哪里找到他们. 5. 错误项目结构 当你一个新手时候,规划项目结构很难. 首先要理解你项目有多大? 大?真的很大?巨大?...错误container结构.没有从一开始就使用smart/dumb组件 当你初始化一个RN项目,index.ios.js文件中已经有了样式,存储一个独立对象中....但是要确保并不要深度定制一个小组件,这样会让组件规模过大,这样一来很难去读懂代码.确确实实是这样.需要添加一个新属性时候,似乎是解决问题最简单办法,未来这个小举动可能会在读代码时候你搞晕...过度依赖zIndex 很多人从web开发转移到RN开发.web开发中,有一个css 属性是z-index.它帮助我们展示我们需要内容,web中,这么做很酷.

    73420

    DDD领域驱动设计 (C# 整理自“老张哲学”)

    明确含义:一个Bounded Context(界定上下文)可能包含多个聚合,每个聚合都有一个实体,叫做聚合; 识别顺序:先找出哪些实体可能是聚合,再逐个分析每个聚合边界,即该聚合应该聚合哪些实体或值对象...如果 Address 当一个实体,增加主键,就可以Code First通过,但是这个对我们来说是不行我们是从领域设计中考虑,需要把它作为值对象,是作为数据字段,你也许会想着直接 Address...//注意,这个是一个突发,项目上线后需求 ​ ​ } 这个时候你可能会说,这个项目太假了,不会发生这样事情,这些问题都应该在项目开发时候讨论出来,并解决掉,真的是这样么,这样事情多么常见呀...; return Task.FromResult(new Unit()); } 这个时候我们错误通知信息事件总线中发布出去,剩下就是需要在别的任何地方订阅即可,还记得哪里么,没错就是我们自定义视图组件中...很简单,当我们触发某个领域对象某个行为时,该领域对象会先产生一个事件,然后该对象自己响应该事件并更新其自己状态,同时我们还会持久化对象上所发生一个事件;这样当我们要重新得到该对象最新状态时

    1.8K20

    如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化

    那么我们它们建立为值对象同时,又需要持久化到数据。这里就如这个等级折扣。   场景2:一个聚合内部引用了一个对象集合,那么如果使用是关系型数据进行存储,必然需要单独存一个表。   ...三、场景2思考 场景2里有一个比较容易踩进去坑,为了持久化原本设计成值对象改为实体(特别是针对一个对象集合时候,需要一个唯一表示来区分其中多个值对象)。...那么使用关系型数据情况下,我们可以通过使用以下几种方式解决这个问题:   1.对象属性作为所属实体/聚合数据列来存储。     ...缺点:会导致数据表列数较多,一个数据页存储数据量变少,影响数据使用性能。   2.整个值对象序列化后作为所属实体/聚合数据列来存储。     ...缺点:出现大数据长度列,页会导致一个数据页存储数据量变少,影响数据使用性能。另外无法直接通过SQL来查询值对象属性,需要自定义做反序列化操作。

    78630

    新人怎样学习嵌入式Linux?

    也许你说嵌入式上要做些优化,是的,要优化,但是未经优化程序和PC上程序开发没什么差别。另外,当你有能力去优化时,你已经不用来问这个问题了。...具体到某个例子,比如说开发界面,PC上我们用VC;嵌入式Linux里也许我们用QT也许用Android,这个时候应该去学学QT、Android编程。...当然是上网聊天什么了。这些上网、聊天工具在哪? C盘、D盘上。所以, windows要先识别出C盘、D盘。Linux下我们称为文件系统。...但是Flash一般是只能读不能直接写,如果我用到全局变量,这些全局变量在哪里?    答:全局变量应该在内存里 3. 那么谁全局变量放到内存里去?    ...对于Linux做出来产品,有些用作监控、有些做手机、有些做平板。那么内核启动后,挂载文件系统后,应该启动哪一个应用程序呢?  答:内核不知道也不管应该启动哪一个用户程序。

    5.1K10

    【一日一技】揭秘字符串两副“面孔”

    现在,当你命令行交互环境直接输入变量名再回车时候,你看到是'test',当你输入print(a)时候,你看到却是test。 直接输入变量名回车,字符串会被单引号包起来。...定义时候,我使用是单反斜杠。 当我输入变量名,然后回车时,看到结果是'D:\\game\\pal4',不仅有最外层引号,而且反斜杠全部变成了两。...当你要表示反斜杠本身时候,就应该是\\这种写法。 当然定义时候你可以只写单反斜杠,大多数情况下,Python会理解你意图,所以它会自动反斜杠转换为两个反斜杠。...输入print(you)显示又是什么内容。 ❖ ? ? 运行效果 从上面的例子可以看出,直接输入变量名回车和直接用print函数打印调用对象不同方法。所以他们当然可以不一样。 ?...上面说到,当你输入Windows路径时候,大多数情况下,Python能够理解你意图,反斜杠转成双反斜杠。不过也有例外情况。 例如: 假设有一个文件夹名字叫做u6211。

    72630

    韦东山:6000字长文告诉你如何学习嵌入式linux

    1.2 硬件操作上单片机和Linux是类似的 以点灯为例, 无论是单片机还是Linux,我们要做事情都一样: ① 看原理,确定引脚是哪一个,确定它输出什么电平才可以 ② 看芯片手册,确定要怎么操作寄存器...1.3 单片机中点灯、使用LCD 使用单片机开发程序时,我们一上来就写一个main函数,下面是一些简化代码: ?...③ Linux内核 Linux内核最主要目的是去启动APP,APP保存在哪里?保存在“文件系统”里。“文件系统”又保存在哪里Flash、SD卡等设备里,甚至可能在网络上。...要了解一下文件系统 你辛辛苦苦写出了应用程序,怎么它放到板子上,让它开机就自动启动? 你写程序,它依赖于哪些,这些放到板子上哪个目录? 怎么做一个可升级系统?...有时候连书籍都没有,你需要直接啃代码。 当你想从事某个行业时,就需要深入研究行业相关知识。

    5.7K60

    Linux目录详解,软件应该安装到哪个目录

    我们应该知道 Windows 有一个默认安装目录专门用来安装软件。Linux 软件安装目录也应该是有讲究,遵循这一点,对后期管理和维护也是有帮助。...硬盘容量不够时,也可将 /opt 单独挂载到其他磁盘上使用。 源码放哪里? /usr/src 系统级源码目录。 /usr/local/src 用户级源码目录。...这里主要存放那些可选程序。你想尝试最新firefox测试版吗?那就装到/opt目录下吧,这样,当你尝试完,想删掉firefox时候,你就可 以直接删除它,而不影响系统其他任何设置。...一般情况下,我们可以tomcat等都安装到这里。 /proc 虚拟文件系统目录,是系统内存映射。可直接访问这个目录来获取系统信息。...共享又叫动态链接共享,作用类似windows里.dll文件,存放了文件系统程序运行所需共享文件。 /tmp 用于存放各种临时文件,是公用临时文件存储点。

    25.3K54

    万字破解云原生可观测性

    软件架构 最初我们开始学习开发时候可能都是从主机模式着手,随后学习基于 C/S 架构开发模式,接着是从 J2EE 流行到现在微服务和基于容器服务,以及目前比较热门基于流程编排开发架构。...但我们发现,虽然开发、迭代、交付效率得到了很大提升,但是系统或者应用变得稍微复杂了一些。 那么今天这样一个云原生时代呢,我们应该以什么样方式对云原生应用进行监控和管理呢?...当你看到这样一个悲观场面时,监控系统也没办法告诉你到底是哪里不工作了,以及为何不工作了。...从上图来看,可观测性包含了传统监控范畴。总的来看这一套“信号量”显得有点复杂,我们尝试将其精简一下: ? 我们它精简成为三支柱,也可以认为可观测性是由日志、指标和追踪三支柱去构建。...一般社区交流时候也会选用如下这张去讲解: ? Lgging,展现是应用运行而产生事件或者程序执行过程中间产生一些日志,可以详细解释系统运行状态,但是存储和查询需要消耗大量资源。

    1.3K21

    架构之路(六):框架拉出来

    确定方案之后,美工出效果,前台切出静态页面,程序员改成动态,一页一页做。 任务考核就大概是这样,“我们今天某个页面做完”。 这种做法好坏利弊我们就不展开了。...由于(至少是暂时)不再需要考虑这些对象存储问题,那么测试时候,我需要一个对象,只需要直接new一个就行了,而不是从数据库里取,这多方便啊!...所以还是它放到了Entity中使用。 认为Repository是“聚合一种,和取出/存储对象并列,应该置于Entity之外。...对系统数据操作,我们脑海中应该是这样一个概念: 前提:所有的对象平时都是直接存储磁盘里,然后: 我们需要某个/些对象时,就把他们从磁盘里取出来,加载到内存中 进行一些操作修改...那么这里就有一个问题,我不想她只是一个单纯 美工,画出效果切片弄成一个html静态页面就完了,我希望她一样用VS进行开发,用Razor做成view,还负责页面的交互和跳转,所以她还 得Controller

    58990

    Beginner Tutorial 1: SceneNode, Entity,和SceneManager 结构

    一个Ogre中需要注意问题是它把可渲染对象跟它们位置与方向进行了分离. 这意味着你不能直接一个Entity放到场景中去....当你创建一个Entity时候,在你它 绑定 一个SceneNode之前,它是不会被绘制. 相似的, 单独一个SceneNode 不是可以屏幕上显示物体....当你看向屏幕时候, x轴应该是从左到右, 并且右侧是x轴正方向. Y轴屏幕是从下到上,上面那一端是正方向. Z轴是从里到外,屏幕外这一端是正方向....每个物体网络和纹理只会载入内存一次,所以当你试着保存它们时候并没有省下多少资源. 唯一节省是你创建和销毁Entity对象所花费那一点点时间而已....这些话用意是当你本也测试你程序时, 你可以所有的东西都"打开" 就是不要移除任何东西).

    43910

    「首席架构看设计」权威领域驱动设计(DDD)简介

    因此,域专家不会根据屏幕或菜单项上字段描述新用户故事,而是讨论域对象所需基础属性或行为。类似地,开发人员不会讨论数据表中类或列新实例变量。 严格要求我们开发一种无处不在语言。...存储是持久性存储抽象,返回实体 - 或者更确切地说是聚合 - 满足某些标准。例如,客户存储将返回Customer聚合实体,订单存储将返回Orders(及其OrderItems)。...通常,每个聚合一个存储。...如果使用对象关系映射(ORM)工具(如Hibernate),我们可以实体之间导航引用,允许我们透明地遍历图形。根据经验,对其他实体聚合引用应该是延迟加载,而聚合中聚合实体应该被急切加载。...他们还可以通过以下方式与表示层进行调解:解组入站请求;使用域服务(存储或工厂)获取对与之交互聚合引用;该聚合上调用适当操作;并将结果编组回表示层。

    79510

    架构杂谈

    开发视图:开发人员怎么看,开发文档和设计文档 进程视图:程序运行状态,线程、进程、系统交互,UML活动 物理视图:部署视图,部署、网络、可靠性、可伸缩 问题: 不同开发阶段实现架构设计方法论有哪些...一个聚合是一组相关被视为整体对象。每个聚合都有一个对象(聚合实体),从外部访问只能通过这个对象实体对象有组成聚合所有对象引用,但是外部对象只能引用对象实体。...基于聚合以上概念,我们可以推论出从数据查询时单元也是以聚合为一个单元,也就是说我们不能直接查询聚合内部某个非对象; 服务(services) 服务这个词服务模式中是这么定义:服务提供操作是它提供给使用它客户端...服务应该是无状态。 工厂(factories) 工厂用来封装创建一个复杂对象尤其是聚合时所需知识,作用是将创建对象细节隐藏起来。...DDD管理层面实现最大困难在哪里? DSL(Domain Specific Language) 如果我们能把设计做到极致,它就能成为一门语言,一门解决一个特定问题语言。

    50940

    架构杂谈

    开发视图:开发人员怎么看,开发文档和设计文档 进程视图:程序运行状态,线程、进程、系统交互,UML活动 物理视图:部署视图,部署、网络、可靠性、可伸缩 问题: 不同开发阶段实现架构设计方法论有哪些...一个聚合是一组相关被视为整体对象。每个聚合都有一个对象(聚合实体),从外部访问只能通过这个对象实体对象有组成聚合所有对象引用,但是外部对象只能引用对象实体。...基于聚合以上概念,我们可以推论出从数据查询时单元也是以聚合为一个单元,也就是说我们不能直接查询聚合内部某个非对象; 服务(services) 服务这个词服务模式中是这么定义:服务提供操作是它提供给使用它客户端...服务应该是无状态。 工厂(factories) 工厂用来封装创建一个复杂对象尤其是聚合时所需知识,作用是将创建对象细节隐藏起来。...DDD管理层面实现最大困难在哪里? DSL(Domain Specific Language) 如果我们能把设计做到极致,它就能成为一门语言,一门解决一个特定问题语言。

    52510

    Java开发框架必会Struts2第三天

    思路:我们设置【开发模式】时,覆盖掉了一个default.properties中常量,能不能把struts-default.xml中默认拦截器栈设置给覆盖掉呢?答案是可以。 ?...e、d中遗留问题:我们声明时配置了哪些方法需要拦截,哪些方法不需要拦截。但是没有写动作类和动作方法之前,不确定方法名叫什么。 解决办法:我们需要在使用拦截器时候给它注入参数。 ?...三、OGNL简介(非常重要) 1、什么是OGNL OGNL是Object Graphic Navigation Language(对象导航语言)缩写,它是一个单独开源项目。...这两个对象存储了整个动作访问期间用到数据。并且数据绑定到了线程局部变量(ThreadLocal)上了。所以是线程安全。 ? ?...六、Struts2对EL改变 1、Struts2中使用EL问题: 前提: 我们应该知道,如果我们没有往值栈()中放入数据的话,那么我们动作类默认是值栈栈顶。 ? ? ? ?

    905100

    .NET领域驱动设计—实践(穿过迷雾走向光明)

    本节想强调是正确识别出领域中“基础数据”和“业务数据”,让后将其合理关联来表达领域模型; 1.3.3】模型在数据主外键关联问题 当模型落实到代码上时候我们就要考虑如何将模型关系型数据存储问题...;】 这里我们只讨论面向关系型数据存储方式;聚合是一类实体集合,会有一个“带头”实体也就是聚合我们对它操作需要很小心,比如:当你插入一个聚合时会把聚合所涉及一些附属模型都插入,这个时候就是错误...,比如我们分析一个系统时候总是喜欢假设它应该具备什么功能,那么这些功能真的能替你画龙点睛呢,还是画蛇添足;普遍现象是分析人员进行分析时候都没有一定程度搞懂需求真正目的是什么,每一个需求背后是价值驱动...;我们一直都认为自己设计能力不错,就是一直没找到合适地方运用,至少在数据驱动软件开发中你是用不上什么设计思想,逻辑都在数据存储过程里面;你面向对象设计如何了得不,你面向接口编程运用的如何出神入化...其实到目前我们对系统都没有进行实质性编码或者设计数据以往这个时候数据已经出来了,然后对着一张E-R讨论系统需求。

    1.2K100

    一周技术思考(第25期)-编写害羞代码

    这么多年过去,我依然记得,我第一份工作面试时候,面试官问我,“你认为面向对象最伟大地方在哪里”,刚走出校园我并没有回答到面试官“心坎里”,当时被告知答案是多态。...我它看做是登入面向对象大门一个门槛,一个对象要保证不会向其它模块透露任何不必要信息,也就是让我们类“害羞”起来,不要随便“袒露心扉”,要编写“害羞”代码。...软件开发世界里,我们一直矢志不渝地管理复杂度,以“对象方法来思考将有助于我们定义和设计复杂系统,我们会把一个系统看做是一群相互作用组件,而不是试图从整体上处理这个复杂组合体。...这也是为什么,我们考虑一个系统性能时候,不会只看一个机器环境,而是要看整个大运行环境,我们其实是很需要画一张,什么呢,就是大家都各自画一张自己当前所维护系统所在大运行环境,你数据从哪里来...如果我们只关注Tomcat服务监控,有些请求压根就没有过来,所以你看到数据永远是正常当你比如Nginx服务器上面部署监控时候,你可能就会发现实际是有很多异常错误码,这些请求都已经影响了我们用户了

    23320

    领域驱动设计(DDD) - 乐享诚美

    我们应该紧密关联领域建模和设计,紧密将领域模型和软件编码实现捆绑在一起,模型构建时就考虑到软件和设计。开发人员会被加入到建模过程中来。...; 聚合负责与外部其他对象打交道并维护自己内部业务规则; 基于聚合以上概念,我们可以推论出从数据查询时单元也是以聚合为一个单元,也就是说我们不能直接查询聚合内部某个非对象; 聚合内部对象可以保持对其他聚合引用...仓储(Repository) 仓储被设计出来目的是基于这个原因:领域模型中对象自从被创建出来后不会一直留在内存中活动,当它不活动时会被持久化到数据中,然后当需要时候我们会重建该对象;重建对象就是根据数据中已存储对象状态重新创建对象过程...这样做原因是:由于仓储背后实现都是和数据打交道,但是我们又不希望客户(如应用层)重点放在如何从数据获取数据问题上,因为这样做会导致客户(应用层)代码很混乱,很可能会因此而忽略了领域模型存在...当然,其实说人不需要角色就能睡觉也是错误,错在哪里?因为我们可以这样理解:一个客观存在只要具有“人”角色就能睡觉,其实这时候我们已经DESC当作角色来看待了。

    40230

    DDD领域驱动设计实践

    我们应该紧密关联领域建模和设计,紧密将领域模型和软件编码实现捆绑在一起,模型构建时就考虑到软件和设计。开发人员会被加入到建模过程中来。...; 聚合负责与外部其他对象打交道并维护自己内部业务规则; 基于聚合以上概念,我们可以推论出从数据查询时单元也是以聚合为一个单元,也就是说我们不能直接查询聚合内部某个非对象; 聚合内部对象可以保持对其他聚合引用...仓储(Repository) 仓储被设计出来目的是基于这个原因:领域模型中对象自从被创建出来后不会一直留在内存中活动,当它不活动时会被持久化到数据中,然后当需要时候我们会重建该对象;重建对象就是根据数据中已存储对象状态重新创建对象过程...这样做原因是:由于仓储背后实现都是和数据打交道,但是我们又不希望客户(如应用层)重点放在如何从数据获取数据问题上,因为这样做会导致客户(应用层)代码很混乱,很可能会因此而忽略了领域模型存在...当然,其实说人不需要角色就能睡觉也是错误,错在哪里?因为我们可以这样理解:一个客观存在只要具有“人”角色就能睡觉,其实这时候我们已经DESC当作角色来看待了。

    68150
    领券