学习杂谈1

news2024/12/28 17:46:48

不知道写些什么就想着把这段时间网上看到的一些面试题写下来,供各个找工作的人参考

简述一下RabbitMQ的工作模式

  • simple模式(即最简单的收发模式)

    • 消息产生消息,将消息放入队列
    • 消息的消费者(consumer)监听:消息队列,如果队列中有消息,就消费掉。消息被拿走后,自动从队列中删除。
    • (当然这个存在隐患:消息可能没有被消费者正确处理,可能因为程序的报错,或者是网路的不稳定,造成消息的丢失,这里就可以设置成手动的ack,但如果设置成手动的ACK,处理完后要及时发送ACK消息给队列,否则会造成内存溢出)
  • wok工作模式(资源的竞争)

    • 消息产生者将消息放入队列,消费者可以有多个。
    • 消费者A和消费者B同时监听同一个队列,当消费时两位鱼皮共同争抢当前的消息队列内容,谁先拿到谁负责消费
    • (隐患:高并发情况下,默认会产生某一个消息被多个消费者共同使用,可以设置一个开关synchronize保证一条消息只能被一个消费者使用)
  • publish/subscribe发布订阅(共享资源)

    • 每个消费者监听自己的队列
    • 生产者将消息发给broker,由交换机将消息转发到绑定此比交换机的每个队列,每个绑定交换机的队列都将接收到消息
    • 一般也叫广播模式
  • routing路由模式

    • 消费生产者将消息发送给交换机按照路由判断,路由是字符串当前产生的消息携带的路由字符(对象的方法),交换机根据路由的key,只能匹配上路由key对应的消息队列。这样对应的消费者才能消费消息。
    • 根据业务功能定义路由字符串。
    • 从系统的代码逻辑中获取对应的功能字符串,将消息任务扔到对应的队列中。
  • 主题模式

    • 主题模式跟路由模式类似,只不过路由模式是指定固定的路由key,而主题模式是可以模糊匹配路由键,类似于SQL中=和like的关系。
    • 举例:如果此时有两个队列, Q1绑定.orange.,Q2绑定两个路由key,分别是.rabbit以及lazy.#
    • 那生产者发送.orange.1的话只有Q1可以收到,发送.rabbit.1的的话只有Q2可以收到,发送.orange.rabbit的话,Q1和Q2都可以收到
  • rpc模式

    • rpc模式是一种远程调用的模式,需要http请求,因此速度比系统内部调用慢
    • 生产者开始生产消息后,创建了匿名的、独一无二的回调队列
    • 生产者发送请求时,包含两个属性:reply_to,即回调队列;correlation_id,即用于标记请求的属性
    • 请求被发送到rpc_queue队列
    • 消费者等待请求,收到时,其处理生产者发送的特定的reply_to的消息
    • 生产者等待消息的ack回复,当收到回复后,其校验correlation_id,如果正确则回到应用程序中

下面是网上找的各个工作模式的照片,可以对应看一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

守护线程和用户线程有什么区别

  • 用户线程:运行在前台,执行具体的任务,如程序的主线程、连接网络的子线程等都是用户线程
  • 守护线程:运行在后台,为其他前台线程服务。也可以说守护线程是JVM中非守护线程的佣人,一旦所有用户线程都结束运行,守护线程会随JVM一起结束工作:
  • main函数所在的线程就是一个用户线程
    • main函数启动的同时在JVM内部同时还启动了好多守护线程,比如垃圾回收线程。比较明显的区别之一是用户线程结束,JVM退出,不管这个时候有没有守护线程运行。而守护线程不会影响JVM的退出。

什么是上下文切换

  • 多线程编程中一般线程的个数都大于CPU核心的个数,而一个CPU核心在任意时刻只能被一个线程使用,为了让这些线程都能得到有效执行,CPU采取的策略是为每个线程分配时间片轮询的形式。当一个线程的时间片用完的时候就会重新处于就绪状态让给其他线程使用,这个过程就属于一次上下文切换。
  • 用大白话来说:当前的任务在执行完CPU时间片切换到另一个任务之前会先保存自己的状态,以便下次再切换回这个任务时,可以再加载这个任务的状态。
  • 使用Linux当做服务器的有点有一点就是因为它切换上下文和模式切换所需要的时间很短

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1120060.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOV8改进:RefConv(即插即用重参数化重聚焦卷积替代常规卷积,无额外推理成本下涨点明显)

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 3.涨点效果:RefConv,实现有效涨点! 论文地址…

游戏设计模式专栏(十三):在Cocos游戏开发中运用责任链模式

点击上方亿元程序员关注和★星标 引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。 责任链模式&#xff…

面试题:谈谈过滤器和拦截器的区别?

文章目录 一、拦截器和过滤器的区别二、拦截器和过滤器的代码实现1、拦截器2、过滤器 三、总结1、什么是Filter及其作用介绍2、Filter API介绍3、Filter链与Filter生命周期 四、拦截器五、过滤器和拦截器的区别 一、拦截器和过滤器的区别 1、拦截器(Interceptor)只对action请求…

全球国家行政区划边界(中国科学院地理科学与资源研究所)

