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

Ubuntu安装不同版本的opencv,并任意切换使用

参考:

opencv笔记:ubuntu安装opencv以及多版本共存 | 高深远的博客

 https://zhuanlan.zhihu.com/p/604658181

安装不同版本opencv及共存、切换并验证。_pkg-config opencv --modversion-CSDN博客

Ubuntu下多版本OpenCV共存和切换_ubuntu20如同时安装opencv4.5和4.2以及版本的切换-CSDN博客

ubuntu下安装多版本的opencv并且切换使用_ubuntu下可以存在多个版本的opencv马-CSDN博客

参考官方:

OpenCV: Installation in Linux

主要参考:

在WSL-Ubuntu20.04下,安装OpenCV-3过程以及遇到的问题和相应的解决办法 - LesPlumes - 博客园

我是wsl2-ubuntu18.04,安装ros后已有opencv3.2.0,现在要再装opencv3.3.1

一.下载和安装依赖包

1、首先更新 apt-get,在安装前最好先更新一下系统,不然有可能会安装失败。在终端输入:

sudo apt-get update
sudo apt-get upgrade

2、接着安装官方给的opencv依赖包,在终端输入:

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

下面的步骤我做了:

错误:E: 无法定位软件包 libjasper-dev
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

二.下载源文件

下载opencv-3.3.1,以及opencv_contrib-3.3.1。

opencv-3.3.1可以到官网或者github上去下载源文件(官网版本选择在下方翻页,github上通过tag选择)。

wget -q https://github.com/opencv/opencv/archive/3.3.1.zip

解压源文件并进入

unzip opencv-3.3.1.zip
cd opencv-3.3.1/

(opencv_contrib下载连接:GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules)

将opencv_contrib-3.3.1文件夹放入opencv-3.3.1文件夹内(我这里的opencv_contrib-3.3.1改名为opencv_contrib)。

三.安装

1.编译前的准备工作

