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

Python教程--基本技能

】@TOC

5.1 解析命令行参数

在Python中,解析命令行参数是一项常见的任务,尤其是在开发命令行工具或脚本时。Python标准库提供了argparse模块,它可以帮助你轻松地编写用户友好的命令行接口。下面是使用argparse模块解析命令行参数的基本步骤:

引入argparse模块

首先,你需要引入argparse模块。

import argparse

创建ArgumentParser对象

接下来,创建一个ArgumentParser对象。这个对象将帮助你定义和解析命令行参数。

parser = argparse.ArgumentParser(description='这是一个示例脚本。')

定义参数

使用add_argument()方法来定义命令行参数。你可以指定参数名、参数类型、帮助信息等。

parser.add_argument('input', type=str, help='输入文件的路径。')
parser.add_argument('--output', '-o', type=str, default='output.txt', help='输出文件的路径。')
parser.add_argument('--verbose', '-v', action='store_true', help='启用详细输出。')

解析参数

定义好所有参数后,调用parse_args()方法来解析命令行参数。

args = parser.parse_args()

使用参数

解析后的参数将被存储在args对象中,你可以像使用普通变量一样使用它们。

if args.verbose:print(f'输入文件:{args.input}')print(f'输出文件:{args.output}')
# 你的代码逻辑

完整示例

下面是一个完整的示例,展示了如何定义、解析和使用命令行参数:

import argparse
def main():parser = argparse.ArgumentParser(description='这是一个示例脚本。')parser.add_argument('input', type=str, help='输入文件的路径。')parser.add_argument('--output', '-o', type=str, default='output.txt', help='输出文件的路径。')parser.add_argument('--verbose', '-v', action='store_true', help='启用详细输出。')args = parser.parse_args()if args.verbose:print(f'输入文件:{args.input}')print(f'输出文件:{args.output}')# 你的代码逻辑
if __name__ == '__main__':main()

你可以通过命令行运行这个脚本,并传递相应的参数。例如:

python script.py input.txt --output result.txt -v

在这个例子中,script.py是脚本的名字,input.txt是必需的输入文件参数,--output result.txt-v是可选的输出文件和详细输出参数。


5.2 时间日期处理
在Python中,处理时间日期是编程中的常见需求。Python标准库提供了datetime模块,它提供了多种时间日期相关的类和函数,用于处理日期、时间、时间差等。下面是使用datetime模块进行时间日期处理的基本步骤:

引入datetime模块

首先,你需要引入datetime模块。

from datetime import datetime, timedelta

获取当前时间

你可以使用datetime.now()方法来获取当前时间。

current_time = datetime.now()
print(current_time)

日期和时间格式化

你可以使用strftime()方法来格式化日期和时间,使其更容易阅读。

formatted_time = current_time.strftime('%Y-%m-%d %H:%M:%S')
print(formatted_time)

日期和时间加减

你可以使用timedelta对象来增加或减少日期和时间。

# 增加3天
three_days_later = current_time + timedelta(days=3)
print(three_days_later)
# 减少1小时
one_hour_ago = current_time - timedelta(hours=1)
print(one_hour_ago)

日期和时间比较

你可以使用timedelta对象来比较日期和时间。

# 比较两个时间
time_diff = three_days_later - current_time
print(time_diff)

示例

下面是一个完整的示例,展示了如何使用datetime模块进行时间日期处理:

from datetime import datetime, timedelta
def main():current_time = datetime.now()print(f'当前时间:{current_time}')formatted_time = current_time.strftime('%Y-%m-%d %H:%M:%S')print(f'格式化时间:{formatted_time}')three_days_later = current_time + timedelta(days=3)print(f'三天后的时间:{three_days_later}')one_hour_ago = current_time - timedelta(hours=1)print(f'一个小时前的時間:{one_hour_ago}')# 比较两个时间time_diff = three_days_later - current_timeprint(f'时间差:{time_diff}')
if __name__ == '__main__':main()

你可以通过命令行运行这个脚本,并查看输出结果。这个示例展示了如何获取当前时间、格式化日期和时间、进行日期和时间的加减以及比较日期和时间。


5.3 数据文件读写

在Python中,处理数据文件读写是一项基础技能,用于读取或写入文本文件、CSV文件、JSON文件等。Python标准库提供了osos.pathopencsvjson等模块,用于操作文件和读写不同类型的数据。下面是使用这些模块进行数据文件读写的步骤:

引入相关模块

首先,你可能需要引入一些相关模块。

import os
import csv
import json

读取文本文件

使用open()函数来读取文本文件。

# 打开文件
with open('example.txt', 'r') as file:# 读取文件内容content = file.read()print(content)

写入文本文件

使用open()函数来写入文本文件。

# 打开文件
with open('example.txt', 'w') as file:# 写入文件内容file.write('这是要写入的内容')

读取CSV文件

使用csv.reader()来读取CSV文件。

# 打开文件
with open('example.csv', 'r') as file:# 创建CSV读取器reader = csv.reader(file)# 读取文件内容for row in reader:print(row)

写入CSV文件

使用csv.writer()来写入CSV文件。

