一些问题的解决方案【持续更新ing】

2024-08-25 23:28

本文主要是介绍一些问题的解决方案【持续更新ing】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一些问题的解决方案【持续更新ing】

  • Windows
    • CUDA 安装失败解决方案
    • VS 添加现有项无反应
    • 无法定位程序输入点 于动态链接库 xxx.exe 上
    • 不同工具集生成的库无法通用
    • 更改只读属性
  • Ubuntu
    • VTK cmake 过程中找不到QT5目录
    • Ubuntu添加环境变量(永久+最简单)
    • Wandb强制终止
    • 一步执行多条命令
    • Ubuntu 触摸板开关
    • 查看当前文件夹的大小
  • C++
    • #pragma omp parallel for
  • Python
    • 绘制等比例坐标轴

记录一些问题的解决方案,一些即时学到的解决方案往往不进脑子,为了避免第二次遇到同样问题时不被自己骂,那么就只能好记性不如烂笔头了


Windows


CUDA 安装失败解决方案

在CUDA安装时报错
或在安装其他程序时提示正在安装另一个程序等等

解决方案
打开任务管理器,在进程中搜索msiexec.exe安装程序
将后台运行的msiexec.exe结束运行,然后重新运行安装程序,让其能够重新正常调用msiexec.exe

在这里插入图片描述


VS 添加现有项无反应

关闭.sln
删除工程目录下的.vs 缓存文件夹
重新打开.sln


无法定位程序输入点 于动态链接库 xxx.exe 上

在这里插入图片描述
版本不一致,检查新生成dll版本的接口与生成exe的接口(头文件.h)是否一致。


不同工具集生成的库无法通用

当然是更改工具集重新生成

在这里插入图片描述
重新生成
在这里插入图片描述

在这里插入图片描述


更改只读属性

CMD终端中使用attrib命令

C:\Users>help attrib
显示或更改文件属性。
ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I][drive:][path][filename] [/S [/D] [/L]]+ 设置属性。- 清除属性。R 只读文件属性。A 存档文件属性。S 系统文件属性。H 隐藏文件属性。I 无内容索引文件属性。[drive:][path][filename]指定 attrib 要处理的文件。/S 处理当前文件夹及其所有子文件夹中的匹配文件。/D 也处理文件夹。/L 处理符号链接和符号链接目标的属性。

Ubuntu


VTK cmake 过程中找不到QT5目录

cmake-gui 中,勾选VTK_Group_QT后,Configure报错:

  By not providing "FindQt5.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "Qt5", butCMake did not find one.Could not find a package configuration file provided by "Qt5" with any ofthe following names:Qt5Config.cmakeqt5-config.cmakeAdd the installation prefix of "Qt5" to CMAKE_PREFIX_PATH or set "Qt5_DIR"to a directory containing one of the above files.  If "Qt5" provides aseparate development package or SDK, be sure it has been installed.

解决方案:

手动填上Qt5_DIR的地址,地址要精确到Qt5Config.cmake所在文件夹(windows平台也一样)

ubuntu中如:

/opt/Qt5.12.5/5.12.5/gcc_64/lib/cmake/Qt5

填上后,Configure+Generate:
在这里插入图片描述



Ubuntu添加环境变量(永久+最简单)

Ctrl+Atl+T 打开Shell

sudo vim /etc/environment

(没有安装vim或没有接触过vim可用默认文本编辑器gedit打开编辑)

sudo gedit /etc/environment

PATH=后以冒号分隔,添加路径(执行文件所在目录的绝对路径)

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/wj/WW3/model/exe:/home/wj/WW3/model/bin:/usr/local/openmpi:/usr/local/VSCode-linux-x64/"

保存,注销重新登录即可生效


Wandb强制终止

某些情况下Ctrl+C结束网络训练时,终端仍一直输出

wandb-servicef xxx MB uploaded (xxx MB deduped)

可输入如下命令终止wandb服务

pkill wandb-service

一步执行多条命令

如 创建文件夹并进入,常用于cmake

似乎用处不大,极少数情况下或许能装一下?

mkdir [folder] && cd $_

mkdir 创建命令
[folder]文件夹名字
&& 并且(接着执行后面的命令)
cd 进入文件夹
$_ 上一个命令的最后参数


Ubuntu 触摸板开关

针对设置里面的触摸板开关无效的情况(之前的联想拯救者在ubuntu下有这个bug)

可使用xinput命令启用和禁用触摸板。首先,输入xinput查看触摸板的名称或ID,例如:


~ > xinput                                     
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Asus Keyboard                           	id=14	[slave  pointer  (2)]
⎜   ↳ ELAN1200:00 04F3:303E Mouse             	id=15	[slave  pointer  (2)]
⎜   ↳ Logitech G304                           	id=12	[slave  pointer  (2)]
⎜   ↳ ELAN1200:00 04F3:303E Touchpad          	id=16	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]↳ Power Button                            	id=6	[slave  keyboard (3)]↳ Asus Wireless Radio Control             	id=7	[slave  keyboard (3)]↳ Video Bus                               	id=8	[slave  keyboard (3)]↳ Video Bus                               	id=9	[slave  keyboard (3)]↳ Power Button                            	id=10	[slave  keyboard (3)]↳ Sleep Button                            	id=11	[slave  keyboard (3)]↳ USB2.0 HD UVC WebCam: USB2.0 HD         	id=13	[slave  keyboard (3)]↳ Asus WMI hotkeys                        	id=17	[slave  keyboard (3)]↳ AT Translated Set 2 keyboard            	id=18	[slave  keyboard (3)]↳ Asus Keyboard                           	id=20	[slave  keyboard (3)]↳ Logitech G304                           	id=19	[slave  keyboard (3)]

查看输出得知触摸板设备名id,接下来可以使用如下命令:

禁用触摸板

xinput --disable 16

打开触摸板

xinput --enable 16

查看当前文件夹的大小

du -sh
❯ du -sh                                     🐍 base root@sdfstudio  17:04:36
186G    .

C++


#pragma omp parallel for

#pragma omp parallel for 是一个 OpenMP 指令,用于在多核处理器或多处理器系统上实现并行化循环的执行

使用 #pragma omp parallel for 的一些注意事项:

  • 数据依赖性:确保循环中没有数据竞争或依赖,否则可能导致不正确的结果或竞态条件
  • 效率:并非所有的循环都适合并行化。对于简单或迭代次数较少的循环,并行化的开销可能会超过其带来的性能提升
  • 调度策略:可以使用 schedule 子句来控制循环迭代如何被分配给线程

反面例子(使用#pragma omp parallel for 计算出错,注释#pragma omp parallel for 后计算正确)

double ct1[3] = { 0 };
#pragma omp parallel forfor (int i = 0; i < point_number; ++i){ct1[0] += m_cloud_sample_target[i].x;  ct1[1] += m_cloud_sample_target[i].y;  ct1[2] += m_cloud_sample_target[i].z; }ct1[0] /= point_number;ct1[1] /= point_number;ct1[2] /= point_number;

原因是在 #pragma omp parallel for 指令下,每个线程都会并行执行循环体中的代码。由于 ct1 数组是共享的,多个线程会同时对其进行累加操作,导致数据竞争。这样,某个线程可能会在另一个线程更新 ct1 之前读取旧值,从而导致错误的累加结果[来自GPT]

注释掉 #pragma omp parallel for 后,代码以串行方式执行,不存在数据竞争问题,因此计算结果正确


Python


绘制等比例坐标轴

二维:
坐标轴等比例

plt.axis('equal')
or
plt.axis('scaled')

axis()相关方法

axis()[xmin, xmax, ymin, ymax]:显示坐标轴的范围option,可取值为'on':打开坐标轴'off':关闭坐标轴显示'equal':设置相等的比例,y轴和x轴单位刻度对应长度是一样的'scaled':通过更改绘图框的尺寸设置相等的缩放比例'tight':设置足够大的限制来显示所有数据'auto':自动确定'image':‘scaled’ with axis limits equal to data limits'square':方形图,类似于‘scaled’,但是强制xmax-xmin = ymax-ymin

三维:

坐标轴等比例

ax.set_box_aspect([ub - lb for lb, ub in (getattr(ax, f'get_{a}lim')() for a in 'xyz')])

在这里插入图片描述

这篇关于一些问题的解决方案【持续更新ing】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106935

相关文章

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

hdu1689(线段树成段更新)

两种操作:1、set区间[a,b]上数字为v;2、查询[ 1 , n ]上的sum 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdl

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

hdu 1754 I Hate It(线段树,单点更新,区间最值)

题意是求一个线段中的最大数。 线段树的模板题,试用了一下交大的模板。效率有点略低。 代码: #include <stdio.h>#include <string.h>#define TREE_SIZE (1 << (20))//const int TREE_SIZE = 200000 + 10;int max(int a, int b){return a > b ? a :

缓存雪崩问题

缓存雪崩是缓存中大量key失效后当高并发到来时导致大量请求到数据库,瞬间耗尽数据库资源,导致数据库无法使用。 解决方案: 1、使用锁进行控制 2、对同一类型信息的key设置不同的过期时间 3、缓存预热 1. 什么是缓存雪崩 缓存雪崩是指在短时间内,大量缓存数据同时失效,导致所有请求直接涌向数据库,瞬间增加数据库的负载压力,可能导致数据库性能下降甚至崩溃。这种情况往往发生在缓存中大量 k

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)