嵌入式Python、决策树算法、SQLite、Flask、树莓派、机器学习:基于算法自主决策的智能家居系统(代码示例)

项目概述

随着物联网技术的快速发展,智能家居系统越来越普及,成为现代家庭生活的重要组成部分。本文将介绍一个基于Raspberry Pi和Arduino的智能家居算法控制系统的硬件平台。该系统能够通过传感器采集环境数据,并利用机器学习算法进行分析与控制,从而实现智能化的家居管理。

系统设计

硬件架构

智能家居控制系统的硬件平台主要由以下几个部分组成:

  • 主控制器:Raspberry Pi
  • 辅助控制器:Arduino
  • 传感器
    • 温度传感器(如DHT22)
    • 湿度传感器(如DHT22)
    • 光照传感器(如BH1750)
  • 执行器
    • 恒温器(智能恒温器模块)
    • 加湿器(继电器控制的加湿器)
    • 灯光控制(智能灯泡或通过继电器控制的灯)

硬件平台及功能

  • Raspberry Pi

    • 功能:作为主控制器,负责运行机器学习算法和管理传感器及家居设备。
    • 优点:计算能力强,支持多种编程语言和库,具有丰富的I/O接口。
  • Arduino

    • 功能:作为辅助控制器或传感器数据采集节点。
    • 优点:低功耗,易于与传感器和执行器集成。

软件技术栈

  • 操作系统:Raspberry Pi OS(基于Debian的Linux发行版)

  • 编程语言

    • Python:主要用于算法实现和系统集成。
  • 机器学习库

    • scikit-learn:用于实现决策树和随机森林算法。
    • NumPy 和 Pandas:用于数据处理和分析。
  • 传感器和设备控制库

    • Adafruit_DHT:用于读取DHT22传感器数据。
    • RPi.GPIO:用于控制Raspberry Pi的GPIO引脚,管理执行器。
    • pyserial:用于与Arduino通信(如果使用Arduino作为辅助控制器)。
  • 数据存储和处理

    • SQLite 或 InfluxDB:用于存储传感器数据和系统日志。
    • pandas:用于数据处理和分析。
  • 通信协议

    • MQTT:用于设备间通信,特别是在智能家居系统中。
    • HTTP/REST:用于与其他智能家居设备或服务通信。
  • Web界面和API

    • Flask 或 Django:用于创建Web API和管理界面。
    • Bootstrap:用于前端界面设计。

系统架构图

硬件端代码实现

接下来,我们将展示一些关键的代码实现,并提供详细的注释以方便读者理解。

1. 温湿度传感器数据采集

import Adafruit_DHT
import time# 设置传感器类型和GPIO引脚
sensor = Adafruit_DHT.DHT22
pin = 4def read_sensor():# 读取温湿度数据humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)if humidity is not None and temperature is not None:print(f'Temperature = {temperature:.1f}°C, Humidity = {humidity:.1f}%')else:print('Failed to retrieve data from humidity sensor')while True:read_sensor()time.sleep(2)  # 每2秒读取一次

代码说明

  • 导入Adafruit_DHT库用于读取DHT22传感器数据。
  • 使用read_retry方法读取温度和湿度数据,并在控制台打印结果。

2. 控制执行器

import RPi.GPIO as GPIO
import time# 设置GPIO引脚
HEATER_PIN = 17  # 设定加热器连接的GPIO引脚
LIGHT_PIN = 27   # 设定灯光控制的GPIO引脚# GPIO引脚模式设置
GPIO.setmode(GPIO.BCM)
GPIO.setup(HEATER_PIN, GPIO.OUT)
GPIO.setup(LIGHT_PIN, GPIO.OUT)def control_heater(state):"""控制加热器的状态"""if state:GPIO.output(HEATER_PIN, GPIO.HIGH)  # 加热器开启print("加热器已开启")else:GPIO.output(HEATER_PIN, GPIO.LOW)   # 加热器关闭print("加热器已关闭")def control_light(state):"""控制灯光的状态"""if state:GPIO.output(LIGHT_PIN, GPIO.HIGH)   # 灯光开启print("灯光已开启")else:GPIO.output(LIGHT_PIN, GPIO.LOW)    # 灯光关闭print("灯光已关闭")try:while True:# 示例:根据温度条件控制加热器和灯光current_temp = 25  # 假设当前温度为25°C,实际应由传感器读取if current_temp < 22:control_heater(True)  # 温度低于22°C,开启加热器else:control_heater(False)  # 温度高于22°C,关闭加热器# 假设光照条件,光照强度为300lxlight_intensity = 300  # 实际应由光照传感器读取if light_intensity < 200:control_light(True)  # 光照强度低于200lx,开启灯光else:control_light(False)  # 光照强度高于200lx,关闭灯光time.sleep(5)  # 每5秒检查一次状态except KeyboardInterrupt:print("程序已终止")
finally:GPIO.cleanup()  # 清理GPIO状态

