docker中使用ros2humble的rviz2不显示问题
这里写目录标题
- docker中使用ros2humble的rviz2不显示问题
- 删除 Docker 镜像和容器
- 删除 Docker 容器
- Linux服务器下查看系统CPU个数、核心数、(make编译最大的)线程数
- 总结:
- RVIZ2 不能显示数据集
docker中使用ros2humble的rviz2不显示问题
问题描述:
root@9f20405a1baf:/# rviz2
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.Aborted (core dumped)
解答:
通过:export QT_DEBUG_PLUGINS=1查看问题的具体显示,输出问题的内容形式如下:
root@020b7a1aa6d4:/fastlio2# rviz2
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.Aborted (core dumped)
root@020b7a1aa6d4:/fastlio2# cd ..
root@020b7a1aa6d4:/# export QT_DEBUG_PLUGINS=1
root@020b7a1aa6d4:/# ros2 run rivz2 rivz2
Package 'rivz2' not found
root@020b7a1aa6d4:/# ros2 run rviz2 rivz2
No executable found
root@020b7a1aa6d4:/# ros2 run rviz2 rviz2
QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqeglfs.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqeglfs.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["eglfs"]},"archreq": 0,"className": "QEglFSIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("eglfs")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqlinuxfb.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqlinuxfb.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["linuxfb"]},"archreq": 0,"className": "QLinuxFbIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("linuxfb")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimal.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimal.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["minimal"]},"archreq": 0,"className": "QMinimalIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("minimal")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimalegl.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimalegl.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["minimalegl"]},"archreq": 0,"className": "QMinimalEglIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("minimalegl")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqoffscreen.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqoffscreen.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["offscreen"]},"archreq": 0,"className": "QOffscreenIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("offscreen")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqvnc.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqvnc.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["vnc"]},"archreq": 0,"className": "QVncIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("vnc")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["xcb"]},"archreq": 0,"className": "QXcbIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/opt/ros/humble/lib/rviz2/platforms" ...
loaded library "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so"
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.[ros2run]: Aborted
root@020b7a1aa6d4:/# echo $DISPLAY root@020b7a1aa6d4:/#
exit
这里参考非常宝藏的社区解决方法
在宿主机中运行:
docker run -it -v /tmp/.X11-unix/:/tmp/.X11-unix/:rw --env=DISPLAY --name ros2_container osrf/ros:humble-desktop-full
解释:
-v /tmp/.X11-unix/:/tmp/.X11-unix/:rw :
-v 选项允许 Docker 将一个卷挂载到容器上,这样容器就能访问宿主机文件系统上的目录
/tmp/.X11-unix/ 是宿主机上由 X 服务器用于显示的一个目录
:/tmp/.X11-unix/ 是容器中挂载卷的位置,与宿主机上的目录相同
:rw 部分允许对卷进行读写访问,这对显示内容是必要的。
--env=DISPLAY
这个参数将宿主机的 DISPLAY 环境变量传递给容器。
DISPLAY 变量以启用可视化
这里我重点排查了一下:貌似是因为之前通过
docker image pull osrf/ros:humble-desktop-full
#拉取的镜像有些东西没有拉取成功 导致RVIZ2始终运行不成功
使得我又重新构建了一个container_ros2 !

docker run -it --name ros2_container osrf/ros:humble-desktop-full
接下来报错问题:
root@cf4125aa605c:/# ros2 run rviz2 rviz2
QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqeglfs.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqeglfs.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["eglfs"]},"archreq": 0,"className": "QEglFSIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("eglfs")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqlinuxfb.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqlinuxfb.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["linuxfb"]},"archreq": 0,"className": "QLinuxFbIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("linuxfb")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimal.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimal.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["minimal"]},"archreq": 0,"className": "QMinimalIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("minimal")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimalegl.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimalegl.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["minimalegl"]},"archreq": 0,"className": "QMinimalEglIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("minimalegl")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqoffscreen.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqoffscreen.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["offscreen"]},"archreq": 0,"className": "QOffscreenIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("offscreen")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqvnc.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqvnc.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["vnc"]},"archreq": 0,"className": "QVncIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("vnc")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so, metadata=
{"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3","MetaData": {"Keys": ["xcb"]},"archreq": 0,"className": "QXcbIntegrationPlugin","debug": false,"version": 331520
}Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/opt/ros/humble/lib/rviz2/platforms" ...
loaded library "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so"
No protocol specified
qt.qpa.xcb: could not connect to display :1
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.[ros2run]: Aborted
解决方法:
大概是没有同意通过docker容器访问宿主机的X服务器:
所以采取的方法为:宝藏解决方法
#执行:
export QT_DEBUG_PLUGINS=1 // 用来输出QT报错的完整信息
再次在docker中运行rviz2的节点
ros2 run rviz2 rviz2 #查看完整报错内容
echo $DISPLAY 判断是不是利用宿主机显示rviz2出现的问题
本地终端输入:
sudo xhost 然后按下回车
输入密码
出现下图:
再在docker中:
ros2 run rviz2 rviz2
成功展示界面:

