当前位置: 首页 > news >正文

24面试记录002

文章目录

  • 1
    • 2、brpc的优化
      • 2.1 brpc网络有啥降级?
    • 3、移动语义
    • 4、python协程
  • 二、
    • 1. mq怎么保障数据的顺序?
    • 3.brpc中上下游通信,怎么测评新增字段大小,对耗时的影响?

1

1、brpc和grpc区别,为啥选择brpc?
grpc是google公司开发的rpc框架,使用protocol buffer作为默认序列化框架。brpc是百度,使用多种序列化框架,pb、thrift协议和自定义协议。

grpc支持各种语言,着重跨语言,brpc主要支持c++,

grpc强调标准化,brpc强调高性能,低延迟,强调定制化。

2、brpc的优化

1、序列化因为要遍历各种数据结构,所以耗时更高,

2、brpc在序列化和反序列化时做的优化:
2.1 使用零拷贝技术,内存映射等,减少拷贝,减少cpu开销。
2.2 使用异步序列化,反序列化方式,在高并发场景下,提高吞吐和响应速度。
2.3 使用压缩技术,减少网络传输数据量,降低延迟,
2.4 使用内置序列化协议,pb,thrift,
2.5 定制序列化、反序列化接口,根据业务定制序列化(反序列化)逻辑。
2.6 支持一个动态反序列化,因为有些数据在编译时不能确定具体类型,所以就得放在运行时处理,运行时的反序列化,就是动态反序列化。

3、网络优化?
3.1 IO多路复用技术(epoll),提高网络io效率。
3.2 零拷贝
3.3 TCP连接管理,brpc实现对tcp自动管理,(建立、复用、断开、重连)提高连接的复用率和系统稳定性。
3.4 流量控制,令牌桶算法,对请求的并发量进行控制,防止资源耗尽,和网络拥堵。
3.5 多种负载均衡策略,(轮循、最小连接数、一致性哈希,下游cpu感知权重)
3.6 错误恢复机制,brpc实现了网络超时重传,断线重连,保障可靠性。

2.1 brpc网络有啥降级?

在部分机器出现故障或性能下降时,通过降级来保障整体系统的稳定。

  1. 超时配置,合理设置超时时间,避免因个别请求阻塞而导致,整体性能。timeout_ms
  2. 重试机制,max_retry
  3. 负载均衡和故障转移,
  4. 健康检查
  5. 熔断, 当某个服务出现大量错误或者响应过慢时,切断对该服务的调用,
  6. 业务代码降级处理:当某个服务不可用时,使用默认值,或者混存数据,或者使用备用服务。

3、移动语义

为了高效管理对象的资源,c++增加一种语言特性,把一个对象B变成右值引用类型,结合移动构造函数和移动赋值运算符,把对象B的资源(内存、文件句柄等)转移到另外一个对象A。避免数据的拷贝,实现高效管理资源。
std::move()是一个函数模板,可以把一个对象变成右值引用,在代码中明确指出来一个对象马上要被销毁,且他的资源要被窃取。

4、python协程

协程:轻量级的并发编程方式,在单线程内实现并发执行,并且可以方便地进行任务切换和异步操作。Python 的协程实现主要依赖于生成器(Generator)和 async/await 关键字。
当一个函数被声明为 async def,它就成为了一个协程函数,可以使用 await 关键字来挂起当前协程的执行,等待异步操作的完成。
Python 的协程基于事件循环(Event Loop)的机制,事件循环负责调度并发任务的执行,而协程则通过 async/await 实现了在任务间的挂起和恢复。当一个协程被挂起时,事件循环会转而执行其他可以执行的任务,从而实现并发执行的效果。

在底层,Python 的协程利用生成器的特性来实现挂起和恢复的操作。当一个协程函数内部使用 await 挂起时,实际上在生成器对象上进行了暂停操作,将控制权交给事件循环。当等待的异步操作完成后,事件循环会重新激活该协程,使其从上次暂停的地方继续执行。

总的来说,Python 的协程通过生成器和 async/await 关键字实现了在单线程内的并发执行,利用事件循环来调度任务的执行,从而实现了高效的异步操作和并发编程。

