DDD(1)——领域驱动设计架构的四个层次,及依赖关系

在领域驱动设计(Domain-Driven Design,简称DDD)中,系统通常被划分为以下四个核心层次: 用户界面层 (UI层):这是用户与系统交互的地方,也就是我们通常说的前端部分。 应用层 (Application层):这一层为用户界面层提供所需的应用功能。它并不直接包含业务逻辑,而是负责协调和指导领域层和基础设施层如何工作以完成特定的用户故事或用例。 领域层 (Domain层):这里包含

ES 在创建索引时,指定分词方式

我要在 ES 中创建一个索引,它包含多个字段。我想让其中一些字段使用“空格分词”,另一些字段使用“标准分词”。 示例代码如下: PUT /my_index { "settings": { "analysis": { "analyzer": { "space_analyzer": { "type": "custom", "tokenizer": "space_tokenizer" } }, "tok

Mac 账户恢复“管理员”身份

问题描述 在升级到 13.4.1 之后,遇到一个问题:我的账户变成了“普通”用户,没有 sudo 权限。当我尝试修改权限时,提示我输入管理员的名称、密码。可是,我只有这一个账户,已经丢失管理权限,并没有另一个所谓的“管理员”账户了。 搜遍整个互联网,我都没有找到答案。最后是在 chatgpt 的帮助下,结合多年技术功底,反复试探,解决了这个问题。 修复方式 一句话概括:进入恢复模式,给用户添加 s

Python 中带花括号的字符串格式化报错的问题

Python 中可以用 "before_{}_after".format("content") 的方式对字符串格式化。 问题来了,如果模板字符串中,本身就包含花括号,会直接报错(例如,对 JSON 模板做格式化)。 怎么解决?用双重花括号进行转义。 如图所示:

使用 ANTLR 实现公式解析

前言 做类似 BI 的产品时,会遇到公式解析场景。用户(前端)输入一个公式字符串,后端要解析为一个具体的函数对象。 我们使用 ANTLR 来做公式解析。 关于 ANTLR 的基本用法,及它在项目中的基本配置,参见:ANTLR4入门 本文并不是手把手教程,只讲核心点,其他不赘述。 定义函数类 我们会有一个 Function 的抽象类/接口,其他所有函数都继承 Function。函数可以套函数。 根据

ANTLR4 入门

简介 ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,它根据语法定义生成解析器,解析器可以构建和遍历解析树。 所有编程语言的语法,都可以用ANTLR来定义。ANTLR提供了大量的官方 grammar 示例。 核心概念 理解三个核心概念:Lexer、Parser、AST。 词法分析器(Lexer):将字符序列转换为单词(Token)

使用 Stopwatch 监控 sql 执行时间

这是我看到的一种模式,感觉挺实用的。可以用于监控任意代码的执行时间,比直接使用 System.currentTimeMillis() 稍微优雅一点点。 Stopwatch 是 guava 包中的工具类。 示例代码如下: log.info("begin to execute sql: {}", sql); Stopwatch stopwatch = Stopwatch.createStarted()

Lombok 常用注解

注解浅释 @Getter:生成 Getter 方法 @Setter:生成 Setter 方法 @ToString:生成 ToString 方法 @EqualsAndHashCode:生成 Equals 和 HashCode 方法,可通过 exclude 参数排除不需要的字段 @Data:包含了@Getter,@Setter,@ToString,@EqualsAndHashCode,@Require