RabbitMQ(一):消息队列MQ
目录
- 1 消息队列MQ
- 1.1 MQ简介
- 1、什么是MQ
- 2、MQ的优势
- 流量削峰
- 应用解耦
- 异常处理
- 数据分发
- 分布式事务
- 3、消息中间件的弊端
- 4、常用的MQ
- 1.2 MQ中几个基本概念
- 1.3 MQ的通信模式
- 1.4 消息的发布策略
- 1.5 常用消息中间件协议
- 1、AMQP协议
- 2、MQTT协议
- 3、OpenMessage协议
- 4、kafaka协议
1 消息队列MQ
1.1 MQ简介
1、什么是MQ
MQ全称是Message Queue,直译过来叫做消息队列。MQ本质上是一个队列,遵循先进先出的原则,而队列存放内容为message,主要是作为分布式应用之间实现异步通信的方式。是一种跨进程的通信机制,用于上下游传递消息。
它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。现在主流的消息队列有:ActiveMQ、RabbitMQ,Kafka,RocketMQ等。
2、MQ的优势
流量削峰
流量消峰:当流量超过处理上限时,正常情况下,超过上限的流量不做处理。而MQ可以把多出来的一部分流量放入消息队列做缓冲。
举个例子:假设某订单系统每秒最多能处理一万次订单,也就是最多承受的10000qps,正常情况下,下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作,系统是处理不了的,只能限制订单超过一万后不允许用户下单。如果使用消息队列做缓冲,则可以取消这个限制,把一秒内下的订单分散成一段时间来处理,这时有些用户还可以下单但是可能会在十几秒后才能收到下单成功的操作,返回结果会有一段时间的延迟但是仍可以进行下单操作。
应用解耦
以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。
耦合:用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单操作异常。
加入MQ后:当转变成基于消息队列的方式后,系统间调用的问题会减少很多,比如物流系统因为发生故障,需要几分钟来修复。在这几分钟的时间里,物流系统要处理的内存被缓存在消息队列中,用户的下单操作可以正常完成。当物流系统恢复后,继续处理订单信息即可,中单用户感受不到物流系统的故障,提升系统的可用性。
异常处理
有些服务间调用是异步的,例如 A 调用 B,B 需要花费很长时间执行,但是 A 需要知道 B 什么时候可以执行完,以前一般有两种方式:1)A 过一段时间去调用 B 的查询 api 查询;2)A 提供一个 callback api, B 执行完之后调用 api 通知 A 服务。
以上两种方式都不是很优雅,使用消息队列,可以很方便解决这个问题:A 调用 B 服务后,只需要监听 B 处理完成的消息,当 B 处理完成后,会发送一条消息给 MQ,MQ 会将此消息转发给 A 服务。这样 A 服务既不用循环调用 B 的查询 api,也不用提供 callback api。同样B 服务也不用做这些操作,A 服务还能及时的得到异步处理成功的消息。
数据分发
MQ支持发布订阅机制。支持上下游的一对一、一对多、或者广播模式,并且都可以根据规则选择分发的对象。这样一份上游数据,众多下游系统中,可以根据规则来选择是否接收这些数据。
分布式事务
事务 Transaction:是一种特殊的执行程序,一般具有四个特性:
- a:原子性,要么成功要么失败
- c:一致性,宏观视角下的全局视角一致性
- i:隔离性,并发事务互不相干
- d:持久性,事务提交后,变更永久生效
分布式事务:是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。例如在大型电商系统中,下单接口通常会扣减库存、减去优惠、生成订单 id, 而订单服务与库存、优惠、订单 id 都是不同的服务,下单接口的成功与否,不仅取决于本地的 db 操作,而且依赖第三方系统的结果,这时候分布式事务就保证这些操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。
例如:一个用户下单的整个流程,MQ在这其中保证的作用:
生产者的逻辑
- 1、订单入库
- 2、消息记录入库
- 3、发送消息(采用确认模式)
- 4、mq收到消息之后给生产端一个确认消息
- 5、生产端监听这个确认消息
- 6、根据监听结果操作消息表的状态
- 7、定时任务定时去操作消息状态为1未发送的记录,就是那些没有监听到结果的记录进行重新发送
消费者的逻辑
- 1、将收到消息的消息入库
- 2、处理消息失败消息记录的状态就为未处理
- 3、处理消息成功修改消息记录的状态为处理成功
- 4、收到相同的消息id的消息直接丢弃
- 5、定时任务去操作那些未处理,并且已经经过一段时间的消息
- 6、针对那些一直处理失败的,且很长一段时间都没办法处理成功的消息交由人工或者其他途径处理
3、消息中间件的弊端
消息中间件带来诸多好处的同时,也会引入很多的弊端:
- 系统可用性降低:系统可用性在某种程度上降低,比如要考虑消息丢失、消息中间件宕机等问题。
- 系统复杂性提高:引入消息中间件之后,业务需要考虑消息被重复消费、消息丢失、消息传递顺序等问题。
- 一致性问题:消息队列的异步机制确实可以提高系统响应速度,但消费者没有正确消费可能会引入一致性问题。
4、常用的MQ
- ActiveMQ:
- 优点:单机吞吐量万级,时效性 ms 级,可用性高,基于主从架构实现高可用性
- 缺点:官方社区现在对 ActiveMQ 5.x 维护越来越少,高吞吐量场景较少使用
- Kafaka:
- 简单描述:主要应用在大数据领域,有百万级 TPS 的吞吐量,在数据采集、传输、存储的过程中发挥着举足轻重的作用。目前已经被 LinkedIn,Uber, Twitter, Netflix 等大公司所采纳
- 优点:
- 性能优越,吞吐量高,单机写入 TPS 约在百万条/秒,时效性 ms 级,可用性非常高
- 分布式,一个数据多个副本,少数机器宕机,不会丢失数据导致服务不可用
- 有Web管理界面
- 日志收集功能成熟,在大数据领域的日志采集中被大规模使用
- 缺点:
- Kafka 单机超过 64 个队列/分区,Load 会发生明显的飙高现象,发送消息相应时间变长
- 消费失败不支持重试
- 支持消息顺序,一旦有一旦宕机,会造成消息乱序
- 社区更新较慢
- 使用场景:Kafka 主要特点是基于Pull 的模式来处理消息消费,追求高吞吐量,适合日志收集和传输。适合产生大量数据的互联网服务的数据收集业务,大型公司建议可以选用,如果需要日志采集功能,首选 kafka 。
- RocketMQ:
- 简单描述:RocketMQ是阿里的开源产品,使用Java语言实现,被阿里巴巴广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog 分发等场景。
- 优点:
- 单机吞吐量十万级,可用性非常高
- 分布式架构,扩展性好
- 消息可以做到 0 丢失,支持 10 亿级别的消息堆积,不会因为堆积导致性能下降
- MQ功能完善,同时由于的Java开源的,所以可以根据自己公司需求进行定制
- 缺点:
- 客户端语言只支持Java和C++,但是C++不成熟
- 社区活跃度一般
- 迁移系统时需要修改大量代码
- 使用场景:多用于金融互联网等对可靠性要求很高的场景,尤其是电商里面的订单扣款,以及业务削峰,在大量交易涌入时,后端可能无法及时处理的情况。
- RabbitMQ
- 简单描述:2007 年发布,是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一
- 优点:
- 由于 erlang 语言的高并发特性,性能较好,吞吐量到万级
- 健壮、稳定、易用、跨平台、支持多种语言 如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持 AJAX 文档齐全
- 社区活跃度高,更新频率高
- 缺点:商业版需要收费,学习成本高
- 使用场景:性能好时效性微秒级,社区活跃度也比较高,管理界面用起来十分方便,如果数据量量不大,中小型公司优先选择功能比较完备的 RabbitMQ
1.2 MQ中几个基本概念
队理管理器(queue mr),是MQ系统当中最上层的一个管理器,由它为我们提供基于队列的消息服务
消息(messages):在MQ中,把应用程序交由MQ传输的数据,某个应用向应用程序发出的请求处理等都可以称做消息。消息又包括两部分:
- 消息描述符(message header,消息头),如: 消息的优先级,生命周期,消息ID
- 消息体(message body),就是用户的数据部份,(又为分永久性的,和非永久性消息)
队列(queue):存放消息的地方,队列中的消息直到被应用程序消费之后再结束消息的生命周期。队列又可分为多种类型:
- 本地队列:
- 普通本地队列:应用程序通过API对其进行读写操作的队列
- 传输队列:又叫存储转发队列。比如:当某个消息交给MQ系统发送到远程主机,而此时网络发生故障,MQ将把消息放在传输队列中暂存,当网络恢复时,再发往远端目的地
- 远程队列:目的队列在本地的定义,它类似一个地址指针,指向远程主机上的某个目的队列(注意:不真正占用磁盘存储空间)
- 模板队列:是一个模板,当实际需要新增队列时,打开一个模板队列,MQ就会自动生成一个动态队列
- 动态队列:可以指定该动态队列为临时队列或者是永久队列,临时队列可以在关闭的同时进行删除;而永久队列,则可以永久保留
- 别名队列
- 。。。
通道:MQ系统中队列管理器之间传递消息的管道
1.3 MQ的通信模式
MQ可以在内存或者磁盘上,队列中存储消息直到被应用程序读取。应用程序可以通过MQ独立的执行,不需要彼此之间有其他联系,也不需要等待接收程序接收此消息。在分布式计算环境中,为了集成分布式应用,开发者需要对异构网络环境下的分布式应用提供有效的通信手段。为了管理需要共享的信息,对应用提供公共的信息交换机制是重要的。常见的有以下几种:
- 点对点 - 点对点方式是最为传统和常见的通讯方式,它支持一对一、一对多、多对多、多对一等多种配置方式,支持树状、网状等多种拓扑结构。
- 多点广播 - 多点广播可以使用一条 MQ 指令将单一消息发送到多个目标站点,并确保为每一站点可靠地提供信息。
- 发布/订阅 (Publish/Subscribe) - 该模式是将消息按照特定的主题甚至内容进行分发,用户或应用程序可以根据主题或内容接收到所需要的消息。
- 特点:该模式突破目的队列地理位置的限制。可以让发送者不必关心接收者的目的地址,而接收者也不必关心消息的发送地址,而只是根据消息的主题进行消息的收发。
- 集群 (Cluster) - 集群类似于一个域 (Domain),集群内部的队列管理器之间通讯时,不需要两两之间建立消息通道,而是采用集群 (Cluster) 通道与其它成员通讯。
- 特点:简化了系统配置。同时集群中的队列管理器之间能够自动进行负载均衡
1.4 消息的发布策略
之前了解到,MQ是一种常用的异步通信机制。它可以帮助系统的不同组件在无需直接相互通信的情况下,实现数据的传输和处理。消息队列的核心概念之一是消息分发策略(Message Dispatching Strategy),它决定了在发送方发送消息到消息队列后,消息如何被接收方从队列中取出并处理。
消息分发策略是指消息在队列中如何被分配给接收方的规则。常见的消息分发策略有以下几种:
- 先来先服务(First-Come, First-Served,FCFS):按照消息到达队列的顺序进行分发,先到者先出。
- 最短作业优先(Shortest Job First,SJF):优先分发队列中处理时间最短的消息。
- 优先级调度(Priority Scheduling):根据消息的优先级进行分发,优先级高的消息先被处理。
- 轮询调度(Round Robin):按照顺序轮流分发队列中的消息。
- 随机分发(Random Scheduling):随机选择队列中的消息进行分发。
1.5 常用消息中间件协议
1、AMQP协议
AMQP协议(Advanced Message Queuing Protocol—高级消息队列协议),一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。
特点:分布式事务支持、消息的持久化支持、高性能和高可靠的消息处理优势
应用:RabbitMQ、ActiveMQ
2、MQTT协议
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。
特点:以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务;轻量、结构简单、传输快、不支持事务、没有持久化设计
应用:在物联网、小型设备、移动应用等方面有较广泛的应用,RabbitMQ通过插件可以支持该协议
3、OpenMessage协议
OpenMessage协议是由阿里、雅虎和滴滴出行、 Stremalio等公司共同参与创立的分布式消息中间件、流处理等领域的应用开发标准。
特点:结构简单,解析速度快,支持事务和持久化设计
4、kafaka协议
Kafaka协议,基于TCP/IP的二进制协议。消息内部是通过长度来分割,由些基本数据类型组成。
特点:结构简单、解析速度快、无事务支持、有持久化设计
相关文章:
![](https://img-blog.csdnimg.cn/direct/a749585e4286408fa6d537cb5befd5ce.png)
RabbitMQ(一):消息队列MQ
目录 1 消息队列MQ1.1 MQ简介1、什么是MQ2、MQ的优势流量削峰应用解耦异常处理数据分发分布式事务 3、消息中间件的弊端4、常用的MQ 1.2 MQ中几个基本概念1.3 MQ的通信模式1.4 消息的发布策略1.5 常用消息中间件协议1、AMQP协议2、MQTT协议3、OpenMessage协议4、kafaka协议 1 消…...
![](https://img-blog.csdnimg.cn/direct/8734e862453e4de9bd30c368a32af5a2.png)
HarmonyOS—使用预览器查看应用/服务效果
DevEco Studio为开发者提供了UI界面预览功能,可以查看应用/服务的UI界面效果,方便开发者随时调整界面UI布局。预览器支持布局代码的实时预览,只需要将开发的源代码进行保存,就可以通过预览器实时查看应用/服务运行效果,…...
![](https://www.ngui.cc/images/no-images.jpg)
大项目中,某个cpp文件读取所在包路径的方法
在一个比较大的C项目中,我们有很多包,每个包都有一个自己的src、include、CMakeLists.txt和其它文件,比如以下文件结构: project- pkg1- datas- data.json- src- xxx1.cpp- include- xxx1.h - CMakeLists.txt- pkg2- src- xxx2.…...
![](https://www.ngui.cc/images/no-images.jpg)
gem5学习(25):用于异构SoC的片上网络模型——Garnet2.0
目录 一、Invocation 二、Configuration 三、Topology 四、Routing 五、Flow Control 六、Router Microarchitecture 七、Buffer Management 八、Lifecycle of a Network Traversal 九、Running Garnet2.0 with Synthetic Traffic 官网教程:gem5: Garnet 2…...
![](https://img-blog.csdnimg.cn/direct/85e751170eb2471d97d117a16babd66a.gif)
康威生命游戏
康威生命游戏 康威生命游戏(Conway’s Game of Life)是康威发明的细胞自动机。 生命游戏有几个简单的规则: 细胞有两种状态,存活或死亡,每个细胞以自身为中心与周围的八格细胞互动。 对于存活的细胞: 当周围的细胞过少(<2)或…...
![](https://img-blog.csdnimg.cn/direct/7378a70455d74711a2abaed182fea6db.png)
vscode与vue环境配置
一、下载并安装VScode 安装VScode 官网下载 二、配置node.js环境 安装node.js 官网下载 会自动配置环境变量和安装npm包(npm的作用就是对Node.js依赖的包进行管理),此时可以执行 node -v 和 npm -v 分别查看node和npm的版本号: 配置系统变量 因为在执…...
![](https://img-blog.csdnimg.cn/direct/b5a3bbb902dd423b9b8ccb121881f2b7.png)
Linux的ACL权限以及特殊位和隐藏属性
前言: ACL是什么? ACL(Access Control List)是一种权限控制机制,用于在Linux系统中对文件和目录进行细粒度的访问控制。传统的Linux权限控制机制基于所有者、所属组和其他用户的三个权限类别(读、写、执行…...
![](https://img-blog.csdnimg.cn/direct/12672dd373994b5a927ba5bf1c8f9bea.png)
使用openai-whisper实现语音转文字
使用openai-whisper实现语音转文字 1 安装依赖 1.1 Windows下安装ffmpeg FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。 # ffmpeg官网 https://ffm…...
![](https://img-blog.csdnimg.cn/direct/e07b18716808400a842170eb57264dd7.png)
C++模板为什么不能声明和定义分离
首先我们要直到C程序运行需要进行的四个阶段。 预处理->编译->汇编->链接 编译:对语法语义分析,分析无误生成汇编,头文件不参加编译,多个源文件是分开单独编译的。 链接:将多个obj文件链接合成一个&#x…...
![](https://img-blog.csdnimg.cn/direct/b5313c86eeda49589aa7b70ea8ac3452.png)
啊丢的刷题记录手册
1.洛谷题P1923 求第k小的数 题目描述 输入 n(1≤n<5000000 且 n 为奇数)个数字ai(1≤ai<109),输出这些数字的第 k 小的数。最小的数是第 0 小。 请尽量不要使用 nth_element 来写本题,因为本题…...
![](https://www.ngui.cc/images/no-images.jpg)
用nginx正向代理https网站
目录 1. 缘起2. 部署nginx3. 测试3.1 http测试3.2 https测试4 给centos设置代理访问外网 1. 缘起 最近碰到了一个麻烦事情,就是公司的centos测试服务器放在内网环境,而且不能直接上外网,导致无法通过yum安装软件,非常捉急。 幸…...
![](https://img-blog.csdnimg.cn/direct/283e377bdf1c4835bf383f402c514ab4.png)
面向对象设计模式
一、单例 一个类只能创建唯一一个对象 利用限制构造、static完成 二、工厂模式 优势:规范接口(纯虚函数);实现多态(虚函数表);继承 1、简单工厂 一个工厂创建所有产品。 返回基类指针可…...
![](https://img-blog.csdnimg.cn/direct/e43b2586e7584e95947128764e69ad55.png)
人工智能_CPU微调ChatGLM大模型_使用P-Tuning v2进行大模型微调_007_微调_002---人工智能工作笔记0102
这里我们先试着训练一下,我们用官方提供的训练数据进行训练. 也没有说使用CPU可以进行微调,但是我们先执行一下试试: https://www.heywhale.com/mw/project/6436d82948f7da1fee2be59e 可以看到说INT4量化级别最低需要7GB显存可以启动微调,但是 并没有说CPU可以进行微调.我们…...
![](https://www.ngui.cc/images/no-images.jpg)
Android自编译Pixel3内核加入KernelSU
背景 让Pixel3 AOSP Android10 4.9内核用上Kernel SU 环境: Ubuntu 18.04 vm aosp10r2 移植参考官方,和github项目 Commits OnlyTomInSecond/android_kernel_xiaomi_sdm845 (github.com) 这个项目是 LineageOS/android_kernel_xiaomi_sdm845 编译的前提 已经有完整…...
![](https://img-blog.csdnimg.cn/direct/164d9de49af54cd0bf15e8d8cf2b7fe1.png)
Go 数据库编程精粹:database/sql 实用技巧解析
Go 数据库编程精粹:database/sql 实用技巧解析 简介database/sql 库的基础知识核心概念连接池驱动事务 环境配置 建立数据库连接连接到数据库示例:连接 MySQL 数据库连接池管理 执行查询和处理结果基本查询执行多行查询执行单行查询 结果处理处理多行结果…...
![](https://img-blog.csdnimg.cn/img_convert/f507b2e147f7dae124ca6a357fbd66eb.jpeg)
AI-Gateway:一款整合了OpenAI、Anthropic、LLama2等大语言模型的统一API接口
关于AI-Gateway AI-Gateway是一款针对大语言模型的统一API接口,该接口可以用在应用程序和托管的大语言模型(LLM)之间,该工具可以允许我们通过一个统一的API接口将API请求转发给OpenAI、Anthropic、Mistral、LLama2、Anyscale、Go…...
![](https://img-blog.csdnimg.cn/direct/c9f6157b688a4eadbe513181793d7680.png)
Android 广播的基本概念
一.广播简介 Broadcast是安卓四大组件之一。安卓为了方便进行系统级别的消息通知,引入了一套广播消息机制。打个比方,记得原来在上课的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦…...
![](https://img-blog.csdnimg.cn/direct/747fc918ce354d488d2b07ab1533bee3.png)
【Docker实操】部署php项目
概述 最终达成的容器部署结构和原理如下图: 一、获取nginx、php官方镜像 docker pull nginx //拉取nginx官方镜像 docker pull php:7.4-fpm //拉取php官方镜像需要获取其他可用的php版本,可以上【docker hub】搜索【php】,所有的【xxx-fp…...
![](https://www.ngui.cc/images/no-images.jpg)
多线程-初阶
1. 认识线程( Thread ) 1.1 概念 1) 线程是什么 一个线程就是一个 " 执行流 ". 每个线程之间都可以按照顺讯执行自己的代码 . 多个线程之间 " 同时 " 执行 着多份代码 . 还是回到我们之前的银行的例子中。之前我们主要描…...
![](https://www.ngui.cc/images/no-images.jpg)
Object和Function是函数,函数都有一个prototype属性
Object 和 Function 都是 JavaScript 自带的函数对象 在 JavaScript 中,万物皆对象,你要一个吗?new Object() 啊! 当然,就好比同样为人,也区分普通人和天才。 对象也是有分类的,分为 普通对象…...
![](https://img-blog.csdnimg.cn/direct/c63c539facd34416961f6a61631989e8.png)
stm32利用CubeMX按键控制数码管加减数
首先画电路图: 接下来配置CubeMX: 设置好后生成MDK工程文件: 用keil打开工程: 添加部分代码: /* USER CODE BEGIN Includes */ uint16_t duan[]{0xC0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; uint1…...
![](https://www.ngui.cc/images/no-images.jpg)
前端页面生成条形码,借助layui打印标签
借助JsBarcode生成条形码 官网:https://lindell.me/JsBarcode/ github: https://github.com/lindell/JsBarcode <div class"table-div" style"display: block;width: 300px; height: 241px; margin: auto;"><table border"1&quo…...
![](https://www.ngui.cc/images/no-images.jpg)
第1~8章 综合复习
1. 重置root密码 1. 重启服务器(虚拟机)2. 快速选择第二项,然后按 e 键3. 在linux这一行的最后加上一个空格,然后输入 rd.break,然后按 ctrl x 来重启服务4. 在提示符所在位置输入 mount -o remount,rw /sysroot5. 在…...
![](https://img-blog.csdnimg.cn/direct/de5bdbbc104b43b980c8a3542269e124.png)
转运机器人,AGV底盘小车:打造高效、精准的汽车电子生产线
为了满足日益增长的市场需求,保持行业领先地位,某汽车行业电子产品企业引入富唯智能AMR智能搬运机器人及其智能物流解决方案,采用自动化运输措施优化生产节拍和搬运效率,企业生产效率得到显著提升。 项目背景: 1、工厂…...
![](https://www.ngui.cc/images/no-images.jpg)
Spring Boot 的参数校验方案
1、前言 在平时的开发工作中,我们通常需要对接口进行参数格式验证。当参数个数较少(个数小于3)时,可以使用if ... else ...手动进行参数验证。当参数个数大于3个时,使用if ... else ...进行参数验证就会让代码显得臃肿,这个时候推荐使用注解来进行参数验证。 2、常用注…...
![](https://img-blog.csdnimg.cn/direct/c6e336913dc4489ba552d8d6e241ee52.png)
第N3周:Pytorch文本分类入门
>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/rbOOmire8OocQ90QM78DRA) 中的学习记录博客** >- **🍖 原作者:[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** import torch import…...
![](https://img-blog.csdnimg.cn/direct/f254a510ae4449d29efbe7acd64a1d81.png)
宝塔面板安装了mysql5.7和phpMyadmin,但是访问phpMyadmin时提示502 Bad Gateway
操作流程截图如下: 原因是没有选择php版本 选择php版本 下一页找到phpMyAdmin,选择设置 目前只有纯净态,说明没有php环境,前去安装php环境 点击安装,选择版本,这里选择的是7.4版本,编译安…...
![](https://img-blog.csdnimg.cn/direct/48eab728e4d04e87835d9efba2c74b95.png)
K8S—Pod详解
目录 一 Pod基础概念 1.1 Pod是什么 1.2 为什么要使用Pod?Pod在K8S集群中的使用方式? 1.3 基础容器pause 二 Pod的分类 2.1 自主式Pod和控制器管理的Pod 2.2 容器的分类 2.2.1 基础容器(infrastructure container) 2.2.2…...
![](https://img-blog.csdnimg.cn/direct/34bb8e3bda374438936119a0fadd1cfe.jpeg)
深度学习中数据的转换
原始(文本、音频、图像、视频、传感器等)数据被转化成结构化且适合机器学习算法或深度学习模型使用的格式。 原始数据转化为结构化且适合机器学习和深度学习模型使用的格式,通常需要经历以下类型的预处理和转换: 文本数据…...
![](https://img-blog.csdnimg.cn/direct/76ce62bd15a3476f9a9fd6ce9e44f06d.png)
如何系统地自学 Python?
目录 Python 数据类型 控制结构 函数和模块 文件操作 异常处理 类和对象 列表推导式和生成器 匿名函数和高阶函数 面向对象编程 总结 Python Python是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行…...
做网站的时候宽高/如何推广seo
Spark为结构化数据处理引入了一个称为Spark SQL的编程模块。它提供了一个称为DataFrame(数据框)的编程抽象,DF的底层仍然是RDD,并且可以充当分布式SQL查询引擎。 1、SparkSQL的由来 SparkSQL的前身是Shark。在Hadoop发展过程中&…...
![](/images/no-images.jpg)
做网站自己装服务器/网络推广外包公司
Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行。使用脚本的好处如下: 1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器上完成。使用脚本,减少了…...
![](https://img-blog.csdnimg.cn/img_convert/8cb3ef354f215ad8e6063b2f6eaa4e73.png)
快速网站优化哪家好/百度权重4网站值多少钱
面试官常问的数据库问题 1-101. 触发器的作用?2. 什么是存储过程?用什么来调用?3. 索引的作用及优缺点是什么?4. 什么叫视图?游标是什么?5. delete、drop、truncate 区别6. 如何进行 SQL 优化?7…...
![](/images/no-images.jpg)
常州设计公司排名/郑州seo学校
<a href"/">首页</a>><a href"{$MOD[linkurl]}">{$MOD[name]}</a> <i>></i> {cat_pos($CAT, <i>></i> )}...
![](/images/no-images.jpg)
wordpress javaweb/宁波网站制作与推广价格
【程序 11】 题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: …...
![](/images/no-images.jpg)
wordpress下载最新版本/天津疫情最新情况
➊平列复合句 平行复合句,即两个以上同等性质的分句依次排列,之间无任何语法标志相连,共同构成的一个概念完整的组句。它又被称为la partage或lhypotaxe(平行句) ⒶJe lai vu, jai veng mon honneur et mon pre ;je le…...