Python编程语言学习
1.Python 特点
Python是一种简单、易读、易学和高效的编程语言,具有以下特点:
-
简单易学:Python采用清晰简洁的语法,注重代码的可读性和可维护性,使得初学者能够快速上手并编写出清晰的代码。
-
面向对象:Python是一种面向对象的编程语言,支持封装、继承和多态等面向对象的概念,可以更好地组织和管理代码。
-
开放源代码:Python是开源的,拥有庞大的开发者社区,因此可以方便地获得开源库和模块,可以加速开发过程并减少重复劳动。
-
跨平台:Python可以在多个操作系统上运行,包括Windows、Mac OS和Linux等,具有很强的跨平台性。
-
大量的库和框架:Python拥有丰富的标准库,覆盖了各种常用的功能模块。此外,Python还有大量的第三方库和框架,如NumPy、Pandas、Django等,可以满足各种不同领域的需求。
-
强大的数据处理能力:Python提供了很多用于数据处理和科学计算的库,如NumPy、Pandas和Matplotlib等,使得数据分析和数据科学变得更加简单和高效。
-
可扩展性:Python可以与其他语言进行无缝集成,可以轻松地扩展功能,使用C语言编写的扩展模块可以通过Python的接口调用。
2.应用领域
Python 作为一种功能强大且简单易学的编程语言而广受好评,并且在不同的应用域大放异彩,比如:
- Web 开发
- 大数据处理
- 数据分析
- 人工智能
- 自动化运维开发
- 云计算
- 爬虫
- 游戏开发
- 自动化测试
- 测试开发
目前,由于大数据、人工智能(ChatGPT 等 AI 技术)的流行, Python 变得比以往更加流
3.安装 Python 解释器
-
双击
Python-x.x.x-amd64.exe文件,系统将会开启 Python 安装向导 -
勾选
Add Python.exe to PATH复选框 ,可以将 Python 命令工具所在 目录 添加到系统Path环境变量中 -
单击
Customize installation,可以在安装时指定自定义的安装路径。 单击该选项即可开始安装。 -
在接下来的安装界面中只要改变 Python 的安装路径(建议安装在指定盘符的根路径下,比如 安装在
D:\Python目录下), 其他地方使用默认选项即可。 -
安装完成后,启动 Windows 的命令行
cmd程序 , 在命令行窗口中输入Python命令(字母 p 是小写的)。如果出现 Python 提示符(>>>),就说明安装成功了 。
4.安装PyCharm
-
create desktop shortcut(创建桌面快捷方式),系统 32 位就选 32-bit,系统 64 位就选 64-bit。当前演示的电脑是 64 位系统,它自动显示 64 位。 -
update path variable(restart needed)更新路径变量(需要重新启动),Add "bin" folder to the PATH(将bin目录添加到路径中)。 -
Update Context Menu(更新上下文菜单),Add "Open Folder as Project(添加打开文件夹作为项目)。添加鼠标右键菜单,使用打开项目的方式打开此文件架。如果你经常需要下载一些别人的代码查看,可以勾选此选项,这会增加鼠标右键菜单的选项。也就是你双击你电脑上的 py 文件,会默认使用 PyCharm 打开。 -
Create Associations创建关联,关联.py文件。将所有py文件关联到 PyCharm。 -
默认即可,点击 install。然后等待片刻。
-
安装完成后,提示是否立即重启电脑,可以选择“稍后重启”,点击“Finish”即可。
5.python程序-使用 print()输出
在 Python 中,可以通过内置函数 print() 实现向控制台输出 Hello World 。
可以进入 命令行交互模式 或使用 PyCharm 编写代码输出。
- 命令行交交互模式 实时输出程序执行结果,适合简单的逻辑或运算。
- PyCharm开发工具 方便组织管理代码,有代码提示功能,适合复杂逻辑或大型程序的开发。
6.Pycharm常用快捷键
| 快捷键 | 作用 |
| Tab键 | 跳制表域 |
| Ctrl + / | 代码注释 |
| Ctrl + F | 查找 |
| Ctrl + R | 替换 |
| Alt + Enter | 问题修复 |
| Ctrl + Alt + L | 代码格式化 |
| Ctrl + D | 复制当前光标所在行代码 |
| Ctrl(Alt) + Shift + 上下方向键 | 上下移动光标所在行代码 |
| Ctrl + G / Command + L | 跳转到指定行:列 |
更多快捷键可以查看 PyCharm 帮助手册或查看下图。
- 帮助手册查找路径
菜单-> Help -> Keyboard Shortcuts PDF - 快捷键图表 Windows版:
7.编码规范
7.1缩进
在 Python 中,缩进是一种非常重要的语法规则,Python 使用缩进来确定代码的层次结构和执行顺序。
- 建议使用
Tab键实现缩进 - 同一级别的代码块的缩进量必须相同
class Student(object):def __init__(self, name, age):self.name = nameself.age = agedef info(self):print(f"Name: {self.name}")if self.age >= 18:print("已成年")else:print("未成年")
7.2注释
注释,是指在代码中对代码功能进行解释的描述性文字,可以提高代码的可读性。注释的内容将被 Python 解释器忽略,并不会在执行结果中体现出来。
Python 中,提供 3 种类型的注释:
- 单行注释 在 Python 中,使用
#作为单行注释的符号。注释从符号#开始直到换行为止,其后面所有的内容都作为注释的内容而被 Python 解释器忽略。# 我是一段注释
-
多行注释 在 Python 中,并没有一个单独的多行注释标记,而是将注释内容包含在一对三引号之间,这样的代码将被解释器忽略。由于这样的代码可以分为多行编写,所以也可以作为多行注释。
''' 可以使用 三单引号 实现 多行 注释 '''""" 可以使用 三双引号 实现 多行 注释 """
-
文档注释 文档注释实际是多行注释的一种特殊使用形式,为 Python 文件、模块、类或者函数等添加版权、功能,说明等信息,例如,下面的代码将使用多行注释为程序添加功能、开发者、版权、开发日期等信息,也经常用来解释代码中重要的函数、参数等信息,利于后续开发者维护代码
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print"""print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)Prints the values to a stream, or to sys.stdout by default.Optional keyword arguments:file: a file-like object (stream); defaults to the current sys.stdout.sep: string inserted between values, default a space.end: string appended after the last value, default a newline.flush: whether to forcibly flush the stream."""pass
7.3命名规范
命名规范在编写代码中起到了很重要的作用,通过使用有意义的命名,可以传达变量、函数和类的用途和含义,使其他人(包括自己)更容易理解代码的意图,避免错误的变量赋值或函数调用。并且当多人合作开发或维护代码时,一致的命名约定使团队成员能够更轻松地理解和修改彼此的代码。
具体包括:
- 包名尽量短小,全小写字母,不推荐使用下划线
- 模块名尽量短小,全小写字母,可以使用下划线分隔多个字母
- 类名采用单词首字母大写形式,即 Pascal 风格。
- 常量命名时全部采用大写字母,可以使用下划线
- 变量、函数名也是全小写字母,多个字母间用下划线
_进行分隔 - 使用单下划线
_开头的模块变量或者函数是受保护的 - 使用双下划线
__开头的实例变量或方法是类私有的
8.函数定义与调用
8.1什么是函数
函数是一段可重复使用的代码块,它执行特定的任务并返回一个结果。
在编程中,函数用于将一段代码逻辑封装起来,以便在需要时可以方便地调用。
函数的主要目的是提高代码的重用性和可维护性。
函数通常由以下几个组成部分构成:
- 函数名:函数名用于标识函数,以便在代码中调用它时使用。
- 参数:参数是函数在执行时所需的数据。
- 函数体:函数体是函数的实际代码逻辑,由若干语句组成。
- 返回值:返回值是函数体代码执行过后的运行结果。
8.2内置函数
内置函数是指开发语言中预先定义好的实现特定功能的函数,可以直接使用。
比如: 输入函数input(), 输出函数 print()等
8.3函数定义
虽然系统预先定义好了大量的内置函数,但这些函数,还不能满足实际的开发需求,所以程序中允许根据实际需求自定义函数。
语法格式:
def function_name([parameter_list]): ['''注释信息'''] [function_body]return [result]
说明:
def: 自定义函数的关键字。function_name: 函数名称,在调用函数时使用,命名需要符合标识符命名规则。(): 函数的特征,用来书写参数列表。parameter_list: 用来接收函数运行时所需的外部数据(此章节不讲解)。::Python 固定语法。注释信息:非必须部分,函数的注释内容,通常是说明该函数的功能、要传递的参数的作用等。function_body:函数体,用来实现函数功能的逻辑代码。return [result]: 用来结束函数或将函数运行结果返回(此章节不讲解)。
def show(): """此函数用来输出 Hogwarts """print("Hogwarts")
注意:函数定义完成之后直接运行程序,将不显示任何内容。
8.4函数调用
调用函数也就是执行函数。如果把创建函数理解为理解为创建一个具有某种功能的工具,那么调用函数就相当于使用该工具。
语法格式:
function_name([parameters_value])
function_name:函数名称,要调用的函数名称,必须是已经创建好的(包括内建的和自定义的)。parameters_value:参数列表,用来提供函数运行时使用的数据,可省略。(): 函数的特征,参数列表可省略,但圆括号不能省略。
print("第一次函数调用")
show()
print("第一次函数调用")
show()
print("程序执行结束")
注意:
- 程序在执行到函数调用时,会跳转到函数定义位置执行函数体中的代码。
- 函数体执行结束后,将返回到函数调用处继续向后执行其它代码。
9.标识符
在 Python 中,标识符是用来标识变量、函数、类、模块和其他对象的名称。 需要注意的是,在定义标识符的时候,虽然很自由,但是也不能随心所欲,合法的标识符需要遵从一定的规范。
9.1命名规范
标识符的命名,需要遵从 4 项规范。
9.1.1. 见名知意
一个项目中会存在大量的变量名,函数名,方法名,类名等标识符,所以在对标识符进行命名时,见名知意是第一准则。
例如:get_name、is_select、name、age等都是符合规则的标识符命名。
切勿在代码中出现大量 a1,a2,a3,b1,b2,b3 的标识符,虽然语法中通过不报错,但在使用时容易混淆。
9.1.2. 不能使用关键字
关键字是 Python 语言中具有特殊含义的单词,例如 if、else、for、def 等等。
9.1.3. 标识符由英文字母、下划线_和数字组成,但不能以数字开头
hello666 是合法的标识符,而 666hello 则是非法的标识符。
9.1.4. 区分大小写
hello 和 Hello 是两个不同的标识符。
正确使用标识符是 Python 编程的基础之一。
通过遵守标识符的命名规范,我们可以编写出更加清晰、易于理解的 Python 代码,同时,我们也可以避免一些常见的编程错误。
因此,在编写 Python 代码时,请务必注意标识符的命名规范。
10.关键字
关键字是指在 Python 编程语言中具有特殊含义的保留单词。这些关键字被 Python 解释器用于识别程序的结构和语义,从而执行相应的操作。
在 Python 中,关键字不可以用作变量名、函数名或其他标识符的名称,否则会导致语法错误。
10.1查看关键字
Python 的关键字可能会随着版本的更新而变化,Python 3.9 版本共有关键字 36 个, Python3.10 版本的关键字共有 35 个。
可以通过 Python 内置的 keyword 模块,来查看所有的关键字。
# 导入内置关键字模块
import keyword# 打印所有的关键字
print(keyword.kwlist)
执行上面的代码,将会输入以下结果(基于 Python 3.10版本):
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
11.变量
无论使用什么语言编程,总要各种处理数据,比如数字、字符串等等。处理数据就需要使用变量来表示数据。所谓变量,就是用来表示数据的名字。
Python 中定义变量非常简单,只需将数据通过等号(=)赋值给一个符合命名规范的标识符即可。
name="HelloWord"
Python 是动态强类型语言,变量无须声明类型即可直接赋值,并且变量保存的数据类型可以随时在使用过程中进行改变,Python会根据保存数据的不同对变量类型进行动态推导来确定变量的数据类型。
name="HelloWord"
name=123
11.1变量的使用
变量的使用是指在程序中引用一个已经定义的变量。
例如,如果我们想使用之前定义的 name 变量,则可以使用:
print(name)
11.2变量的地址
内置函数 id() 可以获取变量的内存地址,也就是这个变量在计算机内存中的唯一标识,通常是用一串数字表示。
每个变量在内存中都有一个唯一的地址,通过比较两个变量的内存地址,可以判断它们是否是同一个变量。如果两个变量的内存地址相同,那么它们就是同一个变量。
print(id("Hello"))
name = "Hello"
print(id(name))
school = "Hello"
print(id(school))
12.数据类型
数据类型是指定程序在运行过程中,将各种数据根据表示形式和组织形式划分为不同的分类。
例如,一个人的姓名可以用字符类型存储,年龄可以用数值类型存储,而婚否可以用布尔类型存储,这些都是 Python 中的基本数据类型。
12.1标准数据类型
Python3 中标准数据类型有:
- 基本数据类型
- Number(数字)
- String(字符串)
- bool(布尔类型)
- 复合数据类型(容器类型)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
- Set(集合)
- 空类型
- None
Python3 根据数据的特性可分为:
- 不可变数据(3 个):Number(数字)、bool(布尔)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
12.2类型查看
为了方便检查一个变量的具体类型,可以使用 Python 内置的 type() 函数查看变量的类型。
# 数字类型
num = 666
print(type(num))
# 布尔类型
b = True
print(type(b))
# 字符串类型
s = "开发测试,测试一下"
print(type(s))
# 空类型
x = None
print(type(x))
13.数字类型
Python 中,数字类型(Number) 包括整数(int)、浮点(float)数和复数(complex) 三个子类型。
用来表示程序中不同的数字类型的数据。
13.1整数
整数类型:用来表示整数数值,即没有小数部分的数值,在 Python 中,没有 Long 类型,统一使用 int 类型表示。
n = 10
print(n)
print(type(n))
n = 12312312823547082374508273450823754082374508327540837250982375098273540823750482374508235038247503245
print(n)
print(type(n))
13.2浮点数
浮点类型:用来表示带小数点的数值,在 Python 中,没有 Double 类型,统一使用 float 类型表示。
pi = 3.14
print(pi)
print(type(pi))
pi = 3.141592652346234234346345346345345345345
print(pi)
print(type(pi))
13.3复数
复数类型:一般在数学和物理学中有广泛的应用,例如在电路分析、信号处理和量子力学中,在此了解即可。
n = 4+3j
print(n)
print(type(n))相关文章:
Python编程语言学习
1.Python 特点 Python是一种简单、易读、易学和高效的编程语言,具有以下特点: 简单易学:Python采用清晰简洁的语法,注重代码的可读性和可维护性,使得初学者能够快速上手并编写出清晰的代码。 面向对象:Py…...
Cartographer框架简述
catographer框架分为前端和后端 前端包括雷达数据处理;位姿预测;扫描匹配和栅格地图更新。 后端包括后端:线程池任务与调度;向位姿图添加节点,计算节点的子图内约束和子图间约束(回环检测)&…...
适用于 Linux、Windows 和 macOS 的免费 ONLYOFFICE 桌面应用程序
前言: 最近也是发现了一款特别好用的免费ONLYOFFICE 桌面应用程序忍不住分享给大家,这款编辑器能够打开、阅读和编辑多种文件类型,包括.docx文档、.pptx幻灯片和.xlsx表格等开放XML格式的Office文档。此外,ONLYOFFICE桌面编辑器还…...
C++面向对象程序设计-北京大学-郭炜【课程笔记(四)】
C面向对象程序设计-北京大学-郭炜【课程笔记(四)】 1、this指针1.1、this指针的作用1.2、this指针和静态成员函数 2、静态成员变量和静态成员函数2.1、基本概念2.2、基本概念总结2.3、如何访问静态成员2.4、静态成员变量的使用场景(重要&…...
前端构建效率优化之路
项目背景 我们的系统(一个 ToB 的 Web 单页应用)前端单页应用经过多年的迭代,目前已经累积有大几十万行的业务代码,30 路由模块,整体的代码量和复杂度还是比较高的。 项目整体是基于 Vue TypeScirpt,而构…...
react实现拖拽的插件
插件一:dnd-kit 插件官网链接https://docs.dndkit.com/introduction/installation 插件二:react-beautiful-dnd https://github.com/atlassian/react-beautiful-dnd/tree/master 两个插件的区别: 插件一可以做到从区域A拖住到区域B 插件二…...
解决Uncaught SyntaxError: Cannot use import statement outside a module(at XXX)报错
报错原因:这个错误通常是因为你正在尝试在一个不支持 ES6 模块语法的环境中使用 import 语句。这可能是因为你的代码是在一个只支持 CommonJS 或 AMD 模块系统的环境中运行的,或者你的代码运行的环境没有正确配置以支持 ES6 模块。如果是在浏览器环境&am…...
PHP如何利用post与get方式传值接收数据
目录 一、POST传值1. 使用curl库发送 POST 请求:2. 使用file_get_contents()函数发送 POST 请求:3. 使用stream_socket_client()函数发送 POST 请求:4. 利用from表单提交数据: 二、GET传值1. 使用http_build_query()函数构建 URL …...
在Mac上搭建MongoDB环境
最近工作中需要装MongoDB环境,搭建过程中遇到了一些问题,在这里记录一下安装MongoDB环境的方法以及问题的解决方法。有两种安装MongoDB的方法:brew安装和手动安装。 目录 使用Homebrew安装MongoDB 手动安装MongoDB(不使用Homebr…...
第三十九天| 62.不同路径、63. 不同路径 II
Leetcode 62.不同路径 题目链接:62 不同路径 题干:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “…...
提高代码质量的 10 条编码原则
提高代码质量的 10 条编码原则 本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除 今天来聊聊提高代码质量的 10 条编码原则。 软件开发需要良好的系统设计和编码标准。我们在下图中列出了 10 条良好的编码原则。 01 遵循代码规范 我们…...
SHERlocked93 的 2017 年终总结
回家的路上有点无聊,简短回顾一下2017年的得失收获 开始两个月3月到5月用C#完结了一个烂尾的wpf小项目,对自己前半年的.net生涯也算是一个句号(虽然不知道最后有没有采用),后面由于项目组转变技术栈,选择了…...
【FreeRTOS基础入门】任务通知
文章目录 前言一、任务通知介绍1.1 任务通知怎么通信1.2 任务通知与其他通信方式的区别1.3 优势及限制任务通知的优势任务通知的限制 1.4 内部原理 二、任务通知的使用2.1 发出与接收通知简化版2.1 发出与接收通知专业版 总结 前言 FreeRTOS 提供了丰富而灵活的任务通知机制&a…...
python opencv比较图片相似度
目录 一:均值哈希算法 二:三直方图算法 三:单通道直方图 一:均值哈希算法 均值哈希算法是一种快速比较图像相似度的方法。它首先将图像转化为灰度图像,然后计算图像的均值,接着将每个像素的...
校园兼职|大学生校园兼职小程序|基于微信小程序的大学生校园兼职系统设计与实现(源码+数据库+文档)
大学生校园兼职小程序目录 目录 基于微信小程序的大学生校园兼职系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户微信端功能模块 2、管理员服务端功能模块 (1) 兼职管理 (2)论坛管理 (3&…...
linux系统离线安装docker服务教程
1、下载、上传docker-20.10.0.tgz压缩包至服务器,其中,docker下载地址https://download.docker.com/linux/static/stable/x86_64/ 2、新建安装docker脚本docker-install.sh #!/usr/bin/env bash tar -xvf docker-20.10.0.tgzcp docker/* /usr/bin/cat …...
【青龙】快速搭建青龙面板,部署属于你自己的应用!
青龙面板是一个支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台。 废话不多说,直接开始。 这里使用一台 雨云 的云服务器作为演示。雨云注册地址:https://www.rainyun.com/ 优惠码:lz932 使用优惠码注册后绑定微信可获得8折…...
shell脚本实现Mysql分库分表备份
一.数据库的分库分表? 12张图把分库分表讲的明明白白!阿里面试:我们为什么要分库分表https://mp.weixin.qq.com/s?__bizMzU0OTE4MzYzMw&mid2247547792&idx2&sn91a10823ceab0cb9db26e22783343deb&chksmfbb1b26eccc63b784879…...
【算法 - 动态规划】从零开始学动态规划!(总纲)
动态规划 动态规划(Dynamic Programming,DP)是一种优化问题求解方法,通常用于解决具有 重叠子问题 和 最优子结构 性质的问题。它的基本思想是将原问题分解成更小的子问题,通过求解和保存这些子问题的解,避…...
从 Elasticsearch 到 Apache Doris,统一日志检索与报表分析,360 企业安全浏览器的数据架构升级实践
导读:随着 360 企业安全浏览器用户规模的不断扩张,浏览器短时间内会产生大量的日志数据。为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
微服务通信安全:深入解析mTLS的原理与实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...
