
Java笔记
一个九零后的程序猿
只为成功找方法,不为失败找理由!
展开
-
记一次线上SpringCloud-Feign请求服务超时异常排查
由于近期线上单量暴涨,第三方反馈部分工单业务存在查询处理失败现象,经排查是当前系统通过FeignClient调用下游系统出现部分超时失败(异常代码贴在下方)。Caused by: feign.RetryableException: Read timed out executing POST http://xxxx at feign.FeignException.errorExecuting(FeignException.java:84) ~[feign-core-10....原创 2022-01-13 14:22:14 · 1781 阅读 · 1 评论 -
SpringBoot快速集成SpringBootAdmin管控台监控服务
SpringBootAdmin是一个针对 Spring Boot 的 Actuator 接口进行 UI 美化封装的监控工具,它可以在列表中浏览所有被监控 spring-boot 项目的基本信息、详细的 Health 信息、内存信息、JVM 信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等。可分为服务端(spring-boot-admin-server)和客户端(spring-boot-admin-client),服务端和客户端之间采用http通讯方式实现数据交互。服务端server需要单.原创 2021-09-09 15:22:59 · 759 阅读 · 0 评论 -
基于Java封装Groovy工具类
1、首先在POM文件引入对应核心groovy jar <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>org.co原创 2021-01-29 17:05:56 · 394 阅读 · 0 评论 -
使用migrate进行Redis数据迁移脚本
#!/bin/bash#redis 源ipsrc_ip=127.0.0.1#redis 源portsrc_port=6379#redis 源库src_db=0#redis 目的ipdest_ip=127.0.0.2#redis 目的portdest_port=6379#redis 目的dest_db=0#redis 密码pw=xxxxx#要迁移的key前缀#key_prefix=com.example.testredis-cli -h $sr...原创 2021-01-22 15:20:40 · 417 阅读 · 2 评论 -
多线程环境下使用HttpClient代理造成线程阻塞-踩坑记
案发现场因业务所需在多线程环境下使用HttpClient组件对某个HTTP服务发起请求,项目运行一段时间之后,有用户反馈系统无法正常登录,于是博主先上服务器查看日志,发现日志最后打印是停留在几个小时前,先用ps -ef|grep命令查看系统进程是处于正常运行,然后再用jvisualvm工具查看发现服务器主机CPU使用率在90%之上并未呈现出下降趋势,查看实时线程有一批线程是一直处于运行状态且运行时间占比也非常高,初步判断是线程内部代码异常导致被阻塞。问题排查一开始review代码,也没找到具体原因,原创 2020-11-29 21:06:01 · 1843 阅读 · 0 评论 -
基于socket实现校验IP+端口是否可用
/** * 检测Ip和端口是否可用 * * @param ip * @param port * @return */ public static boolean checkIpPort(String ip, int port) { Socket socket = new Socket(); try { socket.connect(new InetSocketAddress(ip,p.原创 2020-11-29 11:29:50 · 653 阅读 · 0 评论 -
基于hutool实现JSONObject首字母驼峰大小写转换方法
/** * 转换为驼峰格式/转换为下划线方式 * * @param json 等待转换的方法 * @param upper 首字母大写或者小写 * @return 转换后的 */ public static JSONObject formatKey(final JSONObject json, boolean upper) { JSONObject real = new JSONObject(); for .原创 2020-11-20 10:59:52 · 7957 阅读 · 3 评论 -
详细介绍使用Jenkins持续集成部署SpringBoot项目
Jenkins是一个开源自动化服务器,主要用于监控,发布等持续重复的工作。本文主要讲如何使用Jenkins构建项目Linux环境安装Jenkins 请参考:传送门一、部署流程流程:Jenkins主要负责拉取新代码,并编译打好包,然后推送到目标服务器响应目录下启动。二、全局配置Maven配置这边博主是直接使用本地安装的setting配置文件JDK配置JAVA_HOME就是咱们本地安装的JDK目录三、构建首个项目...原创 2020-11-03 14:40:34 · 722 阅读 · 0 评论 -
在Linux上快速部署Jenkins持续集成环境
Jenkins简单介绍Jenkins是一个开源自动化服务器,主要用于监控,发布等持续重复的工作。本文主要讲如何部署Jenkins持续集成环境Linux环境安装Maven 请参考:传送门一、安装Jenkins① 配置yum数据源wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo② 导入rmp秘钥rpm --import https://pkg.jenkin原创 2020-09-25 16:12:20 · 365 阅读 · 0 评论 -
解决安装Jenkins插件时出现该jenkins实例似乎已离线问题
问题如图下所示:解决上述问题方法:1、 修改/var/lib/jenkins/updates/default.json因为jenkins在下载插件之前会先检查网络连接,其会读取这个文件中的网址。默认是:访问谷歌,这就很坑了,服务器网络又不能FQ,肯定监测失败呀,所以将图下的google改为www.baidu.com即可,更改完重启服务。按照上述方法处理,我们发现离线问题已经解决,如下图所示:这样我们就可以愉快地安装插件了。...原创 2020-09-24 19:06:03 · 909 阅读 · 0 评论 -
在Linux上快速部署Maven环境
一、下载压缩包官方地址:http://maven.apache.org/download.cgi直接使用wget命令进行下载maven压缩包wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz二、解压tar -zxvf apache-maven-3.6.3-bin.tar.gz三、配置环境变量vi /etc/profil原创 2020-09-24 10:41:34 · 377 阅读 · 0 评论 -
Java使用BigDecimal的setScale方法进行百位向上取整
int num = 199; BigDecimal bd = new BigDecimal(num); bd = bd.setScale(-2, BigDecimal.ROUND_DOWN); System.out.println("向下百位取整后:" + bd.intValue()); bd = new BigDecimal(num); bd = bd.setScale(-2, BigDecimal.ROUND_UP); System.out.println("向上百位原创 2020-09-11 15:08:31 · 3829 阅读 · 1 评论 -
Java递归互转驼峰格式/转换为下划线方法
博主是结合开源hutool StrUtil工具类中toCamelCase、toUnderlineCase方法进行递归转换。https://www.hutool.cn//** * 转换为驼峰格式/转换为下划线方式 * * @param json 等待转换的方法 * @param upper 首字母大写或者小写 * @return 转换后的 */ public static JSONObject formatKey(final JSO.原创 2020-07-03 14:49:09 · 2784 阅读 · 1 评论 -
Java使用invoke反射调用方法导致@Value、@Autowired等注解失效
发生背景:开发过程中使用到invoke进行反射调用serviceImpl实现类的方法,在运行中发现采用反射方式调用会导致实现类中@value以及@Autowired注解失效,对应注解值都为null。原因:因为在调用invoke反射方法时,Class是直接使用newInstance静态方法来实例化对象。所导致对应@value、@Autowired等注解失效。PS:Spring的注解是在Spr...原创 2020-05-08 11:28:06 · 1922 阅读 · 2 评论 -
Java使用DecimalFormat进行保留截取固定小数点
本文主要是介绍如何使用DecimalFormat进行四舍五入和非四舍五入截取小数点。PS:文章来源(正好博主在对接高德逆地理编码API接口,但是接口参数对经纬度有要求:经纬度小数点后不要超过 6 位。没办法的是正常经纬度小数点后面都会超过6位数,所以只能对经纬度小数点进行截取)public static void main(String[] args) { // 经度...原创 2020-03-07 13:05:18 · 2203 阅读 · 0 评论 -
对身份证等敏感信息进行脱敏处理
package com.test.TestBoot.SingleModel;import org.springframework.util.StringUtils;public class Test { public static void main(String[] args) { System.out.println(idHandle("340826199110...原创 2019-04-17 15:23:18 · 4451 阅读 · 0 评论 -
Java使用Date类compareTo方法比较时间大小
compareTo 方法 是对象比较 大于则返回 1 等于 返回0 小于 返回 -1例:Date oldDate=new Date();Date newDate=new Date();int va = oldDate.compareTo(newDate);如:oldDate>newDate va=1; oldDate=newD...原创 2020-03-02 21:01:26 · 5693 阅读 · 0 评论