2024-08-25

Numpy是Python中用于科学计算的核心库之一,它提供了高性能的多维数组对象和大量的数学函数。以下是一些常用的Numpy方法和操作的示例:

  1. 创建数组:



import numpy as np
 
# 使用np.array创建数组
arr = np.array([1, 2, 3, 4, 5])
 
# 创建特定形状的零数组
zeros_arr = np.zeros(5)
 
# 创建特定形状的单位数组
ones_arr = np.ones((3, 4))
 
# 创建特定范围的整数数组
range_arr = np.arange(10)
  1. 数组操作:



# 数组形状变换
reshaped_arr = arr.reshape((2, 3))
 
# 数组的维度交换
swapped_arr = np.swapaxes(reshaped_arr, 0, 1)
 
# 数组的合并与分割
split_arr = np.split(arr, 2)
joined_arr = np.concatenate((arr, arr), axis=0)
  1. 数组索引与切片:



# 通过索引访问元素
element = arr[2]
 
# 通过切片访问子数组
sub_arr = arr[1:4]
  1. 数学运算:



# 数组与标量的运算
scaled_arr = arr * 2
 
# 数组与数组的运算
summed_arr = arr + np.ones(5)
 
# 应用数学函数
squared_arr = np.square(arr)
  1. 条件筛选:



# 根据条件筛选元素
filtered_arr = arr[arr > 3]
  1. 统计分析:



# 计算数组统计值
mean_value = np.mean(arr)
std_dev = np.std(arr)
  1. 线性代数操作:



# 矩阵乘法
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
product = np.dot(A, B)
 
# 矩阵求逆
inverse = np.linalg.inv(A)

这些是Numpy库中一些常用的方法,实际应用中可以根据需要选择合适的方法进行操作。

2024-08-25



import pymysql
 
# 连接数据库
connection = pymysql.connect(host='localhost',
                             user='user',
                             password='passwd',
                             db='db',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)
 
try:
    # 使用with语句确保连接的安全关闭
    with connection.cursor() as cursor:
        # 编写SQL语句
        sql = "UPDATE `table` SET `column` = %s WHERE `condition_column` = %s"
        # 准备数据
        data = [('value1', 'condition_value1'), ('value2', 'condition_value2'), ...]
        # 执行批量更新
        cursor.executemany(sql, data)
        # 提交到数据库执行
        connection.commit()
finally:
    connection.close()

这段代码展示了如何使用Python的pymysql库来批量更新MySQL数据库中的数据。首先,我们建立了与数据库的连接,然后使用executemany方法来执行批量更新,最后确保在完成操作后关闭数据库连接。这是一个简洁且有效的方法,可以用来处理大量的数据更新任务。

2024-08-25

以下是一个简单的前后端交互示例,前端使用HTML5和Axios,后端使用Python的Flask框架。

后端代码 (Python):




from flask import Flask, jsonify, request
 
app = Flask(__name__)
 
@app.route('/api/data', methods=['GET', 'POST'])
def data_endpoint():
    if request.method == 'POST':
        data = request.json
        # 处理POST请求的数据
        return jsonify({"message": "Data received", "data": data}), 201
    else:
        # 处理GET请求
        return jsonify({"message": "GET request received"}), 200
 
if __name__ == '__main__':
    app.run(debug=True)

确保你已经安装了Flask (pip install Flask).

前端代码 (HTML + Axios):




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>前后端交互示例</title>
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</head>
<body>
    <h1>前后端交互示例</h1>
    <button id="get-btn">发送GET请求</button>
    <button id="post-btn">发送POST请求</button>
 
    <script>
        const getBtn = document.getElementById('get-btn');
        const postBtn = document.getElementById('post-btn');
 
        getBtn.addEventListener('click', function() {
            axios.get('/api/data')
                .then(response => {
                    console.log(response.data);
                })
                .catch(error => {
                    console.error(error);
                });
        });
 
        postBtn.addEventListener('click', function() {
            const data = { key: 'value' };
            axios.post('/api/data', data)
                .then(response => {
                    console.log(response.data);
                })
                .catch(error => {
                    console.error(error);
                });
        });
    </script>
</body>
</html>

确保你有一个本地的web服务器来托管这个HTML文件,或者你可以将它放在一个静态文件目录下的Flask应用中。

在浏览器中打开这个HTML文件,点击按钮会通过Axios发送相应的GET或POST请求到后端的Flask服务器。后端服务器会根据请求类型处理数据,并返回响应。

2024-08-25

这是一个基于Web的地铁车辆标准化作业管理系统的概念性代码示例。由于是毕设作品,这里仅提供Python版本的代码示例。




# 假设的地铁车辆标准化作业管理系统
 
# 作业类
class Job:
    def __init__(self, job_id, station_id, station_name, vehicle_id, vehicle_type, status):
        self.job_id = job_id
        self.station_id = station_id
        self.station_name = station_name
        self.vehicle_id = vehicle_id
        self.vehicle_type = vehicle_type
        self.status = status
 
    def __str__(self):
        return f"Job ID: {self.job_id}, Station ID: {self.station_id}, Station Name: {self.station_name}, Vehicle ID: {self.vehicle_id}, Vehicle Type: {self.vehicle_type}, Status: {self.status}"
 
