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

C语言——string.h下的特殊库函数

string.h下的特殊函数

  • strtok(分割字符串)
  • strerror(错误码信息)
  • memcpy(拷贝)
  • memmove(拷贝)
  • memset(设置内存)
  • memcmp(比较大小)

strtok(分割字符串)

char * strtok ( char * str, const char * sep);

1.sep指向一个字符串,放我们要分割的字符
2.第一个参数str里面有sep中0个或多个要切割的字符,会进行标记
3.strtok函数,把str字符串中的标记位置变成’\0’
4.strtok函数的第⼀个参数不为 NULL ,函数将找到str中第⼀个标记,strtok函数将保存它在字符串中的位置。
5.strtok函数的第⼀个参数为 NULL ,函数将在同⼀个字符串中被保存的位置开始,查找下⼀个标记。
6.如果所有标记全部找到以后,返回NULL空指针

#include<stdio.h>
#include<string.h>
int main()
{char arr[] = "zhang@163.com";char tem[30] = { 0 };char* sep = "@.";//存放我们要分割的地方strcpy(tem, arr);//把arr中的内容粘贴到tem中//tem切割字符char* p = strtok(tem, sep);printf("%s\n", p);//保存要切割的位置p = strtok(NULL, sep);printf("%s\n", p);p = strtok(NULL, sep);printf("%s\n", p);return 0;
}
这里我们在使用这个函数的时候会修改原本字符的内容,所以我们创建一个指针来接收这个字符串
这里我们的“@ ."是标记字符,这里我们切割两次,切割一次,这里被标记的位置会被保存便于下面字符分割

在这里插入图片描述
从这里运行结果可以知道我们成功的分割了,但是我们发现一个问题,如果字符串较长的话我们难以知道如何需要分割几次,所以这里我们需要改进一下

#include<stdio.h>
#include<string.h>
int main()
{char arr[] = "zhang@163.com";char tem[30] = { 0 };char* sep = "@.";//存放我们要分割的地方strcpy(tem, arr);//把arr中的内容粘贴到tem中for (char* p = strtok(tem, sep); p != NULL; p = strtok(NULL, sep)){printf("%s\n", p);}return 0;
}
这里我们使用for循环,我们知道strtok函数如果找不到下次标记就会返回NULL,这就是截止条件
我们初始化为保存第一个参数不为NULL的位置
如果满足条件,就继续分割,反之则退出,这样他就会分割到不可以分割为止

在这里插入图片描述
可以发现这里的运行结果是正确的

strerror(错误码信息)

char * strerror ( int errnum );

strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来
在系统中和C语言中会将一些信息返回错误码,这些错误码放在erron.h这个头文件中,我们在启动的时候默认为0,这时候表示的是没有错误。当我们出现错误的时候这时候会将错误信息给errno,这里的错误码会转化为错误信息让我们理解
strerror函数就可以将错误对应的错误信息字符串的地址返回
例如:我们打印出1~10的错误码

#include<stdio.h>
#include<string.h>
#include<errno.h>
int main()
{int i = 0;for (i = 1;i <= 10;i++){printf("%s\n", strerror(i));}return 0;
}

运行结果如下
在这里插入图片描述

memcpy(拷贝)

void * memcpy ( void * destination, const void * source, size_t num );

这里的拷贝与strcpy不同的是这是个内存函数,其次这个函数什么类型的数都可以拷贝,而strcpy只可以拷贝字符类型
从source字符串后num个字节数拷贝到destination字符串上
这里我们的destination和source是两个不同的存储单元进行拷贝

#include<stdio.h>
#include<string.h>
int main()
{int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };int arr2[10] = { 0 };memcpy(arr2, arr1, 20);for (int i = 0;i < 10;i++){printf("%d ", arr2[i]);}return 0;
}

