【非典型Coder】
混迹IT行业十来年,拧过螺丝做过架构,当过讲师,闲暇之余写写文章~
展开
-
数据库事务和分布式锁并发问题
锁内事务和事务内锁有什么区别?原创 2024-03-08 17:30:05 · 157 阅读 · 0 评论 -
J.U.C——CyclicBarrier 实现原理
1. 通过 generation 来实现循环使用,每一轮结束后,都会重置 generation;2. CyclicBarrier 底层和 CountDownLatch 一样是基于 AQS 实现的;3. CyclicBarrier 不需要代码手动移除(trip)屏障,线程数量达到(count==parties)自动触发。原创 2024-02-20 14:42:00 · 94 阅读 · 0 评论 -
J.U.C——CountDownLatch 的实现原理
1. 调用await 方法的线程处于 WATING 状态,虽然源码中说是 "block";2. 等待线程和任务线程通过核心方法 wait 和 countDown 来协调工作,完成特定场景需求。原创 2024-02-20 11:12:20 · 85 阅读 · 0 评论 -
Redis缓存穿透解决方案—布隆过滤器
概念Bloom Filter(以下简称 BF)是一个空间高效率的概率型数据结构,用来确定一个元素是否是集合中一员。空间高效是指数据存储使用了 bit 的方式,相对来说比较紧凑,空间利用率较高。概率型是指查询时返回两种结果:“一定不在”和 “可能在”。原理本质就是bit 数组,初始化每个 bit 都是 0,添加一个元素时,会使用 n 个 hash 函数计算出 n 个值,每个值都是一个 bit 的位置,最后在 bit 数组中,将对应位的值置为1,这样每个元素都对应 n 个 bit ...原创 2021-07-31 22:50:02 · 219 阅读 · 0 评论 -
内存屏障——缓存强一致性的编程接口
MESI 协议带来的问题,如何解决?答案就是本篇要介绍的内存屏障。原创 2021-12-08 10:12:20 · 166 阅读 · 0 评论 -
JMM 内存操作指令
上篇文章里提到了 read/load/store/write 等指令,这些指令原创 2021-12-16 09:29:36 · 363 阅读 · 0 评论 -
分布式一致性协议——Gossip
关于分布式一致性问题我已经在之前《分布式一致性协议——Raft》的谈到,还不清楚的朋友可以回头看一下。这篇文章将介绍另一种分布式一致性协议——Gossip。问题思考下,大规模集群时,如果还是采用 raft 协议,会不会有问题?根据上篇文章,我们知道 leader 会广播到 follower ,集群规模较大,势必会造成网络拥挤、网络超时等问题,无论从可用性还是性能角度考虑,都会存在问题。因为大规模集群需要考虑一下问题:1. 集群规模大,可靠性降低,即使出现部分网络问题,数据也应该能最终到达原创 2022-01-24 17:55:57 · 2758 阅读 · 0 评论 -
分布式一致性协议——Raft
面试大厂高薪职位,必问!!!原创 2022-01-21 16:13:45 · 1782 阅读 · 0 评论 -
一致性 hash
分布式系统中,多个节点间实现请求的负载均衡,如果部分实例由于一些特殊的原因宕机或者需要扩容,这个时候就涉及到部分请求重新分发的问题。为了最小化请求重新分发,引入了一致性 hash 算法。先看下传统的 hash 算法解决请求分发问题的过程。hashhash 算法大家应该很熟悉了,就是将不定长的数据经过计算后输出定长的结果。如果在分布式系统中使用 传统hash 方法来分发请求,server = hash(key)%n这会带来两个问题: 一旦服务器节点数 n 发...原创 2022-01-24 11:00:55 · 484 阅读 · 0 评论 -
分布式事务
分布式事务的解决方案是怎么演进的,XA、两阶段、三阶段提交是不是弄得很晕,这篇文章来一探究竟!!原创 2021-12-29 10:55:58 · 750 阅读 · 0 评论 -
分布式问题解决模式
什么是分布式系统?分布式系统会带来什么问题?如何解决?带着这些问题,我们来聊一聊。原创 2022-01-28 14:42:05 · 3601 阅读 · 0 评论 -
Reactor 和 Proactor 到底是什么玩意
网络编程中出了 IO 模型之外,另一个被经常提到的就是 Reactor 模型和 Proactor 模型, 其实这两个模型和 IO 模型有着重要的关系,看完本文你就知道了.如果你对 IO 模型还不清楚,请先移步下面的文章后再回头来看本文.《到底什么是IO》https://mp.weixin.qq.com/s/OkIajg8aDlkLtsE81NP5jQ在网络编程中,服务器设计的好坏直接影响到能支持的最大并发数,通常会考虑两种方式,一种是通过 线程的方式,另一种就是通过事件的方式.单线程网络通.原创 2022-03-03 16:34:44 · 636 阅读 · 0 评论 -
select、poll、epoll 区别在哪儿?
select 、poll、epoll 都能实现多路复用, 但是它们之间有什么区别呢?原创 2022-03-14 18:03:02 · 1235 阅读 · 0 评论 -
再谈 NIO
之前的文章已经提到了 IO 模型之一的 NIO, 今天打算从 “阻塞”字面 以及java 代码层面再深一步聊一聊 NIO.《到底什么是 IO》https://mp.weixin.qq.com/s/OkIajg8aDlkLtsE81NP5jQAll is blocking从严格意义上说,所有的请求都是阻塞的,原因是所有的请求发出去之后都会等待,只是等待时长多少而已,这点希望大家明白。阻塞与非阻塞实际上就是阻塞的时间长短不同。Blocking vs Non-Blocking两者不同之处..原创 2022-03-14 11:31:46 · 698 阅读 · 0 评论 -
到底什么是IO
IO 分为本地IO和网络IOIO 分类BIO/NIO/AIO原创 2022-02-18 11:08:24 · 6965 阅读 · 0 评论 -
从Springboot 看 Tomcat 启动
所以这里可以看出来,启动 server 就是启动 service ,启动 service 里又启动了 engine ,启动 engine 就是启动每个子容器,子容器再递归启动子容器的子容器。就这样engine 启动了 host , host 启动 context ,context 启动 wrapper,这些容器都有一个 startInternal 方法,用来做容器自身的准备以及启动子容器。搞懂每个 startInternal 方法里面做的事情,才能真正理解 tomcat 启动原理!原创 2023-12-07 17:28:58 · 1010 阅读 · 0 评论 -
Tomcat 源码之StandardWrapperValve
invoke 中,调用 filterChain#filter,所有的filter 走完,调用servlet#service 方法,整个调用过程的任何exception 都会被捕捉,最后由StandardHostValve重定向到 ApplicationDispatcher(implements RequestDispatcher)我们知道一个请求过来 tomcat 处理的核心的代码在。原创 2023-12-07 17:32:28 · 927 阅读 · 0 评论 -
Tomcat 整体架构与核心接口
Tomcat 源码博大精深,涉及的知识点、设计模式很多,读tomcat 源码,能大幅度提升内功原创 2023-12-07 17:22:34 · 402 阅读 · 0 评论