- 博客(438)
- 资源 (11)
- 收藏
- 关注

原创 arthas 入门最佳实践
一、入门步骤1、安装https://arthas.gitee.io/install-detail.html上述命令会下载启动脚本文件 as.sh 到当前目录curl -L https://alibaba.github.io/arthas/install.sh | shoras.sh 启动curl -sk https://arthas.gitee.io/arthas-boot.jar -o ~/.arthas-boot.jar && echo "alias as.sh='ja.
2020-06-25 23:44:28
6884
6

原创 爱上Java诊断利器Arthas之Arthas idea plugin 的前世今生
一、背景爱上Java诊断利器Arthas之Arthas idea plugin 前世今生,arthas 对于小哥来说,已经不可分割了,在我的日常开发、线上问题排查中扮演了非常重要的角色。作为小开发的我,日常需要排查线上运营同学提的各种bug、各种线上问题诊断、日常运维、线上问题优化等等一堆的问题。在刚刚来公司前期是比较恐惧运维任务的,代码不熟悉、各种问题比较多…几乎崩溃的状态,运维的一周基本...
2020-03-29 21:48:08
7519
10
原创 浅谈spring 后端项目配置logback日志
Java boy 后端项目日志一般用 logback or Log4j & Log4j2,spring 默认集成logback,本文主要以logback 展开例子说明。对于日志系统有什么样的需求?1、本地环境需要打印Console日志。2、测试环境最好实时打印日志。3、生产环境打印日志不要阻塞系统(日志阻塞导致很多故障,特别是流量大的场景,小流量可以忽略)4、可以实时修改,有些日志不关注,需要隔离一下。5、分离日志…ERROR ALL not care…… 等等信息。
2024-09-23 22:11:20
1146
原创 通过mvn archetype 创建一个spring boot start 工程
巧用mvn archetype 构建一个 spring boot start 模板,非常快速创建一个start 工程
2024-05-11 23:28:20
1203
3
原创 巧用arthas 分析 java.lang.reflect.UndeclaredThrowableException 异常来源
通过对于异常的深入探究,跟踪了解到了实现原理, “工欲善其事,必先利其器"
2023-07-15 15:34:41
490
原创 skywalking plugin 开发初探 ONS plugin 实践
skywalking plugin 开发如此简单,有兴趣的了解看看针对阿里云ONS mq的实践
2022-04-16 22:25:18
3741
原创 mysql in 子查询无法使用索引全表扫描 慎用in
mysql 采坑 慎用in 子查询,mysql能用索引是依赖你给的条件能够确定一个具体的值或者一个范围值.
2022-03-21 19:23:59
5049
1
原创 git 迁移项目中某个目录到一个已经存在的项目
git 迁移项目中某个目录到一个已经存在的项目需求需求,一个多模块的项目要将其中的部分功能迁移到一个新的项目,带着提交记录一起迁移,新项目git 已经存在部分目录。核心需求就是想带着git 提交记录一起去。步骤1、克隆到自己本地git clone git@github.com:mybatis/spring-boot-starter.git目录list$ ls -l | grep 'mybatis'drwxr-xr-x 6 wangji staff 192 12 20 23:0
2021-12-20 23:26:28
1283
原创 一个入门级的利用线程池查询优化
1.背景一个简单的查询服务的优化,“并行”和“串行”,将一批查询到的任务进行for each的组装,组装数据会调用各种各样的服务(dubbo、redis、mysql)等等,这种情况下随意业务任务的增多、整体查询服务的时间线性增加,因此想着法子将“串行”的服务变为并行的,全部处理完成后将结果返回即可。任务信息 /** * 任务信息 */ @Data public static class TaskInfo { private Integer
2021-07-06 20:33:12
747
2
原创 maven deploy 400失败,二次上传maven source.jar包
1、问题mvn仓库关闭了redeploy, 经常会遇到一些400错误,其中一个原因是一次deploy动作会执行两次sources包的发布。原因是因为重复定义了maven-source-plugin插件,or 引入 maven-shade-plugin 导致source 执行了两次2、解决办法开发去掉自己代码里的maven-source-plugin插件,maven-source-plugin,此时如果自身的pom里也在定义一份source插件,且groupid或者artifactid不一样的情
2021-05-24 18:21:26
2042
原创 牛叉了-arthas 热更新 mybatis mapper xml
测试环境能够热更新class 能否热更新mapper xml? arthas 群有同学提了这样的一个需求,必须满足满足arthas-idea-plugin 2.8 版本 https://plugins.jetbrains.com/plugin/13581-arthas-idea1、基本思路1.1 流程图1.2 实现效果 echo `redis-cli -h '127.0.0.1' -p 6379 get arthasIdeaPluginRedefineCacheKey_e00b5a9e-d9
2021-05-10 23:29:57
4337
2
原创 如何判断这个方法的调用来自dubbo consumer
这个是比较好玩的一个问题? 如何判断呢?1、Thread.nameThread.currentThread().getName().startsWith("DubboServerHandler")2、org.apache.dubbo.rpc.RpcContext.getContext() org.apache.dubbo.common.URL url = org.apache.dubbo.rpc.RpcContext.getContext().getUrl();if (url !=nul
2021-05-10 23:23:11
763
2
原创 框架来优雅解决重试-spring retry
重试的意义To make processing more robust and less prone to failure, it sometimes helps to automatically retry a failed operation, in case it might succeed on a subsequent attempt. Errors that are susceptible to this kind of treatment are transient in nature. F
2021-04-04 22:51:15
857
1
原创 Java用正则表达式获取特征字符串
1、正则表达式正则表达式是一个非常高深的艺术、在编程过程中无论你写没有写过,时刻也使用过相关的工具 比如shell 中的一些常见的grep 、less 等等工具。推荐一个非常好用的教程工具。https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md2、背景很久之前,需要实现一个功能 从一个字符串中获取到 特征字符串,这里使用案号作为例子(2020)浙0106民督28号-1将上诉的案号信息 提取为如
2021-02-20 16:21:38
1914
原创 .net 客户端开发 “粗体验”
一、背景最近有个.net 的 sdk的开发功能 ,将之前java 开发的迁移进去…好久没有写 c# 这个玩意,大学也没有类似的经历,而且是mac 环境 开发起来不是很舒畅,快捷键不是很熟悉…开发工具下载开发工具: https://docs.microsoft.com/zh-cn/visualstudio/mac/installation?view=vsmac-2019包管理NuGet第一个功能就是要使用http 的客户端,如何加入进来的问题 :http 客户端: https://www.n
2020-11-25 20:42:30
518
1
原创 arthas 获取spring被代理的目标对象
背景记得一次问题排查,通过ognl 获取到 spring aop 代理过的cglib 代理对象的原始对象获取问题,spring的静态static spring context 进行调用获取被代理的目标对象的问题,记得当事是通过内部的一个工具 代理对象中被代理的目标对象 类似这个方法,通过静态的方法进行调用.挺方便的,但是这个方法比较麻烦,不是所有的工程都有这个方法,如何通过工具化让大家都能使用,这里使用 ognl 表达式进行复原整个过程,方便使用。更多使用参考 Idea Plugin,最近会把这个功能集成
2020-08-13 12:41:45
2709
原创 spring 事务背后的故事
一、spring 事务配置声明式事务有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于 @Transactional 注解的方式。1.1 xml 声明 事务1.1.1 单一的对于目标类进行代理<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
2020-07-09 23:47:28
883
原创 spring 事务采坑-xml注解 事务混用
为啥使用spring 事务会出现这么多坑?还是对于底层原理实现机制理解不够深刻导致。对于经常使用的东西,不仅仅要求能用,更多的还是需要知道其所以然。一、坑点分析1.1 this 调用 本类失效如果新启动一个事物 Propagation.REQUIRES_NEW 这样的标识,this的直接调用会由于没有走代理的逻辑失效.这一点的理解没有问题 AOP 的机制是实现事务的核心,分布式事务Seata 也是通过AOP去处理,不经过代理准导致事务失效。1.2 only public 方法事务有效这个不
2020-07-09 23:42:44
1997
原创 spring 注解 事务,声明事务混用--解决问题
Spring 事务 混用xml 事务和注解事务最好不要一起 坑太多了,一个aop中 存在两个 org.springframework.transaction.interceptor.TransactionInterceptor 而且各钟情况错中复杂,如果两个是 Propagation.PROPAGATION_REQUIRED,Propagation.REQUIRES_NEW 不同的顺序特别是异常产生的时候会造成不同的影响Propagation.PROPAGATION_REQUIRED -> Prop
2020-07-09 23:37:20
1378
原创 spring 注解 事务,声明事务共存 order 方案---有bug
一、背景spring 注解事务和声明事务共存下,出现一些奇怪的问题,声明事务不生效啦!本来对于业务异常不进行回滚,最终回滚啦,很是奇怪啊,调查了一下,进行了一些了解,最后才有这篇文章。参考: https://blog.youkuaiyun.com/feng27156/article/details/8740223二、配置1、修改之前的配置 <bean id="transactionManager" class="org.springframework.jdbc.dataso
2020-07-09 23:33:10
1137
原创 arthas 火焰图神器-async-profiler
一、async-profilerThis project is a low overhead sampling profiler for Java that does not suffer from Safepoint bias problem. It features HotSpot-specific APIs to collect stack traces and to track memory allocations. The profiler works with OpenJDK, Oracle
2020-06-23 23:17:17
10636
4
原创 用了这么多年的Spring 你还记得?
本文的阅读最好的方式结合代码一起看,在很久没有回顾的时候可能会忘记一些spring的扩展点,已经spring 到底怎么玩的?本文是作者了解spring 到工作的第四个年头 从实习开始2016年,这里做个总结,用了这么多,估计写着crud 忘了spring的奥秘了。一、yy一下Bean创建的过程首先得承认spring 这个太强大,一般的java开发者根本创造不出来这么强大的一个玩意,从扩展性和维护性(…不知道诞生多少年了,反正我一毕业就开始学习),程序员都是模仿动物,都是不断的在模仿中学习和进步,和小.
2020-06-22 23:34:17
2481
原创 几张图了解spring doGetBean
一、doGetBean 图例doGetBean 启程org.springframework.beans.factory.support.AbstractBeanFactory#doGetBean实例化前预处理org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#createBean(java.lang.String, org.springframework.beans.factory.support
2020-06-22 23:28:07
1811
3
原创 Dubbo泛化调用入门到精通
Dubbo 泛化调用、阿里的好舒服的泛化调用都是类似的功能。最近给同事排查一个dubbo-admin 控制台调用报错的问题的小研究,为此还给社区提了一个issue,具体可以查看链接 dubbo-admin 泛型参数测试 ClassNotFoundException 看了最新版本好像自动去掉了出现泛型<这样的信息通通干掉,不过没有发布release版本。 参考文档:使用泛化调用1、泛化调用1.1 概念泛化接口调用方式主要用于客户端没有 API 接口(泛化调用是指不需要依赖服务的二方包)及.
2020-06-03 00:07:30
7118
5
原创 看源码利器 --Translation 正则配置更好用
写个喜欢看源码的同学,这个分享是我的一个同事北京城分享给我的!感谢他哈哈,分享精神一直保持ing,这里介绍给大家,也是记录一下。1、有没有烦恼spring的英文注释因为注释中有html 格式的文档?全选翻译出来很那看的啊!十分的恶心,对于英文不咋地的翻译插件还是十分的由必要的!只选择命中的正则表达式的部分,去掉html格式的,这样看起来更加清爽。org.springframework.web.servlet.DispatcherServlet2、配置正则表达式\/\*\*|\/\/|\*\s.
2020-06-01 22:32:36
744
1
原创 Jdk默认线程池弱爆了 ?
看到好玩的、想了解的,记录一下一、ThreadExecutor 线程池1.1 ThreadExecutor 线程池执行逻辑从execute 方法的注释清晰得知,传统线程加入线程池执行过程分3步小于等于Coresize: 创建线程之行大于CoreSize 加入队列队列满且小于maxSize 有空闲线程使用空闲线程执行,没有的话,创建线程执行大于maxSize 拒绝策略执行public void execute(Runnable command) { if (comm.
2020-06-01 22:19:39
698
1
原创 Seata 分布式事务初体验
阿里技术(如何选择分布式事务解决方案?) https://mp.weixin.qq.com/s/2AL3uJ5BG2X3Y2Vxg0XqnQ## 起初看了这个分布式相关的信息,对于seata 有点想了解一下实现的精髓,之前公司内部也有大佬分享过seata 还不止一次的分享过 内部也实现了一个简单的分布式事务,借此机会了解一下这个鬼东西。 Seata (Simple Extensible Autonomous Transaction Architecture) AT (Automatic Transact.
2020-05-29 23:01:17
2251
2
原创 JdbcTemplate 香不香
简介似曾相识Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中,配置非常的简单。spring 的好处就是提供了很多非常方便的功能,这个和resttemplate 类似的,对于http请求的封装也是非常的好用,我也是经常的使用的。具体使用随便百度一下即可: https://www.cnblogs.c...
2020-04-21 19:52:35
630
原创 阿里开源那个牛X的问题排查工具Arthas,条件表达式+异步任务使用
问题只有特定的场景才会有bug ,如何排查bug?一天只出现一两次如何解决?使用场景条件表达式主要是用来过滤使用,比如某些场景只是在特定的参数才会出现,肯能会花费很多的时间去等待,这个时候可以使用条件表达式过滤 +异步任务使用须知在watch、trace、stack 等命令中都有条件表达式,不知道你是否用过哦!条件表达式的使用其实就是已知的信息进行逻辑运算(and or…等等),什...
2020-04-18 18:46:09
4510
8
原创 Enum Tools 减少枚举中重复的方法
背景最近修改项目的时候发现一些好东西,对于枚举的通用方法的处理,发现之前写的很多重复性的劳动,总体来说对于枚举的认识不够,对于这些特性的使用还不是非常的属性,编码这个东西,总在反思、学习中成长,这种小东西也是一种成长,别看微不足道,大规模推广使用起来,对于编码的统一度非常的友好的。实践几乎在系统的枚举中都是code、msg这样的枚举,非常的多!没有直接的利用Enum中的name,主要是语...
2020-03-09 22:50:10
1392
原创 Enum 枚举小记
枚举小记录随便写一个Day的枚举public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}编译一下javac Day.java反编译查看javap -private Day Compiled from "Da...
2020-03-09 22:47:11
492
原创 源码、问题排查技巧-Java Debug and Arthas
背景最近在做一个公司的项目,使用的是很老的webx框架,自己增加了一个接口死活通过路径访问无法获取到这个接口、总是返回404 not found,一脸蒙蔽了,但是是为什么?也去问了相关的同学,没有发现问题。本文就这个问题的排查经过进行简单的描述。使用工具IDEA Debugarthas idea plugin 、 arthas排查1、是不是代码没有发布上去?插件获取反编...
2020-03-01 14:08:01
1897
原创 Spring Boot 返回Content-Type解决方案
背景前端同学需要Content-Type 字段返回,根据文件的类型不同返回不同的类型;还有就是直接打开一个下载链接,对于Chrome这样的浏览器其实支持自适应预览的效果。https://tool.oschina.net/commons/ 这里的链接中有好多好多的Content-type的类型!拿到这个问题,之前的伙伴有写了几个if else 判断图片、文档等等,但是支持不是很全面、谁知道之后还...
2020-03-01 13:14:29
8778
1
原创 Java Agent 调试,Java agent debug
Java Agent 调试,agent debug一、简介Java agent 是在另外一个 Java 应用(“目标”应用)启动之前要执行的 Java 程序,这样 agent 就有机会修改目标应用或者应用所运行的环境。修改环境的时候做到对于项目中的代码没有入侵性,不需要修改老项目代码即可实现想要的能力,比如常见的skywoking,就是通过这样的方式实现的。比如这篇文章 通过修改字节码实现J...
2020-02-02 16:24:11
7877
原创 Java 远程debug
Java 远程debug一、remote debug何为远程debug呢?通常我们在开发过程中,都会将代码部署到服务中,这个时候QA 提出了一个bug,通过查看代码的逻辑发现问题十分的困难?一般情况下都是想着本地能不能复现一下,本地debug 调试一下;或者通过arthas 进行相关逻辑的诊断也是可以的。但是今天我们讲的是远程debug,意思就是直接调试linux 服务器上面的代码,在IDE...
2020-02-02 16:18:27
1787
3
原创 arthas idea plugin 插件,arthas 使用更加丝滑起来
一、背景目前Arthas 官方的工具还不够足够的简单,需要记住一些命令,特别是一些扩展性特别强的高级语法,比如ognl获取spring context 为所欲为,watch、trace 不够简单,需要构造一些命令工具的信息,因此只需要一个能够简单处理字符串信息的插件即可使用。当在处理线上问题的时候需要最快速、最便捷的命令,因此Idea arthas 插件还是有存在的意义和价值的。二、支...
2020-01-06 22:14:14
28404
21
原创 spring 之 ObjectPostProcessor
一、背景在学习spring security的时候,有了解过一下官方的文档,Post Processing Configured Objects 这个玩意,主要的意思。Spring Security 的 Java 配置不会公开其配置的每个对象的每个属性。这简化了大多数用户的配置。毕竟,如果每个属性都公开,用户可以使用标准 bean 配置。虽然有充分的理由不直接公开每个属性,但用户可能仍然需要...
2019-12-14 22:29:35
8179
原创 Spring Shell 源码分析
参考实例Java程序员的命令行工具spring-shell-源码解析-video一、起源1.1 原由为什么要使用spring shell,在公司中,发现同事使用scala 写了一个交互的命令行程序,其实就是scala自带的信,注册了函数,感觉使用起来挺方便的,为啥Java里面没有这样的使用东西!挺好奇的,我想使用一个接入简单方便,不要花费太多的时间,且我们要熟悉!最后发现spring...
2019-12-01 17:49:23
1051
5
minio windows.exe
2018-06-10
idea PlantUML插件以及PlantUML画图需要生成图片的软件Graphviz
2018-04-14
live template
2017-08-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人