java后端工程师进修ing(研一版 || day40)

目录

今日总结

详细内容

java随征录

初始MQ

同步调用

异步调用

MQ

RabbitMQ的概念

消息队列的类型

SpringAMQP中的消息序列化和反序列化的实现方法

RabbitMQ消息确认机制--可靠抵达

科研随探录

八股随笔录

代码随想录


今日总结

  • java随征录------学习RabbitMQ的使用(完结)
  • 科研随探录------cv(学完kafka开始科研)
  • 八股随笔录------MySQL面试篇(4/7)
  • 代码随想录------二叉搜索树的最近公共祖先

详细内容

java随征录

初始MQ

消息队列,存放消息的队列,也就是时间驱动机构中的Broker,常见的mq如下

同步调用

优点:时效性较强,可以立即得到结果

缺点:

  • 耦合度高
  • 性能和吞吐能力下降
  • 有额外的资源消耗
  • 有级联失败(某部分故障引发的连锁反应)的问题
异步调用

类似于代理模式。

优点:

  • 耦合度低
  • 吞吐量提升
  • 故障隔离
  • 流量削峰

缺点:

  • 依赖于Broker的可靠性、安全性、吞吐能力
  • 架构复杂,业务没有明显的流程线,不好追踪管理

MQ

大多数应用,可以通过消息中间件来提升系统异步通信、扩展解耦能力。

当消息发送者发送消息后,将由消息代理接管,消息代理保证消息传递到指定的目的地。

消息队列主要有两种形式的目的地:1.队列,点对点消息通信 2.主题:发布/订阅消息通信

RabbitMQ的概念

Message(消息):消息头和消息体组成

publisher(消息的生产者):向交换器发布消息的客户端应用程序

Exchange(交换器):接受消息路由给服务器中的队列

登录:MQ的默认账号密码guest

消息队列的类型
  1. Direct Exchange(直接交换机,单播模式)
  2. Fanout Exchange(广播模式)
  3. Topic Exchange(部分广播,发布订阅模式)
SpringAMQP中的消息序列化和反序列化的实现方法

当发送的消息是对象类型的时候,mq对消息进行了序列化编码,需要对其进行反序列化编码,查看原来的内容

  • 利用MessageConverter实现的,默认是JDK的序列化
  • 注意发送方与接收方必须相同的MessageConverter

RabbitMQ消息确认机制--可靠抵达

为保证消息不丢失,可靠抵达,可以事务消息,但性能会急剧下降,于是引入以下机制

  1. 发送方的回调机制
  • publicsher confirmCallback 确认模式:发送方发送给broker的确认机制,在配置文件中进行配置即可 ,spring boot已经集成好了
  • publisher returnCallback 退回模式:exchange交换机发送到队列的确认机制,一旦未接受到,就会进行回调
  1. 接收方的ACK机制

consumer ack机制

科研随探录

内容马上回来..................

八股随笔录

  • Mysql中的索引是怎么实现的

mysql 的索引是一种用于提高数据库查询效率的数据结构。mysql InnoDB引擎采用了B+树作为索引的数据结构。

B+树的叶子结点才存放数据,飞叶子节点只存放索引。在查询过程中,B+树会自顶向下逐层进行查找。

代码随想录

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。"

例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]

示例 :

复制代码
输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
输出: 6 
解释: 节点 2 和节点 8 的最近公共祖先是 6。
java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */

class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if(root == null) 
        return null;
        if(root.val > p.val && root.val > q.val) {
            TreeNode left = lowestCommonAncestor(root.left,p,q);
            if(left != null) return left;
        }
        if(root.val < p.val && root.val < q.val) {
            TreeNode right = lowestCommonAncestor(root.right,p,q);
            if(right != null) return right;
        }
        return root;
    }
}
相关推荐
贫民窟的勇敢爷们4 小时前
SpringBoot整合AOP切面编程实战,实现日志统一记录+接口权限校验
java·spring boot·spring
jerryinwuhan4 小时前
基于各城市站点流量的复合功能比较
开发语言·php
浅念-4 小时前
递归解题指南:LeetCode经典题全解析
数据结构·算法·leetcode·职场和发展·排序算法·深度优先·递归
Kiling_07044 小时前
Java集合进阶:Set与Collections详解
算法·哈希算法
AC赳赳老秦4 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
迈巴赫车主4 小时前
Java基础:list、set、map一遍过
java·开发语言
智者知已应修善业5 小时前
【51单片机89C51及74LS273、74LS244组成】2022-5-28
c++·经验分享·笔记·算法·51单片机
·醉挽清风·5 小时前
学习笔记—MySQL—库表操作
笔记·学习·mysql
灵犀学长5 小时前
基于 Spring ThreadPoolTaskScheduler + CronTrigger 实现的动态定时任务调度系统
java·数据库·spring
洛水水5 小时前
【力扣100题】33.验证二叉搜索树
算法·leetcode·职场和发展