自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 线上服务器cpu飙升问题排查

今天实施突然反馈说医院线上的cpu一直在报警,报警阈值是cpu占用率超过80%并持续达到五分钟,然后我远程过去查看cpu使用情况发现cpu使用率一直100%。下面是我排查此次cpu飙升问题的步骤。1、top 查看 cpu使用情况 图中是重启后的占用率仅供参考2、top -c 查看cpu情况 按照比例倒序找到占用率最好的进程的PID3、ps -mp [步骤2中查到的PID] -o THREAD,tid,time 产看改进程下的线程TID (tid情况仅供参考)4、printf "%x.

2020-08-03 17:39:48 747

原创 springboot快速构建mybatisplus项目+问题汇总

对比现在常用的mybatis,mybatisPlus可以帮助我们更加专注业务的开发,减少sql文件的编码。下面就使用SpringBoot+ mybatisPlus 构建一个项目。1、构建过程中遇到的问题汇总(1)启动报错问题添加依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId.

2020-07-17 17:06:11 645

原创 Spring Boot 如何快速实现定时任务

## pom.xml```xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache..

2020-07-15 11:48:27 117

原创 redis面试:这一篇足以

1 、什么是 Redis?简述它的优缺点?Redis 的全称是:Remote Dictionary.Server,本质上是一个 Key-Value 类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的Ke...

2020-04-02 19:07:15 254

原创 mybatis批量更新问题:在解决问题中不断突破自己

记一次mybatis批量更新bug修复过程版本一<update id="updateIsDelStatus" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" separator=";" close="" open=""> updat...

2019-07-11 10:20:23 249

原创 IDEA提高编码水平的插件

路径settings->plugins->Browse repositories 搜索Install1、Alibaba Java Code Guidelines2、FindBugs3、Free Mybatis plugin4、Lombok

2019-06-18 15:36:12 140

原创 NAVICAT常用快捷键

功能 操作 打开查询窗口 Ctrl + Q 注释SQL语句 Ctrl + / 取消注释SQL语句 Ctrl + Shift + / 运行查询窗口的SQL语句 Ctrl + R ...

2019-06-18 15:28:38 275

原创 LINUX常用搜索日志命令汇总

第一种:查看实时变化的日志tail -f 文件名(默认最后10行,相当于增加参数 -n 10)ctrl + c 是退出tail 命令其他情况:tail -n 20 filename (显示filename最后20行)tail -n +5filename (从第5行开始显示文件)第二种:搜索关键字附近的日志cat -n filename|grep "关键字"其他情...

2019-06-18 15:27:45 890

原创 IDEA 快捷键整理

1. 查找 Ctrl + N 查找类文件2. 查找 Ctrl + Shift + N 查找文件3. 查找 Ctrl + F 当前文件查找4. 查找 Ctrl + R 当前文件查找和替换5. 查找 Ctrl + Shift + F 全局查找6. 查找 Ctrl + Shift + R 全局查找和替换7. 查找 Ctrl + Shift + A 查找指定动作8. 查找 Do...

2019-06-18 15:25:26 189

原创 Emoji表情转换工具类

import java.io.UnsupportedEncodingException;import java.net.URLDecoder;import java.net.URLEncoder;import java.util.regex.Matcher;import java.util.regex.Pattern;import org.slf4j.Logger;import o...

2018-11-12 15:20:05 2667

原创 Mybatis一级缓存和二级缓存理解

持久层框架:MybatisMybatis提供查询缓存分为一级缓存和二级缓存,用于减轻数据库压力,提高数据库性能。一级缓存的工作原理一级缓存是SqlSession级别的缓存  MyBatis的一级查询缓存是由 org.apache.ibatis.cache.impl.PerpetualCache 类的 HashMap本地缓存实现的,它的作用域则是SqlSession,它的作用域也...

2018-11-04 17:30:07 1483

原创 mysql优化

一、 sql优化分析和定位策略1、通过 show status 了解各种 SQL 的执行频率2、定位执行效率低的 SQL 语句:①通过慢日志定位;②使用 show processlist 命令查看当前在进行的线程3、通过 explain 分析低效 SQL4、通过 show profile 分析 SQL5、通过 trace 分析优化器的选择优化大批量插入数据,使用如下...

