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

深入理解RBAC

RBAC是一种基于角色实现访问控制的权限管理机制,通过定义角色和权限、用户和角色、角色和角色之间的关系,实现多层次、细粒度、可复用的权限管理系统。原文: Role-based Access Control (RBAC) Model[1]

Bernard Hermant@Unsplash
Bernard Hermant@Unsplash

Avery Pennarun写的"RBAC like it was meant to be[2]非常值得一读。

在web或移动应用中,访问权限控制机制是保证系统安全[3]的重要手段,其中最常见的就是基于角色的访问控制(RBAC, Role-based Access Control)。

基于角色的访问控制是传统访问控制(自主访问[4]强制访问[5])的一种有前途的替代方案。在RBAC模式下,权限与角色相关联,从而大大简化了对权限的管理。组织为了完成各种任务,从而创建了角色,用户根据职责和技能被分配到相应的角色,也可以从一个角色分配到另一个角色。新角色可以根据新需求和系统集成赋予新的权限,也可以从角色中撤回权限。可以建立角色-角色关系来包含更广泛的客观情况。

图片来源: https://www.dnsstuff.com/rbac-vs-abac-access-control
图片来源: https://www.dnsstuff.com/rbac-vs-abac-access-control
访问控制模型
  1. 访问控制列表(ACL, Access Control List) [6]
  2. 自主访问控制(DAC, Discretionary Access Control) [7]
  3. 强制访问控制(MAC, Mandatory Access Control) [8]
  4. 基于角色的访问控制(RBAC, Role-Based Access Control) [9]
  5. 基于属性的访问控制(ABAC, Attribute-based Access Control) [10]
  6. 基于历史的访问控制(HBAC, History-based Access Control) [11]
  7. 基于身份的访问控制(IBAC, Identity-based Access Control) [12]
  8. 基于组织的访问控制(OrBAC, Organization-based Access Control) [13]
  9. 基于网格的访问控制(LBAC, Lattice-based access control) [14]
  10. 基于上下文的访问控制(CBAC, Context-based Access Control) [15]
  11. 基于实体关系的访问控制(ReBAC, Entity-Relationship-based Access Control) [16]
  12. 扩展基于角色的访问控制(Extended Role-Based Access Control) [17]
  13. 语义访问控制(SAC, Semantic Access Control) [18]

什么是RBAC?
图片来源: https://www.quora.com/What-does-the-role-based-access-control-model-mean-in-workforce-management
图片来源: https://www.quora.com/What-does-the-role-based-access-control-model-mean-in-workforce-management
  • 通过分配一组与角色关联的权限来提供高级访问
  • 支持公认的安全原则: 最小特权原则、责任分离原则和数据抽象原则
  • 最小权限原则(The principle of least privilege) — 限制与角色关联的权限的数量和大小
  • 职责分离原则(The principle of separation of responsibilities) — 在完成重要任务的过程中,分配一个以上相互约束的角色
  • 数据抽象原则(The principle of data abstraction) — 对不同用户的操作提供不同权限的清晰分离
  • 不同类型用户可以根据其工作职能和职责获得不同类型的访问权限来履行其职责
  • 低级操作人员(例如运维人员)只能查看本部门记录,高级操作人员(例如经理)可以查看和编辑本部门记录

概念
角色(Roles)
  • 由许多标准定义,包括权限、职责、成本中心以及业务操作流程。
  • 无法通过身份确定角色,权限与角色绑定。
  • 角色是围绕访问管理组织的,无论是什么样的活动、身份、职能等,角色可能都不变。
权限(Permissions)
  • 权限是一组资源的集合,用户需要批准权限才能使用一组资源对受保护对象执行操作。
  • 操作功能模块(添加、删除、更新、编辑、查看、上传),进入菜单,一键进入页面
  • 在某些系统设计中,功能操作可以被视为文件、类别、菜单、页面元素、模块、数据、字段等。

User -> Role -> Permissions -> resources


RBAC模型

NIST RBAC96模型是由美国国家标准与技术研究院[19]开发的标准化RBAC定义。

4个基本概念模型:

图片来源: https://transang.me/pattern-oriented-software-architecture-access-control-pattern
图片来源: https://transang.me/pattern-oriented-software-architecture-access-control-pattern
  1. RBACO — 核心RBAC
  2. RBAC1 — 层次RBAC (RBAC0 + 角色层次结构)
  3. RBAC2 — 约束RBAC (RBAC0 + 约束)
  4. RBAC3 — 组合RBAC (RBAC1 + RBAC2)

