- 博客(1519)
- 资源 (21)
- 收藏
- 关注

原创 浏览器访问管理服务器超时导致请求重试问题分析
背景管理后台上有个批量退款的功能,每次操作退两百笔退款订单,大概会执行4分钟的时间。发现相同的参数和请求路径,每隔两分钟进行重试,总共重试了四次,不像是人为的原因。分析1、谷歌浏览器超过2分钟没有收到服务方的请求,就会进行断开连接。这时就猜测考虑是不是业务处理逻辑太久了,导致浏览器长时间没有接受到后台的返回结果,自动重复提交了记录。3、之前是在管理项目上出现的问题,利用arthas注入程序执行时睡眠10分钟的代码,复现了。重新发起请求原因HTTP/1.1 的一处规范 :If a
2022-04-11 18:35:30
8440
2

原创 周期性的显示调用full gc
目录背景排查cxf问题解决方案背景服务gc日志每十小时执行一次full gc,如下:2022-03-30T05:04:36.659+0800: 1188030.244: [Full GC (System.gc()) 2022-03-30T05:04:36.659+0800: 1188030.244: [CMS: 262271K->253610K(917504K), 0.6862360 secs] 298618K->253610K(1035520K), [Me
2022-03-30 22:24:37
931

原创 排查显示调用System.gc()方法的调用栈
背景项目里查看gc日志发现是由于显式调用了System.gc()导致的full gc, 需要排查该方法的调用栈。Arthas的下载与使用可以看之前写的文档:利用Arthas进行简单的故障注入_韩师学子--小倪的博客-优快云博客执行第一步,由于java.lang.System是JDK自带的类,Arthas默认关闭了对JDK类的自带类的增强,需要通过options命令打开options unsafe true第二步,使用stack命令,观察谁调用了java.lang.Syst.
2022-03-29 23:55:40
763

原创 故障演练--使用 ChaosBlade 进行混沌实验
一、ChaosBlade 简介ChaosBlade 是阿里开源的混沌工程品牌,包含 chaosblade 工具和 chaosblade-box 平台等项目。ChaosBlade 按照混沌工程的思想,将故障抽象成了一个个实验,并按照科学实验的方法对其过程进行组织。chaosblade 工具支持了大量的故障场景和丰富的命令参数,能够很方便地对常见故障场景进行实验。二、部分 JVM 实验介绍相比于 CPU 使用率飙升等基础设施相关故障导致的系统不稳定,我们的关注点目前更加集中在:系统所依赖的两方或三方
2021-12-04 14:41:31
4658
3

原创 Jmeter压测
目录一、Jmeter基本使用二、请求报文的数据来源三、请求报文构造固定值取值方式动态值取值方式签名取值方式四、分布式压测Master配置Slave配置 五、Q&A一、Jmeter基本使用这里不做详细介绍,可参考:Jmeter官网(Apache JMeter - User's Manual: Getting Started)Jmeter 入门教程(https://www.jianshu.com/p/6bc152ca6126)使...
2021-12-04 12:15:06
931

原创 redisClient的soTimeout偶尔不生效分析
目录背景源码分析参考背景为了方便观察redis的调用情况,接入了redis通用访问组件。项目redis设置socketTimeout时间为200ms,配置最大重试次数为1次。发现项目在调用redis时,有一些单个set语句会达到1s以上的耗时,然后也能拿到执行命令的结果。而根据参数配置,即便再重试一次,也最多400ms就超时了。以下是11月25日api中的两个耗时日志:RedisClusterClientProxy.printRunCommandTimeoutLog:87 re
2021-11-28 12:49:18
1518

原创 基于Redis实现延时消息队列
基本实现相关接口import java.util.Optional;public interface IQueue<E> { boolean add(E item); Optional<E> get(); Optional<E> get(int timeout); long size();}抽象类import com.google.gson.Gson;import org.apache.co...
2021-11-06 15:48:23
1186

原创 Redis分布式锁实现
目录一、高效分布式锁二、Redis分布式锁的缺点三、使用Jedis set命令以及Lua脚本方式实现分布式锁四、使用Redisson+RLock实现分布式锁 锁互斥机制watch dog自动延期机制可重入加锁机制锁释放机制相关实现 优缺点五、参考一、高效分布式锁1、互斥在分布式高并发的条件下,我们最需要保证,同一时刻只能有一个线程获得锁,这是最基本的一点。2、防止死锁在分布式高并发的条件下,比如有个线程获得...
2021-11-06 12:21:35
1657

原创 Maven的 settings.xml 解析
settings.xml介绍 从settings.xml的文件名就可以看出,它是用来设置maven参数的配置文件。 并且,settings.xml是maven的全局配置文件。而pom.xml文件是所在项目的局部配置。 settings.xml中包含类似本地仓储位置、修改远程仓储服务器、认证信息等配置。settings.xml文件一般存在于两个位置: (1)全局配置: ${M2_HOME}/conf/settings.xml; (2)用户配置: user.hom...
2021-10-01 12:15:01
795

原创 MySQL 5.7 虚拟列 (virtual columns)
Generated Column在MySQL 5.7中,支持两种Generated Column,即Virtual Generated Column和Stored Generated Column。前者只将Generated Column保存在数据字典中(表的元数据),并不会将这一列数据持久化到磁盘上;后者会将Generated Column持久化到磁盘上,而不是每次读取的时候计算所得。Stored类型的generated columns可以用作一个物化缓存,用于复杂的条件,这些条件在运行时计算成本
2021-09-05 17:57:08
2592

原创 Mysql的新特性--MRR
MRR的全称是Multi-Range Read Optimization,是优化器将随机IO转化为顺序IO以降低查询过程中IO开销的一种手段。MRR原理执行一个范围查询:mysql > explain select * from stu where age between 10 and 20;+----+-------------+-------+-------+------+---------+------+------+-------------------...
2021-05-31 00:27:07
991

原创 debug mysql源码 --搭建环境
操作系统:windows10, 期间搭建时出现太多问题,很恶心。准备软件visual studio2015: 下载bison:下载,配置好环境变量,将安装的地址和bin路径配置到Path里去mysql5.7.25:下载,选择好版本,选中source codecmake: 下载配置windows SDK8.1visual studio 2015 安装部署后,记得配置好windows SDK8.1,不然cmake编译时会报错。不会配置的,可以选择新建一个c++项目,软件会自动提示是...
2021-03-21 13:52:33
351

原创 利用Arthas进行简单的故障注入
目录一、概念二、整体逻辑三、相关文档四、故障注入实践一、概念Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。二、整体逻辑Arthas的整体逻辑也是在 Java 的Instrumentation基础上来实现,所有在加载的类会通过Agent的加载, 通过addTransforme...
2021-03-17 19:13:22
2133

原创 Roaring64Bitmap实践
maven依赖<dependency> <groupId>org.roaringbitmap</groupId> <artifactId>RoaringBitmap</artifactId> <version>0.9.0</version></dependency>测试一:优化前后,读写文本期间,序列化与反序列化的耗时import o...
2021-01-24 11:10:01
4218
1

原创 MyBatis动态SQL(注解版)
@InsertProvider实现批量插入数据1.mySql 批量插入数据库语句格式:INSERT INTO[表名]([列名],[列名])VALUES([列值],[列值])),([列值],[列值])),([列值],[列值]));例如:INSERT INTOitems(name,city,price,number,picture)VALUES('耐克运动鞋','广州',500,1000,'003.jpg'),('耐克运动鞋2','广州2',500...
2020-12-10 20:08:38
7865
1

原创 Hikari 数据库连接池配置详解
Hikari 数据库连接池配置详解基本配置<!-- Hikari Datasource --> <bean id="dataSourceHikari" class="com.zaxxer.hikari.HikariDataSource" destroy-method="shutdown"> <property name="driverClassName" value="${jdbc.dr...
2020-10-18 11:07:48
4302
1

原创 数据库连接池
数据库连接池目录一、常用的数据库连接池二、基本配置 三、关键配置四、性能配置五、各个连接池的属性说明 1)DBCP 属性说明表2)C3P0 属性说明表3) DRUID 属性说明表一、常用的数据库连接池1)DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP。2)c3p0...
2020-10-07 10:57:04
888

