面试官问我有没有高并发架构经验,我慌的一批…

2023-05-16

目录

  • 一、1 道面试题的背景引入
  • 二、先考虑一个最简单的系统架构
  • 三、系统集群化部署
  • 四、数据库分库分表 + 读写分离
  • 五、缓存集群引入
  • 六、引入消息中间件集群
  • 七、现在能hold住高并发面试题了吗
  • 八、本文能带给你什么启发?

一、的背景引入

这篇文章,我们聊聊大量同学问我的一个问题,面试的时候被问到一个让人特别手足无措的问题:你的系统如何支撑高并发?

大多数同学被问到这个问题压根儿没什么思路去回答,不知道从什么地方说起,其实本质就是没经历过一些真正有高并发系统的锤炼罢了。

因为没有过相关的项目经历,所以就没法从真实的自身体会和经验中提炼出一套回答,然后系统的阐述出来自己复杂过的系统如何支撑高并发的。

所以,这篇文章就从这个角度切入来简单说说这个问题,用一个最简单的思路来回答,大致如何应对。


当然这里首先说清楚一个前提:高并发系统各不相同。比如每秒百万并发的中间件系统、每日百亿请求的网关系统、瞬时每秒几十万请求的秒杀大促系统。

他们在应对高并发的时候,因为系统各自自身特点的不同,所以应对架构都是不一样的。

另外,比如电商平台中的订单系统、商品系统、库存系统,在高并发场景下的架构设计也是不同的,因为背后的业务场景什么的都不一样。

所以,这篇文章主要是给大家提供一个回答这类问题的思路,不涉及任何复杂架构设计,让你不至于在面试中被问到这个问题时,跟面试官大眼瞪小眼。

具体要真能在面试的时候回答好这个问题,建议各位参考一下本文思路,然后对你自己手头负责的系统多去思考一下,最好做一些相关的架构实践。


二、先考虑一个最简单的系统架构

假设刚刚开始你的系统就部署在一台机器上,背后就连接了一台数据库,数据库部署在一台服务器上。

我们甚至可以再现实点,给个例子,你的系统部署的机器是4核8G,数据库服务器是16核32G。

此时假设你的系统用户量总共就10万,用户量很少,日活用户按照不同系统的场景有区别,我们取一个较为客观的比例,10%吧,每天活跃的用户就1万。

按照28法则,每天高峰期算他4个小时,高峰期活跃的用户占比达到80%,就是8000人活跃在4小时内。

然后每个人对你的系统发起的请求,我们算他每天是20次吧。那么高峰期8000人发起的请求也才16万次,平均到4小时内的每秒(14400秒),每秒也就10次请求。


好吧!完全跟高并发搭不上边,对不对?

然后系统层面每秒是10次请求,对数据库的调用每次请求都会好几次数据库操作的,比如做做crud之类的。

那么我们取一个一次请求对应3次数据库请求吧,那这样的话,数据库层每秒也就30次请求,对不对?

按照这台数据库服务器的配置,支撑是绝对没问题的。

上述描述的系统,用一张图表示,就是下面这样:

在这里插入图片描述

三、系统集群化部署

假设此时你的用户数开始快速增长,比如注册用户量增长了50倍,上升到了500万。

此时日活用户是50万,高峰期对系统每秒请求是500/s。然后对数据库的每秒请求数量是1500/s,这个时候会怎么样呢

按照上述的机器配置来说,如果你的系统内处理的是较为复杂的一些业务逻辑,是那种重业务逻辑的系统的话,是比较耗费CPU的。

此时,4核8G的机器每秒请求达到500/s的时候,很可能你会发现你的机器CPU负载较高了。

然后数据库层面,以上述的配置而言,其实基本上1500/s的高峰请求压力的话,还算可以接受。

这个主要是要观察数据库所在机器的磁盘负载、网络负载、CPU负载、内存负载,按照我们的线上经验而言,那个配置的数据库在1500/s请求压力下是没问题的。


所以此时你需要做的一个事情,首先就是要支持你的系统集群化部署。

