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

OpenIPC开源FPV之Ardupilot配置

OpenIPC开源FPV之Ardupilot配置

  • 1. 源由
  • 2. 问题
  • 3. 分析
    • 3.1 MAVLINK_MSG_ID_RAW_IMU
    • 3.2 MAVLINK_MSG_ID_SYS_STATUS
    • 3.3 MAVLINK_MSG_ID_BATTERY_STATUS
    • 3.4 MAVLINK_MSG_ID_RC_CHANNELS_RAW
    • 3.5 MAVLINK_MSG_ID_GPS_RAW_INT
    • 3.6 MAVLINK_MSG_ID_VFR_HUD
    • 3.7 MAVLINK_MSG_ID_GLOBAL_POSITION_INT
    • 3.8 MAVLINK_MSG_ID_ATTITUDE
  • 4. 飞控配置
    • 4.1 配置MAVLinkV2串口
    • 4.2 确认MAVLink端口配置数量
    • 4.3 配置定时MAVLink报文
  • 5. 参考资料

1. 源由

为了将折腾2~3天OpenIPC摄像头Ardupilot配置问题整理下,给各位即将碰到,尚未碰到的朋友准备一份小礼品!

OpenIPC FPV摄像头是一个非常原型的开源数字FPV摄像头,有着非常弹性的功能扩展可能性。并且也希望大家能够轻松上手,少折腾,当然如果有机会,可以往产品化方向落地。

  • The OSD icon has not changed at all #53

2. 问题

在《OpenIPC开源IPC之固件sysupgrade升级》中,其实已经提到了为什么要升级固件,主要原因是怀疑兼容性问题。

==》其实,并不是兼容性问题,而是Ardupilot的配置问题。

3. 分析

vdec内部OSD状态变量主要来自MAVLink命令:

  • MAVLINK_MSG_ID_RAW_IMU
  • MAVLINK_MSG_ID_SYS_STATUS
  • MAVLINK_MSG_ID_BATTERY_STATUS
  • MAVLINK_MSG_ID_RC_CHANNELS_RAW
  • MAVLINK_MSG_ID_GPS_RAW_INT
  • MAVLINK_MSG_ID_VFR_HUD
  • MAVLINK_MSG_ID_GLOBAL_POSITION_INT
  • MAVLINK_MSG_ID_ATTITUDE

3.1 MAVLINK_MSG_ID_RAW_IMU

MAVLink传递结构体:

#define MAVLINK_MSG_ID_RAW_IMU 27MAVPACKED(
typedef struct __mavlink_raw_imu_t {uint64_t time_usec; /*< [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.*/int16_t xacc; /*<  X acceleration (raw)*/int16_t yacc; /*<  Y acceleration (raw)*/int16_t zacc; /*<  Z acceleration (raw)*/int16_t xgyro; /*<  Angular speed around X axis (raw)*/int16_t ygyro; /*<  Angular speed around Y axis (raw)*/int16_t zgyro; /*<  Angular speed around Z axis (raw)*/int16_t xmag; /*<  X Magnetic field (raw)*/int16_t ymag; /*<  Y Magnetic field (raw)*/int16_t zmag; /*<  Z Magnetic field (raw)*/uint8_t id; /*<  Id. Ids are numbered from 0 and map to IMUs numbered from 1 (e.g. IMU1 will have a message with id=0)*/int16_t temperature; /*< [cdegC] Temperature, 0: IMU does not provide temperature values. If the IMU is at 0C it must send 1 (0.01C).*/
}) mavlink_raw_imu_t;

OSD全局变量:

telemetry_raw_imu = imu.temperature;

3.2 MAVLINK_MSG_ID_SYS_STATUS

MAVLink传递结构体:

#define MAVLINK_MSG_ID_SYS_STATUS 1MAVPACKED(
typedef struct __mavlink_sys_status_t {uint32_t onboard_control_sensors_present; /*<  Bitmap showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present.*/uint32_t onboard_control_sensors_enabled; /*<  Bitmap showing which onboard controllers and sensors are enabled:  Value of 0: not enabled. Value of 1: enabled.*/uint32_t onboard_control_sensors_health; /*<  Bitmap showing which onboard controllers and sensors have an error (or are operational). Value of 0: error. Value of 1: healthy.*/uint16_t load; /*< [d%] Maximum usage in percent of the mainloop time. Values: [0-1000] - should always be below 1000*/uint16_t voltage_battery; /*< [mV] Battery voltage, UINT16_MAX: Voltage not sent by autopilot*/int16_t current_battery; /*< [cA] Battery current, -1: Current not sent by autopilot*/uint16_t drop_rate_comm; /*< [c%] Communication drop rate, (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV)*/uint16_t errors_comm; /*<  Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV)*/uint16_t errors_count1; /*<  Autopilot-specific errors*/uint16_t errors_count2; /*<  Autopilot-specific errors*/uint16_t errors_count3; /*<  Autopilot-specific errors*/uint16_t errors_count4; /*<  Autopilot-specific errors*/int8_t battery_remaining; /*< [%] Battery energy remaining, -1: Battery remaining energy not sent by autopilot*/uint32_t onboard_control_sensors_present_extended; /*<  Bitmap showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present.*/uint32_t onboard_control_sensors_enabled_extended; /*<  Bitmap showing which onboard controllers and sensors are enabled:  Value of 0: not enabled. Value of 1: enabled.*/uint32_t onboard_control_sensors_health_extended; /*<  Bitmap showing which onboard controllers and sensors have an error (or are operational). Value of 0: error. Value of 1: healthy.*/
}) mavlink_sys_status_t;

OSD全局变量:

telemetry_battery = bat.voltage_battery;
telemetry_current = bat.current_battery;

3.3 MAVLINK_MSG_ID_BATTERY_STATUS

MAVLink传递结构体:

#define MAVLINK_MSG_ID_BATTERY_STATUS 147MAVPACKED(
typedef struct __mavlink_battery_status_t {int32_t current_consumed; /*< [mAh] Consumed charge, -1: autopilot does not provide consumption estimate*/int32_t energy_consumed; /*< [hJ] Consumed energy, -1: autopilot does not provide energy consumption estimate*/int16_t temperature; /*< [cdegC] Temperature of the battery. INT16_MAX for unknown temperature.*/uint16_t voltages[10]; /*< [mV] Battery voltage of cells 1 to 10 (see voltages_ext for cells 11-14). Cells in this field above the valid cell count for this battery should have the UINT16_MAX value. If individual cell voltages are unknown or not measured for this battery, then the overall battery voltage should be filled in cell 0, with all others set to UINT16_MAX. If the voltage of the battery is greater than (UINT16_MAX - 1), then cell 0 should be set to (UINT16_MAX - 1), and cell 1 to the remaining voltage. This can be extended to multiple cells if the total voltage is greater than 2 * (UINT16_MAX - 1).*/int16_t current_battery; /*< [cA] Battery current, -1: autopilot does not measure the current*/uint8_t id; /*<  Battery ID*/uint8_t battery_function; /*<  Function of the battery*/uint8_t type; /*<  Type (chemistry) of the battery*/int8_t battery_remaining; /*< [%] Remaining battery energy. Values: [0-100], -1: autopilot does not estimate the remaining battery.*/int32_t time_remaining; /*< [s] Remaining battery time, 0: autopilot does not provide remaining battery time estimate*/uint8_t charge_state; /*<  State for extent of discharge, provided by autopilot for warning or external reactions*/uint16_t voltages_ext[4]; /*< [mV] Battery voltages for cells 11 to 14. Cells above the valid cell count for this battery should have a value of 0, where zero indicates not supported (note, this is different than for the voltages field and allows empty byte truncation). If the measured value is 0 then 1 should be sent instead.*/uint8_t mode; /*<  Battery mode. Default (0) is that battery mode reporting is not supported or battery is in normal-use mode.*/uint32_t fault_bitmask; /*<  Fault/health indications. These should be set when charge_state is MAV_BATTERY_CHARGE_STATE_FAILED or MAV_BATTERY_CHARGE_STATE_UNHEALTHY (if not, fault reporting is not supported).*/
}) mavlink_battery_status_t;

OSD全局变量:

telemetry_current_consumed = batt.current_consumed;

3.4 MAVLINK_MSG_ID_RC_CHANNELS_RAW

MAVLink传递结构体:

#define MAVLINK_MSG_ID_RC_CHANNELS_RAW 35typedef struct __mavlink_rc_channels_raw_t {uint32_t time_boot_ms; /*< [ms] Timestamp (time since system boot).*/uint16_t chan1_raw; /*< [us] RC channel 1 value.*/uint16_t chan2_raw; /*< [us] RC channel 2 value.*/uint16_t chan3_raw; /*< [us] RC channel 3 value.*/uint16_t chan4_raw; /*< [us] RC channel 4 value.*/uint16_t chan5_raw; /*< [us] RC channel 5 value.*/uint16_t chan6_raw; /*< [us] RC channel 6 value.*/uint16_t chan7_raw; /*< [us] RC channel 7 value.*/uint16_t chan8_raw; /*< [us] RC channel 8 value.*/uint8_t port; /*<  Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN, 1 = AUX.*/uint8_t rssi; /*<  Receive signal strength indicator in device-dependent units/scale. Values: [0-254], UINT8_MAX: invalid/unknown.*/
} mavlink_rc_channels_raw_t;

OSD全局变量:

telemetry_rssi = rc_channels_raw.rssi;
telemetry_throttle = (rc_channels_raw.chan4_raw - 1000) / 10;
telemetry_arm = rc_channels_raw.chan5_raw;
telemetry_resolution = rc_channels_raw.chan8_raw;    // used for resolution script, like a trigger

3.5 MAVLINK_MSG_ID_GPS_RAW_INT

MAVLink传递结构体:

#define MAVLINK_MSG_ID_GPS_RAW_INT 24MAVPACKED(
typedef struct __mavlink_gps_raw_int_t {uint64_t time_usec; /*< [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.*/int32_t lat; /*< [degE7] Latitude (WGS84, EGM96 ellipsoid)*/int32_t lon; /*< [degE7] Longitude (WGS84, EGM96 ellipsoid)*/int32_t alt; /*< [mm] Altitude (MSL). Positive for up. Note that virtually all GPS modules provide the MSL altitude in addition to the WGS84 altitude.*/uint16_t eph; /*<  GPS HDOP horizontal dilution of position (unitless * 100). If unknown, set to: UINT16_MAX*/uint16_t epv; /*<  GPS VDOP vertical dilution of position (unitless * 100). If unknown, set to: UINT16_MAX*/uint16_t vel; /*< [cm/s] GPS ground speed. If unknown, set to: UINT16_MAX*/uint16_t cog; /*< [cdeg] Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX*/uint8_t fix_type; /*<  GPS fix type.*/uint8_t satellites_visible; /*<  Number of satellites visible. If unknown, set to UINT8_MAX*/int32_t alt_ellipsoid; /*< [mm] Altitude (above WGS84, EGM96 ellipsoid). Positive for up.*/uint32_t h_acc; /*< [mm] Position uncertainty.*/uint32_t v_acc; /*< [mm] Altitude uncertainty.*/uint32_t vel_acc; /*< [mm] Speed uncertainty.*/uint32_t hdg_acc; /*< [degE5] Heading / track uncertainty*/uint16_t yaw; /*< [cdeg] Yaw in earth frame from north. Use 0 if this GPS does not provide yaw. Use UINT16_MAX if this GPS is configured to provide yaw and is currently unable to provide it. Use 36000 for north.*/
}) mavlink_gps_raw_int_t;

OSD全局变量:

telemetry_sats = gps.satellites_visible;
telemetry_lat = gps.lat;
telemetry_lon = gps.lon;telemetry_lat_base
telemetry_lon_base
telemetry_distance

3.6 MAVLINK_MSG_ID_VFR_HUD

MAVLink传递结构体:

#define MAVLINK_MSG_ID_VFR_HUD 74typedef struct __mavlink_vfr_hud_t {float airspeed; /*< [m/s] Vehicle speed in form appropriate for vehicle type. For standard aircraft this is typically calibrated airspeed (CAS) or indicated airspeed (IAS) - either of which can be used by a pilot to estimate stall speed.*/float groundspeed; /*< [m/s] Current ground speed.*/float alt; /*< [m] Current altitude (MSL).*/float climb; /*< [m/s] Current climb rate.*/int16_t heading; /*< [deg] Current heading in compass units (0-360, 0=north).*/uint16_t throttle; /*< [%] Current throttle setting (0 to 100).*/
} mavlink_vfr_hud_t;

OSD全局变量:

telemetry_gspeed = vfr.groundspeed * 3.6;
telemetry_vspeed = vfr.climb;
telemetry_altitude = vfr.alt;

3.7 MAVLINK_MSG_ID_GLOBAL_POSITION_INT

MAVLink传递结构体:

#define MAVLINK_MSG_ID_GLOBAL_POSITION_INT 33typedef struct __mavlink_global_position_int_t {uint32_t time_boot_ms; /*< [ms] Timestamp (time since system boot).*/int32_t lat; /*< [degE7] Latitude, expressed*/int32_t lon; /*< [degE7] Longitude, expressed*/int32_t alt; /*< [mm] Altitude (MSL). Note that virtually all GPS modules provide both WGS84 and MSL.*/int32_t relative_alt; /*< [mm] Altitude above ground*/int16_t vx; /*< [cm/s] Ground X Speed (Latitude, positive north)*/int16_t vy; /*< [cm/s] Ground Y Speed (Longitude, positive east)*/int16_t vz; /*< [cm/s] Ground Z Speed (Altitude, positive down)*/uint16_t hdg; /*< [cdeg] Vehicle heading (yaw angle), 0.0..359.99 degrees. If unknown, set to: UINT16_MAX*/
} mavlink_global_position_int_t;

OSD全局变量:

telemetry_hdg = global_position_int.hdg / 100;

3.8 MAVLINK_MSG_ID_ATTITUDE

MAVLink传递结构体:

#define MAVLINK_MSG_ID_ATTITUDE 30typedef struct __mavlink_attitude_t {uint32_t time_boot_ms; /*< [ms] Timestamp (time since system boot).*/float roll; /*< [rad] Roll angle (-pi..+pi)*/float pitch; /*< [rad] Pitch angle (-pi..+pi)*/float yaw; /*< [rad] Yaw angle (-pi..+pi)*/float rollspeed; /*< [rad/s] Roll angular speed*/float pitchspeed; /*< [rad/s] Pitch angular speed*/float yawspeed; /*< [rad/s] Yaw angular speed*/
} mavlink_attitude_t;

OSD全局变量:

telemetry_pitch = att.pitch * (180.0 / 3.141592653589793238463);
telemetry_roll = att.roll * (180.0 / 3.141592653589793238463);
telemetry_yaw = att.yaw * (180.0 / 3.141592653589793238463);

4. 飞控配置

MAVLink协议具有可配置的属性,而默认情况下,上述报文并不一定发送。其发送完全取决于当前Ardupilot的配置情况。

在Ardupilot 4.5.6版本情况下,需要进行以下步骤的配置:

4.1 配置MAVLinkV2串口

鉴于,当前硬件上使用了飞控UART8,飞控端配置如下:

注:OpenIPC FPV摄像头默认使用了115200波特率,请根据实际情况调整。

在这里插入图片描述

4.2 确认MAVLink端口配置数量

从这里可以计算出,一共2个MAVLink端口,依次计算出SRn_xxx,编号n。

  • UART0 //SR0_
  • UART8 //SR1_

在这里插入图片描述

4.3 配置定时MAVLink报文

  • MAVLINK_MSG_ID_RAW_IMU //SR1_RAW_SENS
  • MAVLINK_MSG_ID_SYS_STATUS //SR1_EXT_STAT
  • MAVLINK_MSG_ID_BATTERY_STATUS //SR1_EXTRA3
  • MAVLINK_MSG_ID_RC_CHANNELS_RAW //SR1_RC_CHAN
  • MAVLINK_MSG_ID_GPS_RAW_INT //SR1_EXT_STAT
  • MAVLINK_MSG_ID_VFR_HUD //SR1_EXTRA2
  • MAVLINK_MSG_ID_GLOBAL_POSITION_INT //SR1_POSITION
  • MAVLINK_MSG_ID_ATTITUDE //SR1_EXTRA1

在这里插入图片描述

5. 参考资料

【1】Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考
【2】OpenIPC开源FPV之工程编译
【3】OpenIPC开源FPV之工程框架
【4】OpenIPC开源FPV之重要源码包
【5】OpenIPC开源FPV之重要源码启动配置
【6】OpenIPC开源FPV之固件sysupgrade升级

相关文章:

OpenIPC开源FPV之Ardupilot配置

OpenIPC开源FPV之Ardupilot配置 1. 源由2. 问题3. 分析3.1 MAVLINK_MSG_ID_RAW_IMU3.2 MAVLINK_MSG_ID_SYS_STATUS3.3 MAVLINK_MSG_ID_BATTERY_STATUS3.4 MAVLINK_MSG_ID_RC_CHANNELS_RAW3.5 MAVLINK_MSG_ID_GPS_RAW_INT3.6 MAVLINK_MSG_ID_VFR_HUD3.7 MAVLINK_MSG_ID_GLOBAL_P…...