RBAC授权的过程可以抽象为:

  1. 谁(Who) — 权限的用户或角色
  2. 什么(What) — 资源
  3. 如何(How) — 具体的权限

RBAC0
  • 3个元素: 用户、角色和权限
  • 设计基于"[多对多(many-to-many)](https://en.wikipedia.org/wiki/Many-to-many_(data_model "多对多(many-to-many "多对多(many-to-many)")"))"关系,即多个用户可以拥有相同的角色,一个用户可以拥有多个角色。
图片来源: https://www.bettercloud.com/monitor/the-fundamentals-of-role-based-access-control
图片来源: https://www.bettercloud.com/monitor/the-fundamentals-of-role-based-access-control
RBAC1
  • 4个元素: 用户、角色、权限、层次结构/继承
  • 定义了不同角色之间的从属关系
  • 高级别角色可以自动从低级别角色获取权限
  • 角色之间的继承关系可以分为一般继承关系和有限继承关系
  • 一般继承关系只要求角色继承关系是绝对的偏序关系( 角色之间的多重继承)
  • 有限继承关系要求角色继承关系是树状结构( 角色之间的单一继承)

StackOverflow的Q/A帖子"如何设计基于角色的分层访问控制系统[20]"是一个很好的例子,值得一读。

  1. 树(Tree) — (自底向上的层次结构) — 树底部的元素被授予更大的权限。
  2. 倒立树(Inverted Tree) — (自顶向下的层次结构) — 高级角色将其部分权限继承给低级角色,同一级别的节点不共享权限。
图片来源: https://techdifferences.com/difference-between-top-down-and-bottom-up-approach.html
图片来源: https://techdifferences.com/difference-between-top-down-and-bottom-up-approach.html
  1. 网格(Grid) — (自底向上和自顶向下的组合) — 每个角色都可以从它下面和上面的节点继承权限,因此相对灵活,可以共享权限。顶级节点被授予更大的权限。
图片来源: http://grid-layout.com/grid-lines.html
图片来源: http://grid-layout.com/grid-lines.html
RBAC2
  • 4个元素: 用户、角色、权限和约束
  • 由于存在利益冲突策略,角色之间的关系存在约束
图片来源: https://slideplayer.com/user/10879796
图片来源: https://slideplayer.com/user/10879796
RBAC3
  • 将RBAC1和RBAC2的所有特征(角色继承和约束关系)集成到模型中。
  • 可以根据不同的上下文限制或激活可用的用户权限,当用户在会话期间执行的任务可能需要不同级别的访问时,可以在会话期间激活更高级别的权限。

类图
  1. User表(用户ID、用户名和其他属性)
  2. Role表(角色ID,角色名,角色类型)
  3. User_Role表(用户角色关联表)
  4. Product表(产品ID,产品类型,渠道,费用,地区)
  5. Region表(地区代码、渠道)
  6. Permission表(权限ID、权限类型、权限名称和其他属性)
  7. Role_permission表(角色权限关联表)
  8. Menu表(菜单ID,菜单名称,菜单路径URL,父菜单ID,资源和其他属性)
  9. Page_element表(资源、页面元素ID、页面元素代码和其他属性)
  10. File表(文件ID,文件名,文件路径)
  11. Permission_Menu表(权限ID,菜单ID)
  12. Permission_Element表(权限ID,页面元素ID)
  13. Permission_File表(权限ID,文件ID)
  14. Operation表(动作ID、动作名称、动作代码等属性)
  15. Permission_Operation表(权限ID,操作ID)

RBAC模型的优点
  1. 降低授权管理的复杂性
  2. 降低管理成本
  3. 创建系统级的、可复用的权限分配
  4. 减少分配用户权限时出错的可能性
  5. 支持企业安全策略
RBAC模型的缺点
  1. 不提供操作顺序控制机制

参考文献

History-based access control[21]

Pattern-Oriented Software Architecture - Access control pattern[22]

Role-Based Access Control | CSRC[23]

Role-Based Access Control - Wikipedia[24]

What is Role-Based Access Control (RBAC)? Example, Benefits, and More[25]

What is Role-Based Access Control | RBAC vs ACL vs ABAC | Imperva[26]

Using RBAC Authorization[27]

What is Azure role-based access control (Azure RBAC)?[28]

Role-Based Access Control[29]

RBAC vs ABAC: Make the Right Call | OneLogin[30]

Understanding Role-Based Access Control (RBAC) | StrongDM[31]

What is Role-Based Access Control (RBAC)?[32]

What is Role-Based Access Control (RBAC)?[33]

Role-Based Access Control (RBAC) User Guide | Chronicle Security | Google Cloud[34]

