【Python百宝箱】科技之翼:自动驾驶与无人机前沿技术盘点

驾云翱翔:自动驾驶与无人机技术全景解读

前言

在当今科技飞速发展的时代,自动驾驶和无人机技术正成为引领未来交通和探索领域的关键驱动力。本文将深入探讨与这两个领域密切相关的关键技术和开源工具,为读者提供全面的认识和了解。

【Python百宝箱】机器人世界的 Python 征程:控制、感知、创新一网打尽

【Python百宝箱】自动化魔法大揭秘:探索强大的自动化工具与技术

【Python百宝箱】游戏、仿真、学习:机器人开发者的全能指南

欢迎订阅专栏:Python库百宝箱:解锁编程的神奇世界

文章目录

  • 驾云翱翔:自动驾驶与无人机技术全景解读
    • 前言
      • 1. **AirSim**
        • 1.1 概述
        • 1.2 特点
        • 1.3 与模拟器的集成
        • 1.4 集成深度学习模型
        • 1.5 飞行路径规划
      • 2. **Apollo**
        • 2.1 Apollo简介
        • 2.2 主要组件
          • 2.2.1 感知模块
          • 2.2.2 规划模块
          • 2.2.3 控制模块
        • 2.3 集成语音交互
        • 2.4 实时数据监控与可视化
      • 3. **PX4**
        • 3.1 PX4自动驾驶系统
        • 3.2 架构
          • 3.2.1 固件层
          • 3.2.2 中间件层
          • 3.2.3 应用层
        • 3.3 自定义传感器驱动
        • 3.4 飞控固件的定制
        • 3.5 使用QGroundControl进行调试和配置
      • 4. **DroneKit**
        • 4.1 DroneKit概述
        • 4.2 API与通信
          • 4.2.1 Vehicle对象
          • 4.2.2 通信协议
        • 4.3 集成计算机视觉
        • 4.4 使用地图服务
      • 5. **ROS (机器人操作系统)**
        • 5.1 ROS简介
        • 5.2 ROS架构
          • 5.2.1 ROS主节点
          • 5.2.2 节点与话题
          • 5.2.3 ROS软件包
        • 5.3 集成深度学习模型
        • 5.4 ROS与无人机通信
      • 6. **TensorFlow Lite for Microcontrollers**
        • 6.1 TensorFlow Lite简介
        • 6.2 适用于微控制器的TensorFlow Lite
          • 6.2.1 模型转换和量化
          • 6.2.2 嵌入式设备上的推理
        • 6.3 集成到嵌入式系统
        • 6.4 与ROS的集成
    • 总结

1. AirSim

1.1 概述

AirSim(Air Simulation)是由微软开发的开源模拟器,旨在为自动驾驶和无人机系统提供真实感的模拟环境。它支持各种平台,包括Windows、Linux和macOS。AirSim通过其先进的物理引擎和传感器仿真,为开发人员提供了一个强大的工具,用于测试和验证他们的自动驾驶算法。

1.2 特点
  • 多平台支持: AirSim在不同操作系统上均可运行,为开发人员提供了更大的灵活性。
  • 物理引擎: AirSim使用先进的物理引擎,模拟真实世界中的飞行物体行为。
  • 传感器仿真: 提供了各种传感器模拟,如相机、激光雷达等,使算法可以在虚拟环境中进行测试。
1.3 与模拟器的集成

AirSim可以与多个常用的模拟器和开发框架集成,其中包括Unreal Engine。下面是一个简单的Python代码示例,演示如何启动AirSim并获取图像数据:

import airsim# 连接到AirSim模拟器
client = airsim.MultirotorClient()
client.confirmConnection() # 启动模拟器
client.simEnableWeather(True)
client.simEnableWeather(True)
client.enableApiControl(True)# 获取相机图像
responses = client.simGetImages([airsim.ImageRequest("0", airsim.ImageType.Scene, False, False)])
for response in responses:img1d = np.fromstring(response.image_data_uint8, dtype=np.uint8)img_rgba = img1d.reshape(response.height, response.width, 4)
1.4 集成深度学习模型

AirSim的强大之处不仅在于其模拟环境,还在于其支持深度学习模型的集成。开发者可以在AirSim中嵌入各种感知和决策模型,从而实现更智能、更自主的飞行体验。下面是一个简单的例子,演示如何在AirSim中加载深度学习模型:

