在 Java Web 开发中,HTTP 请求体是客户端向服务器发送数据的主要载体,例如表单提交、JSON 数据等。当服务器收到请求后,通常通过 HttpServletRequest 类获取请求体的内容。然而,HTTP 请求体通常只能被读取一次。这是因为请求体使用输入流(InputStream)进行读取,一旦读取完毕,流的位置就会到达流的末尾,无法再读取。因此,在开发中,如果不小心读取了请求体...
前言最近刚进项目组,正赶上项目组在总结生产事故,询问得知在一次双11上线过程中,由于新需求与现有接口入参相似度较高,考虑复用现有接口开发,最后上线完成后进行首单验证,触发故障,影响了线上业务。 故障代码分析1234567891011121314151617181920public BaseResp<Void> xxxx(@RequestBody xxxx req) { ...
前言在使用 Java Bean Validation 进行参数校验的时候,很多场景下的一个Req实体都是同时满足多个业务,但是可能在不同的业务场景下,参数校验有细微的差别。例如在新增用户和编辑用户的场景下,UserReq实体相同,但是编辑的时候用户ID是必填的。如果想要新增用户和编辑用户共用一个UserReq实体,就只能在id属性上去掉@NotNull注解,在编辑方法上手动判断,这样实际上比...
概述使用缓存的优点是可以减少直接访问数据库的压力。Caffeine是目前单机版缓存性能最高的,提供了最优的缓存命中率。用法和java中的map集合比较类似,底层使用一个ConcurrentHashMap来保存所有数据,可以理解为一个增强版的map集合,增强的功能有设置缓存过期时间,缓存数据驱逐,统计缓存数据等。本文会大量使用详细的代码示例,通俗易懂地帮助大家学会使用Caffeine本地缓存。...
最近在接手一个新项目中,使用@NotEmpty注解无效,但是@NotNull注解却可以使用,百思不得其解,网上也查了一些资料,说springboot版本问题,让加spring-boot-starter-validation依赖,但是加了也没效果,Controller上加了@Validated注解,方法上也加了@Valid注解,都没效果。最后发现是因为早期的Hibernate Validato...
一、本地Git设置账号 清空全局配置和历史数 由于需要设置多个账号,有全局账号需要清除,具体指令如下 123456789101112131415> git config --list # 查看git配置> git config --global user.name # 查看git全局账号> git config --global --unset user.name # 移除...
策略模式简述策略模式的核心是将行为和行为的具体实现分离的模式,有以下特点: 可以避免代码中出现大量的if else判断可以增加新的策略而不影响调用端的逻辑代码 策略模式UML类图 核心思想是在业务使用处采用接口进行关系依赖,然后根据具体的策略选择具体的实现类执行相关的计算方法 通过Springboot的功能快速实现策略模式功能需求描述需要通过统一的启动任务接口启动不同类型的任务,不同类型的任...
链接: https://pan.baidu.com/s/1gynKmIZ3EWOwMJ2RPZeh3g?pwd=fxxi 提取码: fxxi
预备工作首先安装 Node.js、npm、git工具。 123456> node -vv12.22.9> npm -v8.5.1> git versiongit version 2.34.1 安装 Hexo123456789101112131415161718192021222324252627282930> npm install -g hexo-cli> ...