What is Role-Based Access Control (RBAC)? A Complete Guide | Frontegg[35]

Role-Based Access Control (RBAC): What is it and why use it? | Harness[36]

What is Role-Based Access Control (RBAC)? | Tools4ever[37]


你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind

参考资料

[1]

Role-based Access Control (RBAC) Model: https://medium.com/geekculture/role-based-access-control-rbac-model-7d8e7b7350d2

[2]

RBAC like it was meant to be: https://tailscale.com/blog/rbac-like-it-was-meant-to-be

[3]

系统安全: https://twitter.com/jinlow_blogger/status/1580022558396936192

[4]

自主访问: https://en.wikipedia.org/wiki/Discretionary_access_control

[5]

强制访问: https://en.wikipedia.org/wiki/Mandatory_access_control

[6]

Access Control List: https://en.wikipedia.org/wiki/Access-control_list

[7]

Discretionary Access Control: https://en.wikipedia.org/wiki/Discretionary_access_control

[8]

Mandatory Access Control: https://en.wikipedia.org/wiki/Mandatory_access_control

[9]

Role-Based Access Control: https://en.wikipedia.org/wiki/Role-based_access_control

[10]

Attribute-based Access Control: https://en.wikipedia.org/wiki/Attribute-based_access_control

[11]

History-based Access Control: https://en.everybodywiki.com/History-based_access_control

[12]

Identity-based Access Control: https://en.wikipedia.org/wiki/Identity-based_security

[13]

Organization-based Access Control: https://en.wikipedia.org/wiki/Organisation-based_access_control

[14]

Lattice-based access control: https://www.ibm.com/docs/en/db2/11.5?topic=security-label-based-access-control-lbac

[15]

Context-based Access Control: https://en.wikipedia.org/wiki/Context-based_access_control

[16]

Entity-Relationship-based Access Control: https://www.scaledaccess.com/whitepapers/the-developers-guide-to-relationship-based-access-control/#:~:text=Relationship%2Dbased%20access%20control%20is,specific%20relationships%20the%20subject%20has.

[17]

Extended Role-Based Access Control: https://ucm.riskmanager.modulo.com/manual/en/default.htm#!Documents/extendedrolebasedaccesscontrolmodel.htm

[18]

Semantic Access Control: https://en.wikipedia.org/wiki/Semantic_security

[19]

美国国家标准与技术研究院: https://www.nist.gov

[20]

如何设计基于角色的分层访问控制系统: https://stackoverflow.com/questions/16139712/how-to-design-a-hierarchical-role-based-access-control-system

[21]

History-based access control: https://en.everybodywiki.com/History-based_access_control

[22]

Pattern-Oriented Software Architecture - Access control pattern: https://transang.me/pattern-oriented-software-architecture-access-control-pattern/

[23]

Role-Based Access Control | CSRC: https://csrc.nist.gov/projects/role-based-access-control

[24]

Role-Based Access Control - Wikipedia: https://en.wikipedia.org/wiki/Role-based_access_control

[25]

What is Role-Based Access Control (RBAC)? Example, Benefits, and More: https://digitalguardian.com/blog/what-role-based-access-control-rbac-examples-benefits-and-more

[26]

What is Role-Based Access Control | RBAC vs ACL vs ABAC | Imperva: https://www.imperva.com/learn/data-security/role-based-access-control-rbac

[27]

Using RBAC Authorization: https://kubernetes.io/docs/reference/access-authn-authz/rbac

[28]

What is Azure role-based access control (Azure RBAC)?: https://learn.microsoft.com/en-us/azure/role-based-access-control/overview

[29]

Role-Based Access Control: https://auth0.com/docs/manage-users/access-control/rbac

[30]

RBAC vs ABAC: Make the Right Call | OneLogin: https://www.onelogin.com/learn/rbac-vs-abac

[31]

Understanding Role-Based Access Control (RBAC) | StrongDM: https://www.strongdm.com/rbac

[32]

What is Role-Based Access Control (RBAC)?: https://www.varonis.com/blog/role-based-access-control

[33]

What is Role-Based Access Control (RBAC)?: https://www.okta.com/identity-101/what-is-role-based-access-control-rbac

[34]

Role-Based Access Control (RBAC) User Guide | Chronicle Security | Google Cloud: https://cloud.google.com/chronicle/docs/administration/rbac

[35]

What is Role-Based Access Control (RBAC)? A Complete Guide | Frontegg: https://frontegg.com/guides/rbac

[36]

Role-Based Access Control (RBAC): What is it and why use it? | Harness: https://harness.io/blog/rbac