# 打开文件
with open('example.csv', 'w') as file:# 创建CSV写入器writer = csv.writer(file)# 写入文件内容writer.writerow(['列1', '列2', '列3'])writer.writerow(['值1', '值2', '值3'])

读取JSON文件

使用json.load()来读取JSON文件。

# 打开文件
with open('example.json', 'r') as file:# 创建JSON解析器data = json.load(file)print(data)

写入JSON文件

使用json.dump()来写入JSON文件。

# 打开文件
with open('example.json', 'w') as file:# 创建JSON解析器json.dump(data, file)

示例

下面是一个完整的示例,展示了如何使用Python进行数据文件读写:

import os
import csv
import json
def main():# 读取文本文件with open('example.txt', 'r') as file:content = file.read()print(content)# 写入文本文件with open('example.txt', 'w') as file:file.write('这是要写入的内容')# 读取CSV文件with open('example.csv', 'r') as file:reader = csv.reader(file)for row in reader:print(row)# 写入CSV文件with open('example.csv', 'w') as file:writer = csv.writer(file)writer.writerow(['列1', '列2', '列3'])writer.writerow(['值1', '值2', '值3'])# 读取JSON文件with open('example.json', 'r') as file:data = json.load(file)print(data)# 写入JSON文件with open('example.json', 'w') as file:json.dump(data, file)
if __name__ == '__main__':main()

在这个例子中,我们展示了如何使用Python进行文本文件、CSV文件和JSON文件的读写。这些技能在处理数据和配置文件时非常有用。


5.4 数据库操作

在Python中,数据库操作通常涉及与关系型数据库(如MySQL、PostgreSQL)或NoSQL数据库(如MongoDB、Redis)的交互。Python的标准库和第三方库提供了多种数据库接口,如sqlite3MySQLdbpsycopg2pymongo等。以下是一些基本步骤,用于在Python中进行数据库操作:

引入相关模块

首先,你可能需要引入一些数据库接口模块。

import sqlite3
import pymysql
import pymongo

连接数据库

使用适当的连接函数来建立与数据库的连接。

# 连接SQLite数据库
conn = sqlite3.connect('example.db')
# 连接MySQL数据库
conn = pymysql.connect(host='localhost', user='root', password='password', database='test_db')
# 连接MongoDB数据库
client = pymongo.MongoClient('mongodb://localhost:27017/')
db = client['test_db']

创建数据库表或集合

在连接数据库后,你可以使用SQL语句或MongoDB的集合操作来创建新的表或集合。

# 创建SQLite表
cursor = conn.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)')
conn.commit()
# 创建MongoDB集合
db.create_collection('users')

插入数据

你可以使用SQL语句或MongoDB的文档操作来插入数据。

# 插入SQLite数据
cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Alice', 30))
conn.commit()
# 插入MongoDB数据
db.users.insert_one({'name': 'Bob', 'age': 25})

查询数据

你可以使用SQL语句或MongoDB的查询操作来检索数据。

# 查询SQLite数据
cursor.execute('SELECT * FROM users WHERE age > ?', (25,))
rows = cursor.fetchall()
for row in rows:print(row)
# 查询MongoDB数据
for user in db.users.find({'age': {'$gt': 25}}):print(user)

更新和删除数据

你可以使用SQL语句或MongoDB的更新和删除操作来修改或删除数据。

# 更新SQLite数据
cursor.execute('UPDATE users SET age = ? WHERE name = ?', (31, 'Alice'))
conn.commit()
# 删除SQLite数据
cursor.execute('DELETE FROM users WHERE name = ?', ('Bob',))
conn.commit()
# 更新MongoDB数据
db.users.update_one({'name': 'Bob'}, {'$set': {'age': 26}})
# 删除MongoDB数据
db.users.delete_one({'name': 'Charlie'})

关闭数据库连接

完成数据库操作后,应该关闭数据库连接。

cursor.close()
conn.close()

示例

下面是一个完整的示例,展示了如何使用Python进行SQLite数据库操作:

import sqlite3
def main():# 连接SQLite数据库conn = sqlite3.connect('example.db')cursor = conn.cursor()# 创建表cursor.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)')conn.commit()# 插入数据cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Alice', 30))cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Bob', 25))conn.commit()# 查询数据cursor.execute('SELECT * FROM users WHERE age > ?', (25,))rows = cursor.fetchall()for row in rows:print(row)# 更新数据cursor.execute('UPDATE users SET age = ? WHERE name = ?', (31, 'Alice'))conn.commit()# 删除数据cursor.execute('DELETE FROM users WHERE name = ?', ('Bob',))conn.commit()# 关闭数据库连接cursor.close()conn.close()
if __name__ == '__main__':main()

在这个例子中,我们展示了如何使用Python进行SQLite数据库的连接、表创建、数据插入、查询、更新和删除操作。这些技能对于与数据库交互的应用程序至关重要。


5.6 源码打包

源码打包是将Python项目打包成一个可分发和可安装的格式,以便于其他用户能够轻松地安装和使用你的项目。Python中常用的打包格式有wheelsdistwheel是一种更高效的打包格式,而sdist则是源码打包的通用格式。

使用setuptools进行源码打包

setuptools是一个Python库,它提供了一套命令行工具和Python代码,用于创建和分发Python包。你可以使用setuptools来创建wheelsdist格式的源码包。