2018-09-06 15:49:35 173

原创 base64加盐算法

package com.rd.p2p.common.util;import java.io.IOException;import java.util.HashMap;import java.util.Map;import java.util.Random;import com.rd.p2p.common.util.code.BASE64Decoder;import com.rd.p...

2018-09-06 14:22:50 11762

转载 为什么分布式一定要有redis?

作者:孤独烟来自:http://rjzheng.cnblogs.com/1、为什么使用redis分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发。当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis。因此,这个问题主要从性能和并发两个角度去答。回答:如下所示,分为两点(...

2018-06-15 09:51:26 173

原创 SQL大数据量分页性能优化

目前在进行web api只读接口的改造,在改造过程中,发现sql 执行的效率和测试实验1.   直接用limit start, count分页语句, 也是我程序中用的方法:select * from product limit start, count当起始页较小时,查询没有性能问题,我们分别看下从10, 100, 1000, 10000开始分页的执行时间(每页取20条), 如下:select *...

2018-06-06 14:33:37 1770

原创 MD5算法

package com.rd.p2p.common.util.code;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/************************************************ * MD5 算法的Java Bean **************...

2018-05-07 09:58:42 285

原创 Base64解码类

package com.rd.p2p.common.util.code;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;/** * &lt;p&gt; * Description:base64解码类 * &lt;/p&gt; */public class BASE64Decoder ...

2018-05-07 09:57:31 448

原创 Base64编码类

