
【随笔--杂记】
文章平均质量分 75
日常问题记录
码农爱java
好记性不如烂笔头,记录技术点滴,保持热爱。come on!
展开
-
Spring Boot 集成阿里云OSS 完成文件上传下载
文件上传下载在项目开发中是一个非常常见的业务场景,在云服务上还没有兴起的时候,一般来说都会把文件单独存放到文件服务器上,随着云服务的兴起,各类云服务厂商都提供了 OSS 服务,本篇我们分享 Spring Boot 项目如何把文件存储到阿里云 OSS。业务场景要求用户端发起导出请求后,快速生成一个导出记录响应到用户端,后端异步完成导出操作,后端完成导出后,将导出的文件上传到阿里云 OSS,用户可以在页面完成文件的下载。完成导出后,用户可以在页面上看到下载按钮,点击下载就可以完成导出的文件下载了。原创 2024-12-09 09:30:00 · 916 阅读 · 0 评论 -
Spring Boot 集成 EasyExcel 导出 Excel 文件【复杂表头】
Excel 导出在项目开发中是一个非常常见的业务场景,通过 Java 相关的类库可以轻松实现 Excel 的读写操作,常见的类库有 Apache POI、EasyPoi 和 EasyExcel,本篇我们要分享的是使用 EasyExcel 完成复杂表头的 Excel 导出,希望可以帮助到有需要的朋友。我们并没有写多少代码,就完成了看起来比较复杂的表头,这就是 EasyExcel 带来效果,当前 EasyExcel 在内存管理上也有显著的优势。实现了我们开始说的表头效果,导出结果符合预期。原创 2024-12-06 09:30:00 · 1718 阅读 · 1 评论 -
CPU 飚高的排查
通过观察 top 命令执行结果,找到占用 CPU 较多的 Java 进程,例如我这里的 9 进程,CPU 使用率达到了 103,完全使用掉了一个核心的 CPU,现在是知道了 CPU 飚高的现象,但是 CPU 为什么飚高?是哪一行代码导致 CPU 飚高呢?总结:本篇从 CPU 飚高的现象来逐步分析其原因,最终定位到代码问题,希望可以帮助到有需要的小伙伴,也希望大家在遇到 CPU 飚高的时候不要慌,逐步分析定位即可。堆栈日志非常明显的指出了哪一行代码使用了 CPU,至此就可以完全定位到 CPU 飚高的原因了。原创 2024-12-05 09:30:00 · 584 阅读 · 0 评论 -
Maven 使用教程
Maven 的依赖功能是是我们使用 Maven 的主要原因,我们使用 Maven 的依赖管理,Maven 的依赖管理帮我们解决了 jar 包的下载,同时可以把项目中的依赖进行传递或把某些不需要依赖进行排除。Maven 中的坐标使用三个向量 groupId、artifactId、version 在 Maven 的仓库中唯一的定位到一个 jar 包。profileActive是我们在 pom.xml 中配置的文件,这样就可以完成不同环境的配置。对配置文件中变量进行替换,给 标签复制为 true。原创 2024-08-27 09:30:00 · 1929 阅读 · 0 评论 -
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer
现象:前端请求接口时候,后端接口无法正常响应结果,只有某个接口会出现这种情况,其他接口全部正常,该接口的响应提比较大,服务端报错如下:Caused by: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuf原创 2024-08-21 09:30:00 · 2503 阅读 · 0 评论 -
Spring Cloud 集成 Nacos、openfeign 错误解决
前言:在集成 Nacos 和 openfeign 的时候,过程出现了一点小曲折,这里简单分享一下,希望可以帮助到有需要的朋友。Spring boot 版本如下:<version>2.4.5</version>Spring Alibaba 版本如下:<version>2021.1</version>错误一:关键错误信息:没有定义用于负载平衡的 Feign 客户端。您是否忘记包含 spring-cloud-starter-netflix-rib原创 2024-08-01 10:05:14 · 527 阅读 · 0 评论 -
BigDecimal 小数位的处理(RoundingMode)
在日常项目开发中,接触小数是常有的事情,而产品对于小数的处理,在不同的业务中有不同的定义,比如四舍五入、截取、向上舍位、向下舍位等等场景,面对如此多的场景,你是否会束手无策?或者说自己去研究怎么实现?其实 Java 已经给我们提供了一个枚举类 RoundingMode,RoundingMode 共有 8 种舍位方式,本篇我们来逐个分析。正数向上舍位,负数向下舍位,符合预期。正数向上舍位,负数直接截取,符合预期。一个正常输出,一个抛出异常,符合预期。正数截取,负数向下舍位,符合预期。四舍五入,符合预期。原创 2024-06-23 20:55:27 · 1232 阅读 · 0 评论 -
alibaba EasyExcel 导入 Excel 分享
总结:本文简单分享使用 alibaba EasyExcel 导入 Excel 的简单使用,只是简单的分享了主要流程及要点,具体的业务实现是根据业务来的,希望可以帮助到有需要的小伙伴。Excel 导入是一个非常常见的功能,项目开发中随处可见,市面上也有各种处理 Excel 的 API,本文简单分享一下 alibaba.excel 的导入功能。欢迎提出建议及对错误的地方指出纠正。原创 2024-06-18 13:33:56 · 997 阅读 · 0 评论 -
Java 中常校验时间格式的方法
在实际项目开发中,跟时间参数打交道是必不可少的,为了保证程序的安全性、健壮性,一般都会对参数进行校验,其他类型的参数校验很好实现,那你知道时间参数的是怎么校验的吗?估计部分朋友在项目开发中,并没有对时间参数进行校验,本篇分享时间参数的场常见校验方法。原创 2024-06-13 10:02:14 · 2063 阅读 · 0 评论 -
Java 中树结构的组装分享
很明显双层 for 循环构建树的效率远低于 map 遍历构建树,因此我们推荐使用 map 遍历的方式来构建树结构,而且从代码层面来看,map 遍历方式的代码也比 for 循环看起来更简洁,因此建议使用 map 遍历构建树。树结构组装,其实就是从数据库取出一组数据,去找到他们之间的父子关系,通畅都会需要遍历处理,以下我们分享递归、双层 for 循环、map 遍历构建树结构。递归就是从顶级节点一直往下查询,期间需要不停地查询数据库,不推荐递归来组装树结构,这里也就不做演示了。原创 2024-04-28 10:30:00 · 769 阅读 · 0 评论 -
字符串转换为List<String>时候抛出异常:com.alibaba.fastjson2.JSONException: TODO : s
前面的错误代码中,不应该使用 obj.toString(),我这里的 obj 对象本质就是一个 List 对象,使用 obj.toString() 后,就完完全全变成了一个字符串了,再使用fastjson 转换为 List,这肯定是会出错的,因此我们只需要把对象转换为 JSONString,然后再使用 fastjson 转换为 List 即可。项目中需要对第三方接口返回的字符串转换为 List,就想到了使用 fastjson 来处理。一看人都啥了,啥呀,这都啥呀。如有错误的地方欢迎指出纠正。原创 2024-04-14 10:30:00 · 847 阅读 · 0 评论 -
CORS 跨域问题解决&&预检(OPTIONS)请求解释
浏览器使用 OPTIONS 方法发起一个预检请求(preflight request),来感知服务端是否允许该跨域请求,服务器确认允许之后,才发起实际的 HTTP 请求,OPTIONS 请求没有附带请求数据,响应体也为空,简单来说就是一种探测,这就是预检请求,是浏览器的一种保护机制。简单请求的对立面就是非简单请求,也就是说不能同时满足简单请求条件的请求就是非简单请求,就可能会触发预检(OPTIONS)请求。Nginx 增加配置解决跨域问题,只使用一种解决问题即可,不要同时配置多个。原创 2024-04-15 09:30:00 · 8503 阅读 · 0 评论 -
Java异常信息中只打印NullPointerException却不输出堆栈信息的原因
排查线上问题的时候,发现一直在报空指针的错误信息,但是只有错误名称:NullPointerException。没有堆栈信息,不显示行号,只能盲猜。根本不知道哪一行报错,报错的原因是什么。查看了代码打印日志的方式,没有问题,如此就需要先想办法,让程序将堆栈信息打印出来,或者找到报错的堆栈信息才是解决问题的正确思路,这样一来就变成了两个问题。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command原创 2024-02-07 15:31:11 · 3419 阅读 · 1 评论