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

Python基本概念与实践

Python语言,总给我一种“嗯?还能这么玩儿?”的感觉

Python像一个二三十岁的年轻人,自由、年轻、又灵活

欢迎一起进入Python的世界~

本人工作中经常使用Python,针对一些常用的语法概念进行持续记录。

一、类与常见数据结构

1. Python库、模块、类

Python库是一个集合,包含多个模块。模块是单个文件,包含函数、类和变量等。类是模块中的一个组件,用于定义对象的结构和行为。简而言之,库由模块组成,模块由类和其他代码组成。

1) Python库

  • Python库是一组模块的集合,通常是为了实现特定的功能或解决特定的问题而组织在一起的。库可以是一个包(Package),包是一种特殊的模块,可以包含多个子模块和子包。
  • 库用于提供一组相关的功能,这些功能通常比单个模块更复杂、更全面。库可以是第三方库,也可以是Python标准库的一部分。

2) Python模块

在了解Python类与基本数据结构之前,需要了解Python类到底在该语言中处于怎样的位置,即Python类与具体的Python文件之间是什么关系。

Python文件和类的关系:Python文件和类的关系可以类比为容器和内容物的关系。一个Python文件可以包含一个或多个类的定义,也可以包含其他代码,如函数、变量等。

  • 一个Python文件称为一个模块。模块是Python代码的基本组织单位。(模块的名称通常与文件名相同。例如,文件 my_module.py 定义了一个模块 my_module 
  • 在模块中可以定义类:这些类可以相互独立,也可以相互关联。
  • 导入模块和类:可以使用import导入整个模块,然后通过模块名访问其中的类、函数和变量。同样,也可以使用 from ... import ... 语句直接导入模块中的指定类。

 3) Python类

使用class关键词来定义一个类:

class MyClass:# 类的属性attribute1 = "value1"attribute2 = "value2"# 类的方法def my_method(self):print("Hello from my_method!")

创建实例,通过类名后跟一对括号创建实例:

my_instance = MyClass()
print(my_instance.attribute1)  # 输出: value1
my_instance.my_method()  # 输出: Hello from my_method!

初始化方法:

__init__方法是一个特殊的方法,被成为类的构造函数或初始化方法。当创建一个新的对象实例时,__init__方法会被自动调用。

2. Python基本数据结构

Python提供了几种内置的基本数据结构,这些数据结构在日常编程中非常有用。以下是一些常见的Python基本数据结构及其详细说明:

1) 列表(List)

列表是一种有序的集合,可以包含不同类型的元素。列表是可变的,这意味着你可以修改列表中的元素。

以下代码包含了 创建列表、插入元素和删除元素 的逻辑:

# 1. 创建列表:
my_list = [1, 2, 3, 4, 5]
my_list = ['apple', 'banana', 'cherry']
my_list = [1, 'apple', 3.14, True]# 2. 插入元素:
my_list = [1, 2, 3]# 在列表末尾插入一个元素
my_list.append(4)  # [1, 2, 3, 4]# 在列表指定位置插入一个元素
my_list.insert(1, 'a')  # [1, 'a', 2, 3, 4]# 在列表末尾一次性添加多个元素
my_list.extend([5, 6])  # [1, 'a', 2, 3, 4, 5, 6]# 3. 删除元素:
my_list = [1, 'a', 2, 3, 4, 5, 6]# 删除第一个值为 x 的元素
my_list.remove('a')  # [1, 2, 3, 4, 5, 6]# 删除指定位置的元素,并返回该元素。如果不指定位置,默认删除最后一个元素
my_list.pop(2)  # [1, 2, 4, 5, 6],返回3# 删除最后一个位置的元素
my_list.pop()  # [1, 2, 4, 5],返回6# 清空列表
my_list.clear()  # []

常用方法:

  • 添加元素:
    • append(x) :在列表末尾添加一个元素
    • insert(i, x) : 在指定位置插入一个元素
    • extent(iterable):在列表末尾一次性添加多个元素 

当需要处理一个动态的数据集合,列表是一个很好的选择。

2) 元组(Tuple)

元组是一种有序的集合,与列表类似,但元组是不可变的,这意味着一旦创建,就不能修改元组中的元素。

# 创建元组
my_tuple = (1, 2, 3, 4, 5)
my_tuple = ('apple', 'banana', 'cherry')
my_tuple = (1, 'apple', 3.14, True)# 1. 访问元组,可以通过索引进行访问
my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[2])  # 3# 2. 其他方法
my_tuple = (3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)
my_tuple.count(5)  # 3 返回值为5的元素个数
my_tuple.index(4)  # 2 返回第一个值为x的元素的索引

