【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.1 从零搭建NumPy环境:安装指南与初体验

1. 从零搭建NumPy环境:安装指南与初体验
NumPy核心能力图解(架构图)
NumPy 是 Python 中用于科学计算的核心库,它提供了高效的多维数组对象以及用于处理这些数组的各种操作。NumPy 的核心能力可以概括为以下几个方面:
- 高效数组操作:NumPy 数组(
ndarray)比 Python 列表更高效,支持向量化操作。 - 数学函数:提供了丰富的数学函数,如三角函数、指数函数、对数函数等。
- 线性代数:支持矩阵运算、特征值分解、奇异值分解等。
- 随机数生成:提供了多种随机数生成器,用于模拟数据等。
- 广播机制:支持不同形状的数组之间的运算。
- 文件读写:支持多种文件格式的读写操作,如
.npy、.npz等。 - 傅里叶变换:支持频域和时域之间的转换。
- 集合操作:支持集合的交集、并集、差集等操作。
下面是 NumPy 的架构图:
Anaconda/Pip双环境安装指南(含版本选择建议)
NumPy 可以通过多种方式安装,其中最常用的两种方式是使用 Anaconda 和 Pip。下面我们将详细介绍这两种方式的安装步骤,并提供版本选择建议。
1.1 使用 Anaconda 安装 NumPy
步骤 1:下载 Anaconda
首先,访问 Anaconda 官方网站并下载最新版本的 Anaconda。Anaconda 为不同的操作系统提供了不同的安装包,确保选择与你当前操作系统相匹配的版本。
- Windows:https://www.anaconda.com/products/distribution#download-section
- Mac:https://www.anaconda.com/products/distribution#download-section
- Linux:https://www.anaconda.com/products/distribution#download-section
步骤 2:安装 Anaconda
按照下载的安装包中的说明进行安装。安装过程中,建议选择默认选项,特别是将 Anaconda 添加到系统路径中。
步骤 3:创建并激活环境
打开 Anaconda Prompt(Windows)或终端(Mac/Linux),创建一个新的环境并激活它。
conda create -n numpy_env python=3.9 # 创建名为 numpy_env 的环境,并指定 Python 版本为 3.9
conda activate numpy_env # 激活环境
步骤 4:安装 NumPy
在激活的环境中,使用以下命令安装 NumPy:
conda install numpy # 安装 NumPy
1.2 使用 Pip 安装 NumPy
步骤 1:安装 Python
确保你的系统已经安装了 Python。你可以从 Python 官方网站下载并安装最新版本的 Python。
- Windows:https://www.python.org/downloads/windows/
- Mac:https://www.python.org/downloads/macos/
- Linux:大多数 Linux 发行版已经预装了 Python,如果没有,可以使用包管理器安装。
步骤 2:安装 Pip
大多数情况下,Python 安装时会自带 Pip。你可以通过以下命令检查 Pip 是否已安装:
python -m pip --version # 检查 Pip 版本
如果没有安装,可以使用以下命令安装:
python -m ensurepip --upgrade # 安装并升级 Pip
步骤 3:创建并激活虚拟环境
推荐使用虚拟环境来管理 Python 项目依赖。你可以使用 venv 模块创建虚拟环境。
python -m venv numpy_env # 创建名为 numpy_env 的虚拟环境
source numpy_env/bin/activate # 激活环境(Linux/Mac)
numpy_env\Scripts\activate # 激活环境(Windows)
步骤 4:安装 NumPy
在激活的虚拟环境中,使用以下命令安装 NumPy:
pip install numpy # 安装 NumPy
三平台安装步骤对比表格
| 步骤 | Anaconda | Pip |
|---|---|---|
| 1. 下载 | 访问 Anaconda 官方网站下载安装包 | 确保系统已安装 Python |
| 2. 安装 | 按照安装包说明进行安装 | 从 Python 官方网站下载并安装 |
| 3. 创建环境 | conda create -n numpy_env python=3.9 | python -m venv numpy_env |
| 4. 激活环境 | conda activate numpy_env | source numpy_env/bin/activate(Linux/Mac)numpy_env\Scripts\activate(Windows) |
| 5. 安装 NumPy | conda install numpy | pip install numpy |
验证安装的3种方法
1.3.1 终端命令验证
方法 1:检查 NumPy 版本
python -c "import numpy as np; print(np.__version__)" # 检查 NumPy 版本
方法 2:列出已安装的包
conda list numpy # 列出 Anaconda 环境中已安装的 NumPy 包
pip list | grep numpy # 列出 Pip 环境中已安装的 NumPy 包
1.3.2 Python 代码验证
方法 3:运行简单的 NumPy 代码
import numpy as np# 创建一个 3x3 的数组
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("创建的 3x3 数组:")
print(array)# 计算数组的平均值
mean_value = np.mean(array)
print("数组的平均值:", mean_value)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建一个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入一个二维列表,其中每个子列表代表数组的一行
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("创建的 3x3 数组:") # 打印数组
print(array)# 计算数组的平均值
# np.mean 是 NumPy 中用于计算平均值的函数
# 传入数组作为参数
mean_value = np.mean(array)
print("数组的平均值:", mean_value) # 打印平均值
常见安装报错解决方案(附错误截图示例)
问题 1:Pip 安装时报错
错误示例:
ERROR: Could not find a version that satisfies the requirement numpy (from versions: none)
ERROR: No matching distribution found for numpy
解决方案:
-
确保你的网络连接正常。
-
升级 Pip 到最新版本:
pip install --upgrade pip -
如果仍然报错,可以尝试使用国内的镜像源:
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
问题 2:Anaconda 安装时报错
错误示例:
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
解决方案:
-
重启 Anaconda Prompt 或终端。
-
清除缓存并重新安装:
conda clean --all conda install numpy -
如果仍然报错,可以尝试使用国内的镜像源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda install numpy
问题 3:虚拟环境无法激活
错误示例:
source: command not found
解决方案:
- 确保你使用的是正确的激活命令。在 Windows 上使用
numpy_env\Scripts\activate,在 Linux/Mac 上使用source numpy_env/bin/activate。 - 检查虚拟环境目录是否存在,并且路径正确。
第一个NumPy程序:数组创建与基础运算
1.4.1 创建数组
NumPy 提供了多种创建数组的方法,包括从列表创建、从文件读取、随机生成等。下面我们将介绍最常见的几种方法。
1. 从列表创建数组
import numpy as np# 从列表创建一维数组
one_d_array = np.array([1, 2, 3, 4, 5])
print("一维数组:")
print(one_d_array)# 从列表创建二维数组
two_d_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("二维数组:")
print(two_d_array)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np# 从列表创建一维数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入一个一维列表,创建一个一维数组
one_d_array = np.array([1, 2, 3, 4, 5])
print("一维数组:") # 打印一维数组
print(one_d_array)# 从列表创建二维数组
# 传入一个二维列表,其中每个子列表代表数组的一行
two_d_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("二维数组:") # 打印二维数组
print(two_d_array)
2. 从文件读取数组
NumPy 支持从多种文件格式读取数组,最常用的是 .npy 和 .npz 文件。
import numpy as np# 从 .npy 文件读取数组
array_from_npy = np.load('array.npy')
print("从 .npy 文件读取的数组:")
print(array_from_npy)# 从 .npz 文件读取数组
data = np.load('data.npz')
array1 = data['array1']
array2 = data['array2']
print("从 .npz 文件读取的数组1:")
print(array1)
print("从 .npz 文件读取的数组2:")
print(array2)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np# 从 .npy 文件读取数组
# np.load 是 NumPy 中用于从文件加载数组的函数
# 传入文件路径作为参数
array_from_npy = np.load('array.npy')
print("从 .npy 文件读取的数组:") # 打印从 .npy 文件读取的数组
print(array_from_npy)# 从 .npz 文件读取数组
# .npz 文件可以存储多个数组
# 使用 np.load 读取 .npz 文件
data = np.load('data.npz')
# 通过键值访问存储在 .npz 文件中的数组
array1 = data['array1']
array2 = data['array2']
print("从 .npz 文件读取的数组1:") # 打印数组1
print(array1)
print("从 .npz 文件读取的数组2:") # 打印数组2
print(array2)
3. 随机生成数组
import numpy as np# 生成一个 3x3 的随机数组,元素值在 0 到 1 之间
random_array = np.random.rand(3, 3)
print("随机生成的 3x3 数组:")
print(random_array)# 生成一个 3x3 的随机整数数组,元素值在 1 到 10 之间
random_int_array = np.random.randint(1, 10, (3, 3))
print("随机生成的 3x3 整数数组:")
print(random_int_array)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np# 生成一个 3x3 的随机数组,元素值在 0 到 1 之间
# np.random.rand 是 NumPy 中用于生成随机数组的函数
# 传入数组的形状作为参数
random_array = np.random.rand(3, 3)
print("随机生成的 3x3 数组:") # 打印随机数组
print(random_array)# 生成一个 3x3 的随机整数数组,元素值在 1 到 10 之间
# np.random.randint 是 NumPy 中用于生成随机整数数组的函数
# 传入最小值、最大值和数组形状作为参数
random_int_array = np.random.randint(1, 10, (3, 3))
print("随机生成的 3x3 整数数组:") # 打印随机整数数组
print(random_int_array)
1.4.2 基础运算
NumPy 提供了丰富的数组运算功能,包括加法、减法、乘法、除法、矩阵乘法等。下面我们将介绍一些常见的基础运算。
1. 数组加法
import numpy as np# 创建两个 3x3 的数组
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的加法
sum_array = array1 + array2
print("数组加法:")
print(sum_array)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建两个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的加法
# NumPy 支持直接使用 + 运算符进行数组加法
sum_array = array1 + array2
print("数组加法:") # 打印结果
print(sum_array)
2. 数组减法
import numpy as np# 创建两个 3x3 的数组
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的减法
diff_array = array1 - array2
print("数组减法:")
print(diff_array)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建两个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的减法
# NumPy 支持直接使用 - 运算符进行数组减法
diff_array = array1 - array2
print("数组减法:") # 打印结果
print(diff_array)
3. 数组乘法
import numpy as np# 创建两个 3x3 的数组
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的逐元素乘法
elementwise_product = array1 * array2
print("逐元素乘法:")
print(elementwise_product)# 计算两个数组的矩阵乘法
matrix_product = np.dot(array1, array2)
print("矩阵乘法:")
print(matrix_product)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建两个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的逐元素乘法
# NumPy 支持直接使用 * 运算符进行数组的逐元素乘法
elementwise_product = array1 * array2
print("逐元素乘法:") # 打印结果
print(elementwise_product)# 计算两个数组的矩阵乘法
# np.dot 是 NumPy 中用于计算矩阵乘法的函数
# 传入两个数组作为参数
matrix_product = np.dot(array1, array2)
print("矩阵乘法:") # 打印结果
print(matrix_product)
4. 数组除法
import numpy as np# 创建两个 3x3 的数组
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的逐元素除法
elementwise_division = array1 / array2
print("逐元素除法:")
print(elementwise_division)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建两个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的逐元素除法
# NumPy 支持直接使用 / 运算符进行数组的逐元素除法
elementwise_division = array1 / array2
print("逐元素除法:") # 打印结果
print(elementwise_division)
5. 数组转置
import numpy as np# 创建一个 3x3 的数组
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 计算数组的转置
transposed_array = array.T
print("数组转置:")
print(transposed_array)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建一个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 计算数组的转置
# .T 是 NumPy 数组的一个属性,用于获取数组的转置
transposed_array = array.T
print("数组转置:") # 打印结果
print(transposed_array)
6. 数组重塑
import numpy as np# 创建一个 1x9 的数组
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])# 将数组重塑为 3x3 的数组
reshaped_array = array.reshape(3, 3)
print("重塑后的数组:")
print(reshaped_array)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建一个 1x9 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入一个一维列表
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])# 将数组重塑为 3x3 的数组
# .reshape 是 NumPy 数组的一个方法,用于改变数组的形状
# 传入新的形状作为参数
reshaped_array = array.reshape(3, 3)
print("重塑后的数组:") # 打印结果
print(reshaped_array)
参考文献或资料
| 参考资料名称 | 链接 |
|---|---|
| NumPy 官方文档 | https://numpy.org/doc/ |
| Anaconda 官方文档 | https://docs.anaconda.com/ |
| Pip 官方文档 | https://pip.pypa.io/en/stable/ |
| Python 官方文档 | https://docs.python.org/3/ |
| NumPy 教程 | https://www.datacamp.com/community/tutorials/python-numpy-tutorial |
| NumPy 入门指南 | https://numpy.org/devdocs/user/quickstart.html |
| NumPy 环境搭建教程 | https://www.geeksforgeeks.org/how-to-install-numpy-on-windows/ |
| NumPy 学习笔记 | https://www.jianshu.com/p/4e4d5c1e7e8b |
| NumPy 初学者教程 | https://github.com/rougier/numpy-100 |
| NumPy 常见问题解答 | https://numpy.org/doc/stable/user/troubleshooting.html |
| NumPy 源码分析 | https://github.com/numpy/numpy |
| NumPy 速查表 | https://www.kaggle.com/learn/overview |
| NumPy 实战案例 | https://www.tensorflow.org/tutorials/quickstart/beginner |
| NumPy 书籍推荐 | https://www.springer.com/gp/book/9781484242452 |
| NumPy 视频教程 | https://www.youtube.com/watch?v=QUT1VHiLmmI |
| NumPy 交互式学习 | https://colab.research.google.com/ |
希望这篇文章能帮助你成功地搭建 NumPy 环境并进行初体验。这篇文章包含了详细的原理介绍、代码示例、源码注释以及案例等。希望这对您有帮助。如果有任何问题请随私信或评论告诉我。
相关文章:
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.1 从零搭建NumPy环境:安装指南与初体验
1. 从零搭建NumPy环境:安装指南与初体验 NumPy核心能力图解(架构图) NumPy 是 Python 中用于科学计算的核心库,它提供了高效的多维数组对象以及用于处理这些数组的各种操作。NumPy 的核心能力可以概括为以下几个方面:…...
ASP .NET Core 学习(.NET9)部署(一)windows
在windows部署 ASP .NET Core 的时候IIS是不二选择 一、IIS安装 不论是在window7 、w10还是Windows Server,都是十分简单的,下面以Windows10为例 打开控制面版—程序—启用或关闭Windows功能 勾选图中的两项,其中的子项看需求自行勾选&am…...
百日计划(2025年1月22日-4月30日,以完成ue4.0 shader抄写为目标)
目前遇到三个现象: 1,以前都是以跳槽为目标学习技术,但是目前工作难找,所以失去方向,有点迷茫了。 2,对于一项完整的内容,月计划时间不够用,如果工作上一扰乱,就又虎头蛇…...
AIGC视频生成模型:慕尼黑大学、NVIDIA等的Video LDMs模型
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍慕尼黑大学携手 NVIDIA 等共同推出视频生成模型 Video LDMs。NVIDIA 在 AI 领域的卓越成就家喻户晓,而慕尼黑大学同样不容小觑,…...
类与对象(中)
类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下 6 个默认成员函数。默认成员函数:用户没有显式实现,编译器会生…...
如何移植ftp服务器到arm板子?
很多厂家提供的sdk,一般都不自带ftp服务器功能, 需要要发人员自己移植ftp服务器程序。 本文手把手教大家如何移植ftp server到arm板子。 环境 sdk:复旦微 Buildroot 2018.02.31. 解压 $ mkdir ~/vsftpd $ cp vsftpd-3.0.2.tar.gz ~/vs…...
npm常见报错整理
npm install时报UNMET PEER DEPENDENCY 现象 npm install时报UNMET PEER DEPENDENCY,且执行npm install好几遍仍报这个。 原因 不是真的缺少某个包,而是安装的依赖版本不对,警告你应该安装某一个版本。 真的缺少某个包。 解决 看了下package.json文件,我的react是有的…...
苍穹外卖—订单模块
该模块分为地址表的增删改查、用户下单、订单支付三个部分。 第一部分地址表的增删改查无非就是对于单表的增删改查,较基础,因此直接导入代码。 地址表 一个用户可以有多个地址,同时有一个地址为默认地址。用户还可为地址添加例如&q…...
MQ的可靠消息投递机制
确保消息在发送、传递和消费过程中不会丢失、重复消费或错乱。 1. 消息的可靠投递 消息持久化: 消息被发送到队列后会存储在磁盘上,即使消息队列崩溃,消息也不会丢失。例如:Kafka、RabbitMQ等都支持持久化消息。Kafka通过将消息存…...
视频多模态模型——视频版ViT
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细解读多模态论文《ViViT: A Video Vision Transformer》,2021由google 提出用于视频处理的视觉 Transformer 模型,在视频多模态领域有…...
w179基于Java Web的流浪宠物管理系统的设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
MyBatis框架基础学习(1)
目录 一、MyBatis框架介绍。 (1)简化开发。 (2)持久层? (3)框架的解释! 二、JDBC开发缺点。 (1)硬编码。 (2)操作繁琐。 三、MyBatis框…...
arm-linux平台、rk3288 SDL移植
一、所需环境资源 1、arm-linux交叉编译器,这里使用的是gcc-linaro-6.3.1 2、linux交叉编译环境,这里使用的是Ubuntu 20.04 3、sdl2源码 https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.11.tar.gz 二、代码编译 1、解压sdl2源码…...
51单片机入门_01_单片机(MCU)概述(使用STC89C52芯片)
文章目录 1. 什么是单片机1.1 微型计算机的组成1.2 微型计算机的应用形态1.3 单板微型计算机1.4 单片机(MCU)1.4.1 单片机内部结构1.4.2 单片机应用系统的组成 1.5 80C51单片机系列1.5.1 STC公司的51单片机1.5.1 STC公司单片机的命名规则 2. 单片机的特点及应用领域2.1 单片机的…...
基础项目——扫雷(c++)
目录 前言一、环境配置二、基础框架三、关闭事件四、资源加载五、初始地图六、常量定义七、地图随机八、点击排雷九、格子类化十、 地图类化十一、 接口优化十二、 文件拆分十三、游戏重开 前言 各位小伙伴们,这期我们一起学习出贪吃蛇以外另一个基础的项目——扫雷…...
docker安装elk6.7.1-搜集java日志
docker安装elk6.7.1-搜集java日志 如果对运维课程感兴趣,可以在b站上、A站或csdn上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频 0.规划 192.168.171.130 tomcat日志filebeat 192.168.171.131 …...
自然语言处理(NLP)入门:基础概念与应用场景
什么是自然语言处理(NLP)? 自然语言处理(Natural Language Processing, NLP)是人工智能(AI)的一个重要分支,研究如何让计算机理解、生成、分析和与人类语言进行交互。换句话说&…...
AI News(1/21/2025):OpenAI 安全疏忽:ChatGPT漏洞引发DDoS风险/OpenAI 代理工具即将发布
1、OpenAI 的安全疏忽:ChatGPT API 漏洞引发DDoS风险 德国安全研究员 Benjamin Flesch 发现了一个严重的安全漏洞:攻击者可以通过向 ChatGPT API 发送一个 HTTP 请求,利用 ChatGPT 的爬虫对目标网站发起 DDoS 攻击。该漏洞源于 OpenAI 在处理…...
Linux——包源管理工具
一、概要 Linux下的包/源管理命令:主要任务就是完成在Linux环境下的安装/卸载/维护软件。 1.rpm 是最基础的rpm包的安装命令,需要提前下载相关安装包和依赖包。 2.yum/dnf (最好用)是基于rpm包的自动安装命令,可以自动…...
C++解决走迷宫问题:DFS、BFS算法应用
文章目录 思路:DFSBFSBFS和DFS的特点BFS 与 DFS 的区别BFS 的优点BFS 时间复杂度深度优先搜索(DFS)的优点深度优先搜索(DFS)的时间复杂度解释:空间复杂度总结:例如下面的迷宫: // 迷宫的表示:0表示可以走,1表示障碍 vector<vector<int>> maze = {{0, 0,…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