你可以在前面挂一个负载均衡层,把请求均匀打到系统层面,让系统可以用多台机器集群化支撑更高的并发压力。

比如说这里假设给系统增加部署一台机器,那么每台机器就只有250/s的请求了。

这样一来,两台机器的CPU负载都会明显降低,这个**初步的“高并发”**不就先cover住了吗?

要是连这个都不做,那单台机器负载越来越高的时候,极端情况下是可能出现机器上部署的系统无法有足够的资源响应请求了,然后出现请求卡死,甚至系统宕机之类的问题。

所以,简单小结,第一步要做的:

  1. 添加负载均衡层,将请求均匀打到系统层。
  2. 系统层采用集群化部署多台机器,扛住初步的并发压力。

此时的架构图变成下面的样子:

在这里插入图片描述

四、数据库分库分表 + 读写分离

假设此时用户量继续增长,达到了1000万注册用户,然后每天日活用户是100万。

那么此时对系统层面的请求量会达到每秒1000/s,系统层面,你可以继续通过集群化的方式来扩容,反正前面的负载均衡层会均匀分散流量过去的。

但是,这时数据库层面接受的请求量会达到3000/s,这个就有点问题了。

此时数据库层面的并发请求翻了一倍,你一定会发现线上的数据库负载越来越高。

每次到了高峰期,磁盘IO、网络IO、内存消耗、CPU负载的压力都会很高,大家很担心数据库服务器能否抗住。

没错,一般来说,对那种普通配置的线上数据库,建议就是读写并发加起来,按照上述我们举例的那个配置,不要超过3000/s。

因为数据库压力过大,首先一个问题就是高峰期系统性能可能会降低,因为数据库负载过高对性能会有影响。


另外一个,压力过大把你的数据库给搞挂了怎么办?

所以此时你必须得对系统做分库分表 + 读写分离,也就是把一个库拆分为多个库,部署在多个数据库服务上,这是作为主库承载写入请求的。

然后每个主库都挂载至少一个从库,由从库来承载读请求。

此时假设对数据库层面的读写并发是3000/s,其中写并发占到了1000/s,读并发占到了2000/s。

那么一旦分库分表之后,采用两台数据库服务器上部署主库来支撑写请求,每台服务器承载的写并发就是500/s。每台主库挂载一个服务器部署从库,那么2个从库每个从库支撑的读并发就是1000/s。

简单总结,并发量继续增长时,我们就需要focus在数据库层面:分库分表、读写分离

此时的架构图如下所示:

在这里插入图片描述

五、缓存集群引入

接着就好办了,如果你的注册用户量越来越大,此时你可以不停的加机器,比如说系统层面不停加机器,就可以承载更高的并发请求。

然后数据库层面如果写入并发越来越高,就扩容加数据库服务器,通过分库分表是可以支持扩容机器的,如果数据库层面的读并发越来越高,就扩容加更多的从库。

但是这里有一个很大的问题:数据库其实本身不是用来承载高并发请求的,所以通常来说,数据库单机每秒承载的并发就在几千的数量级,而且数据库使用的机器都是比较高配置,比较昂贵的机器,成本很高。


如果你就是简单的不停的加机器,其实是不对的。

所以在高并发架构里通常都有缓存这个环节,缓存系统的设计就是为了承载高并发而生

所以单机承载的并发量都在每秒几万,甚至每秒数十万,对高并发的承载能力比数据库系统要高出一到两个数量级。

所以你完全可以根据系统的业务特性,对那种写少读多的请求,引入缓存集群

具体来说,就是在写数据库的时候同时写一份数据到缓存集群里,然后用缓存集群来承载大部分的读请求。


这样的话,通过缓存集群,就可以用更少的机器资源承载更高的并发。

比如说上面那个图里,读请求目前是每秒2000/s,两个从库各自抗了1000/s读请求,但是其中可能每秒1800次的读请求都是可以直接读缓存里的不怎么变化的数据的。

那么此时你一旦引入缓存集群,就可以抗下来这1800/s读请求,落到数据库层面的读请求就200/s。

