Python简介
Python简介
1. Python定义
Python 是一种简单易学并且结合了解释性、编译性、互动性和面向对象的脚本语言。Python提供了高级数据结构,它的语法和动态类型以及解释性使它成为广大开发者的首选编程语言。
-
Python 是解释型语言: 开发过程中没有了编译这个环节。类似于PHP和Perl语言。
-
Python 是交互式语言: 可以在一个 Python 提示符 >>> 后直接执行代码。
-
Python 是面向对象语言: Python支持面向对象的风格或代码封装在对象的编程技术。
2. Python发展史
2.1 Python发展史
-
1980年代末:
-
Guido van Rossum在荷兰阿姆斯特丹的CWI(Centrum Wiskunde & Informatica)工作,开始设计Python语言,灵感来自于ABC语言和其他语言如C、Unix shell。
-
-
1991年:
-
Python第一个版本(0.9.0)发布,包含了很多现代Python的基本特性,如异常处理、函数、模块、以及一些内置数据类型。
-
-
1994年:
-
Python 1.0发布,增加了lambda、map、filter、reduce等功能。
-
-
2000年:
-
Python 2.0发布,引入了列表解析、垃圾回收机制、以及Unicode支持。
-
-
2008年:
-
Python 3.0发布,这是一个不向后兼容的版本,引入了许多改进,如print函数、整数除法、文本和数据的更明确区分等。
-
2.2 主要版本
-
Python 1.x 系列:
-
Python 1.0(1994年):引入了模块、异常、函数、以及核心数据类型如列表和字典。 -
Python 1.5(1998年):引入了许多新特性,包括嵌套作用域和标准库的扩展。
-
-
Python 2.x 系列:
-
Python 2.0(2000年):引入了垃圾回收机制、列表解析、Unicode支持等。 -
Python 2.7(2010年):作为2.x系列的最后一个主要版本,增加了一些3.x的特性,如新格式化字符串语法( str.format
)和字典理解(dictionary comprehensions)。
-
-
Python 3.x 系列:
-
Python 3.0(2008年):这是一个不向后兼容的版本,引入了许多改进和新特性,如print函数、整数除法、更明确的文本和数据区分、以及重新设计的标准库。 -
Python 3.6(2016年):引入了格式化字符串字面值(f-strings)、异步生成器和异步推导式。 -
Python 3.7(2018年):引入了数据类(dataclasses)、上下文变量、改进的模块导入机制等。 -
Python 3.8(2019年):引入了赋值表达式(walrus operator :=
)、位置仅参数等。 -
Python 3.9(2020年):引入了字典合并运算符( |
和|=
)、类型提示的改进等。 -
Python 3.10(2021年):引入了结构模式匹配(Structural Pattern Matching)、改进的错误消息等。 -
Python 3.11(2022年):引入了新的性能优化、改进的错误处理等。
-
2.3 Python2.0与Python3.0的区别
类别 | Python 2.0 | Python 3.0 |
---|---|---|
输出方面 | 使用print 关键字进行输出,例如:print "Hello" | 使用print() 函数,例如:print("Hello") |
输入方面 | 使用raw_input() 函数,例如:name = raw_input("请输入你的名字:") | 使用input() 函数,例如:name = input("请输入你的名字:") |
字符串的编码格式 | 默认采用ASCII编码对输入的字符串进行编码 | 默认采用Unicode编码对字符串进行编码 |
格式化字符串的方式 | 用% 占位符进行标准化格式输出字符串,例如:“Hello, %s" % ("World") | 兼容2.0的语法外,还可以用format() 函数,例如:“Hello, {}.format("World") |
源文件的编码格式 | 默认采用ASCII,因此使用中文时要在源文件开头加上一行注释:# -- coding: utf-8 -- | 默认采用utf-8 |
数据类型 | 有整型int 、长整型long | 只有整型int |
代码规范 | 源码不规范,重复代码很多 | 源码精简,美观、优雅 |
3. Python的特点
-
简单易读易学:Python是非常简单的语言,并且具有清晰的风格和强制缩进,Python具有简单的语法,极其容易入门。 -
免费其开源:Python是自由/开放源码的软件。可以自行对其源代码进行修改使用。 -
可移植性:Python可以被移植在许多平台上,常用的平台包括Linux、Windows、VxWorks、PlayStation、Windows CE、PocketPC等。 -
解释性: Python解释器把源代码转换成字节码,然后再把它翻译成计算机使用的机器语言并运行,即Python代码在运行之前不需要编译。 -
面向对象:Python支持面向对象的编程。程序通过组合(composition)与继承(inheritance)的方式定义类(class)。 -
可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,那么可以将部分程序用C或C++进行编写,然后在Python程序中调用。 -
可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。 -
交互式命令行:python可以单步直译运行,可以在一个 Python 提示符 >>> 后直接执行代码。 -
丰富的标准库:Python标准库包括字符串处理(字典、数组切片、正则表达式re)、文档生成、多线程、串行化、数据库、HTML/XML解析(BeautifulSoup,Expat)、单元测试(PyUnit)、代码版本控制(PySVN)、WAV文件、网络控制(urllib2)、密码系统、GUI(图形用户界面,PyQt)、图形模块(Tkinter、PyTCL、WxPython)等。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。 -
规范性:采用强制缩进的方式使得代码具有较好可读性,减少了视觉上的错乱。 -
胶水语言:python经常用作将不同语言编写的程序“粘”在一起的胶水语言。Boost.Python使得Python和C++的类库可互相调用(.pyc);Jpython是用Java实现的Python,可以同时使用两者的类库;Ironpython是Python在.NET平台上的版本。
4. Python编译和运行过程
首先将Python源代码编译生成Python字节码,然后再由Python虚拟机来执行Python字节码,最后在终端输出运行结果。
以下是简要说明:
-
源代码:编写Python源代码(.py文件)。 -
编译:Python解释器将源代码编译成字节码(Python Byte Code,扩展名一般为.pyc文件)。 -
解释:Python虚拟机(Python Virtual Machine,简称PVM)读取字节码并逐行解释执行。 -
执行:最终运行代码,执行相应的操作,比如终端输出。