①在进行cmake之前,将“Opencv3缺失文件”这个文件夹中的所有.i文件都复制到

    opencv3_contrib\modules\xfeatures2d\src\这个目录下。

    (百度网盘:https://pan.baidu.com/s/15QlHwu5ur2vc6ncyVS4e_Q  提取码:sysu)

②在进行make之前,将以下路径:

    opencv-3.3.1\opencv_contrib\modules\xfeatures2d\include\opencv2\

    的xfeatures2d文件夹xfeatures2d.hpp都copy到

    opencv-3.3.1\build\opencv2\路径下。

    (opencv_contrib下载连接:https://github.com/opencv/opencv_contrib)

sudo mv opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d  build/opencv2
sudo mv opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp  build/opencv2

③在进行make之前,下载nvida_sdk(链接:https://pan.baidu.com/s/1IykEbf7SZgf2IE0T52_bqA  提取码:sysu)  

然后把下载下来的Video_Codec_Interface_12.1.14\Video_Codec_Interface_12.1.14\Interface\目录下的三个文件,

都复制到opencv-3.3.1/modules/cudacodec/src/下;

再依次打开以下文件:

  precomp.hpp、video_decoder.hpp、cuvid_video_source.hpp、

    frame_queue.hpp、video_parser.hpp

  将 #if CUDA_VERSION >= 9000 修改为 #if CUDA_VERSION >= 9000  && CUDA_VERSION < 10000

sudo mv /home/leaf1804/Video_Codec_Interface_12.1.14/Interface/cuviddec.h /home/leaf1804/opencv-3.3.1/modules/cudacodec/srcsudo mv /home/leaf1804/Video_Codec_Interface_12.1.14/Interface/nvcuvid.h /home/leaf1804/opencv-3.3.1/modules/cudacodec/srcsudo mv /home/leaf1804/Video_Codec_Interface_12.1.14/Interface/nvEncodeAPI.h /home/leaf1804/opencv-3.3.1/modules/cudacodec/src

④在进行make之前,打开opencv-3.3.1\modules\videoio\src\ cap_ffmpeg_impl.hpp,添加以下宏定义:

  #define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)

  #define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER

  #define AVFMT_RAWPICTURE 0x0020


2.编译opencv

cd opencv-3.3.1
mkdir build && cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/home/leaf1804/software/opencv3.3.1 -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D BUILD_opencv_cudacodec=OFF -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..sudo make -j6
sudo make install

报错1: 

运行sudo make -j6的时候报错:

[ 46%] Building NVCC (Device) object modules/cudabgsegm/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_mog2.cu.o /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(203): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(203): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(203): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(203): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(203): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(203): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(203): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(203): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(203): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(203): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(205): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(205): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(205): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(205): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(205): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(205): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(205): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(205): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(205): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. /home/leaf1804/opencv-3.3.1/modules/core/include/opencv2/core/cuda/vec_math.hpp(205): error: calling a constexpr __host__ function("abs") from a __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this. 20 errors detected in the compilation of "/tmp/tmpxft_00006fcc_00000000-13_mog2.compute_70.cpp1.ii". CMake Error at cuda_compile_generated_mog2.cu.o.cmake:264 (message): Error generating file /home/leaf1804/opencv-3.3.1/build/modules/cudabgsegm/CMakeFiles/cuda_compile.dir/src/cuda/./cuda_compile_generated_mog2.cu.o modules/cudabgsegm/CMakeFiles/opencv_cudabgsegm.dir/build.make:89: recipe for target 'modules/cudabgsegm/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_mog2.cu.o' failed make[2]: *** [modules/cudabgsegm/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_mog2.cu.o] Error 1 CMakeFiles/Makefile2:7100: recipe for target 'modules/cudabgsegm/CMakeFiles/opencv_cudabgsegm.dir/all' failed make[1]: *** [modules/cudabgsegm/CMakeFiles/opencv_cudabgsegm.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... [ 46%] Building NVCC (Device) object modules/cudaarithm/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_sum.cu.o [ 46%] Building NVCC (Device) object modules/cudaarithm/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_threshold.cu.o /home/leaf1804/opencv-3.3.1/modules/cudaarithm/src/cuda/sub_mat.cu(78): warning: function "<unnamed>::SubOp2::operator()" was declared but never referenced /home/leaf1804/opencv-3.3.1/modules/cudaarithm/src/cuda/sub_mat.cu(97): warning: function "<unnamed>::SubOp4::operator()" was declared but never referenced Scanning dependencies of target opencv_cudaarithm [ 46%] Building CXX object modules/cudaarithm/CMakeFiles/opencv_cudaarithm.dir/src/arithm.cpp.o [ 46%] Building CXX object modules/cudaarithm/CMakeFiles/opencv_cudaarithm.dir/src/element_operations.cpp.o [ 47%] Building CXX object modules/cudaarithm/CMakeFiles/opencv_cudaarithm.dir/src/reductions.cpp.o [ 47%] Building CXX object modules/cudaarithm/CMakeFiles/opencv_cudaarithm.dir/src/core.cpp.o cc1plus: warning: /home/leaf1804/opencv-3.3.1/build/modules/cudaarithm/precomp.hpp.gch/opencv_cudaarithm_Release.gch: not used because OPENCV_TRAITS_ENABLE_DEPRECATED' is defined [-Winvalid-pch] cc1plus: warning: /home/leaf1804/opencv-3.3.1/build/modules/cudaarithm/precomp.hpp.gch/opencv_cudaarithm_Release.gch: not used because OPENCV_TRAITS_ENABLE_DEPRECATED' is defined [-Winvalid-pch] cc1plus: warning: /home/leaf1804/opencv-3.3.1/build/modules/cudaarithm/precomp.hpp.gch/opencv_cudaarithm_Release.gch: not used because OPENCV_TRAITS_ENABLE_DEPRECATED' is defined [-Winvalid-pch] cc1plus: warning: /home/leaf1804/opencv-3.3.1/build/modules/cudaarithm/precomp.hpp.gch/opencv_cudaarithm_Release.gch: not used because OPENCV_TRAITS_ENABLE_DEPRECATED' is defined [-Winvalid-pch] [ 47%] Linking CXX shared library ../../lib/libopencv_cudaarithm.so [ 47%] Built target opencv_cudaarithm Makefile:181: recipe for target 'all' failed make: *** [all] Error 2

然后修改cmake命令后重新从cmake那一步开始再运行一遍

成功了!!

然后运行sudo make install

成功!!


报错后,可以清理并重新配置

在尝试修复之前,可以确保清理 build 目录以避免遗留问题:

cd /home/leaf/opencv-3.3.1/build
rm -rf *

我还删除过一次opencv-3.3.1和opencv_contrib文件夹,从头开始再来过一次 


四.切换不同版本opencv

打开bashrc文件(~/.bashrc)主目录下 gedit ~/.bashrc ,并加入

# # opencv-3.3.1
# export PKG_CONFIG_PATH=~/software/opencv3.3.1/lib/pkgconfig
# export LD_LIBRARY_PATH=~/software/opencv3.3.1/lib#OpenCV 3.2.0
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib

 用那个取消注释另一个,可以使用 pkg-config --modversion opencv 进行验证。

source ~/.bashrc
pkg-config --modversion opencv# 查看详细的路径:
pkg-config --cflags --libs opencv

使用多版本opencv

在写CmakeList.txt,如果只有一个版本的opencv,我们一般直接使用

FIND_PACKAGE(OpenCV REQUIRED)

如果现在要使用的是默认安装的opencv3.2.0,则使用使用上面的指令就足够了。

如果现在要使用的是我们自己指定路径的opencv-3.3.1,则在上面指令前面加上如下指令:

set(OpenCV_DIR "/home/wh/opencv4/lib/cmake/opencv4"):引号里面的地址是OpencvConfig.cmake地址
OpenCVConfig.cmake 是 OpenCV 库的 配置文件。它是用来告诉项目如何使用 OpenCV 库的。它包含了 OpenCV 库的路径信息、版本信息和链接信息等。当项目使用 find_package(OpenCV) 命令时,CMake 就会去寻找这个文件,并读取其中的信息,最终使项目可以使用 OpenCV 库。

 比如我的就要在原来的cmakelist.txt里面加上一句

set(OpenCV_DIR "/home/leaf1804/software/opencv3.3.1/share/OpenCV"),因为我的OpencvConfig.cmake地址是这里

相关文章:

Ubuntu安装不同版本的opencv,并任意切换使用

参考&#xff1a; opencv笔记&#xff1a;ubuntu安装opencv以及多版本共存 | 高深远的博客 https://zhuanlan.zhihu.com/p/604658181 安装不同版本opencv及共存、切换并验证。_pkg-config opencv --modversion-CSDN博客 Ubuntu下多版本OpenCV共存和切换_ubuntu20如同时安装o…...

《操作系统 - 清华大学》5 -4:虚拟技术

文章目录 0. 虚拟存储的定义1. 目标2.局部性原理3. 虚拟存储的思路与规则4. 虚拟存储的基本特征5. 虚拟页式存储管理5.1 页表表项5.2 示例 0. 虚拟存储的定义 1. 目标 虚拟内存管理技术&#xff0c;简称虚存技术。那为什么要虚存技术&#xff1f;在于前面覆盖和交换技术&#…...

网安瞭望台第5期 :7zip出现严重漏洞、识别网络钓鱼诈骗的方法分享

国内外要闻 7 - Zip存在高危漏洞&#xff0c;请立刻更新 2024 年 11 月 24 日&#xff0c;do son 报道了 7 - Zip 中存在的一个高严重性漏洞 CVE - 2024 - 11477。7 - Zip 是一款广受欢迎的文件压缩软件&#xff0c;而这个漏洞可能会让攻击者在存在漏洞的系统中执行恶意代码。…...

【JS】面试八股文

类型 JavaScript 有哪些数据类型,它们的区别? 答:JavaScript 共有八种数据类型, 分别是 Undefined、 Null、 Boolean、Number、String、Object、Symbol、BigInt。 其中 Symbol是ES6中新增的,BigInt 是 ES2020 中新增的。 Symbol 代表创建后独一无二且不可变的数据类型,…...

1、正则表达式

grep匹配 grep用来过滤文本内容&#xff0c;以匹配要查询的结果。 grep root /etc/passwd&#xff1a;匹配包含root的行 -m 数字&#xff1a;匹配几次后停止 -v&#xff1a;取反-i&#xff1a;忽略字符的大小写&#xff0c;默认的&#xff0c;可以不加-n&#xff1a…...

带有悬浮窗功能的Android应用

android api29 gradle 8.9 要求 布局文件 (floating_window_layout.xml): 增加、删除、关闭按钮默认隐藏。使用“开始”按钮来控制这些按钮的显示和隐藏。 服务类 (FloatingWindowService.kt): 实现“开始”按钮的功能&#xff0c;点击时切换增加、删除、关闭按钮的可见性。处…...

uniapp开发微信小程序笔记8-uniapp使用vant框架

前言&#xff1a;其实用uni-app开发微信小程序的首选不应该是vant&#xff0c;因为vant没有专门给uni-app设置专栏&#xff0c;可以看到目前Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 但是我之前维…...

C++软件设计模式之组合模式与其他模式的协作举例

组合模式&#xff08;Composite Pattern&#xff09;、装饰器模式&#xff08;Decorator Pattern&#xff09;、享元模式&#xff08;Flyweight Pattern&#xff09;、迭代器模式&#xff08;Iterator Pattern&#xff09;和访问者模式&#xff08;Visitor Pattern&#xff09;…...

ArcGIS pro中的回归分析浅析(加更)关于广义线性回归工具的补充内容

在回归分析浅析中篇的文章中&#xff0c; 有人问了一个问题&#xff1a; 案例里的calls数据貌似离散&#xff0c;更符合泊松模型&#xff0c;为啥不采用泊松而采用高斯呢&#xff1f; 确实&#xff0c;在中篇中写道&#xff1a; 在这个例子中我们为了更好地解释变量&#x…...

mybatis-plus 实现分页查询步骤

MyBatis-Plus 是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。它提供了代码生成器、条件构造器、分页插件等多种功能&#xff0c;其中分页查询是一个常用的功能。 以下是如何在 MyBatis-Plus 中实现分页查询…...

Vue开发中常见优化手段总结

Tree Shaking or Trunk 动态引入&#xff08;Dynamic Imports&#xff09; 动态引入是指在代码执行过程中&#xff0c;根据需要动态加载模块&#xff0c;而不是在应用启动时一次性加载所有模块。这可以通过JavaScript的import()函数实现&#xff0c;它返回一个Promise对象&…...

IDEA无法创建java8、11项目创建出的pom.xml为空

主要是由于Spring3.X版本不支持JDK8&#xff0c;JDK11&#xff0c;最低支持JDK17 解决的话要不就换成JDK17以上的版本&#xff0c;但是不太现实 另外可以参考以下方式解决 修改spring初始化服务器地址为阿里云的 https://start.aliyun.com/...

TCP/IP网络编程-C++(上)

TCP/IP网络编程-C &#xff08;上&#xff09; 一、基于TCP的服务端/客户端1、server端代码2、client端代码3、socket() 函数3.1、函数原型3.2、参数解析3.2.1、协议族&#xff08;domain参数&#xff09;3.2.2、套接字类型&#xff08;type参数&#xff09;3.2.3、最终使用的协…...

在线绘制Nature Communication同款双色、四色火山图,突出感兴趣的基因

导读&#xff1a;火山图通常使用三种颜色分别表示显著上调&#xff0c;显著下调和不显著。通过为特定的数据点添加另一种颜色&#xff0c;可以创建双色或四色火山图&#xff0c;从而更直观地突出感兴趣的数据点。 《Nature Communication》文章“Molecular and functional land…...

ctfshow pwn wp

文章目录 Test_your_ncpwn-0pwn1pwn2pwn3pwn4 前置基础pwn5pwn6pwn7pwn8pwn9pwn10pwn11pwn12pwn13&#xff1a;gcc编译执行C语言代码pwn14&#xff1a;gcc编译执行C语言代码pwn15&#xff1a;nasm编译asm&#xff0c;ld链接为可执行文件pwn16&#xff1a;gcc编译汇编文件.s为可…...

【数据结构实战篇】用C语言实现你的私有队列

&#x1f3dd;️专栏&#xff1a;【数据结构实战篇】 &#x1f305;主页&#xff1a;f狐o狸x 在前面的文章中我们用C语言实现了栈的数据结构&#xff0c;本期内容我们将实现队列的数据结构 一、队列的概念 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端…...

数据结构 (11)串的基本概念

一、串的定义 1.串是由一个或者多个字符组成的有限序列&#xff0c;一般记为&#xff1a;sa1a2…an&#xff08;n≥0&#xff09;。其中&#xff0c;s是串的名称&#xff0c;用单括号括起来的字符序列是串的值&#xff1b;ai&#xff08;1≤i≤n&#xff09;可以是字母、数字或…...

快速高效求素数|质数的方法—Java(模板)

判断素数|质数方法时间效率:线性筛法>埃氏筛法>试除法 在写算法题的时候&#xff0c;各种各样跟素数有关的题目非常常见&#xff0c;本文列出了三种常见的判断素数的方法 三种求素数方法的优缺点 一、试除法 试除法的基本思想是&#xff1a;判断一个数 x 是否为素数&…...

探秘嵌入式位运算:基础与高级技巧

目录 一、位运算基础知识 1.1. 位运算符 1.1.1. 与运算&#xff08;&&#xff09; 1.1.2. 或运算&#xff08;|&#xff09; 1.1.3. 异或运算&#xff08;^&#xff09; 1.1.4. 取反运算&#xff08;~&#xff09; 1.1.5. 双重按位取反运算符&#xff08;~~&#xf…...

iOS 17.4 Not Installed

0x00 系统警告 没有安装 17.4 的模拟器&#xff0c;任何操作都无法进行&#xff01; 点击 OK 去下载&#xff0c;完成之后&#xff0c;依旧是原样&#xff01; 0x01 解决办法 1、先去官网下载对应的模拟器&#xff1a; https://developer.apple.com/download/all/?q17.4 …...

RestTemplate 使用教程

RestTemplate 是 Spring 框架提供的一种用于执行HTTP请求的同步客户端。它简化了与HTTP服务器的交互&#xff0c;并支持RESTful Web服务。 1. 添加依赖 首先&#xff0c;确保你的项目中包含了Spring Web的支持。如果你使用的是Maven&#xff0c;在pom.xml文件中添加如下依赖&…...

windows下安装wsl的ubuntu,同时配置深度学习环境

写在前面&#xff0c;本次文章只是个人学习记录&#xff0c;不具备教程的作用。个别信息是网上的&#xff0c;我会标注&#xff0c;个人是gpt生成的 安装wsl 直接看这个就行&#xff1b;可以不用备份软件源。 https://blog.csdn.net/weixin_44301630/article/details/1223900…...

【贪心算法第五弹——300.最长递增子序列】

目录 1.题目解析 题目来源 测试用例 2.算法原理 3.实战代码 代码解析 注意本题还有一种动态规划的解决方法&#xff0c;贪心的方法就是从动态规划的方法总结而来&#xff0c;各位可以移步博主的另一篇博客先了解一下&#xff1a;动态规划-子序列问题——300.长递增子序列…...

【数据分析】基于GEE解析2000-2020年武汉市FVC时空变化特征

武汉市FVC时空变化特征解析 1. 写在前面2. 2000~2020年武汉市FVC时空变化特征解析2.1. 数据获取与预处理2.2. 辐射定标和大气校正2.3. 云层和云影去除2.4. FVC计算2.5. 时空分析2.6. 代码1. 写在前面 🌍✨在应对全球气候变化和环境监测的挑战中,植被盖度(Fraction Vegetati…...

springboot实战(19)(条件分页查询、PageHelper、MYBATIS动态SQL、mapper映射配置文件、自定义类封装分页查询数据集)

引言&#xff1a; 该类博客的学习是基于b站黑马视频springbootvue视频学习&#xff01;具体围绕项目——"大事件"进行实战学习。 目录 一、功能介绍&#xff08;需求&#xff09;。 1、文章列表功能基本介绍。 2、条件分页查询功能与注意。 3、前端页面效果。&#x…...

Mongo数据库 --- Mongo Pipeline

Mongo数据库 --- Mongo Pipeline 什么是Mongo PipelineMongo Pipeline常用的几个StageExplanation with example:MongoDB $matchMongoDB $projectMongoDB $groupMongoDB $unwindMongoDB $countMongoDB $addFields Some Query Examples在C#中使用Aggreagtion Pipeline**方法一: …...

Docker部署mysql:8.0.31+dbsyncer

Docker部署mysql8.0.31 创建本地mysql配置文件 mkdir -p /opt/mysql/log mkdir -p /opt/mysql/data mkdir -p /opt/mysql/conf cd /opt/mysql/conf touch my.config [mysql] #设置mysql客户端默认字符集 default-character-setUTF8MB4 [mysqld] #设置3306端口 port33…...

银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法

银河麒麟桌面系统——桌面鼠标变成x&#xff0c;窗口无关闭按钮的解决办法 1、支持环境2、详细操作说明步骤1&#xff1a;用root账户登录电脑步骤2&#xff1a;导航到kylin-wm-chooser目录步骤3&#xff1a;编辑default.conf文件步骤4&#xff1a;重启电脑 3、结语 &#x1f49…...

【微服务】 Eureka和Ribbon

一、Eureka 服务调用出现的问题&#xff1a;在远程调用另一个服务时&#xff0c;我们采用的解决办法是发送一次http请求&#xff0c;每次环境的变更会产生新的地址&#xff0c;所以采用硬编码会出现很多麻烦&#xff0c;并且为了应对并发问题&#xff0c;采用分布式部署&#…...

C++设计模式(工厂模式)

一、介绍 1.动机 在软件系统中&#xff0c;经常面临着创建对象的工作&#xff0c;这些对象有可能是一系列相互依赖的对象&#xff1b;由于需求的变化&#xff0c;需要创建的对象的具体类型经常变化&#xff0c;同时也可能会有更多系列的对象需要被创建。 如何应对这种变化&a…...

nodejs第三方库sharp对图片的操作生成新图片、压缩、添加文字水印及图片水印等

Sharp是一个基于libvips的高性能Node.js图像处理库&#xff0c;它提供了广泛的功能&#xff0c;包括调整大小、裁剪、旋转、格式转换等。Sharp可以处理多种图像格式&#xff0c;并且能够高效地转换图像格式。 相关说明及用法看&#xff1a;https://sharp.nodejs.cn/ 安装&#…...

uniapp-vue2引用了vue-inset-loader插件编译小程序报错

报错信息 Error: Vue packages version mismatch: - vue3.2.45 (D:\qjy-myApp\admin-app\node_modules\vue\index.js) - vue-template-compiler2.7.16 (D:\qjy-myApp\admin-app\node_modules\vue-template-compiler\package.json) This may cause things to work incorrectly.…...

计算机的错误计算(一百六十七)

摘要 将计算机的错误计算&#xff08;一百六十六&#xff09;中算式的分母有理化&#xff0c;然后再在 MATLAB 讨论其计算精度。本节说明&#xff0c;MATLAB 的输出与&#xff08;一百六十六&#xff09;的输出几乎一致&#xff0c;有效数字的错误率也相同。 例1. 探讨 …...

交叉编译openSSH

升级原系统中的SSHd服务 由于原系统自带的SSH版本过低存在漏洞风险&#xff0c;所以需要升级新版本的SSH 交叉编译前准备 需要下面三个库&#xff0c;都是开源的&#xff0c;去对应的网站下载即可 openssh-9.6p1.tar.gz openssl-1.1.1w.tar.gz zlib-1.3.1.tar.gz 这里没有…...

从零开始学GeoServer源码(二)添加支持arcgis切片功能

文章目录 参考文章环境背景1、配置打包好的程序1.1、下载GeoServer的war包1.2、下载GeoWebCache1.3、拷贝jar包1.4、修改配置文件1.4.1、拷贝geowebcache-arcgiscache-context.xml1.4.2、修改geowebcache-core-context.xml1.4.3、修改geowebcache-servlet.xml 1.5、配置切片信息…...

Android OTA 更新面试题及参考答案

什么是 OTA 更新&#xff1f; OTA 更新即空中下载技术&#xff08;Over-the-Air Technology&#xff09;更新&#xff0c;是一种通过无线网络对移动设备的系统软件或应用程序进行远程更新的技术手段 。 其原理是设备通过移动网络或 Wi-Fi 连接到服务器&#xff0c;服务器检测设…...

搜维尔科技:通过Touch力反馈主手实时通讯机械臂,进行远程操作

通过Touch力反馈主手实时通讯机械臂&#xff0c;进行远程操作 搜维尔科技&#xff1a;通过Touch力反馈主手实时通讯机械臂&#xff0c;进行远程操作...

Java ArrayList 与顺序表:在编程海洋中把握数据结构的关键之锚

我的个人主页 我的专栏&#xff1a;Java-数据结构&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞❤ 收藏❤ 前言&#xff1a;在 Java编程的广袤世界里&#xff0c;数据结构犹如精巧的建筑蓝图&#xff0c;决定着程序在数据处理与存储时的效率、灵活性以…...

React中事件处理和合成事件:理解与使用

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

在Vue3项目中引入省市区联动插件

1. 打开HBuilder X 图1 2. 新建一个空项目 文件->新建->项目->uni-app 填写项目名称&#xff1a;vue3demo 选择项目存放目录&#xff1a;D:/HBuilderProjects 一定要注意vue的版本&#xff0c;当前选择的版本为vue3 图2 点击“创建”之后进入项目界面 图3 其中各文件…...

动态内存管理(c语言)

我们通常开辟空间的方式 int val 20; //大小为4个字节 char arr[10] {0} //开辟出一块连续的空间且大小为10 但是上面开辟空间方式的特点 1.空间开辟大小是固定的 2.数组在声明得时候&#xff0c;必须指定数组得长度&#xff0c;它所需要得内存在编译时分配 但是以上的方式不能…...

SLF4J日志快速上手

tags: SpringBoot 日志 快速上手 SLF4J日志快速上手 第一步&#xff1a;添加日志相关配置 logging:level:root: INFO # 设置全局日志级别为 INFO&#xff0c;只显示重要的日志信息&#xff08;略过 DEBUG 和 TRACE 级别&#xff09;# org.hibernate.SQL: DEBUG # 对于 Hiber…...

【PyTorch】(基础三)---- 图像读取和展示

图像读取和展示 pytorch本身并不提供图像的读取和展示功能&#xff0c;利用pytorch执行计算机视觉任务的时候&#xff0c;通常是利用opencv等工具先进行图像处理&#xff0c;然后将结果转化成tensor类型传递给pytorch&#xff0c;在pytorch执行之后&#xff0c;也可以将tensor…...

【纪念365天】我的创作纪念日

过去的一年 没有注意加入csdn已经有一年了。 这几天翻看小猴儿的通知才发现时间来到了一年的纪念日。稍稍思索想要将这一段时间的学习到的知识以及偶然遇到的机遇做一下总结。 上一次写纪念日是来到csdn128天的时候&#xff0c; 200天前我的学习状态是非常疯狂的。 只记得我当时…...

flink学习(7)——window

概述 窗口的长度(大小): 决定了要计算最近多长时间的数据 窗口的间隔: 决定了每隔多久计算一次 举例&#xff1a;每隔10min,计算最近24h的热搜词&#xff0c;24小时是长度&#xff0c;每隔10分钟是间隔。 窗口的分类 1、根据window前是否调用keyBy分为键控窗口和非键控窗口…...

第十六届蓝桥杯模拟赛第二期题解—Java

第十六届蓝桥杯模拟赛/校赛第二期个人题解&#xff0c;有错误的地方欢迎各位大佬指正 问题一(填空题) 【问题描述】 如果一个数 p 是个质数&#xff0c;同时又是整数 a 的约数&#xff0c;则 p 称为 a 的一个质因数。 请问&#xff0c; 2024 的最大的质因数是多少&#xff1f; …...

数据库-MySQL-Dynamic-Datasource源码解析

文章目录 前言一、简介二、整体流程三、核心解析四、总结 前言 多数据源的应用在日常项目中也是很常见的场景。 dynamic-datasource的功能&#xff0c;用起来的确很方便&#xff0c;只需要一个DS注解&#xff0c;加上一些简单的配置即可完成多数据源的切换。究竟是怎么做到的…...

uniapp+vue2+uview2.0导航栏组件二次封装

样式 代码 <template><view class"navBar"><u-navbar :title"title" :titleColor"titleColor" :bgColor"bgColor" :safeAreaInsetTop"safeAreaInsetTop":autoBack"true" leftClick"leftClic…...

【Git 工具】用 IntelliJ IDEA 玩转 Git 分支与版本管理

文章目录 一、使用 IDEA 配置和操作 Git1.1 查看 Idea 中的 Git 配置1.2 克隆 Github 项目到本地 二、版本管理2.1 提交并推送修改2.2 拉取远程仓库2.3 查看历史2.4 版本回退 三、分支管理3.1 新建分支3.2 切换分支3.2 合并分支3.4 Cherry-Pick 参考资料 一、使用 IDEA 配置和操…...

异或-java-leetcode

1486.数组异或操作 给你两个整数&#xff0c;n 和 start 。 数组 nums 定义为&#xff1a;nums[i] start 2*i&#xff08;下标从 0 开始&#xff09;且 n nums.length 。 请返回 nums 中所有元素按位异或&#xff08;XOR&#xff09;后得到的结果。 示例 1&#xff1a; 输入…...