- 博客(85)
- 收藏
- 关注
原创 “P“、“K“,这些常见的字母在监控分辨率中分别代表什么意思
720P,1080P等,表示的是“视频像素的总行数”,比如,720P表示视频有720行的像素,而1080P则表示视频总共有1080行像素数,1080P分辨率的摄像机通常像素数是1920*1080。MP是像素总数,即像素的行数(P)及列数(K)相乘后的结果(百万像素)。比如,1080P摄像机是1920像素与1080像素相乘,得到2MP(百万像素)的像素总数。2K,4K等,表示的是“视频像素的总列数”,如4K, 表示的是视频有4000列像素数,具体是3840或4096列。3、‘MP’(‘XX百万像素’)
2023-03-31 20:45:00 6172 1
原创 初步认识端口服务查询--netstat
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息2)127.0.0.1:25这个表示监听本机的loopback地址的25端口(如果某个服务只监听了回环地址,那么只能在本机进行访问,无法通过tcp/ip 协议进行远程访问)部分的0.0.0.0:873表示监听服务器上所有ip地址的所有(0.0.0.0表示本地所有ip),比如你的服务器是有172.172.230.210和。
2022-11-22 22:24:14 2023
原创 初步认识centos防火墙配置--firewall-cmd
firewall-cmd是Linux上新用的**防火墙软件**,跟iptables差不多的工具。firewall-cmd 是 firewalld的字符界面管理工具,**firewalld是centos7的一大特性**,**最大的好处有两个**:支持**动态更新,不用重启服务**;第二个就是**加入了防火墙的“zone”概念**。firewalld跟iptables比起来至少有一大好处:fir最大的好处有两个**:支持**动态更新,不用重启服务**;第二个就是**加入了防火墙的“zone”概念**。
2022-11-22 22:00:00 529
原创 c++ map容器的内存回收
调用clear()后,会把容器中所有元素清除(size变成0)、同时被删除元素对应的内存给到内存池memory pool(memory pool用于管理小片段内存/内存碎片并做次级内存分配,clear的时候内存会交还给memory pool而不会真正释放给系统OS)。该类具有reserve()/capacity() 成员函数,可以利用swap()、shrink_to_fit()等函数来释放空间。该类容器调用clear(), swap()都无法使得内存真正释放!代码1 使用swap()释放vector内存。
2022-11-20 23:12:19 3943
原创 c/c++4个内存分区介绍
c/c++内存四个区:代码区,全局区,栈区,堆区内存分不同区的意义**:**不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程代码区和全局区都是在程序运行前存在的,栈区和堆区是在程序运行后存在的
2022-11-20 15:44:20 1101 1
原创 关于C++解决内存泄漏问题的心得
内存泄漏定位、监测工具、new、delete、malloc、free、分块注释asan(AddressSanitizer)、Sonarqube、vscode-cppcheck插件等;内存监测工具(linux):top、Telegraf+Influxdb+Grafana三件套。
2022-11-13 21:20:38 1538
原创 C++ fstream类移动读写指针和字节数形式获取该指针位置(seekp、seekg、tellg、tellp)
ios::cur:在此情况下,offset 为负数则表示将读指针(或写指针)从当前位置朝文件开头方向移动 offset 字节,为正数则表示将读指针(或写指针)从当前位置朝文件尾部移动 offset字节,为 0 则不移动。要获取文件长度,可以用 seekg 函数将文件读指针定位到文件尾部,再用 tellg 函数获取文件读指针的位置,此位置即为文件长度。在读写文件时,有时希望直接跳到文件中的某处开始读写,这就需要先将文件的读写指针指向该处,然后再进行读写。所谓“位置”,就是指距离文件开头有多少个字节。
2022-11-03 16:34:06 1907
原创 关于错误使用cudaDeviceReset()函数,导致多线程下cuda错误、进程崩溃的问题
例如,可以在整个进程结束的时候,对cuda进行reset,毕竟GPU和CPU执行程序是异步的,且根据目前了解发现,不少cuda函数或工具,对gpu操作时、是直接对整块GPU操作、而不是其中的某“线程”。在程序执行了一段时间后,必现地随机报cuda的某个函数执行错误,如cudaMalloc函数执行错误、cudaStreamSynchronize函数执行错误等,并且每次报错的线程也随机,很难定位是具体哪个线程内的代码问题(备注:每个线程对应一个场景任务,其代码都不一样,如人脸检测、异常行为检测等)。
2022-10-29 15:27:31 2714 1
原创 初步认识Linux服务管理--Systemctl
Systemctl 是一个 systemd 工具,主要负责控制 systemd 系统和服务管理器。Systemd是一个系统管理守护进程、工具和库的集合,用于取代 System V 初始进程。Systemd 的功能是用于集中管理和配置类 UNIX 系统。在 Linux 生态系统中,Systemd 被部署到了大多数的标准 Linux 发行版中,只有为数不多的几个发行版尚未部署。Systemd 通常是所有其它守护进程的父进程,但并非总是如此。
2022-10-26 14:07:00 628
原创 C++功能模块8:点到线段的最短距离
在二维平面上,给出三个点的坐标分别为A(ax,ay), B(bx,by), C(cx,cy),求点A到线段BC的最短距离。从点A向直线BC作垂线,垂足可能在线段BC的左侧,在线段BC上,或者在线段BC的右侧三种情况,下面分别讨论。最短距离是三角形ABC以边BC的高,可通过海伦公式先求出面积,再求出高得到答案。最短距离显然是AB。
2022-10-26 11:12:04 2013
原创 free -h详解
内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据(就是buffer和cache),所以对于内核来说buffer和cache都属于已经被使用的内存。buff/cache: buffers和cache所用总量的总和(buffers为内核缓冲区所用的内存,cache为页缓存和slabs所用的内存容量)当应用程序需要内存时,如没有足够的 free 内存可用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。注: 这只是一个很理想的计算方式,实际中的数据往往有较大的误差。
2022-10-26 11:02:53 20723 1
原创 python读取txt文件并画图
使用numpy是最方便的;当然刚开始的程序有点儿复杂,但对于理解python画图的实现过程是有帮助的。2)建立两个空列表X,Y,将第一列的数字放入X,第二列的数字放入Y中。另外,numpy.loadtxt还可以读取.dat等文件。请以第一列为x轴,第二列为y轴画图。1)使用readlines读取文件。3)以X,Y为轴画图。
2022-09-26 20:16:14 6118
原创 makefile设置宏定义进行条件编译,实现多版本代码同时维护
由于项目需求,本人需要同时维护多套代码(不同场景版本、debug版、release版等),同时每套代码之间大同小异,因此想通到设置宏定义进行条件编译,实现代码的多版本管理。优点:该种方法,只需要在makefile中定义好宏定义,其他地方不需要再定义,因为此时宏定义作用域为工程的所有文件。效率高、不容易出错。缺点:宏定义作用域有限,当需要在较多工程文件内条件编译时,需要注意定义宏定义,效率低、容易出错。补充2、makefile中变量值后面的空格问题。优点:写法简单,即插即用。
2022-09-16 09:59:33 3566 2
原创 nvidia-smi 命令释义备忘
Fan:显示风扇转速,数值在0到100%之间,是计算机的期望转速,如果计算机不是通过风扇冷却或者风扇坏了,显示出来就是N/A;Perf:表征性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能;Disp.A:是Display Active的意思,表示GPU的显示是否初始化;Volatile GPU-Util:浮动的GPU利用率;命令行参数-n后边跟的是执行命令的周期,以s为单位。Temp:显卡内部的温度,单位是摄氏度;Bus-Id:涉及GPU总线的相关信息;Compute M:计算模式;
2022-09-14 10:52:36 545
原创 makefile中变量值后面的空格问题
在makefile中想要使用ifeq()函数,来实现根据不同场景的条件编译。但是ifeq()对比的内容明明看上去一样,就是没法进入相应。
2022-09-07 18:07:15 1437
原创 服务器常用端口号及作用
这些端口通常不会被像木马这样的黑客程序利用。为了使大家对这些常用端口多一些认识,在本章后面将详细把这些端口所对应的服务进行列表,供各位理解和参考。
2022-08-30 17:37:23 7871
原创 Linux的scp命令远程传输文件
scp 命令是用于通过 SSH 协议安全地将文件复制到远程系统和从远程系统复制文件到本地的命令。使用 SSH 意味着它享有与 SSH 相同级别的数据加密,因此被认为是跨两个远程主机传输文件的安全方式。........................
2022-08-30 16:49:47 7098
原创 C++ auto用法示例
*而是否会造成编译期的时间消耗,我认为是不会的,在未使用auto时,编译器也需要得知右操作数的类型,再与左操作数的类型进行比较,检查是否可以发生相应的转化,是否需要进行隐式类型转换。其实在C++98标准中就有该关键字了,但是和c++11中的用法差别就大、且c++98中的较为鸡肋,以下仅说C++11中的情况。当模板函数的返回值依赖于模板的参数时,我们依旧无法在编译代码前确定模板参数的类型,故也无从知道返回值的类型,这时我们可以使用auto。2、定义模板参数时,用于声明依赖模板参数的变量。.........
2022-08-29 14:52:21 1589
原创 C++功能模块5:在图像里截取矩形子图
直接上代码Mat img= imread("1.jpg");Rect rect(50,20, 200, 50); Mat ROI = img(rect); 其中:Rect的函数定义为: Rect(_Tp _x, _Tp _y, _Tp _width, _Tp _height);_Tp _x:表示矩形左上角顶点的x坐标; _Tp _y:表示矩形左上角顶点的y坐标;_Tp _width:表示矩形框的宽度 ; _Tp _height:表示矩形框的高度.........
2022-08-25 23:03:44 591
原创 C++功能模块3:ofstream创建、写txt/cvs文本
直接上代码、、、#include#includeusing namespace std;//1、创建文件输出流,并打开流向的文件ofstream ofs;ofs.open(“txtName.txt”,ios::out );//2、输出内容,格式和std::cout一样ofs << “context” << endl; //endl用于换行//3.使用完关闭流ofs.close();、、、补充:写.cvs文件流程一样,只不过第一步打开的文件名后缀为.cvs;
2022-08-19 00:14:37 2885
原创 多线程调用high_resolution_clock计算接口耗时,发生计时错误
多线程下调用std::chrono::high_resolution_clock计算接口的耗时,为了防止多线程下计时变量冲突出现计时错误,已经将计时变量设置为局部变量、而非全局变量了。但是,结果还是出现了计时错误:多个线程下,某个线程的计时应该是几十毫秒,变成了好几十秒。问题目前不知道在哪,先mark下,后面发现问题了再完善本贴。先灰溜溜手工计时去吧…...
2022-08-17 17:43:29 324 1
原创 C++功能模块1:find_last_of()解析文件名
想要从一个路径加文件名的字符串里解析出文件名,可以利用c++标准库的string::find_last_of()函数:
2022-08-16 15:45:33 1339
转载 ssh连接报错:remote_host_identification_has_changed
有时候给某个主机生成了公钥之后,ssh连接上了,然后如果删除了这个主机,再次创建相同IP地址的主机的时候,ssh它就会出现问题,因为在本地主机上记录的信息,明明已经给那个IP的主机生成过公钥了,所以再次ssh新的主机就会出错大概的报错是这样的:有种简单的办法可以解决此问题,那就是清楚老的公钥信息,比如针对以上截图上出现的报错只需要:ssh-keygen -R 192.168.4.100即可,然后再次连接就可以了......
2022-08-05 11:01:47 172
原创 Linux系统挂载SAS数据盘
注:具体要配置成RAID0、RAID1、RAID5还是RAID10,要看实际的物理硬盘数量、以及自己的实际需求,在上篇博文里有关于RAID的简单介绍。近期我们部门给服务器新装了centos系统,用SSD做了系统盘后,还需要挂载几块SAS硬盘做数据盘,最终效果是将SAS硬盘挂载到/home路径下。(6)挂载信息写入系统文件,使得以后重启设备也不会丢失挂载信息。(3)找到未挂载的虚拟硬盘,看清楚是sda、还是sdb;(4)格式化未挂载的虚拟硬盘;(5)mount命令挂载硬盘;(1)开机进入系统;........
2022-08-05 10:31:29 979
原创 服务器重装思路
RAID配置方案:这台服务器主要用于AI算法训练、代码开发、测试,同时会保存部分训练数据,总体来看,需要同时兼顾数据安全和读写速度,因此SSD和SAS都选择配成RAID5,即4块SSD物理磁盘配成成RAID5虚拟盘1,另外4块SAS物理磁盘配置成RAID5虚拟盘2。注意选择自定义磁盘分区,通常来说,要选择SSD磁盘来安装系统,然后分配boot(500M)、swap(32G,和自己内存大小有关)、其余的全部给根目录;·因为本人新手一枚,第一遍装系统的时候,甚至没有注意到这个环节,但是这个环节很重要。.....
2022-08-04 16:25:59 490
原创 SDK封装:算法sdk封装的思路及细节总结
因为开发过程中,往往没有真实的部署环境,或者真实部署环境资源紧张,大家迫不得已要在自己的设备上开发。下面记录下,这种情况下算法开发和SDK方式封装的总体思路。
2022-07-25 16:26:08 5848
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人