代码说明

  • 我们使用RPi.GPIO库来控制GPIO引脚。
  • HEATER_PIN 和 LIGHT_PIN 分别指定了加热器和灯光控制的GPIO引脚。
  • control_heater 和 control_light 函数根据输入的状态控制加热器和灯光的开关状态,并打印相关信息。
  • 在主循环中,假设温度和光照强度由传感器读取,基于这些数据控制相应的设备。

 

3. 机器学习算法实现

在智能家居系统中,我们可以使用机器学习算法来预测和优化家居环境。下面是使用scikit-learn库实现简单的决策树模型的示例代码。

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score# 假设我们有一个环境数据集
data = {'Temperature': [22, 20, 25, 19, 30, 28],'Humidity': [30, 35, 40, 50, 55, 60],'Light': [100, 150, 200, 250, 300, 350],'Heater_On': [1, 0, 1, 0, 1, 1]  # 1表示开启,0表示关闭
}df = pd.DataFrame(data)# 特征和标签
X = df[['Temperature', 'Humidity', 'Light']]
y = df['Heater_On']# 数据集分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建决策树模型
model = DecisionTreeClassifier()
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'模型准确率: {accuracy:.2f}')

代码说明

  • 我们创建了一个简单的环境数据集,包含温度、湿度、光照强度等特征和加热器的开关状态。
  • 使用train_test_split将数据集分为训练集和测试集,构建决策树模型,并对测试集进行预测。
  • 最后,我们使用accuracy_score来评估模型的准确率,并打印结果。该模型的准确率可以帮助我们了解算法在预测加热器状态方面的有效性。

数据存储和处理实现

1. 使用SQLite存储传感器数据

在智能家居系统中,使用SQLite可以方便地存储和查询传感器数据。以下是一个示例代码,展示如何创建SQLite数据库、创建表格以及插入和查询数据。

import sqlite3
import time# 创建或连接到SQLite数据库
conn = sqlite3.connect('smart_home.db')
cursor = conn.cursor()# 创建传感器数据表
cursor.execute('''
CREATE TABLE IF NOT EXISTS sensor_data (id INTEGER PRIMARY KEY AUTOINCREMENT,timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,temperature REAL,humidity REAL,light REAL
)
''')def insert_sensor_data(temperature, humidity, light):"""插入传感器数据到数据库"""cursor.execute('''INSERT INTO sensor_data (temperature, humidity, light)VALUES (?, ?, ?)''', (temperature, humidity, light))conn.commit()def query_sensor_data():"""查询所有传感器数据"""cursor.execute('SELECT * FROM sensor_data')rows = cursor.fetchall()for row in rows:print(row)try:while True:# 假设这些数据是从传感器读取的temperature = 22.5  # 示例温度humidity = 45.0     # 示例湿度light = 300.0       # 示例光照强度# 插入传感器数据insert_sensor_data(temperature, humidity, light)# 查询并打印传感器数据print("当前传感器数据:")query_sensor_data()time.sleep(10)  # 每10秒读取一次数据except KeyboardInterrupt:print("程序已终止")
finally:conn.close()  # 关闭数据库连接

代码说明

  • 我们使用sqlite3库创建一个名为smart_home.db的数据库。
  • 创建一个名为sensor_data的表,包含ID、时间戳、温度、湿度和光照等字段。
  • insert_sensor_data函数用于将传感器数据插入到数据库中。
  • query_sensor_data函数用于查询并打印所有传感器数据。
  • 在主循环中,假设温度、湿度和光照强度是从传感器读取的,并定期将这些数据存入数据库。

