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

ESP32,uart安装驱动uart_driver_install函数剖析,以及intr_alloc_flags 参数的意义

uart_driver_install 函数中,参数 RX_BUF_SIZE * 2 指定了接收缓冲区(RX buffer)的大小。这个参数对于 UART 驱动程序来说非常重要,因为它决定了可以存储多少接收到的数据,直到应用程序读取它们为止。下面是对该函数及其各个参数的详细解释:

函数原型

esp_err_t uart_driver_install(uart_port_t uart_num, int rx_buffer_size, int tx_buffer_size, int queue_size, QueueHandle_t *rx_queue, int intr_alloc_flags);

参数说明

  1. uart_port_t uart_num:

    • 指定要安装驱动程序的 UART 端口号,如 UART_NUM_0UART_NUM_1, 或 UART_NUM_2
  2. int rx_buffer_size:

    • 接收缓冲区的大小(以字节为单位)。这是你提到的 RX_BUF_SIZE * 2 参数。它定义了接收数据的最大容量。当接收的数据量超过此大小时,可能会发生溢出,导致数据丢失。
    • RX_BUF_SIZE * 2 表示接收缓冲区的大小是 RX_BUF_SIZE 的两倍。这可能是为了确保有足够大的缓冲区来处理预期中的最大数据量,或者是为了提供额外的空间以减少数据丢失的风险。
  3. int tx_buffer_size:

    • 发送缓冲区的大小(以字节为单位)。在这个例子中,值为 0,表示不使用发送缓冲区或由系统默认管理发送缓冲区。
  4. int queue_size:

    • 接收事件队列的长度。它指定了可以排队等待处理的接收事件数量。如果设置为 0,则不会创建接收事件队列。
  5. QueueHandle_t *rx_queue:

    • 一个指向 FreeRTOS 队列句柄的指针,用于接收事件通知。如果不需要接收事件通知,则可以传递 NULL
  6. int intr_alloc_flags:

    • 中断分配标志,用于指定中断分配的行为。通常可以设置为 0,表示使用默认行为,也可以根据需要设置特定的标志位。

RX_BUF_SIZE * 2 的意义

  • 缓冲区大小加倍:通过将接收缓冲区大小设置为 RX_BUF_SIZE * 2,你可以确保有足够的空间来容纳更多的接收数据,从而减少了因缓冲区满而导致的数据丢失风险。这对于需要处理大量连续数据的应用特别有用,例如日志记录、文件传输或其他高带宽通信场景。

  • 优化性能:较大的接收缓冲区可以在一定程度上提高系统的响应速度和吞吐量,因为应用程序不需要频繁地从缓冲区读取数据以防止溢出。不过,这也意味着会占用更多的内存资源,因此需要在缓冲区大小和系统资源之间找到一个平衡点。

intr_alloc_flags 参数用于指定在安装 UART 驱动时如何分配和配置中断资源。这个参数对于控制中断的行为非常重要,尤其是在多核系统或对实时性有严格要求的应用中。以下是 intr_alloc_flags 的详细解释及其可能的取值:

函数原型

esp_err_t uart_driver_install(uart_port_t uart_num, int rx_buffer_size, int tx_buffer_size, int queue_size, QueueHandle_t *rx_queue, int intr_alloc_flags);

intr_alloc_flags 参数的意义

  • 中断分配标志:该参数是一个位掩码(bitmask),可以通过组合多个标志来定制中断行为。这些标志定义了中断是如何分配给 CPU 核心、优先级设置等。
