hadoop.proxyuser.代理用户.授信域 用来干什么的
在Hadoop的core-site.xml文件中存在三个可选配置,如下
<property><name>hadoop.proxyuser.root.hosts</name><value>*</value>
</property>
<property><name>hadoop.proxyuser.root.groups</name><value>*</value>
</property>
<property><name>hadoop.proxyuser.root.users</name><value>hdfs,yarn</value>
</property>
使用最多的是上面两个,但是它们是干什么的很多人就蒙圈了,只知道配置hive或者其他生态圈服务时配置上就能让鉴权好使,为什么好使说不上来,这篇就告诉你这三个配置是干啥的
首先Hadoop整体用户体系,采用的是依赖Linux用户模式,它自己不主动生成,只会在一个linux用户首次操作hdfs时,默认在hdfs:/namenode:端口/user
下生成一个对应用户的主路映射,当然有些服务或操作用的是/tmp路径,会在/tmp下对应的服务路径下生成用户映射路径,而不是/user
,但是这个映射路径里面通常情况下是没有东西的,比如说环境变量等等这些在hdfs中是不存在的,对于hdfs主管上来讲只有一种情况里面会有东西,就是某个用户去操作的东西需要某些类库时,hdfs会自动将用到的资源放在该用户的映射路径下。
最常见的就是hive服务,如果手边有测试集群,按照你的搭建手册可以在代理用户
的映射路径下看到如下的类似路径以及资源
再或者提交mr之后,会在/tmp下的hadoop-yarn下生成映射路径并,存在一个临时任务提交路径
到此,hadoop依靠linux用户体系实现了不同用户的权限隔离,但是hadoop自身有两个权限风险
1、它自身的构建用户(2.x是文件所属以及运行format的用户,3.x是文件所属以及配置文件中写死的用户),拥有不在权限隔离能力之内的超级权限
2、hdfs中,是否有路径读取权限看的是路径自身的权限控制,但是能否写操作看的是目标路径的父路径权限,注意是第一级父路径,再往上的父级没有影响
,这就导致当A、B两个用户,在一个同组、其他用户有写权限的路径下的所有文件是可以互删的,所以hadoop默认的路径权限是755
对于第一个风险,hadoop并没有做一刀切,因为一个文件系统确实需要一个超级用户的角色,比如作为使用方你把linux的root用户密码泄露了,总不能说是Linux的不适吧。不过hadoop2.x从3.x发展时加强了安全相关的控制细节,使得3.x的超级管理用户可以在配置文件中更改
重点是第二个风险,为了数据安全业内有很多处理方案,比如hadoop本身支持你不用hdfs,只要技术足够,你可以内嵌其他的文件系统,比如百度的BOS对象存储系统。但如果你仍然选择使用hdfs,在合理设置默认文件路径权限的同时,争对确实有跨用户身份的场景,比如hive这种启动之后多用户各自操作表的服务,hadoop提供了开头的三个配置
三个配置作用是向hadoop表明,当前存在一个起到代理作用的用户,它要在后期使用时,能够用来代替受信域内所有用户的身份,从而以对应身份做相关操作。所有被标记为代理作用的用户hadoop在内部都会有一系列的安全管控,并提供了统一的api,使得其他服务内部可以去调用做正常的鉴权,作为使用方,你不需要关注,你只需要知道一个服务,要想在hadoop上,执行多用户直接操作就必须持有一个用来做代理的代理用户。
不止hive,早先的hue、ooize都是这样,就以以hive为例,当你不配置代理用户,或者配置了代理用户,但是启动服务器用的不是代理用户,此时在hive的日志文件中,你就会看到如下的报错User ${启动服务的用户} is not allowed to perform this API call
。关键是这个报错只会出现在hive的log4j日志文件中,如果你没放开log4g,你会永远卡在hivemeta、hiveserver2启动不报错,单hiveserver2一直在重试sessionid的流程上
同样的代理用户会持有一切必要的资源,比如hive的exe.jar,这点就和最开始的截图中显示的那样。
综上所述,这三个配置只要你的授信域是合理的,且正常使用,就不用担心代理用户会主动
拥有授信域下用户的权限,这里的主动是指非授信域发起操作时,代理用户被随意登录直接以授信域权限操作某些东西,因为代理用户是面向服务端以统一的api接口管控,也不用担心授信域内任何一个用户都有其他用户的权限,因为是代理用户获得了授信域内用户的身份,去做操作,而不是授信域用户直接以代理角色去执行操作
一般情况下,任然采用hdfs的场景,如果是私有云,这一点一般不操作,公有云的话会设一道路径墙,通俗的将就是hdfs上除了hive的数据存放根路径之外的其他路径权限都是700
,hive数据存放根路径自身是700
,不同用户申请账号的时候单独在下面存在一个用户级别隔离的路径,按照需要另行设置权限
其实这个东西在Hadoop2.x较低版本的时候,你不配置也不影响使用,只是随着时间的推移,hadoop的安全相关越来越严格
至于代理用户,商用环境下一般都是给专属某个服务配置代理,比如hive服务的用户,或者其他的一些,至于授信域,一般没有特殊需求就是*
,而授信域是ip、用户组、还是某个用户就看具体情况而定了
最后要说的是一个使用上的注意点,使用hadoop配置好代理用户之后,会稍微影响服务的连接或者使用方式,就用hive来说,当你配置一个名为hive的用户做代理用户,并以hive用户启动服务之后,在服务器上用beeline连接的话,非hive用户就不能直接写/opt/hive-3.1.3/bin/beeline -u jdbc:hive2://node1:10000 -n root -p 123456
这样的启动连接命令了,这点和hive配置了hiveserver2高可用一样,其他用户使用,必须在beeline的会话窗口中连接
[root@node1 ~]# /opt/hive-3.1.3/bin/beeline
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hive-3.1.3/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop-3.2.3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Beeline version 3.1.3 by Apache Hive
beeline> !connect jdbc:hive2://node1:10000
Connecting to jdbc:hive2://node1:10000
Enter username for jdbc:hive2://node1:10000: hive
Enter password for jdbc:hive2://node1:10000: ******
Connected to: Apache Hive (version 3.1.3)
Driver: Hive JDBC (version 3.1.3)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://node1:10000> select * from a;
如果非hive用户使用参数直接连接,会报下面的错误
[root@node1 opt]# /opt/hive-3.1.3/bin/beeline -u jdbc:hive2://node1:10000 -n hive -p 123456
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hive-3.1.3/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop-3.2.3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connecting to jdbc:hive2://node1:10000
25/05/17 23:53:50 [main]: WARN jdbc.HiveConnection: Failed to connect to node1:10000
Could not open connection to the HS2 server. Please check the server URI and if the URI is correct, then ask the administrator to check the server status.
Error: Could not open client transport with JDBC Uri: jdbc:hive2://node1:10000: java.net.ConnectException: Connection refused (Connection refused) (state=08S01,code=0)
Beeline version 3.1.3 by Apache Hive
相关文章:
hadoop.proxyuser.代理用户.授信域 用来干什么的
在Hadoop的core-site.xml文件中存在三个可选配置,如下 <property><name>hadoop.proxyuser.root.hosts</name><value>*</value> </property> <property><name>hadoop.proxyuser.root.groups</name><value…...
python 自动化教程
文章目录 前言整数变量字符串变量列表变量算术操作比较操作逻辑操作if语句for循环遍历列表while循环定义函数调用函数导入模块使用模块中的函数启动Chrome浏览器打开网页定位元素并输入内容提交表单关闭浏览器发送GET请求获取网页内容使…...
C++学习:六个月从基础到就业——C++11/14:列表初始化
C学习:六个月从基础到就业——C11/14:列表初始化 本文是我C学习之旅系列的第四十三篇技术文章,也是第三阶段"现代C特性"的第五篇,主要介绍C11/14中的列表初始化特性。查看完整系列目录了解更多内容。 引言 在C11之前&a…...
城市静音革命:当垃圾桶遇上缓冲器
缓冲垃圾桶的核心原理是通过机械或液压装置实现垃圾桶盖的缓慢闭合,包含以下技术要点:能量吸收机制液压式:通过活塞挤压油液产生阻尼力,将动能转化为热能耗散弹簧式:利用弹性变形储存和释放能量,配合摩…...
数据库的规范化设计方法---3种范式
第一范式(1NF):确保表中的每个字段都是不可分割的基本数据项。 第二范式(2NF):在满足1NF的基础上,确保非主属性完全依赖于主键。 第三范式(3NF):在满足2NF的基…...
p024基于Django的网上购物系统的设计与实现
开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 商品类型管理 商品信息管理 系统管理 订单管理…...
C++跨平台开发:挑战与应对策略
C跨平台开发:挑战与应对策略 在如今设备多样、操作系统碎片化的开发环境中,跨平台能力已成为衡量软件生命力与团队工程效率的重要指标。C 作为高性能系统级语言,在游戏引擎、嵌入式系统、实时渲染等领域依旧坚挺。然而,实现“一次…...
Kotlin 作用域函数(let、run、with、apply、also)对比
Kotlin 的 作用域函数(Scope Functions) 是简化代码逻辑的重要工具,它们通过临时作用域为对象提供更简洁的操作方式。以下是 let、run、with、apply、also 的对比分析: 一、核心区别对比表 函数上下文对象引用返回值是否扩展函数…...
JavaScript性能优化实战(11):前沿技术在性能优化中的应用
引言 随着Web应用复杂度和性能需求不断提高,传统的JavaScript优化技术已经无法满足某些高性能计算场景的需求。本文将深入探讨前沿Web技术如何突破JavaScript的性能瓶颈,为Web应用提供接近原生应用的性能体验。从底层计算到图形渲染,从并发处理到动画优化,我们将通过实际案…...
数据结构【AVL树】
AVL树 1.AVL树1.AVL的概念2.平衡因子 2.AVl树的实现2.1AVL树的结构2.2AVL树的插入2.3 旋转2.3.1 旋转的原则 1.AVL树 1.AVL的概念 AVL树可以是一个空树。 它的左右子树都是AVL树,且左右子树的高度差的绝对值不超过1。AVL树是一颗高度平衡搜索二叉树,通…...
电动调节V型球阀:行业应用与材质选择全解析
电动调节V型球阀:行业应用与材质选择全解析 作为工业自动化控制中的关键设备,电动调节V型球阀凭借其独特的结构设计与高性能调节能力,在石油、化工、造纸等高要求领域广泛应用。本文将从核心功能、行业应用场景、材质选择要点等方面深入解析…...
页面上如何显示特殊字符、Unicode字符?
在前端开发中,显示特殊字符通常涉及到HTML实体(HTML Entities)或 Unicode 字符的使用。以下是一些常见的方法来处理特殊字符的显示: 1、HTML实体: HTML为一些常见的特殊字符提供了预定义的实体。例如,要显…...
桌面端进程通信
以下是关于 Electron 桌面端进程通信的基本知识点总结: 一、Electron 进程模型基础 1. 进程类型与职责 进程类型职责权限主进程(Main)创建窗口、系统级操作、IPC中枢完全Node.js访问权限渲染进程(Renderer)展示Web内容、UI交互默认受限(可配置开启Node.js)预加载脚本(Prelo…...
vue2 切换主题色以及单页面好使方法
今天要新增一个页面要根据不同公司切换不同页面主题色,一点一点来,怎么快速更改 el-pagination 分页组件主题色。 <el-pagination :page-size"pageSize" :pager-count"pageCount"layout"sizes, prev, pager, next, jumper,…...
三层固定实体架构:高效实现图上的检索增强生成(RAG)
知识图谱正在成为跨各个领域组织和检索信息的强大工具。它们越来越多地与机器学习和自然语言处理技术相结合,以增强信息检索和推理能力。在本文中,我介绍了一种用于构建知识图谱的三层架构,结合了固定本体实体、文档片段和提取的命名实体。通过利用嵌入和余弦相似度,这种方…...
pnpm 与 npm 的核心区别
以下是 pnpm 与 npm 的核心区别总结,涵盖依赖管理、性能、安全性等关键维度: 1. 依赖存储机制 • npm: 每个项目的依赖独立存储于 node_modules,即使多个项目使用相同版本的包,也会重复下载和存储。例如,1…...
NVMe简介6之PCIe事务层
PCIe的事务层连接了PCIe设备核心与PCIe链路,这里主要基于PCIe事务层进行分析。事务层采用TLP传输事务,完整的TLP由TLPPrefix、TLP头、Payload和TLP Digest组成。TLP头是TLP中最关键的部分,一般由三个或四个双字的长度,其格式定义如…...
【C++详解】string各种接口如何使用保姆级攻略
文章目录 一、string介绍二、string使用构造函数析构函数赋值运算符重载string的遍历修改方法1、下标[]2、迭代器3、范围for 迭代器使用详解const迭代器反向迭代器(reverse) Capacity(容量相关)size/lengthmax_sizecapacityclear/emptyshrink_to_fit(缩容)reserve(扩…...
深入理解 requestIdleCallback:浏览器空闲时段的性能优化利器
requestIdleCallback 核心作用 requestIdleCallback 是浏览器提供的 API,用于将非关键任务延迟到浏览器空闲时段执行,避免阻塞用户交互、动画等关键任务,从而提升页面性能体验。 基本语法 const handle window.requestIdleCallback(callb…...
QML鼠标事件和按键事件
1 鼠标事件 1.1 MouseArea组件 在QML中,鼠标事件主要通过MouseArea元素处理,它是用于检测和响应鼠标交互的核心组件。常用属性 cursorShape: 光标形状acceptedButtons: 设置响应鼠标的哪些按键事件,默认为鼠标左键 Qt.LeftButton࿱…...
Animaster:一次由 CodeBuddy 主导的 CSS 动画编辑器诞生记
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 起心动念:我想要一个动画编辑器 那天我突然想到,如果能有一个简单好用的 CSS 动画编辑…...
Git 版本控制系统入门指南
Git 版本控制系统入门指南 一、Git 基础概念 1. 什么是 Git? Git 是一个分布式版本控制系统,它可以: 跟踪文件变化协调多人协作管理代码版本支持离线工作保证数据完整性 2. Git 的特点 分布式架构快速分支操作完整历史记录数据完整性保…...
GitHub 趋势日报 (2025年05月16日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1TapXWorld/ChinaTextbookPDF教材。⭐ 4792⭐ 19814Roff2xming521/WeClone&…...
C/C++之内存管理
1. 内存分布 我们定义的变量对于电脑来说也叫数据,同时电脑也会把这些数据分为不同的类型,分别是局部数据,静态数据,全局数据,常量数据和动态申请数据。 在 C 中,各类数据存储位置如下: • 局…...
GitHub文档加载器设计与实现
文章结构: 目录 GitHub文档加载器设计与实现 引言 架构设计 主要组件 核心功能 文档加载流程 加载单个文件 加载目录内容 错误处理与健壮性 分支回退策略 文件类型和大小限制 安全性考虑 SSL证书验证 使用示例 基本使用 测试环境配置 最佳实践 结…...
历史数据分析——中证白酒
简介 中证白酒指数选取涉及白酒生产业务相关上市公司证券作为指数样本,为投资者提供更多样化的投资标的。 估值 中证白酒总体的PB是5.26,在过去十年间位于23.76%,属于较低的水平。 中证白酒总体的PE是20.13,在过去十年间,位于14.24%,属于较低的水平。 从估值的角度似…...
PHP8.0版本导出excel失败
环境:fastadmin框架,不是原版接手的项目。PHP8.0,mysql5.7. code // 创建一个新的 Spreadsheet 对象 $spreadsheet new Spreadsheet(); $worksheet $spreadsheet->getActiveSheet();// 设置表头 $worksheet->setCellValue(A1, ID); $worksheet…...
Seata源码—5.全局事务的创建与返回处理二
大纲 1.Seata开启分布式事务的流程总结 2.Seata生成全局事务ID的雪花算法源码 3.生成xid以及对全局事务会话进行持久化的源码 4.全局事务会话数据持久化的实现源码 5.Seata Server创建全局事务与返回xid的源码 6.Client获取Server的响应与处理的源码 7.Seata与Dubbo整合…...
mac-M系列芯片安装软件报错:***已损坏,无法打开。推出磁盘问题
因为你安装的软件在Intel 或arm芯片的mac上没有签名导致。 首先打开任何来源操作 在系统设置中配置,如下图: 2. 然后打开终端,输入: sudo spctl --master-disable然后输入电脑锁屏密码 打开了任何来源,还遇到已损坏…...
端到端自动驾驶系统实战指南:从Comma.ai架构到PyTorch部署
引言:端到端自动驾驶的技术革命 在自动驾驶技术演进历程中,端到端(End-to-End)架构正引领新一轮技术革命。不同于传统分模块处理感知、规划、控制的方案,端到端系统通过深度神经网络直接建立传感器原始数据到车辆控制…...
MoveIt Setup Assistant 在导入urdf文件的时候报错
在使用MoveIt Setup Assistant导入urdf文件的时候(load a urdf or collada robot model),找到urdf文件后MoveIt Setup Assistant闪退并报错: Warning: Ignoring XDG_SESSION_TYPEwayland on Gnome. Use QT_QPA_PLATFORMwayland to run on Wayland anyway…...
uniapp +vue +springboot多商家订餐系统
uniapp vue springboot多商家订餐系统,这个系统我整理调试的多商家,多用户的,多端小程序订餐系统,主要包含了uniapp小程序端,管理后台页面vue端,后台功能接口Springboot端,源码齐全,…...
docker迅雷自定义端口号、登录用户名密码
在NAS上部署迅雷,确实会带来很大的方便。但是目前很多教程都是讲怎么部署docker迅雷,鲜有将自定义配置的方法。这里讲一下怎么部署,并重点讲一下支持的自定义参数。 一、部署docker 在其他教程中,都是介绍的如下命令,…...
联想笔记本黑屏了,排线出问题还是静电
以下引用 联想电脑屏幕不亮,电源键和键盘灯均正常的解决办法(超简单)_拯救者屏幕不亮,键盘有电-CSDN博客 昨天正常关机后,今天一早来工位打开电脑,美美开始玩手机。 一会之后抬头屏幕是黑的,还以为自动息…...
uniapp -- uCharts 仪表盘刻度显示 0.9999999 这样的值问题处理。
文章目录 🍉问题🍉解决方案🍉问题 在仪表盘上,23.8变成了 23.799999999999997 🍉解决方案 formatter格式化问题 1:在 config-ucharts.js 或 config-echarts.js 配置对应的 formatter 方法 formatter: {yAxisDemo1: function (...
为 Spring Boot 应用程序构建 CI/CD 流水线
为 Spring Boot 应用程序创建构建/部署流水线涉及多个步骤,而 Jenkins 可以作为强大的工具来自动化这些流程。在本教程中,我们将指导您为托管在 GitHub 上的 Spring Boot 应用程序设置流水线,使用 Jenkins 构建该应用程序,并将其部…...
数值分析填空题速通
填空题速通 文章目录 填空题速通误差与误差传播均差插值与误差范数、赋范线性空间与内积、内积空间范数代数精度数值微分积分误差迭代方程与收敛阶微分方程数值解法的迭代公式与阶 误差与误差传播 例 设 a 1.414 a 1.414 a1.414, b − 0.576 b -0.576 b−0.57…...
day016-系统负载压力测试-磁盘管理
文章目录 1. 系统负载2. 模拟系统高负载2.1 模拟cpu负载2.2 模拟IO负载 3. 磁盘接口分类4. 思维导图 1. 系统负载 系统负载是衡量系统繁忙程度的指标负载值接近或超过cpu核心总数表示系统负载高负载高常见原因:1.占用cpu过多导致2.占用磁盘IO过多导致(I…...
DeepSeek指令微调与强化学习对齐:从SFT到RLHF
后训练微调的重要性 预训练使大模型获得丰富的语言和知识表达能力,但其输出往往与用户意图和安全性需求不完全匹配。业内普遍采用三阶段训练流程:预训练 → 监督微调(SFT)→ 人类偏好对齐(RLHF)。预训练阶段模型在大规模语料上学习语言规律;监督微调利用人工标注的数据…...
安全性(一):加密算法总结
一、加密算法分类总览 加密类型关键特性代表算法主要用途对称加密加解密使用同一个密钥DES、3DES、AES、SM4数据加密传输、存储非对称加密公钥加密,私钥解密(或反向)RSA、DSA、ECC、SM2密钥交换、数字签名、身份认证哈希算法不可逆摘要MD5、…...
DeepSeek 赋能军事:重塑现代战争形态的科技密码
目录 一、引言:AI 浪潮下的军事变革与 DeepSeek 崛起二、DeepSeek 技术原理与特性剖析2.1 核心技术架构2.2 独特优势 三、DeepSeek 在军事侦察中的应用3.1 海量数据快速处理3.2 精准目标识别追踪3.3 预测潜在威胁 四、DeepSeek 在军事指挥决策中的应用4.1 战场态势实…...
我司助力高校打造「智慧创新AI学习中心」
为推动AI教育融合跨领域应用,东吴大学于2025年4月举行「智慧创新AI学习中心」揭牌仪式,并宣布正式启动AI特色课程与教学空间建置计画。此次建置由我司协助整体教室空间与设备规划,导入最新NVIDIA GeForce RTX 50系列桌上型电脑,并…...
AI赋能把“杂多集合”转化为“理想集合”的数学建模与认知升级
AI赋能把“杂多集合”转化为“理想集合”的数学建模与认知升级 一、核心概念定义 杂多集合(Chaotic Set) 定义:元素间关系模糊、结构无序的集合 数学表达:C{x∣x∈X,P(x)},其中 P(x) 是模糊隶属函数 实例…...
NVC++ 介绍与使用指南
文章目录 NVC 介绍与使用指南NVC 简介安装 NVC基本使用编译纯 C 程序编译 CUDA C 程序 关键编译选项示例代码使用标准并行算法 (STDPAR)混合 CUDA 和 C 优势与限制优势限制 调试与优化 NVC 介绍与使用指南 NVC 是 NVIDIA 提供的基于 LLVM 的 C 编译器,专为 GPU 加速…...
Redis 事务与管道:原理、区别与应用实践
在现代分布式系统开发中,Redis 作为高性能的内存数据库,其事务处理和管道技术是开发者必须掌握的核心知识点。本文将深入探讨 Redis 事务和管道的实现原理、使用场景、性能差异以及最佳实践,帮助开发者根据实际需求选择合适的技术方案。 一、…...
Git 多人协作
目录 情景一 情景二 合并分支 情景一 目标:远程 master 分支下的 file.txt 文件新增代码 "aaa","bbb"。 实现:由开发者1新增 "aaa" ,开发者2新增 bbb。 条件:在一个分支下合作完成。 针对以上情景我们要注意…...
Unity 人物模型学习笔记
一、关于模型的检查 拿到人物模型时,检查人物: 位置信息是否在0点布线/UV是否正常身体各部分是否分开各部分命名是否清晰骨骼需要绑定 二、Unity人物动画 https://www.bilibili.com/video/BV1cc41197mF?spm_id_from333.788.recommend_more_video.-1&a…...
【和春笋一起学C++】(十四)指针与const
将const用于指针,有两种情况: const int *pt; int * const pt; 目录 1. const int *pt 2. int * const pt 3. 扩展 1. const int *pt 首先看第一种情况,const在int的前面,有如下语句: int peoples12࿱…...
AI知识梳理——RAG、Agent、ReAct、LangChain、LangGraph、MCP、Function Calling、JSON-RPC
AI技术I AI技术II RAG 📌 高度凝练表达 RAG (检索增强生成)是一种结合信息检索与生成式人工智能的技术框架,旨在提升大型语言模型(LLM)的输出准确性和实用性。通过在生成响应前引入外部知识库的信息&#…...
ModuleNotFoundError: No module named ‘SDToolbox‘
(py311) C:>python Python 3.11.11 | packaged by Anaconda, Inc. | (main, Dec 11 2024, 16:34:19) [MSC v.1929 64 bit (AMD64)] on win32 Type “help”, “copyright”, “credits” or “license” for more information. from SDToolbox import PostShock_eq Tracebac…...