import airsim
import numpy as np
import cv2
from tensorflow.keras.models import load_model# 连接到AirSim模拟器
client = airsim.MultirotorClient()
client.confirmConnection()# 加载深度学习模型
model = load_model('path/to/your/model.h5')# 启动模拟器
client.simEnableWeather(True)
client.simEnableWeather(True)
client.enableApiControl(True)# 获取相机图像
responses = client.simGetImages([airsim.ImageRequest("0", airsim.ImageType.Scene, False, False)])
for response in responses:img1d = np.fromstring(response.image_data_uint8, dtype=np.uint8)img_rgba = img1d.reshape(response.height, response.width, 4)# 对图像进行预处理img = cv2.cvtColor(img_rgba, cv2.COLOR_RGBA2RGB)img = cv2.resize(img, (224, 224))img = img / 255.0  # 归一化# 使用深度学习模型进行推理prediction = model.predict(np.expand_dims(img, axis=0))print(f"Model Prediction: {prediction}")
1.5 飞行路径规划

AirSim不仅仅是一个简单的飞行模拟器,还提供了飞行路径规划的能力。使用AirSim的路径规划功能,可以模拟和测试不同的飞行路径,从而优化自动驾驶系统。以下是一个路径规划的示例代码:

import airsim# 连接到AirSim模拟器
client = airsim.MultirotorClient()
client.confirmConnection() # 启动模拟器
client.simEnableWeather(True)
client.simEnableWeather(True)
client.enableApiControl(True)# 设置起始点和目标点
start_point = airsim.Vector3r(0, 0, -10)
end_point = airsim.Vector3r(10, 10, -10)# 使用路径规划函数规划路径
waypoints = client.planning().getWaypoints(start_point, end_point)# 执行路径
client.simRunConsumer("PathConsumer", True)
client.simSetPose(start_point, True)
client.simSetDestination(end_point)# 获取路径的信息
path_info = client.simGetPathInfo()
print(f"Path Length: {path_info['path_length']}")

通过这些扩展,AirSim不仅提供了基础的模拟环境,还使得开发者能够更灵活地测试和验证各种自动驾驶算法和无人机系统的功能。

2. Apollo

2.1 Apollo简介

Apollo是百度开发的自动驾驶平台,提供完整的自动驾驶解决方案。它包括感知、规划、控制等多个模块,为开发者提供了一套端到端的自动驾驶开发框架。

2.2 主要组件
2.2.1 感知模块

Apollo的感知模块负责从传感器数据中提取环境信息,包括障碍物检测、车道线识别等。以下是一个简单的例子,演示如何使用Apollo感知模块获取激光雷达数据:

from apollo.perception import Lidar
lidar = Lidar()
lidar_data = lidar.get_data()
obstacles = lidar_data['obstacles']
2.2.2 规划模块

Apollo的规划模块负责根据感知模块提供的环境信息生成行车轨迹。以下是一个简单的规划模块示例:

from apollo.planning import Planner
planner = Planner()
trajectory = planner.plan(obstacles)
2.2.3 控制模块

控制模块负责将规划模块生成的轨迹转化为控制命令,控制车辆行驶。以下是一个简单的控制模块示例:

from apollo.control import Controller
controller = Controller()
control_commands = controller.control(trajectory)
2.3 集成语音交互

在现代自动驾驶系统中,语音交互成为了提高用户体验和系统人机交互性的重要组成部分。Apollo提供了集成语音交互的能力,使得驾驶者能够通过语音命令实现一些基本的控制和查询功能。以下是一个简单的语音交互示例:

from apollo.voice_interaction import VoiceCommandHandler# 初始化语音交互模块
voice_handler = VoiceCommandHandler()# 启动语音监听
voice_handler.start_listening()# 等待语音指令
command = voice_handler.get_command()# 根据语音指令执行相应操作
if command == "启动自动驾驶":apollo.start_autonomous_mode()
elif command == "停止自动驾驶":apollo.stop_autonomous_mode()
else:print("无法识别的指令")# 停止语音监听
voice_handler.stop_listening()
2.4 实时数据监控与可视化