合并数组的两种常用方法比较

在 JavaScript 中&#xff0c;合并数组的两种常用方法是使用扩展运算符 (...) 和使用 push 方法。 使用扩展运算符 this.items [...this.items, ...data.items]; 优点&#xff1a; 易于理解&#xff1a;使用扩展运算符的语法非常直观&#xff0c;表达了“将两个数组合并成一个…...

qt 下载安装

1. 官网地址 https://www.qt.io/ 2. 下载 使用邮箱注册账号&#xff0c;登录&#xff0c;后边安装时也用的到 登录后&#xff1a; 这里需要电话号验证&#xff0c;电话号需要正确的&#xff0c;其他随便填&#xff0c;电话号中国区前需要86&#xff0c; 验证后自动下载 …...

Oracle SQL Developer 同时打开多个table的设置

Oracle SQL Developer 同时打开多个table的设置 工具 》 首选项 》数据库 》对象查看器&#xff0c;勾选 “自动冻结对象查看器窗口”...

NVIDIA发布Nemotron-70B-Instruct,超越GPT-4o和Claude 3.5的AI模型

一、Nemotron-70B-Instruct 是什么 Nemotron-70B-Instruct 是由 NVIDIA 基于 Meta 的 Llama 3.1-70B 模型开发的先进大语言模型&#xff08;LLM&#xff09;。该模型采用了新颖的神经架构搜索&#xff08;Neural Architecture Search&#xff0c;NAS&#xff09;方法和知识蒸馏…...

死锁(Deadlock)C#

在多线程编程中&#xff0c;死锁&#xff08;Deadlock&#xff09;是一种非常常见的问题&#xff0c;通常发生在两个或多个线程相互等待对方持有的锁&#xff0c;导致它们都无法继续执行。要避免死锁&#xff0c;需要了解死锁的四个必要条件以及相应的解决策略。 死锁的形成 …...

前端-基础CSS 知识总结

1.书写位置:title 标签下方添加 style 双标签,style 标签里面书写 CSS 代码。 <title>CSS 初体验</title> <style>/* 选择器 { } */p {/* CSS 属性 */color: red;} </style><p>体验 CSS</p> <link rel="stylesheet" href=…...

最新版本jdbcutils集成log4j做详细sql日志、自动释放连接...等

maven坐标 <!-- MySQL 8 --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version></dependency><!-- Druid连接池 --><dependency><groupId&…...

jQuery快速填充非form数据

jQuery快速填充非form数据 先看看jQuery根据name填充form表单数据 <!DOCTYPE html> <html><head><script src"https://code.jquery.com/jquery-3.6.0.min.js"></script> </head><body><form id"myForm">…...

语音语言模型最新综述! 关于GPT-4o背后技术的尝试

近期,大型语言模型(LLMs)在生成文本和执行各种自然语言处理任务方面展现出了卓越的能力,成为了强大的AI驱动语言理解和生成的基础模型。然而&#xff0c;仅依赖于基于文本模态的模型存在显著局限性。这促使了基于语音的生成模型的发展,使其能够更自然、直观地与人类互动。 为了…...

根据用户选择的行和列数据构造数据结构(跨行跨列)

方案一 这段代码的功能是根据用户选择的行和列数据&#xff0c;生成一个适合复制粘贴的字符串表格。代码会先按列的 id 从小到大排序&#xff0c;再根据行列的选择关系将数据按顺序填入表格&#xff0c;每行之间使用换行符分隔&#xff0c;每列之间使用制表符分隔。如果某一行…...

Spark教程5-基本结构化操作

加载csv文件 df spark.read.format("json").load("/data/flight-data/json/2015-summary.json")Schema 输出Schema df.printSchema()使用Schema读取csv文件&#xff0c;以指定数据类型 from pyspark.sql.types import StructField, StructType, Strin…...

内置数据类型、变量名、字符串、数字及其运算、数字的处理、类型转换

内置数据类型 python中的内置数据类型包括&#xff1a;整数、浮点数、布尔类型&#xff08;以大写字母开头&#xff09;、字符串 变量名 命名变量要见名知意&#xff0c;确保变量名称具有描述性和意义&#xff0c;这样可以使得代码更容易维护&#xff0c;使用_可以使得变量名…...