# 系统管理员类
class Admin:
    def __init__(self, admin_id, name, password):
        self.admin_id = admin_id
        self.name = name
        self.password = password
 
    def login(self):
        # 登录逻辑
        print("Admin logged in.")
 
# 系统管理员实例
admin = Admin(admin_id='admin123', name='System Admin', password='admin123')
 
# 作业实例
job = Job(job_id='JOB123', station_id='STATION1', station_name='Tianfu Station', vehicle_id='VEH123', vehicle_type='Subway', status='Pending')
 
# 假设的业务逻辑处理
admin.login()
print(job)
 
# 假设的数据库操作
# 创建数据库连接
# 执行数据库查询和更新操作

这个代码示例展示了一个简单的作业类和一个管理员类,以及它们之间的交互。在实际应用中,你需要扩展这些类来包含更多的功能,并且连接到实际的数据库进行数据持久化。这个代码示例旨在教育用户如何构建这样的系统的基础架构。

2024-08-25

Docker的基本指令包括:

  1. 创建容器:docker run [options] image [command]
  2. 列出容器:docker ps [options]
  3. 停止容器:docker stop [options] container [container...]
  4. 删除容器:docker rm [options] container [container...]
  5. 构建镜像:docker build [options] path
  6. 列出镜像:docker images [options]
  7. 删除镜像:docker rmi [options] image [image...]

以下是使用Docker创建一个简单的Python应用的示例:

首先,创建一个名为 Dockerfile 的文件,内容如下:




# 使用官方Python运行环境作为父镜像
FROM python:3.8-slim
 
# 设置工作目录
WORKDIR /app
 
# 将当前目录内容复制到工作目录
COPY . /app
 
# 安装requirements.txt中指定的依赖
RUN pip install --no-cache-dir -r requirements.txt
 
# 设置运行时执行的命令
CMD ["python", "app.py"]

然后,在同一目录下创建一个 requirements.txt 文件,列出应用的依赖,例如:




flask

最后,创建你的Python应用程序 app.py




from flask import Flask
 
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'Hello, Docker!'
 
if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')

构建并运行Docker容器:




docker build -t python-app .
docker run -d -p 5000:5000 python-app

访问 http://localhost:5000 查看你的应用运行情况。

对于C++应用,首先需要你有一个编译好的可执行文件,然后创建一个简单的 Dockerfile




FROM ubuntu:18.04
 
# 安装C++运行时依赖
RUN apt-get update && apt-get install -y g++
 
# 将本地的可执行文件复制到镜像中
COPY ./my_cpp_app /usr/bin/my_cpp_app
 
# 设置容器启动时执行的命令
CMD ["/usr/bin/my_cpp_app"]

构建并运行:




docker build -t cpp-app .
docker run cpp-app

对于HTML应用,你可以使用一个轻量级的HTTP服务器如 http-server 来提供静态文件:




FROM node:12-alpine
 
# 安装http-server
RUN npm install -g http-server
 
# 将HTML文件复制到镜像中
COPY ./my_html_app /usr/share/http-server/
 
# 设置工作目录
WORKDIR /usr/share/http-server/
 
# 设置容器启动时执行的命令
CMD ["http-server"]

构建并运行:




docker build -t html-app .
docker run -d -p 8080:8080 html-app

访问 http://localhost:8080 查看你的HTML应用。




from datetime import datetime
from elasticsearch import Elasticsearch
 
# 假设我们已经有了一个Elasticsearch实例
es = Elasticsearch("http://localhost:9200")
 
# 创建一个新的文档
def create_document(index_name, document_id, document):
    es.index(index=index_name, id=document_id, document=document)
 
# 获取一个文档
def get_document(index_name, document_id):
    return es.get(index=index_name, id=document_id)
 
# 更新一个文档
def update_document(index_name, document_id, document):
    es.update(index=index_name, id=document_id, document=document)
 
# 删除一个文档
def delete_document(index_name, document_id):
    es.delete(index=index_name, id=document_id)
 
# 查询文档
def search_documents(index_name, query):
    return es.search(index=index_name, body=query)
 
# 示例使用
index_name = "example_index"
document_id = "1"
document = {
    "title": "Python Elasticsearch",
    "content": "Elasticsearch is a great tool for full-text search.",
    "date": datetime.now()
}
 
# 创建文档
create_document(index_name, document_id, document)
 
# 获取文档
print(get_document(index_name, document_id))
 
# 更新文档
document["content"] += " You can easily play with Elasticsearch in Python."
update_document(index_name, document_id, document)
 
# 删除文档
# delete_document(index_name, document_id)
 
# 查询文档
query = {
    "query": {
        "match": {
            "content": "play"
        }
    }
}
results = search_documents(index_name, query)
print(results)