常见的 intr_alloc_flags 选项
  1. 0 (默认):

    • 使用默认的中断分配行为。ESP-IDF 框架会根据内部逻辑选择一个合适的 CPU 核心,并为中断分配一个适当的优先级。
  2. ESP_INTR_FLAG_SHARED:

    • 允许多个中断源共享同一个中断处理程序。这可以节省资源,但在某些情况下可能会降低性能,因为共享中断处理程序需要额外的时间来确定哪个设备触发了中断。
  3. ESP_INTR_FLAG_IRAM:

    • 强制将中断处理程序代码放置在内部 RAM (IRAM) 中。这对于确保在闪存处于忙状态(如正在进行擦除或写入操作)时仍能及时响应中断是非常重要的。
  4. ESP_INTR_FLAG_LEVEL1ESP_INTR_FLAG_LEVEL7:

    • 设置中断的优先级级别。较高的数字表示更高的优先级。例如,ESP_INTR_FLAG_LEVEL1 表示最低优先级,而 ESP_INTR_FLAG_LEVEL7 表示最高优先级。
  5. ESP_INTR_FLAG_EDGE:

    • 将中断配置为边缘触发模式。这意味着只有当信号从低到高或从高到低变化时才会触发中断。
  6. ESP_INTR_FLAG_HIGHLEVEL:

    • 将中断配置为高电平触发模式。只要信号保持高电平,就会持续触发中断。
  7. ESP_INTR_FLAG_LOWMEDESP_INTR_FLAG_MEDLOW:

    • 这些标志允许进一步细化中断优先级,但它们的具体效果取决于平台和支持情况。
  8. ESP_INTR_FLAG_CPU0ESP_INTR_FLAG_CPU1:

    • 在双核或多核系统中,可以选择将中断分配给特定的 CPU 核心。例如,在 ESP32 上,ESP_INTR_FLAG_CPU0 表示中断仅由核心 0 处理,而 ESP_INTR_FLAG_CPU1 表示仅由核心 1 处理。

示例代码

假设你希望将 UART 中断分配给 CPU 核心 0,并且设置中断优先级为 5,同时确保中断处理程序位于 IRAM 中,你可以这样配置 intr_alloc_flags

#include "driver/uart.h"
#include "esp_intr_alloc.h"#define RX_BUF_SIZE 1024void install_uart_driver_with_custom_interrupt_flags() {const uart_port_t uart_num = UART_NUM_1;const int intr_flags = ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_LEVEL5 | ESP_INTR_FLAG_CPU0;// 安装 UART 驱动,接收缓冲区大小为 RX_BUF_SIZE * 2,不使用发送缓冲区,// 不创建接收事件队列,不接收事件通知,自定义中断分配标志esp_err_t err = uart_driver_install(uart_num, RX_BUF_SIZE * 2, 0, 0, NULL, intr_flags);if (err != ESP_OK) {printf("Failed to install UART driver: %s\n", esp_err_to_name(err));} else {printf("UART driver installed successfully with custom interrupt flags.\n");}
}

注意事项

  • 中断优先级:合理设置中断优先级可以避免高优先级任务被低优先级任务打断,从而影响系统的实时性和稳定性。
  • CPU 核心选择:在多核系统中,正确选择中断分配给哪个 CPU 核心可以帮助优化任务调度和减少上下文切换开销。
  • 内存位置:对于时间敏感的应用,确保中断处理程序位于快速访问的内存区域(如 IRAM)是至关重要的。

相关文章:

ESP32,uart安装驱动uart_driver_install函数剖析,以及intr_alloc_flags 参数的意义

在 uart_driver_install 函数中,参数 RX_BUF_SIZE * 2 指定了接收缓冲区(RX buffer)的大小。这个参数对于 UART 驱动程序来说非常重要,因为它决定了可以存储多少接收到的数据,直到应用程序读取它们为止。下面是对该函数…...

android源码编译后,为什么emulator一直黑屏或者停止android界面

一、前言 最近编译了android12的源码,但是编译完成之后,emulator命令一直卡在android界面上,不会进入系统。经过我多方面的研究,终于找到解决方案。记录下来,希望对遇到这个问题的朋友有所帮助。 二、解决方案 网上…...

ubuntu22.04降级安装CUDA11.3

环境:主机x64的ubuntu22.04,原有CUDA12.1,但是现在需要CUDA11.3,本篇文章介绍步骤。 一、下载CUDA11.3的run文件 下载网址:https://developer.nvidia.com/cuda-11-3-1-download-archive?target_osLinux&target_…...

hive知识体系

hive知识体系 hive知识体系 链接: 1Hive概览 链接: 2Hive表类型 链接: 3Hive数据抽样 链接: 4Hive计算引擎 链接: 5Hive存储与压缩 链接: 6Hive Sql 大全 链接: 6Hive Sql 大全-Hive 函数 链接: 6Hive Sql 大全-窗口函数 链接: 7Hive执行计划 链接: 8Hive SQL底层执行原理 链接…...