为了更好地了解自动驾驶系统的运行状态,Apollo提供了实时数据监控与可视化功能。通过这些功能,开发者可以实时观察感知、规划、控制等模块的运行情况,有助于快速定位和解决问题。以下是一个简单的数据可视化示例:

from apollo.monitoring import RealTimeMonitor# 初始化实时数据监控
monitor = RealTimeMonitor()# 添加感知模块数据监控
monitor.add_module_monitor('PerceptionModule')# 添加规划模块数据监控
monitor.add_module_monitor('PlanningModule')# 添加控制模块数据监控
monitor.add_module_monitor('ControlModule')# 启动实时数据监控
monitor.start_monitoring()# 在这里执行自动驾驶系统的相关操作...# 停止实时数据监控
monitor.stop_monitoring()

通过集成这些附加功能,Apollo不仅是一个自动驾驶的端到端解决方案,还为开发者提供了更多的工具和能力,以满足不同应用场景的需求。

3. PX4

3.1 PX4自动驾驶系统

PX4是一款开源的自动驾驶系统,支持多种飞行器。它的架构分为固件层、中间件层和应用层。

3.2 架构
3.2.1 固件层

PX4的固件层是直接安装在飞控硬件上的嵌入式软件,负责实现飞行控制算法。以下是一个简单的固件层代码示例:

#include <px4_module.h>PX4_MODULE_EXPORT int module_main(int argc, char *argv[]) {// Your flight control logic herereturn 0;
}
3.2.2 中间件层

中间件层提供了与硬件相关的驱动程序和通信接口。以下是一个中间件层的示例代码:

#include <px4_module.h>PX4_MODULE_EXPORT int module_main(int argc, char *argv[]) {// Your middleware logic herereturn 0;
}
3.2.3 应用层

应用层包括各种飞行器应用,如定位、导航等。以下是一个简单的应用层代码示例:

#include <px4_module.h>PX4_MODULE_EXPORT int module_main(int argc, char *argv[]) {  // Your application logic herereturn 0;
}
3.3 自定义传感器驱动

PX4系统的灵活性体现在其支持自定义传感器驱动。这使得开发者可以集成各种类型的传感器,以适应不同的应用场景。以下是一个简单的自定义传感器驱动代码示例:

#include <px4_module.h>PX4_MODULE_EXPORT int module_main(int argc, char *argv[]) {// 初始化自定义传感器CustomSensor custom_sensor;// 启动传感器custom_sensor.start();// 在这里执行其他操作...// 停止传感器custom_sensor.stop();return 0;
}
3.4 飞控固件的定制

PX4的飞控固件可以根据特定需求进行定制。这为开发者提供了定制化自己的飞行控制算法或者添加新的功能模块的机会。以下是一个简单的飞控固件定制示例:

#include <px4_module.h>PX4_MODULE_EXPORT int module_main(int argc, char *argv[]) {// 在这里执行飞控固件的定制化操作...return 0;
}
3.5 使用QGroundControl进行调试和配置

PX4系统与QGroundControl软件相配套,提供了一个强大的图形用户界面用于调试和配置。通过QGroundControl,开发者可以实时监控飞行器的状态、配置飞控参数以及进行飞行任务的规划。以下是一个简单的使用QGroundControl的示例:

# 在终端中运行QGroundControl
QGroundControl

通过这些功能,PX4不仅是一个强大的自动驾驶系统,还是一个灵活的开发平台,适用于各种不同类型的飞行器和应用场景。

4. DroneKit

4.1 DroneKit概述

DroneKit是用于开发无人机应用的Python库,简化了与无人机的通信和控制。

4.2 API与通信
4.2.1 Vehicle对象

DroneKit的核心是Vehicle对象,它代表着连接到无人机的实例。以下是一个简单的代码示例,演示如何创建一个Vehicle对象:

from dronekit import connectvehicle = connect('tcp:127.0.0.1:5760', wait_ready=True)
4.2.2 通信协议

DroneKit使用MAVLink(Micro Air Vehicle Link)协议进行与无人机的通信。以下是一个简单的例子,演示如何发送命令到无人机:

from dronekit import VehicleMode# 将无人机切换到GUIDED模式
vehicle.mode = VehicleMode("GUIDED")# 发送起飞命令
vehicle.simple_takeoff(10)
4.3 集成计算机视觉

