Ubuntu20.04安装Pangolin遇到的几种报错的解决方案
1.添加两个编译选项
/usr/include/OpenEXR/half.h:121:13: note: because ‘half’ has user-provided ‘half& half::operator=(half)’121 | half & operator = (half h);| ^~~~~~~~
解决方案:
在CMakeList中添加以下两句:
set_property(TARGET ${COMPONENT} PROPERTY CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-copy -Wno-error=deprecated-copy")
完整CMakeList.txt的如下:
cmake_minimum_required(VERSION 3.16)project("Pangolin")
set(PANGOLIN_VERSION_MAJOR 0)
set(PANGOLIN_VERSION_MINOR 9)
set(PANGOLIN_VERSION_PATCH 3)
set_property(TARGET ${COMPONENT} PROPERTY CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-copy -Wno-error=deprecated-copy")
set(PANGOLIN_VERSION ${PANGOLIN_VERSION_MAJOR}.${PANGOLIN_VERSION_MINOR}.${PANGOLIN_VERSION_PATCH})if(NOT CMAKE_CXX_STANDARD)set(CMAKE_CXX_STANDARD 17)set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()# Prevent in source builds
if(EXISTS "${PROJECT_BINARY_DIR}/CMakeLists.txt")message(FATAL_ERROR "Source build detected: please use a subdir. You may remove 'CMakeCache.txt' and 'CMakeFiles'.")
endif()# Make our own cmake imports accessible
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")set(CMAKE_POSITION_INDEPENDENT_CODE ON)
SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)include(SetPlatformVars)
include(PangolinFactory)option( BUILD_TOOLS "Build Tools" ON )
option( BUILD_EXAMPLES "Build Examples" ON )
option( BUILD_ASAN "Enable AddressSanitizer for Debug builds" OFF )# Default build type (Override with cmake .. -DCMAKE_BUILD_TYPE=...)
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE)message(STATUS "Setting build type to '${CMAKE_BUILD_TYPE}' as none was specified.")set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()option( BUILD_SHARED_LIBS "Build Shared Library" ON)if(_WIN_)option( MSVC_USE_STATIC_CRT "Use static C Runtime with MSVC, /MT instead of /MD" ON)# Make sure there are no erroneous C Runtime flagslist(APPEND FLAG_VARSCMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFOCMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)if(MSVC_USE_STATIC_CRT)foreach(FLAG_VAR ${FLAG_VARS})string(REGEX REPLACE "/MD" "/MT" NEW_FLAGS "${${FLAG_VAR}}")set(${FLAG_VAR} "${NEW_FLAGS}" CACHE STRING "" FORCE)endforeach()else()foreach(FLAG_VAR ${FLAG_VARS})string(REGEX REPLACE "/MT" "/MD" NEW_FLAGS "${${FLAG_VAR}}")set(${FLAG_VAR} "${NEW_FLAGS}" CACHE STRING "" FORCE)endforeach()endif()
elseif(_OSX_)set(CMAKE_MACOSX_RPATH ON)
elseif(EMSCRIPTEN)set(BUILD_SHARED_LIBS OFF)include(EmscriptenUtils)set(CMAKE_EXE_LINKER_FLAGS "-sASYNCIFY=1 -sDISABLE_EXCEPTION_CATCHING=0 -sGL_ASSERTIONS=1 -sFULL_ES3=1 --bind")
endif()# run with "ASAN_OPTIONS=fast_unwind_on_malloc=0" to print stack with more details
if(BUILD_ASAN)set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} \-fsanitize=address \-fsanitize=bool \-fsanitize=bounds \-fsanitize=enum \-fsanitize=float-cast-overflow \-fsanitize=float-divide-by-zero \-fsanitize=nonnull-attribute \-fsanitize=returns-nonnull-attribute \-fsanitize=signed-integer-overflow \-fsanitize=undefined \-fsanitize=vla-bound \-fno-sanitize=alignment \-fsanitize=leak \-fsanitize=object-size \")
endif()if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")add_compile_options(-Wall -Wextra -Werror)# error: ISO C++ prohibits anonymous structs# add_compile_options(-Wpedantic)# ignore "parentheses" warning for custom "picojson" forkadd_compile_options(-Wno-parentheses)add_compile_options(-Wno-null-pointer-arithmetic)add_compile_options(-Wno-null-pointer-subtraction)if(CMAKE_COMPILER_IS_GNUCC)add_compile_options(-Werror=maybe-uninitialized)endif()
endif()#######################################################
## Testing setupoption(BUILD_TESTS "Build Tests" OFF)
if(BUILD_TESTS)find_package(Catch2 REQUIRED)include(CTest)include(Catch)
endif()#######################################################
## Add all pangolin componentsfile(GLOB components_cmake "${CMAKE_CURRENT_LIST_DIR}/components/*/CMakeLists.txt")
set(component_list "")
foreach(component_cmake ${components_cmake})get_filename_component(component_dir ${component_cmake} DIRECTORY)get_filename_component(component_name ${component_dir} NAME)add_library(${component_name} "")list(APPEND component_list ${component_name})
endforeach()foreach(component_cmake ${components_cmake})include(${component_cmake})
endforeach()#######################################################
## Build Tree Export# Export Targets
export(TARGETS ${component_list} FILE PangolinTargets.cmake)
export(PACKAGE Pangolin)# Version information
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" @ONLY)# Build tree config
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY IMMEDIATE )#######################################################
## Install headers / targetsinclude(GNUInstallDirs)
# This relative path allows installed files to be relocatable.
set( CMAKECONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} )
file( RELATIVE_PATH REL_INCLUDE_DIR"${CMAKE_INSTALL_PREFIX}/${CMAKECONFIG_INSTALL_DIR}""${CMAKE_INSTALL_PREFIX}/include"
)install(TARGETS ${component_list}EXPORT ${PROJECT_NAME}TargetsLIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake""${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"DESTINATION ${CMAKECONFIG_INSTALL_DIR}
)
install(EXPORT ${PROJECT_NAME}Targets DESTINATION ${CMAKECONFIG_INSTALL_DIR}
)# uninstall target
if(NOT TARGET uninstall)configure_file("${CMAKE_CURRENT_LIST_DIR}/cmake/cmake_uninstall.cmake.in""${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"IMMEDIATE @ONLY)add_custom_target(uninstallCOMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif()#######################################################
## Tools / Examplesset(Pangolin_DIR ${CMAKE_CURRENT_BINARY_DIR})if(BUILD_EXAMPLES)add_subdirectory(examples)
endif()if(BUILD_TOOLS)add_subdirectory(tools)
endif()
2.修改C++版本:
/home/and/work/lidar2camera/manual_calib/Pangolin/components/pango_opengl/src/glfont.cpp:125:26: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]125 | vsnprintf(result.data(), len+1, format, args);| ~~~~~~~~~~~^~| || const char*/usr/include/x86_64-linux-gnu/bits/stdio2.h:77:1: note: initializing argument 1 of ‘int vsnprintf(char*, size_t, const char*, __va_list_tag*)’77 | __NTH (vsnprintf (char *__restrict __s, size_t __n,| ^~~~~/home/and/work/lidar2camera/manual_calib/Pangolin/components/pango_opengl/src/glfont.cpp:197:22: error: ‘class std::map<unsigned int, pangolin::GlChar>’ has no member named ‘try_emplace’; did you mean ‘emplace’?197 | chardata.try_emplace(codepoint, tex_w,tex_h, x, y, gw, gh, scale*advance, x0 -0.5f, -y0 -0.5f);| ^~~~~~~~~~~| emplace
At global scope:
解决方法:
set(CMAKE_CXX_STANDARD 11) 改为set(CMAKE_CXX_STANDARD 17)
3.设置全局变量
/home/and/work/lidar2camera/manual_calib/Pangolin/components/pango_python/src/pyinterpreter.cpp:61:27: error: ‘py::module_’ has not been declared61 | auto pypangolin = py::module_::import("pypangolin");| ^~~~~~~
/home/and/work/lidar2camera/manual_calib/Pangolin/components/pango_python/src/pyinterpreter.cpp:63:20: error: ‘py::module_’ has not been declared63 | auto sys = py::module_::import("sys");| ^~~~~~~
At global scope:
解决方法:
sudo pip3 install "pybind11[global]"
4.修改install_prerequisites.sh文件
E: 无法定位软件包 catch2
这个包是22.04的中用来测试的,20.04里没有,在install_prerequisites.sh文件中删除就好,下面提供一个删除后完整的install_prerequisites.sh文件:
#!/bin/bash# exit when any command fails
set -eMANAGERS=(dnf apt port vcpkg brew pacman)
MANAGER=""
LIST=0
VERBOSE=0
DRYRUN=0
UPDATE=0
REQUIRED_RECOMMENDED_ALL=1
SUDO=""PKGS_UPDATE=""
PKGS_REQUIRED=()
PKGS_RECOMMENDED=()
PKGS_ALL=()
PKGS_OPTIONS=()# Parse Command line
PARAMS=""
while (( "$#" )); docase "$1" in-v|--verbose)VERBOSE=1shift;;-d|--dry-run)DRYRUN=1shift;;-l|--list)LIST=1shift;;-u|--update-package-list)UPDATE=1shift;;-m|--package-manager)if [ -n "$2" ] && [ ${2:0:1} != "-" ]; thenMANAGER=($2)shift 2elseecho "Error: Argument for $1 is missing" >&2exit 1fi;;-h|--help)echo "$0 [-vh] [-m package-manager-list] [required|recommended|all]"echo " -m, --package-manager: preferred package manager order (default: \"${MANAGERS[*]}\")"echo " -v, --verbose: verbose output"echo " -d, --dry-run: print actions, but do not execute"echo " -l, --list: just list the packages to install"echo " -u, --update-package-list: update package manager package list"echo " -h, --help: this help message"echo " (required|recommended|all) the set of dependencies to select."exit 0;;-*|--*=) # unsupported flagsecho "Error: Unsupported flag $1" >&2exit 1;;*) # preserve positional argumentsPARAMS="$1"shift;;esac
done# Make lower case
PARAMS=$(echo "$PARAMS" | tr '[:upper:]' '[:lower:]' | tr -s "[:blank:]")# Work out which set of dependencies we're installing
case "$PARAMS" inrequired)REQUIRED_RECOMMENDED_ALL=0if ((VERBOSE > 0)); then echo "Selecting required dependencies only."; fi;;""|recommended)REQUIRED_RECOMMENDED_ALL=1if ((VERBOSE > 0)); then echo "Selecting required+recommended dependencies."; fi;;all)REQUIRED_RECOMMENDED_ALL=2if ((VERBOSE > 0)); then echo "Selecting all available dependencies."; fi;;*)echo "Unrecognized positional argument \"$PARAMS\". Expecting one of (required,recommended [default],all)"exit 1;;
esac# Find an available package manager from the preferred list
# if one has not already been selected manually.
if [ -z "$MANAGER" ]
thenfor m in ${MANAGERS[@]}doif [ -x "$(command -v $m)" ]; thenMANAGER="$m"breakfidone
fi# If no package manager is found, exit
if [ -z "$MANAGER" ]
thenecho "Error: No preferred package managers from list [${MANAGERS[*]}] found. Use -m to select manually." >&2exit 1
fi
if ((VERBOSE > 0)); then echo "Using \"$MANAGER\" package manager (select another using -m)"; fi# Setup prereq commands and packages.
if [[ "$MANAGER" == "apt" ]]; thenSUDO="sudo"PKGS_UPDATE="apt update"PKGS_OPTIONS+=(install --no-install-suggests --no-install-recommends)if ((DRYRUN > 0)); then PKGS_OPTIONS+=(--dry-run); SUDO=""; fiPKGS_REQUIRED+=(libgl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols libegl1-mesa-dev)PKGS_REQUIRED+=(libc++-dev libepoxy-dev libglew-dev libeigen3-dev cmake g++ ninja-build)PKGS_RECOMMENDED+=(libjpeg-dev libpng-dev)PKGS_RECOMMENDED+=(libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev)PKGS_ALL+=(libdc1394-dev libraw1394-dev libopenni-dev python3-dev)
elif [[ "$MANAGER" == "dnf" ]]; thenSUDO="sudo"PKGS_UPDATE="dnf check-update"PKGS_OPTIONS+=(install)PKGS_REQUIRED+=(wayland-devel libxkbcommon-devel g++ ninja-build)PKGS_REQUIRED+=(epoxy-devel eigen3 cmake)PKGS_RECOMMENDED+=(libjpeg-devel libpng-devel OpenEXR-devel )PKGS_ALL+=(libdc1394-devel libraw1394-devel librealsense-devel openni-devel)if ((DRYRUN > 0)); thenMANAGER="echo $MANAGER"SUDO=""fi
elif [[ "$MANAGER" == "pacman" ]]; thenSUDO="sudo"PKGS_UPDATE="" # databases and packages are updated in -Syu install optionsPKGS_OPTIONS+=(-Syu --needed)PKGS_REQUIRED+=(mesa wayland libxkbcommon wayland-protocols libc++ glew eigen cmake gcc ninja)PKGS_RECOMMENDED+=(libjpeg-turbo libpng ffmpeg)PKGS_ALL+=(libdc1394 libraw1394 openni python3)if ((DRYRUN > 0)); thenMANAGER="echo $MANAGER"SUDO=""fi
elif [[ "$MANAGER" == "port" ]]; thenSUDO="sudo"PKGS_UPDATE="port sync -q"if ((DRYRUN > 0)); then PKGS_OPTIONS+=(-y); SUDO=""; fiPKGS_OPTIONS+=(-N install -q)PKGS_REQUIRED+=(glew eigen3-devel cmake +gui ninja)PKGS_RECOMMENDED+=(libjpeg-turbo libpng openexr tiff ffmpeg-devel lz4 zstd py37-pybind11 )PKGS_ALL+=(libdc1394 openni)
elif [[ "$MANAGER" == "brew" ]]; thenPKGS_OPTIONS+=(install)if ((VERBOSE > 0)); then PKGS_OPTIONS+=(--verbose); fiPKGS_REQUIRED+=(glew eigen cmake ninja)PKGS_RECOMMENDED+=(libjpeg-turbo libpng openexr libtiff ffmpeg lz4 zstd python-setuptools)# Brew doesn't have a dryrun optionif ((DRYRUN > 0)); thenMANAGER="echo $MANAGER"fi
elif [[ "$MANAGER" == "vcpkg" ]]; then# TODO: this should be a config option somehow...PKGS_OPTIONS+=(install --triplet=x64-windows )if ((DRYRUN > 0)); then PKGS_OPTIONS+=(--dry-run); fiPKGS_REQUIRED+=(glew eigen3 vcpkg-tool-ninja)PKGS_RECOMMENDED+=(libjpeg-turbo libpng openexr tiff ffmpeg lz4 zstd python3 )PKGS_ALL+=(openni2 realsense2)
elseecho "Error: Don't know how to use \"$MANAGER\", please fix the script." >&2exit 1
fiif ((REQUIRED_RECOMMENDED_ALL < 2)); then PKGS_ALL=(); fi
if ((REQUIRED_RECOMMENDED_ALL < 1)); then PKGS_RECOMMENDED=(); fiPACKAGES=( "${PKGS_REQUIRED[*]}" "${PKGS_RECOMMENDED[*]}" "${PKGS_ALL[*]}" )if ((LIST > 0)); thenecho "${PACKAGES[*]}"exit 0
fiif ((UPDATE > 0)); thenif ((VERBOSE > 0)); then echo "Requesting \"$MANAGER\" package update."; fi$SUDO $PKGS_UPDATE
fiif ((VERBOSE > 0)); then echo "Requesting install of: ${PACKAGES[*]}"; fi# Install
$SUDO $MANAGER ${PKGS_OPTIONS[*]} ${PACKAGES[*]}
相关文章:
Ubuntu20.04安装Pangolin遇到的几种报错的解决方案
1.添加两个编译选项 /usr/include/OpenEXR/half.h:121:13: note: because ‘half’ has user-provided ‘half& half::operator(half)’121 | half & operator (half h);| ^~~~~~~~ 解决方案: 在CMakeList中添加以下两句: …...
SQL问题分析与诊断(8)——分析方法2
8.4. 方法 8.4.2. 目测评估方法 8.4.2.1. 方法说明 与Oracle等其他关系库类似,SQL Server中,作为其最核心、最重要的组件之一,CBO内置了相当复杂而高级的模型和算法,当将SQL语句及其相关统计数据等信息作为参数输入其中后,CBO会对该SQL语句各候选查询计划及其中各节点的…...
自动驾驶最新算法进展
自动驾驶技术的算法进展迅速,涵盖感知、预测、规划、端到端学习等多个领域。以下是2023年至2024年的关键进展及实例: 1. 感知与融合 BEVTransformer的进化:特斯拉的Occupancy Networks升级至支持动态场景建模,结合NeRF技术…...
深度学习方向急出成果,是先广泛调研还是边做实验边优化?
目录 有限资源下本科生快速发表深度学习顶会论文的实战策略 1.短周期内可出成果的研究路径 2.论文阅读与复现的优先顺序 3.无一对一指导时的调研与实验组织 4.成功案例:本科生顶会论文经验 5.快速上手的研究子方向推荐 大家好这里是AIWritePaper官方账号&…...
级联vs端到端、全双工、轮次检测、方言语种、商业模式…语音 AI 开发者都在关心什么?丨Voice Agent 学习笔记
编者按: A16Z在《AI Voice Agents: 2025 Update》中提到: 语音是 AI 应用公司最强大的突破之一。 它是人类沟通中最频繁(也是信息密度最高的)形式,AI 也让其首次变得“可编程”。 在13期Z沙龙,我们聚焦AI…...
阿里云镜像加速仅支持阿里云产品了
最近在拉取docker镜像时一直报超时的错误: docker pull hello-world Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exce…...
深入理解 DML 和 DQL:SQL 数据操作与查询全解析
深入理解 DML 和 DQL:SQL 数据操作与查询全解析 在数据库管理中,SQL(结构化查询语言)是操作和查询数据的核心工具。其中,DML(Data Manipulation Language,数据操作语言) 和 DQL&…...
05--MQTT物联网协议
一、MQTT的概念 MQTT 协议快速入门 2025:基础知识和实用教程 | EMQ 1.MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它…...
学习设计模式《二》——外观模式
一、基础概念 1.1、外观模式的简介 外观模式的本质是【封装交互、简化调用】; 外观模式的说明:就是通过引入一个外观类,在这个类里面定义客户端想要的简单方法,然后在这些方法里面实现;由外观类再去分别调用内部的多个…...
永磁同步电机控制算法-VF控制
一、原理介绍 V/F 控制又称为恒压频比控制,给定VF 控制曲线 电压是频率的tt例函数 即控制电压跟随频率变化而变化以保持磁通恒定不变。 二、仿真模型 在MATLAB/simulink里面验证所提算法,搭建仿真。采用和实验中一致的控制周期1e-4,电机部分计算周期为…...
qt 配置 mysql 驱动问题:Cannot load library qsqlmysql;QMYSQL driver not loaded
项目场景: 环境版本: qt :5.14.2 mysql:8.0 windows:10 提示:qt 配置 mysql 驱动: 项目场景:qt 配置 mysql 驱动 问题描述 提示:这里描述项目中遇到的问题:…...
MyBatis-Plus 实战:优雅处理 JSON 字段映射(以 JSONArray 为例)
🎯MyBatis-Plus 实战:优雅处理 JSON 字段映射(以 JSONArray 为例) 👨💻 作者:William Dawson |📅 更新日期:2025-04-21 🚀 标签:MyB…...
线性代数 | 知识点整理 Ref 2
注:本文为 “线性代数 | 知识点整理” 相关文章合辑。 因 csdn 篇幅合并超限分篇连载,本篇为 Ref 2。 略作重排,未整理去重。 图片清晰度限于引文原状。 如有内容异常,请看原文。 【数学】线性代数知识点总结 阿巴 Jun 于 2024-…...
PyTorch深度学习框架60天进阶学习计划 - 第47天:模型压缩蒸馏技术(一)
PyTorch深度学习框架60天进阶学习计划 - 第47天:模型压缩蒸馏技术(一) 第一部分:知识蒸馏的温度调节机制详解 欢迎来到我们学习计划的第47天!今天我们将深入探讨模型压缩技术中的两个重要方法:知识蒸馏和…...
华为OD机试真题——最小的调整次数/特异性双端队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录全流程解析/备考攻略/经验分享 华为OD机试真题《最小的调…...
java+postgresql+swagger-多表关联insert操作(九)
入参为json,然后根据需要对多张表进行操作: 入参格式: {"username": "车主01","usertel": "11111111111","useridtype": "2","useridcard": null,"proname&qu…...
[密码学基础]国密算法深度解析:中国密码标准的自主化之路
国密算法深度解析:中国密码标准的自主化之路 国密算法(SM系列算法)是中国自主研发的密码技术标准体系,旨在打破国际密码技术垄断,保障国家信息安全。本文将从技术原理、应用场景和生态发展三个维度,全面解…...
Flink-01学习 介绍Flink及上手小项目之词频统计
flink简介 官网 概述: 学习Flink具体包括四个关键概念:流数据的持续处理,事件时间,有状态流处理和状态快照。 Apache Flink 是一个开源的流处理框架,旨在处理批处理和实时数据处理,具有高吞吐量和低延迟的…...
自注意力机制、多头自注意力机制、填充掩码 Python实现
原理讲解 【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解 自注意力机制 import torch import torch.nn as nn# 自注意力机制 class SelfAttention(nn.Module):def __init__(self, input…...
目标检测篇---R-CNN梳理
目标检测系列文章 第一章 R-CNN 目录 目标检测系列文章📄 论文标题🧠 论文逻辑梳理1. 引言部分梳理 (动机与思想) 📝 三句话总结🔍 方法逻辑梳理🚀 关键创新点🔗 方法流程图补充边界框回归 (BBR)1. BBR 的…...
C#处理网络传输中不完整的数据流
1、背景 在读取byte数组的场景(例如:读取文件、网络传输数据)中,特别是网络传输的场景中,非常有可能接收了不完整的byte数组,在将byte数组转换时,因字符的缺失/增多,转为乱码。如下…...
HTML 初识
段落标签 <p><!-- 段落标签 -->Lorem ipsum dolor sit amet consectetur adipisicing elit. Fugiat, voluptate iure. Obcaecati explicabo sint ipsum impedit! Dolorum omnis voluptas sint unde sed, ipsa molestiae quo sapiente quos et ad reprehenderit.&l…...
MATLAB 训练CNN模型 yolo v4
学生对小车控制提出了更好的要求,能否加入深度学习模型。 考虑到小车用matlab来做,yolo v5及以上版本都需要在pytorch下训练,还是用早期版本来演示。 1 yolov4 调用 参考 trainYOLOv4ObjectDetector (mathworks.com) name "tiny-yo…...
【前端】跟着maxkb学习logicflow流程图画法
文章目录 背景1. 选定学习对象-maxkb应用逻辑编排2. 确定实现框架3. 关键逻辑:查看app-node.js4. 学习开始节点绘制流程数据形式 5. 给节点增加表单输入框遇到过的问题 背景 看看前端如何绘制流程图,界面好看点。 "logicflow/core": "1.…...
数据结构-C语言版本(八)字符串
数据结构中的字符串:概念、操作与实战 第一部分 字符串的分类及常见形式 字符串是由零个或多个字符组成的有限序列,是编程中最基础也最重要的数据结构之一。 1. C语言中的字符串表示 字符数组形式 char str1[10] {H, e, l, l, o, \0};字符串字面量…...
Arduino示例代码讲解:Project 07 - Keyboard 键盘
Arduino示例代码讲解:Project 07 - Keyboard 键盘 Project 07 - Keyboard 键盘程序功能概述功能:硬件要求:输出:代码结构全局变量`setup()` 函数`loop()` 函数读取电位器值:打印电位器值:播放音调:运行过程注意事项Project 07 - Keyboard 键盘 /*Arduino Starter Kit e…...
oracle expdp/impdp 用法详解
oracle expdp/impdp 用法详解 创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。 create directory db_bak as d:\test\dump; 查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是…...
【漏洞复现】CVE-2024-38856(ApacheOfbiz RCE)
【漏洞复现】CVE-2024-38856(ApacheOfbiz RCE) 1. 漏洞描述 Apache OFBiz 是一个开源的企业资源规划(ERP)系统。它提供了一套企业应用程序,用于集成和自动化企业的许多业务流程。 这个漏洞是由于对 CVE-2023-51467 的…...
超详细VMware虚拟机扩容磁盘容量-无坑版
1.环境: 虚拟机:VMware Workstation 17 Pro-17.5.2 Linux系统:Ubuntu 22.04 LTS 2.硬盘容量 虚拟机当前硬盘容量180G -> 扩展至 300G 3.操作步骤 (1)在虚拟机关机的状态下,虚拟机硬盘扩容之前必…...
每日一题算法——移除链表元素、反转链表
移除链表元素 力扣题目链接 我的解法: 注意细节:要删掉移除的元素。 class Solution { public:ListNode* removeElements(ListNode* head, int val) {while(head!nullptr){if(head->valval){headhead->next;}}ListNode* nowhead head;while(n…...
