自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java实用型-高并发下RestTemplate的正确使用

文章目录前言一、RestTemplate是什么?二、如何使用1.创建一个bean2.使用步骤三、高并发下的RestTemplate使用总结前言如果java项目里有调用第三方的http接口,我们可以使用RestTemplate去远程访问。也支持配置连接超时和响应超时,还可以配置各种长连接策略,也可以支持长连接预热,在高并发下,合理的配置使用能够有效提高第三方接口响应时间一、RestTemplate是什么?RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate

2020-09-14 17:19:13 13328 11

原创 Linux常用命令(Java开发工程师基本够用)

4.根据时间范围查询日志(文件名:test.log,查询时间范围:2022-02-14 16:04:30 - 2022-02-14 2022-16:05:30)6.查看压缩包文件内容(文件名:test.log.zip,查找内容:test123)5.查看压缩包里的文件(文件名:test.log.zip)3.查看jar包内容(jar包名称:test.jar)3.重启服务(jar包:test.jar)2.查看gz文件(文件名:test.gz)2.删除文件(文件名:test.log)1.查看java进程。

2022-09-01 15:51:30 318 1

原创 MySQL删除数据避免主从延迟实现方案

MySQL删除数据避免主从延迟实现方案

2022-08-31 11:30:54 634

原创 快速远程登录Linux服务器

远程登录linux服务器的时候,ssh命令需要手工输入密码,当登录多台机器的时候就会非常繁琐

2022-08-31 10:55:29 530

原创 jstack命令查看占用CPU高的线程堆栈信息

jstack命令查看占用CPU高的线程堆栈信息

2022-08-30 14:30:06 674

原创 linux查看内存大小

du -sh * | sort -h 占用空间大小排序。du -sh * 看哪个目录占用空间大。df -h命令查看磁盘使用情况。

2022-08-30 14:14:05 1022

原创 git删除分支命令

git删除分支命令

2022-08-30 14:11:53 132

原创 es插入失败

but this cluster currently has [1000]/[1000] maximum shards open

2022-08-18 15:42:43 795

原创 curl get/post使用总结

curl get/post使用总结

2022-08-17 14:25:58 290

原创 shell post json遇到的问题

shell post json遇到的问题

2022-08-16 19:11:48 557

原创 redis-数据结构与对象

一、redisObjectRedis中的每个对象都由一个redisObject结构表示type:表示对象的类型,占4个bit,就是string,hash,list,set,zset这些类型encoding:表示对象的编码,占用4个bit4. ptr:指针对象,64位系统寻址地址固定是 64bits , 当encoding为int时, ptr 为数字的值;1.type类型type 记录了对象的类型,所有的类型如下:2.encoding类型encoding 表示 ptr 指向的具体数据结构,

2022-04-28 18:09:50 1230

原创 mysql如何防止幻读

前言以下内容是作者在网上搜集和自己总结而来。一、基本概念MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的。事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)四个特性,简称 ACID,缺一不可。今天要说的就是隔离性。1.1 脏读脏读指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会回滚,也就是可能最终不会存到数据库中,也就是不存在的数据。读到了并一定最终存在的数据,这就是脏读

2022-03-11 14:31:49 3203 4

原创 mac idea大小写快捷键

Command+Shift+U: 大小写切换

2022-03-08 14:59:23 1089

原创 记一次死锁问题排查

前言某一天晚上服务发生报警,但是由于发生报警的时间过晚,到第二天开始查找问题原因,经排查,竟然发现是mysql死锁导致的!!!一、原因分析2021-12-28 深夜,我负责的服务发生报警,通过查看错误日志,发现是mysql死锁导致的,如图:次日上午,通过查看sql:DELETE FROM table WHERE update_time < DATE_ADD(NOW(),INTERVAL -? SECOND),确定代码报错的地方如下:看原因是死锁导致的,初步怀疑是在同一时刻有其

2022-03-01 21:40:04 193

原创 记一次优化线程池的maxPoolSize来提高接口的QPS

前言项目中有一个逻辑是消费kafka消息,然后调用下游接口处理逻辑,作者在用kafka处理消息的时候,通过google的rateLimiter.acquire()方法来达到接口限流的目的,但是发现,之后无论如何增大RateLimiter.create方法中的permitsPerSecond参数,接口QPS都没有变化,于是就有了下面的一系列猜测+验证的解决方法。猜测+验证首先可以从自己应用到的组件开始排查,然后定位到大概的地方,优化并验证。比如:在项目中的kafka消费端,有以下线程池的应用@Au

