随笔分类 -  开发场景

摘要:场景 项目基于SpringBoot搭建,默认使用Tomcat Web容器,对于每个HTTP请求,Tomcat Web容器会分配1个线程来处理请求。 在pom.xml里查看依赖关系: spring-boot-starter-web添加了tomcat-embed-core依赖 Tomcat线程池配置可在 阅读全文
posted @ 2024-06-19 21:36 cdfive 阅读(109) 评论(0) 推荐(0) 编辑
摘要:场景 测试环境,采用K8S容器化部署,通过Rancher在Web界面对资源进行管理; 各项目组有独立的网关,多个微服务(根据业务功能、高内聚低耦合划分); 网关是基于spring-cloud-gateway,定制扩展了一些功能,如鉴权、限流等; 微服务是基于spring-cloud各组件,Eurek 阅读全文
posted @ 2024-03-15 22:29 cdfive 阅读(328) 评论(0) 推荐(0) 编辑
摘要:背景 项目开发中经常会用到多线程,比如批量数据处理任务。 通过多线程并行处理,能够有效提高处理的效率和缩短处理时长。 假设某项任务需要处理1分钟,有1000个任务要处理,如果单线程每个任务顺序执行,处理时长为1000分钟(约16.67小时)。 如果10个线程同时处理,则时间缩短10倍,即100分钟( 阅读全文
posted @ 2023-10-31 21:21 cdfive 阅读(129) 评论(0) 推荐(0) 编辑
摘要:Java项目中有计算精度要求高的场景(如金额计算)会使用`BigDecimal`类型来代替`Double`、`Float`。 本文整理了一些日常开发中使用`BigDecimal`值得注意的问题和代码实例。 1. `BigDecimal`初始化时入参应使用`String`类型 例1: ```java 阅读全文
posted @ 2023-09-03 22:27 cdfive 阅读(537) 评论(0) 推荐(0) 编辑
摘要:问题 java8提供了Stream API,配合Lambda表达式,让开发者能对集合对象进行便利、高效的操作。 在日常业务开发中,有个经常用到的场景是将List类型对象转换为Map类型对象,进行后续处理。 在java8之前,这种转换需要先new一个Map对象,遍历list然后通过Map#put来初始 阅读全文
posted @ 2023-04-26 23:34 cdfive 阅读(1669) 评论(0) 推荐(0) 编辑
摘要:问题 使用Spring Cloud搭建微服务体系,如果注册中心选用Eureka,使用spring-cloud-starter-netflix-eureka-client包,能在项目中方便的整合Eureka。 在日常开发中经常会遇到一个问题,某提供方服务的停止和启动,调用方仍然会调用到已停止的服务,而 阅读全文
posted @ 2022-12-28 23:47 cdfive 阅读(1308) 评论(0) 推荐(0) 编辑
摘要:背景 所在是ToC部门,面向C端用户,商品库存数据跟中台库存服务进行了对接,通过MQ消息、OSS文件对接增量库存变动以及全量库存。 某日收到业务反馈线上有个门店商品的库存数据没对,跟中台不一致。 问题排查 检查这边的库存服务、消息队列都没有异常。 搜索日志找到库存全量文件位置,找到商品库存当天凌晨值 阅读全文
posted @ 2022-03-09 22:20 cdfive 阅读(199) 评论(0) 推荐(0) 编辑
摘要:问题 项目中经常会遇到列表去重的问题,一般可使用Java8的stream()流提供的distinct()方法:list.stream().distinct()。 list的类型为List<String>、List<Integer>,list里的元素为简单包装类型。 或者List<Xxx>,其中Xxx 阅读全文
posted @ 2021-07-27 22:20 cdfive 阅读(22746) 评论(0) 推荐(2) 编辑
摘要:背景 今天收到产品反馈一个线上问题,运营在设置组合商品价格时,输入19.9点击保存后变成了19.89。 分析 这个功能3年前就有了,第一次收到反馈这样的问题。 定位到该接口,注意到接口的请求vo是用Double类型定义的价格相关字段, 类似: public class XxxReqVo implem 阅读全文
posted @ 2021-06-08 23:33 cdfive 阅读(482) 评论(0) 推荐(0) 编辑
摘要:场景 最近项目上遇到一个需求:运营后台设置商品分子分类组合查询条件,前端APP由子分类进入展示商品列表。 其中有一种查询条件是在后台添加或导入商品,商品可指定展示的排序,排序号可以重复,也可不设置排序。 商品需满足特定条件才展示,如定位的门店有库存且上架,即可能后台设置了10个商品,但只有5个商品满 阅读全文
posted @ 2021-05-24 13:26 cdfive 阅读(440) 评论(0) 推荐(0) 编辑
摘要:问题 在Sentinel社区里看到一个问题,CommonFilter是否支持热点限流? 问题链接:https://github.com/alibaba/Sentinel/issues/2014 答案是不支持。 因为CommonFilter源码里标记资源SphU.entry(String, int, 阅读全文
posted @ 2021-04-27 22:06 cdfive 阅读(1283) 评论(0) 推荐(1) 编辑
摘要:背景 最近项目里一个大版本上线,其中商品服务对接了业务中台新的价格中心服务,接入了新的商品价格体系。 我们是面向C端用户的项目,出于接口性能的考虑,没有直接调中台的接口取价,而是将价格数据在我们这边也保存了一份, 存储有MySQL和Redis,取价主要通过项目内Redis获取。 上线时已跑了1次来源 阅读全文
posted @ 2021-04-05 00:07 cdfive 阅读(522) 评论(0) 推荐(0) 编辑
摘要:场景 在项目开发中我们对dubbo接口通常可以通过junit编写单页测试来进行自测,配合spring-boot-starter-test,通常是如下方式: @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = XxxApp 阅读全文
posted @ 2021-01-27 22:59 cdfive 阅读(2171) 评论(0) 推荐(0) 编辑
摘要:场景 有时遇到处理数据的场景,比如跑的数据是一个文件格式,有可能数量量很大,导致文件很大。 当文件到1GB、10GB或者以上时,首先用vim或者其它编辑器打开会比较慢。 有的时候希望并发处理,将大文件分割为多个小文件,同时在不同节点处理,加快处理速度。 思路 源码文件:split_file.py 输 阅读全文
posted @ 2021-01-17 12:09 cdfive 阅读(258) 评论(0) 推荐(0) 编辑
摘要:场景 项目中很多地方使用Redis,有的用于缓存,有的直接做为存储,有的key设置有过期,有的key没有过期时间。 随着时间增长,Redis存储数据越来越多,消耗内存不断增长; 无论测试或生产环境,总内存是有限的; 有的key可能临时或测试使用的; 于是有了清理Redis key的需求。 Redis 阅读全文
posted @ 2020-12-28 22:29 cdfive 阅读(1025) 评论(0) 推荐(0) 编辑
摘要:场景 Bean定义如下,仅有一个类型为Integer的age字段。 @NoArgsConstructor @AllArgsConstructor(staticName = "of") @Data public static class Employee { private Integer age; 阅读全文
posted @ 2019-05-26 22:29 cdfive 阅读(3806) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示