二、

1. mq怎么保障数据的顺序?

  1. 单一队列
  2. 分区(Partitioning)
    对于需要处理大量消息的系统,可以采用分区(Partition)机制,将消息分散到多个分区,每个分区内部保持顺序,而分区之间无顺序性要求。例如,Apache Kafka 使用分区来提高吞吐量和扩展性。

保证顺序的关键点:

消息根据某种逻辑(如消息中的键或ID)路由到特定的分区。
同一键值的消息总是进入同一个分区,从而保障这些消息的顺序。
3. 顺序队列(Ordered Queue)
一些消息队列系统,如 RabbitMQ,通过顺序队列来保障消息的顺序。顺序队列是一种特殊类型的队列,设计上保证了消息的顺序性。

示例:
RabbitMQ 中可以使用“Queue per Consumer”模式,每个消费者绑定到一个独立的队列,从而保证消息的顺序性。

  1. 多级队列(Multi-level Queue)
    多级队列可以用于复杂的场景,通过将消息划分为不同级别,并在每个级别上各自保证顺序性。这样可以在一定程度上兼顾顺序性和系统的扩展性。

  2. 消费者端排序
    在某些场景下,可以在消费者端实现顺序保障。即使消息可能乱序到达消费者,消费者会根据消息中的某个顺序标识(如时间戳、序列号)进行重排,然后再处理。

优点:

灵活,不依赖于消息队列系统本身的顺序保障能力。
缺点:

增加了消费者的复杂度,需要额外的逻辑来实现重排。

3.brpc中上下游通信,怎么测评新增字段大小,对耗时的影响?

编写测试用例跑一下。

相关文章:

24面试记录002

文章目录 12、brpc的优化2.1 brpc网络有啥降级? 3、移动语义4、python协程 二、1. mq怎么保障数据的顺序?3.brpc中上下游通信,怎么测评新增字段大小,对耗时的影响? 1 1、brpc和grpc区别,为啥选择brpc? gr…...

cocos 按钮

1、创建按钮 2、创建脚本 3、将脚本挂载到其他节点上 4、将节点和按钮绑定 即可实现点击按钮触发脚本。 在触发的脚本函数里面设置按钮节点的位置,将其移除屏幕,可以实现点击消失按钮的效果。...

文件扫描工具都有哪些?职场大佬都在用的文本提取工具大盘点~

回想起刚毕业初入职场那阵子,领导让帮忙把纸质文件扫描提取为文本时,还只会傻乎乎地一点点操作,属实是费劲得很! 好在后面受朋友安利,找到了4个能够快速实现文件扫描文字提取的方法,这才让我的办公效率蹭蹭…...

【学习】程序员资源网站

1 书栈网 简介:书栈网是程序员互联网IT开源编程书籍、资源免费阅读的网站,在书栈网你可以找到很多书籍、笔记资源。在这里,你可以根据热门收藏和阅读查看大家都在看什么,也可以根据技术栈分类找到对应模块的编程资源,…...

游戏缓存与异步持久化的完美邂逅

1、问题提出 游戏服务器,需要频繁的读取玩家数据,同时也需求频发修改玩家数据,并持久化到数据库。为了提高游戏服务器的性能,我们应该怎么处理呢? 2、针对读——使用缓存 缓存,是指应用程序从数据库读取完数据之后,就将数据缓存在进程内存或第三方内存(例如redis)。…...

MySQL 高级 - 第十二章 | 数据库的设计规范

