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

原创 java实用型-高并发下RestTemplate的正确使用
文章目录前言一、RestTemplate是什么?二、如何使用1.创建一个bean2.使用步骤三、高并发下的RestTemplate使用总结前言如果java项目里有调用第三方的http接口,我们可以使用RestTemplate去远程访问。也支持配置连接超时和响应超时,还可以配置各种长连接策略,也可以支持长连接预热,在高并发下,合理的配置使用能够有效提高第三方接口响应时间一、RestTemplate是什么?RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate
2020-09-14 17:19:13
14889
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
386
原创 linux查看内存大小
du -sh * | sort -h 占用空间大小排序。du -sh * 看哪个目录占用空间大。df -h命令查看磁盘使用情况。
2022-08-30 14:14:05
1103
原创 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
1286
原创 mysql如何防止幻读
前言以下内容是作者在网上搜集和自己总结而来。一、基本概念MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的。事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)四个特性,简称 ACID,缺一不可。今天要说的就是隔离性。1.1 脏读脏读指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会回滚,也就是可能最终不会存到数据库中,也就是不存在的数据。读到了并一定最终存在的数据,这就是脏读
2022-03-11 14:31:49
3326
4
原创 记一次死锁问题排查
前言某一天晚上服务发生报警,但是由于发生报警的时间过晚,到第二天开始查找问题原因,经排查,竟然发现是mysql死锁导致的!!!一、原因分析2021-12-28 深夜,我负责的服务发生报警,通过查看错误日志,发现是mysql死锁导致的,如图:次日上午,通过查看sql:DELETE FROM table WHERE update_time < DATE_ADD(NOW(),INTERVAL -? SECOND),确定代码报错的地方如下:看原因是死锁导致的,初步怀疑是在同一时刻有其
2022-03-01 21:40:04
222
原创 记一次优化线程池的maxPoolSize来提高接口的QPS
前言项目中有一个逻辑是消费kafka消息,然后调用下游接口处理逻辑,作者在用kafka处理消息的时候,通过google的rateLimiter.acquire()方法来达到接口限流的目的,但是发现,之后无论如何增大RateLimiter.create方法中的permitsPerSecond参数,接口QPS都没有变化,于是就有了下面的一系列猜测+验证的解决方法。猜测+验证首先可以从自己应用到的组件开始排查,然后定位到大概的地方,优化并验证。比如:在项目中的kafka消费端,有以下线程池的应用@Au
2022-03-01 20:17:04
2303
原创 记一次内存溢出排查(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
1316
原创 ElasticSearch查询地图信息(geo-point类型)
最近有个需求是根据经纬度查询地图信息,刚开始有点懵懂,后来了解到es里有个geo-point的类型,这个是存放地理坐标点的信息也就是经纬度的信息,然后通过点位查询距离范围内也就是一个圆内的所有数据。设置数据格式地理坐标点(geo-point) 是指地球表面可以用经纬度描述的一个点。地理坐标点可以用来计算两个坐标位置间的距离,或者判断一个点是否在一个区域中。地理坐标点不能被动态映射(dynamic mapping)自动检测,而是需要显式声明对应字段类型为 geo_point ,例子中的es mapping
2020-11-17 21:44:11
1992
原创 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
1236
原创 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
4289
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
3419
6
原创 高并发下如何减少对MySQL集群的压力
高并发下减少对MySQL集群的压力前言一、高并发场景?1.确定高并发涉及的模块二、使用步骤1.引入库2.读入数据总结前言在高并发,大批量下的服务调用中,需要经常对数据库频繁的做操作,但是此时也会带来cpu飙高的问题,所以MySQL数据的DML操作就显得尤为重要,那么在高并发下如何减少对MySQL集群的压力呢?慢慢听我娓娓道来。一、高并发场景?1.确定高并发涉及的模块首先需要对服务有很深的了解,才知道哪些模块会涉及到高并发场景,我们可以通过观察服务监控看最近一个星期或者一个月的服务状态,一般互联网公
2020-09-18 17:13:16
1125
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
2868
原创 java自定义全局异常拦截类-@RestControllerAdvice和@ExceptionHandler
在java中如果出现异常的话,往往文案不是很友好,不能直观的看出是什么问题导致的,我们可以在一个服务里自定义全局异常拦截类,对某些特定的异常或者自定义的异常做拦截,然后返回合适的文案,让用户一看便知道问题出在哪,不多说直接上代码:package name.controller为controller所在的包目录,@Slf4j@RestControllerAdvice("***package name***.controller")public class ExceptionAdvice { /**
2020-09-16 18:00:26
880
原创 Java读取文件(File和Writer类的使用)
java读取文件前言一、读取项目中的文件?二、读取网络文件三、写入新文件总结前言在java开发中,经常会有读取文件的操作,本次介绍读取项目中的文件和读取网络文件两种方式。背景:需要对一批文件里的数据(数据按行分开)做分析处理,然后将分析出来的数据写入到新文件。一、读取项目中的文件?将需要读取的文件放入项目中的resources目录,然后用File类进行读取:File file = ResourceUtils.getFile("classpath:file_name.txt");Buffered
2020-09-16 16:28:13
1922
原创 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
420
原创 java实用型-RocketMQ幂等消费
RocketMQ幂等消费前言一、分布式唯一id?二、使用步骤1.寻找uuid2.redis分布式锁总结前言我们在使用RocketMQ的时候,有时候需要对消费端做幂等处理,防止重复消费,作者在项目中用的最多的就是redis的分布式锁,特别是在高并发下,消费端的幂等处理显得尤为重要。一、分布式唯一id?如果项目中有用到分布式唯一id的话,就很简单,直接对该id做redis分布式锁处理,如果没有的话,则需要选用全局唯一的属性比如订单id,支付流水号等类似的能够保证全局唯一性,也可以自己用CurrentTr
2020-09-15 21:54:31
518
原创 java实用型-判断测试线上环境工具类
判断java环境工具类前言一、spring-Environment?二、项目使用总结前言在java项目中有时候需要判断当前运行的环境,比如测试环境还是线上环境或者其它的环境,我们可以写一个工具类,判断当前所处的环境,然后做不同的处理。一、spring-Environment?spring自带的类,Environment在容器中是一个抽象的集合,是指应用环境的2个方面:profiles和properties。其中properties属性包含环境变量等数据,我们可以拿出其中的数据然后判断当前的环境标识。
2020-09-15 10:45:19
766
3
原创 Java解耦的最佳方式-策略工厂模式
Java解耦的最佳方式-策略工厂模式前言一、自定义消息处理注解?二、定义消息处理类1.定义策略接口2.定义策略接口实现类3.定义消息类型枚举三、创建策略的工厂类四、项目使用总结前言在实际开发中,单独使用一种模式可能无法更完美解决问题,需要多种模式结合使用,比如发消息的时候,有多种消息类型可以支持,但是不同的消息类型有不同的处理逻辑,如果仅仅使用其中一种的话,并不能很好的解决问题,本期采用策略工厂模式给大家演示一下如何在代码中更好的解耦。一、自定义消息处理注解?@Target({ElementType
2020-09-14 21:51:10
986
原创 java实用型-线程池、队列、多线程的结合使用
记一次高并发下线程池、队列、多线程的使用前言一、自定义线程池配置二、用@PostConstruct启动多线程1. @PostConstruct介绍2.创建多线程并启动该线程三、高阶使用1.网关上做路由转发2.回调服务处理consumer总结前言在高并发情况下,多线程、线程池可能会经常用到,作者在一次高并发活动中处理回调逻辑,应用到了多线程、线程池和队列,以下介绍在其中的应用一、自定义线程池配置我们通过ThreadPoolExecutor创建了一个核心线程数为1,最大线程数为2,线程存活时间为60s,
2020-09-14 20:24:00
1062
原创 PlantUML、draw.io、XMind等实用画图工具
java技术方案评审画图工具部分汇总前言一、ProcessOn二、PlantUML插件三、XMind思维导图四、draw.io五、ER图-Navicat自带功能总结前言一个完整的需求到上线,作为研发,中间少不了技术方案设计评审,那么对于技术方案评审中最直观的一种呈现方式即是各种流程图、时序图、UML图、ER图等,本期介绍技术方案评审中比较实用的几种画图工具。一、ProcessOn链接:ProcessOn在线画图软件此画图工具支持各种UML用例图、时序图、流程图等,个人尝试之后,感觉比较好用,但是免
2020-09-14 16:30:17
3952
4
原创 redis客户端-RedisDesktopManager
redis客户端:https://github.com/qishibo/AnotherRedisDesktopManager
2020-09-14 15:40:46
182
原创 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
3704
原创 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
476
1
转载 java开发知识整理-java知识技术栈流程图
链接:https://www.processon.com/view/58cfeccae4b03153149958d5#map
2020-09-10 16:20:24
283
转载 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
4202
转载 RocketMQ消费模式
目录集群消费广播消费使用集群消费模拟广播消费首先明确一点,RocketMQ 是基于发布订阅模型的消息中间件。所谓的发布订阅就是说,consumer 订阅了 broker 上的某个 topic,当 producer 发布消息到 broker 上的该 topic 时,consumer 就能收到该条消息。之前我们讲过 consume...
2020-09-10 12:04:38
284
原创 java实用型-驼峰下划线互转
前言在java开发中,平常可能会经常接触到驼峰转下划线、下划线转驼峰的操作,在平常的项目中,我们可以写一个全局的工具类,防止重复码????的操作,不多说直接上代码驼峰下划线互转public class CamelAndUnderlineUtil { private CamelAndUnderlineUtil() { throw new IllegalStateException("CamelAndUnderlineUtil.Class"); } /**
2020-09-10 11:38:57
772
原创 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
314
转载 Tomcat系统架构
四张图带你了解Tomcat系统架构–让面试官颤抖的Tomcat回答系列!https://blog.youkuaiyun.com/xlgen157387/article/details/79006434
2019-04-30 15:21:40
97
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人