注意:
Python是一种解释型语言,指的是解释Python字节码,而不是Python源代码。这种机制的基本思想与Java和.NET是一致的。
4.1 Python解释器
Python解释器(*Interpreter*)是把Python语言翻译成计算机 CPU 能听懂的机器指令。
首先可以在命令提示行输入python --version来查看python的版本:
$ python --version
Python 3.10.8
然后在命令提示符中输入"Python"命令来启动Python解释器:
$ python
Python 3.10.8 (tags/v3.10.8:aaaf517, Oct 11 2022, 16:50:30) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
Python解释器由多个组件构成,这些组件共同合作,实现Python代码的解析、编译和执行。以下是Python解释器的主要组件:
-
词法分析器(Lexer/Tokenizer):
-
功能:将源代码转换为标记(token)序列,这些标记是编程语言的基本组成部分,如关键字、变量名、操作符等。 -
工作原理:扫描源代码的字符流,将其分割成有意义的标记,供语法分析器使用。
-
-
语法分析器(Parser):
-
功能:将标记序列转换为抽象语法树(AST),表示代码的结构和语法。 -
工作原理:根据语言的语法规则,解析标记序列,构建出反映代码层次关系的树状结构。
-
-
语义分析器(Semantic Analyzer):
-
功能:检查AST的语义正确性,确保变量、类型和操作符的使用符合语言规则。 -
工作原理:执行类型检查、作用域解析等任务,以验证代码的逻辑正确性。
-
-
编译器(Compiler):
-
功能:将AST转换为字节码(bytecode)。 -
工作原理:将高层次的语言结构翻译成低层次的指令序列,便于虚拟机执行。
-
-
字节码:
-
简介:一种中间表示形式,介于源代码和机器码之间。 -
特点:字节码是跨平台的,可移植的,与特定的硬件无关。
-
-
Python虚拟机(Python Virtual Machine, PVM):
-
功能:解释和执行字节码。 -
工作原理:PVM逐条读取字节码指令,并将其转换为机器指令或直接执行相应的操作。
-
-
运行时环境(Runtime Environment):
-
功能:提供程序执行所需的基础设施,如内存管理、垃圾回收、标准库支持等。 -
特点:包括内存分配器、垃圾回收器、内置函数和对象模型等。
-
-
标准库(Standard Library):
-
功能:提供一组常用模块和包,支持文件操作、网络通信、数据处理等任务。 -
特点:丰富的模块集成在解释器中,直接可用。
-
4.2 Python解释器具体实现
-
Cpython:用C语言开发的,在命令行下运行Python就是启动Cpython解释器,官方下载的python2.7均为Cpython。Cpython用>>>作为提示符。 -
Ipython:基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。IPython用In [序号]:作为提示符。 -
PyPy:主要针对执行速度。采用JIT技术,对Python代码进行动态编译。绝大部分Python代码都可以在PyPy下运行。 -
Jpython:运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。 -
IronPython:运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。 -
Boost.Python:使得Python和C++的类库可互相调用(.pyc)。
以下是Python解释器种类的整理表格:
解释器 | 简介 | 特点 | 优点 | 缺点 |
---|---|---|---|---|
CPython | 默认的、最常用的Python解释器 | 用C语言编写,最广泛使用,兼容性最好。官方下载的python均为Cpython,用>>>作为提示符。 | 稳定,支持大多数的Python库和模块 | 性能较低,主要由于GIL(全局解释器锁)的限制 |
IPython | 基于CPython之上的一个交互式解释器 | 提供强大的交互式shell,支持自动补全、调试器等。IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。IPython用In [序号]:作为提示符。 | 非常适合数据科学和研究工作,提供了更好的用户体验和丰富的功能 | 主要用于交互式计算,不适合作为生产环境的解释器 |
PyPy | 采用JIT(即时编译)技术的Python解释器,对Python代码进行动态编译 | 比CPython更快,特别是在长时间运行的程序中。绝大部分Python代码都可以在PyPy下运行。 | 显著提高性能,特别适用于计算密集型任务 | 与CPython的兼容性不完全,某些库可能无法使用。 |
Jython | 运行在Java平台上的Python解释器 | 可以直接调用Java库和类,可以直接把Python代码编译成Java字节码执行。 | 与Java无缝集成,适合需要在Java平台上运行的应用 | 性能不如CPython,更新较慢 |
IronPython | 运行在微软.NET平台上的Python解释器 | 可以直接调用.NET框架的类和库,可以直接把Python代码编译成.Net的字节码。 | 与.NET无缝集成,适合需要在.NET平台上运行的应用 | 与CPython的兼容性不完全,某些库可能无法使用 |
MicroPython | 用于微控制器和资源受限环境的Python解释器 | 精简版的Python解释器,适用于嵌入式系统 | 体积小,适合嵌入式开发和物联网(IoT)应用 | 功能受限,不支持所有的Python标准库 |
Pyston | 采用JIT技术的Python解释器,旨在提高CPython的性能 | 与CPython完全兼容,同时在性能上有所提升 | 提高性能,特别是在计算密集型任务中。Pyston 是 Python 的基于 JIT 另一种实现,更快且高度兼容 CPython,和另一个被寄予厚望的 pypy 相比,Pyston 背后有 DropBox 的资金支持,发展会比 PyPy 更快。 | 仍在发展中,稳定性和兼容性有待进一步验证 |
Boost.Python | 用于将C++与Python无缝集成的库 | 允许在C++中嵌入Python解释器,或将C++类和函数暴露给Python使用 | 适合需要高性能计算的应用,充分利用C++的性能优势,同时享受Python的易用性 | 需要掌握C++编程,有一定的学习曲线,复杂性较高 |
4.3 Python虚拟机
python并不将py文件编译为机器码来运行,而是由python虚拟机一条条地将py语句解释运行,python虚拟机的执行方式就是模仿普通x86可执行文件运行方式。
虚拟机输入为字节码.pyc文件,由字节码文件加载器将二进制的.pyc文件加载到内存,由执行引擎解释执行,输出为字节码文件的执行结果。
4.4 Python字节码
Python字节码(Python Bytecode)是Python源代码编译后的中间表示形式。字节码是与特定硬件无关的低级表示,适合Python虚拟机(PVM)解释执行。字节码文件通常以.pyc
扩展名存储。
-
跨平台:字节码独立于具体的硬件和操作系统,可以在任何支持相应Python解释器的平台上运行。 -
优化执行:通过将源代码编译为字节码,可以减少源代码解析的开销,提高执行效率。
当Python脚本首次运行时,解释器会将源代码(.py文件)编译为字节码,并将字节码存储在__pycache__
目录下,以.pyc
文件形式保存。之后运行相同脚本时,解释器会直接使用已有的字节码文件,除非源代码发生了变化。
备注
Python中的字节码(bytecode) 是一种数据类型, Python代码的编译结果就是bytecode对象。bytecode对象可以由虚拟机加载后直接运行,而pyc文件就是bytecode在硬盘上的保存形式。
4.5 Python源代码编译和执行的详细流程
-
源代码输入:
-
Python解释器读取并加载Python源代码(.py文件)。
-
-
词法分析(Lexical Analysis):
-
词法分析器将源代码转换为标记(token),这些标记是编程语言的基本组成部分。
-
-
语法分析(Parsing):
-
语法分析器根据标记序列构建抽象语法树(AST),表示代码的结构和语法。
-
-
语义分析(Semantic Analysis):
-
语义分析器检查AST的语义正确性,确保变量、类型和操作符的使用符合语言规则。
-
-
字节码生成(Bytecode Generation):
-
编译器将AST转换为字节码,生成的字节码是跨平台的低级表示形式。
-
-
存储字节码(Bytecode Storage):
-
编译后的字节码保存为 .pyc
文件,存储在__pycache__
目录下,以便后续使用。
-
-
字节码加载:
-
当再次运行相同的Python脚本时,解释器首先检查是否存在对应的字节码文件(.pyc)。 -
如果存在且未过期,直接加载字节码文件;否则,重新编译源代码生成新的字节码。
-
-
执行字节码(Execution by PVM):
-
Python虚拟机(PVM)读取字节码文件,逐条解释和执行字节码指令。 -
PVM负责内存管理、垃圾回收、动态类型检查和其他运行时任务。
-
以下是上述流程的图示:

5. Python的应用
应用领域 | 描述 | 示例库和工具 | 应用示例 |
---|---|---|---|
Web开发 | 创建动态网站、处理HTTP请求、数据库操作等 | Django、Flask、Pyramid | Django用于开发Instagram,Flask用于开发Pinterest |
数据科学与机器学习 | 数据处理与分析、机器学习模型训练与预测、数据可视化等 | NumPy、Pandas、Matplotlib、Scikit-learn、TensorFlow、Keras、PyTorch | 使用TensorFlow进行图像识别,使用Pandas进行数据分析 |
网络爬虫、自动化与脚本编写 | 自动化任务、网络爬虫、数据抓取、自动化测试等。用于搜索引擎、深度学习等领域提供数据源。 | Selenium、Beautiful Soup、Scrapy、pyautogui、requests、pytest | 使用Selenium进行浏览器自动化测试,使用Scrapy进行网页数据抓取,使用Beautiful Soup解析HTML内容 |
科学计算与工程 | 科学计算、符号数学、图像处理等 | SciPy、SymPy、OpenCV、Biopython | 使用SciPy进行数值计算,使用OpenCV进行图像处理 |
人工智能与自然语言处理 | 自然语言处理、文本分析、语音识别、聊天机器人等 | NLTK、spaCy、GPT、Transformers | 使用NLTK进行文本分类,使用Transformers进行语言模型训练 |
数据科学 | NumPy扩展提供大量与许多标准数学库的接口。机器学习(scikit-learn、TensorFlow框架)、数据统计分析和可视化(Matplotlib、seaborn框架)。 | NumPy、Pandas、Matplotlib、seaborn、scikit-learn、TensorFlow | 使用NumPy进行数值计算,使用scikit-learn训练机器学习模型,使用Matplotlib进行数据可视化 |
游戏开发 | 2D游戏开发、图形渲染、游戏逻辑控制 | Pygame、PyKyra | 使用Pygame开发简单的2D游戏 |
桌面应用开发 | 使用PyQt、Kivy等框架进行图形用户界面程序的开发。 | PyQt、Kivy | 使用PyQt开发桌面应用,使用Kivy开发跨平台应用 |
教育与教学 | 编程教学的入门语言,广泛用于计算机科学教育 | 无需特定库 | 很多学校和在线课程使用Python作为教学语言 |
金融与量化交易 | 金融数据分析、量化交易策略开发、回测 | QuantLib、Zipline、PyAlgoTrade | 使用Zipline开发和回测交易策略 |
网络与系统运维 | 自动化配置管理、远程命令执行、系统监控 | Ansible、SaltStack、Fabric | 使用Ansible进行大规模服务器配置管理 |
区块链与加密货币 | 开发区块链应用、智能合约、加密货币交易 | Web3.py、pyethereum | 使用Web3.py与以太坊区块链进行交互 |
物联网(IoT) | 开发嵌入式系统和物联网设备 | MicroPython、CircuitPython | 使用MicroPython开发小型物联网设备 |
网络安全 | 渗透测试、网络分析、加密解密等 | Scapy、Paramiko、PyCrypto | 使用Scapy进行网络包分析,使用PyCrypto进行数据加密 |
Linux/UNIX运维 | 提供API(Application Programming Interface应用程序编程接口),能方便进行系统维护和管理。 | os、shutil、subprocess | 使用os模块进行文件系统操作,使用subprocess模块执行系统命令 |
移动App开发 | 使用PyQt、Kivy等进行移动应用开发。Python的PyOpenGL模块封装了OpenGL应用程序编程接口,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。 | PyQt、Kivy、PyOpenGL、PyGame | 使用Kivy开发跨平台移动应用,使用PyOpenGL进行图形处理,使用PyGame开发移动游戏 |
网络编程 | 基于Socket等协议,提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。许多大规模软件开发计划如Zope,Mnet及BitTorrent,Google都在广泛地使用它。 | socket、asyncio、Twisted | 使用socket模块开发聊天程序,使用Twisted开发分布式应用 |
图形处理 | 有PIL、Tkinter等图形库支持,能方便进行图形处理。 | PIL、Pillow、Tkinter | 使用Pillow进行图像处理,使用Tkinter开发图形界面 |
文本处理 | 提供re模块支持正则表达式,还提供SGML、XML分析模块,许多程序员利用Python进行XML程序的开发。 | re、xml.etree.ElementTree、Beautiful Soup | 使用re模块进行文本搜索,使用xml.etree.ElementTree解析XML文档 |
数据库编程 | 可通过遵循Python DB-API规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等数据库通信。Python自带有一个Gadfly模块,提供了一个完整的SQL环境。 | sqlite3、SQLAlchemy、psycopg2、PyMySQL | 使用sqlite3操作SQLite数据库,使用SQLAlchemy进行ORM映射 |
python应用举例:
-
Google - 谷歌在很多项目中用python作为网络应用的后端,如Google Groups、Gmail、Google Maps等 -
NASA - 美国宇航局,从1994年起把python作为主要开发语言 -
豆瓣网 - 图书、唱片、电影等文化产品的资料数据库网站 -
Torchlight --Python编写的大型3D游戏,原Blizzard公司人员制作发行,开源 -
Blender - 以C与Python开发的开源3D绘图软件 在科学研究中也得到广泛的应用
本文由 mdnice 多平台发布
相关文章:

Python简介
Python简介 1. Python定义 Python 是一种简单易学并且结合了解释性、编译性、互动性和面向对象的脚本语言。Python提供了高级数据结构,它的语法和动态类型以及解释性使它成为广大开发者的首选编程语言。 Python 是解释型语言: 开发过程中没有了编译这个环…...

C++完成特色旅游管理信息系统
背景: 继C完成淄博烧烤节管理系统后,我们来到了特色旅游管理信息系统的代码编写,历史链接点下方。 C完成淄博烧烤节管理系统_淄博烧烤总账管理系统的-CSDN博客 问题描述: 为了更好的管理各个服务小组,开发相应的管…...

贵州大学24计算机考研数据速览,国家重点实验室22408复试线285分!贵州大学计算机考研考情分析!
贵州大学计算机科学与技术学院坐落在贵州大学北校区(贵阳花溪)。 学院现有教职工139人,其中专职教师126人,教授17人,副教授37人,讲师46人,高级实验师4人,实验师17人。具有博士学位的…...

分区4K对齐那些事,你想知道的都在这里
在对磁盘进行分区时,有一个很重要的注意事项,就是要将分区对齐,不对齐可能会造成磁盘性能的下降。尤其是固态硬盘SSD,基本上都要求4K对齐。磁盘读写速度慢还找不到原因?可能就是4K对齐的锅。那么分区对齐究竟是怎么回事?为什么要对齐?如何才能对齐?如何检测是否对齐呢?…...