2. 使用Pandas进行数据处理和分析

在存储数据后,我们可以使用Pandas进行数据分析。以下是一个示例代码,展示如何从SQLite数据库中读取数据,并使用Pandas进行分析。

import pandas as pd
import sqlite3# 连接到SQLite数据库
conn = sqlite3.connect('smart_home.db')# 从数据库中读取数据到Pandas DataFrame
df = pd.read_sql_query('SELECT * FROM sensor_data', conn)# 关闭数据库连接
conn.close()# 数据分析示例
print("传感器数据概览:")
print(df.head())  # 显示前5行数据# 计算温度和湿度的平均值
average_temperature = df['temperature'].mean()
average_humidity = df['humidity'].mean()
average_light = df['light'].mean()print(f"平均温度: {average_temperature:.2f}°C")
print(f"平均湿度: {average_humidity:.2f}%")
print(f"平均光照: {average_light:.2f}lx")# 绘制温度变化图
df['timestamp'] = pd.to_datetime(df['timestamp'])
df.set_index('timestamp', inplace=True)
df['temperature'].plot(title='温度变化图', ylabel='温度 (°C)', xlabel='时间')# 显示图形
import matplotlib.pyplot as plt
plt.show()

代码说明

  • 通过pandasread_sql_query函数从SQLite数据库中读取传感器数据,并存入DataFrame中。
  • 使用head()方法查看数据的前五行。
  • 计算传感器数据中的平均温度、湿度和光照强度,并打印结果。
  • 使用matplotlib绘制温度变化图,展示随时间变化的温度数据。

Web 界面和 API 实现

1. 使用 Flask 创建 Web API 和管理界面

Flask 是一个轻量级的 Web 应用程序框架,非常适合快速构建 Web API 和管理界面。以下是一个简单的 Flask 应用程序示例,展示如何创建 API 接口以获取传感器数据,以及如何使用 HTML 页面展示数据。

1.1 安装 Flask

如果尚未安装 Flask,可以使用以下命令安装:

pip install Flask
1.2 Flask 应用程序代码
from flask import Flask, jsonify, render_template
import sqlite3app = Flask(__name__)# 连接到 SQLite 数据库
def get_db_connection():conn = sqlite3.connect('smart_home.db')conn.row_factory = sqlite3.Row  # 使得查询结果以字典形式返回return conn@app.route('/api/sensor_data', methods=['GET'])
def get_sensor_data():"""API 接口,返回传感器数据的 JSON 格式"""conn = get_db_connection()cursor = conn.cursor()cursor.execute('SELECT * FROM sensor_data')rows = cursor.fetchall()conn.close()# 将查询结果转换为字典列表sensor_data = []for row in rows:sensor_data.append({'id': row['id'],'timestamp': row['timestamp'],'temperature': row['temperature'],'humidity': row['humidity'],'light': row['light']})return jsonify(sensor_data)  # 返回 JSON 格式的数据@app.route('/')
def index():"""主页面,展示传感器数据"""conn = get_db_connection()cursor = conn.cursor()cursor.execute('SELECT * FROM sensor_data ORDER BY timestamp DESC LIMIT 10')  # 获取最新的10条数据rows = cursor.fetchall()conn.close()return render_template('index.html', data=rows)if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)  # 运行 Flask 应用
1.3 HTML 模板

在项目根目录下创建一个名为 templates 的文件夹,并在其中创建 index.html 文件,用于展示传感器数据的网页界面。

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>智能家居传感器数据</title><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body><div class="container"><h1 class="mt-5">智能家居传感器数据</h1><table class="table table-bordered mt-3"><thead><tr><th>ID</th><th>时间戳</th><th>温度 (°C)</th><th>湿度 (%)</th><th>光照 (lx)</th></tr></thead><tbody>{% for row in data %}<tr><td>{{ row['id'] }}</td><td>{{ row['timestamp'] }}</td><td>{{ row['temperature'] }}</td><td>{{ row['humidity'] }}</td><td>{{ row['light'] }}</td></tr>{% endfor %}</tbody></table></div>
</body>
</html>

