ubuntu18.04运行DynaSLAM,实例分割+多视图几何+背景修复

博主电脑上之前就安装了ORB-SLAM2所需的环境,所以baseline为ORB-SLAM2的算法几乎都是直接./build.sh即可。
需要我们安装的内容就是python的环境,Pytorch或者TensorFlow,以及下载预训练模型和数据集。

一、安装ORB-SLAM2所需的库

  • C++11 or C++0x Compiler, Pangolin, OpenCV and Eigen3
  • Install boost libraries with the command sudo apt-get install libboost-all-dev.

DynaSLAM supports now both OpenCV 2.X and OpenCV 3.X.

二、安装Anaconda,创建python2.7的环境

  • Install python 2.7, keras2.0.9 and tensorflow1.14.0, and download the mask_rcnn_coco.h5 model from this GitHub repository: https://github.com/matterport/Mask_RCNN/releases.

在这里插入图片描述

三、克隆源代码

  • Clone this repo:
git clone https://github.com/BertaBescos/DynaSLAM.git
cd DynaSLAM
  • Place the mask_rcnn_coco.h5 model in the folder DynaSLAM/src/python/.

  • activate your python environment and execute this script python src/python/Check.py to evalutate its integrity.

  • sudo pip install scikit-image安装scikit-image

  • git clone https://github.com/waleedka/coco,cd coco/PythonAPIsudo make install安装pycocotools

在这里插入图片描述

运行完指令之后就把pycocotools文件夹整个复制到src/python/下。输入python src/python/Check.py验证MaskRCNN是否能正常工作。

在这里插入图片描述

总之,在编译mask-rcnn所需的库文件这里出现了很多报错,锻炼分析问题-解决问题的能力吧。

在这里插入图片描述

四、编译源代码

cd DynaSLAM
chmod +x build.sh
./build.sh

在这里插入图片描述

五、成功运行,完结散花

修改TUM3.yaml文件,ORB特征点数量为3000,否则初始化会失败。

./Examples/RGB-D/rgbd_tum ./Vocabulary/ORBvoc.txt ./Examples/RGB-D/TUM3.yaml ../TUM_DataSet/freiburg3_walking_xyz/ ../TUM_DataSet/freiburg3_walking_xyz/associations.txt ./mask ./output

运行的速度很慢,因为是在CPU上对每帧先进行实例分割再提取特征点和匹配,并且还会根据前后的关键帧修复背景。

在这里插入图片描述

六、过程记录