安装setuptools

如果你还没有安装setuptools,可以使用pip进行安装。

pip install setuptools
创建setup.py文件

创建一个名为setup.py的文件,该文件将包含你的包的元数据和打包命令。

from setuptools import setup, find_packages
setup(name='my_package',version='1.0',description='这是一个示例包',author='Your Name',author_email='your_email@example.com',url='https://example.com',packages=find_packages(),# 你可以添加其他需要的信息,如安装需求等
)
打包源码

setup.py文件所在的目录中,运行以下命令来创建sdistwheel格式的源码包。

python setup.py sdist bdist_wheel

这个命令会生成一个.tar.gz文件(sdist格式)和一个.whl文件(wheel格式)。

安装打包的包

你可以使用pip来安装这些打包好的包。

pip install my_package-1.0.tar.gz

或者

pip install my_package-1.0-py3-none-any.whl

使用wheel进行源码打包

wheel是一个用于创建、分发和安装Python包的命令行工具。你可以使用wheel来创建wheel格式的源码包。

安装wheel

如果你还没有安装wheel,可以使用pip进行安装。

pip install wheel
创建setup.py文件

创建一个名为setup.py的文件,该文件将包含你的包的元数据和打包命令。

from setuptools import setup, find_packages
setup(name='my_package',version='1.0',description='这是一个示例包',author='Your Name',author_email='your_email@example.com',url='https://example.com',packages=find_packages(),# 你可以添加其他需要的信息,如安装需求等
)
打包源码

setup.py文件所在的目录中,运行以下命令来创建wheel格式的源码包。

python setup.py bdist_wheel

这个命令会生成一个.whl文件(wheel格式)。

安装打包的包

你可以使用pip来安装这个打包好的包。

pip install my_package-1.0-py3-none-any.whl

示例

下面是一个完整的示例,展示了如何使用setuptoolswheel进行源码打包:

# 创建一个名为 setup.py 的文件
from setuptools import setup, find_packages
setup(name='my_package',version='1.0',description='这是一个示例包',author='Your Name',author_email='your_email@example.com',url='https://example.com',packages=find_packages(),# 你可以添加其他需要的信息,如安装需求等
)
# 在 setup.py 文件所在的目录中,使用 setuptools 创建 sdist 和wheel 格式的源码包。
python setup.py sdist bdist_wheel

这个命令会生成一个.tar.gz文件(sdist格式)和一个.whl文件(wheel格式)。

安装打包的包

你可以使用pip来安装这些打包好的包。

pip install my_package-1.0.tar.gz

或者

pip install my_package-1.0-py3-none-any.whl

使用twine进行源码打包

twine是一个专门用于上传Python包到PyPI(Python包索引)的命令行工具。它依赖于setuptoolswheel,因此你需要在安装twine之前确保已经安装了这两个工具。

安装twine

如果你还没有安装twine,可以使用pip进行安装。

pip install twine
打包源码

setup.py文件所在的目录中,运行以下命令来创建wheel格式的源码包。

python setup.py bdist_wheel

这个命令会生成一个.whl文件(wheel格式)。

上传到PyPI

使用twine来上传打包好的包到PyPI。

