随笔分类 - 开发备忘
摘要:问题 今天启动业余学习项目里的某服务A发现启动失败,报错信息如下: [ ERROR] [2025-01-05 15:41:26,083] [main] com.cdfive.springboot.startup.ApplicationStartupExceptionReporter [30] - e
阅读全文
摘要:问题 项目A、B,都基于SpringBoot技术栈开发。 发现其中项目A在本地IDE启动时控制台会打印spring-webmvc里@Controller的mapping映射信息,其中一行如下: 2024-11-20 21:10:12 [ main:76835 ] - [ INFO ] org.spr
阅读全文
摘要:String str = "abc"; 需求是String转换为List<Character>或List<String>。 第一眼想到是通过String#toCharArray()转换为char[],然后再转换为List,尝试用Arrays.asList(T... a): char[] chars
阅读全文
摘要:去年写过一篇博客记录了日常项目开发中使用BigDecimal遇到的问题和注意事项: Java项目日常开发中使用BigDecimal常见问题总结 今年在项目开发中又遇到了几个实例,这里补充记录下。 BigDecimal初始化时入参使用String类型,如果不是数字会抛异常NumberFormatExc
阅读全文
摘要:知识点 Spring提供了@Value注解,可用于将配置文件或注册中心的属性值动态注入到Bean中。 注:@Value注解在spring-beans包里。 @Value("${...}"):注入获取对应属性文件中定义的属性值; @Value("#{...}"):表示SpEl表达式通常用来获取Bean
阅读全文
摘要:问题 项目里使用xxl-job定时任务框架,某个任务定义如下: @Slf4j @RefreshScope @Component @JobHandler("xxxTask") public class XxxTask extends IJobHandler { @Value("${xxx.enable
阅读全文
摘要:场景 某天在钉钉阿里云运维群收到提示,部分节点阿里云网络异常告警。 检查组内项目微服务发现有1个节点出现了假死现象,进程运行服务没有挂,CPU、内存等资源正常, 但访问服务提供的RESTAPI接口均无法响应,通过网关调用接口一直等待直到超时。 分析 通过jstack导出线程堆栈信息到文件: jps
阅读全文
摘要:启动本地Kibana连接测试环境ElasticSearch,启动报错: [warning][migrations] Another Kibana instance appears to be migrating the index. Waiting for that migration to com
阅读全文
摘要:背景 项目开发中经常会用到多线程,比如批量数据处理任务。 通过多线程并行处理,能够有效提高处理的效率和缩短处理时长。 假设某项任务需要处理1分钟,有1000个任务要处理,如果单线程每个任务顺序执行,处理时长为1000分钟(约16.67小时)。 如果10个线程同时处理,则时间缩短10倍,即100分钟(
阅读全文
摘要:背景 在项目开发前的设计阶段,我们会根据需求分析、业务梳理的结果进行领域建模。 通常有2种方式: 实体设计优先 数据库设计优先 无论哪种方式,最终会创建数据库、数据表。 通常在每一张表,会设计2个时间字段,创建时间和修改时间,这样在查询数据时能够清晰的看到数据行 是什么时候创建、什么时候最后修改的,
阅读全文
摘要:## 问题 最近协助渠道组开发新需求,封装实现了一个公共模块供不同渠道项目使用。 以前各个渠道项目有很多相似的菜单和功能,各自项目里自己的代码实现,表设计和代码风格迥异。 本公共模块对新需求的功能点进行抽象,通过设计回调接口来实现差异性,减少重复代码,提高模块复用性和可维护性。 目前有2个渠道项目接
阅读全文
摘要:## 背景 项目中某配置类`XxxConfig`定义了很多配置参数,通过Spring的`@Value`注解与配置中心的项目yml里的配置项关联。 ``` @Slf4j @Getter @Setter @RefreshScope @Configuration public class XxxConfi
阅读全文
摘要:问题 使用Spring Cloud搭建微服务体系,如果注册中心选用Eureka,使用spring-cloud-starter-netflix-eureka-client包,能在项目中方便的整合Eureka。 在日常开发中经常会遇到一个问题,某提供方服务的停止和启动,调用方仍然会调用到已停止的服务,而
阅读全文
摘要:问题 早上巡检某项目日志,筛选发现几条报错信息,如下: org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: java.sql.SQLException: Incorrect s
阅读全文
摘要:问题 从数据库查出某字段(text类型)数据,通过编写程序解析转换做处理,程序编写完成编译时报错: Error: java:常量字符串过长 解决 查询资料发现,原因是javac在编译期间,常量字符串最大长度为65534。 可在Preference->Build,Execution,Deploymen
阅读全文
摘要:项目背景 最近在某项目开发中遇到一个高版本ES创建索引时指定index和type问题。 项目中的ES使用了阿里云上的ES,版本为7.4。 通过ES官网对各版本type的演变如下: 在5.X版本中,一个index下可以创建多个type 在6.X版本中,一个index下只能存在一个type 在7.X版本
阅读全文
摘要:场景 在项目开发过程中,有时会遇到ElasticSearch(简称:ES)的数据需要迁移和同步。 例如: 索引结构发生变化,如字段修改了类型 ES集群从开发环境迁移到测试环境 ES集群虚拟机测试环境迁移到K8S容器环境 ES线上环境数据导入到测试环境 其它场景 思路 迁移同步的数据包含索引和文档。
阅读全文
摘要:背景 项目中很多地方使用了Guava Cache,用于加速读取频繁访问的热点数据。 最近项目组中遇到一个"诡异"的问题,多次获取Cache中相同key的数据,返回值不同。 分析 通过查看日志和排查代码,发现有多个地方获取缓存,有的地方获取缓存数据还进行了过滤处理, 正是这些处理改变缓存值,导致其它地
阅读全文
摘要:背景 项目中有时我们需要对应用进行诊断和调试,如调用某个接口进行业务验证、业务执行、数据修复、刷新缓存、查询数据、跑批量任务等等。 微服务项目 如基于Dubbo搭建的微服务,我们可使用Dubbo支持的telnet运维管理,其中invoke命令方便直接调用Dubbo接口; 也可整合swagger-du
阅读全文
摘要:背景 所在是ToC部门,面向C端用户,商品库存数据跟中台库存服务进行了对接,通过MQ消息、OSS文件对接增量库存变动以及全量库存。 某日收到业务反馈线上有个门店商品的库存数据没对,跟中台不一致。 问题排查 检查这边的库存服务、消息队列都没有异常。 搜索日志找到库存全量文件位置,找到商品库存当天凌晨值
阅读全文