(tf114py27) dzh@dzh-Lenovo-Legion-Y7000:~/slambook/DynaSLAM/coco$ cd PythonAPI/
(tf114py27) dzh@dzh-Lenovo-Legion-Y7000:~/slambook/DynaSLAM/coco/PythonAPI$ sudo make install
[sudo] dzh 的密码: 
# install pycocotools to the Python site-packages
python setup.py build_ext install
running build_ext
running install
running build
running build_py
running install_lib
creating /usr/local/lib/python2.7/dist-packages/pycocotools
copying build/lib.linux-x86_64-2.7/pycocotools/_mask.so -> /usr/local/lib/python2.7/dist-packages/pycocotools
copying build/lib.linux-x86_64-2.7/pycocotools/cocoeval.py -> /usr/local/lib/python2.7/dist-packages/pycocotools
copying build/lib.linux-x86_64-2.7/pycocotools/coco.py -> /usr/local/lib/python2.7/dist-packages/pycocotools
copying build/lib.linux-x86_64-2.7/pycocotools/__init__.py -> /usr/local/lib/python2.7/dist-packages/pycocotools
copying build/lib.linux-x86_64-2.7/pycocotools/mask.py -> /usr/local/lib/python2.7/dist-packages/pycocotools
byte-compiling /usr/local/lib/python2.7/dist-packages/pycocotools/cocoeval.py to cocoeval.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/pycocotools/coco.py to coco.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/pycocotools/__init__.py to __init__.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/pycocotools/mask.py to mask.pyc
running install_egg_info
Writing /usr/local/lib/python2.7/dist-packages/pycocotools-2.0.egg-info
(tf114py27) dzh@dzh-Lenovo-Legion-Y7000:~/slambook/DynaSLAM$ ./Examples/RGB-D/rgbd_tum ./Vocabulary/ORBvoc.txt ../TUM_DataSet/TUM3.yaml ../TUM_DataSet/freiburg3_walking_xyz/ ../TUM_DataSet/freiburg3_walking_xyz/associations.txt ./mask ./output
nImages: 633
Loading Mask R-CNN. This could take a while...
Importing Mask R-CNN Settings...
Using TensorFlow backend.
2023-05-14 11:22:28.304109: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2023-05-14 11:22:28.333932: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2199995000 Hz
2023-05-14 11:22:28.334409: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55a03614dc60 executing computations on platform Host. Devices:
2023-05-14 11:22:28.334430: I tensorflow/compiler/xla/service/service.cc:175]   StreamExecutor device (0): <undefined>, <undefined>
Initializing Mask RCNN network...
./src/python
WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:488: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:63: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:3626: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:3454: The name tf.nn.max_pool is deprecated. Please use tf.nn.max_pool2d instead.WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:1818: The name tf.image.resize_nearest_neighbor is deprecated. Please use tf.compat.v1.image.resize_nearest_neighbor instead.WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:1204: calling reduce_max_v1 (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.
Instructions for updating:
keep_dims is deprecated, use keepdims instead
WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:1238: calling reduce_sum_v1 (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.
Instructions for updating:
keep_dims is deprecated, use keepdims instead
WARNING:tensorflow:From /home/dzh/slambook/DynaSLAM/src/python/model.py:315: The name tf.log is deprecated. Please use tf.math.log instead.WARNING:tensorflow:From /home/dzh/slambook/DynaSLAM/src/python/model.py:366: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.where in 2.0, which has the same broadcast rule as np.where
WARNING:tensorflow:From /home/dzh/slambook/DynaSLAM/src/python/model.py:390: calling crop_and_resize_v1 (from tensorflow.python.ops.image_ops_impl) with box_ind is deprecated and will be removed in a future version.
Instructions for updating:
box_ind is deprecated, use box_indices instead
WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:2990: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.
Instructions for updating:
Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.
WARNING:tensorflow:From /home/dzh/slambook/DynaSLAM/src/python/model.py:746: py_func (from tensorflow.python.ops.script_ops) is deprecated and will be removed in a future version.
Instructions for updating:
tf.py_func is deprecated in TF V2. Instead, there are twooptions available in V2.- tf.py_function takes a python function which manipulates tf eagertensors instead of numpy arrays. It's easy to convert a tf eager tensor toan ndarray (just call tensor.numpy()) but having access to eager tensorsmeans `tf.py_function`s can use accelerators such as GPUs as well asbeing differentiable using a gradient tape.- tf.numpy_function maintains the semantics of the deprecated tf.py_func(it is not differentiable, and manipulates numpy arrays). It drops thestateful argument making all functions stateful.WARNING:tensorflow:From /home/dzh/anaconda3/envs/tf114py27/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:158: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.2023-05-14 11:22:32.947268: W tensorflow/compiler/jit/mark_for_compilation_pass.cc:1412] (One-time warning): Not using XLA:CPU for cluster because envvar TF_XLA_FLAGS=--tf_xla_cpu_global_jit was not set.  If you want XLA:CPU, either set that envvar, or use experimental_jit_scope to enable XLA:CPU.  To confirm that XLA is active, pass --vmodule=xla_compilation_cache=1 (as a proper command-line flag, not via TF_XLA_FLAGS) or set the envvar XLA_FLAGS=--xla_hlo_profile.
Initialated Mask RCNN network...
Creating net instance...
Loading net parameters...
Mask R-CNN loaded!DynaSLAM Copyright (C) 2018 Berta Bescos, University of Zaragoza.Input sensor was set to: RGB-DLoading ORB Vocabulary. This could take a while...
Vocabulary loaded!Camera Parameters: 
- fx: 0
- fy: 0
- cx: 0
- cy: 0
- k1: 0
- k2: 0
- p1: 0
- p2: 0
- fps: 30
- color order: RGB (ignored if grayscale)ORB Extractor Parameters: 
- Number of Features: 1000
- Scale Levels: 8
- Scale Factor: 1.2
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7Depth Threshold (Close/Far Points): -nan-------
Start processing sequence ...
Images in the sequence: 633Light Tracking not working because Tracking is not initialized...
New map created with 334 points
Light Tracking not working...
virtual int g2o::SparseOptimizer::optimize(int, bool): 0 vertices to optimize, maybe forgot to call initializeOptimization()
Light Tracking not working...
Track lost soon after initialisation, reseting...
System Reseting
Reseting Local Mapper... done
Reseting Loop Closing... done
Reseting Database... done
Light Tracking not working because Tracking is not initialized...
New map created with 340 points
段错误 (核心已转储)
 #warning "Using deprecated NumPy API, disable it by " \^~~~~~~
In file included from /usr/include/python2.7/numpy/ndarraytypes.h:1809:0,from /usr/include/python2.7/numpy/ndarrayobject.h:18,from /home/dzh/slambook/DynaSLAM/include/Conversion.h:17,from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26,from /home/dzh/slambook/DynaSLAM/Examples/Stereo/stereo_kitti.cc:19:
/usr/include/python2.7/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]#warning "Using deprecated NumPy API, disable it by " \^~~~~~~
In file included from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26:0,from /home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_kitti.cc:20:
/home/dzh/slambook/DynaSLAM/include/Conversion.h:27:12: warning:int DynaSLAM::failmsg(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static int failmsg(const char *fmt, ...);^~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:45:18: warning: ‘PyObject* DynaSLAM::failmsgp(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static PyObject* failmsgp(const char *fmt, ...);^~~~~~~~
In file included from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26:0,from /home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_tum.cc:19:
/home/dzh/slambook/DynaSLAM/include/Conversion.h:27:12: warning:int DynaSLAM::failmsg(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static int failmsg(const char *fmt, ...);^~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:45:18: warning: ‘PyObject* DynaSLAM::failmsgp(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static PyObject* failmsgp(const char *fmt, ...);^~~~~~~~
In file included from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26:0,from /home/dzh/slambook/DynaSLAM/Examples/RGB-D/rgbd_tum.cc:19:
/home/dzh/slambook/DynaSLAM/include/Conversion.h:27:12: warning:int DynaSLAM::failmsg(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static int failmsg(const char *fmt, ...);^~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:45:18: warning: ‘PyObject* DynaSLAM::failmsgp(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static PyObject* failmsgp(const char *fmt, ...);^~~~~~~~
In file included from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26:0,from /home/dzh/slambook/DynaSLAM/Examples/Stereo/stereo_kitti.cc:19:
/home/dzh/slambook/DynaSLAM/include/Conversion.h:27:12: warning:int DynaSLAM::failmsg(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static int failmsg(const char *fmt, ...);^~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:45:18: warning: ‘PyObject* DynaSLAM::failmsgp(const char*, ...)’ declared ‘static’ but never defined [-Wunused-function]static PyObject* failmsgp(const char *fmt, ...);^~~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:25:18: warning: ‘DynaSLAM::opencv_error’ defined but not used [-Wunused-variable]static PyObject* opencv_error = 0;^~~~~~~~~~~~
In file included from /usr/include/python2.7/numpy/ndarrayobject.h:27:0,from /home/dzh/slambook/DynaSLAM/include/Conversion.h:17,from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26,from /home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_kitti.cc:20:
/usr/include/python2.7/numpy/__multiarray_api.h:1453:1: warning:int _import_array()’ defined but not used [-Wunused-function]_import_array(void)^~~~~~~~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:25:18: warning: ‘DynaSLAM::opencv_error’ defined but not used [-Wunused-variable]static PyObject* opencv_error = 0;^~~~~~~~~~~~
In file included from /usr/include/python2.7/numpy/ndarrayobject.h:27:0,from /home/dzh/slambook/DynaSLAM/include/Conversion.h:17,from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26,from /home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_tum.cc:19:
/usr/include/python2.7/numpy/__multiarray_api.h:1453:1: warning:int _import_array()’ defined but not used [-Wunused-function]_import_array(void)^~~~~~~~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:25:18: warning: ‘DynaSLAM::opencv_error’ defined but not used [-Wunused-variable]static PyObject* opencv_error = 0;^~~~~~~~~~~~
In file included from /usr/include/python2.7/numpy/ndarrayobject.h:27:0,from /home/dzh/slambook/DynaSLAM/include/Conversion.h:17,from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26,from /home/dzh/slambook/DynaSLAM/Examples/RGB-D/rgbd_tum.cc:19:
/usr/include/python2.7/numpy/__multiarray_api.h:1453:1: warning:int _import_array()’ defined but not used [-Wunused-function]_import_array(void)^~~~~~~~~~~~~
/home/dzh/slambook/DynaSLAM/include/Conversion.h:25:18: warning: ‘DynaSLAM::opencv_error’ defined but not used [-Wunused-variable]static PyObject* opencv_error = 0;^~~~~~~~~~~~
In file included from /usr/include/python2.7/numpy/ndarrayobject.h:27:0,from /home/dzh/slambook/DynaSLAM/include/Conversion.h:17,from /home/dzh/slambook/DynaSLAM/include/MaskNet.h:26,from /home/dzh/slambook/DynaSLAM/Examples/Stereo/stereo_kitti.cc:19:
/usr/include/python2.7/numpy/__multiarray_api.h:1453:1: warning:int _import_array()’ defined but not used [-Wunused-function]_import_array(void)^~~~~~~~~~~~~
/home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_tum.cc: In function ‘int main(int, char**):
/home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_tum.cc:96:48: warning: ‘MaskNet’ may be used uninitialized in this function [-Wmaybe-uninitialized]maskRCNN = MaskNet->GetSegmentation(im,string(argv[4]),vstrImageFilenames[ni].replace(0,4,"")); //0 background y 1 foreground~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_kitti.cc: In function ‘int main(int, char**):
/home/dzh/slambook/DynaSLAM/Examples/Monocular/mono_kitti.cc:97:48: warning: ‘MaskNet’ may be used uninitialized in this function [-Wmaybe-uninitialized]maskRCNN = MaskNet->GetSegmentation(im,string(argv[4]),vstrImageFilenames[ni].replace(~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~vstrImageFilenames[ni].begin(), vstrImageFilenames[ni].end()-10,""));~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dzh/slambook/DynaSLAM/Examples/RGB-D/rgbd_tum.cc: In function ‘int main(int, char**):
/home/dzh/slambook/DynaSLAM/Examples/RGB-D/rgbd_tum.cc:125:48: warning: ‘MaskNet’ may be used uninitialized in this function [-Wmaybe-uninitialized]maskRCNN = MaskNet->GetSegmentation(imRGB,string(argv[5]),vstrImageFilenamesRGB[ni].replace(0,4,""));~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ 90%] Linking CXX executable ../Examples/Monocular/mono_kitti
[ 93%] Linking CXX executable ../Examples/Monocular/mono_tum
[ 96%] Linking CXX executable ../Examples/RGB-D/rgbd_tum
/home/dzh/slambook/DynaSLAM/Examples/Stereo/stereo_kitti.cc: In function ‘int main(int, char**):
/home/dzh/slambook/DynaSLAM/Examples/Stereo/stereo_kitti.cc:101:53: warning: ‘MaskNet’ may be used uninitialized in this function [-Wmaybe-uninitialized]maskRightRCNN = MaskNet->GetSegmentation(imRight, string(argv[4])+"/imRight",~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~vstrImageRight[ni].replace(vstrImageRight[ni].begin(), vstrImageRight[ni].end() - 10,""));~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[100%] Linking CXX executable ../Examples/Stereo/stereo_kitti
[100%] Built target mono_kitti
[100%] Built target mono_tum
[100%] Built target rgbd_tum
[100%] Built target stereo_kitti
Initialated Mask RCNN network...
Creating net instance...
Loading net parameters...
Mask R-CNN loaded!DynaSLAM Copyright (C) 2018 Berta Bescos, University of Zaragoza.Input sensor was set to: RGB-DLoading ORB Vocabulary. This could take a while...
Vocabulary loaded!Camera Parameters: 
- fx: 535.4
- fy: 539.2
- cx: 320.1
- cy: 247.6
- k1: 0
- k2: 0
- p1: 0
- p2: 0
- fps: 30
- color order: RGB (ignored if grayscale)ORB Extractor Parameters: 
- Number of Features: 3000
- Scale Levels: 8
- Scale Factor: 1.2
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7Depth Threshold (Close/Far Points): 2.98842-------
Start processing sequence ...
Images in the sequence: 633Light Tracking not working because Tracking is not initialized...
New map created with 842 points
MakeCurrent: Not available with non-pangolin window.
-------median tracking time: 2.69929
mean tracking time: 2.92223Saving camera trajectory to CameraTrajectory.txt ...trajectory saved!Saving keyframe trajectory to KeyFrameTrajectory.txt ...trajectory saved!

参考链接:https://blog.csdn.net/catpico/article/details/121055337
部署时间:21:20-24:00=2.5h,10:00-11:20=1.5h,总计4h,不包含ORB-SLAM2的环境。
文章完成时间:2023-05-14 12:47:45

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

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

相关文章

全网Bento和3D?点评2024年UX/UI设计趋势

2024年已经到来&#xff0c;对于UX/UI设计领域来说&#xff0c;这可能是过去若干年来UI / UX趋势最统一、最确定的一年。在接下来的文章中&#xff0c;笔者将在点评各个设计趋势的同时&#xff0c;分析现象背后的原因&#xff0c;并给新入行的设计师一些成长的建议。 什么是UI和…

数据结构-邻接矩阵

介绍 邻接矩阵&#xff0c;是表示图的一种常见方式&#xff0c;具体表现为一个记录了各顶点连接情况的呈正方形的矩阵。 假设一共有以下顶点&#xff0c;其连接关系如图所示 那么&#xff0c;怎么表示它们之间的连接关系呢&#xff1f; 我们发现&#xff0c;各条边所连接的都…

C语言题目:一些简单的编程和递归题目

以下的题目的较难的点都在注释里面讲解清楚了 一. 1.喝汽水&#xff0c;1瓶汽水1元&#xff0c;2个空瓶可以换一瓶汽水&#xff0c;给20元&#xff0c;可以喝多少汽水&#xff08;编程实现&#xff09;。 代码实现&#xff1a; int main() {int money 20;int price 1;int e…

C#,二进制数的非0位数统计(Bits Count)的算法与源代码

计算一个十进制数的二进制表示有多少位1&#xff1f; 1 遍历法&#xff08;递归或非递归&#xff09; 使用循环按位统计1的个数。 2 哈希查表法 利用一个数组或哈希生成一张表&#xff0c;存储不同二进制编码对应的值为1的二进制位数&#xff0c;那么在使用时&#xff0c;只…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第10章 项目进度管理(五)

博主2023年11月通过了信息系统项目管理的考试&#xff0c;考试过程中发现考试的内容全部是教材中的内容&#xff0c;非常符合我学习的思路&#xff0c;因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家&#xff0c;希望更多的人能够通过考试&a…

控制程序执行流程

资源 资源下载 【免费】突破密码认证程序&#xff08;修改函数返回地址&#xff09;资源-CSDN文库 资源内容 源码 在上一篇文章里 修改函数返回地址-CSDN博客 流程 对程序进行编译 思路 了解栈的情况&#xff08;函数地址、缓冲区偏移量&#xff09;程序中密码认证的地…

SHERlocked93 的 2023 年终总结

工作之后感觉一年一年过的太快&#xff0c;没有个记录连回忆都无从回忆起&#xff0c;之前的年终总结&#xff1a; SHERlocked93 的 2022 年终总结SHERlocked93 的 2021 年终总结SHERlocked93 的 2020 年终总结SHERlocked93 的 2019 年终总结SHERlocked93 的 2018 年终总结SHER…

js设计模式:发布订阅模式

作用: 也称之为消息队列模式,或者pubsub模式 发布者发布消息(也可以理解为调用某函数),订阅者会收到消息,并且发布者可以将一些参数传递给订阅者。 是一种常用的参数传递方法,经典的pubsub.js,vue2中的$bus等都是用的这种模式。 示例: <!DOCTYPE html> <html lan…

模仿 STM32 驱动开发格式实验

1.模仿 STM32 寄存器定义 为了开发方便&#xff0c; ST 官方为 STM32F103 编写了一个叫做 stm32f10x.h 的文件&#xff0c;在这个文件 里面定义了 STM32F103 所有外设寄存器&#xff0c;我们可以使用其定义的寄存器来进行开发&#xff0c;比如我 们可以用如下代码来初始…

kube-ovn默认vpc

下面图是kube-ovn默认vpc的拓扑 默认vpc kube-ovn安装完成后会自带一个默认vpc是ovn-cluster&#xff0c;并且会在这个默认vpc下创建ovn-default子网、join子网&#xff0c; 默认子网 ovn-default是ovn-cluster下的默认子网&#xff0c;在创建pod时没有指定子网时会使用这个…

Python编程中的异常处理

什么是异常&#xff1f; 程序错误&#xff08;errors&#xff09;有时也被称为程序异常&#xff08;exceptions&#xff09;&#xff0c;这是每个编程人员都会经常遇到的问题。在过去&#xff0c;当遇到这类情况时&#xff0c;程序会终止执行并显示错误信息&#xff0c;通常是…

JAVA之Java线程核心详解

Java线程核心 1.进程和线程 进程&#xff1a;进程的本质是一个正在执行的程序&#xff0c;程序运行时系统会创建一个进程&#xff0c;并且给每个进程分配独立的内存地址空间保证每个进程地址不会相互干扰。同时&#xff0c;在 CPU 对进程做时间片的切换时&#xff0c;保证进程…

微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用

&#x1f3f7;️个人主页&#xff1a;鼠鼠我捏&#xff0c;要死了捏的主页 &#x1f3f7;️系列专栏&#xff1a;Golang全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&…

猫头虎博客分享:深入解析 Visual Studio Code 1.86 版本新特性

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

测试文章笔记-SQL3种优化方法

SQL语句优化&#xff1a; 本质&#xff1a;降低执行时间 **核心思路&#xff1a;**找到执行计划中开销较高的操作&#xff0c;改写SQL语句或改变表访问方式调整执行计划。 举例&#xff1a; 1.使用索引替代全表扫描&#xff08;索引&#xff1a;是帮助MysQL高效获取数据的数…

【JVM】打破双亲委派机制

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;JVM ⛺️稳中求进&#xff0c;晒太阳 打破双亲委派机制 打破双亲委派机制三种方法 自定义类加载器 ClassLoader包含了四个核心方法 //由类加载器子类实现&#xff0c;获取二进制数据调用…

MySQL之json数据操作

1 MySQL之JSON数据 总所周知&#xff0c;mysql5.7以上提供了一种新的字段格式json&#xff0c;大概是mysql想把非关系型和关系型数据库一口通吃&#xff0c;所以推出了这种非常好用的格式&#xff0c;这样&#xff0c;我们的很多基于mongoDB的业务都可以用mysql去实现了。当然…

NumPy模块完结篇:深入探讨和高效利用【第85篇—NumPy模块】

NumPy模块完结篇&#xff1a;深入探讨和高效利用 NumPy是Python中用于科学计算的核心库之一&#xff0c;提供了高性能的多维数组对象&#xff08;numpy.ndarray&#xff09;以及许多用于操作这些数组的函数。在前面的几篇博客中&#xff0c;我们介绍了NumPy的基础知识、数组操…

电子商务跨境电商大数据的关键技术之—主流电商大数据采集

大数据采集是指通过各种技术手段和工具收集、获取和提取大规模数据的过程。在信息时代&#xff0c;各种互联网、物联网、移动设备等的普及和应用&#xff0c;产生了海量的数据&#xff0c;这些数据被称为大数据。大数据采集就是对这些数据进行收集和抓取&#xff0c;以获得有意…

手把手一起开发SV4E-I3C设备(二)

JEDEC DDR5 SPD Hub Devices例程 DDR5生态系统的核心是SidebandBus Protocol 参考下图&#xff0c;可以将SV4E-I3C的端口1声明为主服务器(模拟主机控制器)&#xff0c;并且它可以属于SV4E-I3C上的一个总线。端口2可以作为SPD Hub DUT的Local Bus侧的从站连接。这个从站可以被…