自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无名丶任性

生命不息,奋斗不止!

  • 博客(69)
  • 资源 (5)
  • 收藏
  • 关注

原创 记由于频繁的创建连接对象导致频繁FGC并导致CPU异常飙高及文件句柄数不足

项目场景: 开放平台的网关应用问题描述: 网关每天或者隔几天就会出现cpu异常飙高的问题,导致交易处理特别慢排查过程:1、首先使用 top 命令查看是哪个java进程导致cpu异常飙高 1.1、查看日志文件发现日志中有too many open files 的报错信息,这个明显是打开了很多的文件句柄没有被释放导致的。初步怀疑也是同样的进程导致的这个问题,通过命令查看该进程下面打开的文件句柄数的数量 lsof -p 进程ID | wc -l 发...

2021-11-03 10:35:00 562

原创 13、SpringBoot集成ActiveMQ

1、本地安装ActiveMQ从网上下载ActiveMQ相关包,本次案例是安装windows版本的,版本号为5.15.3 下载之后解压进入\apache-activemq-5.15.3\bin下面,根据自己操作系统进行选择是启动64位还是32位 进入相应目录之后执行activemq.bat,启动成功之后,在浏览器中输入:http://127.0.0.1:8161/admin/,用户名密码为:admin/admin,进入界面如下:2、引入相关jar包依赖<!-- RocketMQ.

2021-04-14 19:01:24 455

转载 java应用cpu使用率过高问题排查

文章链接:https://blog.csdn.net/qq_34944965/article/details/81107419

2021-04-09 11:02:30 219

原创 记一次日志输出大对象导致频繁FullGC问题

在性能测试过程中,发现有一个交易在5个并发的情况下单机单jvm的时候交易响应时间变长,由于该交易外调了3个系统,所以刚开始是怀疑其他系统的响应时间变长了,但是通过日志分析,发现其他系统响应时间基本稳定,所以排除其他系统的问题,后来通过jstat查看jvm垃圾回收信息原来是频繁fullGC导致的交易响应时间变长,记录一下本次问题排查的过程:通过以下命令查看jvm垃圾回收的统计信息: jstat -gcutil PID 1s意思是查看java进程为PID 的jvm每1s中的垃圾回收信息,通过这个命令看到

2021-04-07 18:54:56 2237

原创 log4j2通过PatternLayout参数限制日志中打印的日志的长度

