自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT三明治的专栏

java全栈干货

  • 博客(80)
  • 资源 (2)
  • 收藏
  • 关注

原创 nodejs换源管理工具nrm

摘要:针对Node.js国外源访问超时问题,推荐使用nrm工具快速切换国内镜像源。通过npm全局安装nrm后,可查看所有可用源并测试响应速度,最后用"nrm use"命令切换最优源(如淘宝源仅189ms)。该工具支持腾讯、华为等多个国内镜像,有效解决依赖安装慢的问题。

2025-10-02 23:07:08 323

原创 nodejs版本管理工具nvm

本文介绍了nodejs版本管理工具nvm的安装与使用。首先说明Windows下通过GitHub或国内仓库下载安装nvm的步骤。然后详细列出nvm常用命令:包括查看安装路径、版本号,安装/卸载指定Node.js版本,查看已安装版本列表,切换版本并验证,以及设置默认版本等操作。通过nvm可以方便地管理多个Node.js版本,适用于不同项目需求。

2025-10-02 08:54:50 168

原创 手写链路追踪-日志追踪性能分析

本文是对《手写链路追踪》系列的延续,主要探讨全链路用户信息可视化对API性能的影响。利用@ControllerAdvice实现响应耗时统计。文章详细介绍了@ControllerAdvice的作用,包括全局异常处理、数据绑定等核心功能,展示了其在Spring项目中的实用性。通过实践验证,为开发者提供了性能优化和全局处理的解决方案。

2025-09-21 23:30:16 547 1

原创 手写链路追踪优化-全局API性能监控

本文主要在拦截器完成了全局API性能监控

2025-09-18 00:56:41 587

原创 手写链路追踪优化-自定义用户信息异步追踪

本文介绍了《手写链路追踪》系列文章的优化进展,重点解决用户信息全链路追踪在异步线程中失效的问题。

2025-09-15 23:17:26 668

原创 手写链路追踪优化-自定义用户信息追踪

本文介绍了如何通过拦截器实现链路追踪的定制化信息收集。提供了完整的MDCInterceptor实现代码,包括获取用户ID、用户名和客户端IP地址。该方案能有效追踪业务请求信息,同时避免内存泄漏。

2025-09-10 09:09:29 578

原创 手写链路追踪优化-MDC改造

本文介绍了如何利用MDC优化链路追踪系统,在保留线程名信息的同时加入trace id实现全链路追踪。MDC(映射调试上下文)作为日志框架提供的线程本地存储功能,可以自动将诊断信息输出到日志中。文章对比了MDC与ThreadLocal的特性,展示了MDC在多维度追踪中的应用,并提供了具体的实现方案:1)创建MDC工具类管理trace id;2)改造ThreadLocalContext清理机制;3)优化Filter实现。这种方案既保留了线程名的诊断价值,又通过trace id实现了跨服务的请求追踪。

2025-09-01 09:32:54 791

原创 手写链路追踪优化-多线程追踪

摘要 本文探讨了链路追踪在多线程环境下的实现问题,通过添加异步配置和测试代码验证现有方案的局限性。作者在原有链路追踪系统基础上新增了异步线程池配置、异步/同步登录接口实现以及测试脚本。测试结果表明当前方案在多线程场景下存在追踪失效的问题,为后续优化多线程链路追踪功能奠定了基础。文章提供了完整的代码示例,包括异步配置类、服务接口实现和测试脚本,便于读者理解问题并复现验证过程。

2025-08-31 10:22:59 887

原创 手写链路追踪优化-自动全局追踪代替局部手动追踪

本文介绍了如何将日志追踪功能从API层面优化到Filter层面,实现全局统一处理。通过对比Filter和AOP的特性,选择使用Filter来拦截所有HTTP请求,自动处理trace id的生成和传递。核心实现包括:创建LogFilter拦截请求头获取/生成trace id并设置到线程名;通过FilterRegistrationBean注册过滤器;简化API代码去除冗余逻辑。这种方法避免了重复代码,使业务代码更专注,同时保持了日志追踪的完整性和一致性。

2025-08-30 16:41:56 829

原创 手写链路追踪

本文介绍了链路追踪的概念及其在分布式系统中的重要性。链路追踪通过记录请求的完整生命周期,帮助快速定位问题、优化性能和分析安全风险。文章展示了如何通过Spring Cloud Sleuth或自定义代码实现链路追踪,并提供了一个基于日志追踪的API接口示例,包括生成trace ID和修改线程名以便追踪日志。该实现可帮助开发人员更好地理解系统调用流程,提高问题排查效率。

2025-08-29 23:29:04 692

原创 springboot优雅shutdown时异步线程安全优化

因为前两篇文章介绍的graceful shutdown并不是最优解。从架构师的角度考虑的话,写代码尽量满足多数情况可用,易用,最好还是全局有效的,让其他程序员专注于写业务代码。所以我重新写了一篇

