自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 使用JMH做基准测试

使用JMH做基准测试快速入门添加依赖添加测试代码运行代码JMH API@BenchmarkMode@Warmup@Measurement@Threads@Fork@OutputTimeUnit@Benchmark@Param@Setup@TearDown@State参考资料JMH 的全称是 Java Microbenchmark Harness ,是一个 open JDK 中用来做性能测试的套件。快速入门添加依赖<dependency> <groupId>org.op

2021-09-12 14:03:57 221

原创 自定义Spring 的 AOP 注解

本篇文章主要介绍了如何实现一个自定义的 Spring AOP 注解。文章的第一部分介绍了什么是 AOP 以及它的优点,接下来会以一个例子开始,一步一步的实现了一个自定义的 AOP 注解,逐渐加深对 AOP 的理解。

2021-04-11 12:44:41 235

原创 java 异常选择: Checked Exception VS Unchecked Exception

Checked Exception设计的初衷是为了从异常情况恢复,Checked Exception 假使我们捕获了异常,然后需要恢复程序Unchecked Exception运行时异常,类似 NullPointerException、ArrayIndexOutOfBoundsException ,通常是编码可以避免的逻辑错误,不可恢复Checked Exception VS Unchecked Exception支持 Checked Exception编译器强制检查,Checked Exce

2020-11-29 15:39:08 214

原创 Linux常用命令-文件和目录相关命令

目录操作cdChange Directory 的缩写,用来切换目录的指令pwdPrint Working Directory 的缩写,显示目前所在的目录mkdirmake directory 的缩写,创建目录rmdirremove directory 的缩写,删除空的目录文件和目录管理ls列出目录下的内容cp复制文件或目录rm移除文件或目录mv移动文件或目录,或者重命名touch建立一个空的文件,也可以修订..

2020-06-27 12:19:56 148

原创 Skywalking之JVMService

2020-03-29 14:51:40 539

原创 反转链表

反转链表题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路:就地操作逐个断开原链表的每个节点将断开的节点连接到前一个节点最后一个非空节点即为头节点如图所示代码示例 ListNode reverseList(ListNode head) ...

2020-03-21 12:21:33 117

原创 skywalking agent 插件加载

skywalking agent 插件加载

2020-03-20 15:07:05 571

原创 TCP/IP 协议报文转发

TCP/IP 协议报文转发TCP/IP 协议简介TCP/IP协议允许计算机、智能手机和嵌入式设备之间通信,并且可以兼容来自不同计算机生产商的设备和各种不同的软件。TCP/IP协议是一个开放的系统,协议族定义和许多实现是公开的,他是构成全球网络的基础。TCP/IP层协议采用四层结构,分别是应用层,传输层,网络层和链路层。如下图所示:TCP/IP 协议数据包转发通过上图,我们可以看到,当我...

2019-09-02 03:13:00 2949

原创 一次压测时发现jedis连接池泄露的bug的经历

压测环境springboot版本为1.5.19,使用的spring data redis,其中jedis版本为2.9.1压测工具使用jmeter,200个并发线程持续5分钟现象测试反映jemeter报大量的http超时查看日志发现请求的响应时间随着时间的推移逐渐增大,应用重启之后报异常redis.clients.jedis.exceptions.JedisConnecti...

2019-08-26 01:48:07 3625 2

原创 AWK简单入门

AWK简单入门简介awk是一种编程语言,其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母 ,用于在linux/unix下对文本和数据进行处理。grep,sed,awk被称为linux中的‘‘三剑客’​ grep 更适合单纯的查找或匹配文本​ sed 更适合编辑匹配到的文本​ awk 更适合格式化文本,对文...

2019-08-04 19:11:02 98

原创 LRU算法

原理LRU(Least recently userd,最近最少使用),算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:新数据插入到链表尾部;每当缓存命中(即缓存数据被访问),则将数据移到链表尾部;当链表满的时候,将链表头部的数据丢弃。实现使用一个Map...

2019-07-29 08:47:42 78

原创 初识java线程池

初识java线程池为什么使用线程池在开发中,我们经常会用到线程,通过new Thread()我们可以很快的创建一个线程,执行我们的任务。使用线程池相对于直接new Thread()有以下几个好处:减少系统资源开销。线程是稀缺资源,频繁的创建会消耗系统资源,而使用线程池会将线程缓存起来,减少创建线程的开销,线程可以别重复利用提高了响应性。当请求到达时,工作线程通常已经存在,因此不会由于等待...

2019-07-14 14:22:28 131

原创 Micromter快速入门

简介Micrometer为当前比较流行的监控系统的客户端,提供了一个简单的门面,可以很方便的用它来监控你的基于JVM的应用。它的作用类似于日志系统中SLF4J!Micrometer记录的应用程序指标可以用于观察,警报和响应环境的当前/最近运行状态。官网:https://micrometer.io/springboot 2.0 的Spring Boot Actuator 监控应用使用的就是Mi...

2019-05-19 03:54:13 1009 1

原创 RocketMQ启动流程

启动流程BrokerStartUpBrokerControllerDefaultMessageStorNettyRemotingServeThreadPoolExecutor(pullMessageFileWatchServiceBrokerOuterAPIPullRequestclientHousekFilterServerManager1.createBrokerController2.i...

2019-05-06 08:20:25 2040

原创 Dubbo源码分析(二)dubbo SPI扩展点加载之扩展点自适应

上一篇介绍了dubbo SPI 扩展点的四大特性中的自动包装,接下来再介绍其他的特性。扩展点自适应还是先看官方文档http://dubbo.apache.org/zh-cn/docs/dev/SPI.html。可以看到ExtensionLoader 注入的依赖扩展点是一个 Adaptive 实例,直到扩展点方法执行时才决定调用是一个扩展点实现Dubbo 使用 URL 对象(包含了Key-...

2018-12-16 23:30:30 366

原创 Dubbo源码分析(一)dubbo SPI扩展点加载之扩展点自动包装

dubbo最核心的思想就是就是SPI服务发现,可以实现动态加载实现类。http://dubbo.apache.org/zh-cn/docs/dev/SPI.html 在dubbo的官方文档中用扩展点的介绍。我们可以看到,dubbo扩展点主要有四大特性扩展点自动包装。扩展点自动装配.扩展点自适应.扩展点自动激活接下来我会以Dubbo的Protocol 接口为例来说明一下dubbo的四大特...

2018-12-10 00:49:01 433

原创 Spring源码分析(二) 容器的基础BeanFactory

Spring简单来说,是一个bean的容器,在spring启动的时候根据配置自动生成java类的对象,并保存在Spring中。这个储存java对象的类就是Spring的BeanFactory,最常用的实现类是DefaultListableBeanFactoryDefaultListableBeanFactory类图AliasRegistry: 定义对alias的简单增删改查操作Simpl...

2018-11-04 18:01:06 122

原创 Spring源码分析(一) 结构组成

Spring源码主要的包为:bean:主要包含bean的定义,读取代码配置的bean,储存bean的工厂beanFactory,实例化bean,为bean注入属性的一些接口。具体为BeanDefinition,XmlBeanDefinitionReader,DefaultListableBeanFactory,BeanUtils,BeanWrapperImplcore:主要包含一些核心的工具...

2018-11-04 17:58:27 161

原创 java中关于class.getResource和classLoader.getResource,getSystemResource方法的区别

Class.getResource()方法的使用在使用java进行文件资源读取的时候,我们经常会用到下面一段代码 if (this.clazz != null) { return this.clazz.getResource(this.path); } else if (this.classLoader != null)...

2018-06-13 01:21:37 3742

空空如也

空空如也

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

TA关注的人

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