原创 MongoTemplate的实战
MongoTemplate的实战一、Mavn依赖: <!--spring data jars--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-commons</artifactId> </depe.
2020-08-08 11:06:12
3445

原创 WechatPay-API-v3接口规则
WechatPay-API-v3接口规则1、官方文档https://wechatpay-api.gitbook.io/wechatpay-api-v3/2、下面是Java 接入过程:第一步: 阅读微信支付分给的接口规则 说明: https://wechatpay-api.gitbook.io/wechatpay-api-v3/第二步: 微信支付API v3要用第三方CA的证书 所以涉及到 API证书升级新接入商户请参考什么是API证书?如何获取API证书?。已经接入并使用微信..
2020-06-20 15:22:21
7445
2

原创 Java 8 stream练习
Java 8 stream练习Mapmap 方法用于映射每个元素到对应的结果,以下代码片段使用 map 输出了元素对应的平方数:List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);// 获取对应的平方数List<Integer> squaresList = numbers.stream(...
2020-04-12 21:44:07
447

原创 redis的应用场景
redis的应用场景目录1、充值订单超时队列2、缓存系统3、计数器4、消息队列系统5、Bitmap6、HyperLogLog7、list集合的使用8、hash的使用9、sunionstore1、充值订单超时队列创建充值订单时,将订单号chargeOrderId、账号信息id、超时开始时间timeou...
2020-03-03 21:02:49
649