2024-06-16 19:27:14 1742 1

原创 springboot优雅shutdown时如何保障异步线程的安全

我前面写了一篇springboot优雅shutdown的文章,看起来一切很美好。 https://blog.youkuaiyun.com/chenshm/article/details/139640775那是因为没有进行多线程测试。如果一个请求中包括阻塞线程(主线程)和非阻塞线程(异步线程),会是什么效果?接下来我们就测试一番

2024-06-15 14:27:38 1115

原创 震惊!好多人做spring boot release的时候并不是线程安全的

spring boot默认的shutdown方式并不是线程安全的。本文会为你一下验证,并给出解决方案

2024-06-13 08:27:14 472 2

原创 NAT网关在阿里云的应用

NAT网关(Network Address Translation Gateway)是一种网络地址转换服务,提供NAT代理(SNAT和DNAT)能力。NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。

2023-10-16 03:58:02 1582

原创 Elasticsearch启用https访问

Elasticsearch启动https

2022-04-25 05:10:04 2944

原创 Elasticsearch创建安全账户

Elasticsearch创建安全账户

2022-04-25 03:01:07 2006

原创 Centos修改时区(timezone)

Centos修改时区(timezone)

2022-04-24 20:21:12 3959

原创 为elasticseach配置ES_JAVA_HOME

为elasticseach配置ES_JAVA_HOME

2022-04-23 08:18:52 4667

原创 Centos 7安装java 17

常用的java安装方法

2022-04-23 07:50:07 9459

原创 Linux alias创建快捷访问地址

有时候我们有好多地址需要访问,不想全路径去切换,那我们就需要一些快捷命令跳到目标地址, alias可以帮到你

2022-04-23 06:53:15 2648

原创 linux x86_64和linux aarch64如何选择

我们选择linux安装包的时候经常有两种选择,一种是x86_64,一种是aarch64版本,如下那么x86_64和aarch64有什么区别呢?以下这个文章给出了很详细的解答https://www.jianshu.com/p/2753c45af9bf服务器一般都是x86_64.也可以通过以下命令确定[sandwich@centos-elk ~]$ archx86_64[sandwich@centos-elk ~]$ uname -aLinux centos-elk 3.10.0-1160.

2022-04-23 05:34:12 29673

原创 Centos7开放端口

CentOs 7快速开放端口

2022-04-19 21:05:48 2373

原创 max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

elasticsearch启动报错,受限于max open files数量

2022-04-19 07:44:53 5734

原创 动态追踪技术底层分析(字节码插桩)

动态追踪技术是可以不用重启线上java项目来进行问题排查的技术。比如Arthas就属于一种动态追踪工具,它提供的monitor, trace, watch命令就是用动态追踪技术实现的。 Arthas工具的基础,就是Java Agent技术,可以利用他来构建一个附加的代理程序,用来协助检测性能,还可以替换一些现有的功能,甚至jdk的类也能修改,就像JVM级别的AOP功能当我们研究技术到一定深度的时候我们就不能满足于使用了,我会思考它是怎么实现的,我们在工作中能不能开发出类似的辅助工具来帮助自己和同事呢?

2022-03-24 09:42:10 1808

原创 Arthas使用

1.Arthas是什么Arthas是Alibaba开源的Java诊断工具他主要解决以下问题1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?2.我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?3.遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?4.线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!5.是否有一个全局视角来查看系统的运行状况?6.有什么办法可以监控到JVM的实时运行状态?7.怎么快速定

2022-03-02 07:54:10 1775

原创 JDK的武器库

