自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《阿布的点点滴滴》:一分钟了解threadlocal的精髓(三言两语,让你醍醐灌顶)

哈喽

2022-03-31 11:44:10 380

原创 《阿布的点点滴滴》:”线程池玩出花来“之”急切的线程池“

正常线程池的处理流程大致:①核心线程数 -> ②线程数不小于核心线程数,入队列->③队列已满,使用最大线程数。如下图:但有些场景当线程数不小于核心线程数时,要先达到最大线程数,再任务入队列。该如何实现?看源码,当①offer失败,会使用最大线程数。所以可以在队列上做文章,当线程数不大于最大线程数时,即offer失败,此时的offer失败并不代表队列已满!哪有这样的队列?没有自己实现,(有个小秘密我不告诉别人,dubbo的org.apache.dubbo.common.thr.

2021-12-22 10:56:19 115

原创 《阿布的点点滴滴》:netty 启动流程

2021-09-06 16:54:20 98

原创 《阿布的点点滴滴》:netty内存泄漏检测

2021-09-06 16:51:07 124

原创 《阿布的点点滴滴》:nginx

一,动静分离http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name ...

2020-04-12 21:03:57 89

原创 《阿布的点点滴滴》:为什么单个的tcp连接很难占满带宽?

tcp的吞吐量跟tcp滑动窗口大小,与网络延时有关。假设一个窗口大小为64K,网络延时为100ms吞吐量 = 64 * 1024 * 8 bit / 0.1s =5242880 bit/s = 0.625M/s所以,一个100M的专线,单个tcp连接最大也只能占0.625M。...

2020-03-30 20:04:44 960

原创 《阿布的点点滴滴》:mybatis 源码解析(一)

mybatis是互联网公司主流的Java持久层框架。以下篇幅,将基于mybatis如何解析一个dao接口?dao接口方法如何调用?如何操作数据库?数据处理返回?进行源码解析。version:3.5.3以上UML类图,是往mybatis容器中注册一个dao接口的核心流程。其对应的代码:Environment environment = new En...

2020-03-25 23:32:11 91

原创 《阿布的点点滴滴》:springMVC拦截器HandlerInterceptor源码解析

HandlerInterceptor是springMVC项目开发中常用的功能,它利用了aop的设计思想。市面上有很多关于其的使用方法,笔者就不再赘述,直接刚源码。protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServl...

2020-03-22 18:41:32 178

原创 《阿布的点点滴滴》:如何在程序运行期间,动态生成spring bean,并放入spring 容器中?

曾经在项目开发中,需要实现手动生成spring bean,并将bean交由spring容器中管理的功能,费尽脑汁无从下手。最近在看spring MVC源码时,偶然发现其有相应的解决办法,其最终通过DefaultListableBeanFactory来完成。在此小记一下解决问题的过程!以上是springMVC中,DispatcherServlet的diagram。其继承Framew...

2020-03-21 17:58:45 910

原创 《阿布的点点滴滴》:io多路复用器epoll--之Redis

redis实现了单线程处理高并发。其底层实现原理使用了linux kernel的epoll多路复用器!epoll是什么?epoll是linux kernel函数,是一些API。而伴随着kernel2.5.4的发布,Linux首次将操作系统的io事件的异常控制流暴露给了进程。也就是说,当发生网络io发生连接、读、写事件时,进程可以通过调用API来获取到这些事件,然后进行一系列的数据读写等操作。...

2020-03-16 16:16:38 261

原创 《阿布的点点滴滴》:dubbo spi机制源码分析

前言dubbo模拟java实现了自己的spi机制,同时进行了相应的扩展,给开发者提供了扩展点。理解dubbo的spi机制,对阅读dubbo的源码有很大的帮助!环境:dubbo : 2.6.2、JDK 1.8配置环境:XXX为实现类ExtensionLoaderExtensionLoader是dubbo实现spi的核心类!1.1getExtensionpu...

2020-03-14 20:09:51 138

原创 《阿布的点点滴滴》:如何使用springboot,整合自定义组件,完成可插拔的效果呢?

原理使用过springboot的小伙伴们,一定知道springboot整合了好多的功能,如dubbo、webMVC等,其声明了相应的注解类@EnableDubbo、@EnableWebMvc来作为此组件的开关。其实现原理也很简单,springboot模拟了Java的spi机制,实现了自己的spi机制,以达到组件之间的解耦效果。第三方只需要在组件资源的根目录下添加META-INF文...

2020-03-11 19:31:41 1781 3

原创 《阿布的点点滴滴》:偏向锁、轻量锁与重量锁,你真的了解吗?

偏向锁与轻量锁的历史由来在jdk1.6之前,锁是由c++提供的objectMonitor来维护。objectMonitor 帮我们封装了阻塞队列、同步队列,加锁,释放锁...的复杂流程,其底层调用操作系统的函数来实现线程同步,以及线程切换等操作。在一些并发不高,或者甚至没有并发的场景下,这些操作很浪费系统资源。所以,jvm对此进行了优化,偏向锁、轻量锁也随之诞生!偏向锁...

2020-03-10 14:51:06 939

原创 《阿布的点点滴滴》:spring容器不被gc的背后惊天秘密

1.spring容器会被gc吗?笔者认为,倘若在项目运行过程中,spring容器被垃圾回收,那整个项目将不可用。所以,spring容器是肯定不会被垃圾回收的!2,那如何保证不被gc呢?说到gc,就要了解什么是gc root。gc root 一共包含以下几类:System class:被bootstrap或者system类加载器加载的类,比如rt.jar里的java....

2020-03-08 13:27:12 1422

原创 《阿布的点点滴滴》:一条MySQL的查询、更新,都经历了什么?

通过一条简单的SQL语句,就能查到我们需要的数据,MySQL是如何实现的呢?对于更新语句,innodb存储引擎是如何保证数据一致性的呢?带着这俩个问题,让我们一起学习一起飞。 你可能是开发人员,或者是测试人员,或者是产品经理,每天都会熟练的打开MySQL客户端,连接到数据库,去运行SQL。 一条select语句在mqsql的执行流程:第一步就是通过M...

2019-02-19 21:56:38 325 1

空空如也

空空如也

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

TA关注的人

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