原创 Redis缓存雪崩、穿透、击穿、降级、预热、更新和限流
Redis缓存雪崩、穿透、击穿、降级、预热、更新和限流目录关键词解释缓存雪崩缓存穿透缓存击穿缓存降级缓存预热缓存更新限流关键词解释缓存:将数据库的数据也在内存存入一份,使请求可以直接访问内存,无法再次访问数据库。降级:就是在高并发高负载情况下,选择动态的关闭一下不重要的服务,拒绝访问等,来为重要的服务节省资源,比如电商平台秒杀当天可关闭推荐等...
2020-01-21 15:45:36
1213

原创 Java性能调优七种武器
Java性能调优七种武器目录JDK命令行Eclipse Memory AnalyzerJMX - Jconsole, VisualVMBtraceFlight Recorder Java Mission ControlJProfiler火焰图线上服务有时候我们会碰到下面这些问题: OutOfMemoryError,...
2019-12-16 20:54:36
541

原创 海量数据处理(Set、BitMap、HyperLogLog、BloomFilter)
海量数据处理(Set、BitMap、HyperLogLog、BloomFilter)目录SetBitMap(由bitSet来实现的)HyperLogLogBlommFilter综上所述海量数据处理:基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。那解决办法呢?针对...
2019-04-20 22:24:49
1743