达梦数据库学习笔记
架构、特点和基本概念 达梦数据库(DM Database)是中国达梦数据库有限公司自主研发的关系型数据库管理系统。它广泛应用于政府、金融、电信、能源等行业,具备高性能、高可靠性和高安全性的特点。 架构 达梦数据库的架构设计注重高性能和高可…...

安卓绕过限制直接使用Android/data无需授权,支持安卓14(部分)
大家都知道,安卓每次更新都会给权限划分的更细、收的更紧。 早在安卓11的时候还可以直接通过授权Android/data来实现操作其他软件的目录,没有之前安卓11授权的图了,反正都长一个样,就直接贴新图了。 后面到了安卓12~13的…...

【知识蒸馏】多任务模型 logit-based 知识蒸馏实战
一、什么是逻辑(logit)知识蒸馏 Feature-based蒸馏原理是知识蒸馏中的一种重要方法,其关键在于利用教师模型的隐藏层特征来指导学生模型的学习过程。这种蒸馏方式旨在使学生模型能够学习到教师模型在特征提取和表示方面的能力,从…...

C:技术面试总结
1 变量的声明和定义: 定义:为变量分配地址和存储空间 声明:不分配地址。一个变量可以在多个地方声明,但只能在一个地方定义。extern修饰的变量声明,说明此变量将在文件以外或文件后面部分定义。 2 局部变量是否能与全局变量重名: 可以,局部变量会屏蔽全局变量 局部…...

