期中测试 | 来检验一下你的学习成果吧!

2022-07-13 00:00:00

你好,我是丁威。

不知不觉,我们的专栏已经进行到一半了。我们这个专栏的前半部分理论知识比较多,学起来比较枯燥,能坚持到这里,我首先要为你打Call。这也说明你是真正的热爱技术,真心希望通过学习中间件技术突破瓶颈,在职场上过关斩将。俗话说,温故而知新,在开始后面的课程之前,我想通过提问的方式再跟你一起回顾一下前面的知识点。

请你试着回答下面这些问题,检验一下自己的学习成果。下节课,我会一一给出答案。预祝你取得好成绩!

  1. MyCat数据库中间件与ShardingJDBC在架构思想上有什么差异?

  2. 在订单中心有创建订单、查询订单两个微服务。其中,查询订单必须同时支持“按商家”和“按用户”两个维度。为了应对双十一这种大促场景,在数据存储和数据读写方面你会如何进行架构设计?

  3. 红黑树的左右旋转、染色其实是不需要死记硬背的。下面这棵二叉树,你会怎样操作让它符合红黑树的定义呢?
    图片

  4. JUC定时调度线程池底层的实现原理是什么?如果要管理上万个定时任务,需要怎么处理呢?

  5. 如何复用线程?如何优雅地停止一个线程?

  6. 多线程编程中,线程与线程之间有两种主要的关系:互斥与协作。你能结合自己的实际工作场景分别举例说明吗?

  7. 锁的底层数据结构是什么?

  8. 为什么Object.wait方法会释放占用的锁?如果锁没有被释放,会产生什么影响?

  9. 什么是NIO?为什么NIO能轻松支持上万个连接同时在线?

  10. 我们在使用NIO构建的服务端时,如果服务端处理压力较大,可以在应用层采用快速失败拒绝连接。但是除此之外,在网络层,你还有什么办法限制服务端的流量呢?

  11. 通过NIO通道向网络中写数据之前,需要注册写事件吗?那什么时候需要注册写事件呢?

  12. 一个网络请求在发送端、接受端通常需要经历哪些步骤,Netty又是采用什么线程模型使这些步骤合理高效运作的?

期待你在留言区留下自己的思考和答案,我们下节课见!