【ASP.NET学习】Web Forms创建Web应用

文章目录 什么是 Web Forms?ASP.NET Web Forms - HTML 页面用 ASP.NET 编写的 Hello RUNOOB.COM它是如何工作的?经典 ASP ASP.NET Web Forms - 服务器控件经典 ASP 的局限性ASP.NET - 服务器控件ASP.NET - HTML 服务器控件ASP.NET - Web 服务器控件ASP.N…...

【Qt】QThread总结

目录 成员函数创建方式方式一方式二方式三注意 example总结参考文章 成员函数 创建方式 方式一 QThread 静态成员create auto thd QThread::create([]{});方式二 继承QThread类,重写run run函数它作为线程的入口,也就是线程从run()开始执行&#…...

常见的安全测试漏洞详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、SQL注入攻击 SQL 注入攻击主要是由于程序员在开发过程中没有对客户端所传输到服务器端的参数进行严格的安全检查,同时 SQL 语句的执行引用了该参…...

代理模式和适配器模式有什么区别

代理模式(Proxy Pattern)和适配器模式(Adapter Pattern)都是结构型设计模式,它们有不同的应用场景和目标,虽然在某些方面看起来相似,但它们的意图和实现方式有显著的区别。 1. 代理模式&#x…...

机器学习头歌(第三部分-强化学习)

一、强化学习及其关键元素 二、强化学习的分类 三、任务与奖赏 import numpy as np# 迷宫定义 maze np.array([[0, 0, 0, 0, 0],[0, -1, -1, 0, 0],[0, 0, 0, -1, 0],[-1, -1, 0, -1, 0],[0, 0, 0, -1, 1] ])# 定义强化学习的参数 gamma 0.8 # 折扣因子 alpha 0.5 # 学习率…...

【Hive】新增字段(column)后,旧分区无法更新数据问题

TOC 【一】问题描述 Hive修改数据表结构的需求,比如:增加一个新字段。 如果使用如下语句新增列,可以成功添加列col1。但如果数据表tb已经有旧的分区(例如:dt20190101),则该旧分区中的col1将为…...

智能化的城市管理解决方案,智慧城管执法系统源码,微服务架构、Java编程语言、Spring Boot框架、Vue.js前端技术

智慧城管执法系统是一种高度信息化、智能化的城市管理解决方案,它利用现代信息技术,如微服务架构、Java编程语言、Spring Boot框架、Vue.js前端技术、Element UI组件库、UniApp跨平台开发工具以及MySQL数据库等,构建了一个综合性的执法管理平…...

【区间DP】【hard】力扣1312. 让字符串成为回文串的最少插入次数

加粗样式给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符。 请你返回让 s 成为回文串的 最少操作次数 。 「回文串」是正读和反读都相同的字符串。 示例 1: 输入:s “zzazz” 输出:0 解释:字…...

android刷机

android ota和img包下载地址: https://developers.google.com/android/images?hlzh-cn android启动过程 线刷 格式:ota格式 模式:recovery 优点:方便、简单,刷机方法通用,不会破坏手机底层数据&#xff0…...

web-前端小实验8

实现以上图片中的内容 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wid…...

C++实现设计模式---单例模式 (Singleton)

单例模式 (Singleton) 概念 单例模式 确保一个类在整个程序生命周期中只有一个实例&#xff0c;并提供一个全局访问点。 它是一种创建型设计模式&#xff0c;广泛用于需要共享资源的场景。 使用场景 配置管理器&#xff1a;程序中需要一个全局的配置对象。日志系统&#xff…...

【大数据】机器学习-----线性模型

一、线性模型基本形式 线性模型旨在通过线性组合输入特征来预测输出。其一般形式为&#xff1a; 其中&#xff1a; x ( x 1 , x 2 , ⋯ , x d ) \mathbf{x}(x_1,x_2,\cdots,x_d) x(x1​,x2​,⋯,xd​) 是输入特征向量&#xff0c;包含 d d d 个特征。 w ( w 1 , w 2 , ⋯ ,…...

C#类型转换