原创 IP地址,子网掩码、默认网关,DNS的设置和工作原理(总结)
IP地址,子网掩码、默认网关,DNS的设置和工作原理(总结)转载:https://blog.youkuaiyun.com/kingshown_WZ/article/details/46423771概念:1. 概述 IP地址:人们在Internet上为了区分数以亿计的主机而给每台主机分配的一个专门的地址,通过IP地址就可以访问到每台主机。...
2018-09-19 09:34:01
50411
8
原创 ubuntu20 安装python2
包可能位于 Universe 仓库中。如果你需要将 Python 2 设置为默认的 Python 解释器,可以使用。在较新的 Ubuntu 版本中(如 Ubuntu 20.04 及以上),命令时,它将指向 Python 2.7。: 假设你的 Python 3 的路径是。如果运行没有生效,可以手动替换添加。如果仍然无法安装,可以尝试安装。包可能已被移除,但你可以安装。
2025-03-05 19:16:25
376
原创 mac maven编译出现问题
进入 /Library/Internet Plug-Ins/ 目录,删除 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin。前两个环境配置在系统启动时候就会加载,针对所有用户生效,后面四个属于具体用户级别的配置。删除掉 JavaAppletPlugin.plugin 这个插件即可。重新执行 mvn -v runtime 正确。mvn -v 查看 runtime 环境。
2024-11-26 11:56:07
428
原创 Jsch拉取sftp文件链接异常
最新版本的OpenSSH(7.8及更高版本)会以新的OpenSSH格式生成密钥,而旧版本的OpenSSH或某些工具可能不支持这种新格式。执行ssh-keygen命令后,您需要输入三次密码,分别是原密码、新密码、新密码(如果没有设置密码,则直接回车):如果您的私钥是新格式(OpenSSH格式),您可以尝试将其转换为旧格式(RSA格式)。使用jsch最新版本进行访问,支持ecdsa-sha2-nistp25加密算法。
2024-11-13 20:29:44
491
原创 navicat~导出数据库密码
当我们mysql密码忘记了,而在navicat里有记录,我们应该如何导出这个密码呢?第一步:文件菜单,导出链接,导出连接获取到 connections.ncx 文件。在导出的connections.ncx文件中找到password,然后复制出来。这里需要勾选 导出密码!不然导出的文件里不包含加密的密码。第二步:找到加密密码,进行破解。输入PHP代码,执行。
2024-10-09 09:39:21
762
原创 国际化开发常用知识点
夏令时的结束时间为11月的第一个星期日,在这一天的凌晨2点,人们再将时钟拨回1小时,即将表针由2点拨至1点。为不同的地区设置创建不同的资源文件,如 messages.properties、messages_en_US.properties、messages_zh_CN.properties 等,并使用 MessageSource 来根据用户的地区偏好加载相应的消息。此外,一些时区还会实行夏令时(DST),在特定的时间段内将时间调快一小时,但这不影响 UTC,因为 UTC 是不随季节变化的固定时间标准。
2024-09-24 13:28:44
924
原创 linux 下转化 ppk 文件 为openssh 文件(private,public)
2. ppk 文件转化 openssh key。1. 首先安装: puttygen。
2024-08-29 13:26:42
450
原创 Linux服务篇之FTP及SFTP
SFTP使用加密来保护传输的数据,确保传输的文件内容和认证信息在传输过程中都是加密的,难以被未经授权的人读取或窃听。FTP的主要作用是让用户能够连接到一个远程计算机(这些计算机上运行着FTP服务器程序),查看远程计算机上的文件,并将文件从远程计算机拷贝到本地计算机,或者将本地计算机的文件发送到远程计算机。总的来说,FTP和SFTP都是用于文件传输的协议,但SFTP在安全性方面相较于FTP有更高的保障,因为它使用了加密技术来保护数据的安全。然而,由于加密和解密的过程,SFTP的效率可能略低于FTP。
2024-04-09 21:40:34
1361
原创 2369. 检查数组是否存在有效划分
数组可以划分成子数组 [4,4] 和 [4,5,6]。如果获得的这些子数组中每个都能满足下述条件。这是一种有效划分,所以返回 true。,你必须将数组划分为一个或多个。1、尝试使用递推,出现运行超时。,则可以称其为数组的一种。存在一种有效划分,返回。该数组不存在有效划分。2、使用动态规划解决。
2024-03-01 13:28:41
494
1
原创 2673. 使二叉树所有路径值相等的最小代价
两条路径已经有相等的路径值,所以不需要执行任何增加操作。总共增加次数为 1 + 3 + 2 = 6。每次操作,你可以将树中。从根到叶子的每一条路径值都为 9。树中每个节点都有一个值,用下标从。里面节点的数目,节点编号从。都有两个孩子,分别是左孩子。- 将节点 4 的值增加一次。- 将节点 3 的值增加三次。- 将节点 7 的值增加两次。需要执行增加操作多少次。,树中每个非叶子节点。你的目标是让根到每一个。
2024-02-28 13:03:14
429
TXT全本小说下载工具V5.0绿色版
2021-04-28
EZDML_2神器
2018-12-26
尚硅谷SpringBoot视频教程(上)核心技术篇,(下)整合篇
2018-06-23
例年软件设计师考试真题解析(已经考过了)
2018-01-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人