同样,给大家来一张架构图,一起来感受一下:

在这里插入图片描述

按照上述架构,他的好处是什么呢?

可能未来你的系统读请求每秒都几万次了,但是可能80%~90%都是通过缓存集群来读的,而缓存集群里的机器可能单机每秒都可以支撑几万读请求,所以耗费机器资源很少,可能就两三台机器就够了。

你要是换成是数据库来试一下,可能就要不停的加从库到10台、20台机器才能抗住每秒几万的读并发,那个成本是极高的。

好了,我们再来简单小结,承载高并发需要考虑的第三个点:

  • 不要盲目进行数据库扩容,数据库服务器成本昂贵,且本身就不是用来承载高并发的
  • 针对写少读多的请求,引入缓存集群,用缓存集群抗住大量的读请求

六、引入消息中间件集群

接着再来看看数据库写这块的压力,其实是跟读类似的。

假如说你所有写请求全部都落地数据库的主库层,当然是没问题的,但是写压力要是越来越大了呢?

比如每秒要写几万条数据,此时难道也是不停的给主库加机器吗?

可以当然也可以,但是同理,你耗费的机器资源是很大的,这个就是数据库系统的特点所决定的。

相同的资源下,数据库系统太重太复杂,所以并发承载能力就在几千/s的量级,所以此时你需要引入别的一些技术。

比如说消息中间件技术,也就是MQ集群,他是非常好的做写请求异步化处理,实现削峰填谷的效果


假如说,你现在每秒是1000/s次写请求,其中比如500次请求是必须请求过来立马写入数据库中的,但是另外500次写请求是可以允许异步化等待个几十秒,甚至几分钟后才落入数据库内的。

那么此时你完全可以引入消息中间件集群,把允许异步化的每秒500次请求写入MQ,然后基于MQ做一个削峰填谷。比如就以平稳的100/s的速度消费出来然后落入数据库中即可,此时就会大幅度降低数据库的写入压力。

ps:关于MQ削峰填谷的概念,在公众号之前讲消息中间件的文章中已详细阐述,如果大伙儿忘记了,可以回顾一下。

此时,架构图变成了下面这样:

在这里插入图片描述

大家看上面的架构图,首先消息中间件系统本身也是为高并发而生,所以通常单机都是支撑几万甚至十万级的并发请求的。

所以,他本身也跟缓存系统一样,可以用很少的资源支撑很高的并发请求,用他来支撑部分允许异步化的高并发写入是没问题的,比使用数据库直接支撑那部分高并发请求要减少很多的机器使用量。

而且经过消息中间件的削峰填谷之后,比如就用稳定的100/s的速度写数据库,那么数据库层面接收的写请求压力,不就成了500/s + 100/s = 600/s了么?

大家看看,是不是发现减轻了数据库的压力?


到目前为止,通过下面的手段,我们已经可以让系统架构尽可能用最小的机器资源抗住了最大的请求压力,减轻了数据库的负担。

  • 系统集群化
  • 数据库层面的分库分表+读写分离
  • 针对读多写少的请求,引入缓存集群
  • 针对高写入的压力,引入消息中间件集群

初步来说,简单的一个高并发系统的阐述是说完了。

但是,其实故事到这里还远远没有结束。


七、现在能hold住高并发面试题了吗?

看完了这篇文章,你觉得自己能回答好面试里的高并发问题了吗?

很遗憾,答案是不能。而且我觉得单单凭借几篇文章是绝对不可能真的让你完全回答好这个问题的,这里有很多原因在里面。

首先,高并发这个话题本身是非常复杂的,远远不是一些文章可以说的清楚的,他的本质就在于,真实的支撑复杂业务场景的高并发系统架构其实是非常复杂的。

比如说每秒百万并发的中间件系统、每日百亿请求的网关系统、瞬时每秒几十万请求的秒杀大促系统、支撑几亿用户的大规模高并发电商平台架构,等等。


为了支撑高并发请求,在系统架构的设计时,会结合具体的业务场景和特点,设计出各种复杂的架构,这需要大量底层技术支撑,需要精妙的架构和机制设计的能力。

