获得徽章 0
在代码审查时发现,小伙伴习惯遇到需求就复制代码,或加一个if-else。

此时,我们应该考虑用设计模式。比如这里,可以用类似于用模板方法模式的思想,有些动作,比如这里的版本号决策延迟到子类中实现。
Java分布式架构实战于2025-04-25 18:03发布的图片
评论
阿里Java规范不建议用枚举,可能大多数人理解不了。包括我。我建议是充分利用枚举类。不要听他们的,自己来实践。

1,枚举字段用枚举类;
2,枚举类比较用==;
3,数据拷贝用MapStruct,不用BeanUtils。
评论
# 在windows 开发环境安装nginx

# 安装windows service管理器
choco install nssm

# 安装nginx
choco install nginx
展开
Java分布式架构实战于2025-03-24 17:43发布的图片
Java分布式架构实战于2025-03-24 17:43发布的图片
Java分布式架构实战于2025-03-24 17:43发布的图片
评论
输入:<#key#>, <#^key#>, <#~key#>
期望输出:key

private String getKey(String str) {
String regex = "<#(?:\^|~|)?(.*?)#>";
return str.replaceAll(regex, "$1");
}

原正则表达式说明:
<#:匹配起始标签
(?:\\^|~|)?:非捕获分组,匹配^或~或空(注意管道符|后有个空选项)
(.*?):捕获组,非贪婪匹配任意字符
#>:匹配结束标签

优化后

// 新增预编译Pattern (类成员变量)
private static final Pattern KEY_EXTRACT_PATTERN = Pattern.compile("<#(?:\\^|~|)?(.*?)#>");

private String getKey(String str) {
Matcher matcher = KEY_EXTRACT_PATTERN.matcher(str);
return matcher.replaceAll("$1");
}
展开
评论
将Node.js中的表达式${data?.pageConfig?.pageConfigData?.tips ? "xxx": "yyy"}转换为freemaker写法::<#-- 模拟数据 -->
<#assign data = {
"pageConfig": {
"pageConfigData": {
"tips": "这是提示信息"
}
}
}>

<#-- 逐级检查 -->
<#if data?? && data.pageConfig?? && data.pageConfig.pageConfigData?? && data.pageConfig.pageConfigData.tips??>
逐级检查:tips 存在,其值为 ${data.pageConfig.pageConfigData.tips}
<#else>
逐级检查:tips 不存在
</#if>

<#-- 使用 default 函数 -->
<#assign tips = data.pageConfig.pageConfigData.tips!>
<#if tips?has_content>
default 函数检查:tips 存在,其值为 ${tips}
<#else>
default 函数检查:tips 不存在
</#if>

<#-- 使用 attempt 指令 -->
<#attempt>
<#if data.pageConfig.pageConfigData.tips?has_content>
attempt 指令检查:tips 存在,其值为 ${data.pageConfig.pageConfigData.tips}
<#else>
attempt 指令检查:tips 为空
</#if>
<#recover>
attempt 指令检查:tips 不存在
</#attempt>
展开
评论
1,在数据库设计时,如果在业务上具体唯一性时,一定要设计唯一索引,做个兜底。
2,throw new RuntimeException(ex)时,会在异常消息前多一串“java.lang.RuntimeException: ”
java.lang.RuntimeException: org.apache.ibatis.exceptions.PersistenceException:
### Error committing transaction. Cause: org.apache.ibatis.executor.BatchExecutorException:
展开
1
# git 分支管理
1、 release 分支是受保护的只能merge代码不能提交。
2、每个sprint 开始 会基于release分支 创建一个release/sprint(number)
3、每个sprint feature 分支 都从release/sprint(number) 创建。
4、每个sprint 结束前要完成当前 release/sprint(number) 开发,测试,集成。最后将release/sprint(number) merge 到release 分支上

思考:如何更好地划分一个sprint下面的多个feature?

这里的需求拆分要像代码一样,做到“高内聚,低耦合”。
展开
评论
在idea community中,maven插件编译输出中文时乱码。各种办法试了一遍。竟然发现是windows 11 中文版默认的Active code page是936,即GBK。这时javac在使用-Dfile.encoding时,输出英文字符不会乱码。但是在输出中文字符时,会乱码。必须把windows 11系统的Active code page设置为65001。
Java分布式架构实战于2025-01-17 22:15发布的图片
评论
codeReview:我们现在的命名不太统一,有叫tid 的, 有叫translateId 的。有叫lang的,有叫language的。命名比较随意。大家后续要注意这个细节问题。尽量保持命名准确、统一。
评论
在执行mvn clean test-compile时,报错“无效的标记: --release”

这个错误通常与Java编译器版本和Maven配置有关。让我帮您解决这个问题:
原因分析
--release 标记是在Java 9中引入的新特性,如果您使用的JDK版本低于9,或者Maven配置中指定了较低的Java版本,就会出现这个错误。

通过java -version, mvn -v 检查jdk版本。 发现mvn输出非 jdk17. 通过调整环境变更JAVA_HOME后,再次检查发现一致了,都变为jdk17。

然后再次执行“mvn clean test-compile”。依然报错。

然后通过分析spring-boot-dependencies发现,它在pom中定义了maven.compiler.release=17。在项目中增加此项后,再次运行“mvn clean test-compile”,正常了。
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
展开
Java分布式架构实战于2024-12-30 12:47发布的图片
Java分布式架构实战于2024-12-30 12:47发布的图片
评论
Java Senior Engineer @某垂直行业B2B电商平台
Java Senior Engineer @某垂直行业B2B电商平台
Java Senior Engineer @某垂直行业B2B电商平台
Java Senior Engineer @某垂直行业B2B电商平台
Google Password Manager security tips
Java分布式架构实战于2024-09-05 14:29发布的图片
评论
下一页
个人成就
文章被点赞 94
文章被阅读 33,243
掘力值 1,033
收藏集
35
关注标签
10
加入于