这段代码提供了创建、获取、更新、删除文档以及执行基本搜索的函数。它展示了如何使用Elasticsearch Python API与Elasticsearch集群交互。代码简洁,注重实用性,可以作为初学者学习和使用Elasticsearch的示例。

DES (Data Encryption Standard) 是一种使用密钥加密64位数据块的算法。由于其密钥长度较短(56位),易被现代计算机破解,因此已经不再广泛使用,但在某些安全要求不高的场合,如银行交易等,仍可接受。

DES算法的基本步骤包括:

  1. 初始置换:将输入的64位数据块按位重新组织。
  2. 密钥展开:用初始密钥生成16个子密钥。
  3. Permutation and substitution:8轮不同的替换和置换操作。
  4. 逆初始置换:将输出的64位数据块恢复到原始顺序。

DES算法的攻击手段主要有:

  • 字典攻击:通过预先计算大量密钥和密文对,尝试匹配给定的密文。
  • 暴力破解:尝试所有可能的密钥组合。
  • 时间攻击:通过测量解密所需时间来推断密钥。
  • 利用DES的结构弱点,比如相邻密钥之间的相关性。

为了提高安全性,可以使用三重DES(3DES),它使用三个不同的密钥对数据进行三次DES加密。虽然这样增加了密钥的数量,但是由于每个密钥长度仍为56位,实际上提供的安全强度并不高。

在Python中实现DES加密,可以使用pycryptodome库:




from Crypto.Cipher import DES
from Crypto.Util.strxor import strxor
 
def des_encrypt(data, key):
    cipher = DES.new(key, DES.MODE_ECB)
    return cipher.encrypt(data)
 
def des_decrypt(data, key):
    cipher = DES.new(key, DES.MODE_ECB)
    return cipher.decrypt(data)
 
# 测试
key = b'01234567'  # 8字节密钥
plaintext = b'Hello World'
ciphertext = des_encrypt(plaintext, key)
print('Ciphertext:', ciphertext)
 
decrypted = des_decrypt(ciphertext, key)
print('Decrypted:', decrypted)

注意:实际应用中应该使用更安全的加密算法,如AES,并配合额外的安全措施,如密钥管理、初始化向量(IV)等。




import multiprocessing
import time
 
def worker(num):
    """
    定义一个函数,用于在新进程中运行。
    这个函数接收一个参数并打印一条消息,然后进行一些计算。
    """
    print(f"Worker {num} starting...")
    time.sleep(2)
    print(f"Worker {num} finished...")
 
if __name__ == "__main__":
    # 定义要运行的进程数
    num_processes = 4
    # 创建进程池
    pool = multiprocessing.Pool(processes=num_processes)
    # 使用池中的每个进程运行worker函数,参数从0到num_processes-1
    for i in range(num_processes):
        pool.apply_async(worker, args=(i,))
    # 关闭进程池,不再添加新的任务
    pool.close()
    # 等待所有的进程完成
    pool.join()
    print("All processes finished")

这段代码定义了一个worker函数,然后在主程序中创建了一个进程池,并将worker函数作为任务在多个进程中并发执行。通过pool.apply_async方法,我们传递了函数和参数,并启动了进程。最后,我们调用pool.close()来关闭进程池,防止更多的任务被提交到池中。pool.join()会等待所有进程真正完成后再继续执行。

2024-08-24

在Linux中搭建Python环境,通常需要以下步骤:

  1. 安装Python
  2. 安装pip(Python包管理器)
  3. 使用pip安装必要的包或框架

以下是基于Debian/Ubuntu系统的示例安装过程:




# 1. 安装Python3
sudo apt-get update
sudo apt-get install python3
 
# 2. 安装pip3
sudo apt-get install python3-pip
 
# 3. 使用pip安装必要的包,例如Django
sudo pip3 install django

对于其他Linux发行版,如CentOS或Fedora,可以使用其对应的包管理器如yumdnf进行安装。

确保在安装Python环境时,选择合适的Python版本,并根据项目需求安装相应的包。

2024-08-24

Django中间件是一个轻量级的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。

以下是一个简单的自定义Django中间件的例子:




# middlewares.py
from django.utils.deprecation import MiddlewareMixin
 
class SimpleMiddleware(MiddlewareMixin):
    def process_request(self, request):
        # 在请求到达视图函数之前可以做一些操作
        print("Request has reached the server.")
 
    def process_response(self, request, response):
        # 在视图函数处理完请求后,返回响应之前可以做一些操作
        print("Response is on the way back to the client.")
        return response

要使用这个中间件,你需要在你的Django项目的settings.py文件中的MIDDLEWARE配置列表中添加这个中间件的路径。例如:




# settings.py
MIDDLEWARE = [
    # ...
    'path.to.middlewares.SimpleMiddleware',  # 使用你的中间件的完整路径
    # ...
]

这样配置后,每次请求都会先经过process_request方法,然后是视图函数处理,之后是process_response方法,最后返回响应。