最终,各种复杂系统呈现出来的架构复杂度会远远超出大部分没接触过的同学的想象。

但是那么复杂的系统架构,通过一些文章是很难说的清楚里面的各种细节以及落地生产的过程的。


其次,高并发这话题本身包含的内容也远远不止本文说的这么几个topic:分库分表、缓存、消息。

一个完整而复杂的高并发系统架构中,一定会包含各种复杂的自研基础架构系统、各种精妙的架构设计(比如热点缓存架构设计、多优先级高吞吐MQ架构设计、系统全链路并发性能优化设计,等等)、还有各种复杂系统组合而成的高并发架构整体技术方案、还有NoSQL(Elasticsearch等)/负载均衡/Web服务器等相关技术。

所以大家切记要对技术保持敬畏之心,这些东西都很难通过一些文章来表述清楚。


最后,真正在生产落地的时候,高并发场景下你的系统会出现大量的技术问题。

比如说消息中间件吞吐量上不去需要优化、磁盘写压力过大性能太差、内存消耗过大容易撑爆、分库分表中间件不知道为什么丢了数据,等等吧。

诸如此类的问题非常多,这些也不可能通过文章给全部说清楚。


八、本文能带给你什么启发?

其实本文的定位,就是对高并发这个面试topic做一个扫盲,因为我发现大部分来问我这个问题的同学,连本文阐述的最最基本的高并发架构演进思路可能都没理解。

当然,也是因为毕竟没真的做过高并发系统,没相关经验,确实很难理解好这个问题。

所以本文就是让很多没接触过的同学有一个初步的感知,这个高并发到底是怎么回事儿,到底对系统哪里有压力,要在系统架构里引入什么东西,才可以比较好的支撑住较高的并发压力。

而且你可以顺着本文的思路继续思考下去,结合你自己熟悉和知道的一些技术继续思考。


比如说,你熟悉Elasticsearch技术,那么你就可以思考,唉?在高并发的架构之下,是不是可以通过分布式架构的ES技术支撑高并发的搜索?

上面所说,权当抛砖引玉。大家自己平时一定要多思考,自己多画图,盘点盘点自己手头系统的请求压力。计算一下分散到各个中间件层面的请求压力,到底应该如何利用最少的机器资源最好的支撑更高的并发请求。

这才是一个好的高并发架构设计思路。

如果起到这个效果,本文就成功了。剩下的,还是建议各位同学,对高并发这个话题,结合自己手头负责的系统多做思考。


比如当前业务场景下,你的系统有多大的请求压力?如果请求压力增长10倍你的架构如何支撑?如果请求压力增长100倍,你的架构如何支撑?如果请求压力增长1000倍,你的架构如何支撑?

平时一定多给自己设置一些技术挑战,敦促自己去思考自己的系统,最好多做写架构上的演练、落地和实践,自己实际操作一下,才有更好的感知。

然后在面试的时候,起码自己做过一定深度的思考,结合自己负责的系统做过一些实践,可以跟面试官有一个较为清晰和系统的阐述。

虽然大部分同学可能没机会经历那种真正大规模超高并发的系统架构的设计,但是本文如果能让大家平时对自己的项目多一些思考。在面试的时候,有一些系统性的思路和阐述,那么也就达到本文的目的了。


另外推荐儒猿课堂的1元系列课程给您,欢迎加入一起学习~

互联网Java工程师面试突击课(1元专享)

SpringCloudAlibaba零基础入门到项目实战(1元专享)

亿级流量下的电商详情页系统实战项目(1元专享)

Kafka消息中间件内核源码精讲(1元专享)

12个实战案例带你玩转Java并发编程(1元专享)

Elasticsearch零基础入门到精通(1元专享)

基于Java手写分布式中间件系统实战(1元专享)