这里要注意:你rviz2启动的container需要一致!!!
例如:我这里的docker image 存在多种:
但是这里只有ros2_container成功拉取了rviz2,所以 其他的仍然存在rviz2显示问题!!!(那就重新下载一下我的SDK相关包和依赖库)
删除 Docker 镜像和容器
我是个眼里不容沙子的人,没用的docker container需要选择删除
列出所有镜像以获取镜像的 ID
docker images -a
明确删除哪个镜像:
docker rmi <your-image-id>
操作如下:
sudo systemctl start docker
sudo systemctl enable dockerdocker images -a

docker rmi d2c94e258dcb
docker iamges -a

删除 Docker 容器
#停止所有正在运行的容器
docker ps -a //列出 所有容器 停止和未停止
docker ps //列出所有正在运行的容器
删除多个容器
docker rm $(docker ps -a -q)
#用来删除所有停止的容器
一般情况下:可以将线程数设置为CPU核心数的2倍
Linux服务器下查看系统CPU个数、核心数、(make编译最大的)线程数
# 查看CPU
lscpu #查看cpu的所有信息
#######################################################
root@cf4125aa605c:/Livox-SDK2/build# lscpu
Architecture: x86_64CPU op-mode(s): 32-bit, 64-bitAddress sizes: 46 bits physical, 48 bits virtualByte Order: Little Endian
CPU(s): 8On-line CPU(s) list: 0-7
Vendor ID: GenuineIntelModel name: Intel(R) Xeon(R) W-2223 CPU @ 3.60GHzCPU family: 6Model: 85Thread(s) per core: 2Core(s) per socket: 4Socket(s): 1Stepping: 7CPU max MHz: 3900.0000CPU min MHz: 1200.0000BogoMIPS: 7200.00Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cdp_l3 invpcid_single intel_ppin ssbd mba ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm mpx rdt_a avx512f avx512dq rdseed adx smap clflushopt clwb intel_pt avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida aratpln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512_vnni md_clear flush_l1d arch_capabilities
Virtualization features: Virtualization: VT-x
Caches (sum of all): L1d: 128 KiB (4 instances)L1i: 128 KiB (4 instances)L2: 4 MiB (4 instances)L3: 8.3 MiB (1 instance)
NUMA: NUMA node(s): 1NUMA node0 CPU(s): 0-7
Vulnerabilities: Gather data sampling: Mitigation; MicrocodeItlb multihit: KVM: Mitigation: VMX disabledL1tf: Not affectedMds: Not affectedMeltdown: Not affectedMmio stale data: Mitigation; Clear CPU buffers; SMT vulnerableReg file data sampling: Not affectedRetbleed: Mitigation; Enhanced IBRSSpec rstack overflow: Not affectedSpec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccompSpectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitizationSpectre v2: Mitigation; Enhanced / Automatic IBRS; IBPB conditional; RSB filling; PBRSB-eIBRS SW sequence; BHI SW loop, KVM SW loopSrbds: Not affectedTsx async abort: Mitigation; TSX disabled
#######################################################
查看物理CPU数量
CPU物理核心就是计算机上实际配置的CPU个数:
cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l#通过sort 列出cpu信息
grep 'physical id' /proc/cpuinfo | sort -u
逻辑CPU的个数
计算机没有开启超线程时,逻辑CPU的个数就是计算机的核数
超线程开启后,逻辑CPU的个数是核数的两倍
实际上逻辑CPU的数量就是平时称呼的几核几线程中的线程数量,在linux的cpuinfo中逻辑CPU数就是processor的数量
cat /proc/cpuinfo| grep "processor"| wc -l
grep 'physical id' /proc/cpuinfo
查看核心数量
每个物理CPU含有的核心个数。
cat /proc/cpuinfo| grep "cpu cores"| uniq
grep 'core id' /proc/cpuinfo | sort -u |wc -l
总核数 = 物理CPU个数 X 每颗物理CPU的核数
grep 'core id' /proc/cpuinfo |wc -l
查看线程数
cpu支持的线程数 = cpu数目 * 每个cpu含有的核心数目* 每个核心含有的线程数(64=2162)
CPU是一个影响编译速度的重要因素,所以make -j带上一个参数,可以把项目在进行中的并行编译,现在服务器上的CPU差不多都是多核多线程的,所以完全可以用make -j64,让make最多允许64个编译进程同时执行,这样可以更有效的利用CPU资源。
cat /proc/cpuinfo |grep "processor"|wc -l
grep 'processor' /proc/cpuinfo | sort -u | wc -l
grep 'processor' /proc/cpuinfo | wc -l
博主中线程数 : 64 = 2(physical cpu) * 16(cpu kernel number) * 2(每个核心是双核)