OpenHarmony 实战开发——一文总结ACE代码框架
一、前言 ACE_Engine框架是OpenAtom OpenHarmony(简称“OpenHarmony”)的UI开发框架,为开发者提供在进行应用UI开发时所必需的各种组件,以及定义这些组件的属性、样式、事件及方法,通过这些组件可以方便进行OpenHarmo…...

【数据结构与算法】之堆的应用——堆排序及Top_K问题!
目录 1、堆排序 2、Top_K问题 3、完结散花 个人主页:秋风起,再归来~ 数据结构与算法 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 1、堆排序 对一个无序的数组…...

啊哈!算法-第2章-栈、队列、链表
啊哈!算法-第2章-栈、队列、链表 第1节 解密qq号——队列第2节 解密回文——栈第3节 纸牌游戏——小猫钓鱼第4节 链表第5节 模拟链表 第1节 解密qq号——队列 新学期开始了,小哈是小哼的新同桌(小哈是个大帅哥哦~),小哼向小哈询问 QQ 号, 小…...

简述 v-if 和 v-show 的区别
v-if 和 v-show 都是 Vue.js 中用于控制元素显示与隐藏的指令,但它们的工作方式有显著的差异。以下是它们之间的主要区别: 渲染方式: v-if:v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和…...

Linux驱动学习之模块化,参数传递,符号导出
1.模块化 1.1.模块化的基本概念: 模块化是指将特定的功能或组件独立出来,以便于开发、测试和维护。在Linux设备驱动中,模块化允许将驱动程序作为内核模块动态加载到系统中,从而提高了系统的灵活性和可扩展性。 1.2.Linux内核模…...

RabbitMQ02-RebbitMQ简介及交换器
一. AMQP协议 什么是AMQP协议 AMQP(Advanced Message Queuing Protocol,高级消息队列协议):它是进程之间传递异步消息的网络协议 AMQP工作过程 发布者通过发布消息,通过交换机,交换机根据路由规则将收到的消息分发交换机绑定的下消息队列,最…...

Matlab自学笔记三十:元胞数组的修改、添加、删除和连接
1.说明 元胞数组的子数组或元素也是元胞型的,其元素内容(值)是本身类型,因此,在添、删、改和连接处理时,必须明确每个元素的值的类型和大小,否则,编程报错是不可避免的了。看本文前…...

【LeetCode】数组——双指针法
1 双指针法 1.1 介绍 双指针法是一种常用的算法技巧,通常用于处理数组或链表中的问题。它使用两个指针,通常一个从数组的开始位置遍历,另一个从数组的末尾位置开始遍历,根据问题的不同,这两个指针可以同时移动&#…...

react 低代码平台方案汇总
React作为当前最流行的前端框架之一,其生态系统中孕育了多种低代码平台方案,旨在加速应用开发过程。以下是几款基于React的低代码平台或工具,它们通过可视化构建、预制组件、数据绑定等功能,帮助开发者快速构建应用程序࿱…...