这里我们只拷贝20个字节,也就是5个int类型的,所以我们这里只有arr2只有前五个数被arr1的前五个拷贝
后面的五个还是初始化的0
在这里插入图片描述
在这里插入图片描述
这里我们不像strcpy那样只能拷贝字符串,我们这里什么类型的都可以拷贝,因为我们这里底层操控的是内存
但是我们要注意这里使用时候注意拷贝与被拷贝的是两个不同的存储单元,是两个不同的数组

memmove(拷贝)

void * memmove ( void * destination, const void * source, size_t num );

这个函数与memcpy是差不多的,只不过这个函数可以拷贝同一内存的空间,而memcpy是不可以的
如果原空间和目标空间有重叠,这时候就要用memmove来进行拷贝
例如:用源空间和目标空间是统一个数组

#include<stdio.h>
#include<string.h>
int main()
{int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };//这里我们直接对同一字符串进行修改memmove(arr1 + 2, arr1, 20);for (int i = 0;i < 10;i++){printf("%d ", arr1[i]);}
}

这里我们用数组arr的内容拷贝arr+2的内容,也就是将arr[2]以后的数字,全部都被arr拷贝,且arr下标是从0开始,arr+2下标是从2开始,并且这里我们只拷贝20个字节也就是5个int 类型,所以最终结果会变成
1 2 1 2 3 4 5 8 9 10
在这里插入图片描述

memset(设置内存)

void * memset ( void * ptr, int value, size_t num );

这个函数是用来设置内存的,将num字节个value放到ptr数组中
注意:虽然这里的value是int类型,但是我们要知道字符在存储的时候是按照ASCLL码值存储,也是整形,这里修改是从我们指向的首地址开始

#include<stdio.h>
#include<string.h>
int main()
{char str[] = "hello world";memset(str, 'x', 6);printf("%s\n", str);return 0;
}

这里我们是将str数组设置6个字符’x’,所以str数组的结果是前六个字符全变成了字符‘x’
在这里插入图片描述
这里我们从数组的下标为2开始,所以这里我们从下标为2依次开始修改6个字符‘x’
在这里插入图片描述

memcmp(比较大小)

int memcmp ( const void * ptr1, const void * ptr2, size_t num );

比较的是ptr1和ptr2向后的num个字节
这也是可以比较各种类型

在这里插入图片描述

#include<stdio.h>
#include<string.h>
int main()
{int arr1[] = { 1,2,3,4,5 };int arr2[] = { 1,2,3,4 };int r = memcmp(arr1, arr2, 16);if (r > 0){printf("arr1>arr2");}else if (r < 0){printf("arr1<arr2");}else{printf("arr1==arr2");}return 0;
}

例如这里的两个int类型数组并不相同,但是我们只比较前16个字节,也就是前四个数,所以这里是arr1==arr2
在这里插入图片描述
我们来看下面这个代码

#include<stdio.h>
#include<string.h>
int main()
{//0x 00 00 00 01int arr1[] = { 1,2,3,4,5 };         //0x 00 00 00 05int arr2[] = { 1,2,3,4,0x12233301 };//0x 12 23 33 01int r = memcmp(arr1, arr2, 17);0x 00 00 00 05if (r > 0){printf("arr1>arr2");}else if (r < 0){printf("arr1<arr2");}else{printf("arr1==arr2");}return 0;
}

那我们这里的结果是什么呢,这里比较了前16个字节arr1等于arr2,但是第17个字节我们怎样比较
我们要知道这里int是4个字节,但是我们最后一次只比较一个字节
arr1[4]中的5存储的地址是16进制为0x 00 00 00 05
arr2[4]的存储为0x 12 23 33 01
我们这里比较一个字节其实比较的是这里的 05 与 01 谁大,明显是05大,所以arr1>arr2
运行结果如下
在这里插入图片描述
到这里就结束了,欲知后事如何,请听下回分解

相关文章:

C语言——string.h下的特殊库函数

