
杂谈
文章平均质量分 87
snail-jie
问题驱动,慢慢沉淀
展开
-
项目中常见的几种策略模式实现方式
本篇文章主要介绍本人在自己项目中和开源项目中策略模式的实现方式。原创 2023-05-06 16:43:57 · 1081 阅读 · 1 评论 -
java.lang.IllegalStateException: Context has been already given a name报错分析解决
将dubbo的注册中心从zk切换到nacos后,在kubesphere中启动应用时发现如下报错。根据报错进行本地复现并分析出原因。原创 2023-04-25 11:13:09 · 2280 阅读 · 0 评论 -
Okhttp连接泄漏警告问题分析
搜索代码,将所有没有关闭资源的地方都进行关闭。后续发现再也没有相关警告日志出现了,成功解决问题规范代码,调用请求和获取响应作为整体不进行拆分,然后将响应进行类型转换。原创 2022-11-21 10:39:00 · 1510 阅读 · 0 评论 -
线程状态场景模拟以及问题定位
在看skywalking-agent源码时发现agent会采集线程的状态,但这些状态是什么场景触发的呢?当线程数超过阈值后,我们怎样去更快地定位问题呢?带上这样的疑问进行下面的分析。原创 2022-09-16 13:58:42 · 305 阅读 · 0 评论 -
HttpClient遭遇Connection Reset异常分析(浅析部分源码)
前段时间测试反馈页面会偶先错误提示,刷新后就没有了。根据测试反馈的时间点查看kibana日志,发现有异常。下面通过分析客户端和服务端相关源码进行分析根本原因,给出解决方案。原创 2022-09-08 23:32:58 · 2433 阅读 · 0 评论 -
Selenium + Python自动化测试入门
Selenium 是支持web浏览器自动化的一系列工具和库的综合项目,,这是一个编写指令集的接口,可以在许多浏览器中互换运行。原创 2022-08-05 10:18:13 · 467 阅读 · 0 评论 -
跨域问题的分析
在发布数据埋点工程后,前端访问时发生了跨域错误。经过问题分析排查发现,Kong网关里没有允许OPTIONS请求导致跨域错误。通过这个问题再对CORS原理梳理一下,知其所以然。在某些情况下,仅Access-Control-Allow-Origin 响应头是不够的,对服务器有特殊要求的请求的非简单请求(比如PUT或DELETE方法,或者Content-Type字段的类型是application/json),需要在正式请求前增加一次预检请求同时满足以下两个条件,就是简单请求(否则为非简单请求)2.1 请求方原创 2022-08-01 17:51:03 · 304 阅读 · 0 评论 -
resilience4j 重试源码分析以及重试指标采集
为了防止网络抖动问题,需要进行重试处理,重试达到阈值后进行告警通知,做到问题及时响应基于以上方案的对比,选择了使用resilience4j-retry,主要基于以下两点:原创 2022-06-23 23:40:31 · 470 阅读 · 1 评论 -
理解InnoDB是如何存储数据
idb文件查看mysql查看数据库存储位置show global variables like '%datadir%';idb文件一般存放在mysql/data/databasename下InnoDB的内部结构页的文件布局(如下图)1.1 每个空间被分成页面,通常每个页面 16 KiB1.2 每个页面都有一个 38 字节的FIL头和 8 字节的FIL 尾(FIL是“文件”的缩写形式)FIL头部和尾部的结构布局2.1 FIL头部读取的代码对应于FilHeader#fromSlic原创 2022-01-04 15:06:33 · 1257 阅读 · 0 评论 -
jedis泄露导致系统不可用排查
Redisredis在配置文件redis.conf中通过logfile指定日志文件位置,默认为空,输出在控制台1.1 查看运行中redis的安装位置: 获取当前redis的最大客户端连接获取redis当前客户连接数Jedis(2.9.3)参考资料Jedis常见异常汇总异常描述异常 JedisConnectionException: Could not get a resource from the pool redis.clients.jedis.exceptions.Jed原创 2021-12-23 16:24:42 · 1423 阅读 · 0 评论 -
Wireshark抓包分析TCP,发现居然只有三次挥手
背景本人一直不喜欢背八股文,喜欢源码调式和测试,相信自己看到的,所以一直苦于怎样去学习网络协议。昨天看了一篇文章《简单的 HTTP 调用,为什么时延这么大?》,里面有用到Wireshark抓包工具分析了耗时原因。趋于好奇心,网上了解一下Wireshark怎样使用,发现一篇好文《(图文并茂,权威最详细)Wireshark抓包分析 TCP三次握手/四次挥手详解》,自己动手安装分析一波搭建环境下载Wireshark:https://www.wireshark.org/#download(版本为3.6.0)原创 2021-12-09 10:02:02 · 5216 阅读 · 2 评论 -
重构校验逻辑可配置化
业务彼此隔离业务与业务的隔离需要有一个标识来唯一标志1.1 在业务处理过程中,可以知道这个业务线需要的具体业务策略和处理规则为什么要实现业务之间的彼此隔离?2.1 业务之间的互不影响:将变化的东西缩小到业务线内,不可能改动一个业务线的需求,结果把其它业务线影响了2.2 业务的可扩展性:比较好的状态就是具备可配置,稍微配置一下,一个新业务线就接入不同业务线之间有一条共性的业务流程,这个业务流程是业务的生命周期3.1 在优惠券中,核心的业务流程就四个:建券、发券、用券、退券,不管什么原创 2021-11-12 16:13:33 · 1170 阅读 · 0 评论 -
单元测试换种写法后尽如此之快
简介官方介绍:https://docs.spring.io/spring-framework/docs/current/reference/html/testing.htmlSpring团队提倡测试驱动开发(TDD)Spring-boot的2.1.16.RELEASE版本测试模块文档单元测试使用模拟对象来单独测你的代码1.1 不需Spring或任何其他容器1.2 例如,可以通过存根或模拟DAO或存储库接口来测试服务层对象,而无需在运行单元测试时访问持久数据模拟对象环境(Enviro原创 2021-11-04 16:06:44 · 130 阅读 · 0 评论 -
SystemTap安装以及火焰图的生成
前言本文参考:1.1 性能调优利器:火焰图SystemTap使用 SystemTap 绘制火焰图的主要流程如下:1.1 安装 SystemTap 以及 操作系统符号调试表1.2 根据自己所需绘制的火焰图类型以及进程类型选择合适的脚本1.3 生成内核模块1.4 运行 SystemTap 或者运行生成的内核模块统计数据1.5 将统计数据转换成火焰图使用SystemTap要部署SystemTap,请安装SystemTap软件包以及内核相应的-devel, -debuginfo和-d原创 2021-10-29 17:59:49 · 628 阅读 · 0 评论 -
如何优雅地记录日志操作日志?
前言本文是通过阅读美团的《如何优雅地记录操作日志?》后,整理总结为自己项目落地的方案由于美团的那篇文章没有给出完整的代码,没有采取文档中自定义函数的实现机制,直接依赖SPEL的bean引用系统日志和操作日志的区别系统日志:系统日志主要是为开发排查问题提供依据,一般打印在日志文件中;系统日志的可读性要求没那么高,日志中会包含代码的信息,比如在某个类的某一行打印了一个日志操作日志:主要是对某个对象进行新增操作或者修改操作后记录下这个新增或者修改,操作日志要求可读性比较强,因为它主要是给用户看的,原创 2021-09-25 16:15:41 · 874 阅读 · 0 评论 -
线上问题定位指南与排查
###写在文章前的话由于小组内有个系统最近因线上卡顿,临时重启服务器解决,需要找到根本原因并汇报给领导,开启下面的分析之旅。但本人这方面经验欠缺,故留点笔记###线上问题描述内存溢出并发事务导致插入查询被中断问题分析内存溢出添加JVM 参数: -XX:+HeapDumpOnOutOfMemoryError,memory 溢出时候能自动生成heap dump文件(以hprof结尾的文件)用mat工具分析heap dump文件2.1 导入hprof文件后,mat会找到内存泄露的可疑原创 2021-04-17 15:00:37 · 204 阅读 · 0 评论