在无人机应用中,计算机视觉技术的应用变得越来越重要。DroneKit允许开发者轻松集成计算机视觉算法,实现更智能的飞行和决策。以下是一个简单的计算机视觉集成示例:

from dronekit import connect
import cv2# 连接到无人机
vehicle = connect('tcp:127.0.0.1:5760', wait_ready=True)# 启动摄像头
camera = cv2.VideoCapture(0)while True:# 从摄像头获取图像ret, frame = camera.read()# 在这里执行计算机视觉算法...# 通过DroneKit发送控制命令vehicle.simple_goto(target_location)
4.4 使用地图服务

DroneKit还支持集成地图服务,方便开发者在应用中获取地理信息和进行路径规划。以下是一个简单的地图服务集成示例:

from dronekit import connect, LocationGlobal# 连接到无人机
vehicle = connect('tcp:127.0.0.1:5760', wait_ready=True)# 获取无人机当前位置
current_location = vehicle.location.global_frame# 设置目标位置
target_location = LocationGlobal(-35.363261, 149.165230, 30)# 使用DroneKit发送控制命令
vehicle.simple_goto(target_location)

通过这些功能,DroneKit不仅提供了基础的无人机通信和控制能力,还使得开发者可以轻松集成更高级的功能,实现更复杂的应用场景。

5. ROS (机器人操作系统)

5.1 ROS简介

机器人操作系统(ROS)是一个开源的机器人软件框架,提供了用于开发机器人软件的工具和库。

5.2 ROS架构
5.2.1 ROS主节点

ROS的主节点(ROS Master)负责协调ROS系统中的各个节点。以下是一个简单的ROS主节点的启动代码:

roscore
5.2.2 节点与话题

ROS中的节点是执行特定任务的进程,它们通过发布和订阅话题进行通信。以下是一个简单的ROS节点的Python代码示例:

import rospy
from std_msgs.msg import Stringdef talker():# 初始化ROS节点rospy.init_node('talker', anonymous=True)# 创建一个Publisher,发布字符串消息到chatter话题pub = rospy.Publisher('chatter', String, queue_size=10)# 设置循环频率rate = rospy.Rate(1)while not rospy.is_shutdown():# 发布消息hello_str = "Hello, ROS!"rospy.loginfo(hello_str)pub.publish(hello_str)rate.sleep()if __name__ == '__main__':try:talker()except rospy.ROSInterruptException:pass
5.2.3 ROS软件包

ROS软件包是一组组织良好的目录结构,包含用于执行特定任务的节点、消息定义等。以下是一个简单的ROS软件包结构:

my_package/
├── scripts/
│   └── my_node.py
├── src/
│   └── my_source_code.cpp
├── msg/
│   └── MyMessage.msg
├── CMakeLists.txt
└── package.xml
5.3 集成深度学习模型

ROS作为一个灵活且强大的机器人软件框架,能够与深度学习模型无缝集成,实现对机器人的智能感知和决策。以下是一个简单的ROS节点,演示如何订阅图像话题并使用深度学习模型进行物体识别:

import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
import cv2
from your_deep_learning_module import predict_objectdef image_callback(msg):# 将ROS消息转换为OpenCV图像bridge = CvBridge()cv_image = bridge.imgmsg_to_cv2(msg, desired_encoding="passthrough")# 在这里执行深度学习模型的物体识别objects = predict_object(cv_image)# 打印识别结果print(f"Detected Objects: {objects}")if __name__ == '__main__':try:# 初始化ROS节点rospy.init_node('object_detector', anonymous=True)# 订阅图像话题image_sub = rospy.Subscriber('/camera/image', Image, image_callback)# 进入ROS循环rospy.spin()except rospy.ROSInterruptException:pass
5.4 ROS与无人机通信

ROS同样支持与无人机的通信,通过相应的ROS节点,可以实现与无人机的交互和控制。以下是一个简单的ROS节点示例,演示如何发布控制命令到无人机:

import rospy
from geometry_msgs.msg import Twistdef control_drone():# 初始化ROS节点rospy.init_node('drone_controller', anonymous=True)# 创建一个Publisher,发布控制命令到无人机cmd_vel_pub = rospy.Publisher('/cmd_vel', Twist, queue_size=10)# 设置循环频率rate = rospy.Rate(1)while not rospy.is_shutdown():# 创建Twist消息cmd_vel = Twist()cmd_vel.linear.x = 1.0  # 设置线速度为1.0# 发布控制命令cmd_vel_pub.publish(cmd_vel)rate.sleep()if __name__ == '__main__':try:control_drone()except rospy.ROSInterruptException:pass