twine upload dist/*

这将使用dist目录中的所有文件上传到PyPI。确保在执行此命令之前,你已经设置了PyPI的凭据,并且你的包满足PyPI的命名规范和上传要求。

示例

下面是一个完整的示例,展示了如何使用twine进行源码打包并上传到PyPI:

# 创建一个名为 setup.py 的文件
from setuptools import setup, find_packages
setup(name='my_package',version='1.0',description='这是一个示例包',author='Your Name',author_email='your_email@example.com',url='https://example.com',packages=find_packages(),# 你可以添加其他需要的信息,如安装需求等
)
# 在 setup.py 文件所在的目录中,使用 setuptools 创建 wheel 格式的源码包。
python setup.py bdist_wheel
# 使用 twine 上传到 PyPI
twine upload dist/*

请注意,上传到PyPI之前,你需要有一个有效的PyPI账户,并设置好你的账户凭据。你可以在命令行中使用twine upload命令来上传包,或者在命令行中使用twine upload --repository-url <repository-url>命令来上传包到其他包索引。


在Python中,网络编程是一项重要的技能,它允许你的程序通过网络与其他程序进行通信。Python的标准库中提供了多个模块来支持网络编程,包括sockethttp.clienturllib等。以下是一些基本的网络编程概念和示例。

5.7 网络编程

1. socket 编程基础

socket 模块提供了标准的BSD Sockets API。一个socket是网络通信的一个端点,可以看作是不同计算机进程之间的数据通道。

  • TCP客户端
import socket
# 创建一个socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
s.connect(('www.example.com', 80))
# 发送数据
s.sendall(b'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n')
# 接收数据
data = s.recv(1024)
print(data)
# 关闭连接
s.close()
  • TCP服务器
import socket
# 创建一个socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
s.bind(('0.0.0.0', 8080))
# 监听连接
s.listen(1)
# 接受连接
conn, addr = s.accept()
print('Connected by', addr)
# 接收数据
while True:data = conn.recv(1024)if not data:breakprint(data)
# 关闭连接
conn.close()
2. HTTP 客户端请求

http.client 模块提供了HTTP协议的客户端实现。

import http.client
# 创建一个连接
conn = http.client.HTTPSConnection("www.example.com")
# 发送GET请求
conn.request("GET", "/")
# 获取响应
r1 = conn.getresponse()
# 打印响应状态和响应体
print(r1.status, r1.reason)
print(r1.read().decode('utf-8'))
# 关闭连接
conn.close()
3. 使用 requests 模块

requests 是一个更高级、更友好的HTTP客户端库,它简化了发送HTTP请求的过程。

import requests
# 发送GET请求
response = requests.get('https://www.example.com')
# 检查响应状态码
if response.status_code == 200:print(response.text)
else:print('Failed to retrieve data:', response.status_code)
4. urllib 使用

urllib 是一个用于读取来自Web的数据的模块。

from urllib.request import urlopen
# 打开一个URL
with urlopen('https://www.example.com') as response:# 读取网页内容html = response.read()
print(html.decode('utf-8'))

网络编程是Python应用中非常广泛的一部分,可以用于开发各种网络应用,包括网站、网络服务、分布式系统等。在实际开发中,理解网络协议、网络模型以及如何使用Python进行网络通信是非常重要的。


在Python中,发送邮件是一个常见的任务,通常用于自动化报告、提醒通知或作为服务的一部分。Python的smtp库可以用来发送邮件。以下是一个使用smtp库发送邮件的基本示例。

5.8 发送邮件

使用SMTP发送邮件
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
# 邮件发送者
sender = 'from@example.com'
# 邮件接收者
receiver = 'to@example.com'
# 邮件主题
subject = 'Python SMTP 邮件测试'
# 邮件正文
body = '这是一封来自Python脚本的测试邮件。'
# 创建一个带附件的实例
message = MIMEMultipart()
message['From'] = Header("发件人", 'utf-8')
message['To'] = Header("收件人", 'utf-8')
message['Subject'] = Header(subject, 'utf-8')
# 邮件正文内容
message.attach(MIMEText(body, 'plain', 'utf-8'))
# 添加附件(可选)
with open('附件.txt', 'r', encoding='utf-8') as f:att = MIMEText(f.read(), 'base64', 'utf-8')att["Content-Type"] = 'application/octet-stream'# 这里的filename可以任意写,写什么名字,邮件中显示什么名字att["Content-Disposition"] = 'attachment; filename="附件.txt"'message.attach(att)
# SMTP服务器地址
smtp_server = 'smtp.example.com'
# 发送者邮箱用户名和密码
username = 'your_username'
password = 'your_password'
# 连接SMTP服务器
server = smtplib.SMTP(smtp_server, 25)
server.starttls()
server.login(username, password)
# 发送邮件
server.sendmail(sender, receiver, message.as_string())
# 关闭服务器连接
server.quit()

在上面的代码中,你需要将senderreceiversmtp_serverusernamepassword替换为实际的发送者邮箱、接收者邮箱、SMTP服务器地址以及发送者邮箱的用户名和密码。如果SMTP服务器使用的是SSL加密(例如Gmail的SMTP服务器),则端口通常是465,并且需要使用smtplib.SMTP_SSL来连接服务器。
请注意,出于安全考虑,不要在代码中硬编码密码。可以使用环境变量或其他安全的方式来管理敏感信息。
发送邮件是一个涉及网络通信的过程,因此需要确保网络连接畅通,并且邮箱服务器配置正确。在实际应用中,可能还需要处理各种异常情况,例如网络错误、认证失败等。

相关文章:

Python教程--基本技能

】TOC 5.1 解析命令行参数 在Python中&#xff0c;解析命令行参数是一项常见的任务&#xff0c;尤其是在开发命令行工具或脚本时。Python标准库提供了argparse模块&#xff0c;它可以帮助你轻松地编写用户友好的命令行接口。下面是使用argparse模块解析命令行参数的基本步骤&…...

干货分享:Spring中经常使用的工具类(提示开发效率)

环境&#xff1a;Spring5.3…30 1、资源工具类 ResourceUtils将资源位置解析为文件系统中的文件的实用方法。 读取classpath下文件 File file ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX "logback.xml") ; // ...读取文件系统文件 file Resou…...

一文讲懂npm link

前言 在本地开发npm模块的时候&#xff0c;我们可以使用npm link命令&#xff0c;将npm 模块链接到对应的运行项目中去&#xff0c;方便地对模块进行调试和测试 用法 包链接是一个两步过程&#xff1a; 1.为依赖项创建全局软链npm link。一个符号链接&#xff0c;简称软链&a…...

观成科技:证券行业加密业务安全风险监测与防御技术研究

摘要&#xff1a;解决证券⾏业加密流量威胁问题、加密流量中的应⽤⻛险问题&#xff0c;对若⼲证券⾏业的实际流量内容进⾏调研分析&#xff0c; 分析了证券⾏业加密流量⾯临的合规性⻛险和加密协议及证书本⾝存在的⻛险、以及可能存在的外部加密流量威 胁&#xff0c;并提出防…...

使用Swoole开发高性能的Web爬虫

使用swoole开发高性能的web爬虫 Web爬虫是一种自动化获取网络数据的工具&#xff0c;它可以在互联网上收集数据&#xff0c;并且可以被应用于各种不同的领域&#xff0c;如搜索引擎、数据分析、竞争对手分析等。随着互联网规模和数据量的快速增长&#xff0c;如何开发一个高性…...

【Elasticsearch】Elasticsearch索引创建与管理详解

文章目录 &#x1f4d1;引言一、Elasticsearch 索引的基础概念二、创建索引2.1 使用默认设置创建索引2.2 自定义设置创建索引2.3 创建索引并设置映射 三、索引模板3.1 创建索引模板3.2 使用索引模板创建索引 四、管理索引4.1 查看索引4.2 更新索引设置4.3 删除索引 五、索引别名…...

[数据集][目标检测]棉花检测数据集VOC+YOLO格式389张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;389 标注数量(xml文件个数)&#xff1a;389 标注数量(txt文件个数)&#xff1a;389 标注类别…...

使用Java实现实时数据处理系统

使用Java实现实时数据处理系统 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 引言 在当今信息爆炸的时代&#xff0c;实时数据处理系统变得越来越重要。无论…...

整合web-socket的常见bug

整合文章连接 此文是记录我上网查找整合方案时候踩的坑,特别是注册失败的问题,比如还有什么去掉Compoent就可以,但是这样这个端点就失效了 特别是报错: at org.springframework.web.socket.server.standard.ServerEndpointExporter.registerEndpoint(ServerEndpointExporter.…...

Python 中字符串的常用操作都有哪些?

在 Python 中字符串的表达方式有四种 一对单引号 一对双引号 一对三个单引号 一对三个双引号 a ‘abc’ b “abc” c ‘’‘abc’’’ d “”“abc”"" print(type(a)) # <class ‘str’> print(type(b)) # <class ‘str’> print(type©) # <…...

FFmpeg 硬件编码加速文档介绍

介绍 硬件访问:许多平台提供了对专用硬件的访问,这些硬件可以用于执行解码、编码或过滤等视频相关操作。 性能与资源使用:使用硬件可以加快某些操作的速度或减少其他资源(特别是CPU)的使用,但可能会产生不同的结果或质量较低,或带来在使用纯软件时不存在的额外限制。 硬…...

【Matlab函数分析】imread从图形文件读取图像

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…...

零基础光速入门AI绘画,SD保姆攻略

前言 大家好&#xff0c;我是AI绘画咪酱。一名AIGC狂热爱好者&#xff0c;目前正在AI绘画领域进行深入的探索。 我花了一个月时间把SD研究了一遍&#xff0c;秉持着用有趣、易懂的文字让小白也可以零基础光速使用SD&#xff08;stable diffusion&#xff09;入门AI绘画&#…...

详细配置SQL Server的链接服务器(图文操作Mysql数据库)

目录 前言1. MySQL ODBC 驱动2. 配置 SQL Server 链接服务器3. 彩蛋前言 此处配置以及安装没有什么理论知识 所以直奔主题,跟着以下步骤配置安装即可 需求:准备在10.197.0.110中链接外部的10.197.0.96的mysql数据源 已默认在10.197.0.96中安装了MySQL数据库并且知道其连接信…...

DDD学习笔记五

模型引力场&#xff1a;聚合 强作用力体现&#xff1a; 某个领域模型是另一些模型存在的前提&#xff0c;没有前者&#xff0c;后者就失去了生存的意义。 一组领域模型之间存在关联的领域逻辑&#xff0c;任何时候都不能违反。 一组领域模型必须以一个完整的、一致的状态呈现给…...

CAN报文的发送类型-OnChange、OnWrite、IfActive、Repetition

CAN报文的发送类型分为基本发送类型和混合发送类型两大类 CAN基本发送类型包括Cyclic周期发送、OnChange变化时发送、OnWrite写入时发送和IfActive有效时发送。基本发送类型中的Cyclic称为周期型,而其他3个类型称为事件型(Event)。发送次数是通过定义Repetition重复次数来实…...

神经网络在机器学习中的应用:手写数字识别

机器学习是人工智能的一个分支&#xff0c;它使计算机能够从数据中学习并做出决策或预测。神经网络作为机器学习的核心算法之一&#xff0c;因其强大的非线性拟合能力而广泛应用于各种领域&#xff0c;包括图像识别、自然语言处理和游戏等。本文将介绍如何使用神经网络对MNIST数…...

QT拖放事件之四:自定义拖放操作-利用QDrag来拖动完成数据的传输-案例demo

1、核心代码 #include "Widget.h" #include "ui_Widget.h" #include "MyButton.h"Widget::Widget(QWidget *parent): QWidget...

Spring Boot应用的部署与扩展

Spring Boot应用的部署与扩展 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 引言 Spring Boot作为现代化Java应用的首选框架之一&#xff0c;以其简化的配置…...

Spring底层原理之bean的加载方式八 BeanDefinitionRegistryPostProcessor注解

BeanDefinitionRegistryPostProcessor注解 这种方式和第七种比较像 要实现两个方法 第一个方法是实现工厂 第二个方法叫后处理bean注册 package com.bigdata1421.bean;import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.…...

大数据面试题之Spark(5)

Spark SQL与DataFrame的使用? Sparksql自定义函数?怎么创建DataFrame? HashPartitioner和RangePartitioner的实现 Spark的水塘抽样 DAGScheduler、TaskScheduler、SchedulerBackend实现原理 介绍下Sparkclient提交application后&#xff0c;接下来的流程? Spark的几种…...

springboot笔记示例六:fastjson2集成

springboot笔记示例六&#xff1a;fastjson2集成 本文md下载 https://download.csdn.net/download/a254939392/89491102本文md文档下载地址 #springboot json官方说明 https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-json.htmlsprin…...

VLOOKUP函数在表格的简单运用-两个表匹配

1.什么是VLOOKUP&#xff1f; VLOOKUP是Excel中的一个内置函数&#xff0c;主要用于在区域或表格的首列查找指定的值&#xff0c;并返回该行中其他列的值。它特别适用于跨表格数据匹配 2.函数运用 2.1.这边两个表取名a表和b表&#xff0c;做为我们的实例表。 表格a包含&…...

http.cookiejar.LoadError: Cookies file must be Netscape formatted,not JSON.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

逻辑操作符

目录 && --- 逻辑与操作符 || --- 逻辑或操作符 && --- 逻辑与操作符 逻辑与操作符有并且的意思&#xff0c;一般用于判断语句中 逻辑与操作符运行规则是都要为真&#xff0c;才会继续执行或计算 360笔试题&#xff1a; 有关前置(--)&#xff0c;后置(-…...

Java调用第三方接口的秘籍:技巧、案例与最佳实践

Java调用第三方接口的秘籍&#xff1a;技巧、案例与最佳实践 在Java开发中&#xff0c;调用第三方接口是一项常见的任务。无论是与外部系统交互、集成其他服务&#xff0c;还是调用远程API获取数据&#xff0c;掌握有效的第三方接口调用技巧都是至关重要的。本文将深入剖析Jav…...

【机器学习】机器学习重要方法——深度学习:理论、算法与实践

文章目录 引言第一章 深度学习的基本概念1.1 什么是深度学习1.2 深度学习的历史发展1.3 深度学习的关键组成部分 第二章 深度学习的核心算法2.1 反向传播算法2.2 卷积神经网络&#xff08;CNN&#xff09;2.3 循环神经网络&#xff08;RNN&#xff09; 第三章 深度学习的应用实…...

计网之IP

IP IP基本认识 不使用NAT时&#xff0c;源IP地址和目的IP地址不变&#xff0c;只要源MAC和目的MAC地址在变化 IP地址 D类是组播地址&#xff0c;E类是保留地址 无分类地址CIDR 解决直接分类的B类65536太多&#xff0c;C类256太少a.b.c.d/x的前x位属于网路号&#xff0c;剩…...

mybatis延迟加载

mybatis延迟加载 1、延迟加载概述 应用场景 ​ 如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求&#xff0c;当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。 延迟加载的好处 ​ 先从单表查询、需要时再从关联表去关联查…...

危险!属性拷贝工具的坑!

1. 背景​ 之前在专栏中讲过“不推荐使用属性拷贝工具”&#xff0c;推荐直接定义转换类和方法使用 IDEA 插件自动填充 get / set 函数。 不推荐的主要理由是&#xff1a; 有些属性拷贝工具性能有点差有些属性拷贝工具有“BUG”使用属性拷贝工具容易存在一些隐患&#xff08…...

qt实现打开pdf(阅读器)功能用什么库比较合适

关于这个问题&#xff0c;网上搜一下&#xff0c;可以看到非常多的相关博客和例子&#xff0c;可以先看看这个总结性的博客&#xff08;https://zhuanlan.zhihu.com/p/480973072&#xff09; 该博客讲得比较清楚了&#xff0c;这里我再补充一下吧&#xff08;qt官方也给出了一些…...

在node.js环境中使用web服务器http-server运行html静态文件

http-server http-server是一个超轻量级web服务器&#xff0c;它可以将任何一个文件夹当作服务器的目录供自己使用。 当我们想要在服务器运行一些代码&#xff0c;但是又不会配置服务器的时候&#xff0c;就可以使用http-server就可以搞定了。 使用方法 因为http-server需要…...

前端学习篇一(HTML)

Introduction ##文章内容&#xff1a;使用HBuilder制作一个简单的HTML5网页以此达到学习HTML5 的目的 ##编写内容&#xff1a;1.HTML实现平台 2.HTML简介 3.HTML语言解析 ##编写人&#xff1a;贾雯爽 ##最后更新时间&#xff1a;2024/07/01 Overview Details 一、HTML简介…...

VUE笔记

框架&#xff1a; 框架结构&#xff0c;把很多基础功能已经实现&#xff08;封装了&#xff09;。 框架&#xff1a;在基础语言之上&#xff0c;对各种基础功能进行封装&#xff0c;方便开发者&#xff0c;提高开发效率。 举例&#xff1a;操作页面 现在&#xff1a;点击按…...

Datawhale机器学习day-1

赛题 在当今科技日新月异的时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的深度和广度渗透到科研领域&#xff0c;特别是在化学及药物研发中展现出了巨大潜力。精准预测分子性质有助于高效筛选出具有优异性能的候选药物。以PROTACs为例&#xff0c;它是…...

业务模型扩展字段存储

构建业务模型时&#xff0c;通常模型会设置扩展信息&#xff0c;存储上一般使用JSON格式存储到db中。JSON虽然有较好的扩展性&#xff0c;但并没有结构化存储的类型和非空等约束&#xff0c;且强依赖代码中写入/读取时进行序列化/反序列化操作&#xff0c; 当扩展信息结构简单且…...

50+k8s常用命令,助你成为k8s大牛!

Kubernetes是一个强大的容器编排平台&#xff0c;不管是运维、开发还是测试或多或少都会接触到&#xff0c;熟练的掌握k8s可大大提高工作效率和强化自身技能。 集群管理 1. 查看集群节点状态: kubectl get nodes2. 查看集群资源使用情况: kubectl top nodes3. 查看集群信息…...

002-基于Sklearn的机器学习入门:回归分析(上)

本节及后续章节将介绍机器学习中的几种经典回归算法&#xff0c;所选方法都在Sklearn库中聚类模块有具体实现。本节为上篇&#xff0c;将介绍基础的线性回归方法&#xff0c;包括线性回归、逻辑回归、多项式回归和岭回归等。 2.1 回归分析概述 回归&#xff08;Regression&…...

python实现网页自动化(自动登录需要验证的网页)

引言: python作为实现网页自动化的一个重要工具,其强大的各种封装的库使得程序运行更加简洁,只需要下载相应的库,然后调用库中的函数就可以简便的实现我们想要的网页相关操作。 正文: 我的前几篇文章写了关于初学爬虫中比较容易上手的功能,例如爬取静态网页的数据、动…...

ctfshow-web入门-命令执行(web71-web74)

目录 1、web71 2、web72 3、web73 4、web74 1、web71 像上一题那样扫描但是输出全是问号 查看提示&#xff1a;我们可以结合 exit() 函数执行php代码让后面的匹配缓冲区不执行直接退出。 payload&#xff1a; cvar_export(scandir(/));exit(); 同理读取 flag.txt cinclud…...

一体化导航的优点及应用领域

一体化导航&#xff0c;作为现代导航技术的重要发展方向&#xff0c;正日益展现出其独特的魅力和广泛的应用前景。这种导航方式将多种导航技术、信息系统以及数据处理方法集成于一个统一的平台上&#xff0c;为用户提供高效、准确、便捷的导航服务。 一体化导航的核心在于其高度…...

“吃饭大学”!中国大学食堂排行TOP10(含西电)

同学们们&#xff0c;考研择校考虑的因素除了学术&#xff0c;地理位置等方面&#xff0c;你们还会考虑哪些因素呢&#xff1f;小研作为一个吃货&#xff0c;必定会考虑的一个因素当然是大学的食堂美食啊~ 那中国超级好吃的大学食堂在哪&#xff1f;一起来看看有没有你的目标院…...

使用 Mybatis 时,调用 DAO接口时是怎么调用到 SQL 的?

Mybatis 是一个流行的 Java 持久层框架&#xff0c;它提供了一种半自动的 SQL 映射方式&#xff0c;允许开发者在 Java 代码中以一种更加直观和灵活的方式来操作数据库。当你使用 Mybatis 调用 DAO 接口时&#xff0c;背后的工作流程大致如下&#xff1a; 接口定义&#xff1a;…...

微信小程序毕业设计-微信食堂线上订餐系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…...

昂首资本实例使用价格行为策略,交易翻倍一点都不难

交易翻倍难吗&#xff1f;当Anzo Capital昂首资本使用价格行为策略进行交易时&#xff0c;发现一点都不难&#xff0c;以下是使用价格行为策略的实例分享&#xff1a; 1. 在初次交易信号出现时&#xff0c;推荐在1.00429价位入场&#xff0c;将止损设于1.04399&#xff0c;止盈…...

20240701 每日AI必读资讯

&#x1f3eb;AI真炼丹&#xff1a;整整14天&#xff0c;无需人类参与 - 英矽智能推出全球首个AI参与决策的生物学实验室&#xff0c;实现了14天内完成靶点发现和验证的全自动化闭环实验。 - 该实验室由PandaOmics平台驱动&#xff0c;集成多种预测模型和海量数据&#xff0…...

GPT-5 一年半后发布,对此你有何期待?

IT之家6月22日消息&#xff0c;在美国达特茅斯工程学院周四公布的采访中&#xff0c;OpenAI首席技术官米拉穆拉蒂被问及GPT-5是否会在明年发布&#xff0c;给出了肯定答案并表示将在一年半后发布。此外&#xff0c;穆拉蒂在采访中还把GPT-4到GPT-5的飞跃描述为高中生到博士生的…...

Redis学习——Redisson 分布式锁集成及其简单使用

文章目录 引言1. Redisson概述1.1 Redisson的基本概念1.2 Redisson的主要功能1.3 Redisson的优点 2. 开发环境3. Redisson的安装与配置3.1 添加依赖3.2 配置Redisson 4. 使用Redisson4.1 可重入锁4.1.1 可重入锁的概念4.1.2 可重入锁的实现原理4.1.3 简单使用锁的获取和释放 4.…...

08 - matlab m_map地学绘图工具基础函数 - 绘制线、图例、添加文字注释等函数

08 - matlab m_map地学绘图工具基础函数 - 绘制线、图例、添加文字注释等函数 0. 引言1. 关于m_line2. 关于m_quiver3. 关于m_text4. 关于m_plot5. 结语 0. 引言 本篇介绍下m_map中添加绘制基础线&#xff08;m_line、m_plot&#xff09;、绘制箭头&#xff08;m_quiver&#x…...

Luminar Neo 1.20.0 (macOS Universal) - 创新 AI 图像编辑器

Luminar Neo 1.20.0 (macOS Universal) - 创新 AI 图像编辑器 利用尖端的人工智能生成技术&#xff0c;轻松增强照片效果 请访问原文链接&#xff1a;https://sysin.org/blog/luminar-neo/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1…...

02:vim的使用和权限管控

vim的使用 1、vim基础使用1.1、vim pathname 2、vim高级用法2.1、查找2.2、设置显示行号2.3、快速切换行2.4、 行删除2.5、行复制粘贴 3、权限管理3.1、普通用户和特权用户3.2、文件权限表示 vim是Linux中的一种编辑器&#xff0c;类似于window中的记事本&#xff0c;可以对创建…...

【Rust入门教程】hello world程序

文章目录 前言Hello World程序运行总结 前言 对于学习任何一种新的编程语言&#xff0c;我们都会从编写一个简单的Hello World程序开始。这是一个传统&#xff0c;也是一个开始。在这篇文章中&#xff0c;我们将一起学习如何在Rust中编写你的第一个程序&#xff1a;Hello Worl…...

VUE项目安全漏洞扫描和修复

npm audit 1、npm audit是npm 6 新增的一个命令,可以允许开发人员分析复杂的代码并查明特定的漏洞。 2、npm audit名称执行&#xff0c;需要包package.json和package-lock.json文件。它是通过分析 package-lock.json 文件&#xff0c;继而扫描我们的包分析是否包含漏洞的。 …...

SerDes介绍以及原语使用介绍(4)ISERDESE2原语仿真

文章目录 前言一、iserdese2_module模块二、oserdese2_module模块三、顶层模块四、仿真结果分析 前言 上文详细介绍了ISERDESE2原语的使用&#xff0c;本文根据仿真对ISERDESE2原语的使用进一步加深印象。在仿真时&#xff0c;与OSERDESE进行回环。 一、iserdese2_module模块…...

驾驭Pip源之变:在Windows系统中轻松更换源的指南

驾驭Pip源之变&#xff1a;在Windows系统中轻松更换源的指南 Python作为一门流行的编程语言&#xff0c;拥有一个庞大的第三方库生态系统&#xff0c;而Pip作为Python的包管理工具&#xff0c;承担着安装和管理这些库的重任。然而&#xff0c;默认的Pip源有时可能因为网络问题…...

【乐吾乐2D可视化组态编辑器】文件

1 文件 文件&#xff1a;文件的新建、打开、导入、保存、另存为、下载JOSN文件、下载ZIP打包文件、导出为HTML、导出为Vue2组件、导出为Vue3组件、导出为React组件&#xff08;老版将不再维护&#xff09;、下载为PNG、下载为SVG 乐吾乐2D可视化组态编辑器demo&#xff1a;ht…...

网络应用层之(1)DHCPv6协议

网络应用层之(1)DHCPv6协议 Author: Once Day Date: 2024年5月26日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客-C…...

Facebook的魅力:数字时代的社交热点

在当今数字化时代&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分&#xff0c;而Facebook作为其中的巨头&#xff0c;一直以其独特的魅力吸引着全球数十亿用户。本文将深入探讨Facebook的魅力所在&#xff0c;以及它在数字时代的社交热点。 1. 社交网络的霸主&…...

爬虫案例-亚马逊反爬分析-验证码突破(x-amz-captcha)

总体概览&#xff1a;核心主要是需要突破该网站的验证码&#xff0c;成功后会返回我们需要的参数后再去请求一个中间页&#xff08;类似在后台注册一个session&#xff09;&#xff0c;最后需要注意一下 IP 是不能随意切换的 主要难点&#xff1a; 1、梳理整体反爬流程 2、验证…...

【数据结构:排序算法】堆排序(图文详解)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f369;1.大堆和小堆 &#x1f369;2.向上调整算法建堆和向下调整算法建堆&#xff1a;…...

Day27

Day27 反射案例 案例一&#xff1a;万能数组扩容 注意&#xff1a;copyOf、toString public class Test01 {/*** 知识点&#xff1a;反射案例 之 万能数组扩容* * 注意&#xff1a;copyOf、toString*/public static void main(String[] args) {String[] ss {"aaa"…...

如何使用Postman更好的进行API渗透测试

在这个时代&#xff0c;Web 和移动应用程序通常是由 RESTful 网络服务提供支持的。 公共和私有 API 在互联网上非常普遍&#xff0c;测试这些 API 绝非易事&#xff0c;但有一些工具可以帮助你。 虽然(通常用与渗透测试)工具不能代替技能&#xff0c;但即使是最熟练的木匠也能用…...