基于ShardingSphere的分库分表实战课(1元专享)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试官问我有没有高并发架构经验,我慌的一批… 的相关文章

  • 软件专业大学生常用的刷题、找答案、找资源的网站

    接下来介绍的主要是结合个人和身边同学经常使用的几个网站 xff0c 肯定有很多不全 xff0c 欢迎大佬们查漏补缺 刷题 一 牛客网 xff08 https www nowcoder com xff09 牛客网 是一个专注于程序员的学习和成
  • Linux设备驱动

    Linux设备驱动 介绍 Linux系列文章记录自己学习Linux开发的历程 最近终于把迅为4412开发环境搞定了 xff0c 先吐槽一波迅为 xff0c 版本太 的多了 xff0c 安卓Linux搞在一起 xff0c 还有那个硬件原理图
  • Linux 磁盘坏块修复处理(错误:read error: Input/output error)

    当磁盘出现坏块时 xff0c 你对所关联的文件进行读取时 xff0c 一般会出现 read error Input output error 这样的错误 反过来讲 xff0c 当你看到 read error Input output err
  • docker给运行中的容器添加端口映射

    问题描述 docker上面运行容器 xff0c run p 的时候只映射了一个端口 xff0c 后面对该nginx做扩展 xff0c 需要开放其他端口 当然重新再启一个容器在docker启动参数里多配置几个 p端口映射是能解决的 xff0c
  • Git常用命令符

    1 强制推送 xff08 慎用 xff0c 除非你认为其他冲突等可以丢弃 或者不是很重要 xff09 git push force 2 创建文件等小命令 touch a 创建一个a文件 echo 1234 gt gt a 把1234这个内容
  • 全网最全的 LeetCode 国人大神刷题指南,全部 Go 语言实现

    大家好 xff0c 我是欧盆索思 xff08 opensource xff09 xff0c 每天为你带来优秀的开源项目 xff01 说到 LeetCode xff0c 作为一个程序员来说 xff0c 应该不陌生 xff0c 近几年参加面试都
  • ROS实现串口通信

    虚拟串口的搭建 参考Linux下添加虚拟串口 xff0c 接收和发送数据 com py文件代码如下 xff1a span class token comment usr bin env python span span class toke
  • 基于Linux的UART驱动框架源码分析笔记

    文章目录 前言一 I MX6ULL串口接收和发送方式1 非DMA方式1 1 接收方式1 2 发送方式 2 DMA方式2 1 接收方式2 2 发送方式 二 UART驱动注册1 uart register driver 函数解析2 serial
  • cmake install 命令

    install指令用于定义安装规则 xff0c 安装的内容可以包括目标二进制 动态库 静态库以及文件 目录 脚本等 需要引入一个新的cmake指令和一个非常有用的变量 cmake install prefix 法一 xff1a cmake
  • 基于全景相机的视觉里程计算法研究

    一 视觉里程计 视觉里程计技术首先建立相机的成像模型 xff0c 接着通过标定算法计算相机参数 xff0c 最后建立相邻图像的关联并估计相机运动轨迹 1 1相机在空间中运动的描述 描述相机在三维空间中的运动状态 xff0c 即求解相机在空间
  • 多旋翼无人机组成(小白上路)

    1 无人机组成 1 1 机架 四旋翼最常见的两种机身布局如下图 xff1a 机架指无人机的承载平台 xff0c 通常用轴距衡量机架的大小 xff0c 轴距是指对角线两个螺旋桨的距离 xff0c 一般以mm为单位 xff0c 如F330表示轴
  • freertos创建任务后进入prvStartFirstTask发生HardFault_Handler中断

    在stm32f103zet6环境中移植成功freertos之后 xff0c 创建第一个任务之后 xff0c 会进入硬件中断 xff0c 经过排查发现死在了prvStartFirstTask 排查原因 xff1a 发现是启动文件startup
  • 解决无法对docker容器进行端口映射的问题

    初学docker的时候 xff0c 不知道为啥 xff0c 按着教程里打的代码 xff0c 最后却出现了映射失败的情况 即 xff1a 在docker内部设置的映射端口 xff0c 外部却没有办法访问 想了想 xff0c 不外乎两个原因 x
  • K8s手工创建kubeconfig

    我们通过 kubectl 命令行连接 k8s apiserver 时需要依赖 kubeconfig 文件 kubeconfig 文件通常包含了 context xff08 上下文 xff09 列表 xff0c 每个 context 又会引用
  • grep命令总结

    grep命令总结 1 关于 nbsp ps ef grep php grep v grep wc l grep v grep 代表在查询的最终结果中去掉grep命令本身 wc l 标示统计查询到的结果数量 grep常用命令 1 grep n
  • Ubuntu 16.04安装realsense D435i SDK以及realsense-ros

    先直接上一个报错信息 xff0c 折腾了半天才解决 在使用catkin make编译realsense ros时 xff0c 报错 traversing 4 packages in topological order realsense c
  • 关于视觉SLAM的一些常识(纯小白学习笔记)

    本文只是小白对于视觉slam的一个非常泛的介绍 xff0c 对于视觉slam中的数学运算均没有提及 xff0c 适合于对没有接触过视觉slam的新人进行一个简单的科普 作者即小白 xff0c 文章如有错误 xff0c 非常非常非常欢迎指正
  • 使用CubeMX快速搭建FREERTOS

    如何使用STM32快速搭建FREERTOS 小编之前一直使用正点原子家的产品 xff0c 最近准备学习学习TOUCHGFX 要用到HAL 43 RTOS 原子家的使用起来不方便 于是琢磨着使用STM32CUBEMX直接生成FREERTOS
  • 使用DMA+SPI驱动Aliyun Things 上的ST7789H2 LCD屏幕

    目录 前言硬件CUBEMX时钟树GPIOSPI 代码部分LCD驱动中断服务函数测试代码现象 前言 1 xff1a 驱动程序参考自https blog csdn net BearPi article details 104311705 2 x
  • SLAM测试5-YGZ-Stereo-Inertial(GAAS双目视觉ygz -立体惯性SLAM)

    这篇主要测试GAAS开源无人机里用到的一种SLAM算法 xff0c 目的是先对该SLAM算法进行熟悉 xff0c 再开始入手GAAS视觉定位 GIThub上的代码地址为 xff1a https github com gaoxiang12 y