通过这样的ROS节点,可以轻松地实现机器人系统中的不同组件之间的通信和协同工作,为机器人应用提供更大的灵活性和可扩展性。

6. TensorFlow Lite for Microcontrollers

6.1 TensorFlow Lite简介

TensorFlow Lite是谷歌推出的针对移动和嵌入式设备的轻量级机器学习框架。

6.2 适用于微控制器的TensorFlow Lite
6.2.1 模型转换和量化

TensorFlow Lite支持将训练好的模型转换为适用于微控制器的格式,并进行量化以减小模型大小。以下是一个简单的模型转换和量化代码示例:

import tensorflow as tf
from tensorflow.lite.python import lite# 加载训练好的模型
model = tf.keras.models.load_model('my_model.h5')# 转换模型为TensorFlow Lite格式
converter = lite.TFLiteConverter.from_keras_model(model) 
tflite_model = converter.convert()# 量化模型
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()# 保存转换后的模型
with open('model.tflite', 'wb') as f:f.write(tflite_model)# 保存量化后的模型
with open('quantized_model.tflite', 'wb') as f:f.write(tflite_quant_model)
6.2.2 嵌入式设备上的推理

将TensorFlow Lite模型部署到嵌入式设备上进行推理。以下是一个简单的嵌入式设备推理代码示例:

import tensorflow as tf
interpreter = tf.lite.Interpreter(model_path='model.tflite')
interpreter.allocate_tensors()input_tensor_index = interpreter.get_input_details()[0]['index']
output = interpreter.tensor(interpreter.get_output_details()[0]['index'])
input_data = # 获取输入数据
interpreter.set_tensor(input_tensor_index, input_data)# 进行推理
interpreter.invoke()# 获取输出
output_data = output()
6.3 集成到嵌入式系统

TensorFlow Lite for Microcontrollers可以轻松地集成到各种嵌入式系统中,包括微控制器和嵌入式板。以下是一个简单的例子,演示如何将TensorFlow Lite模型部署到Arduino开发板上进行推理:

#include <TensorFlowLite.h>// 加载TensorFlow Lite模型
#include "model.h"  // 包含转换后的.tflite模型文件// 创建TensorFlow Lite解释器
TfLiteInterpreter* interpreter;void setup() {// 初始化ArduinoSerial.begin(9600);// 初始化TensorFlow Lite解释器interpreter = tflite::GetMicroInterpreter(model, tflite::AllOpsResolver());interpreter->AllocateTensors();
}void loop() {// 获取输入数据float input_data[INPUT_SIZE];// 填充输入数据...// 将输入数据传递给TensorFlow Lite模型TfLiteTensor* input_tensor = interpreter->input(0);memcpy(input_tensor->data.f, input_data, INPUT_SIZE * sizeof(float));// 进行推理interpreter->Invoke();// 获取输出数据TfLiteTensor* output_tensor = interpreter->output(0);float output_data = output_tensor->data.f[0];// 在这里执行对输出数据的后续处理...
}
6.4 与ROS的集成

TensorFlow Lite for Microcontrollers可以与ROS集成,实现嵌入式系统和机器人操作系统的协同工作。以下是一个简单的ROS节点示例,演示如何在嵌入式系统上运行TensorFlow Lite模型并与ROS进行通信:

import rospy
from  std_msgs.msg import Float32# 初始化ROS节点
rospy.init_node('tflite_embedded_node', anonymous=True)# 创建Publisher,发布推理结果到ROS话题
inference_pub = rospy.Publisher('/inference_result', Float32, queue_size=10)# 在这里初始化TensorFlow Lite解释器...while not rospy.is_shutdown():# 获取输入数据...# 将输入数据传递给TensorFlow Lite模型...# 进行推理...# 获取输出数据output_data = # 获取输出数据...# 发布推理结果到ROS话题inference_pub.publish(output_data)

通过这些步骤,TensorFlow Lite for Microcontrollers可以在嵌入式系统上进行模型推理,并与ROS系统进行无缝集成,实现更智能的嵌入式机器人应用。