oss对象上传文件设置格式
PostMapping("upload")ApiOperation(value "上传文件")public Result<UploadDTO> upload(RequestParam("file") MultipartFile file) throws Exception {if (file.isEmpty()) {return new Result<UploadDTO>().error(ModuleErrorCo…...

【Linux学习】进程
下面是有关进程的相关介绍,希望对你有所帮助! 小海编程心语录-CSDN博客 目录 1. 进程的概念 1.1 进程与程序 1.2 进程号 2. 进程的状态 2.1 fork创建子进程 2.2 父子进程间的文件共享 3. 进程的诞生与终止 3.1 进程的诞生 3.2 进程的终止 1. 进…...

Python数据分析实验四:数据分析综合应用开发
目录 一、实验目的与要求二、主要实验过程1、加载数据集2、数据预处理3、划分数据集4、创建模型估计器5、模型拟合6、模型性能评估 三、主要程序清单和运行结果四、实验体会 一、实验目的与要求 1、目的: 综合运用所学知识,选取有实际背景的应用问题进行…...

基于51单片机的盆栽自动浇花系统
一.硬件方案 工作原理是湿度传感器将采集到的数据直接传送到ADC0832的IN端作为输入的模拟信号。选用湿度传感器和AD转换,电路内部包含有湿度采集、AD转换、单片机译码显示等功能。单片机需要采集数据时,发出指令启动A/D转换器工作,ADC0832根…...

SpirngMVC框架学习笔记(一):SpringMVC基本介绍
1 SpringMVC 特点&概述 SpringMVC 从易用性,效率上 比曾经流行的 Struts2 更好 SpringMVC 是 WEB 层框架,接管了 Web 层组件, 比如控制器, 视图, 视图解析, 返回给用户的数据格式, 同时支持 MVC 的开发模式/开发架构SpringMVC 通过注解,…...

实现信号发生控制
1. 信号发生器的基本原理 信号发生器是一种能够产生特定波形和频率的电子设备,常用于模拟信号的产生和测试。 信号发生器的基本原理 信号发生器的工作原理基于不同的技术,但最常见的类型包括模拟信号发生器和数字信号发生器(DDS࿰…...

二叉树基于队列实现的操作详解
一、队列知识补充 有关队列的知识请详见博主的另一篇博客:http://t.csdnimg.cn/3PwO4 本文仅仅附上需要的队列操作供读者参考 //结构体定义 typedef struct BinaryTreeNode* QDataType;typedef struct QueueNode {struct QueueNode* next;QDataType val; }QNode;…...

LabVIEW常用开发架构有哪些
LabVIEW常用开发架构有多种,每种架构都有其独特的特点和适用场合。以下是几种常用的开发架构及其特点和适用场合: 1. 单循环架构 特点: 简单易用适用于小型应用将所有代码放在一个循环中 适用场合: 简单的数据采集和处理任务…...

告别 Dart 中的 Future.wait([])
作为 Dart 开发人员,我们对异步编程和 Futures 的强大功能并不陌生。过去,当我们需要同时等待多个 future 时,我们依赖 Future.wait([]) 方法,该方法返回一个 List<T>。然而,这种方法有一个显着的缺点࿱…...

Cisco ASA防火墙抓包命令Capture
在日常运维中,遇到故障时经常需要在ASA上抓包进行诊断。 从抓包中可以看到流量是否经过ASA流量是否被ASA放行,或block,匹配的哪一条ACL capture在Firepower平台上同样适用,无论跑的是ASA还是FTD 1 抓包命令 capture 2 配置方…...

Linux网络编程:HTTP协议
前言: 我们知道OSI模型上层分为应用层、会话层和表示层,我们接下来要讲的是主流的应用层协议HTTP,为什么需要这个协议呢,因为在应用层由于操作系统的不同、开发人员使用的语言类型不同,当我们在传输结构化数据时&…...

HTTP 协议中 GET 和 POST 有什么区别?分别适用于什么场景?
HTTP 协议中 GET 和 POST 是两种常用的请求方法,它们的区别如下: 1. 参数传递方式不同 GET 请求参数是在 URL 中以键值对的形式传递的,例如:http://www.example.com/?key1value1&k ey2value2。 而 POST 请求参数是在请求体中以键值对的…...

talib 安装
这里写自定义目录标题 talib 安装出错 talib 安装出错 https://github.com/cgohlke/talib-build/releases 这里找到轮子 直接装。...