随机推荐

  • Linux之线程条件变量cond

    概念 xff1a 条件变量不是锁 xff0c 要和互斥量组合使用 条件变量就是生产者 生产 完成 xff0c 消费者才能 使用 xff0c 如果没有 产品 xff0c 消费者就会被条件变量cond阻塞等待生产者 生产 xff08 生产者与消
  • Linux之线程-信号量sem_*

    1 概念 信号量可理解为进化版的互斥锁 量 xff0c 允许多个线程访问共享资源 由于互斥锁的力度比较大 xff0c 如果希望在多个线程间对某一对象的部分数据进行共享 xff0c 使用互斥锁是没有办法实现的 xff0c 只能将整个数据对象锁
  • 4、树(中篇)

    前言 前节二叉树只能适用于静态查找 不能实现动态插入 删除等 如何解决以下两个问题 静态查找与动态查找 针对动态查找 数据如何组织 4 1 二叉搜索树 4 1 1 什么是二叉搜索树 二叉搜索树 BST Binary Search Tree
  • SNMP源码分析

    源码下载 http www net snmp org download html 源码目录结构 net snmp程序逻辑 xff08 1 xff09 main主函数 span class token macro property span
  • SNMP Trap的session问题

    1 前言 最近遇到了个问题 xff0c SNMPv3 Trap上报 xff0c 在snmp agent侧修改了用户密码 xff0c 管理站mibbroswer上没有修改trap用户的密码 xff0c 仍然可接收到trap上报消息 通过Wir
  • Rancher RKE K8s 集群 etcd 恢复

    背景 在 Rancher 中基于 RKE 创建的 K8s 集群 xff0c 因为服务器磁盘故障 xff0c 导致 3个 master 节点有2个节点的 etcd 数据文件损坏 xff0c 导致整个集群不可用 etcd 三个节点集群时 xff
  • PIXHAWK飞控固件及代码基础介绍

    PIXHAWK飞控 xff1a 固件 xff1a 开源固件PIXHAWK 软件 xff1a 两套固件代码 xff08 1 xff09 原生固件代码PIX4 xff0c 地面站采用QGC xff08 界面比较合理清晰 xff0c 易做修改 x
  • GAAS 无人机自动驾驶学习(01-使用机载电脑,通过OFFBOARD模式进行控制飞行)

    原文网址 xff1a https gaas gitbook io guide wu ren ji zi dong jia shi xi lie offboard kong zhi yi ji gazebo fang zhen 介绍 xff1
  • 2020-10-30

    Ubuntu nvidia显卡驱动安装 手动安装 xff1a 先在官网下载本机显卡对应支持的驱动 xff0c 一般选择run文件 xff1b 如果开启了nouveau驱动 xff0c 需要禁用 xff1b 进入tyy3命令行窗口 xff0c
  • Baxer双臂机器人Ubuntu20.04+ROS noetic开发环境配置

    目录 前言 一 新建ROS工程及初始化编译 二 在Baxter的工作空间对setup bash文件进行source 编辑 三 安装Baxter SDK 四 测试 编辑 总结 前言 Baxter simulator由ReThink Robot
  • Baxter的Gazebo仿真环境搭建

    注 xff1a 这是一篇配置失败的文章 xff0c 原因是Ubuntu20 04不支持Qt4 xff0c catkin make通不过 xff0c 不是20 04的可以尝试一下 xff0c 或者有大神能不能帮忙看下在ubuntu20 04装
  • Ubuntu20.04+ROS noetic安装Universal Robot包

    先装一下国内的rosdepc sudo pip install rosdepc sudo rosdepc init rosdepc update 安装ros插件 xff1a rosdep install from paths src ign
  • ROS编译(catkin_make):Unable to find either executable ‘empy‘ or Python module ‘em‘ 错误解决

    CMake Error at opt ros noetic share catkin cmake empy cmake 30 message Unable to find either executable 39 empy 39 or Py
  • roscore出现import yaml错误解决

    问题描述 xff1a 本机使用的ROS是基于python2 7的 xff0c 运行roscore时 xff0c 会自动调用python3下面的库文件 xff0c 导致源码调用时出现冲突 xff0c ERROR显示了出错代码的路径 1 定位到
  • fatal: unable to access ‘https://github.com/ros-industrial/universal_robot.git/‘: Failed to connect

    解决 xff1a 将https改为git
  • keil5编译程序出错:runtime error R6002 -floating point support not loaded

    本想使用JTAG仿真器 43 Keil5试一下在线调试和下载程序 xff08 之前一直使用USB串口下载 xff09 xff0c 然后再编译时发现报错 xff0c 无法找到相应的下载文件 axf xff08 类似于无法生成一个下载到板子里面
  • 修改 docker 容器的启动参数等信息

    背景 docker 容器在之前启动时 xff0c 指定了 cmd 启动参数和挂载目录等配置 后来因为业务需要 xff0c 需要变更启动参数或挂载目录等信息 处理方法 1 停止所有 docker 容器 span class token fun
  • Java 并发高频面试题:聊聊你对 AQS 的理解?

    一 写在前面 这篇文章 xff0c 我们来聊聊面试时一个比较有杀伤力的问题 xff1a 聊聊你对AQS的理解 xff1f 之前有同学反馈 xff0c 去互联网公司面试 xff0c 面试官聊到并发时就问到了这个问题 当时那位同学内心估计受到了
  • 自从上了Prometheus,睡觉真香!

    文章来源 xff1a https c1n cn ojbYT 目录 学习目标任务背景任务要求任务分析Prometheus 实战 学习目标 如下 xff1a 能够安装 prometheus 服务器能够通过安装 node exporter 监控远
  • 面试官问我有没有高并发架构经验,我慌的一批…

    目录 一 1 道面试题的背景引入二 先考虑一个最简单的系统架构三 系统集群化部署四 数据库分库分表 43 读写分离五 缓存集群引入六 引入消息中间件集群七 现在能hold住高并发面试题了吗八 本文能带给你什么启发 xff1f 一 的背景引入