元组相对于列表,其优势在于 不可变性。由于一经创建就不可变,一方面,可以存储固定的数据,例如存储不可修改的数据、或者作为字典的键。另一方面,由于其不可变,内存占用紧凑,更加节省内存空间。

3) 字典(Dictionary)

字典是一种无序的键值对集合。字典是可以变的,可以通过键来访问、添加、删除和修改值。

# 1. 创建字典
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}
print(my_dict['name'])  # Alice# 2. 访问元素
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}
print(my_dict['name'])  # Alice# 3. 添加和修改元素
my_dict['gender'] = 'Female'  # 添加新键值对
my_dict['age'] = 31  # 修改现有键值对# 4. 删除元素
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}
# 删除指定键值对
del my_dict['city']  # {'name': 'Alice', 'age': 30}
# 删除指定键值对,并返回值。如果键不存在,返回默认值。
my_dict.pop('age')  # 30,{'name': 'Alice'}
# 删除并返回最后一对键值对(Python 3.7+)。
my_dict.popitem()  # ('name', 'Alice'),{}
# 清空字典。
my_dict.clear()  # {}# 5. 其他方法
# 返回字典的键视图
print(my_dict.keys())  # dict_keys(['name', 'age', 'city'])
# 返回字典的值视图。
print(my_dict.values())  # dict_values(['Alice', 30, 'New York'])
# 返回字典的键值对视图。
print(my_dict.items())  # dict_items([('name', 'Alice'), ('age', 30), ('city', 'New York')])
# 返回指定键的值,如果键不存在,返回默认值。
print(my_dict.get('name'))  # Alice
print(my_dict.get('gender', 'Unknown'))  # Unknown

4) 集合(Set)

集合是一种无序的不重复元素集合。集合是可变的,可以进行集合运算,如并集、交集、差集等。

# 1. 创建集合
my_set = {1, 2, 3, 4, 5}
my_set = set([1, 2, 3, 4, 5])# 2. 添加元素
my_set = {1, 2, 3}
# 添加一个元素
my_set.add(4)  # {1, 2, 3, 4}
# 添加多个元素
my_set.update([5, 6])  # {1, 2, 3, 4, 5, 6}# 3. 删除元素
my_set = {1, 2, 3, 4, 5}
# 删除元素x,如果元素不存在,抛出KeyError。
my_set.remove(3)  # {1, 2, 4, 5}
# 删除元素x,如果元素不存在,不抛出异常。
my_set.discard(6)  # {1, 2, 4, 5}
# 删除并返回一个任意元素,如果集合为空,抛出KeyError。
my_set.pop()  # 返回一个任意元素,例如1,{2, 4, 5}
# 清空集合。
my_set.clear()  # {}# 4. 集合运算
# union(*others):返回并集。
# intersection(*others):返回交集。
# difference(*others):返回差集。
# symmetric_difference(other):返回对称差集。
# issubset(other):判断是否是子集。

二、Python进行HTTP请求

1. 示例代码

Python进行HTTP请求,通常使用 requests库

下面是一个经典的,使用requests请求并返回数据的Python代码:

import requests
import jsonapi_key = 'xxx'# 设置params(如果有的话)
params = {'key1': 'value1','key2': 'value2'
}# 设置请求头
headers = {'Authorization': f'Bearer {api_key}','Content-Type' : 'application/json'
}# 设置payload数据
data = {"inputs": {"title" : "托尼老师,你睡了吗?我睡不着"},"query": "1","response_mode": "streaming","conversation_id": "","user": "xxx"
}# 发送请求
# data从json变成json字符串格式
response = requests.post('https://xxx/v1/chat-messages', headers=headers, params=params, data=json.dumps(data))# 输出返回值
print(response.text)

最后返回的response对象是一个requests.Response对象,它包含了服务器返回的所有信息。虽然它是一个Python对象,但是并不是一个简单的数据结构,而是封装了多种属性和方法的复杂对象。可以通过访问它的属性和调用它的方法来获取和处理响应内容。

  • response.status_code:返回HTTP状态码,例如200表示成功,404表示未找到等。

  • response.headers:返回一个字典,包含响应头信息。

  • response.cookies:返回一个RequestsCookieJar对象,包含响应中的cookies。

  • response.url:返回请求的URL,包括查询字符串。

  • response.encoding:返回响应内容的编码。

  • response.text:返回响应内容的字符串形式,自动根据响应的编码进行解码。

  • response.content:返回响应内容的字节形式,适用于二进制数据,如图片、文件等。

  • response.json():将响应内容解析为JSON对象,前提是响应内容是JSON格式。

