自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 问答 (1)
  • 收藏
  • 关注

原创 java 启动进程的方式

java执行本地命令的相关内容

2022-10-29 16:56:06 2339

原创 arthas命令实现原理-MBean的使用

MBean,MXBean简介MBean是一个托管的java bean对象,MBean是一个托管Java对象,类似于JavaBeans组件,遵循JMX(Java Management Extensions,即Java管理扩展)规范中规定的设计模式。MBean可以表示任何需要管理的资源。MBeans 公开了一个管理接口,该接口由以下部分组成:一组可读或可写属性,或两者兼而有之 一组可调用的操作自我描述JMX 规范中定义了五种类型的MBean,本文主要描述standard MBeans以及MXBea

2021-07-17 16:31:12 1471

原创 arthas启动-服务端启动流程

从前面介绍的arthas启动-agent初始化一文中我们看到了AgentBootstrap#bind函数,该函数的实现就是使用反射创建一个ArthasBootstrap对象。传入关键信息Instrumentation,以及启动参数。 我们就关注下ArthasBootstrap的实现。启动参数中有http-port和telnet-port参数,我们基本可以猜到arthas启动过程中会根据启动参数启动一个http server和telnet server,通过客户端与arthas启动的服务端之间进行交互。在目

2021-07-03 17:50:45 1731 1

原创 arthas启动-attach深入理解

arthas启动-attach深入理解上篇文章我们描述了arthas attach的流程,最后遗留了三个问题,attach过程中获取VirtualMachineDescriptor,VirtualMachine,以及loadAgent过程中两个JVM进程之间如何进行交互的。我们就依次对这三个问题展开进行描述,最后在给出一下上篇文章中描述的两种情况的原因三个问题详解VirtualMachine.list的实现java层面我们可以进行debug, 跟踪下来我们会发现,获取VirtualMachi

2021-06-09 20:17:34 1814

原创 arthas启动-attach流程

arthas启动-attach流程上一篇文档写到arthas启动的两种方式, 无论通过执行java -jar arthas-boot.jar 或者执行./as.sh 最终的效果都是会执行java -jar arthas-core.jar的逻辑, 本文我们着重看看启动arthas-core的逻辑实现。 本文的理解需要对java agent技术有一定的了解,有需要的请自行google查询一下。大家应该都知道,启动java -jar xx.jar 不指定mainclass的时候取的是jar包中的META-

2021-05-31 20:59:41 1393

原创 arthas 启动流程

我一直坚信着一个概念,对于我们使用的,感兴趣的方向,技术,一定要尽可能做到知其然,知其所以然。这样我们才能把一个工具用好,用得对。而且在工具出现问题时也不会手足无措,本文就针对arthas启动做一个简单的介绍。以及一些常见的问题说明。启动流程启动方式通过执行java命令启动通过执行命令,java命令,如下:java -jar arthas-boot.jar执行java -jar的命令,自然时arthas-boot.jar的manifest文件中包含Main-Class的配置, 我们

2021-05-15 18:46:01 5752

原创 arthas系列-arthas介绍

目录arthas简介arthas的使用使用注意点常用命令后续规划arthas简介提到arthas就不得不提一下arthas的前身greys, 我最早研究查看的版本就是这个版本。在github的README中可以看到如下几句话: 线上系统为何经常出错? 数据库为何屡遭黑手? 业务调用为何频频失败? 连环异常堆栈案,究竟是哪次调用所为? 数百台服务器意外雪崩背后又隐藏着什么?是软件的扭曲还是硬件的沦丧? 当时看到上述的几句话让我对这个

2021-04-12 19:34:39 731

原创 tomcat如何处理文件上传的

上周同事有个需求,有个web页面支持升级的逻辑的,但升级包的大小比较大(接近2G)。 由此引申出来上传前需要判断磁盘是否足够的问题。此时就产生了如下几个问题tomcat如何处理文件上传的是否使用磁盘文件,猜测必然使用磁盘文件,不然文件大时内存不足的。那么磁盘文件是如何创建,如何删除,系统异常重启后是否会删除?文件上传协议协议基础查看rfc文档(http://www.faqs.org/rfcs/rfc1867.html),该文档描述了带文件的form表单提交的要求。该提案对HTML进行了两项更改

2020-12-06 17:53:15 1271

原创 记一次类加载问题

事件来源项目版本第一轮交付测试后测试同学反馈,用户编辑的功能出错,报异常。 该功能在当前版本中没有需求进行调整, 我抓紧去测试环境上看了下日志,发现日志中有如下内容:异常日志挺明显的,实体Bean的代理类强转为Proxy失败。心中大体上锁定了下范围,必然是类加载的问题,在java中是否一个两个类是否是同一个类,必要的前提是classloader需要是同一个,在之前的tomcat了解中,掌握大tomcat针对每个一个webapps目录下的项目会使用一个专门的classloader进行类加载。为了证实是否

2020-11-14 17:23:13 275 1

原创 JAVA 泛型之类型擦除

书写本文原因书写本文的原因,由于在项目中看到了类似如下逻辑的代码出现这样的逻辑原因,数据库使用的是postgresql, 对应字段为jsonb,字段中有对应key的value为另外一表的主键的列表。 此字段对应java的map类型(列表值较小时起始对应的是Integer类型)。大多数为了方便直接强转List<Long>。 起初以为强转会出问题,写了测试代码,发现此写法能正常...

2018-08-27 20:17:17 1510

原创 虚拟机类加载技术 ---类加载时机

JAVA 类从被加载到虚拟机内存开始到卸载出内存为止, 它的生命周期包括了以下几个步骤:加载,验证,准备,解析,初始化,使用,卸载。其中验证,准备和解析统称为链接过程。发生的顺序如下下图所示:       上图中,加载,验证,准备,初始化和卸载这几个步骤是确定的,类加载过程必须按照这个过程进行,然而解析阶段则不一定,它在目中情况下可以在初始化阶段之后再开始,这是为类支持java

2017-12-04 19:26:40 224

原创 第一节:TCP/IP概括

1: 分层:网络协议通常分为不同层次进行开发,每一层负责不同的通信功能.如TCP/IP协议簇是一组不同层次上的多个协议的组合.一般我们将它认为是一个四层协议的系统.即应用层,传输层,网络层,和链路层.链路层:也称为数据链路层,通常包括操作系统中的设备驱动和计算机对应的网络接口卡,他们一起处理与传输媒介的物理接口细节.网络层:也成为互联网层,处理分组在网络中的活动,例如分组选路.在TCP

2017-08-21 19:26:20 238

原创 Docker知识--安装

安装最好可以根据官方提供的文档来进行配置安装,参考 https://docs.docker.com/ 下的install目录具体过程:Centos  Docker的安装:1:首先需要确认内核的的版本: uname  -r 。内核版本不满足的话可以升级内核版本2:配置相应的yum源$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'[

2017-01-13 09:18:03 164

空空如也

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

TA关注的人

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