目录 第十二章 数据库的设计规范12.1 为什么需要数据库设计12.2 范式12.2.1 范式简介12.2.2 范式都包括哪些12.2.3 键和相关属性的概念12.2.4 第一范式(1st NF)12.2.5 第二范式(2nd NF)12.2.6 第三范式(3rd NF&#xf…...

【Python】AJAX

AJAX基础 一、AJAX1.1 概述1.2 XMLHttpRequest对象1.3 AJAX请求六部曲1.4 图解AJAX请求步骤 二、jQuery与AJAX2.1 jQuery.get()2.2 jQuery.getJSON()2.3 jQuery.post()2.4 jQuery.ajax() 三、Django使用AJAX3.1 请求类型3.2 PUT与PATCH的区别3.3 接收及响应JSON3.3.1 接收JSON3…...

scikit-image安装报错

scikit-image安装报错: pip install scikit-image0.21.0 报错信息: Collecting PyWavelets>1.1.1 (from scikit-image0.21.0) Installing build dependencies … error error: subprocess-exited-with-error 解决方法: 提前安装好PyWave…...

STM32(七)———TIM定时器(基本and通用)

文章目录 前言一、通用定时器TIM简介1.STM32F10X系列总共最多有八个定时器:2.三种STM32定时器的区别:3.STM32 的通用定时器功能:4.计数器模式 二、基本定时器1.基本定时器的结构框图2.定时时间的计算3.定时器的结构体和库函数 总结 前言 一个…...

Spring中网络请求客户端WebClient的使用详解

Spring中网络请求客户端WebClient的使用详解_java_脚本之家 Spring5的WebClient使用详解-腾讯云开发者社区-腾讯云 在 Spring 5 之前,如果我们想要调用其他系统提供的 HTTP 服务,通常可以使用 Spring 提供的 RestTemplate 来访问,不过由于 …...

那些年我为了考PMP踩过的坑.....

说到考PMP我尊嘟很难过且伤心,众所周知,报考PMP都是要报机构的而且还是PMI认证的机构,所以在报考PMP过程中选的机构我可以说踩过了很多坑了...... Q:包过吗? 大家千万不要信某某机构说的包过噱头,真的很坑…...

邦芒解析:新人入职后存在的三种职场心理误区

​​多数职场新人会认为自己工作不快乐,不能正确处理职场人际关系。尤其是新人入职后在处理人际关系方面更明显,下面简述新人入职后主要存在的三种职场心理误区。 误区一:面对对上司的恐惧 学会和上司沟通,新人要采用上司容易接受…...

MFC案例:利用SetTimer函数编写一个“计时器”程序

一、希望达成效果 利用基于对话框的MFC项目,做一个一方面能够显示当前时间;另一方面在点击开始按钮时进行读秒计时,计时结果动态显示,当点击结束时读秒结束并保持最后结果。 二、编程步骤及相关代码、注释 1、启动VS…...

2. 音视频H264

视频软件基本流程 1.什么是H264 H.264是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准 H265又名高…...

烽宇团队回报社会,走进贵州山区公益行

贵州省——在一片美丽的黔山秀水间,烽宇团队成员用实际行动诠释了“取之于民,用之于民”的公益精神。作为在科技和商业领域取得显著成就的团队,烽宇团队不仅在商业上取得了辉煌的成绩,还积极投身于社会公益事业,回报社会。 取之于民,用之于民 近年来,烽宇团队在多位行业领袖的…...

硬盘格式化NTFS好还是exFAT好 U盘存储文件用哪个格式好? 硬盘用exfat还是ntfs mac不能读取移动硬盘怎么解决

在计算机世界中,文件系统是数据管理的基石,而NTFS和exFAT无疑是这块基石上的两大巨头。它们各自拥有独特的特点和优势,并在不同的使用场景中发挥着重要作用。 什么是文件系统 文件系统提供了组织驱动器的方法。它规定了如何在驱动器上存储数…...

Elasticsearch机器学习初探:智能数据洞察

在当今数据驱动的时代,企业越来越依赖于数据来做出明智的决策。然而,随着数据量的不断增长和复杂性的增加,传统的数据分析方法已经无法满足快速、准确洞察数据的需求。为了应对这一挑战,Elasticsearch引入了机器学习功能&#xff…...

贪心算法——赶作业(C++)

慢慢来,沉稳一点。 2024年6月18日 题目描述 A同学有n份作业要做,每份作业有一个最后期限,如果在最后期限后交作业就会扣分,现在假设完成每份作业都需要一天。A同学想安排作业顺序,把扣分降到最低,请帮他实…...

Python 数据可视化 多色散点图

Python 数据可视化 多色散点图 fig, ax plt.subplots() max_line max([max(merged_df[unif_ref_value]), max(merged_df[unif_rust_value])]) min_line min([max(merged_df[unif_ref_value]), max(merged_df[unif_rust_value])]) ax.plot([min_line, max_line], [min_line, …...

C语言入门系列:数据类型之浮点数

文章目录 一,什么是浮点数二,C语言中的浮点数1,float1.1 float的声明1.2 float的存储格式1.3 float的精度和范围 2,double2.1 double变量的声明2.2 double的存储格式1.3 double的精度和范围1.4 long double 3,0.2 0.1…...

LLM API安全攻防实战:从提示词注入到自动化测试方案

1. 项目概述:被忽视的LLM API安全前线最近在帮几个团队做上线前的安全审计,发现一个挺有意思的现象:大家对于传统API的鉴权、限流、SQL注入这些常规检查已经形成了肌肉记忆,但一旦涉及到LLM(大语言模型)的A…...

Godot中型项目工程化实践:目录规范、资源引用与状态管理

1. 这不是续集,而是项目落地的分水岭“Godot 游戏引擎项目(二)”——看到这个标题,很多人第一反应是:“哦,上一篇讲了环境搭建和Hello World,这篇该讲节点树和信号了?”但我在带三个…...

机器学习模型评估中的构念效度:超越基准测试分数的科学推断

1. 项目概述与核心问题在机器学习的日常研究和工程实践中,我们每天都在和各种各样的基准测试(Benchmark)打交道。无论是为了比较新提出的ResNet变体在ImageNet上的Top-1准确率,还是评估一个大型语言模型在MMLU上的常识推理能力&am…...

2026上半年数据库系统工程师(软考)上午题回忆与解析(非标答版)

本文为考后回忆整理,非官方标准答案,旨在为考后对答案及下半年备考的同学提供参考。题目顺序和表述可能与原卷有出入,欢迎在评论区指正、补充。📊 整体考情分析 刚结束的2026年上半年数据库系统工程师考试,上午题的风格…...

SAP-ABAP:变量、常量、结构与内表声明(10篇博客合集) 第五篇:声明时的键值设计技巧:结构与内表的主键、非主键配置指南

变量、常量、结构与内表声明(10篇博客合集) 第五篇:声明时的键值设计技巧:结构与内表的主键、非主键配置指南如果把内表比作一张内存中的“数据库表”,那么键就是这张表的索引甚至主键。键的设计直接决定了数据的唯一性…...

关联规则挖掘在Calabi-Yau流形Hodge数分析中的应用与复现

1. 项目概述:当数据挖掘遇见高维几何在理论物理和代数几何的交叉领域,Calabi-Yau流形一直扮演着核心角色。这些具有特殊拓扑结构的空间,不仅是弦理论中额外维度紧化的关键候选者,其本身丰富的数学性质也吸引着无数研究者。然而&am…...

Web渗透测试能力成长地图:从工具使用到漏洞认知跃迁

1. 这不是工具清单,而是一张Web渗透测试的“能力成长地图”你刚点开这篇文章,大概率正站在两个路口之间:一边是网上铺天盖地的“十大免费扫描器推荐”,点进去全是截图下载链接一句“一键扫漏洞”,结果装完跑两下&#…...

3分钟快速安装BetterNCM插件管理器,让你的网易云音乐功能翻倍

3分钟快速安装BetterNCM插件管理器,让你的网易云音乐功能翻倍 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐功能单一而烦恼吗?想要解锁更多个…...

如何用WaveTools终极优化《鸣潮》游戏性能:从卡顿到丝滑的完整指南

如何用WaveTools终极优化《鸣潮》游戏性能:从卡顿到丝滑的完整指南 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 如果你正在玩《鸣潮》却频繁遭遇帧率波动、画面卡顿或操作延迟,那…...

ESP32搭建TFT_LCD中文字库,附常用字库

(一)简介 在使用ESP32的时候,我们知道OLED屏幕是有中文库的,里面有非常多的常用字,但是LCD屏幕只有取模才能得到中文字体,那我们本期教程就来教大家如何搭建自己的字体库,使用中文字体更加方便快…...