- 博客(11)
- 收藏
- 关注
原创 利用 Nginx 代理请求后如何获取客户端真实 IP 地址
当接收到 request 的请求 IP 后,获取的都是服务器的地址,导致不能区分出请求来源。但是当请求通过 NGINX 道理后只能获取到代理服务器的 IP ,不能获取到真实 IP。业务需求中会有获取客户端 IP 的情况,可以通过 request 方法获取到。
2024-01-13 15:05:09 630 1
原创 Springboot 项目中获取 IP 地址
业务中会有记录用户操作行为日志的需求,分别记录了用户名、操作内容、操作时间、操作 IP 等信息;如果请求连接被 NGINX 代理后获取的就是 NGINX 的地址,获取不到原始地址。后续会发布解决办法。
2024-01-13 14:55:55 816 1
原创 使用 equals 方法比较
说明:对于Integer var=?在-128至127之间的赋值,Integer对象是在IntegerCache.cache产生,会复用已有对象,这个区间内的Integer值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用equals方法进行判断。所有的包装类对象之间值的比较,全部使用equals方法比较。
2024-01-04 17:39:21 374 1
原创 线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险
1)FixedThreadPool和SingleThreadPool: 允许的请求队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而导致OOM。线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。2)CachedThreadPool: 允许的创建线程数量为Integer.MAX_VALUE,可能会创建大量的线程,从而导致OOM。
2024-01-04 17:37:15 384 1
原创 (二) 安装 Arthas
当使用快速安装方式在线上环境进行连接Java服务的时候,很有可能因为线上环境无外部网络访问权限,导致Arthas无法获取 arthas-core 等jar包,无法运行。将下载的 jar 包放到服务器上,运行 jar 包。这时候就需要全量安装Arthas包。: ( 包大小13MB )
2024-01-03 16:34:25 883 1
原创 (一)Arthas 简介
Arthas是 Alibaba 开源的Java应用诊断利器,深受开发者喜爱。Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的Tab自动补全功能,进一步方便进行问题的定位和诊断。
2024-01-03 16:02:45 355 1
原创 问题排查 Java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
经过排查日志、查找相关资料发现 JAXB api 被认为是 Java EE api,因此不再包含在Java SE 9默认的类路径。并且在 Java 11 完全从 JDK 中删除。要在项目中手动引入 JAXB API 相关依赖。--maven中引入-->
2024-01-02 13:49:17 507 1
原创 使用 JPS 和 JMAP 排查并下载 Head Dump 文件
业务系统在开发的过程中,会容易出现对象的引用未被垃圾回收器收集,会出现一直占用回收不掉的情况,而且当内存占用的一定程度的情况下,会频繁出现 Full GC 的情况,导致 CPU 占用过高,服务宕机。微服务使用 Springboot 框架开发,数据库使用的是关系型数据库 Mysql,web 应用服务器使用的是 Tomcat。前端及其他中间件模块暂且不表,此篇内容只针对后端服务的问题排查。在 Linux 系统环境下部署的多个微服务,其中一个模块的微服务会在运行过一段时间后,服务宕机,导致整体服务不可用。
2024-01-02 11:02:57 623
原创 Non-terminating decimal expansion: no exact representable decimal result.异常解决办法
出现这个异常的原因在于 BigDecimal 是不可变的、任意精度的有符号十进制数,所以可以做精确计算。但在除法中,准确的商可能是一个无限长的十进制扩展;例如,1 除以 3 所得的商。我们在做除法时,没有指定舍入模式,并且无法表示为准确的结果,因此抛出了这个异常(java.lang.ArithmeticException)。这里要根据业务选择合适的方法没有最好的只有最适合的。本文采用的是在divide运算时指定保留两位小数点的方法解决。
2023-11-24 14:21:26 3662 1
原创 Cannot load driver class: com.mysql.cj.jdbc.Driver
Springboot 项目 运行后控制台报错。Cannot load driver class: com.mysql.cj.jdbc.Driver安装的 MySQL 数据库 版本是 8.x.x 的,但是项目配置的依赖是 5.x.x ,导致版本不一致。修改:Mysql 驱动:driverClassName: com.mysql.cj.jdbc.DriverMysql 依赖:<dependency> <groupId>mysql</gro..
2022-05-09 14:27:02 261
转载 Uncaught TypeError: XXX is not a function 解决
Uncaught TypeError: XXX is not a function 解决
2022-04-26 21:36:12 602
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人