Python教程(一)——Python速览
目录
- 1. 引言
- 2. Python用作计算器
- 2.1 数字
- 2.2 文本
- 2.3 列表
- 3. 走向编程的第一步
- 参考
1. 引言
本系列的目的主要是重新回顾Python的语法,以供阅读由Python编写的源码。
在安装完Python后,在命令行中输入python就可以进入交互模式。下文代码段中以>>>或···开头的内容表明是交互模式的输入,除此之外的内容都是输出。
2. Python用作计算器
2.1 数字
解释器像一个简单的计算器:你可以输入一个表达式,它将给出结果值。表达式语法很直观:运算符+、-、*和/可被用来执行算术运算 ;圆括号()可被用来进行分组。例如:
>>> 2 + 2
4
>>> 50 - 5 * 6
20
>>> ( 50 - 5 * 6 ) / 4
5.0
>>> 8 / 5 # 除法运算总是返回一个浮点数
1.6
整数如2、4、20的类型是int,带小数如5.0、1.6的类型是float。
除法运算/总是返回浮点数。如果要进行向下取整除法得到一个整数,必须使用//运算符;要计算余数,必须使用%运算符。
>>> 17 / 3 # 经典除法运算返回一个浮点数
5.666666666666667
>>> 17 // 3 # 向下取整除法运算会丢弃小数部分
5
>>> 17 % 3 # 运算返回相除的余数
2
>>> 5 * 3 + 2 # 向下取整的商 * 除数 + 余数
17
Python用**运算符计算乘方:
>>> 5 ** 2 # 5的平方
25
>>> 2 ** 7 # 2的7次方
128
等号=用于给变量赋值。赋值后,下一个交互提示符不显示任何结果:
>>> width = 20
>>> height = 5 * 9
>>> width * height
900
如果变量未赋值,使用该变量会提示错误:
>>> n # 试图访问一个未定义的变量
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined
Python全面支持浮点数,混合类型运算过程中会把整数转换为浮点数:
>>> 4 * 3.75 - 1
14.0
交互模式下,上次输出的表达式会赋给变量_。把Python当作计算器时,用该变量实现下一步计算更简单,例如:
>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_, 2)
113.06
最好将_当作只读变量,不要为它显式赋值,否则会创建一个同名独立局部变量,该变量会用它的魔法行为屏蔽内置变量。
2.2 文本
除了数字Python还可以操作文本(由str类型表示,称为“字符串”)。这包括字符!,单词rabbit,名称Paris,句子Got your back.等等。它们可以用成对的单引号’'或双引号""来标示,结果完全相同。
>>> 'spam eggs' # 单引号
'spam eggs'
>>> "Paris rabbit got your back :)! Yay!" # 双引号
'Paris rabbit got your back :)! Yay!'
>>> '1975' # 用引号括起来的数字也是字符串
'1975'
要标示引号本身,我们需要对它进行“转义”,即在前面加一个\。或者,我们也可以使用不同类型的引号:
>>> 'doesn\'t' # 使用\'来转义单引号
"doesn't"
>>> "doesn't" # ...或者改用双引号
"doesn't"
>>> '"Yes," they said.'
'"Yes." they said.'
>>> "\"Yes,\" they said."
'"Yes," they said.'
>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'
在Python shell中,字符串定义和输出字符串看起来可能不同。print()函数会略去标示用的引号,并打印经过转义的特殊字符串,产生更为易读的输出:
>>> s = 'First line.\nSecond line.' # \n标示换行符
>>> s # 不用print(),特殊字符将包括在字符串中
'First line.\nSecond line.'
>>> print(s) # 用print(),特殊字符会被转写,因此\n将产生一个换行
First line.
Second line.
如果不希望前置\的字符转义成特殊字符,可以使用原始字符串,在引号前添加r即可:
>>> print('C:\some\name') # 这里\n表示换行符!
C:\some
ame
>>> print(r'C:\some\name') # 请注意引号前的r
C:\some\name
原始字符串还有一个微妙的限制:一个原始字符串不能以奇数个\字符结束。解决办法有如下3种方法:
1. 使用常规字符串以及双反斜杠:
>>> 'C:\\this\\will\\work\\'
'C:\\this\\will\\work\\'
2. 将一个包含被转义反斜杠的常规字符串拼接到原始字符串上:
>>> r'C:\this\will\work' '\\'
'C:\\this\\will\\work\\'
3. 在Windows上使用os.path.join()来添加反斜杠:
>>> os.path.join(r'C:\this\will\work', '')
'C:\\this\\will\work\\'
请注意虽然在确定原始字符串的结束位置时反斜杠会对引号进行转义,但在解析原始字符串的值时并不会发生转义:
>>> r'backslash\'preserved'
"backslash\\'preserved"
字符串字面值可以跨越多行。一种做法是使用三重引号:“”“”…“”"或’‘’…‘’'。行结束符会自动包括在字符串种,但可以通过在行尾添加\来避免此行为。下面的例子种,开头的换行符将不会被包括:
>>> print("""\
··· Usage: thingy [OPTIONS]
··· -h Display this usage message
··· -H hostname Hostname to connect to
··· """)
Usage: thingy [OPTIONS]-h Display this usage message-H hostname Hostname to connect to
字符串可以用+横屏,也可以用*重复:
>>> # 3乘以'un',再加'ium'
>>> 3 * 'un' + 'ium'
'unununium'
相邻的两个或多个字符串字面值会自动合并:
>>> 'Py' 'thon'
'Python'
拼接分隔开的长字符串时,这个功能特别使用:
>>> text = ('Put several strings within parentheses''to have them joined together.')
>>> text
'Put several strings within parentheses to have them joined together.'
这项功能只适用于两个字面值,不能用于变量或表达式:
>>> prefix = 'Py'
>>> prefix 'thon' # 不能拼接变量和字符串字面值File "<stdin>", line 1prefix 'thon'^^^^^^
SyntaxError: invalid syntax
>>> ( 'un' * 3 ) 'ium'File "<stdin>", line 1('un' * 3) 'ium'^^^^^
SyntaxError: invalid syntax
合并多个变量,或合并变量与字面值,要用+:
>>> prefix + 'thon'
'Python'
字符串支持索引,第一个字符的索引是0:
>>> word = 'Python'
>>> word[0] # 0号位的字符
'P'
>>> word[5] # 5号位的字符
'n'
索引还支持负数,用负数进行索引时,从右边开始计数:
>>> word[-1] # 最后一个字符
'n'
>>> word[-2] # 倒数第二个字符
'o'
>>> word[-6]
'P'
注意,-0和0一样,因此,负数索引从-1开始。
除了索引操作,还支持切片。索引用来获取单个字符,而切片允许你获取子字符串:
>>> word[0:2] # 从0号位(含)到2号位(不含)
'Py'
>>> word[2:5] # 从2号位(含)到5号位(不含)
'tho'
切片索引的默认值很有用,省略开始索引时,默认值为0,省略结束索引时,默认为到字符串的末尾:
>>> word[:2] # 从开头到2号位(不含)的字符
'Py'
>>> word[4:] # 从4号位(含)到末尾
'on'
>>> word[-2:] # 从倒数第二个(含)到末尾
'on'
注意,输出结果包含切片开始,但不包含切片结束。因此,s[:i]+s[i:]总是等于s:
>>> word[:2] + word[2:]
'Python'
>>> word[:4] + word[4:]
'Python'
还可以这样理解切片,索引指向的是字符之间,第一个字符的左侧标为0,最后一个字符的右侧标为n,n是字符串的长度。例如:
+---+---+---+---+---+---+| P | y | t | h | o | n |+---+---+---+---+---+---+0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1
第一行数字是字符串中索引0···6的位置,第二行数字是对应的负数索引位置。i到j的切片由i和j之间所有对应的字符组成。
对于使用非负索引的切片,如果两个索引都不越界,切片长度就是起止索引之差。例如,word[1:3]的长度为2。
索引越界会报错:
>>> word[42] # word只有6个字符
Traceback (most recent call last):File "<stdin>", line 1, in <module>
IndexError: string index out of range
但是切片会自动处理越界索引:
>>> word[4:42]
'on'
>>> word[42:]
''
Python字符串不能修改。因此,为字符串中某个索引位置赋值会报错:
>>> word[0] = 'J'
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> word[2:] = 'py'
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
要生成不同的字符串,应新建一个字符串:
>>> 'J' + word[1:]
'Jython'
>>> word[:2] + 'py'
'Pypy'
内置函数len()返回字符串的长度:
>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)
34
2.3 列表
Python支持多种复合数据类型,可将不同值组合在一起。最常用的列表,是用方括号标注,逗号分隔的一组值。列表可以包括不同类型的元素,但一般情况下,各个元素的类型相同:
>>> squares = [1, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]
和字符串一样,列表也支持索引和切片:
>>> squares[0] # 索引操作将返回条目
1
>>> squares[-1]
25
>>> squares[-3:] # 切片操作将返回一个新列表
[9, 16, 25]
列表还支持合并操作:
>>> squares + [36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
列表元素是可更改的:
>>> cubes = [1, 8, 27, 65, 125] # 这里有点问题
>>> 4 ** 3 # 4的立方是64,不是65!
64
>>> cubes[3] = 64 # 替换错误的值
>>> cubes
[1, 8, 27, 64, 125]
可以通过使用list.append()方法,在列表末尾增加新条目:
>>> cubes.append(216) # 添加6的立方
>>> cubes.append(7 ** 3) # 和7的立方
>>> cubes
[1, 8, 27, 64, 125, 216, 343]
Python中的简单赋值绝不会复制数据。当你将一个列表赋值给一个变量时,该变量将引用现有的列表。通过一个变量对列表所做的任何更改都会被引用它的所有其他变量看到:
>>> rgb = ["Red", "Green", "Blue"]
>>> rgba = rgb
>>> id(rgb) == id(rgba) # 它们指向同一个对象
True
>>> rgba.append("Alph")
>>> rgb
["Red", "Green", "Blue", "Alph"]
切片操作返回包含请求元素的新列表。以下切片操作会返回列表的浅拷贝:
>>> correct_rgba = rgba[:]
>>> correct_rgba[-1] = "Alpha"
>>> correct_rgba
["Red", "Green", "Blue", "Alpha"]
>>> rgba
["Red", "Green", "Blue", "Alph"]
为切片赋值可以改变列表大小,甚至清空整个列表:
>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters[2:5] = ['C', 'D', 'E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
>>> letters[2:5] = []
>>> letters
['a', 'b', 'f', 'g']
>>> # 通过一个空列表替代所有元素来清空列表
>>> letters[:] = []
>>> letters
[]
内置函数len()也支持列表:
>>> letters = ['a', 'b', 'c', 'd']
>>> len(letters)
4
还可以嵌套列表,例如:
>>> a = ['a', 'b', 'c']
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'
3. 走向编程的第一步
还能用Python完成比二加二更复杂的任务。例如,我们可以像下面这样写出斐波那契数列初始部分的子序列:
>>> # 斐波那契数列
>>> # 前两项之和即下一项的值
>>> a, b = 0, 1
>>> while a < 10:
··· print(a)
··· a, b = b, a + b
···
0
1
1
2
3
5
8
本例引入了几个新功能:
1. 第一行的多重赋值:变量a和b同时获得新值0和1。最后一行又用了一次多重赋值,体现了,等号右边的所有表达式的值,都是在这一语句对任何变量赋新值之前求出来的——求值顺序为从左到右。
2. while循环只要条件为真就会一直执行。Python和C一样,任何非零整数为真,零为假。这个条件也可以是字符串或列表类型的值,事实上,任何序列都可以:长度非零为真,空序列为假。示例中的判断只是最简单的比较。比较操作符的写法和C语言一样:<小于、>大于、==等于、<=小于等于、>=大于等于、!=不等于。
3. 循环体是缩进的:缩进是Python组织语句的方式。在交互式命令行里,得为每个缩进的行输入空格或制表符。使用文本编辑器可以实现更复杂的输入方式;所有像样的文本编辑器都支持自动缩进。交互式输入复合语句时,要在最后输入空白行表示完成。注意,同一块语句的每一行的缩进相同。
4. print()函数输出给定参数的值。除了可以以单一的表达式作为参数,它还能处理多个参数,包括浮点数与字符串。它输出的字符串不带引号,且各参数之间会插入一个空格,这样可以实现更好的格式化操作,例如:
>>> i = 256 ** 2
>>> print('The value of i is', i)
The value of i is 65536
关键字end可以取消输出后面的换行,或用另一个字符串结尾:
>>> a, b = 0, 1
>>> while a < 1000:
··· print(a, end=',')
··· a, b = b, a + b
···
0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987
参考
https://docs.python.org/zh-cn/3.13/tutorial/introduction.html
相关文章:
Python教程(一)——Python速览
目录 1. 引言2. Python用作计算器2.1 数字2.2 文本2.3 列表 3. 走向编程的第一步参考 1. 引言 本系列的目的主要是重新回顾Python的语法,以供阅读由Python编写的源码。 在安装完Python后,在命令行中输入python就可以进入交互模式。下文代码段中以>…...
跟我学C++中级篇——处理对象的复制
一、对象的传递 在应用程序中,经常会遇到不同线程或不同模块间需要进行对象的传递,本来传递不是什么多大的事。但问题是,如果对象的值大到一定的程度后,传递不是问题可对象值的处理反而成了问题了。举一个现实世界的例子…...
基于PyQt5实现仿QQ-第二章-用户登录
基于PyQt5实现仿QQ-第二章-用户登录 Author: Daydreamer 项目简介 本项目基于PyQt5仿照目前流行的即时通信软件QQ,实现了新用户注册、用户登录、自动登录、记住多用户账号、用户搜索、添加好友、好友间聊天(消息持久化、同步化)等功能。 …...
[OS_8] 终端和 UNIX Shell | 会话和进程组 | sigaction | dash
我们已经知道如何用 “文件描述符” 相关的系统调用访问操作系统中的对象:open, read, write, lseek, close。操作系统也提供了 mount, pipe, mkfifo 这些系统调用能 “创建” 操作系统中的对象。 当然,我们也知道操作系统中的对象远不止于此࿰…...
IP查询专业版:支持IPv4/IPv6自动识别并切换解析的API接口使用指南
以下是根据您提供的网页内容编辑的符合CSDN内容发布要求的Markdown格式文本: 一、API概述 在开发过程中,我们常常需要对IP地址进行查询,以获取其详细信息,如地理位置、运营商等。万维易源的“IP查询专业版”API接口能够提供丰富…...
ESG跨境电商如何为国内的跨境电商企业打开国外的市场
现在不管是国内还是国外,做电商的企业都非常的多,那么既然有这么多大电商公司,就要有为这些电商公司提供服务的公司,这就是ESG,它是专门为跨境电商服务的公司,那么这家公司的主要业务是什么呢?它…...
建筑节能成发展焦点,楼宇自控应用范围持续扩大
在全球能源危机日益严峻、环保意识不断增强的大环境下,建筑节能已成为建筑行业发展的核心议题。从大型商业综合体到普通住宅,从公共建筑到工业厂房,节能需求贯穿建筑全生命周期。而楼宇自控系统凭借其对建筑设备的智能化管理和精准调控能力&a…...
中国矿业大学iGMAS分析中心介绍
一、关于GNSS和iGMAS 在浩瀚的太空中,全球卫星导航系统(GNSS)构建起精准定位的时空基准。IGMAS——国际GNSS监测评估系统,是由中国倡导并主导建设的全球GNSS监测网络,旨在提供高精度、高可靠的导航、定位与授时服务。 …...
python如何取消word中的缩进
在python-docx中,取消缩进可以通过将相应的缩进属性设置为None或0来实现。以下是取消不同类型缩进的方法: 取消左缩进 from docx import Documentdoc Document(existing_document.docx)for paragraph in doc.paragraphs:# 取消左缩进paragraph.paragr…...
Lesar: 面向 Lustre/Scade 语言的形式化模型检测工具
在《同步反应式系统》的第一课中,介绍了同步数据流语言 Lustre 生态中的形式化模型检查器 Lesar 的用法。Lesar 可对 lustre v4 语言以及 Scade 语言中部分数据流核心特性进行模型检查。 Lesar 介绍 Lesar 是 Verimag 研发维护的形式化方法模型检查工具。该工具的理…...
YOLOv12 改进有效系列目录 - 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制 - 针对多尺度、小目标、遮挡、复杂环境、噪声等问题!
🔥 在 YOLO 系列一路狂飙之后,YOLOv12 带来了令人耳目一新的范式转变——它不再以 CNN 为绝对核心,而是首次 围绕注意力机制构建 YOLO 框架,在保证实时性的前提下,将检测精度再次推向新高度! 为了进一步探…...
STM32 I2C总线通信协议
引言 在嵌入式系统开发领域,I2C(Inter-Integrated Circuit)总线作为经典的双线制串行通信协议,凭借其简洁的物理层设计和灵活的通信机制,在传感器互联、存储设备控制、显示模块驱动等场景中占据重要地位。本文将深入剖…...
多物理场耦合低温等离子体装置求解器PASSKEy2
文章目录 PASSKEy2简介PASSKEY2计算流程PASSKEy2 中求解的物理方程电路模型等离子体模型燃烧模型 PASSKEy2的使用 PASSKEy2简介 PASSKEy2 是在 PASSKEy1 的基础上重新编写的等离子体数值模拟程序。 相较于 PASSKEy1, PASSKEy2 在具备解决低温等离子体模拟问题的能力…...
【Harmony_Bug】forEach + asyncawait 的异步陷阱
一、问题描述 今天在做一个RDB的小项目时,遇到一个问题,因为没报错其实也是不算是BUG,以下描述时我就直接说关键点,其他代码忽略。 我的数据模型初始化有六条数据如图 在持久化层,通过initUserData这个方法执行插入。…...
智慧医院建设的三大关键领域
智慧医院建设是医疗行业数字化转型的核心载体,其本质是通过新一代信息技术重构医疗服务模式、优化管理流程、提升患者体验。在当前医疗资源供需矛盾突出的背景下,智慧医院建设已从单纯的设备智能化向系统性变革演进,主要集中在以下三大关键领…...
雷电模拟器怎么更改IP地址
游戏搬砖会使用雷电模拟器多开窗口,若模拟器窗口开多了,IP地址是一样的就怕有限制,很容易被游戏后台检测到。在雷电模拟器中更改IP地址可以通过以下方法实现: 方法一:通过模拟器内设置代理 1. 打开雷电模拟器 启动雷…...
软件编程命名规范
编程命名规范是保证代码可读性、可维护性和团队协作效率的重要基础。以下是涵盖主流编程语言的通用命名规范,结合行业最佳实践和常见规范(如Google、Microsoft、Airbnb等风格指南): 一、通用命名原则 清晰优先:名称应…...
#什么是爬虫?——从技术原理到现实应用的全面解析 VI
什么是爬虫?——从技术原理到现实应用的全面解析 V 二十六、异构数据采集技术突破 26.1 PDF文本与表格提取 import pdfplumber import pandas as pddef extract_pdf_data(pdf_path):"""从PDF中提取文本和表格数据:param pdf_path: PDF文件路径:return: 包含…...
芯岭技术XL32F003单片机 32位Cortex M0+ MCU简单介绍 性能优异
XL32F003单片机是深圳市芯岭技术有限公司的一款基于 32 位 ARM Cortex-M0 内核的高性能微控制器,提供SOP8/SOP14/SOP16/TSSOP20/SSOP24/QFN20/QFN32多种封装可选,可满足不同设计需求。XL32F003可用于工业控制、手持设备、PC 外设、传感器节点等应用场景&…...
使用浏览器的Clipboard API实现前端复制copy功能
在前端开发中,复制文本到剪贴板的功能通常使用浏览器的 Clipboard API 实现。比如 navigator.clipboard.writeText 方法。以下是一个简单的案例,展示如何使用 Clipboard API 实现复制文本的功能。 基本用法 首先,你需要创建一个按钮&#x…...
Struts2框架学习
文章目录 基础实战配置文件NameSpaces 基础 实战 配置文件 文件1: <?xml version"1.0" encoding"UTF-8"?> // 声明这是一个 XML 文件,且使用 UTF - 8 编码 <!DOCTYPE struts PUBLIC"-//Apache Software Foundat…...
React 实现爱心花园动画
主页: import React, { useEffect, useRef, useState } from react; import /assets/css/Love.less; import { Garden } from /utils/GardenClasses;// 组件属性接口 interface LoveAnimationProps {startDate?: Date; // 可选的开始日期messages?: { // 可…...
CAPL编程_03
1_文件操作的相关函数: 读文本文件内容 读取文本文件操作的三部曲 1)打开文件 —— openFileRead ( ) 2)逐行读取 —— fileGetString ( ) 、fileGetStringSZ ( ) 3)关闭文件 —— fileClose ( ) char content[100];…...
网络准入控制系统:2025年网络安全的坚固防线
在当今数字化时代,网络安全已成为至关重要的议题。阳途网络准入控制系统作为保障网络安全的关键机制,发挥着不可替代的作用。 阳途网络准入控制系统核心目的在于确保只有合法、合规的设备与用户能够接入网络。从本质上讲,它通过一系列技术手段…...
【音视频】⾳频处理基本概念及⾳频重采样
一、重采样 1.1 什么是重采样 所谓的重采样,就是改变⾳频的采样率、sample format、声道数等参数,使之按照我们期望的参数输出。 1.2 为什么要重采样 为什么要重采样? 当然是原有的⾳频参数不满⾜我们的需求,⽐如在FFmpeg解码⾳频的时候…...
自然语言处理将如何颠覆未来教育?个性化学习新纪元
教育领域正经历着自印刷术发明以来最深刻的变革。自然语言处理(NLP)技术突破传统教育框架的桎梏,正在重塑人类知识传递的基本范式。这场变革的实质不在于教学工具的数字化升级,而在于重新定义了"教"与"学"的本…...
4月25日星期五今日早报简报微语报早读
4月25日星期五,农历三月廿八,早报#微语早读。 1、祝贺!神舟二十号载人飞船发射取得圆满成功; 2、文旅部:今年一季度国内出游人次17.94亿,同比增长26.4%; 3、2025五一档新片预售票房破1000万&…...
秒级到毫秒:BFD的速度革命
一、BFD技术概述 双向转发检测(BFD)是一种轻量级的网络协议,专门用于快速检测、监控网络链路或IP路由的连通性状态。作为网络领域的"心跳检测器",BFD通过毫秒级(默认1000ms)的快速探测机…...
systemctl 命令详解与常见问题解决
在 Linux 系统中,service 命令和 chkconfig 命令一直用于管理服务,但随着 systemd 的引入,systemctl 命令逐渐成为主流。systemctl 命令不仅功能强大,而且使用简单。本文将详细介绍 systemctl 命令的作用以及常见问题的解决方法。…...
5.6 Microsoft Semantic Kernel:专注于将LLM集成到现有应用中的框架
5.6.1 Semantic Kernel概述 Microsoft Semantic Kernel(以下简称SK)是一个开源的软件开发工具包(SDK),旨在帮助开发者将大型语言模型(LLM)无缝集成到现有的应用程序中。它支持C#、Python和Java…...
vite+vue构建的网站项目localhost:5173打不开
原因:关掉了cmd命令提示符,那个端口就没有被配置上,打开就是这样的。 解决方法:重新在工作目录下打开cmd,输入npm run dev重新启动项目。 重新出现这样的界面说明已经成功启动项目,再次在浏览器中刷新并输入…...
电脑屏幕录制软件Captura源码编译(Win10,VS2022)
屏幕录像的意义: 教育教学方面 制作教学资源:教师可以通过录制屏幕来制作教学视频,演示软件操作、讲解复杂的知识点等。学生可以随时观看这些视频,便于复习和巩固知识,尤其对于一些抽象的概念或难以在课堂上一次性掌握…...
【版本控制】SVN + TortoiseSVN版本管理实用教程(附安装+开发常用操作)
摘要: 本文将带你从零开始掌握 SVN 版本控制系统,结合 TortoiseSVN 图形客户端工具,深入学习包括安装、检出、提交、更新、回滚、冲突解决等常用开发操作,快速上手团队协作! 🧩 什么是 SVN? SV…...
常见网络安全攻击类型深度剖析(二):SQL注入攻击——原理、漏洞利用演示与代码加固方法
常见网络安全攻击类型深度剖析(二):SQL注入攻击——原理、漏洞利用演示与代码加固方法 在Web应用安全领域,SQL注入(SQL Injection)是历史最悠久、危害最广泛的攻击类型之一。据OWASP(开放式Web应用安全项目)统计,SQL注入连续多年稳居“OWASP Top 10”漏洞榜单前列,每…...
DeepSeek智能时空数据分析(三):专业级地理数据可视化赏析-《杭州市国土空间总体规划(2021-2035年)》
序言:时空数据分析很有用,但是GIS/时空数据库技术门槛太高 时空数据分析在优化业务运营中至关重要,然而,三大挑战仍制约其发展:技术门槛高,需融合GIS理论、SQL开发与时空数据库等多领域知识;空…...
day49—双指针+贪心—验证回文串(LeetCode-680)
题目描述 给你一个字符串 s,最多 可以从中删除一个字符。 请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。 示例 1: 输入:s "aba" 输出:true…...
AI电视里的达摩
2025年,所有电视都搭载了AI功能,所有电视厂商都在宣传AI能力。但问题是,消费者依旧没有对AI电视做出什么积极的回应。“AI电视是鸡肋”“AI只是电视的又一轮泡沫”等观点层出不穷。 为什么明明AI技术能够解决电视的很多问题,但AI电…...
算力网络(CFN)在跨校联合科研中的应用:安全性挑战与联邦调度实践
引言:科研协作的算力困境 上海交通大学与麻省理工学院联合开展的高能物理模拟实验,因算力资源分配不均导致部分节点连续72小时处于空转状态。这个典型案例揭示了当前跨机构科研协作的痛点:算力资源无法实现安全可信的细粒度共享。算力网…...
面向对象编程核心:封装、继承、多态与 static 关键字深度解析
面向对象编程核心:封装、继承、多态与 static 关键字深度解析 一、封装:数据安全与接口规范 1. 封装的本质与作用 核心定义:将数据(属性)与操作数据的方法(行为)绑定在类中,隐藏内…...
c++进阶——类与继承
文章目录 继承继承的基本概念继承的基本定义继承方式继承的一些注意事项 继承类模板 基类和派生类之间的转换继承中的作用域派生类的默认成员函数默认构造函数拷贝构造赋值重载析构函数默认成员函数总结 不能被继承的类继承和友元继承与静态成员多继承及其菱形继承问题继承模型…...
【CODEMATE】进制转换(transform) 粤港澳青少年信息学创新大赛 C/C++/Python 解题思路
目录 问题描述做题思路,解决过程思路:踩过的坑:核心代码C 语言 / C 切片:C 语言 / C 判断 ‘A’ 数量:Python 切片:Python 判断 ‘A’ 数量: 完整代码C 语言 完整代码C 完整代码Python 完整代码…...
window和ubuntu自签证书
window下 以管理员身份 运行 Windows PowerShell # CN192.168.0.100 (换成自己的IP或者域名) # O(组织) OU(组织单位) # Cert:\LocalMachine\My:证书存储位置 # test_10:自定义证书名称 .AddYears(10): 证书过期时间 10 年 $cert New-SelfSi…...
ES历史版本下载
下载地址 Past Releases of Elastic Stack Software | Elastic 安装步骤参考 windows 安装 Elasticsearch_windows安装elasticsearch-CSDN博客...
技术面试一面标准流程
0. 自我介绍 ...... 1. 拷打项目 项目干了啥? 难点是啥? 问项目中用到的东西? 扩展? ...... 2. 基础知识 数据结构、C基础、设计模式 数据结构: 堆? unordered_map 和 布隆过滤器 都是用于查找…...
第14篇:Linux设备驱动程序入门<一>
Q:如何简单的理解DE1-SoC-UP Linux系统的设备驱动程序? A:设备驱动程序(Device Driver),简称驱动程序(Driver)。DE1-SoC-UP Linux系统中的设备驱动程序允许系统软件与DE1-SoC开发板…...
软件设计模式与体系结构:基于Java实现管道-过滤器架构
软件设计模式与体系结构:基于Java实现管道-过滤器架构 前言 在软件架构中,数据流风格是一种常见的架构模式,特别适用于需要对数据进行一系列处理的场景。管道-过滤器(Pipe and Filter)*架构是数据流风格的典型代表&a…...
Node.js 包管理工具介绍
Node.js 包管理工具介绍 Node.js 是一个基于 Chrome V8 JavaScript 引擎的服务器端运行环境,它允许开发者使用 JavaScript 进行后端开发。为了方便管理和维护项目中使用的第三方库和模块,Node.js 提供了多种包管理工具。本文将详细介绍几种常用的 Node.…...
Node.js 应用场景
Node.js 应用场景 引言 Node.js 是一个基于 Chrome V8 JavaScript 引擎的开源、跨平台 JavaScript 运行环境。它主要用于服务器端开发,通过非阻塞 I/O 模型实现了高并发处理能力。本文将详细介绍 Node.js 的应用场景,帮助你了解其在实际项目中的应用。…...
C/C++线程详解
一、C语言线程创建(POSIX线程) 1. 基本创建方法 POSIX线程(pthread)是C语言中创建线程的标准API: #include <pthread.h> #include <stdio.h>void* thread_func(void* arg) {printf("Thread runnin…...
动态ip与静态ip的概念、区别、应用场景
动态ip与静态ip的区别 前言 一、IP地址的概念和作用 1.1、IP地址的定义 1.2、IP地址的作用 二、动态IP和静态IP的区别 2.1、动态IP和静态IP的定义 2.2、动态IP和静态IP的特点 2.3、动态IP和静态IP的优缺点比较 三、动态IP和静态IP的应用场景 3.1. 动态IP的应用场景 3.2. 静态IP…...