代码说明

  • Flask 应用程序

    • get_db_connection 函数用于连接到 SQLite 数据库并返回连接对象。
    • /api/sensor_data 路由提供 API 接口,返回所有传感器数据的 JSON 格式。
    • / 路由返回主页面,展示最新的传感器数据。
  • HTML 页面

    • 使用 Bootstrap 框架简化网页设计,使其具有良好的响应式布局。
    • 通过 Jinja2 模板引擎将数据库中的传感器数据动态插入到 HTML 表格中。

2. 启动 Flask 应用程序

在终端中运行以下命令启动 Flask 应用程序:

python app.py

然后,您可以在浏览器中访问 http://localhost:5000 来查看智能家居传感器数据的管理界面。您将看到一个表格,展示最新的传感器数据,包括温度、湿度和光照强度等信息。通过这个简单的 Web 界面,用户可以方便地查看实时的环境数据。

3. 测试 API 接口

您还可以通过访问 API 接口来获取传感器数据的 JSON 格式。在浏览器中访问 http://localhost:5000/api/sensor_data,您将看到类似如下的 JSON 数据格式:

[{"id": 1,"timestamp": "2024-07-27 10:00:00","temperature": 22.5,"humidity": 45.0,"light": 300.0},{"id": 2,"timestamp": "2024-07-27 10:05:00","temperature": 23.0,"humidity": 40.0,"light": 320.0}// 更多数据...
]

4. 整合 Flask 和前端

为了更好地整合 Flask 应用程序与前端界面,您可以进一步扩展功能,例如添加按钮来控制执行器,或通过 AJAX 请求实时更新数据。以下是如何使用 AJAX 来实现自动更新传感器数据的示例。

4.1 修改 HTML 模板以支持 AJAX

在 index.html 文件中,添加以下 JavaScript 代码以实现定时刷新传感器数据:

<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>function fetchSensorData() {$.getJSON('/api/sensor_data', function(data) {var tbody = '';$.each(data, function(index, row) {tbody += '<tr>';tbody += '<td>' + row.id + '</td>';tbody += '<td>' + row.timestamp + '</td>';tbody += '<td>' + row.temperature + '</td>';tbody += '<td>' + row.humidity + '</td>';tbody += '<td>' + row.light + '</td>';tbody += '</tr>';});$('tbody').html(tbody);  // 更新表格内容});}$(document).ready(function() {fetchSensorData();  // 页面加载时获取数据setInterval(fetchSensorData, 10000);  // 每10秒刷新数据});
</script>

代码说明

  • 使用 jQuery 的 $.getJSON 方法从 /api/sensor_data 接口获取最新的传感器数据,并动态更新表格内容。
  • setInterval 方法用于每隔 10 秒自动调用 fetchSensorData 函数,从而实现实时数据更新。

项目总结

本项目展示了一个基于Raspberry Pi和Arduino的智能家居算法控制系统,结合了传感器数据采集、机器学习模型应用、数据存储与处理、以及Web界面和API的构建。通过这一系统,我们能够实现对家庭环境的智能监控与管理,提升生活的便利性和舒适度。

关键要点

  1. 硬件平台

    • Raspberry Pi 作为主控制器,负责数据处理和设备管理,具有强大的计算能力和丰富的I/O接口。
    • Arduino 作为辅助控制器,低功耗并易于与多种传感器和执行器集成,增强了系统的灵活性。
  2. 传感器与执行器

    • 系统整合了多种传感器,如温度传感器(DHT22)、湿度传感器、光照传感器等,实时采集环境数据。
    • 执行器部分包括加热器、灯光控制和加湿器等,能根据传感器数据智能化地调节家庭环境。
  3. 数据存储与处理

    • 使用 SQLite 数据库存储传感器数据和系统日志,便于后续数据分析和管理。
    • 利用 Pandas 进行数据分析,方便地计算平均值、绘制数据变化图等,帮助用户理解环境变化。
  4. Web 界面与 API

    • 通过 Flask 框架构建了一个简洁的Web接口,提供了动态数据展示和API访问,用户可通过浏览器实时监控家居环境。
    • HTML 前端使用 Bootstrap 框架设计,使得界面美观且响应式,增强用户体验。
  5. 机器学习应用

    • 采用 scikit-learn 实现机器学习模型(如决策树),对环境数据进行分析和预测,提升系统智能化水平,从而优化设备的控制策略。

未来展望

本项目具备良好的扩展性,未来可以考虑以下方向的改进和增强:

  • 设备控制优化:结合更多的机器学习算法(如随机森林或神经网络)进行更复杂的环境预测和设备控制策略。
  • 用户管理系统:实现用户登录和权限管理,支持多用户环境下的个性化设置。
  • 移动应用开发:为用户开发手机应用,便于远程监控和控制家居设备。
  • IoT 集成:与其他智能家居平台(如Amazon Alexa、Google Home等)进行集成,实现语音控制功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/876504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据的数据质量有效提升的研究

大数据的数据质量有效提升是一个涉及多个环节和维度的复杂过程。以下是从数据采集、处理、管理到应用等方面&#xff0c;对大数据数据质量有效提升的研究概述&#xff1a; 一、数据采集阶段 明确采集需求&#xff1a;在数据采集前&#xff0c;需明确数据需求&#xff0c;包括…

VMware、Docker - 让虚拟机走主机代理,解决镜像封禁问题

文章目录 虚拟机全局代理配置找到 VMnet8 的 IPv4 地址代理相关配置虚拟机代理配置 Docker 代理配置修改镜像修改 Docker 代理配置 虚拟机全局代理配置 找到 VMnet8 的 IPv4 地址 a&#xff09;打开此电脑&#xff0c;输入 “控制面板”&#xff0c;然后回车. b&#xff09;之…

【计算机毕业设计】850汽车售后服务信息管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【计算机方向】五本“三区水刊”重磅推荐!几乎不拒收,国人发文友好!

本期将为您带来五本计算机SCI 妥妥毕业神刊&#xff01; AUTONOMOUS AGENTS AND MULTI-AGENT SYSTEMS International Journal on Document Analysis and Recognition COMPUTATIONAL INTELLIGENCE IET Biometrics ACM Transactions on Asian and Low-Resource L…

C语言 | Leetcode C语言题解之第283题移动零

题目&#xff1a; 题解&#xff1a; void swap(int *a, int *b) {int t *a;*a *b, *b t; }void moveZeroes(int *nums, int numsSize) {int left 0, right 0;while (right < numsSize) {if (nums[right]) {swap(nums left, nums right);left;}right;} }

Layui表格合并、表格折叠树

1、核心代码&#xff1a; let tableMerge layui.tableMerge; // 引入合并的插件&#xff0c;插件源文件在最后let tableData [{pid: 0,cid: 111,sortNum: 1, // 序号pName: 数据父元素1,name: 数据1,val: 20,open: true, // 子树是否展开hasChild: true, // 有子数据opt: 数据…

代码随想录训练第三十天|01背包理论基础、01背包、LeetCode416.分割等和子集

文章目录 01背包理论基础01背包二维dp数组01背包一维dp数组(滚动数组) 416.分割等和子集思路 01背包理论基础 背包问题的理论基础重中之重是01背包&#xff0c;一定要理解透&#xff01; leetcode上没有纯01背包的问题&#xff0c;都是01背包应用方面的题目&#xff0c;也就是…

Pytorch深度学习实践(8)多分类任务

多分类问题 多分类问题主要是利用了Softmax分类器&#xff0c;数据集采用MNIST手写数据集 设计方法&#xff1a; 把每一个类别看成一个二分类的问题&#xff0c;分别输出10个概率 但是这种方法存在一种问题&#xff1a;不存在抑制问题&#xff0c;即按照常规来讲&#xff0c…

stm32h7串口发送寄存器空中断

关于stm32串口的发送完成中断UART_IT_TC网上资料挺多的&#xff0c;但是使用发送寄存器空中断UART_IT_TXE的不太多 UART_IT_TC 和 UART_IT_TXE区别 UART_IT_TC 和 UART_IT_TXE 是两种不同的 UART 中断源&#xff0c;用于表示不同的发送状态。它们的主要区别如下&#xff1a; …

raise JSONDecodeError(“Expecting value”, s, err.value) from None

raise JSONDecodeError(“Expecting value”, s, err.value) from None 目录 raise JSONDecodeError(“Expecting value”, s, err.value) from None 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是…

数字图像处理笔记(三) ---- 傅里叶变换的基本原理

系列文章目录 数字图像处理笔记&#xff08;一&#xff09;---- 图像数字化与显示 数字图像处理笔记&#xff08;二&#xff09;---- 像素加图像统计特征 数字图像处理笔记&#xff08;三) ---- 傅里叶变换的基本原理 文章目录 系列文章目录前言一、傅里叶变换二、离散傅里叶变…

ChatTTS(文本转语音) 一键本地安装爆火语音模型

想不想让你喜欢的文章&#xff0c;有着一个动听的配音&#xff0c;没错&#xff0c;他就可以实现。 ChatTTS 是一款专为对话场景设计的文本转语音模型&#xff0c;例如 LLM 助手对话任务。它支持英语和中文两种语言。 当下爆火模型&#xff0c;在Git收获23.5k的Star&#xff…

【Pod 详解】Pod 的概念、使用方法、容器类型

《Pod 详解》系列&#xff0c;共包含以下几篇文章&#xff1a; Pod 的概念、使用方法、容器类型Pod 的生命周期&#xff08;一&#xff09;&#xff1a;Pod 阶段与状况、容器的状态与重启策略Pod 的生命周期&#xff08;二&#xff09;&#xff1a;Pod 的健康检查之容器探针Po…

C++入门基础:C++中的常用操作符练习

开头介绍下C语言先&#xff0c;C是一种广泛使用的计算机程序设计语言&#xff0c;起源于20世纪80年代&#xff0c;由比雅尼斯特劳斯特鲁普在贝尔实验室开发。它是C语言的扩展&#xff0c;增加了面向对象编程的特性。C的应用场景广泛&#xff0c;包括系统软件、游戏开发、嵌入式…

智慧医院临床检验管理系统源码(LIS),全套LIS系统源码交付,商业源码,自主版权,支持二次开发

实验室信息系统是集申请、采样、核收、计费、检验、审核、发布、质控、查询、耗材控制等检验科工作为一体的网络管理系统。它的开发和应用将加快检验科管理的统一化、网络化、标准化的进程。一体化设计&#xff0c;与其他系统无缝连接&#xff0c;全程化条码管理。支持危机值管…

DataX(二):DataX安装与入门

1. 官方地址 下载地址&#xff1a;http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz 源码地址&#xff1a;GitHub - alibaba/DataX: DataX是阿里云DataWorks数据集成的开源版本。 2. 前置要求 Linux JDK(1.8 以上&#xff0c;推荐 1.8) Python(推荐 Pyt…

一文总结代理:代理模式、代理服务器

概述 代理在计算机编程领域&#xff0c;是一个很通用的概念&#xff0c;包括&#xff1a;代理设计模式&#xff0c;代理服务器等。 代理类持有具体实现类的实例&#xff0c;将在代理类上的操作转化为实例上方法的调用。为某个对象提供一个代理&#xff0c;以控制对这个对象的…

测试分类篇

按测试对象划分 这里可以分为界面测试, 可靠性测试, 容错率测试, 文档测试, 兼容性测试, 安装卸载测试, 安全测试, 性能测试, 内存泄露测试. 界面测试 界面测试&#xff08;简称UI测试)&#xff0c;指按照界面的需求&#xff08;一般是UI设计稿&#xff09;和界面的设计规则…

DOS攻击实验

实验背景 Dos 攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段&#xff0c;残忍地耗尽被攻击对象的资源&#xff0c;目的是让目标计算机或网络无法提供正常的服务或资源访问&#xff0c;使目标系统服务系统停止响应甚至崩溃。 实验设备 一个网络 net:cloud0 一台模…

基于微信小程序+SpringBoot+Vue的儿童预防接种预约系统(带1w+文档)

基于微信小程序SpringBootVue的儿童预防接种预约系统(带1w文档) 基于微信小程序SpringBootVue的儿童预防接种预约系统(带1w文档) 开发合适的儿童预防接种预约微信小程序&#xff0c;可以方便管理人员对儿童预防接种预约微信小程序的管理&#xff0c;提高信息管理工作效率及查询…