Java
文章平均质量分 84
天堂2013
喜欢敲代码,这是病,可我不想治
展开
-
RocketMQ事务消息如何保证数据的最终一致性
前言在面过的几家大厂中,几乎每轮的面试官(没写错,几乎是每轮面试官)都问了同样一个问题:你们的系统是分布式的系统吗?答:是。面试官:那么你们分布式的系统是如何解决分布式事务这个问题的呢?也就是如何保证数据的一致性。答:我们的系统中通过 RocketMQ 的事务消息来保证数据的最终一致性。面试官:那你说说它是如何来保证数据的最终一致性的?答:分两部分来回答,第一部分先回答事务消息的实现流程,第二部分解释为什么它能保证数据的最终一致性。事务消息的实现流程[外链图片转存失败,源站可能有防盗链机原创 2021-03-06 15:48:43 · 4194 阅读 · 0 评论 -
面试题:Zookeeper实现分布式锁的原理
前言在面字节跳动时,遇到了这道面试题:如何用 Zookeeper 实现分布式锁?相信大部分面试都是说用 Redis 去实现分布式锁,用 Zookeeper 实现分布式锁相对而言遇到的较少,最近在整理之前的面经答案,因此特意写篇博客解释一下。实现一把分布式锁通常有很多方法,比较常见的有 redis 和 Zookeeper。相信大家对 redis 实现分布式锁已经非常了解,今天介绍的是如何通过 Zookeeper 去实现一把分布式锁。首先 Zookeeper 为什么能实现一把分布式锁呢?这是因为它有一个原创 2021-03-06 15:45:40 · 774 阅读 · 1 评论 -
金三银四跳槽季,美团、字节、阿里、腾讯面经
金三银四跳槽季,个人经历,大厂面经奉上——美团、字节、阿里、腾讯面经,祝各位老铁拿到心仪的offer原创 2021-02-24 00:14:15 · 1472 阅读 · 2 评论 -
用字节码解释try、catch、finally、i++、++i的执行结果
为什么finally代码块一定会被执行?原创 2020-07-13 20:04:01 · 608 阅读 · 1 评论 -
JVM系列之垃圾回收器(下篇),最前沿的垃圾回收技术——ZGC
目前为止,最牛逼的垃圾回收器原创 2020-07-13 20:02:23 · 326 阅读 · 0 评论 -
JVM系列之垃圾回收器(下篇)——Shenandoah垃圾回收器
为什么Shenandoah垃圾回收器的延时很低?原创 2020-07-13 20:01:13 · 564 阅读 · 0 评论 -
JVM系列之垃圾回收器(中篇)——G1的运行原理以及调优思路
G1垃圾回收器的回收原理原创 2020-07-13 19:59:53 · 983 阅读 · 0 评论 -
JVM系列之经典垃圾回收器(上篇)
垃圾回收器原创 2020-07-13 19:58:33 · 485 阅读 · 0 评论 -
JVM系列之垃圾收集算法
清除-标记算法、复制算法、清除-压缩算法原创 2020-06-17 18:24:30 · 219 阅读 · 0 评论 -
垃圾回收之标记算法
引用计数算法、可达性分析算法原创 2020-06-17 18:20:53 · 785 阅读 · 0 评论 -
一道看了答案都不知道为什么的面试题
intern()方法、字节码指令、JVM内存结构原创 2020-06-17 18:18:52 · 339 阅读 · 0 评论 -
优先级队列PriorityQueue源码分析
优先级队列PriorityQueue源码分析原创 2020-06-17 18:16:25 · 261 阅读 · 0 评论 -
backlog与TCP三次握手之间不得不说的事
JDK在创建套接字,可以为服务端配置backlog参数的值,在netty中我们也可以通过ChannelOption.SO_BACKLOG来设置。那么backlog参数到底有什么作用呢?它又是如何工作的呢?原创 2020-01-17 10:16:24 · 677 阅读 · 1 评论 -
Netty源码分析系列之writeAndFlush()下
write()只会将数据只是发送到了ChannelOutboundBuffer 缓冲区中,还没有被发送到操作系统的套接字中只有当调用了 flush()方法后,才会真正将数据发送到套接字中。那么 flush()方法的源码又是如何执行的呢?原创 2020-01-11 15:47:52 · 1371 阅读 · 0 评论 -
Netty源码分析系列之writeAndFlush()上
当我们的业务逻辑处理完成后,就需要给客户端响应消息,这就涉及到服务端如何通过 channel 将响应消息写出去的流程了,同时还会涉及到消息的编码过程,因为在 TCP 协议中,数据最终是通过字节流传输的,而我们通常在业务代码中是返回一个对象,因此需要进行编码。接下来本文将会重点分析这两个的过程的源码实现。原创 2020-01-07 21:36:11 · 1842 阅读 · 0 评论 -
Netty源码分析系列之常用解码器(下)——LengthFieldBasedFrameDecoder
在上一篇文章中分析了三个比较简单的解码器,今天接着分析最后一个常用的解码器:**LengthFieldBasedFrameDecoder**,这是一个基于长度字段的解码器。什么意思呢?就是在发送的数据中,使用一个字段来表示数据的长度,这样当接收方接收到数据后,先读出这个长度字段,读到了长度字段,那就知道了这次发送的数据有多长,这样就能解码出数据了。原创 2019-12-31 19:49:30 · 418 阅读 · 0 评论 -
Netty源码分析系列之常用解码器(上)
netty中几种常用的解码器,你知道它们的实现原理吗?一文带你搞懂解码器的原理原创 2019-12-30 23:47:05 · 294 阅读 · 0 评论 -
Netty源码分析系列之TCP粘包、半包问题以及Netty是如何解决的
什么是粘包、半包现象?UDP协议会存在这个问题吗?netty又是如何解决粘包、半包问题的呢?原创 2019-12-29 19:57:37 · 564 阅读 · 1 评论 -
Netty源码分析系列之新连接的接入
当 netty 的服务端启动以后,就可以开始接收客户端的连接了。那么在 netty 中,服务端是如何来进行新连接的创建的呢?原创 2019-12-27 10:45:40 · 243 阅读 · 0 评论 -
Netty源码分析系列之NioEventLoop的执行流程
NioEventLoop作为一个NIO事件轮询器,到底在循环处理什么呢?JDK中臭名昭著的空轮询BUG,在netty中又是如何避免的呢?原创 2019-12-23 02:09:37 · 409 阅读 · 0 评论 -
Netty源码分析系列之NioEventLoop的创建与启动
NioEventLoop的启动时机是什么时候?原创 2019-12-21 19:59:16 · 214 阅读 · 0 评论 -
Netty源码分析系列之服务端Channel的端口绑定
扫描下方二维码或者微信搜索公众号菜鸟飞呀飞,即可关注微信公众号,阅读更多Spring源码分析和Java并发编程文章。微信公众号问题本文内容是接着前两篇文章写的,有兴趣的朋友可以先去阅读下两篇文章: Netty 源码分析系列之服务端 Channel 初始化 和 Netty 源码分析系列之服务端 Channel 注册由于 Netty 是对 JDK 原生 NIO 的封装,对比 J...原创 2019-12-15 20:18:12 · 30417 阅读 · 0 评论 -
Netty源码分析系列之服务端Channel注册
Netty中服务端channel是如何注册到多路复用器上的?原创 2019-12-15 14:35:09 · 558 阅读 · 0 评论 -
阻塞队列LinkedBlockingQueue实现原理
阻塞队列时如何实现阻塞的?为什么它是线程安全的?原创 2019-12-13 10:13:55 · 3277 阅读 · 0 评论 -
Netty源码分析系列之服务端Channel初始化
Netty中服务端的Channel是如何初始化的原创 2019-12-06 07:58:48 · 300 阅读 · 0 评论 -
Netty源码分析系列之Reactor线程模型
什么是Reactor线程模型?Netty作为一款高性能的网络框架,其底层使用的网络IO模型是什么呢?原创 2019-12-02 10:47:53 · 379 阅读 · 0 评论 -
别再问我Runnable、Callable、Future、FutureTask有什么关联了
Runnable和Callable有什么区别?Future和FutureTask又有什么关联?原创 2019-11-30 14:13:33 · 482 阅读 · 0 评论 -
如何从BIO演进到NIO,再到Netty
如何从BIO演进到NIO,再到Netty原创 2019-11-25 10:19:12 · 417 阅读 · 0 评论 -
面试官:为什么《阿里巴巴Java开发手册》上要禁止使用Executors来创建线程池
面试官:为什么《阿里巴巴Java开发手册》上要禁止使用Executors来创建线程池原创 2019-11-22 21:28:15 · 2859 阅读 · 0 评论 -
面试官:来!聊聊线程池的实现原理以及使用时的问题
面试官:线程池的实现原理是什么?在使用过程中遇到过哪些问题?原创 2019-11-19 10:42:59 · 487 阅读 · 0 评论 -
Thread.join()的实现原理
Object对象的wait()和notify()和notifyAll()一定成对出现吗?如何解释Thread.join()方法原创 2019-11-15 14:16:21 · 412 阅读 · 1 评论 -
并发工具类CyclicBarrier的源码分析以及使用场景
并发工具类CyclicBarrier的实现原理是什么?它是使用AQS实现的吗?和CountDownLatch有什么区别原创 2019-11-14 22:35:42 · 187 阅读 · 0 评论 -
并发工具类CountDownLatch的源码分析以及使用场景
除了Thread.join()方法能控制线程的执行顺序外,你还知道哪些方法能控制线程的执行顺序?原创 2019-11-13 23:35:07 · 161 阅读 · 0 评论 -
Semaphore的源码分析以及使用场景
Java中的信号量是什么?在高并发的情况下,如何自己实现一个简单的限流器?原创 2019-11-13 23:31:52 · 194 阅读 · 1 评论 -
读写锁ReadWriteLock的实现原理
什么是读写锁 ReadWriteLock存在的意义是什么?读写锁适用于什么场景?什么是锁降级和锁升级?原创 2019-11-06 10:13:49 · 3523 阅读 · 1 评论 -
并发编程中条件变量Condition的源码分析
在并发领域中需要解决的两个问题:`互斥`与`同步`,互斥指的是同一时刻只允许一个线程访问共享资源,这一点AQS的同步队列已经帮助我们解决了。同步指的是线程间如何进行通信和协作,那么AQS又是如何来解决同步问题的呢?原创 2019-11-05 10:23:15 · 326 阅读 · 0 评论 -
公平锁与非公平锁的对比
非公平锁一定不公平吗?公平锁与非公平锁的性能谁更好?原创 2019-11-02 10:43:41 · 2790 阅读 · 2 评论 -
可重入锁(ReentrantLock)源码分析
什么是公平锁?什么是非公平锁?它们的实现原理是什么?原创 2019-11-01 10:27:13 · 622 阅读 · 0 评论 -
队列同步器(AQS)源码分析
通过AQS的源码来瞧瞧Doug Lea写的代码是多么牛逼原创 2019-10-28 11:04:54 · 242 阅读 · 0 评论 -
队列同步器(AQS)的设计原理
JUC包下的锁和工具类是如何实现的?为什么它和synchronized关键字实现的隐式锁有什么不同?队列同步器又是什么?公平锁和非公平锁又有什么却别?非公平锁真的不公平吗?一切的答案都可以在AbstractQueuedSynchronizer这个类中找到原创 2019-10-25 10:20:08 · 724 阅读 · 0 评论