C#是静态类型的语言&#xff0c;变量一旦声明就无法重新声明或者存储其他类型的数据&#xff0c;除非进行类型转换。本章的主要任务就是学习类型转换的知识。类型转换有显式的&#xff0c;也有隐式的。所谓显式&#xff0c;就是我们必须明确地告知编译器&#xff0c;我们要把变…...

OpenCV相机标定与3D重建(55)通用解决 PnP 问题函数solvePnPGeneric()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 根据3D-2D点对应关系找到物体的姿态。 cv::solvePnPGeneric 是 OpenCV 中一个更为通用的函数&#xff0c;用于解决 PnP 问题。它能够返回多个可能…...

NVIDIA CUDA Linux 官方安装指南

本文翻译自&#xff1a;https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions NVIDIA CUDALinux安装指南 CUDA工具包的Linux安装说明。 文章目录 1.导言1.1.系统要求1.2.操作系统支持政策1.3.主机编译器支持政策1.3.1.支持的C方言…...

C++中的STL

STL&#xff08;标准模板库&#xff09;在广义上分为&#xff1a;容器&#xff0c;算法&#xff0c;迭代器 容器和算法之间通过迭代器进行无缝衔接 STL大体上分为六大组件:分别为容器&#xff0c;算法&#xff0c;迭代器&#xff0c;仿函数&#xff0c;适配器&#xff0c;空间…...

前端进程和线程及介绍

前端开发中经常涉及到进程和线程的概念&#xff0c;特别是在浏览器中。理解这两个概念对于理解浏览器的工作机制和前端性能优化非常重要。以下是详细介绍&#xff1a; 1. 什么是进程和线程&#xff1f; 进程&#xff1a; 是操作系统分配资源的基本单位。一个程序启动后&#xf…...

本地用docker装mysql

目录 拉取镜像查看镜像 启动容器查看运行中的容器连接到 MySQL 容器其他一些操作 装WorkBench链接mysql——————————————允许远程登录MySql 拉取镜像 docker pull mysql查看镜像 docker image lsREPOSITORY TAG IMAGE ID CREATED SIZE mysq…...

设计模式 行为型 责任链模式(Chain of Responsibility Pattern)与 常见技术框架应用 解析

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许将请求沿着处理者链进行发送。每个处理者对象都有机会处理该请求&#xff0c;直到某个处理者决定处理该请求为止。这种模式的主要目的是避免请求的发送者和接收者之间…...

Apache Spark中与数据分区相关的配置和运行参数

Apache Spark中与数据分区相关的配置和运行参数涉及多个方面&#xff0c;包括动态分区设置、分区数设置、Executor与并行度配置等。合理配置这些参数可以显著提高Spark作业的执行效率和资源利用率。在实际应用中&#xff0c;建议根据业务需求和计算集群的特性进行相应的调整和测…...

“深入浅出”系列之设计模式篇:(0)什么是设计模式

设计模式六大原则 1. 单一职责原则&#xff1a;一个类或者一个方法只负责一项职责&#xff0c;尽量做到类的只有一个行为原因引起变化。 核心思想&#xff1a;控制类的粒度大小&#xff0c;将对象解耦&#xff0c;提高其内聚性。 2. 开闭原则&#xff1a;对扩展开放&#xf…...

【Git版本控制器--1】Git的基本操作--本地仓库

目录 初识git 本地仓库 认识工作区、暂存区、版本库 add操作与commit操作 master文件与commit id 修改文件 版本回退 撤销修改 删除文件 初识git Git 是一个分布式版本控制系统&#xff0c;主要用于跟踪文件的更改&#xff0c;特别是在软件开发中。 为什么要版本…...

如何在Jupyter中快速切换Anaconda里不同的虚拟环境

目录 介绍 操作步骤 1. 选择环境&#xff0c;安装内核 2. 注册内核 3. 完工。 视频教程 介绍 很多网友在使用Jupyter的时候会遇到各种各样的问题&#xff0c;其中一个比较麻烦的问题就是我在Anaconda有多个Python的环境里面&#xff0c;如何让jupyter快速切换不同的Pyt…...

Python自学 - “包”的创建与使用(从头晕到了然)