string.h下的特殊函数 strtok(分割字符串&#xff09;strerror(错误码信息&#xff09;memcpy(拷贝&#xff09;memmove(拷贝&#xff09;memset(设置内存&#xff09;memcmp(比较大小&#xff09; strtok(分割字符串&#xff09; char * strtok ( char * str, const char * s…...

烟花燃放安全管控:智能分析网关V4烟火检测技术保障安全

一、方案背景 在中国诸多传统节日的缤纷画卷中&#xff0c;烟花盛放、烧纸祭祀承载着人们的深厚情感。一方面&#xff0c;烟花璀璨&#xff0c;是对节日欢庆氛围的热烈烘托&#xff0c;寄托着大家对美好生活的向往与期许&#xff1b;另一方面&#xff0c;袅袅青烟、点点烛光&a…...

【一个月备战蓝桥算法】递归与递推

字典序 在刷题和计算机科学领域&#xff0c;字典序&#xff08;Lexicographical order&#xff09;也称为词典序、字典顺序、字母序&#xff0c;是一种对序列元素进行排序的方式&#xff0c;它模仿了字典中单词的排序规则。下面从不同的数据类型来详细解释字典序&#xff1a; …...

二、Java-封装playwright UI自动化(根据官网执行步骤,首先封装BrowserFactory枚举类及BrowserManager)

前言 查看playwright官网&#xff0c;api文档了解到&#xff0c;playwright的基本步骤&#xff1a; 1、实例化一个playwright 2、启动一个浏览器类型 3、打开一个页面 所以&#xff0c;在封装时需要有一个浏览器工厂类&#xff0c;定义不同的浏览器类型&#xff0c;在配置文…...

java项目之基于ssm的在线视频网站开发(源码+文档)

项目简介 基于ssm的在线视频网站开发实现了以下功能&#xff1a; 该系统的目标用户包括管理员&#xff0c;用户。管理员上传视频&#xff0c;管理视频&#xff0c;查看视频留言&#xff0c;回复视频留言&#xff0c;管理视频收藏信息&#xff0c;管理公告&#xff0c;管理用户…...

观察者模式的C++实现示例

核心思想 观察者模式是一种行为型设计模式&#xff0c;定义了对象之间的一对多依赖关系。当一个对象&#xff08;称为Subject&#xff0c;主题&#xff09;的状态发生改变时&#xff0c;所有依赖于它的对象&#xff08;称为Observer&#xff0c;观察者&#xff09;都会自动收到…...

c语言中的主要知识点

一、基础语法与结构 程序结构 包含顺序结构、选择结构&#xff08;if/switch&#xff09;、循环结构&#xff08;for/while/do-while&#xff09;。 程序必须包含且仅有一个main函数作为入口。 数据类型与变量 基本类型&#xff1a;整型&#xff08;int、long&#xff09;、浮…...

Pytorch构建LeNet进行MNIST识别 #自用

LeNet是一种经典的卷积神经网络&#xff08;CNN&#xff09;结构&#xff0c;由Yann LeCun等人在1998年提出&#xff0c;主要用于手写数字识别&#xff08;如MNIST数据集&#xff09;。作为最早的实用化卷积神经网络&#xff0c;LeNet为现代深度学习模型奠定了基础&#xff0c;…...

docker:Dockerfile案例之自定义centos7镜像

1 案例需求 自定义centos7镜像。要求&#xff1a; 默认登录路径为 /usr可以使用vim 2 实施步骤 编写dockerfile脚本 vim centos_dockerfile 内容如下&#xff1a; #定义父镜像 FROM centos:7#定义作者信息 MAINTAINER handsome <handsomehandsome.com># 设置阿里云…...

post get 给后端传参数

post 方式一 &#xff1a; data: params 作为请求体&#xff08;Request Body&#xff09;传递&#xff1a; 你已经展示了这种方式&#xff0c;通过data字段直接传递一个对象或数组。这种方式通常用于传递复杂的数据结构。dowmfrom: function (params) { return request({ u…...

Linux 系统不同分类的操作命令区别

Linux 系统有多种发行版,每种发行版都有其独特的操作命令和工具。以下是一些常见的分类及其操作命令的区别: 1. 基于 Red Hat 的发行版 (RHEL, CentOS, Fedora) 1.1 包管理 安装软件包: bash复制 sudo yum install <package> 更新软件包: bash复制 sudo yum update…...

Checkpoint 模型与Stable Diffusion XL(SDXL)模型的区别

Checkpoint 模型与 Stable Diffusion XL&#xff08;SDXL&#xff09;模型 在功能、架构和应用场景上有显著区别&#xff0c;以下是主要差异的总结&#xff1a; 1. 基础架构与定位 Checkpoint 模型 是基于 Stable Diffusion 官方基础模型&#xff08;如 SD 1.4/1.5&#xff09;…...

软件工程与实践(第4版 新形态) 练习与实践1

软件工程与实践&#xff08;第4版 新形态&#xff09; 练习与实践1 1.填空题 (1)程序&#xff0c;文档 (2)系统软件&#xff0c;支撑软件&#xff0c;应用软件 (3)系统方法 (4)软件开发和维护 (5)工程的概念、原理、技术和方法 (6)实现软件的优质高产 (7)软件开发技术和…...

探秘基带算法:从原理到5G时代的通信变革【九】QPSK调制/解调

文章目录 2.8 QPSK 调制 / 解调简介QPSK 发射机的实现与原理QPSK 接收机的实现与原理QPSK 性能仿真QPSK 变体分析 本博客为系列博客&#xff0c;主要讲解各基带算法的原理与应用&#xff0c;包括&#xff1a;viterbi解码、Turbo编解码、Polar编解码、CORDIC算法、CRC校验、FFT/…...

侯捷 C++ 课程学习笔记:深入理解智能指针

文章目录 每日一句正能量一、引言二、智能指针的核心概念&#xff08;一&#xff09;std::unique_ptr&#xff08;二&#xff09;std::shared_ptr&#xff08;三&#xff09;std::weak_ptr 三、学习心得四、实际应用案例五、总结 每日一句正能量 如果说幸福是一个悖论&#xff…...

基于Qwen-VL的手机智能体开发

先上Demo&#xff1a; vl_agent_demo 代码如下&#xff1a; 0 设置工作目录&#xff1a; 你的工作目录需要如下&#xff1a; 其中utils文件夹和qwenvl_agent.py均参考自 GitHub - QwenLM/Qwen2.5-VL: Qwen2.5-VL is the multimodal large language model series developed by …...

系统盘还原成正常U盘

选择格式化,等格式化完毕就完了 点击还原设备的默认值格式化就完了...

Leetcode 103: 二叉树的锯齿形层序遍历

Leetcode 103: 二叉树的锯齿形层序遍历 问题描述&#xff1a; 给定一个二叉树&#xff0c;返回其节点值的锯齿形层序遍历&#xff08;即第一层从左到右&#xff0c;第二层从右到左&#xff0c;第三层从左到右&#xff0c;依此类推&#xff09;。 适合面试的解法&#xff1a;广…...

FastGPT 引申:基于 Python 版本实现 Java 版本 RRF

文章目录 FastGPT 引申&#xff1a;基于 Python 版本实现 Java 版本 RRF函数定义使用示例 FastGPT 引申&#xff1a;基于 Python 版本实现 Java 版本 RRF 函数定义 使用 Java 实现 RRF 相关的两个函数&#xff1a;合并结果、过滤结果 import java.util.*;// 搜索结果类型定义…...

C++中的无锁编程

引言 在当今多核处理器普及的时代&#xff0c;并发编程已成为高性能应用程序开发的关键技术。传统的基于锁的同步机制虽然使用简单&#xff0c;但往往会带来性能瓶颈和死锁风险。无锁编程&#xff08;Lock-Free Programming&#xff09;作为一种先进的并发编程范式&#xff0c…...

【全栈开发】---- 一文掌握 Websocket 原理,并用 Django 框架实现

目录 介绍 底层原理 握手环节详解&#xff1a; 收发数据&#xff08;加密&#xff09; Django 中配置 channels 1、注册 channels 2、在 settings.py 中添加 asgi_application 3、修改 asgi.py 文件 4、routing 5、consumers 实现 聊天室 介绍 WebSocket是一种先进的通信协议&…...

游戏引擎学习第135天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾 game_asset.cpp 的创建 在开发过程中&#xff0c;不使用任何现成的游戏引擎或第三方库&#xff0c;而是直接基于 Windows 进行开发&#xff0c;因为 Windows 目前仍然是游戏的标准平台&#xff0c;因此首先在这个环境中进行…...

国内支持Stable Diffusion模型的平台

国内支持Stable Diffusion模型的平台 截至2025年3月&#xff0c;国内支持SD模型的平台主要包括以下六类&#xff0c;覆盖不同用户需求和技术层级&#xff1a; 一、模型分享与下载平台 Liblib.ai 描述&#xff1a;国内最大SD原创模型社区&#xff0c;提供海量基础模型、Lora…...

扣子(Coze):重构AI时代的工作流革命

文章目录 扣子&#xff08;Coze&#xff09;&#xff1a;重构AI时代的工作流革命使用Coze&#xff1a;一、工作流的本质&#xff1a;从单点智能到系统智能二、扣子工作流的技术基因三、场景化实践&#xff1a;从知识库到智能员工四、未来图景&#xff1a;AI Agent的进化之路结语…...

alloc、malloc 与 allocator:内存管理三剑客

内存管理是C语言开发者的核心能力&#xff0c;也是系统级编程的基石。 一、内存分配三剑客&#xff1a;malloc/calloc/realloc 1. malloc函数原理 int* arr (int*)malloc(5 * sizeof(int)); // 分配20字节空间&#xff08;假设int为4字节&#xff09; 从堆区分配指定字节的连…...

单细胞分析(21)——SCENIC 分析流程(singularity容器版)

SCENIC 分析流程笔记 SCENIC (Single-Cell rEgulatory Network Inference and Clustering) 是一种基于单细胞 RNA 测序数据的调控网络分析方法&#xff0c;主要用于识别调控因子&#xff08;TFs&#xff09;及其靶基因&#xff08;Regulons&#xff09;&#xff0c;并评估这些…...

亚马逊云科技Marketplace(中国区)上架专业服务产品, “云生态连接器”价值凸显

近日&#xff0c;由西云数据运营的亚马逊云科技Marketplace&#xff08;中国区&#xff09;正式支持专业服务产品。此次发布将大幅简化企业对云专业服务的采购流程&#xff0c;实现云软件从规划、部署到支持的全生命周期管理&#xff0c;同时也为合作伙伴提供了更多的销售机会。…...

拉普拉斯·隆格·楞次矢量

L − R − L L-R-L L−R−L 矢量的推导 有平方反比有心力&#xff1a; F ⃗ − k r 2 r ^ \vec F-\dfrac{k}{r^2}\hat r F −r2k​r^ 显然角动量 L ⃗ r ⃗ p ⃗ \vec L\vec r\times \vec p L r p ​ 守恒。 故 ∣ L ⃗ ∣ Const \begin{vmatrix}\vec L\end{vmatrix}\…...

GStreamer —— 2.3、Windows下Qt加载GStreamer库后运行 - “教程3:动态管道“(附:完整源码)

运行效果&#xff08;音频&#xff09; 简介 上一个教程演示了GStreamer 概念。本教程中的管在它设置为 playing 状态之前完全构建。这没关系。如果 我们没有采取进一步的行动&#xff0c;数据会到达 pipeline 的 pipeline 和 pipeline 将生成错误消息并停止。但 我们将采取进一…...

jupyter notebook更改文件存储路径

默认情况打开是这样的 进入cmd或者Anaconda Prompt&#xff0c;输入以下命令 jupyter notebook --generate-config进入该目录 打开该文件&#xff0c;CTRLF 查找c.ServerApp.root_dir 进行修改。 这样就修改好啦&#xff01;...

基于遗传算法的无人机三维路径规划仿真步骤详解

基于遗传算法的无人机三维路径规划仿真步骤详解 一、问题定义 目标:在三维空间内,寻找从起点到终点的最优路径,需满足: 避障:避开所有障碍物。路径最短:总飞行距离尽可能短。平滑性:转折角度不宜过大,降低机动能耗。输入: 三维地图(含障碍物,如立方体、圆柱体)。起…...

①EtherCAT转Modbus485RTU网关多路同步高速采集无需编程串口服务器

EtherCAT转Modbus485RTU网关多路同步高速采集无需编程串口服务器https://item.taobao.com/item.htm?ftt&id798036415719 型号 1路总线EC网关 MS-A2-1011 2路总线EC网关 MS-A2-1021 4路总线EC网关 MS-A2-1041 EtherCAT 串口网关 EtherCAT 转 RS485 技术规格 …...

Spring Boot WebFlux 中 WebSocket 生命周期解析

Spring Boot WebFlux 中的 WebSocket 提供了一种高效、异步的方式来处理客户端与服务器之间的双向通信。WebSocket 连接的生命周期包括连接建立、消息传输、连接关闭以及资源清理等过程。此外&#xff0c;为了确保 WebSocket 连接的稳定性和可靠性&#xff0c;我们可以加入重试…...

集合论之集合的表示法

目录 1. 说明 2. 常用表示法 2.1 枚举法(Roster Notation) 2.2 构建法(Set-builder notation) 3. 其它表示法 1. 说明 要表示一个集合&#xff0c;可以直接列出其元素&#xff0c;或者提供一种可以唯一地刻画其元素的方当。 2. 常用表示法 2.1 枚举法(Roster Notatio…...

【C语言】值传递与指针传递,以及 `.` 和 `->` 操作详解

在 C 语言中,函数参数的传递机制和结构体成员的访问方式是编程中的核心概念。值传递(pass-by-value)和指针传递(pass-by-pointer)决定了函数如何处理传入的数据,而 . 操作符 和 -> 操作符 则是访问结构体成员的两种主要工具。这两者密切相关,尤其在处理结构体时,它们…...

机器人训练环境isaac gym以及legged_gym项目的配置问题

完整的安装环境教程(强烈推荐):...

DeepSeek 开源周回顾「GitHub 热点速览」

上周&#xff0c;DeepSeek 发布的开源项目用一个词形容就是&#xff1a;榨干性能&#xff01;由于篇幅有限&#xff0c;这里仅列出项目名称和简介&#xff0c;感兴趣的同学可以前往 DeepSeek 的开源组织页面&#xff0c;深入探索每个项目的精彩之处&#xff01; 第一天 FlashML…...

冯 • 诺依曼体系结构

文章目录 冯 • 诺依曼体系结构的介绍冯 • 诺依曼体系结构的由来内存是如何提高冯•诺依曼体系结构效率的&#xff1f;为什么程序运行之前必须先加载到内存&#xff1f;从软件层面上再理解冯 • 诺依曼体系结构&#xff08;QQ聊天的数据流动&#xff09;一些知识的补充 冯 • …...

软考架构师笔记-存储管理

1.5 存储管理 存储管理 页式存储组织 虚地址 页号 | 页内地址页表 页号 | 块号物理地址 块号 | 页内地址访存两次&#xff1a;访问页表得到物理地址&#xff0c;根据物理地址得到数据就是把用户程序的空间分成若干页&#xff0c;把内存空间分成若干块&#xff0c;块和页的…...

【杂谈】信创电脑华为w515(统信系统)登录锁定及忘记密码处理

华为w515麒麟芯片版&#xff0c;还有非麒麟芯片版本&#xff0c;是一款信创电脑&#xff0c;一般安装的UOS系统。 准备一个空U盘&#xff0c;先下载镜像文件及启动盘制作工具&#xff0c;连接如下&#xff1a; 百度网盘 请输入提取码 http://livecd.uostools.com/img/apps/l…...

C#实现语音合成播报器——基于System.Speech的语音交互方案,在windows上实现语音播报指定文本

——基于System.Speech的语音交互方案&#xff0c;在windows上实现语音播报指定文本 一、语音合成播报应用场景 语音合成播报器广泛应用于以下领域&#xff1a; 工业控制&#xff1a;生产线异常报警、设备状态实时播报&#xff08;如网页4中的WinCC语音报警插件&#xff09;…...

【数据库】关系代数

关系代数 一、关系代数的概念二、关系代数的运算2.1 并、差、交2.2 投影、选择2.3 笛卡尔积2.4 连接2.5 重命名2.6 优先级 一、关系代数的概念 关系代数是一种抽象的数据查询语言用对关系的运算来表达查询 运算对象&#xff1a;关系运算符&#xff1a;4类运算结果&#xff1a;…...

点云滤波方法:特点、作用及使用场景

点云滤波是点云数据预处理的重要步骤&#xff0c;目的是去除噪声点、离群点等异常数据&#xff0c;平滑点云或提取特定频段特征&#xff0c;为后续的特征提取、配准、曲面重建、可视化等高阶应用打下良好基础。以下是点云中几种常见滤波方法的特点、作用及使用场景&#xff1a;…...

MWC 2025 | 移远通信大模型解决方案加速落地,引领服务机器人创新变革

随着人工智能、大模型等技术的蓬勃发展&#xff0c;生成式AI应用全面爆发。在此背景下&#xff0c;服务机器人作为大模型技术在端侧落地的关键场景&#xff0c;迎来了前所未有的发展机遇。 作为与用户直接交互的智能设备&#xff0c;服务机器人需要应对复杂场景下的感知、决策和…...

如何下载安装 PyCharm?

李升伟 整理 一、下载 PyCharm 访问官网 打开 PyCharm 官网&#xff0c;点击 "Download" 按钮25。 版本选择&#xff1a; 社区版&#xff08;Community&#xff09;&#xff1a;免费使用&#xff0c;适合个人学习和基础开发。 专业版&#xff08;Professional&#…...

STM32F407IGT的USB功能

使用STM32F407IGT的USB功能时,需注意硬件设计、协议配置、软件开发和调试等关键点。以下是分步指南和注意事项: 1. 硬件设计 USB接口选择: OTG FS(全速,12 Mbps):内置PHY,适用于简单应用(如HID、CDC)。OTG HS(高速,480 Mbps):需外接ULPI PHY芯片(如USB3300),…...

虚拟机IP配置

以下是在常见操作系统中配置虚拟机IP的一般步骤&#xff1a; 一、VMware Workstation&#xff08;Windows或Linux主机下的虚拟机&#xff09; 1. 桥接模式&#xff08;Bridged&#xff09;下的IP配置 - 在虚拟机设置中&#xff0c;将网络适配器设置为桥接模式。 - 启动虚拟机…...

机器学习-决策树详细解释

目录 一、预备知识 1.信息熵: 2.条件熵: 3.信息增益 4.基于信息增益选择分割特征的过程 5. C4.5算法 6.C435算法选择特征的策略 7 基尼不纯度: 二. 决策树的核心概念 ​1.树的结构 ​2.关键算法 三. 决策树的构建过程 1.特征选择 2.递归分割 3.停止条件 四. 决…...

kube-state-metrics镜像配置

在 Kubernetes 上部署 kube-state-metrics 时&#xff0c;镜像配置是非常重要的一步。kube-state-metrics 的官方镜像托管在 Google Container Registry (GCR) 上&#xff0c;但如果你无法直接访问 GCR&#xff0c;或者需要自定义镜像&#xff0c;可以按照以下步骤进行配置。 …...

计算机网络面试题

介绍一下Http常见的状态码 200 OK&#xff1a;最常见的成功响应码&#xff0c;表示服务器已成功处理了客户端的请求&#xff0c;请求的资源正常返回。400 Bad Request&#xff1a;表示客户端发送的请求存在语法错误或无法被服务器理解&#xff0c;如请求参数缺失、格式不正确等…...