简介: 行政区划边界是指各个行政区域之间划定的界限,以确保行政管理的有序和合法。通常,这些边界是根据政治、行政、文化等因素来划分的,如国家、省份、市级行政单元、县区等。这些行政区划边界的划分和调整需要经过政府的制定和…

proteus中仿真arduino的水位测试传感器

一、原理介绍 我们这里使用的水位传感器,只能说是一个小实验用途的水位传感器。我们首先上图 如上图所示,线没有连接,传感器由许5对裸露在外的铜线片作为传感部分,当浸入水中时这些铜线片会被水桥接。 这些被水连接起来的铜线&a…

CUDA学习笔记(二)CUDA简介

本篇博文转载于https://www.cnblogs.com/1024incn/tag/CUDA/,仅用于学习。 CUDA是并行计算的平台和类C编程模型,我们能很容易的实现并行算法,就像写C代码一样。只要配备的NVIDIA GPU,就可以在许多设备上运行你的并行程序&#xf…

2024王道考研计算机组成原理——指令系统

零、本章概要 指令寻址:解决的是PC"1"的问题 数据寻址:使用寄存器/内存/结合 基址寻址:用于多道程序的并发执行 直接寻址:call 0x12345678 变址寻址:esi edi用于循环,因为使用直接寻址需要一堆…

TX Text Control ActiveX 32.0 For VB6 Crack

ActiveX Visual Basic 6 应用程序的文档处理,TX Text Control适用于 Visual Basic 6 和基于 COM 的语言的综合文字处理和报告 视窗用户界面,功能齐全的文档编辑器 TX Text Control 是一款完全可编程的丰富编辑控件,它在专为 Visual Studio 设…

自然语言处理---Transformer机制详解之BERT模型介绍

1 BERT简介 BERT是2018年10月由Google AI研究院提出的一种预训练模型. BERT的全称是Bidirectional Encoder Representation from Transformers.BERT在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩:全部两个衡量指标上全面超越人类,并且在11种不…

计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)

车辆跟踪及测距 该项目一个基于深度学习和目标跟踪算法的项目,主要用于实现视频中的目标检测和跟踪。该项目使用了 YOLOv5目标检测算法和 DeepSORT 目标跟踪算法,以及一些辅助工具和库,可以帮助用户快速地在本地或者云端上实现视频目标检测和…

最新AI智能写作创作系统源码V2.6.4/AI绘画系统/支持GPT联网提问/支持Prompt应用

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统,支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…

[深入浅出AutoSAR] SWC 设计与应用

依AutoSAR及经验辛苦整理,原创保护,禁止转载。 专栏 《深入浅出AutoSAR》 全文 3100 字, 包含 1. SWC 概念 2. 数据类型(Datatype) 3. 端口(Port) 4. 端口接口(Portinterface&…

【终极版】刷完这100行Python,从新人变成大佬

文章目录 基础入门菜鸟提升基础晋级高手之路内置包库奇技淫巧 基础入门 1 python 即在命令行输入python,进入Python的开发环境。 2 x 12*3-4/56**2 加减乘除四则混合运算,可当作计算器使用,其中**表示乘方。 3 print(x) 输出x的值&#x…

2023年中国跨境电商进出口数据及分布占比分析

中商情报网讯:据海关数据,2022年中国跨境电商进出口(含B2B)2.11万亿元,同比增长9.8%,跨境电商进出口规模首次突破2万亿元关口。其中,出口1.55万亿元,进口0.56万亿元。 2023上半年&a…

基于SSM的快递管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

RBAC——基于角色权限的模型

目录 1、RBAC是什么? 2、为什么要使用RBAC模型? 3、RBAC的适用场景 4、RBAC流程图 5、RBAC各模块功能 6、访问控制流程 7、数据库设计及相关表结构 8、RBAC模型的JPA简单实现-单表及多表查询 9、RBAC模型四级分级 10、总结(优缺点&…

Spring Cloud Alibaba系列(6)之nacos集群搭建

传送门 Spring Cloud Alibaba系列之nacos:(1)安装 Spring Cloud Alibaba系列之nacos:(2)单机模式支持mysql Spring Cloud Alibaba系列之nacos:(3)服务注册发现 Spring Cloud Alibaba系列之nacos:(4)配置管理 Spring Cloud Al…

将本地的项目上传到Gitee

目录 1.先在Gitee新建一个仓库,提交即可 2.进入到要上传的项目里面,右键选择 Git Bash Here 3.右键后就打开了Git命令窗口 4.配置你的用户名和邮箱(已经配置过则可跳过) 5.查看你的用户名和邮箱配置(可不查看) 6.输入git init指令&#…

【第二天】C++类和对象解析:构造函数、析构函数和拷贝构造函数的完全指南

一、类的引出概述 在c语言结构体中,行为和属性是分开的,万一调用错误,将会导致问题发生。c中类将数据和方法封装在一起,加以权限区分,用户只能通过公共方法 访问 私有数据。 二、封装 封装特性包含两个方面&#xff0…

Java 中的 Default 关键字

default 关键字:是在 Java 8 中引入的新概念,也可称为 Virtual extension methods——虚拟扩展方法与public、private等都属于修饰符关键字,与其它两个关键字不同之处在于default关键字大部分都用于修饰接口。 default 修饰方法时只能在接口…