1、有时候如果打印的日志的长度很长的话可以对部分长度很长的日志进行限制,按照我们定义的长度进行打印,配置如下:<!-- 联机或批量日志 [%-1X{transDate}] --> <property name="test"> <![CDATA[onl_bat_pattern [%-5p] [%d{HH:mm:ss,SSS}][%t][%-1X{token}][%-1X{transSeq}][%-1X{taskid}][%-1X{jobid}][%-1X

2021-04-06 20:47:28 5128

原创 log4j2通过PatternLayout参数过滤日志中的大字段

在日志打印中会有一些很长的字符串,有时候会很影响我们查日志的效率,通过配置PatternLayout参数实现过滤日志中的大字段打印,配置如下:<PatternLayout> <replace regex="(([\w]+[=])|([&quot;])|([, ]))([\w+/=]{100,})" replacement="$1********" /></PatternLayout>注:以上配置说明在日志中有存在长度超过100的字段值,则将该字

2021-04-06 20:38:59 1191

转载 3、Redis主从,哨兵搭建

移步这篇文章讲的很详细:Linux下 Redis集群搭建详解(主从+哨兵)

2021-04-01 16:06:30 59

原创 2、Centos版本linux服务器搭建redis集群

按照redis官方要求搭建redis集群至少需要有6个redis节点,其中三个作为主节点,另外三个作为从节点,由于没有搭建很多虚拟机器,所以本次实践就在一台虚拟机上通过开通6个端口进行搭建redis集群,其实效果是一样的最终目的是了解redis集群的搭建^_^。一、首先需要创建6个redis节点其实就是将之前创建好的redis单机节点复制5份出来即可 cp -r redis-node1/ /home/study/soft/redis-nodes2,依次进行,最终效果如下: ...

2021-03-31 20:44:42 170 1

原创 12、SpringBoot中简单使用Redis

一、springboot集成redis只需要导入redis依赖的包即可<!-- Redis相关依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>二、在配置文件中添加redis的配置...

2021-03-30 16:30:50 158

原创 11、SpringBoot中集成Junit测试

一、首先添加相关依赖的jar包<!-- 测试依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.springframe...

2021-03-30 16:27:08 161

原创 1、Centos版本linux服务器安装redis

1、首先安装gcc编译yum install gcc-c++2、下载安装包,可以从官网下载也可以在网上直接下载;或者通过命令的方式直接进行安装如果下载好安装包的话进行解压tar -xvf redis-3.2.9.tar.gz从网上下载的话通过以下命令进行下载,下载成功之后再按照上述命令进行解压wgethttp://download.redis.io/releases/redis-3.2.8.tar.gz3、解压成功之后进入redis-3.2.9目录下,执行make命令进行编译安装。.

2021-03-29 19:48:49 120 1

原创 Centos6.5更新yum源方式

2020年12月2日,centos官方停止了对centos6的所有更新,并且下架了包括官方所有的centos6源,目前阿里、163、清华等centos6源已无法使用。我们在centos版本的linux系统中使用yum命令时会出现以下问题:YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. $releasever is not a valid release or hasnt been released yet/

2021-03-29 14:51:58 1856 2

原创 shell脚本示例之将文件字符集由UTF-8转换为GBK

#!/bin/bash#############################################说明:将文件的字符集编码由UTF-8转为GBK#参数说明:1.参数1 待转换的文件# 2.参数2 转换之后的文件# 3.参数3 转换成功之后生成的.ok文件#############################################file character conversion (UTF-8 -> GBK)echo '***.

2021-03-29 09:20:44 3137

原创 shell脚本示例之通过跳板机从目标服务器下载文件

#!/bin/bash##################################################################说明:下载目标机器影像件#功能:1.通过跳板机去目标机器的文件服务器下载对应的文件# 2.将下载到的文件进行一些简单的校验#参数说明:1.jumpip 跳板机sftp ip地址# 2.jumpport 跳板机端口# 3.jumpname 跳板机sftp用户名# 4.tgip 目标机器.

2021-03-29 09:20:21 1099 1

原创 shell脚本示例之解压压缩包并将里面的文件夹重新压缩为独立的压缩包放在指定位置

#!/bin/bash##############################################################################说明:解压tar.gz包并对压缩包内每个单独的文件夹进行压缩并放在指定目录下#参数说明:1.localpath 压缩包文件路径# 2.imagepath 单个文件夹压缩后的存放路径# 3.trandt 当日的处理时间# 4.filelist 当日生成的影像件明细文件 命名.

2021-03-29 09:19:46 1218 1

原创 10、SpringBoot中监听器的使用

web监听器的使用场景很多,比如监听servlet用来初始化数据,监听HttpSession用来获取当前在线人数,自定义一个监听器用来处理一些业务之类的。一、监听Servlet上下文对象缓存数据,这样每次用户请求过来就可以直接在上下文对象中获取到相应的的数据,不至于每次都去数据库查询首先定义一个监听器类实现ApplicationListener<ContextRefreshedEvent>,重写里面的onApplicationEvent方法@Componentpublic clas

2021-03-29 09:19:09 289

原创 9、SpringBoot整合Mybatis

一、添加mybatis的pom依赖添加mysql和mybatis的相关jar包依赖<!-- Mysql相关依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!...

2021-03-27 11:50:25 102

原创 8、SpringBoot中的Aop定义及处理

Aop:全称为Aspect Oriented Programming(面向切面编程),在实际业务场景中,我们可以通过Aop进行一些业务处理前中后以及异常情况下的一些处理。一、SpringBoot中使用Aop首先要添加aop的依赖包:<!-- 面向切面变成AOP相关依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>sprin...

2021-03-27 11:47:15 837

原创 7、SpringBoot中自定义全局异常处理

一、SpringBoot如何进行全局异常处理springboot使用@ControllerAdvice注解进行全局异常处理,并且可以使用@ExceptionHandler注解进行自定义异常处理,如下:@ControllerAdvice@ResponseBodypublic class GlobleException {private static Logger log = LoggerFactory.getLogger(GlobleException.class);@Ex...

2021-03-27 11:44:12 408 1

原创 6、SpringBoot中常用获取配置文件中参数的方法

一、通过@Value注解来获取新建Controller类,定义一个变量,然后在变量上添加@Value("${file.fileName}")注解,在application配置文件中添加配置:file.fileName=test,如下:@RestController@RequestMapping("/admin")public class RegistController {private static final Logger log = LoggerFactory.getLogge...

2021-03-27 11:41:00 978

原创 5、SpringBoot使用slf4j日志框架进行日志记录

一、添加pom依赖<!-- slf4j相关配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency>二、在resource下新建logback.xml文件,文件内容如下:<?xml...

2021-03-27 11:38:04 579

原创 4、SpringBoot整合Swagger

一、首先在pom文件中添加相关依赖本次使用的SpringBoot版本为2.4.3,Swagger2的版本为2.7.0其中swagger的ui界面版本可以选择以上任意一种,第一种为swagger原始版本,后续为优化版本。本示例中选用第二种ui的版本<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-w...

2021-03-27 11:34:58 5612

原创 3、SpringBoot中拦截器的使用

一、定义拦截器自定义拦截器直接实现HandlerInterceptor类,然后重写里面的preHandler,postHandler,afterCompletion方法,这几个方法具体的含义如下:preHandler:当某个url匹配到controller中的某个方法,并且在执行这个方法前进行处理,通过返回true or false来判断该请求是否可以放行。 postHandler:当某个url匹配到controller中的某个方法,并且已经执行了这个方法之后,再渲染返回视图的时候可以做一些处理。

2021-03-27 11:27:06 330

原创 2、SpringBoot注解说明(持续更新...)

1、@RestController:代表这个类是REST风格的控制器,返回JSON或是XML类型的数据2、@RequestMapping:配置URL和方法之间的映射。可以配置在类上或是方法上,如果配置在类上的话(例如我在控制类上配置为"/test")对应方法配置的为"/hello"则在浏览器这样进行访问:http://localhost:8080/test/hello3、@SpringBootApplication:表示这是SpringBoot的入口启动类4、@Controller:作用在类名上

2021-03-27 11:18:33 74

原创 1、搭建一个简单的SpringBoot项目

一、环境准备1、开发工具为IDEA2、Maven版本为3.5.0。另附maven的配置文件使用的是阿里云的私服,配置如下:{<mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.c...

2021-03-27 11:17:04 1849

原创 Mysql实现和Oracle一样的merge into功能

今天在项目实践中有个功能需要将两个相同表结构的数据合在一起,要求是数据能匹配到就进行更新匹配不到就进行插入动作,在oracle中可以用merge into语法实现该功能,mysql中也有类似的语法可以实现即:insert into 表名(表字段,表字段,表字段,表字段) select a.字段名,a.字段名,a.字段名from 表2 a on duplicate key update 表1.待更新字段=表2.字段...;示例:新建表test:CREATE TABLE `tes...

2020-09-11 17:29:38 3140

原创 java实现冒泡排序的三种方式

冒泡排序主要思想是比较前后两个元素的大小如果a[i]>a[i+1]则交换两个元素的值import java.util.Random;public class SortTest { static int a[] = new int[100000]; static{ for (int i = 0; i < 100000; i++) { Random random = new Random(100000); a[

2020-08-12 11:10:27 5054 1

原创 用java实现二叉搜索树

二叉搜索树的特点:1、父节点的值大于左子树的值;父节点的值小于等于右子树树的遍历方式:1、先序遍历:先序遍历根节点,然后遍历左子树,最后遍历右子树2、中序遍历:中序遍历左子树,然后遍历根节点,最后遍历右子树3、后序遍历:后序遍历左子树,然后遍历右子树,最后遍历根节点代码实现:package com.phome.mapdemo.treedemo;public class BinarySearchTree { // 定义一个二叉树节点 private Bin

2020-08-10 14:31:21 129

转载 HashMap源码分析(jdk7)

HashMap的结构图示​ jdk1.7的HashMap采用数组+单链表实现,尽管定义了hash函数来避免冲突,但因为数组长度有限,还是会出现两个不同的Key经过计算后在数组中的位置一样,1.7版本中采用了链表来解决。​ 从上面的简易示图中也能发现,如果位于链表中的结点过多,那么很显然通过key值依次查找效率太低,所以在1.8中对其进行了改良,采用数组+链表+红黑树来实现,当链表长度超过阈值8时,将链表转换为红黑树.具体细节参考我上一篇总结的深入理解jdk8中的HashMap​ 从上面图中.

2020-08-06 11:13:06 197

原创 快速计算十进制转二进制的方式

在计算机中一切数据都是用0和1来表示的,我们常规计算二进制的方式是把某个数字除以2能除尽则是0,除不尽则取1然后接着除,最后将取出的0和1向前排序就是最终的二进制数。这种方式相当费时费力还容易出错,其实找到其中的规律就可以很快计算出二进制数。1、首先我们需要知道2的幂次方的数的二进制就是1后面n个0,如下:2的n次方 十进制 二进制 1 2 10 2 4 100 3 8 1000 4 16 10000 5...

2020-08-05 14:45:23 10029

原创 用java实现一个ArrayList

通过查看ArrayList底层代码发现ArrayList有以下属性:ArayList:1、ArrayList如果初始化的时候没有指定容量则默认大小为10,如果容量不够则按照“newCapacity=oldCapaCity+(oldCapaCity >> 1)”算法进行扩容(原容量的1.5倍进行扩容);2、ArrayList线程不安全,若要实现线程安全可以使用synchronized关键字或Collections.synchronizedList()方法初始化,如下List lis

2020-08-04 17:34:56 727

原创 用java实现单链表并实现CRUD

单链表有两个关键变量:存储的元素(object)以及指向下一个节点的引用(next)public class Node{ // 保存的元素 public Object data; // 指向下一个节点 public Node next; public Node() { this(null); } public Node(Object data) { this.data = data; } @O

2020-08-04 14:44:35 176

转载 深入理解Java中方法的参数传递机制

原文地址:https://www.cnblogs.com/sum-41/p/10799555.html形参和实参我们知道,在Java中定义方法时,是可以定义参数的,比如:public static void main(String[] args){ }这里的args就是一个字符串数组类型的参数。在程序设计语言中,参数有形式参数和实际参数之分,先来看下它们的定义:形式参数:是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数,简称“形参”。实

2020-07-27 14:22:46 194

原创 log4j2通过PatternLayout参数实现日志敏感字段脱敏

1、首先了解一下 正则表达式:.*,.*?,.+?的匹配方式public static void main(String[] args) { String content ="hello world"; String param1 = ".*"; String param2 = "hell.*?o"; String param3 = "hel.+?l"; Pattern p1 = Pattern.compile(para

2020-07-13 17:18:36 3848 1

原创 shell脚本学习笔记

1、双引号与单引号的使用要输出的信息中有单引号则用双引号将数据包含起来,输出的信息中有双引号则用单引号将数据包含起来。$ echo 'Rich says "scripting is easy".'Rich says "scripting is easy".$ echo "Rich says 'scripting is easy'."Rich says 'scripting is easy'.2、shell脚本中的比较符号shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则

2020-07-04 18:50:53 180

原创 java中类加载顺序

package com.phome.classloader;public class ClassLoaderDemo2 { static class A2{ B2 b2 = new B2(); static{ System.out.println("A static"); } public A2() { System.out.println("A2()"); } .

2020-07-02 10:36:54 126

原创 mongdb数据库的一些常用操作命令

数据库操作:1、查看所有数据库:show dbs2、查看当前所在数据库:db3、查看当前所在数据库中所有集合:show collections4、查看当前数据库相关信息(名称、文档个数、视图、索引、大小等):db.stats()5、创建、打开、切换 数据库:use 数据库名字如:use student注:use 这个命令很特殊,它具有打开、 切换、 创建数据库的功能:如果打开的这个数据库存在就是打开这个数据库。如果打开的是一个不存在的数据库,那么就会创建一个同名的数据库,但是:注意:既然是创建一个新的数

2020-07-01 16:30:14 349

转载 java中内部类的作用及使用

原文地址:https://blog.csdn.net/u013728021/article/details/87358517文章目录内部类的作用1.可以无条件地访问外围类的所有元素2.实现隐藏3.可以实现多重继承4.通过匿名内部类来优化简单的接口实现内部类与外部类的关系内部类的分类静态内部类和非静态内部类的区别局部内部类匿名内部类实际开发中内部类有可能会引起的问题内部类会造成程序的内存泄漏什么是内部类:定义在类中的类内部类的作用我们为什么需要内部类?或者说内部类为啥要存在

2020-07-01 16:16:14 355

原创 java中单例模式的四种常用实现方式

package com.phome.singleton;/** * 单例模式的三种实现方式 */public class SingletonDemo { // 方式一:饿汉模式// private static SingletonDemo singletonDemo = new SingletonDemo();// private SingletonDemo(){}// public SingletonDemo getInstance(){// r.

2020-07-01 14:49:11 137

原创 java中反射机制的使用

1,JAVA反射机制是在运行状态中对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。2、反射机制的使用定义一个Animal类:package com.phome.reflection;public class Animal { public String name1; private int age; public String

2020-06-24 17:09:43 139

MockProject.rar

基于springboot搭建的一个简单的mock工程,可以提供http和socket请求的mock返回,可以根据不同的交易进行调整,通过读文件的方式进行返回。编译之后在target文件夹下会有一个tar.gz包,可以直接在本地解压也可以上传服务器解压,解压之后windows直接运行bin里面的start.bat即可启动服务;linux服务器在相同路径下运行start.sh脚本即可启动

2021-01-18

Scoket Tool V4.0

好用的tcp,udp测试工具;好用的tcp,udp测试工具;好用的tcp,udp测试工具;

2017-11-10

生成二维码依赖的jar包

2017-02-04

Myeclipse破解

如果不能使用请联系我[email protected]

2017-02-03

Java分页(用的是spring + struts2)

学习过程中用java写了个分页显示的小项目大家可以参考一下

2015-05-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除