我的是卑微的8 所以 安装库的时候 每一个需要make -j的我都选择make -j8
总结:
pcl:没有选择安装,直接将pcl的include加入到相应的bashrc中-最终选择第二种方式
vim ~/.bashrc
export CPLUS_INCLUDE_PATH="/usr/include/pcl-1.12:$CPLUS_INCLUDE_PATH" #我是pcl-1.12
export LIBRARY_PATH="/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH"
Eigen:直接大片的**sudo apt install libeigen3-dev**
sophus:
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout 1.22.10
mkdir build && cd build
cmake .. -DSOPHUS_USE_BASIC_LOGGING=ON
make
sudo make install
gtsam
#安装依赖
sudo apt-get install libboost-all-dev
sudo apt-get install cmake
sudo apt-get install libtbb-devgit clone https://github.com/borglab/gtsam.git
cd gtsam
mkdir build && cd build
cmake ..
make check (optional, runs unit tests)
make install
livox_ros_driver2
mkdir -r ws_livox/src
git clone https://github.com/Livox-SDK/livox_ros_driver2.git ws_livox/src/livox_ros_driver2
cd ws_livox/src/livox_ros_driver2
source /opt/ros/humble/setup.sh
./build.sh humble
#在后面需要修改livox_ros_driver2_DIR
vim /FastLIO2_ws/src/FASTLIO2_ROS2/fastlio2/CMakeLists.txt
set(livox_ros_driver2_DIR /ws_livox/install/livox_ros_driver2/share/livox_ros_driver2/cmake)

RVIZ2 不能显示数据集
数据连接
首先在安装完成fastlio2需要的依赖库后,
mkdir -p /FastLIO2_ws/src && cd /FastLIO2_ws/src
git clone --recursive https://github.com/liangheming/FASTLIO2_ROS2.git
cd .. #这里colcon 需要在src目录下
colcon build --symlink-install. ./install/setup.bash #激活安装的fastlio2 node
问题:rviz2不能播放db3的rosbag数据
新开启一个终端
docker exec -it rose_container /bin/bash
source /opt/ros/humble/setup.bash
source /FastLIO2_ws/install/setup.bash
ros2 bag play FastLIO_ROS2_Data
问题解决:
需要在colcon build --symlink-install build fastlio2之前
一定要在colcon build --symlink-install 之前source /ws_livox/install/setup.bash!!!
source /ws_livox/install/setup.bash ###!!!!!!cd /FastLIO2_ws/colcon build --symlink-install ## !!!!. ./install/setup.bash ##!!!!
然后在按照上面的方法开启新的终端 ros2 bag play ors_bag_dir 最终能够成功播放数据集。

结果展示!




