期中测试 来检验一下你的学习成果吧!
你好,我是丁威。
不知不觉,我们的专栏已经进行到一半了。我们这个专栏的前半部分理论知识比较多,学起来比较枯燥,能坚持到这里,我首先要为你打Call。这也说明你是真正的热爱技术,真心希望通过学习中间件技术突破瓶颈,在职场上过关斩将。俗话说,温故而知新,在开始后面的课程之前,我想通过提问的方式再跟你一起回顾一下前面的知识点。
请你试着回答下面这些问题,检验一下自己的学习成果。下节课,我会一一给出答案。预祝你取得好成绩!
- MyCat数据库中间件与ShardingJDBC在架构思想上有什么差异?
- 在订单中心有创建订单、查询订单两个微服务。其中,查询订单必须同时支持“按商家”和“按用户”两个维度。为了应对双十一这种大促场景,在数据存储和数据读写方面你会如何进行架构设计?
- 红黑树的左右旋转、染色其实是不需要死记硬背的。下面这棵二叉树,你会怎样操作让它符合红黑树的定义呢?
- JUC定时调度线程池底层的实现原理是什么?如果要管理上万个定时任务,需要怎么处理呢?
- 如何复用线程?如何优雅地停止一个线程?
- 多线程编程中,线程与线程之间有两种主要的关系:互斥与协作。你能结合自己的实际工作场景分别举例说明吗?
- 锁的底层数据结构是什么?
- 为什么Object.wait方法会释放占用的锁?如果锁没有被释放,会产生什么影响?
- 什么是NIO?为什么NIO能轻松支持上万个连接同时在线?
- 我们在使用NIO构建的服务端时,如果服务端处理压力较大,可以在应用层采用快速失败拒绝连接。但是除此之外,在网络层,你还有什么办法限制服务端的流量呢?
- 通过NIO通道向网络中写数据之前,需要注册写事件吗?那什么时候需要注册写事件呢?
- 一个网络请求在发送端、接受端通常需要经历哪些步骤,Netty又是采用什么线程模型使这些步骤合理高效运作的?
期待你在留言区留下自己的思考和答案,我们下节课见!
- Y a n g 👍(0) 💬(1)
1.Mycat服务端代理模式,高度中心化。ShardingJDBC客户端代理模式,去中心化, 2.数据异构+宽表 3. 4.计算执行时间戳确定优先级,存入PriorityQueue优先级队列(最小堆)。开定时任务拿第一个元素和当前时间比较,满足则投入线程池 5.while循环+阻塞队列,原子变量AtomicBoolean代替while(true)优雅退出线程 6.电商场景:下订单需要线程互斥争抢资源。获取订单信息需要分别获取用户信息和商品信息,这个时候可以多线程协同获取相关信息 7.阻塞队列和条件等待队列 8.为了节省CPU资源,使自己阻塞,让其他线程可以进入锁。不释放锁的话,等待条件将不会被满足,自己则会不被唤醒。 9.NIO是一种同步非阻塞IO模型,通过IO线程池和内置事件选择器机制来保持上万连接 10.限制RecvByteBuf的缓冲区大小,设置高低水位网络参数option(ChannelOption.WRITE_BUFFER_WATER_MARK, new WriteBufferWaterMark(1024 * 1024, 8 * 1024 * 1024)); 11.写入数据之前不用注册写事件,写缓存区没有数据那么注册写事件没有意义。Channel 向网络中写数据时,注册写事件。 12.客户端编码->客户端向通道写数据->网络传输->服务端通道读数据->服务端解码->服务端响应->服务端编码->服务端通道写数据->网络传输->客户端通道读数据->客户端解码。netty采用主从多 Reactor线程模型运作。
2022-07-27