总结

通过对AirSim的模拟器、Apollo的端到端自动驾驶平台、PX4的自动驾驶系统、DroneKit的无人机开发库、ROS的机器人操作系统以及TensorFlow Lite for Microcontrollers的轻量级机器学习框架的介绍,本文为读者提供了全面的视角。这些工具的结合,为开发者和研究者提供了强大的工具箱,助力他们在自动驾驶和无人机领域取得更多突破。

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

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

相关文章

模型量化之AWQ和GPTQ

什么是模型量化 模型量化&#xff08;Model Quantization&#xff09;是一种通过减少模型参数表示的位数来降低模型计算和存储开销的技术。一般来说&#xff0c;模型参数在深度学习模型中以浮点数&#xff08;例如32位浮点数&#xff09;的形式存储&#xff0c;而模型量化可以…

爬虫工作量由小到大的思维转变---<第二十四章 Scrapy的`统计数据`收集stats collection ---12月26日补>

前言: 前两篇是讲的数据诊断分析,还有一篇深挖解决内存泄漏的文章,目前我还没整理汇编出来;但是,想到分析问题的时候,忽然觉得爬虫的数据统计好像也挺重要;于是,心血来潮准备来插一篇这个------让大家对日常scrapy爬的数据,做到心里有数!不必自己去搅破脑汁捣腾日志,敲计算器了…

【R语言爬虫】使用rvest包爬取豆瓣读书Top 250,仅需50行代码(速度挺快)

【R语言爬虫】使用rvest包爬取豆瓣读书Top 250&#xff0c;仅需50行代码&#xff08;速度挺快&#xff09; 爬取目标 书名&#xff0c;作者&#xff0c;出版社&#xff0c;时间&#xff0c;价格 https://book.douban.com/top250?start0 发现需要爬取的内容就在<div cla…

Xshell连接不上本地虚拟机中的linux处理

0、连接不上虚拟机的原因 1、本地电脑未启用VMware网络。 2、连接协议选择错误。 3、防火墙屏蔽IP。 4、虚拟机网络连接模式不是桥接模式。 1、查看本地是否启用VMware的网络 2、连接协议选择 我们在新建会话时&#xff0c;可选的协议有FTP和SFTP两种&#xff0c;其中FTP采用21…

软件测试题常见版

1、python深浅拷贝 浅拷贝&#xff0c;指的是重新分配一块内存&#xff0c;创建一个新的对象&#xff0c;但里面的元素是原对象中各个子对象的引用。深拷贝&#xff0c;是指重新分配一块内存&#xff0c;创建一个新的对象&#xff0c;并且将原对象中的元素&#xff0c;以递归的…

高效资源分配:用CRM系统打造更优销售策略

CRM系统在销售团队中有着重要的应用&#xff0c;但很多销售人员可能对CRM系统存在一些负面的看法&#xff0c;认为它只是一种监管工具&#xff0c;操作空间单调枯燥。那么&#xff0c;如何让销售团队爱上CRM系统呢&#xff1f; 下面我们将分享几个方法&#xff0c;帮助销售经理…

Spring Boot国际化i18n配置指南

Spring Boot国际化i18n配置指南 一、配置 1、yml文件配置 spring:messages:basename: i18n/Messages,i18n/Messages_en_US,i18n/Messages_zh_CNencoding: UTF-8i18n&#xff1a;表示国际化文件的父目录 Messages&#xff1a;默认国际化文件 Messages_en_US&#xff1a;英文文…

关于MybatisPlus自动转化驼峰命名规则配置mapUnderscoreToCamelCase的个人测试和总结

关于MybatisPlus自动转化驼峰命名规则配置mapUnderscoreToCamelCase的个人测试和总结 测试一&#xff1a;没有添加 自动转化的配置&#xff0c;且domain中的属性名称和数据库的字段名称一致测试二&#xff1a;没有添加自动转化配置i&#xff0c;domain属性名userPassword和数据…

装饰模式(单一责任)

Decorator&#xff08;装饰模式&#xff1a;单一责任模式&#xff09; 链接&#xff1a;装饰模式实例代码 解析 目的 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”&#xff0c;由于继承为类型引入的静态特质&#xff0c;使得这种扩展方式缺乏灵活性&#xff…