[37]

What is Role-Based Access Control (RBAC)? | Tools4ever: https://www.tools4ever.com/glossary/what-is-role-based-access-control

- END -

本文由 mdnice 多平台发布

相关文章:

深入理解RBAC

RBAC是一种基于角色实现访问控制的权限管理机制,通过定义角色和权限、用户和角色、角色和角色之间的关系,实现多层次、细粒度、可复用的权限管理系统。原文: Role-based Access Control (RBAC) Model[1] Bernard HermantUnsplash Avery Pennarun写的&quo…...

uniapp微信小程序蓝牙连接与设备数据对接

蓝牙连接并通信方法封装大致步骤。 初始化蓝牙并搜索;获取并启用service服务;数据读取和监听设备返回数据 需要使用uniapp官方提供api: // 关闭蓝牙 uni.closeBluetoothAdapter({}) // 打开蓝牙 uni.openBluetoothAdapter({}) // 搜索附近…...

HBase 计划外启动 Major Compaction 的原因

HBase 的 Compaction 有两个线程池,一个是为 Minor Compaction 准备的, 一个是为 Major Compaction 准备的,hbase.regionserver.thread.compaction.throttle 是决定 Compaction 请求放入哪个线程池的阈值,当待合并文件的总大小小于这个阈值时,就是一个 Minor Compaction,…...

设计模式-桥接模式

概念 用于把抽象化与实现化解耦使得二者可以独立变化 演示 class ColorShape {yellowCircle() {console.log(yellow circle)}redCircle() {console.log(red circle)}yellowTriangle() {console.log(yellow triangle)}redTriangle() {console.log(red triangle)} }// 测试 le…...

arcgis地形分析全流程