这里简单了解下就好,使用debug模式可以直接看到具体返回情况。

2. JSON数据处理

使用JSON函数需要导入json库:import json

函数描述
json.dumps将 Python 对象编码成 JSON 字符串
json.loads将已编码的 JSON 字符串解码为 Python 对象

1) json.dumps

json.dumps用于将Python对象编码成JSON字符串

语法:

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)

实例:

以下实例将数组编码为JSON格式数据:

#!/usr/bin/python
import jsondata = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]data2 = json.dumps(data)
print(data2)

以上代码执行结果为:

[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]

使用参数让JSON数据格式化输出:

#!/usr/bin/python
import jsondata = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]data2 = json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
print(data2)

以上代码执行结果为:

{"a": "Runoob","b": 7
}

python原始类型向 json 类型的转化对照表

PythonJSON
dictobject
list, tuplearray
str, unicodestring
int, long, floatnumber
Truetrue
Falsefalse
Nonenull

2) json.loads

json.loads用于解码JSON数据。该函数返回Python字段的数据类型。

语法:

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

实例:

以下实例展示了Python 如何解码 JSON 对象:

#!/usr/bin/python
import jsonjsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';text = json.loads(jsonData)
print(text)

以上代码执行结果为:

{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

json类型转换到python的类型对照表

JSONPython
objectdict
arraylist
stringunicode
number (int)int, long
number (real)float
trueTrue
falseFalse
nullNone

三、Python文件处理

1. 文件目录:os模块

我们都知道,os中文是操作系统的意思,顾名思义,Python 的 os 模块提供了各种操作系统的接口,这些接口主要是用来操作文件和目录。

Python中所有依赖于操作系统的内置模块,对于不同系统提供了相同接口,大大提升其可移植性。

查看路径,代码示例:

import os# 1. 查看路径
# 查看当前路径
print(os.getcwd())# 返回指定目录下包含的文件和目录名列表。
print(os.listdir('E:/'))# 返回路径 path 的绝对路径。
print(os.path.abspath('.'))# 将路径 path 拆分为目录和文件两部分,返回结果为元组类型。
print(os.path.split('E:/tmp.txt'))# 将一个或多个 path(文件或目录) 进行拼接。
print(os.path.join('E:/', 'tmp.txt'))# 2. 查看 path 时间相关参数(path可以是文件、可以是路径)
# 返回 path 在系统中的创建时间。
print(datetime.datetime.utcfromtimestamp(os.path.getctime('E:/tmp.txt')))# 返回 path 的最后修改时间。
print(datetime.datetime.utcfromtimestamp(os.path.getmtime('E:/tmp.txt')))# 返回 path 的最后访问时间。
print(datetime.datetime.utcfromtimestamp(os.path.getatime('E:/tmp.txt')))# 3. 判断 path 存在性、确认文件大小
# 判断是否存在
print(os.path.exists('E:/tmp.txt'))# 判断是否为目录
print(os.path.isdir('E:/'))# 判断是否为文件
print(os.path.isfile('E:/tmp.txt'))# 返回 path 的大小,以字节为单位,若 path 是目录则返回 0。
print(os.path.getsize('E:/tmp.txt'))
print(os.path.getsize('E:/work'))# 4. 创建、更改功能
# 创建一个目录
os.mkdir('E:/test')# 创建多级目录
os.makedirs('E:/test1/test2')# 将当前工作目录更改为 path。
print(os.getcwd())
os.chdir('/test')
print(os.getcwd())# 5. 调用shell脚本
print(os.system('ping www.baidu.com'))

2. 读取与写入:open函数

open 函数是Python内置的函数,对文本文件和二进制文件采用同样的操作步骤,和把大象放冰箱里一样分三步:打开-操作-关闭。

在Python中,使用 open() 函数来打开文件。这个函数需要两个参数:文件名和打开模式。文件名可以是相对路径或绝对路径,打开模式决定了文件的打开方式,如读取、写入等。

常见的打开模式mode:

  • 'r':读取模式,默认值。如果文件不存在,会抛出FileNotFoundError
  • 'w':覆盖写入模式。如果文件已经存在,会被覆盖。
  • 'a':追加写入模式。如果文件已存在,写入的数据会被追加到文件末尾。

读取文件代码:

# 1. 读取文件
# 逐行读取文件的内容
# for循环配合文件对象迭代器
with open('example.txt', 'r') as file_object:for line in file_object:print(line.strip())  # 使用strip()去除行尾的换行符# 读取全部内容
# 使用read方法可以一次性读取文件的全部内容,并将其作为一个字符串返回
with open('example.txt', 'r') as file_object:content = file_object.read()print(content)# 按行读取到列表
# 使用readlines方法可以读取文件的全部行,并将其作为一个列表返回
with open('example.txt', 'r') as file_object:lines = file_object.readlines()for line in lines:print(line.strip())

写入文件:

# 2. 写入文件
# 覆盖写入:'w'模式打开文件,然后使用write()方法写入内容。
with open('output.txt', 'w') as file_object:file_object.write('Hello, world!\n')file_object.write('This is a test.\n')# 追加写入:'a'模式打开文件,然后使用write()方法写入内容。
with open('output.txt', 'a') as file_object:file_object.write('This is appended text.\n')

使用with语句可以自动关闭文件,但在不使用with语句的情况下,需要手动的关闭文件,以释放系统资源。可以使用close方法关闭文件。

实际开发中,推荐实用 with 语句来处理文件,因为它可以自动管理文件的打开和关闭,使代码更加简洁和安全。

注意,上面只给出了 'w' 和 'r' 两种模式,还有一些其他打开模式可供选择,例如:

  • 'x':独占创建模式。如果文件已存在,会抛出FileExistsError;如果文件不存在,会创建一个新文件。

  • 't':文本模式,默认值。以文本形式处理文件,读取时会自动将内容解码为字符串,写入时会自动将字符串编码为字节。

  • 'b':二进制模式。以二进制形式处理文件,读取和写入的内容都是字节序列。

  • '+':更新模式。用于读写文件,可以和rwa等模式组合使用。

3. 处理Excel:openpyxl库

openpyxl是一个Python库,用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件。它提供了丰富的功能,可以创建、修改和查询Excel文件中的数据,支持复杂的Excel操作,如处理公式、图表和样式等。

一个Excel电子文档中可以包含多个表,每个表里面有行、列、单元格

用户正在查看的当前表(或者关闭Excel前最后查看到表)称为活动表

使用 openpyxl 库操作Excel表,主要包括读取某个单元格、按照范围读取、按照行或列读取等。代码如下:

import openpyxl# 加载工作簿
workbook = openpyxl.load_workbook('example.xlsx')
# 获取工作表
sheet = workbook['Sheet1']# 1. 读取单元格A1的值
cell_value = sheet['A1'].value
print(cell_value)  # 输出: 单元格A1的值# 2. 通过行和列索引读取数据
cell_value = sheet.cell(row=2, column=3).value
print(cell_value)  # 输出: 单元格C2的值# 3. 读取A1:C3区域的值
cells = sheet['A1:C3']
for row in cells:for cell in row:print(cell.value, end=" ")print()# 4. 按行获取值
for row in sheet.iter_rows(min_row=1, max_row=5, min_col=1, max_col=3):for cell in row:print(cell.value, end=" ")print()# 5. 按列获取值
for col in sheet.iter_cols(min_row=1, max_row=5, min_col=1, max_col=3):for cell in col:print(cell.value, end=" ")print()

持续加载 ing ~

相关文章:

Python基本概念与实践

Python语言,总给我一种“嗯?还能这么玩儿?”的感觉 Python像一个二三十岁的年轻人,自由、年轻、又灵活 欢迎一起进入Python的世界~ 本人工作中经常使用Python,针对一些常用的语法概念进行持续记录。 一、类与常见数据结…...

SQL Prompt 插件

SQL Prompt 插件 注:SQL Prompt插件提供智能代码补全、SQL格式化、代码自动提示和快捷输入等功能,非常方便,可以自行去尝试体会。 1、问题 SSMS(SQL Server Management Studio)是SQL Server自带的管理工具&#xff0c…...

1.6 从 GPT-1 到 GPT-3.5:一路的风云变幻

从 GPT-1 到 GPT-3.5:一路的风云变幻 人工智能的进步一直是科技领域的一个重要话题,而在自然语言处理(NLP)领域,GPT(Generative Pre-trained Transformer)系列模型的发布,标志着一个又一个技术突破。从2018年发布的 GPT-1 到2022年推出的 GPT-3.5,OpenAI 的每一次更新…...

centos 7 Mysql服务

将此服务器配置为 MySQL 服务器,创建数据库为 hubeidatabase,将登录的root密码设置为Qwer1234。在库中创建表为 mytable,在表中创建 2 个用户,分别为(xiaoming,2010-4-1,女,male&…...

参数校验 Spring Validation框架

后端参数校验 解决&#xff1a;校验前端传入的参数是否符合预期 1、引入依赖 使用Spring Validation框架 <!-- validation参数校验框架--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validatio…...

sunrays-framework 微调

文章目录 1.common-log4j2-starter 动态获取并打印日志存储的根目录的绝对路径以及应用的访问地址1.目录2.log4j2.xml 配置LOG_HOME3.LogHomePrinter.java 配置监听器4.spring.factories 注册监听器5.测试1.common-log4j2-starter-demo 配置2.启动测试 2.common-minio-starter …...

Java正则转带中划线或下划线属性名为驼峰命名

Java正则转带中划线或下划线属性名为驼峰命名。 利用Java正则分组匹配的方式&#xff0c;将属性名中 -(_) 后接的字母&#xff0c;匹配上了去掉当前 -(_)&#xff0c;将后接的字母转为大写&#xff0c;再追加拼接起来&#xff0c;就完成了驼峰命名。 String lineToHump(Strin…...

WebSocket实现分布式的不同方案对比

引言 随着实时通信需求的日益增长&#xff0c;WebSocket作为一种基于TCP的全双工通信协议&#xff0c;在实时聊天、在线游戏、数据推送等场景中得到了广泛应用。然而&#xff0c;在分布式环境下&#xff0c;如何实现WebSocket的连接管理和消息推送成为了一个挑战。本文将对比几…...

Linux下的dev,sys和proc(TODO)

&#xff08;TODO&#xff09; 还有一个sysfs 在 Linux 系统中&#xff0c;/dev、/sys 和 /proc 是三个特殊的虚拟文件系统目录&#xff0c;它们各自有特定的用途&#xff0c;主要用于与设备和内核交互。以下是它们的详细区别和功能说明&#xff1a; 1. /dev&#xff08;Devi…...

JavaScript系列(32)-- WebAssembly集成详解

JavaScript WebAssembly集成详解 &#x1f680; 今天&#xff0c;让我们深入了解JavaScript与WebAssembly的集成&#xff0c;这是一项能够显著提升Web应用性能的关键技术。 WebAssembly基础概念 &#x1f31f; &#x1f4a1; 小知识&#xff1a;WebAssembly&#xff08;简称W…...

通过外部链接启动 Flutter App(详细介绍及示例)

通过外部链接启动 Flutter App&#xff08;firebase_dynamic_links 和 app_links&#xff09; 详细介绍 通过外部链接启动flutter App 的使用及示例 在我们的APP中&#xff0c;经常有点击链接启动并进入APP的需求&#xff08;如果未安装跳转到应用商店&#xff09;。Android通…...

计算机视觉模型的未来:视觉语言模型

一、视觉语言模型 人工智能已经从识别数据中的简单模式跃升为理解复杂的多模态数据。该领域的发展之一是视觉语言模型 (VLM) 的兴起。这类模型将视觉和文本之间联系起来,改变了我们理解视觉数据并与之交互的方式。随着 VLM 的不断发展,它们正在为计算机视觉设定一个新的水平…...

CTK插件框架学习-源码下载编译(01)

1、编译环境 window11、vs17、Qt5.14.0、cmake3.27.4 2、下载链接 cmake&#xff1a;Index of /files/v3.20 qt&#xff1a;Index of / vs22以前的版本需要登录下载&#xff1a;Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 vs22下载&#xff1a;下载 Visu…...

Python 字符串分割时 spilt 和 re 效率对比

假设 有一些文件名是 数字_文档名 的格式&#xff0c;如何用python将数字提取出来&#xff1f; 可以使用 Python 的正则表达式模块 re 提取文件名中的数字部分。以下是实现代码&#xff1a; 示例代码&#xff1a; import re# 示例文件名列表 file_names ["1_file1.txt…...

AUTOSAR通信篇 - PDU和收发数据

点击订阅专栏不迷路 文章目录 一、概述二、OSI模型与AUTOSAR层级关系三、I-PDU、N-PDU、L-PDU及其关系3.1. L-PDU3.2. N-PDU3.3. I-PDU 四、数据流4.1. 普通数据流4.2. 诊断数据流4.3. 动态PDU数据流4.4. 安全通信数据流4.5. XCP数据流 返回总目录 一、概述 在学习Autosar通信…...

wps数据分析000002

目录 一、快速定位技巧 二、快速选中技巧 全选 选中部分区域 选中部分区域&#xff08;升级版&#xff09; 三、快速移动技巧 四、快速录入技巧 五、总结 一、快速定位技巧 ctrl→&#xff08;上下左右&#xff09;快速定位光标对准单元格的上下部分双击名称单元格中…...

【C++基础】enum,union,uint8_t,static

enum 所以有时候使用 Enum 的目的&#xff0c;不是为了自定义一种数据类型&#xff0c;而是为了声明一组常量。 from: https://github.com/wangdoc/clang-tutorial/blob/main/docs/enum.md union C 语言提供了 Union 结构&#xff0c;用来自定义可以灵活变更的数据结构。它内部…...

node.js的进程保活

nodejs的进程保活其实用PM2应该更好用些&#xff0c;不过由于原理其实并不复杂&#xff0c;我们可以自己手写一个服务来干这个工作。 假设我们有一个服务&#xff0c;可以这样来定义下它的相关信息&#xff1a; const svcs[ {"sid":"apl","name"…...

css中的阴影详解

在 CSS 中&#xff0c;阴影效果通常使用 box-shadow 和 text-shadow 来实现&#xff0c;它们分别适用于元素的框和文本。阴影是提升页面设计感和层次感的重要工具。下面&#xff0c;我会详细讲解这两个属性&#xff0c;并结合代码示例说明。 目录 1. box-shadow示例 2. text-sh…...

AI刷题-饭馆菜品选择问题、构造回文字符串问题

目录 一、饭馆菜品选择问题 问题描述 测试样例 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终代码&#xff1a; 运行结果&#xff1a; 二、构造回文字符串问题 问题描述 测试样例 解题思路&#xff1a; 解题思路 具体步骤 最终代码&#xff1a;…...

时间序列分析ARIMA(AutoRegressive Integrated Moving Average,自回归积分滑动平均)模型:中英双语

ARIMA模型&#xff1a;时间序列分析中的强大工具 在时间序列分析中&#xff0c;ARIMA&#xff08;AutoRegressive Integrated Moving Average&#xff0c;自回归积分滑动平均&#xff09;模型是一种广泛使用的模型。它通过结合自回归、差分和滑动平均三种方法来对时间序列进行…...

青少年编程与数学 02-007 PostgreSQL数据库应用 02课题、PostgreSQL数据库安装

青少年编程与数学 02-007 PostgreSQL数据库应用 02课题、PostgreSQL数据库安装 一、安装Windows系统安装PostgreSQL 17Linux系统安装PostgreSQL 17 二、配置Windows系统Linux系统 三、启动&#xff08;一&#xff09;Windows系统使用服务管理器&#xff08;services.msc&#x…...

群发邮件适合外贸行业吗

一、群发邮件契合外贸行业的市场拓展需求 外贸业务的本质在于跨越地域限制&#xff0c;与全球各地的潜在客户建立联系。群发邮件能够突破时空限制&#xff0c;瞬间将产品或服务信息传递到世界各地。通过精准的市场调研与客户数据整理&#xff0c;企业可以针对不同国家和地区的…...

面试之《new关键字》

一问&#xff1a;new关键字做了什么操作&#xff0c;手写一个new方法&#xff0c;实现new关键字的作用 二问&#xff1a; // 第一题 / function Test(){this.name 1;return {name: 2} } const a new Test(); console.log(a.name) // 打印什么/// 第二题 / function Test2()…...

《机器学习》——SVD(奇异分解)降维

文章目录 SVD基本定义SVD降维的步骤SVD降维使用场景SVD 降维的优缺点SVD降维实例导入所需库定义SVD降维函数导入图像处理图像处理图像打印降维结果并显示处理后两个图像的对比图 SVD基本定义 简单来说就是&#xff0c;通过SVD&#xff08;奇异值分解&#xff09;对矩阵数据进行…...

【MySQL实战】mysql_exporter+Prometheus+Grafana

要在Prometheus和Grafana中监控MySQL数据库&#xff0c;如下图&#xff1a; 可以使用mysql_exporter。 以下是一些步骤来设置和配置这个监控环境&#xff1a; 1. 安装和配置Prometheus&#xff1a; - 下载和安装Prometheus。 - 在prometheus.yml中配置MySQL通过添加以下内…...

业务架构、数据架构、应用架构和技术架构

TOGAF(The Open Group Architecture Framework)是一个广泛应用的企业架构框架&#xff0c;旨在帮助组织高效地进行架构设计和管理。 TOGAF 的核心就是由我们熟知的四大架构领域组成:业务架构、数据架构、应用架构和技术架构。 企业数字化架构设计中的最常见要素是4A 架构。 4…...

mysql-5.7.18保姆级详细安装教程

本文主要讲解如何安装mysql-5.7.18数据库&#xff1a; 将绿色版安装包mysql-5.7.18-winx64解压后目录中内容如下图&#xff0c;该例是安装在D盘根目录。 在mysql安装目录中新建my.ini文件&#xff0c;文件内容及各配置项内容如下图&#xff0c;需要先将配置项【skip-grant-tab…...

Linux测试处理fps为30、1920*1080、一分钟的视频性能

前置条件 模拟fps为30、1920*1080、一分钟的视频 项目CMakeLists.txt cmake_minimum_required(VERSION 3.30) project(testOpenGl)set(CMAKE_CXX_STANDARD 11)add_executable(testOpenGl main.cpptestOpenCl.cpptestOpenCl.hTestCpp.cppTestCpp.hTestCppThread.cppTestCppTh…...

kubeneters-循序渐进Ingress

文章目录 overviewIngress 是什么&#xff1f;为什么使用 Ingress&#xff1f;我们会在这里做些什么&#xff1f;HTTP 服务器&#xff08;Nginx&#xff09;还能做什么&#xff1f;Kubernetes 中的简单示例&#xff1a;A) 使用 Service ClusterIPB) 手动配置 Nginx 服务作为代理…...

Shell控监Kafka积压

1、获取Kafka消息堆积情况 vi check-kafka-lag.sh #&#xff01;/bin/bashTOPIC"total_random" GROUP_ID"etl-dw" BOOTSTRAP_SERVER"node-01:9092,node-02:9092,node-03:9092"# 检查第一个参数是否为数字 if ! [[ $1 ~ ^[0-9]$ ]]; thenecho &…...

USB3020任意波形发生器4路16位同步模拟量输出卡1MS/s频率 阿尔泰科技

信息社会的发展&#xff0c;在很大程度上取决于信息与信号处理技术的先进性。数字信号处理技术的出现改变了信息 与信号处理技术的整个面貌&#xff0c;而数据采集作为数字信号处理的必不可少的前期工作在整个数字系统中起到关键 性、乃至决定性的作用&#xff0c;其应用已经深…...

MongoDB 学习指南与资料分享

MongoDB学习资料 MongoDB学习资料 MongoDB学习资料 在数据爆炸的当下&#xff0c;MongoDB 作为非关系型数据库的佼佼者&#xff0c;以其独特优势在各领域发光发热。无论是海量数据的存储&#xff0c;还是复杂数据结构的处理&#xff0c;MongoDB 都能轻松应对。接下来&#xf…...

Web端实时播放RTSP视频流(监控)

一、安装ffmpeg: 1、官网下载FFmpeg: Download FFmpeg 2、点击Windows图标,选第一个:Windows builds from gyan.dev 3、跳转到下载页面: 4、下载后放到合适的位置,不用安装,解压即可: 5、配置path 复制解压后的\bin路径,配置环境变量如图: <...

23- TIME-LLM: TIME SERIES FORECASTING BY REPRO- GRAMMING LARGE LANGUAGE MODELS

解决问题 用LLM来解决时序预测问题&#xff0c;并且能够将时序数据映射&#xff08;reprogramming&#xff09;为NLP token&#xff0c;并且保持backbone的大模型是不变的。解决了时序序列数据用于大模型训练数据稀疏性的问题。 方法 Input Embedding 输入&#xff1a; X …...

【Go】Go数据类型详解—数组与切片

1. 前言 今天需要学习的是Go语言当中的数组与切片数据类型。很多编程语言当中都有数组这样的数据类型&#xff0c;Go当中的切片类型本质上也是对 数组的引用。但是在了解如何定义使用数组与切片之前&#xff0c;我们需要思考为什么要引入数组这样的数据结构。 1.1 为什么需要…...

微服务中引入消息队列的利弊

微服务中引入消息队列的利弊 1、微服务架构中引入消息队列(Message Queue)的主要优势&#xff1a; 1.1 解耦(Decoupling) 服务之间不需要直接调用&#xff0c;通过消息队列实现松耦合 生产者和消费者可以独立扩展和维护 降低系统间的依赖性 1.2 异步处理(Asynchronous Proc…...

如何使用策略模式并让spring管理

1、策略模式公共接口类 BankFileStrategy public interface BankFileStrategy {String getBankFile(String bankType) throws Exception; } 2、策略模式业务实现类 Slf4j Component public class ConcreteStrategy implements BankFileStrategy {Overridepublic String ge…...

骑砍2霸主MOD开发(11)-可编程渲染管线Shader编程

一.固定渲染管线&可编程渲染管线 固定渲染管线:GPU常规渲染算法,将3D模型经过四大变换计算得到2D屏幕图像 可编程渲染管线:定制化GPU渲染算法,需要提交Shader至GPU中,GPU根据定制化算法得到2D屏幕图像 二.CoreShader&TerrainShader CoreShader:游戏中使用的静态shader…...

【PowerQuery专栏】PowerQuery 函数之CSV文件处理函数

CSV.Document 函数是进行CSV文件解析功能的函数,函数目前包含4个参数: 参数1为文件的数据源,数据类型为二进制类型,值为需要读取的文本数据参数2为列名称,数据类型为字符串类型,值为分割后的列名称参数3为分隔符,数据类型为任意类型,值为分割数据的分隔符参数4为文件编…...

【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(4)

1.问题描述&#xff1a; 添加了很多的marker点&#xff0c;每个marker点都设置了customInfoWindow&#xff0c;但是每次只能显示一个customInfoWindow吗&#xff1f; 解决方案&#xff1a; Marker的InfoWindow每次只能显示一个。 2.问题描述&#xff1a; 在地图选型中&…...

通过ffmpeg将FLV文件转换为MP4

使用 ffmpeg 将 FLV 文件转换为 MP4 文件是一个常见的操作。ffmpeg 是一个强大的多媒体处理工具&#xff0c;支持多种格式的转换、剪辑、合并等操作。以下是详细的步骤和命令示例&#xff0c;帮助你完成这一任务。 安装 FFmpeg 如果你还没有安装 ffmpeg&#xff0c;可以根据你…...

深入分析Java中的重载与重写:理解多态的两个面向

深入分析Java中的重载与重写&#xff1a;理解多态的两个面向 之前其实写过一篇文章来探讨Java当中的方法重载与方法重写但当时学的还不够通透&#xff0c;分析有点片面&#xff0c;这次我从多态的角度对其进行分析&#xff0c;有问题欢迎大家来评论区一起探讨 在Java编程中&a…...

STM32的集成开发环境STM32CubeIDE安装

STM32CubeIDE - STM32的集成开发环境 - 意法半导体STMicroelectronics...

【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)

&#xff1a; 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C/C题海汇总,AI学习,c的不归之路,等方面的知识,羑悻的小杀马特.关注算法,c,c语言,青少年编程领域.https://blog.csdn.net/2401_82648291?spm1010.2135.3001.5343 在本篇文章中&#xff0c;博主将带大家去学习所谓的…...

25/1/13 嵌入式笔记 继续学习Esp32

PWM&#xff08;Pulse Width Modulation&#xff0c;脉宽调制&#xff09; 是一种通过快速切换高低电平来模拟中间电压值的技术。它广泛应用于控制 LED 亮度、电机速度、音频生成等场景。 analogWrite函数:用于在微控制器&#xff08;如 Arduino&#xff09;上生成模拟信号。 …...

C语言的语法糖

C语言的语法糖 引言 在程序开发的过程中&#xff0c;语言的设计和编写风格往往会直接影响开发效率和代码可读性。C语言作为一种广泛应用于系统编程和嵌入式开发的编程语言&#xff0c;其设计虽然追求简洁与高效&#xff0c;但在某些方面同样存在可以提高编程体验的“语法糖”…...

客户案例:致远OA与携程商旅集成方案

一、前言 本项目原型客户公司创建于1992年,主要生产并销售包括糖果系列、巧克力系列、烘焙系列、卤制品系列4大类,200多款产品。公司具有行业领先的生产能力,拥有各类生产线100条,年产能超过10万吨。同时,经过30年的发展,公司积累了完善的销售网络,核心经销商已经超过1200个,超…...

浔川 AI 翻译已修复,可正常使用

浔川 AI 翻译已修复&#xff0c;可正常使用 亲爱的用户们&#xff1a; 大家好&#xff01;经过技术团队的不懈努力&#xff0c;浔川 AI 翻译平台已完成修复&#xff0c;目前各项功能均已恢复正常&#xff0c;可流畅使用。在此&#xff0c;我们向一直以来关心和支持浔川 AI 翻译…...

【Python】深入探讨Python中的单例模式:元类与装饰器实现方式分析与代码示例

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门&#xff01; 解锁Python编程的无限可能&#xff1a;《奇妙的Python》带你漫游代码世界 单例模式&#xff08;Singleton Pattern&#xff09;是一种常见的设计模式&#xff0c;它确保一个类只有一个实例&…...