2022-03-01 20:17:04 2206

原创 记一次内存溢出排查(OutOfMemoryError)和jvm调优

项目场景:上传Excel文件到阿里云的oss,定时任务进行异步下载进行文件解析。异步下载文件返回的是InputStream,项目里用了Apache.POI XSSFWorkbook进行转化,并对Excel中的sheet进行数据解析,然后异步写入es,大概就是这么一个场景。问题描述:资源泄漏:使用Apache.POI XSSFWorkbook时,工作簿永远不会被关闭(Resource leak: workbook is never closed warning when using Apache.POI

2020-12-08 23:19:00 1146

原创 ElasticSearch查询地图信息(geo-point类型)

最近有个需求是根据经纬度查询地图信息,刚开始有点懵懂,后来了解到es里有个geo-point的类型,这个是存放地理坐标点的信息也就是经纬度的信息,然后通过点位查询距离范围内也就是一个圆内的所有数据。设置数据格式地理坐标点(geo-point) 是指地球表面可以用经纬度描述的一个点。地理坐标点可以用来计算两个坐标位置间的距离,或者判断一个点是否在一个区域中。地理坐标点不能被动态映射(dynamic mapping)自动检测,而是需要显式声明对应字段类型为 geo_point ,例子中的es mapping

2020-11-17 21:44:11 1779

原创 es aggregation聚合查询

简单介绍:aggregations —— 聚合,提供了一种基于查询条件来对数据进行分桶、计算的方法。有点类似于 SQL 中的 group by 再加一些函数方法的操作。项目使用场景:获取es某字段去重后的列表(类似mysql中的distinct)/** * 获取es某字段去重后的列表(类似mysql中的distinct) * * @param field es中需要分组的字段 * @param esIndex es索引 * @return java.ut

2020-11-17 20:49:23 1159

原创 java下载文件到默认浏览器路径

在controller接口入参直接传HttpServletResponse response,然后设置文件名称和文件类型,InputStream是要下载的文件流,无论是网络文件还是存储在阿里OOS或者腾讯COS静态存储服务中的文件,都可以转化成InputStream的形式。 @GetMapping("/download") public void download(HttpServletResponse response) { return this.downloadFile(res

2020-11-11 17:20:38 4108 2

原创 Spring定时任务@Scheduled使用的那些坑

@Scheduled如何使用前言一、使用的那些坑?1.单线程2.@Async和@EnableAsync二、使用多线程总结前言@Scheduled是spring自带的注解,默认是单线程,常用作定时任务使用,但是如果是集群版的机器的话,就考虑加上分布式锁或者使用分布式定时任务代替。一、使用的那些坑?1.单线程因为@Scheduled默认使用的是单线程,如果有两个任务A和B,那么任务A要是阻塞了,任务B就无法执行。2.@Async和@EnableAsync为了解决单线程带来的线程阻塞问题,我们可以

2020-11-11 16:48:01 3078 6

原创 高并发下如何减少对MySQL集群的压力

高并发下减少对MySQL集群的压力前言一、高并发场景?1.确定高并发涉及的模块二、使用步骤1.引入库2.读入数据总结前言在高并发,大批量下的服务调用中,需要经常对数据库频繁的做操作,但是此时也会带来cpu飙高的问题,所以MySQL数据的DML操作就显得尤为重要,那么在高并发下如何减少对MySQL集群的压力呢?慢慢听我娓娓道来。一、高并发场景?1.确定高并发涉及的模块首先需要对服务有很深的了解,才知道哪些模块会涉及到高并发场景,我们可以通过观察服务监控看最近一个星期或者一个月的服务状态,一般互联网公

2020-09-18 17:13:16 873 2

原创 ES(elasticsearch)集群的那些事

es集群的那些事前言一、ES简单介绍?二、ES集群节点角色1.主节点(Master node)2.数据节点(Data node)3.协调节点(Coordinating node)4.配置es集群所需内存三、cat命令查询ES状态1.数据节点机器存储信息2.节点信息3.索引信息4.分片信息四、ES简单实用DSL查询总结前言相信在平常的项目中,我们经常会用到es去查询高频出现的数据,通常每个业务线会申请自己独立的es集群,那么就需要对自己要存储的数据的量级做一个大致的了解,比如只存储近一年的数据,大概需要占

2020-09-17 15:30:36 2406

原创 java自定义全局异常拦截类-@RestControllerAdvice和@ExceptionHandler

在java中如果出现异常的话,往往文案不是很友好,不能直观的看出是什么问题导致的,我们可以在一个服务里自定义全局异常拦截类,对某些特定的异常或者自定义的异常做拦截,然后返回合适的文案,让用户一看便知道问题出在哪,不多说直接上代码:package name.controller为controller所在的包目录,@Slf4j@RestControllerAdvice("***package name***.controller")public class ExceptionAdvice { /**

2020-09-16 18:00:26 800

原创 Java读取文件(File和Writer类的使用)

java读取文件前言一、读取项目中的文件?二、读取网络文件三、写入新文件总结前言在java开发中,经常会有读取文件的操作,本次介绍读取项目中的文件和读取网络文件两种方式。背景:需要对一批文件里的数据(数据按行分开)做分析处理,然后将分析出来的数据写入到新文件。一、读取项目中的文件?将需要读取的文件放入项目中的resources目录,然后用File类进行读取:File file = ResourceUtils.getFile("classpath:file_name.txt");Buffered

2020-09-16 16:28:13 1841

原创 leetcode-92. 反转链表 II(java实现)

这道算法题是在快手技术二面的时候问的一道题目,当时要求手写出来并讲解每一行的意思,其实这道题大概可以分为三个思路:1.m之前的节点构成链表;2.反转m->n链表;3.m-1的节点指向n,而m的节点指向n+1;总共分为以上三步,大家是不是更好的理解一些,比如以上示例:1.m之前的节点构成链表,只有一个节点,也就是1;2.反转2->3->4变为2<-3-<-4;3.m-1的节点指向n,也就是1->4,m的节点指向n+1,也就是2->5,所以最终链表的顺序.

2020-09-16 15:32:10 356

原创 java实用型-RocketMQ幂等消费

RocketMQ幂等消费前言一、分布式唯一id?二、使用步骤1.寻找uuid2.redis分布式锁总结前言我们在使用RocketMQ的时候,有时候需要对消费端做幂等处理,防止重复消费,作者在项目中用的最多的就是redis的分布式锁,特别是在高并发下,消费端的幂等处理显得尤为重要。一、分布式唯一id?如果项目中有用到分布式唯一id的话,就很简单,直接对该id做redis分布式锁处理,如果没有的话,则需要选用全局唯一的属性比如订单id,支付流水号等类似的能够保证全局唯一性,也可以自己用CurrentTr

2020-09-15 21:54:31 336

原创 java实用型-判断测试线上环境工具类

判断java环境工具类前言一、spring-Environment?二、项目使用总结前言在java项目中有时候需要判断当前运行的环境,比如测试环境还是线上环境或者其它的环境,我们可以写一个工具类,判断当前所处的环境,然后做不同的处理。一、spring-Environment?spring自带的类,Environment在容器中是一个抽象的集合,是指应用环境的2个方面:profiles和properties。其中properties属性包含环境变量等数据,我们可以拿出其中的数据然后判断当前的环境标识。

2020-09-15 10:45:19 679 3

原创 Java解耦的最佳方式-策略工厂模式

Java解耦的最佳方式-策略工厂模式前言一、自定义消息处理注解?二、定义消息处理类1.定义策略接口2.定义策略接口实现类3.定义消息类型枚举三、创建策略的工厂类四、项目使用总结前言在实际开发中,单独使用一种模式可能无法更完美解决问题,需要多种模式结合使用,比如发消息的时候,有多种消息类型可以支持,但是不同的消息类型有不同的处理逻辑,如果仅仅使用其中一种的话,并不能很好的解决问题,本期采用策略工厂模式给大家演示一下如何在代码中更好的解耦。一、自定义消息处理注解?@Target({ElementType

2020-09-14 21:51:10 773

原创 java实用型-线程池、队列、多线程的结合使用

记一次高并发下线程池、队列、多线程的使用前言一、自定义线程池配置二、用@PostConstruct启动多线程1. @PostConstruct介绍2.创建多线程并启动该线程三、高阶使用1.网关上做路由转发2.回调服务处理consumer总结前言在高并发情况下,多线程、线程池可能会经常用到,作者在一次高并发活动中处理回调逻辑,应用到了多线程、线程池和队列,以下介绍在其中的应用一、自定义线程池配置我们通过ThreadPoolExecutor创建了一个核心线程数为1,最大线程数为2,线程存活时间为60s,

2020-09-14 20:24:00 786

原创 PlantUML、draw.io、XMind等实用画图工具

java技术方案评审画图工具部分汇总前言一、ProcessOn二、PlantUML插件三、XMind思维导图四、draw.io五、ER图-Navicat自带功能总结前言一个完整的需求到上线,作为研发,中间少不了技术方案设计评审,那么对于技术方案评审中最直观的一种呈现方式即是各种流程图、时序图、UML图、ER图等,本期介绍技术方案评审中比较实用的几种画图工具。一、ProcessOn链接:ProcessOn在线画图软件此画图工具支持各种UML用例图、时序图、流程图等,个人尝试之后,感觉比较好用,但是免

2020-09-14 16:30:17 3290 4

原创 redis客户端-RedisDesktopManager

redis客户端:https://github.com/qishibo/AnotherRedisDesktopManager

2020-09-14 15:40:46 147

原创 java实用型:mybatis的好帮手-MybatisCodeHelperPro

前言相信我们很多人在java项目开发中,用到了mybatis框架,但是为了开发的效率,我们这期推荐一个好用的mybatis插件-MybatisCodeHelperPro,它能够帮你更快的生成DML语句,以及相应的数据表dao、实体model等。一、idea集成MybatisCodeHelperPro?1.idea-plugins-Marketplace下载可以在idea里的Preferences-plugins-Marketplace下载,搜索MybatisCodeHelperPro,出现如下界面:

2020-09-14 15:14:38 3371

原创 Java实用型-IDEA类注释和方法注释

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、idea配置类注释1.mac直接按快捷键“command+,”打开Live Templates2.新建一个Live Template之后,开始配置Abbreviation(快捷键)、Template text还有Edit variables二、idea配置方法注释1.新建一个Live Template之后,开始配置Abbreviation(快捷键)、Template text还有Edit variables2.配置Edit

2020-09-10 16:53:33 313

转载 java开发知识整理-java知识技术栈流程图

链接:https://www.processon.com/view/58cfeccae4b03153149958d5#map

2020-09-10 16:20:24 241

转载 redission使用的那些坑-hash结构

故障现象: 应用隔2-3天就回导致一次CPU飙到600%+(容器,宿主8核),随后宕机。排查过程:首先明确CPU飙升原因第一步: top -Hp 查看占用CPU进程发现13~20线程占用大量CPU资源第二步: jstack 查看实际占用cpu的进程(与top命令中线程关系nid(hex)=pid(dec))发现CPU占用...

2020-09-10 12:07:37 3964

转载 RocketMQ消费模式

目录集群消费广播消费使用集群消费模拟广播消费首先明确一点,RocketMQ 是基于发布订阅模型的消息中间件。所谓的发布订阅就是说,consumer 订阅了 broker 上的某个 topic,当 producer 发布消息到 broker 上的该 topic 时,consumer 就能收到该条消息。之前我们讲过 consume...

2020-09-10 12:04:38 166

原创 java实用型-驼峰下划线互转

前言在java开发中,平常可能会经常接触到驼峰转下划线、下划线转驼峰的操作,在平常的项目中,我们可以写一个全局的工具类,防止重复码????的操作,不多说直接上代码驼峰下划线互转public class CamelAndUnderlineUtil { private CamelAndUnderlineUtil() { throw new IllegalStateException("CamelAndUnderlineUtil.Class"); } /**

2020-09-10 11:38:57 655

原创 java实用型-AOP日志切面

java实用型-AOP日志切面java实用型-AOP日志切面一、自定义注解二、自定义切面三、方法上添加注解java实用型-AOP日志切面一、自定义注解@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface ParamLog { String description() default "";}二、自定义切面这里用的@Around环绕通知@Aspect

2020-09-10 11:19:34 278

转载 Tomcat系统架构

四张图带你了解Tomcat系统架构–让面试官颤抖的Tomcat回答系列!https://blog.csdn.net/xlgen157387/article/details/79006434

2019-04-30 15:21:40 76

空空如也

空空如也

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

TA关注的人

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