Win/Mac/Android/iOS怎麼刪除代理設置?

設置代理設置的主要構成 IP 地址和端口 這些是代理伺服器配置的最基本組件。代理伺服器的IP地址引導互聯網流量&#xff0c;而端口號指定伺服器上的通信通道。 為什麼要刪除代理設置&#xff1f; 刪除代理設置通常是為了解決網路問題、提高速度、恢復安全性或過渡到新的網路…...

数据结构------手撕顺序表

文章目录 线性表顺序表的使用及其内部方法ArrayList 的扩容机制顺序表的几种遍历方式顺序表的优缺点顺序表的模拟实现洗牌算法 线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;…...

UDP(用户数据报协议)端口监控

随着网络的扩展&#xff0c;确保高效的设备通信对于优化网络功能变得越来越重要。在这个过程中&#xff0c;端口发挥着重要作用&#xff0c;它是实现外部设备集成的物理连接器。通过实现数据的无缝传输和交互&#xff0c;端口为网络基础设施的顺畅运行提供了保障。端口使数据通…...

【Java小白图文教程】-05-数组和排序算法详解

精品专题&#xff1a; 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…...

OpenCV视觉分析之目标跟踪(1)计算密集光流的类DISOpticalFlow的介绍

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 这个类实现了 Dense Inverse Search (DIS) 光流算法。更多关于该算法的细节可以在文献 146中找到。该实现包含了三个预设参数集&#xff0c;以提…...

Lucas带你手撕机器学习——套索回归

好的&#xff0c;下面我将详细介绍套索回归的背景、理论基础、实现细节以及在实践中的应用&#xff0c;同时还会讨论其优缺点和一些常见问题。 套索回归&#xff08;Lasso Regression&#xff09; 1. 背景与动机 在机器学习和统计学中&#xff0c;模型的复杂性通常会影响其在…...

面试中的一个基本问题:如何在数据库中存储密码?

面试中的一个基本问题&#xff1a;如何在数据库中存储密码&#xff1f; 在安全面试中&#xff0c;“如何在数据库中存储密码&#xff1f;”是一个基础问题&#xff0c;但反映了应聘者对安全最佳实践的理解。以下是安全存储密码的最佳实践概述。 了解风险 存储密码必须安全&am…...

XML HTTP Request

XML HTTP Request 简介 XMLHttpRequest(XHR)是一个JavaScript对象,它最初由微软设计,并在IE5中引入,用于在后台与服务器交换数据。它允许网页在不重新加载整个页面的情况下更新部分内容,这使得网页能够实现动态更新,大大提高了用户体验。虽然名字中包含“XML”,但XML…...

TLS协议基本原理与Wireshark分析

01背 景 随着车联网的迅猛发展&#xff0c;汽车已经不再是传统的机械交通工具&#xff0c;而是智能化、互联化的移动终端。然而&#xff0c;随之而来的是对车辆通信安全的日益严峻的威胁。在车联网生态系统中&#xff0c;车辆通过无线网络与其他车辆、基础设施以及云端服务进行…...

当遇到 502 错误(Bad Gateway)怎么办

很多安装雷池社区版的时候&#xff0c;配置完成&#xff0c;访问的时候可能会遇到当前问题&#xff0c;如何解决呢&#xff1f; 客户端&#xff0c;浏览器排查 1.刷新页面和清除缓存 首先尝试刷新页面&#xff0c;因为有时候 502 错误可能是由于网络临时波动导致服务器无法连…...

学习记录:js算法(七十五): 加油站

文章目录 加油站思路一思路二思路三思路四思路五 加油站 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发&#xf…...

强心剂!EEMD-MPE-KPCA-LSTM、EEMD-MPE-LSTM、EEMD-PE-LSTM故障识别、诊断

强心剂&#xff01;EEMD-MPE-KPCA-LSTM、EEMD-MPE-LSTM、EEMD-PE-LSTM故障识别、诊断 目录 强心剂&#xff01;EEMD-MPE-KPCA-LSTM、EEMD-MPE-LSTM、EEMD-PE-LSTM故障识别、诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 EEMD-MPE-KPCA-LSTM(集合经验模态分解-多尺…...

yarn的安装与使用以及与npm的区别(安装过程中可能会遇到的问题)

