闭包表存储树状结构数据
概述
在开发中很容易遇到树状结构的数据,比如公司管理层级、比如目录结构等等,当用关系型数据库存储这些数据时,如何设计存储结构以提高查询效率就是一个问题了。这篇文章介绍了使用闭包(Closure Table)表来存储树状结构数据。
graph TD;
A((A)) --- B((B))
A --- C((C))
B --- D((D))
B --- E((E))
B --- F((F))
C --- G((G))
闭包表
闭包表是一张记录树中所有节点以及节点之间的距离的关系表。使用闭包表能够轻松的查询结点的所有子孙节点、父节点,能够按距离查询。但闭包表的使用也会带来一些问题,因为闭包表中记录了所有节点之间的关系,所以在新增节点或修改节点时,都需要变更闭包表,要小心的维护这个表才能保证查询结果正确。
Android 手机装机软件
markdown 中插入 mermaid 图
概述
mermaid 用于在 markdown 插入文档图,本文介绍了在 markdown 中使用 mermaid 插入图形的技巧。
认识 mermaid 图
mermaid github: https://github.com/mermaid-js/mermaid
mermaid (中文翻译为:美人鱼),是用文本语法来描述文档图形的工具,可以描述流程图、时序图、甘特图、类图等。在 markdown 文档中可以使用 mermaid 文本插入文档图形,比如:
graph TB;
A-->B & C-->D
SpringBoot AOP
认识正念
SpringBoot 项目配置
概述
springboot 的出现大大方便了 java 者使用 spring 开发项目,springboot 项目中使用配置简化了代码,同时也增加了项目的灵活性。这篇文章讲解了在springboot 项目中使用的常见配置项,还介绍了如何使用自定义的配置项,以及让自定义的配置项拥有代码提示。
SpringBoot 的配置文件
在 springboot 项目中,配置文件默认是在 src/main/resources 目录下的 application.properties 文件,同时 springboot 支持使用 yml 格式的配置文件,只需要将文件 application.properties 的文件后缀改为 .yml 即可,使用 yml 配置文档结构鲜明,阅读和书写起来也更加友好。
-
application.properties
1
server.port=8080
-
application.yml
1
2server:
port: 8080
算法之回溯算法
设计模式之访问者模式
概述
这篇文章介绍了访问者模式(Visitor Pattern)的概念、优缺点、使用场景以及代码示例。
访问者模式的定义
Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates.
封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于用于这些元素的新的操作。
——《设计模式之禅》
访问者模式的目的是将数据结构和操作分离,用于数据结构固定,操作易变的场景,例如给不同的主管生成不同的报表。
UML 类图

- Visitor 抽象访问者,接口或抽象类,申明访问者可以访问哪些元素,通过
visit方法的参数来定义哪些对象可以访问。- ConcreateVisitor 具体访问者,定义了对每个元素访问时的具体操作
- Element 抽象元素,接口或抽象类,申明接受哪一类访问者,通过
accept方法参数来指定。- ConcreateElement 具体元素,实现
accept方法,通常都是visitor.visit(this)- ObjectStruture 结构对象,元素产生者,一般容纳在多个不同类、不同接口的容器,如 List、Set、Map 等。


