Python 中带花括号的字符串格式化报错的问题 Python 中可以用 "before_{}_after".format("content") 的方式对字符串格式化。 问题来了,如果模板字符串中,本身就包含花括号,会直接报错(例如,对 JSON 模板做格式化)。 怎么解决?用双重花括号进行转义。 如图所示: Python 桩白墨 2023-06-21 428 热度 0评论
使用 ANTLR 实现公式解析 前言 做类似 BI 的产品时,会遇到公式解析场景。用户(前端)输入一个公式字符串,后端要解析为一个具体的函数对象。 我们使用 ANTLR 来做公式解析。 关于 ANTLR 的基本用法,及它在项目中的基本配置,参见:ANTLR4入门 本文并不是手把手教程,只讲核心点,其他不赘述。 定义函数类 我们会有一个 Function 的抽象类/接口,其他所有函数都继承 Function。函数可以套函数。 根据 Java 桩白墨 2023-06-09 1905 热度 0评论
ANTLR4 入门 简介 ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,它根据语法定义生成解析器,解析器可以构建和遍历解析树。 所有编程语言的语法,都可以用ANTLR来定义。ANTLR提供了大量的官方 grammar 示例。 核心概念 理解三个核心概念:Lexer、Parser、AST。 词法分析器(Lexer):将字符序列转换为单词(Token) Java 桩白墨 2023-06-09 838 热度 0评论
使用 Stopwatch 监控 sql 执行时间 这是我看到的一种模式,感觉挺实用的。可以用于监控任意代码的执行时间,比直接使用 System.currentTimeMillis() 稍微优雅一点点。 Stopwatch 是 guava 包中的工具类。 示例代码如下: log.info("begin to execute sql: {}", sql); Stopwatch stopwatch = Stopwatch.createStarted() Java 桩白墨 2023-06-07 274 热度 0评论
Lombok 常用注解 注解浅释 @Getter:生成 Getter 方法 @Setter:生成 Setter 方法 @ToString:生成 ToString 方法 @EqualsAndHashCode:生成 Equals 和 HashCode 方法,可通过 exclude 参数排除不需要的字段 @Data:包含了@Getter,@Setter,@ToString,@EqualsAndHashCode,@Require Java 桩白墨 2023-06-07 144 热度 0评论