package com.rd.p2p.common.util.code;import java.io.IOException;import java.io.OutputStream;/** * &lt;p&gt; * Description:base64编码类 * &lt;/p&gt; */public class BASE64Encoder extends CharacterEncoder { ...

2018-05-07 09:56:48 445

转载 Jetty入门

Jetty是什么?Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。如果让一个人说出一种开源的servlet容器,可能他们会回答Apa...

2018-05-05 11:18:56 208

原创 SpringBoot 整合 minio 进行文件上传

1、添加minio依赖<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.2.1</version></dependency>2、添加配置文件3、配置文件导入import lombok.Data;import org.springframework.

2021-05-10 18:30:24 342

原创 深入理解ConcurrentHashMap原理分析以及线程安全性问题

在之前的文章提到ConcurrentHashMap是一个线程安全的,那么我么看一下ConcurrentHashMap如何进行操作的。ConcurrentHashMap与HashTable区别?HashTableput()源代码我们来看一下put 操作:方法体 被 同步锁标记,由于同步锁的特性,其他线程将会排队进行等待处理。除此之外,对传入的key 值进行了一个判断空值逻辑。【PS:HashMap 是允许key值为空的】**ConcurrentHashMap **分段锁技术:Concu

2021-03-01 18:08:44 343

原创 对比 Hashtable、HashMap、TreeMap 的区别联系以及适用场景

①基本理解Hashtable、Hashmap、Treemap都是最常见的一些Map实现,是以键值对的形式存储和操作数据的容器类型。Hashtable是Java类库提供的一个哈希实现,本身是同步的,不支持null键和null值,由于同步导致性能开销,所以已经很少被推荐使用。HashMap是应用更加广泛的哈希表实现,行为上大致与HashTable一致,主要区别在于HashMap不是同步的,支持null键和null值等。通常情况下HashMap进行get和put操作可以达到常数时间的性能,所以它是绝大

2021-03-01 16:30:59 876

原创 对比Vector、ArrayList、LinkedList有何区别

这三者都是实现集合框架中的List,也就是所谓的有序集合,因此具体功能也比较近似,比如都提供按照位置进行定位、添加或者删除的操作,都提供迭代器以遍历其内容等。但因为具体的设计区别,在行为、性能、线程安全等方面,表现又有很大不同。  Verctor 是 Java 早期提供的线程安全的动态数组,如果不需要线程安全,并不建议选择,毕竟同步是有额外开销的。Vector 内部是使用对象数组来保存数据,可以根据需要自动的增加容量,当数组已满时,会创建新的数组,并拷贝原有数组数据。  ArrayList 是应用更

2021-03-01 15:49:26 121

原创 Java基础之int和Integer有什么区别

1 Java两种数据类型1.1 Java两种数据类型分类(1)基本数据类型,分为boolean、byte、int、char、long、short、double、float;(2)引用数据类型 ,分为数组、类、接口。1.2 Java为每个基本数据类型提供了封装类为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每 一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机

2021-02-26 17:13:51 118

转载 ASM原理详解

一、什么是ASM  ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。asm字节码增强技术主要是用来反射的时候提升性能的,如果单纯.

2021-02-26 17:12:04 1829 2

原创 动态代理是基于什么原理

代理模式:通过代理静默的解决一些与业务无关的问题,例如远程,安全,事物,日志,资源关闭,...让应用开发者可以只关心自身业务.静态代理:事先写好代码类,可以手工编写,也可以用工具生成.缺点是每个业务类都要有一个对应代理类,非常不灵活.动态代理:运行时自动生成代理对象.缺点是生成代理对象和调用代理对象都要额外花费时间,JDK动态代理:基于java反射机制实现,必须要实现了接口的业务类才能用这种办法生成代理对象.新版本也开始结合ASM机制.cglib动态代理:基于ASM机制实现,通过生成业务类的

2021-02-26 17:10:58 189

原创 千万级数据量表,快速添加索引思路!

前言增加字段相信大家应该都不陌生,随手就可以写出来,给 MySQL 一张表加字段执行如下 sql 就可以了:ALTERTABLEtbl_tplADDtitle(255)DEFAULT''COMMENT'标题'AFTERid;但是线上的一张表如果数据量很大呢,执行加字段操作就会锁表,这个过程可能需要很长时间甚至导致服务崩溃,那么这样操作就很有风险了。给 MySQL 大表加字段的思路① 创建一个临时的新表,首先复制旧表的结构(包含索引)createtable...

2021-02-26 16:58:58 657

转载 String,StringBuffer与StringBuilder的区别

一、Java String 类——String字符串常量字符串广泛应用在Java 编程中,在 Java 中字符串属于对象,Java 提供了String 类来创建和操作字符串。需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。我们来看一下这张对String操作时内存变化的图:我们可以看到,初始String值为“hello”,然后在这个字符串后面加上新的字符串“world”,这个过程是需要重新..

2021-02-26 16:53:38 122

原创 谈谈final,finally,finalize的区别

1. final  在java中,final可以用来修饰类,方法和变量(成员变量或局部变量)。下面将对其详细介绍。1.1 修饰类  当用final修饰类的时,表明该类不能被其他类所继承。当我们需要让一个类永远不被继承,此时就可以用final修饰,但要注意:final类中所有的成员方法都会隐式的定义为final方法。1.2 修饰方法使用final方法的原因主要有两个:  (1) 把方法锁定,以防止继承类对其进行更改。  (2) 效率,在早期的java版本中,会将final方法.

2021-02-24 17:15:19 186

转载 谈谈你对java平台的理解?

问题:谈谈你对java平台的理解?java是解释执行,这句话对吗?典型回答:java本身是一种面向对象的语言,具有很好的跨平台的能力,能够做到“write once ,run anywhere”。另外就是GC机制,java通过垃圾回收器回收分配内存,程序员无需自己操心内寸的回收问题。我们日常会接触到jre和jdk。jre是java运行环境,包含了jvm和java类库等。jdk则是在jre的基础上提供了更多的工具,比如编译器,和一些诊断工具等。 java是解释执行,这句话不是很准...

2021-02-24 17:14:23 126

转载 Exception和Error有什么区别

基本概念首先Exception和Error都是继承于Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception和Error体现了JAVA这门语言对于异常处理的两种方式。Exception是java程序运行中可预料的异常情况,咱们可以获取到这种异常,并且对这种异常进行业务外的处理。Error是java程序运行中不可预料的异常情况,这种异常发生以后,会直接导致JVM不...

2021-02-24 17:00:51 3910

原创 linux查看java堆栈

1、查看JAVA进程JVM参数jinfo -flags pid(进程号)-XX:CICompilerCount=2 最大的并行编译数-XX:InitialHeapSize=16777216 JVM 的初始堆内存大小-XX:MaxHeapSize=257949696 JVM 的最大堆内存大小-XX:MaxNewSize=85983232-XX:MinHeapDeltaBytes=196608-XX:NewSize=5570560-XX:OldSize=112066562、JVM 查看.

2020-10-28 15:02:54 3956

原创 springBoot使用guava的令牌桶机制实现限流

guava是谷歌提供的一RateLimiter,指定一个qps的值,请求来需要acquire获取令牌,直到令牌重新填充才得到放行。tryAcquire方法的话,可以指定一个等待时间,并返回一个Boolea值。套框架,我们这里需要用到的是它的限流器:不足之处:所有的请求进来都是调用acquire。无法根据ip或者其他的类型关键字来区分。所以我们引入了缓存,类似HashMap,针对不同的关键字(本文使用方法名)生成不同的限流器。1、引入配置依赖低版本没有RateLimiter方法,版本不对时...

2020-08-28 15:26:34 705

原创 SpringBoot使用redis+lua实现限流或重复提交

本文主要演示了 Spring Boot 项目如何通过 AOP 结合 Redis + Lua 脚本实现分布式限流,旨在保护 API 被恶意频繁访问的问题; 1、redis 配置文件@Configurationpublic class RedisConfig { @Bean public RedisScript<Long> limitRedisScript() { DefaultRedisScript redisScript = new Defau...

2020-08-28 11:20:55 982 2

转载 springboot实现logback日志

在resources目录下创建logback.xml日志具体配置内容如下:<?xml version="1.0" encoding="UTF-8"?><configuration> <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,, --> <!-- appender是configuration的子节点,是负责写日志的组件。 --> <!-- ConsoleA

2020-08-13 10:27:54 151

原创 SpringBoot实现简单上传功能

# Getting Started# spring boot 实现简单上传1、pom.xml文件添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>2、yml文件添加.

2020-08-13 09:04:20 206

原创 mysql数据库慢sql排查

目的:记录查询超过200ms的sql进行统计,通过结果进行对应的优化。默认情况下,MySQL数据库并不启动慢查询日志,需要手动开启配置。如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。操纵:开启配置1、慢sql查询是否开启SHOW VARIABLES LIKE 'log_slow_queries'; 开启 ON 关闭OFF 默认是OFF2、查看慢sql统计时间show variables like '%long_query_time%'..

2020-08-02 17:33:59 799

原创 记一次医院线上问题慢慢慢问题排查解决

故事的开始是实施小老弟把医院的数据库私自做迁移,然后就崩了,之后去重新弄好了数据库,并去医院赔礼道歉,毕竟还有一大笔尾款未到账,然后就是医院不停的喊系统慢慢慢,下面就是这次慢慢慢问题的解决。 打开系统日志发现没有打印数据库日志,因为医院做了负载均衡,我们就一台一台的进行了添加数据库日志的配置参数, logging.level.***.mysqlmapper=debug 然后发现了会在同一时间前端发送了大量的请求去访问同一个接口,导致数据库压力增大。影响其他业务...

2020-07-30 17:24:27 216

原创 使用SpringBoot快速构建WebSocket项目

目前大数据越来越火爆,大量的数据墙如何快速构建完成,webSocket将是至关重要的一环。、github地址:git@github.com:juejuedog/SpringBootDemo.git1、首先要引入webSocket的依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket&l

2020-07-24 15:20:28 935

转载 大厂Redis 性能优化的 13 条军规

本文我们将使用以下手段,来提升 Redis 的运行速度: 缩短键值对的存储长度; 使用 lazy free(延迟删除)特性; 设置键值的过期时间; 禁用长耗时的查询命令; 使用 slowlog 优化耗时命令; 使用 Pipeline 批量操作数据; 避免大量数据同时失效; 客户端使用优化; 限制 Redis 内存大小; 使用物理机而非虚拟机安装 Redis 服务; 检查数据持久化策略; 禁用

2020-07-16 09:08:33 151

空空如也

空空如也

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

TA关注的人

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