相关文章:
docker中使用ros2humble的rviz2不显示问题
这里写目录标题 docker中使用ros2humble的rviz2不显示问题删除 Docker 镜像和容器删除 Docker 容器Linux服务器下查看系统CPU个数、核心数、(make编译最大的)线程数总结: RVIZ2 不能显示数据集 docker中使用ros2humble的rviz2不显示问题 问题描述: roo…...
【AIGC】2024-arXiv-Lumiere:视频生成的时空扩散模型
2024-arXiv-Lumiere: A Space-Time Diffusion Model for Video Generation Lumiere:视频生成的时空扩散模型摘要1. 引言2. 相关工作3. Lumiere3.1 时空 U-Net (STUnet)3.2 空间超分辨率的多重扩散 4. 应用4.1 风格化生成4.2 条件生成 5. 评估和比较5.1 定性评估5.2 …...
正则表达式:文本处理的强大工具
正则表达式是一种强大的文本处理工具,它允许我们通过定义一系列的规则来匹配、搜索、替换或分割文本。在编程、文本编辑、数据分析和许多其他领域中,正则表达式都扮演着重要的角色。本文将介绍正则表达式的基本概念、语法和一些实际应用。 正则表达式的…...
Doris单机安装
1、安装包下载 官网地址:https://doris.apache.org/zh-CN/docs/gettingStarted/quick-start/ 下载地址:https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-3.0.2-bin-x64.tar.gz 2、操作系统环境准备 #环境准备 cat /proc/cp…...
ubuntu内核更新导致显卡驱动掉的解决办法
方法1,DKMS指定内核版本 用第一个就行 1,借鉴别人博客解决方法 2,借鉴别人博客解决方法 方法2,删除多于内核的方法 系统版本:ubuntu20.24 这个方法是下下策,如果重装驱动还是不行,就删内核在…...
【Java数据结构】树】
【Java数据结构】树 一、树型结构1.1 概念1.2 特点1.3 树的类型1.4 树的遍历方式1.5 树的表示形式1.5.1 双亲表示法1.5.2 孩子表示法1.5.3 孩子双亲表示法1.5.4 孩子兄弟表示法 二、树型概念(重点) 此篇博客希望对你有所帮助(帮助你了解树&am…...
Java面试题——微服务篇
1.微服务的拆分原则/怎么样才算一个有效拆分 单一职责原则:每个微服务应该具有单一的责任。这意味着每个服务只关注于完成一项功能,并且该功能应该是独立且完整的。最小化通信:尽量减少服务之间的通信,服务间通信越少,…...
Python 中 print 函数输出多行并且选择对齐方式
代码 # 定义各类别的标签和对应数量 categories ["class0", "class1", "class2", "class3", "class4", "class5"] counts [4953, 547, 5121, 8989, 6077, 4002]# 设置统一的列宽 column_width 10# 生成对齐后…...
书生营L0G3000 Git 基础知识
任务1: 破冰活动:自我介绍 用vi就行了 按照教程来就好了 git会报错密码,输入的时候换成token就好了 https://stackoverflow.com/questions/68775869/message-support-for-password-authentication-was-removed 提交。(github上预览自己的…...
【C++初阶】模版入门看这一篇就够了
文章目录 1. 泛型编程2. 函数模板2. 1 函数模板概念2. 2 函数模板格式2. 3 函数模板的原理2. 4 函数模板的实例化2. 5 模板参数的匹配原则2. 6 补充:使用调试功能观察函数调用 3. 类模板3 .1 类模板的定义格式3. 2 类模板的实例化 1. 泛型编程 在C语言中࿰…...
Spring Bean创建流程
Spring Bean 创建流程图 大家总是会错误的理解Bean的“实例化”和“初始化”过程,总会以为初始化就是对象执行构造函数生成对象实例的过程,其实不然,在初始化阶段实际对象已经实例化出来了,初始化阶段进行的是依赖的注入和执行一…...
重学SpringBoot3-怎样优雅停机
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-怎样优雅停机 1. 什么是优雅停机?2. Spring Boot 3 优雅停机的配置3. Tomcat 和 Reactor Netty 的优雅停机机制3.1 Tomcat 优雅停机3.2 Reac…...
【数据结构】顺序表和链表
1.线性表 我们在C语言当中学过数组,其实呢,数组可以实现线性表,线性表理解上类似于数组,那么什么是线性表呢?线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使 用的数据结构,常见…...
Training language models to follow instructions with human feedback解读
前置知识方法数据集结论 前置知识 GPT的全称是Generative Pre-Trained Transformer,预训练模型自诞生之始,一个备受诟病的问题就是预训练模型的偏见性。因为预训练模型都是通过海量数据在超大参数量级的模型上训练出来的,对比完全由人工规则…...
线性回归矩阵求解和梯度求解
正规方程求解线性回归 首先正规方程如下: Θ ( X T X ) − 1 X T y \begin{equation} \Theta (X^T X)^{-1} X^T y \end{equation} Θ(XTX)−1XTy 接下来通过线性代数的角度理解这个问题。 二维空间 在二维空间上,有两个向量 a a a和 b b b&…...
M3U8不知道如何转MP4?包能学会的4种格式转换教学!
在流媒体视频大量生产的今天,M3U8作为一种基于HTTP Live Streaming(HLS)协议的播放列表格式,广泛应用于网络视频直播和点播中。它包含了媒体播放列表的信息,指向了视频文件被分割成的多个TS(Transport Stre…...
C++第4课——swap、switch-case-for循环(含视频讲解)
文章目录 1、课程代码2、课程视频 1、课程代码 #include<iostream> using namespace std; int main(){/* //第一个任务:学会swap int a,b,c;//从小到大排序输出 升序 cin>>a>>b>>c;//5 4 3if(a>b)swap(a,b);//4 5 3 swap()函数是用于交…...
大数据新视界 -- 大数据大厂之大数据重塑影视娱乐产业的未来(4 - 4)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
在Java中,需要每120分钟刷新一次的`assetoken`,并且你想使用Redis作为缓存来存储和管理这个令牌
学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…...
linux网络编程7——协程设计原理与汇编实现
文章目录 协程设计原理与汇编实现1. 协程概念2. 协程的实现2.1 setjmp2.2 ucontext2.3 汇编实现2.4 优缺点2.5 实现协程原语2.5.1 create()2.5.2 yield()2.5.3 resume()2.5.4 exit()2.5.5 switch()2.5.6 sleep() 2.6 协程调度器 3. 利用hook使用协程版本的库函数学习参考 协程设…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