<< 返回目录 1 Python自学 - “包”的创建与使用(从头晕到了然) 相对于模块&#xff0c;包是一个更大的概念&#xff0c;按照业界的开发规范&#xff0c;1个代码文件不要超过1000行&#xff0c;稍微有点规模的任务就超过这个代码限制了&#xff0c;必然需要多个文件来管…...

ElasticSearch 同义词匹配

synonym.txt 电脑, 计算机, 主机 复印纸, 打印纸, A4纸, 纸, A3 平板电脑, Pad DELETE /es_sku_index_20_20250109 PUT /es_sku_index_20_20250109 {"settings": {"index": {"number_of_shards": "5","number_of_replicas&quo…...

android 官网刷机和线刷

nexus、pixel可使用google官网线上刷机的方法。网址&#xff1a;https://flash.android.com/ 本文使用google线上刷机&#xff0c;将Android14 刷为Android12 以下是失败的线刷经历。 准备工作 下载升级包。https://developers.google.com/android/images?hlzh-cn 注意&…...

Vue环境变量配置指南:如何在开发、生产和测试中设置环境变量

-## 前言 Vue.js是一个流行的JavaScript框架&#xff0c;它提供了许多工具和功能来帮助开发人员构建高效、可维护的Web应用程序。其中一个重要的工具是环境变量&#xff0c;它可以让你在不同的环境中配置不同的参数和选项。在这篇博客中&#xff0c;我们将介绍如何在Vue应用程…...

蓝桥杯_B组_省赛_2022(用作博主自己学习)

题目链接算法11.九进制转十进制 - 蓝桥云课 进制转换 21.顺子日期 - 蓝桥云课 时间与日期 31.刷题统计 - 蓝桥云课 时间与日期 41.修剪灌木 - 蓝桥云课 思维 51.X 进制减法 - 蓝桥云课 贪心 61.统计子矩阵 - 蓝桥云课 二维前缀和 71.积木画 - 蓝桥云课 动态规划 82.扫雷 - 蓝桥…...

【干货】交换网络环路介绍

定义 以太网交换网络中为了提高网络可靠性&#xff0c;通常会采用冗余设备和冗余链路&#xff0c;然而现网中由于组网调整、配置修改、升级割接等原因&#xff0c;经常会造成数据或协议报文环形转发&#xff0c;不可避免的形成环路。如图7-1所示&#xff0c;三台设备两两相连就…...

unity——Preject3——面板基类

目录 1.Canvas Group Canvas Group 的功能 Canvas Group 的常见用途 如何使用 Canvas Group 2.代码 3.代码分析 类分析:BasePanel 功能 作用 实际应用 代码解析:hideCallBack?.Invoke(); 语法知识点 作用 虚函数(virtual)和抽象类(abstract)的作用与区别 …...

BTC系列 - 启示录

推荐《区块链启示录&#xff1a;中本聪文集》这本书, 原来早在2010年, BTC生态还不完善的时候, 社区中就已经畅想出了未来其它链上的特色方案, 中本聪也都一一做了教父级回应: coinbase币的成熟时间, 交易池, 交易确认机制, 防51%攻击, 防双重消费, 水龙头, 轻量级客户端, 链上…...

C# 25Dpoint

C# 25Dpoint &#xff0c;做一个备份 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace _25Dpoint {public partial cl…...

Kotlin构造函数

class Person {var name: String? nullvar age: Int? nullfun think() {println("Mr./Ms.$name, who is $age years old, is thinking!")} }fun main () {val p Person()p.name "Jimmy"p.age 20p.think() } 在Kotlin中任意一个非抽象类都无法被继承…...

springMVC---resultful风格

目录 一、创建项目 pom.xml 二、配置文件 1.web.xml 2.spring-mvc.xml 三、图解 四、controller 一、创建项目 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi…...

flutter 装饰类【BoxDecoration】

装饰类 BoxDecoration BoxDecoration 是 Flutter 中用于控制 Container 等组件外观的装饰类&#xff0c;它提供了丰富的属性来设置背景、边框、圆角、阴影等样式。 BoxDecoration 的主要属性 1.color 背景颜色。类型&#xff1a;Color?示例&#xff1a; color: Colors.blu…...

自动连接校园网wifi脚本实践(自动网页认证)

目录 起因执行步骤分析校园网登录逻辑如何判断当前是否处于未登录状态&#xff1f; 书写代码打包设置开机自动启动 起因 我们一般通过远程控制的方式访问实验室电脑&#xff0c;但是最近实验室老是断电&#xff0c;但重启后也不会自动连接校园网账户认证&#xff0c;远程工具&…...

微信小程序集成Vant Weapp移动端开发的框架

什么是Vant Weapp Vant 是一个轻量、可靠的移动端组件库&#xff0c;于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 官网地睛&#xff1a;介绍 - Vant Weapp (vant-ui.gith…...

MySQL从库 Last_SQL_Errno: 1197 问题处理过程

记录一个遇到过的错误&#xff0c;今天整理一下。 问题 MySQL error code MY-001197 (ER_TRANS_CACHE_FULL): Multi-statement transaction required morethan max_binlog_cache_size bytes of storage; increase this mysqld variable and try again报错很明显是max_binlog_…...

springboot 加载本地jar到maven

在Spring Boot项目中&#xff0c;如果你想要加载一个本地的jar文件到Maven本地仓库&#xff0c;你可以使用Maven的install-file目标来实现。以下是一个简单的例子&#xff1a; 打开命令行工具&#xff08;例如&#xff1a;终端或者命令提示符&#xff09;。 执行以下Maven命令…...

面向B站商业化场景的广告标题智能推荐

01.背景 大模型的发展也在不断改变广告主/代理商广告创编的过程&#xff0c;为了提高广告主的创作效率&#xff0c;提升广告主投放标题的质量&#xff0c;我们利用大语言模型技术以及B站商业数据&#xff0c;能够让广告主仅需要输入特定的关键词&#xff0c;即可以生成理论上无…...

element plus 使用 upload 组件达到上传数量限制时隐藏上传按钮

最近在重构项目&#xff0c;使用了 element plus UI框架&#xff0c;有个功能是实现图片上传&#xff0c;且限制只能上传一张图片&#xff0c;结果&#xff0c;发现&#xff0c;可以限制只上传一张图片&#xff0c;但是上传按钮还在&#xff0c;如图&#xff1a; 解决办法&…...

java进行pdf文件压缩

文章目录 pdf文件压缩 pdf文件压缩 添加依赖 <dependency><groupId>com.luhuiguo</groupId><artifactId>aspose-pdf</artifactId><version>23.1</version> </dependency>public class OptimizePdf {public static void opti…...

初识算法和数据结构P1:保姆级图文详解

文章目录 前言1、算法例子1.1、查字典&#xff08;二分查找算法&#xff09;1.2、整理扑克&#xff08;插入排序算法&#xff09;1.3、货币找零&#xff08;贪心算法&#xff09; 2、算法与数据结构2.1、算法定义2.2、数据结构定义2.3、数据结构与算法的关系2.4、独立于编程语言…...

内网服务器添加共享文件夹功能并设置端口映射

参考网址 https://blog.csdn.net/Think88666/article/details/118438465 1.服务器安装smb服务&#xff0c;由于网路安全不允许使用默认端口&#xff08;445&#xff0c;446&#xff09;&#xff0c;于是修改端口为62445、62446。 2.每台需要共享的电脑都要修改端口映射&#x…...

ruoyi-cloud docker启动微服务无法连接nacos,Client not connected, current status:STARTING

ruoyi-cloud docker启动微服务无法连接nacos&#xff0c;Client not connected, current status:STARTING 场景 当使用sh deploy.sh base来安装mysql、redis、nacos环境后&#xff0c;紧接着使用sh deploy.sh modules安装微服务模块&#xff0c;会发现微服务无法连接nacos的情…...

Python----Python高级(函数基础,形参和实参,参数传递,全局变量和局部变量,匿名函数,递归函数,eval()函数,LEGB规则)

一、函数基础 1.1、函数的用法和底层分析 函数是可重用的程序代码块。 函数的作用&#xff0c;不仅可以实现代码的复用&#xff0c;更能实现代码的一致性。一致性指的是&#xff0c;只要修改函数的代码&#xff0c;则所有调用该函数的地方都能得到体现。 在编写函数时&#xf…...