<JavaEE> TCP 的通信机制(三) -- 滑动窗口

目录 TCP的通信机制的核心特性 四、滑动窗口 1&#xff09;什么是滑动窗口&#xff1f; 2&#xff09;滑动窗口的作用是什么&#xff1f; 3&#xff09;批量传输出现丢包如何处理&#xff1f; 1> 接收端ACK丢包 2> 发送端数据包丢包 4&#xff09;适用性 TCP的通…

【EasyExcel】使用技巧

文章目录 前言一、使excel中的公式生效二、待更新1.待更新 总结 前言 【EasyExcel】的使用技巧&#xff0c;随时间推移进行更新&#xff1a; 2023-12-26——【使excel中的公式生效】 提示&#xff1a;以下是本篇文章正文内容 一、使excel中的公式生效 ExcelWriter excelWrite…

为什么深度学习神经网络可以学习任何东西

下图你所看到的&#xff0c;是著名的曼德尔布罗特集&#xff0c;我们可以见证这个集合呈现出的复杂形态&#xff1a; 要理解神经网络如何学习曼德尔布罗特集&#xff0c;我们首先需要从最基础的数学概念讲起&#xff1a;什么是函数&#xff1f;函数本质上是一个将输入转化为输出…

机器学习---adaboost二分类、回归

1. adaboost二分类 import numpy as np import matplotlib.pyplot as pltfrom sklearn.ensemble import AdaBoostClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.datasets import make_gaussian_quantiles# 几个关键参数有n_samples&#xff08;生…

Python list列表中每一个数字乘于2的两种多功能函数代码设计

Python list列表中每一个数字乘于2或一个数字 要让Python中list列表中的每一个数字乘于2&#xff0c;可以有两种方法&#xff0c;一是使用列表推导式来完成&#xff0c;另一种是使用map()函数来完成。下面将通过实例代码来之一进行介绍。 列表推导式法 为了让列表推导式的代…

基于JSP+Servlet+Mysql的宠物管理系统(简单增删改查)

基于JSPServletMysql的宠物管理系统_简单增删改查 一、系统介绍二、功能展示1.主页2.增加3.修改4.查询5.删除 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目名称&#xff1a;基于JSPServletMysql的宠物管理系统(简单增删改查) 项目架构&#xff1a;B/S架构 开发语言…

FonePaw iOS Transfer for Mac: 让您的IOS设备数据无忧传输

在数字世界里&#xff0c;随着我们的生活与科技越来越紧密&#xff0c;数据传输成为了我们日常生活中的重要部分。尤其对于广大的苹果用户来说&#xff0c;如何方便、快速地传输数据成为了他们关注的焦点。今天&#xff0c;我要为大家介绍一款专门为Mac用户设计的IOS数据传输工…

Objectiv-C设计模式笔记

文章目录 通用知识点对象创建原型模式定义适用场景示例 工厂方法定义适用场景示例 抽象工厂定义适用场景示例 生成器模式定义适用场景示例 单例模式定义适用场景示例 接口适配适配器定义适用场景示例 桥接定义适用场景示例 外观模式定义适用场景示例 对象去耦中介者定义适用场景…

60.0/PhotoShop制作简单的网页效果

目录 60.1 网页的页面元素 60.1.1 网页的概念 60.2网站设计的步骤 60.2.1草案 ​编辑 60.2.2 丰富内容 60.2.3 利用切片划分功能区域 60.3.0 Gif动画的制作 60.1 网页的页面元素 60.1.1 网页的概念 是指通过浏览器能访问到的 Web 页面&#xff0c;是一种超文本文件&am…

SpringBoot3 核心原理

1. 事件和监听器 1. 生命周期监听 场景&#xff1a;监听应用的生命周期 1. 监听器-SpringApplicationRunListener 自定义SpringApplicationRunListener来监听事件&#xff1b; 编写SpringApplicationRunListener 实现类在 META-INF/spring.factories 中配置 org.springfram…

同城配送小程序解决方案

前言 同城配送小程序解决方案。 一、用户用车 用户打开小程序后发货地址自动定位到用户当前位置&#xff0c;用户可通过地址后的>号在地图上选择新的发货地址和卸货地址&#xff0c;小程序会自动规划出行线路&#xff0c;计算距离和运费价格。 用户仅用简单操作后就可以…