一、yarn的安装 使用npm就可以进行安装 但是需要注意的一点是yarn的使用和node版本是有关系的必须是16.0以上的版本。 输入以下代码就可以实现yarn的安装 npm install -g yarn 再通过版本号的检查来确定&#xff0c;yarn是否安装成功 yarn -v二、遇到的问题 1、问题描述…...

大数据行业预测

大数据行业预测 编译 李升伟 和所有预测一样&#xff0c;我们必须谨慎对待这些预测&#xff0c;因为其中一些预测可能成不了事实。当然&#xff0c;真正改变游戏规则的创新往往出乎意料&#xff0c;甚至让最警惕的预言家也措手不及。所以&#xff0c;如果在来年发生了一些惊天…...

可能是NextJs(使用ssr、api route)打包成桌面端(nextron、electron、tauri)的最佳解决方式

可能是NextJs(使用ssr、api route)打包成桌面端(nextron、electron、tauri)的最佳解决方式 前言 在我使用nextron&#xff08;nextelectron&#xff09;写了一个项目后打包发现nextron等一系列桌面端框架在生产环境是不支持next的ssr也就是api route功能的这就导致我非常难受&…...

二百七十、Kettle——ClickHouse中增量导入清洗数据错误表

一、目的 比如原始数据100条&#xff0c;清洗后&#xff0c;90条正确数据在DWD层清洗表&#xff0c;10条错误数据在DWD层清洗数据错误表&#xff0c;所以清洗数据错误表任务一定要放在清洗表任务之后。 更关键的是&#xff0c;Hive中原本的SQL语句&#xff0c;放在ClickHouse…...

CentOS6升级OpenSSH9.2和OpenSSL3

文章目录 1.说明2.下载地址3.升级OpenSSL4.安装telnet 服务4.1.安装 telnet 服务4.2 关闭防火墙4.2.使用 telnet 连接 5.升级OpenSSH5.1.安装相关命令依赖5.2.备份原 ssh 配置5.3.卸载原有的 OpenSSH5.4.安装 OpenSSH5.5.修改 ssh 配置文件5.6关闭 selinux5.7.重启 OpenSSH 1.说…...

上海平台网站建设哪家有/事件营销

RabbitMQ就是一个消息代理(message broker)&#xff0c;可以用来接收和发送消息。 消息队列有一些黑话&#xff0c;我们来看下&#xff1a; Producer : 发送message的程序Queue : 可以用来存储messageConsumer : 接收message的程序注意&#xff0c;producer 和 consumer 和 que…...

做网站的公司首选智投未来/av手机在线精品

人生路上甜苦和喜忧愿与你分担所有难免曾经跌倒和等候要勇敢的抬头谁愿常躲在避风的港口宁有波涛汹涌的自由愿是你心中 灯塔的守候在迷雾中让你看透阳光总在风雨后乌云上有晴空珍惜所有的感动每一份希望在你手中阳光总在风雨后请相信有彩虹风风雨雨都接受我一直会在你的左右...

临沂建设企业网站/社群营销的十大步骤

Series 一种类似于一维数组的对象 Series 有values 和 index 属性 Series可以看成定长的有序字典 Series对象本身及其索引都有以一个name属性 DataFrame 表格型数据结构 最常用的构建方法&#xff1a;直接传入一个由等长列表或Numpy 数组组成的字典...

色一把做最好的看片网站/市场推广计划书

了解RDS的概念 这也是第一条&#xff0c;也是最重要的一条&#xff0c;在使用某项产品和服务之前&#xff0c;首先要了解该产品或服务的功能与限制&#xff0c;就像你买一个冰箱或洗衣机&#xff0c;通常也只有在阅读完说明书之后才能利用起来它们的所以功能&#xff0c;以及使…...

做网络主播网站违法吗/专业关键词优化平台

为什么80%的码农都做不了架构师&#xff1f;>>> 今天mac异常的卡&#xff0c;不小心直接把盘给抹了&#xff0c;反正有小米路由器每天备份么。 但是commandR进入恢复模式就傻眼了&#xff0c;备份的东西不知道去哪里了。想想应该是&#xff0c;MAC在恢复模式根本就…...

我想注册网站我怎么做/广州网站优化公司

1.线性布局 LinearLayout又称作线性布局&#xff0c;是一种非常常用的布局。通过android:orientation属性指定了排列方向是vertical还是horizontal。 如果LinearLayout的排列方向是horizontal&#xff0c;内部的控件就绝对不能将宽度指定为match_parent,因为这样的话&#xff0…...