优化递归获取树形数据太慢_基于Java注解和模块化生成树形业务文档的实践

一、前言

一个新人快速掌握一个新系统业务逻辑的最好的工具是什么,是看代码?是debug?是看uc?是看demo?答案应该都不是,因为看代码和debug一来太耗时,二来系统大了业务逻辑错综复杂,很多业务模块耦合在一起,很难通过debug来理清所有业务,而uc和需求demo又都是零散在confluence不同的地方,并没有一个完整的业务介绍流图,即使有也是很早之前的,随着小需求的不断迭代,业务逻辑早就不是这样了。

所以为了不然代码那么混乱,耦合那么严重,可以采取模块化思想,每个功能模块只对外提供一个service,其他模块不能调用该模块的bo,这个可以通过微服务来实现,但是微服务太重,比如我一个应用有10个模块,总不能搞10个应用吧,基于webx的应用可以通过的子容器实现ioc级别隔离,也可以使用classloader实现cl级别的隔离,这就是模块化。然后如果采用了领域模型,则一个模块内有会有多个域服务。

有了模块化后,那么就要解决如何在小需求不断迭代的情况下维护一个全局的业务文档,这个文档是一个树形结构,树的根是应用名称,树的第二次是应用的模块,第三次则是每个模块中的域服务.....

二、基于注解生成树形业务文档思路

基于上面介绍一个应用划分为若干个模块,每个模块含有若干个域服务,每个域服务内又有可能有若各子域,设计三类注解:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
假设我们有以下的树形 JSON 数据: ```json { "id": 1, "name": "A", "children": [ { "id": 2, "name": "B", "children": [ { "id": 3, "name": "C", "children": [] }, { "id": 4, "name": "D", "children": [] } ] }, { "id": 5, "name": "E", "children": [ { "id": 6, "name": "F", "children": [] } ] } ] } ``` 现在我们想要将它转换为平级数据,即: ``` 1-A 2-B 3-C 4-D 5-E 6-F ``` 我们可以使用递归的方式来实现这个功能,具体的步骤如下: 1. 定义一个 `TreeNode` 类来表示树形节点。 ```java public class TreeNode { private int id; private String name; private List<TreeNode> children; public TreeNode(int id, String name, List<TreeNode> children) { this.id = id; this.name = name; this.children = children; } // getters and setters } ``` 2. 编写递归函数 `flatten`,用于将树形结构转换为平级结构。 ```java public static List<String> flatten(TreeNode node) { List<String> result = new ArrayList<>(); result.add(node.getId() + "-" + node.getName()); for (TreeNode child : node.getChildren()) { result.addAll(flatten(child)); } return result; } ``` 3. 在主函数调用 `flatten` 函数,并将结果输出。 ```java public static void main(String[] args) { String json = "{\"id\":1,\"name\":\"A\",\"children\":[{\"id\":2,\"name\":\"B\",\"children\":[{\"id\":3,\"name\":\"C\",\"children\":[]},{\"id\":4,\"name\":\"D\",\"children\":[]}]},{\"id\":5,\"name\":\"E\",\"children\":[{\"id\":6,\"name\":\"F\",\"children\":[]}]}]}"; Gson gson = new Gson(); TreeNode root = gson.fromJson(json, TreeNode.class); List<String> result = flatten(root); for (String s : result) { System.out.println(s); } } ``` 运行程序后,输出以下结果: ``` 1-A 2-B 3-C 4-D 5-E 6-F ``` 这样我们就成功地将树形 JSON 数据转换为平级数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值