一步一步写APM(四)--Jedis插件、线程内链的构造

一点修改和准备工作 在tomcat测试项目中添加jedis相关代码(需要本地开一个redis),代码省略 提取Enhancer公共部分 public abstract class PluginEnhancer { public abstract String getEnhanceClas

一步一步写APM(三)--拦截以及Interceptor重构

问题在前面的代码中,为了用最简单的代码理清逻辑以及实现功能,我们使用了很多的常量值,比如named("org.apache.catalina.core.StandardWrapperValve"),named("invoke");而且现在只能拦截某些类的某些方

一步一步写APM(二)--拦截Tomcat监控WebApp

知识准备,org.apache.catalina.core.StandardWrapperValve StandardWrapper代表的是一个Servlet,那么它也就是容器调用栈中的最终点.Http请求到达后进行的处理也不单单只是调用了Servlet的方法.它还经过了一层的过滤器.它对外服务与

一步一步写APM(一)--ByteBuddy初步应用及初步搭建

准备 前面我们已经通过相关知识知道一般APM项目都是通过javaagent来对原项目代码进行一些改造以实现调用链需要的相关操作-- 比如加入上下文,添加必要的调用监控数据。 我们的主要开发工具就是ByteBuddy 注意,本系列相关文章涉及的源码放在了github上,有些代码不会贴出,请查看源码。地

通过使用Byte Buddy便捷地创建Java Agent

现有的APM项目为了保证监控服务和被监控服务互相独立且对被监控服务有低侵入性甚至无侵入性,会采取javaagent的方法对原项目远吗进行一些“改造”以实现想要的功能--比如插入想要的数据,上下文操作。 Java agent是在另外一个Java应用(“目标”应用)加载class文件之前做拦截把字节码

线程池将守护线程转换成用户线程导致的tomcat shutdown失败

现象 上线过程中出现调用tomcat的shutdown.sh 卡住导致tomcat无法停止的情况。 执行了tomcat的shutdown脚本后,java进程仍然存在。其实无法停止不是tomcat问题,是应用有问题,否则可以跑一个空tomcat,保证shutdown百分之百生效。 先说一下tomcat

新版tomcat类加载机制改变导致的不同类加载器加载同一个类的实例赋值出错

出现问题 调用链部署过程中某个项目出现: Caused by: java.lang.IllegalArgumentException: Can not set static XXX field redis.clients.jedis.Jedis.delegate$5975b70 to XXX at

RPC服务追踪的原理与实践

在分布式服务化架构下,由于分布式服务间存在相互依赖,彼此协同来完成各类业务场景。下图是一个典型的业务场景,从前端发起一个请求,到最后的业务完成,需要经过很多环节,这些环节可能都是分布式服务的方式提供,部署在不同的服务器上进行。而在这种复杂的分布式服务场景下,为了定位问题、性能瓶颈查询、异常日志跟踪等

sonar-pmd 插件添加 P3C 支持

Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面

Nginx下载文件名进行重命名

首先,在上传文件的服务中为了保证上传的文件不会有文件名冲突的情况,一般会在服务器进行文件名重命名为乱码 但是下载的时候为了效率问题不会直接走tomcat而是走Nginx进行,那怎么让下载的时候拿到原始文件名呢? location ~* .*\.(rar|zip|doc|docx|ppt|pptx|x

Spring中的applicationContext与SpringMVC的xxx-servlet的区别

一直搞不明白两者的区别。 如果使用了SpringMVC,事实上,bean的配置完全可以在xxx-servlet.xml中进行配置。为什么需要applicationContext.xml?一定必须? 一、 因为直接使用了SpringMVC,所以之前一直不明白xxx-servlet.xml和applic

nginx使用proxy_pass反向代理时,cookie丢失的问题

场景: 公司的某个项目是tomcat的Java项目,在本地部署已经没有问题,部署到线上通过内网IP+端口访问没有问题。 接下来要做的就是映射成官网的一个二级域名,映射后测试发现怎么都登不上去,登录页面反复刷新就是不进去。 F12发现已经过了用户校验接口,然后发现浏览器Cookie为空,测试本地项目C

SpringMVC上传文件的三种方式

直接上代码吧,大伙一看便知 这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/commonsmultipartresolver.java.html 前台: <%@ page langu

context:component-scan 分开扫描的相关

背景:最近在搭建新工程的时候发现有些Spring的配置不是很了解,比如Spring 配置里面明明配置了component-scan,为啥Spring MVC配置文件还需要配置一下,这样岂不是多此一举?由于以前基本是在现有的工程上直接开发或者别的工程的配置文件直接拷贝过来,所以也没太关注这个问题。 于

NIO的原理类比

假设: 你是一个餐馆的老板 一、BIO: 1、餐馆开始营业了(Server启动) 2、你跑到餐馆门口等着。。。(serverSocket.accept()) 3、一直等一直等一直等 4、终于来了一个客人(客户端连接上了)

Java NIO原理图文分析及代码实现

转自:http://weixiaolu.iteye.com/blog/1479656 前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以参考

BIO 与 NIO 之 Socket

简单的客户端给服务端发送数据: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.n

集合之ConcurrentHashMap的实现原理

概述 我们在之前的博文中了解到关于 HashMap 和 Hashtable 这两种集合。其中 HashMap 是非线程安全的,当我们只有一个线程在使用 HashMap 的时候,自然不会有问题,但如果涉及到多个线程,并且有读有写的过程中,HashMap 就不能满足我们的需要了(fail-fast)。在

集合之HashMap的实现原理

HashMap 概述 HashMap 是基于哈希表的 Map 接口的非同步实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能

集合之开篇

集合是程序员经常使用的一种东西,对于我们如此经常使用的东西我们应该了解熟悉一些常用的集合,而且在一些情况下,比如业务需求我们要使用合适的集合来存取数据,或者一些情况下我们考虑到性能需要使用的合适的数据结构来保证存或者查效率。这些情况都是我们会在工作中遇到的。 常用的集合类型:Lis
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×