主要内容:DEM的获取与处理、高程分析、坡度分析、坡向分析、地形起伏度分析、地表粗糙度分析、地表曲率分析; 主要工具:镶嵌至新栅格、按掩膜提取、投影栅格、坡度、坡向、焦点统计 一 DEM的获取与处理 1.1 DEM是什么? DEM(D…...

mapper.xml中的sql标签

在MyBatis中&#xff0c;mapper.xml文件是用于定义数据库操作的映射文件&#xff0c;其中的<sql>标签用于定义可重用的SQL片段。这些SQL片段可以在<select>, <update>, <insert>, <delete>等操作中被引用&#xff0c;以避免在多个地方重复编写相…...

重启redis的步骤

要重启 Redis&#xff0c;需要使用以下步骤&#xff1a; 登录到您的服务器&#xff1a;使用 SSH 或其他远程访问方式登录到托管 Redis 的服务器。 停止 Redis 服务器&#xff1a;您可以使用以下命令停止 Redis 服务器&#xff1a; redis-cli shutdown 这将向 Redis 服务器发送…...

第二证券:如何选股票的龙头股?

在股票商场中&#xff0c;每个出资者的方针都是可以出资到那些未来可以表现出色并带领整个工作开展的龙头股。选股关于出资者来说非常要害&#xff0c;由于选股不妥或许会导致出资失利。那么&#xff0c;怎么选股票的龙头股呢&#xff1f;本文从多个角度进行剖析&#xff0c;协…...

【华为OD机考B卷 | 100分】统计监控、需要打开多少监控器(JAVA题解——也许是全网最详)

前言 本人是算法小白&#xff0c;甚至也没有做过Leetcode。所以&#xff0c;我相信【同为菜鸡的我更能理解作为菜鸡的你们的痛点】。 题干 OD&#xff0c;B 卷 100 分题目【OD 统一考试&#xff08;B 卷&#xff09;】 1. 题目描述 某长方形停车场每个车位上方都有一个监控…...

Python Django 详解(基础)

文章目录 1 概述1.1 安装 django1.2 创建 django 项目1.3 创建 app 2 启动 Django2.1 settings.py&#xff1a;注册 app2.2 view.py&#xff1a;URL和视图对应2.3 启动 Django2.4 访问 3 快速上手3.1 templates&#xff1a;html 模板3.2 static&#xff1a;静态文件3.3 模板语法…...

C语言内存函数

目录 memcpy(Copy block of memory)使用和模拟实现memcpy的模拟实现 memmove(Move block of memory)使用和模拟实现memmove的模拟实现: memset(Fill block of memory)函数的使用扩展 memcmp(Compare two blocks of memory)函数的使用 感谢各位大佬对我的支持,如果我的文章对你有…...

【Docker】Docker-compose及Consul多容器编排工具

使用一个Dockerfile模版文件可以定义一个单独的应用容器&#xff0c;当需要定义多个容器时就需要编排 docker swarm&#xff08;管理跨节点&#xff09; 编排工具——docker compose Dockerfile可以让用户管理一个单独的应用容器&#xff1b;而Compose则允许用户在一个模板&…...

Unity网络同步方案帧同步和状态同步

网络同步方案 介绍开始我们使用的状态同步&#xff08;实时状态同步&#xff09;后来采用的帧同步 状态同步优点缺点 帧同步顺序执行追帧重连优点缺点 总结 这两年做的都是帧同步和状态同步的项目&#xff0c;正好最近有时间总结一下什么是帧同步和状态同步&#xff0c;之前在做…...

【Monorepo实战】pnpm+turbo+vitepress构建公共组件库文档系统

Monorepo架构可以把多个独立的系统放到一起联调&#xff0c;本文记录基于pnpm > workspace功能&#xff0c;如何构建将vitepress和组件库进行联调&#xff0c;并且使用turbo进行任务顺序编排。 技术栈清单&#xff1a; pnpm 、vitepress 、turbo 一、需求分析 1、最终目标…...

CentOS 编译安装Redis

一、编译配置hiredis.h C来操作redis数据库。通过hiredis接口来实现&#xff0c;目前只能在Linux环境使用。 下载hiredis.h hiredis的下载地址为&#xff1a;https://github.com/redis/hiredis 解压并编译hiredis [rootlocalhost source_code]# pwd /usr/local/source_…...

可拓展的低代码全栈框架

尽管现在越来越多的人开始对低代码开发感兴趣&#xff0c;但已有低代码方案的局限性仍然让大家有所保留。其中最常见的担忧莫过于低代码缺乏灵活性以及容易被厂商锁定。 显然这样的担忧是合理的&#xff0c;因为大家都不希望在实现特定功能的时候才发现低代码平台无法支持&…...

C++11 智能指针

目录 智能指针 异常导致执行流乱跳 智能指针解决问题 auto_ptr unique_ptr sharded_ptr weak_ptr 智能指针 由于C11引入异常之后&#xff0c;执行流乱跳&#xff0c;所以导致之前 malloc/new 的空间很容易没有被释放&#xff0c;导致内存泄露问题。 所以这时候&#x…...

二、WebGPU阶段间变量(inter-stage variables)

二、WebGPU阶段间变量&#xff08;inter-stage variables&#xff09; 在上一篇文章中&#xff0c;我们介绍了一些关于WebGPU的基础知识。在本文中&#xff0c;我们将介绍阶段变量&#xff08;inter-stage variables&#xff09;的基础知识。 阶段变量在顶点着色器和片段着色…...

【Linux】31个普通信号

文章目录 1.每种信号的含义2.两种不能被忽略的信号3.两种不能被捕捉的信号 1.每种信号的含义 信号编号信号名信号含义1SIGHUP如果终端接口检测到一个连接断开&#xff0c;则会将此信号发送给与该终端相关的控制进程&#xff0c;该信号的默认处理动作是终止进程。2SIGINT当用户…...

Mac电脑交互式原型设计 Axure RP 8汉化最新 for mac

Axure RP 8是一款专业且快速的原型设计工具&#xff0c;主要用于定义需求、规格、设计功能和界面。这款工具主要适用于用户体验设计师、交互设计师、业务分析师、信息架构师、可用性专家和产品经理等职业。 Axure RP 8的主要特性包括能够快速设计出应用软件或Web网站的线框图、…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

鸿蒙Navigation路由导航-基本使用介绍

1. Navigation介绍 Navigation组件是路由导航的根视图容器&#xff0c;一般作为Page页面的根容器使用&#xff0c;其内部默认包含了标题栏、内容区和工具栏&#xff0c;其中内容区默认首页显示导航内容&#xff08;Navigation的子组件&#xff09;或非首页显示&#xff08;Nav…...

LeetCode 0386.字典序排数:细心总结条件

【LetMeFly】386.字典序排数&#xff1a;细心总结条件 力扣题目链接&#xff1a;https://leetcode.cn/problems/lexicographical-numbers/ 给你一个整数 n &#xff0c;按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。…...

C/Python/Go示例 | Socket Programing与RPC

Socket Programming介绍 Computer networking这个领域围绕着两台电脑或者同一台电脑内的不同进程之间的数据传输和信息交流&#xff0c;会涉及到许多有意思的话题&#xff0c;诸如怎么确保对方能收到信息&#xff0c;怎么应对数据丢失、被污染或者顺序混乱&#xff0c;怎么提高…...