JDK为我们提供了不少的工具,如下图所示![](https://upload-images.jianshu.io/upload_images/17663286-b8619b341a151722.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)这些可执行文件都是不错的工具,掌握他们就是掌握JVM分析的武器库。 在windows平台下,他们是exe文件,在其他平台,文件格式会有所不同。 在linux中,一般默认会自带OpenJdk,一般情

2022-01-29 09:16:51 3159

原创 夜战II-程序猿的骚文

记录当年跟同学合租的日子

2022-01-23 19:57:16 282

原创 剖析Stream的性能

Stream随着java 8的出现开始被广泛使用,但是在使用前,请先熟悉它,请不要滥用它。

2022-01-22 15:31:33 2132 1

原创 虚拟机是如何实现泛型的

泛型程序设计(generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样

2022-01-18 00:17:07 780

原创 Lambda表达式

1.Lambda的字节码我们先来看看一个Runnable的代码段接着我把它改造成Lambda表达式,再看一下它的字节码由此可见它的字节码是invokedynamic。invokedynamic这个字节码是比较复杂。和反射类似,它用于一些动态的调用场景,但它和反射有着本质的不同,效率也比反射要高得多。用以下命令反汇编D:\git\test\target\classes\sandwich\test7> javap -p -v .\LambdaTest.class可以得到以一串比较奇怪

2022-01-10 09:13:18 604

原创 JVM方法调用

代码的执行其实本质上是方法的执行,站在JVM的角度归根到底还是字节码的执行。main函数是JVM指令执行的起点,JVM会创建main线程来执行main函数,以触发JVM一系列指令的执行,真正地把JVM跑起来。这个过程就是方法调用的过程。在一些重型框架中,我们有时候看不到main在哪里,那是因为被框架封装了,但是在各种微服务中,我们都能轻松找到main方法。接下来,我们深入了解方法在JVM中的调用。1.方法调用的字节码指令invokestatic 用来调用静态方法;invokespec

2022-01-08 10:21:13 1007

原创 夜战(黄花岗合租日记)

夜战,黄花岗合租日记

2021-12-04 08:11:46 394

原创 Centos 搜索文件路径

我们试试确认sudoers位置普通用户用find查找很难找,因为有很多需要root权限才能看的文件都会deny, 干扰搜索效果切换会root再查[sandwich@192 ~]$ suPassword: [root@192 sandwich]# find / -name sudoersfind: ‘/run/user/1000/gvfs’: Permission denied/etc/sudoers/usr/share/doc/sudo-1.8.23/examples/sudoers可

2021-11-08 06:45:09 1913

原创 centos7 ens33无ip地址查错

1.网络不正常原因修改网络配置后发现不能上网了,执行ifconfig看到ens33已经没有IP地址,如下[sandwich@centos-elk ~]$ ifconfigdocker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:fb:27:2d:97 txqu

2021-11-03 07:18:36 1120

原创 Docker部署ElasticSearch(Centos 7)

1.搜索ElasticSearch镜像[sandwich@192 ~]$ docker search elasticsearchNAME DESCRIPTION STARS OFFICIAL AUTOMATEDelasticsearch Elasticsearch is a po

2021-11-01 05:21:24 1629

原创 为Docker配置国内镜像源(centos)

这里配置为阿里的镜像。访问阿里云官网 https://www.aliyun.com/ 登陆账号,进入管理控制台 --> 产品与服务 --> 弹性计算 --> 容器镜像服务 --> 镜像加速器,复制自己的专属加速器地址sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "regist

2021-11-01 02:04:23 639

原创 Centos7 安装docker以及新系统可能会出现的问题

这个时候centos官方已经主推centos8了,但是8的镜像我下载完已经有8.6G了,相对于7的4G多的空间,再加上企业目前生产主流用的还是7,所以我在虚拟机还是继续玩7。Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。我这里用社区版测试1.查看centos内核版本(docker要求centos内核版本高于3.10)[sandwich@192 ~]$ uname -r3.10.0-957.el7.x86_642.使用root权限更新yum, 确保yum是

2021-11-01 01:24:11 473

原创 xxx is not in the sudoers file.This incident will be reported.的解决方法

新装的虚拟机用户没有sudo权限会弹出以下警告,无法用root权限去更新yum执行sudo yum -y update的时候[sandwich@192 ~]$ sudo yum -y updateWe trust you have received the usual lecture from the local SystemAdministrator. It usually boils down to these three things: #1) Respect the privac

2021-10-31 22:36:28 411

原创 Windows如何安装linux子系统

很多用windows的开发人员其实非常羡慕Mac用户可以在Mac上直接使用linux命令安装软件和操作计算机的,现在windows 10以上的系统也支持安装一个linux子系统,方便个人测试使用,让你不再需要安装虚拟机也能做linux的测试。下面我们来装Linux子系统(微软把它称作Windows Sub Linux)玩玩吧.我本机是window 11预览版一、安装步骤1.在系统设置搜索“启动或关闭Windows功能”2.把“适用于Linux的Windows子系统”打开确定后它会自动下载相关

2021-10-26 23:05:48 1293

原创 mysql windows版忘记root密码如何修改

最近在测试一下mysql的sys库发现需要root权限,但是我平时都是用root创建出来的来宾用户访问,root密码早忘记了。这下要重新找回root密码了。好久没有操作过了,记录一下被我优化过的百度搜到的步骤。1.用管理员权限打开cmd执行net stop mysql停止应用2.进入mysql的bin目录执行D:\Software\mysql-5.7.23-winx64\bin>mysqld --skip-grant-tables3.免密登陆MySQLD:\Software\mysql-

2021-09-28 09:34:35 184

通过串口和51单片机控制舵机转动(有4种转动方式)

用51单片机控制舵机,周期为20ms,我的程序尽量写得简单易懂了,可以通过串口发送1、2、3、4分别控制舵机的不同工作状态。1右转,2左转,3回到初始位置,4自由转动:不断地左转和右转

2010-08-30

51单片机控制舵机(非常简单易懂的程序,通过按键控制舵机左右转)

通过按键控制舵机的左转和右转,舵机工作周期为20ms.本程序非常简单易懂,希望可以帮到有需要的人。

2010-08-30

空空如也

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

TA关注的人

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