随笔分类 - 踩过的坑
摘要:Arthas是一款线上监控诊断产品,通过全局视角实时查看应用负载、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。 安装 如下阐述的是全量安装方式,这样就可以以离线方式使用Arth
阅读全文
摘要:关于线上问题 Java应用的线上问题,总结起来大概分为几类:CPU占用高,内存溢出,执行结果不对。 CPU占用高 引起CPU占用高的原因可能有多种,比如: 代码进入死循环 并发请求量大 频繁Full GC 打印日志太过于频繁 内存溢出 导致内存溢出的原因可能是: 分配的Java堆空间不够,可以通过启
阅读全文
摘要:写在前面 线上环境突然出现Java进程CPU占用率持续超过100%的问题,该如何排查并定位呢? 问题一:我们如何知道线上环境的那个服务器(或者哪个Docker容器)出现了CPU持续高的故障了呢? 如果是有比较完善的监控设施,当出现CPU持续高时可以通过发送报警通知的方式告知开发人员,如果没有监控通知
阅读全文
摘要:之所以要阅读OpenJDK源码,是因为Sun JDK的某些源码是缺失的,以JDK 1.8为例,sun.reflect,sun.rmi及其子包下的类都是没有源码的。 如下以下载Open JDK 1.8源码为例进行说明。 下载Open JDK源码文件,如下载zip格式的压缩包。 解压Open JDK源码
阅读全文
摘要:在Java中通过反射调用方法时,常见的一个异常是:java.lang.reflect.InvocationTargetException,将异常信息打印到日志文件中时通常会有如下一句信息:java.lang.reflect.InvocationTargetException: null,由于在异常信
阅读全文
摘要:在目录C:\Users\Administrator\AppData\Roaming\Notepad++\backup中找到自动保存的缓存文件。 参考Notepad++找回自动保存缓存内容的文件
阅读全文
摘要:功能概述 主要实现的功能: 1.分页查询,避免一次性查询全部数据加载到内存引起频繁FULL GC甚至OOM 2.当数据量超过单个工作簿最大行数(1048575)时,自动将数据写入新的工作簿 3.支持百万级数据量导出 具体实现 第一,定义数据实体父类和分页对象。 // 数据实体父类 public ab
阅读全文
摘要:以Web方式下载数据有多种场景: 1.服务端本身已经存在文件,此时只需要一个文件访问地址即可下载,比如:将文件URL设置为<a>标签的href属性即可,点击<a>标签就能立即触发浏览器下载文件,此时无需单独设置下载提示信息。 2.下载的文件在服务端并不存在,而是需要查询数据库等才能获取,这种方式无法
阅读全文
摘要:问题及现象 当某一分支(假设为main)的本地仓库和远程仓库都基于同一个提交进行了修改,并分别创建了新的提交时,在本地执行git push origin main会提示先要执行git pull合并远程代码。 如下示例: # 本地修改与远程仓库不一致时,推送代码到远程仓库时提示先要执行git pull
阅读全文
摘要:问题描述 项目使用Spring Boot框架,在pom文件中添加了如下配置: <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.36</version> </depend
阅读全文
摘要:BUG现场 一个线上项目之前一直运行得很稳定,从没出过数据错误的问题,但是在2021.12.26这天却“意外”地出现了数据计算错误。 刚开始一头雾水,不知道是什么问题,后来经过日志排查才定位到原来是日期格式化引起的问题,原本应该是“2021-12-26”日期字符串,但是格式化为“2022-12-26
阅读全文
摘要:导致Redis访问慢的原因通常有2个方面: 第一,Redis本身性能出现了瓶颈,如:内存使用率过高,并发过大等 第二,存在大KEY,或者客户端访问命令使用不当引起的阻塞 在此,只列举因为的客户端命令使用不当导致访问Redis慢的操作,表现出来的现象就是:某些接口的访问耗时不稳定,时好时坏。 无序集合
阅读全文
摘要:问题描述 最近在一个项目上开发的接口与业务方联调时计算参数签名总是对不上,经过排查后定位到原因: 1.父类定义的属性列表,全部为public类型 2.子类中未定义新的属性,所有属性都继承自父类 3.在计算签名时传递的是子类对象,子类对象使用反射方式调用getDeclaredFields()方法无法获
阅读全文
摘要:硬件环境: Thinkpad T14 AMD 操作系统: Windows 10家庭版 问题描述: Windows 10在后台默默做了补丁更新,导致无线网卡和蓝牙鼠标都不可用(但是有线网却是能正常工作的),如下图所示: 在【设备管理】中查看驱动程序也显示正常。 解决办法: 经过网络搜索才发现,似乎Th
阅读全文
摘要:目录 写在前面 故事背景 踩坑详情 最后总结 写在前面 首先声明,除非万不得已,千万不要在Windows环境做这个事情,否则就等着各种坑吧。 本人一贯的立场都是坚持用正确的方法做事,显然在Windows搭建Jenkins这个事情本身并不那么正确。 之所以有这篇随笔,也是因为经历了各种吐血踩坑之后希望
阅读全文
摘要:目录 crontab环境变量 脚本缺少执行权限 crontab是Linux平台实现定时任务的服务工具,通常情况下该服务会预装在发行版中,直接使用即可。 关于crontab的详细用法参考:https://man7.org/linux/man-pages/man5/crontab.5.html ,网络上
阅读全文
摘要:目录 问题现场 线程死锁 vs 线程死循环 排查Java进程导致CPU持续高的方法 Tomcat的CPU占用高的原因总结 问题现场 测试环境tomcat进程占用CPU一直持续99%,但是通过jstack查看log,也没有任何线程死锁的情况。 此时通过$catalina_home/bin/shutdo
阅读全文
摘要:详见: "【解决方案】jison解决JS处理后台返回的Long型数据精度丢失"
阅读全文
摘要:目录 "问题描述" "原因追踪" "解决办法" 问题描述 Spring Boot应用(使用默认的嵌入式Tomcat)在上传文件时,偶尔会出现上传失败的情况,后台报错日志信息如下:“The temporary upload location is not valid”。 原因追踪 这个问题的根本原因是
阅读全文
摘要:遇到的问题 今天遇到一个线上的BUG,在执行表单提交时失败,但是从程序日志中看不到任何异常信息。 在Review源代码时发现,当catch到异常时只是输出了 ,如下所示: 在日志中看不到任何信息,说明 返回值为空字符串。 原因分析 先来看一下Java中的异常类图: Throwable是Java中所有
阅读全文

浙公网安备 33010602011771号