- 博客(15)
- 收藏
- 关注
原创 《阿布的点点滴滴》:”线程池玩出花来“之”急切的线程池“
正常线程池的处理流程大致:①核心线程数 -> ②线程数不小于核心线程数,入队列->③队列已满,使用最大线程数。如下图:但有些场景当线程数不小于核心线程数时,要先达到最大线程数,再任务入队列。该如何实现?看源码,当①offer失败,会使用最大线程数。所以可以在队列上做文章,当线程数不大于最大线程数时,即offer失败,此时的offer失败并不代表队列已满!哪有这样的队列?没有自己实现,(有个小秘密我不告诉别人,dubbo的org.apache.dubbo.common.thr.
2021-12-22 10:56:19
167
原创 《阿布的点点滴滴》: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
118
原创 《阿布的点点滴滴》:为什么单个的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
1081
原创 《阿布的点点滴滴》:mybatis 源码解析(一)
mybatis是互联网公司主流的Java持久层框架。以下篇幅,将基于mybatis如何解析一个dao接口?dao接口方法如何调用?如何操作数据库?数据处理返回?进行源码解析。version:3.5.3以上UML类图,是往mybatis容器中注册一个dao接口的核心流程。其对应的代码:Environment environment = new En...
2020-03-25 23:32:11
119
原创 《阿布的点点滴滴》:springMVC拦截器HandlerInterceptor源码解析
HandlerInterceptor是springMVC项目开发中常用的功能,它利用了aop的设计思想。市面上有很多关于其的使用方法,笔者就不再赘述,直接刚源码。protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServl...
2020-03-22 18:41:32
220
原创 《阿布的点点滴滴》:如何在程序运行期间,动态生成spring bean,并放入spring 容器中?
曾经在项目开发中,需要实现手动生成spring bean,并将bean交由spring容器中管理的功能,费尽脑汁无从下手。最近在看spring MVC源码时,偶然发现其有相应的解决办法,其最终通过DefaultListableBeanFactory来完成。在此小记一下解决问题的过程!以上是springMVC中,DispatcherServlet的diagram。其继承Framew...
2020-03-21 17:58:45
966
原创 《阿布的点点滴滴》: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
303
原创 《阿布的点点滴滴》: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
175
原创 《阿布的点点滴滴》:如何使用springboot,整合自定义组件,完成可插拔的效果呢?
原理使用过springboot的小伙伴们,一定知道springboot整合了好多的功能,如dubbo、webMVC等,其声明了相应的注解类@EnableDubbo、@EnableWebMvc来作为此组件的开关。其实现原理也很简单,springboot模拟了Java的spi机制,实现了自己的spi机制,以达到组件之间的解耦效果。第三方只需要在组件资源的根目录下添加META-INF文...
2020-03-11 19:31:41
1906
3
原创 《阿布的点点滴滴》:偏向锁、轻量锁与重量锁,你真的了解吗?
偏向锁与轻量锁的历史由来在jdk1.6之前,锁是由c++提供的objectMonitor来维护。objectMonitor 帮我们封装了阻塞队列、同步队列,加锁,释放锁...的复杂流程,其底层调用操作系统的函数来实现线程同步,以及线程切换等操作。在一些并发不高,或者甚至没有并发的场景下,这些操作很浪费系统资源。所以,jvm对此进行了优化,偏向锁、轻量锁也随之诞生!偏向锁...
2020-03-10 14:51:06
998
原创 《阿布的点点滴滴》: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
1543
原创 《阿布的点点滴滴》:一条MySQL的查询、更新,都经历了什么?
通过一条简单的SQL语句,就能查到我们需要的数据,MySQL是如何实现的呢?对于更新语句,innodb存储引擎是如何保证数据一致性的呢?带着这俩个问题,让我们一起学习一起飞。 你可能是开发人员,或者是测试人员,或者是产品经理,每天都会熟练的打开MySQL客户端,连接到数据库,去运行SQL。 一条select语句在mqsql的执行流程:第一步就是通过M...
2019-02-19 21:56:38
373
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人