- 博客(81)
- 收藏
- 关注
原创 统计进程的CPU和内存占用(最大,均值,90分位)
本文先通过top采集所有进程的CPU和内存情况并保存到文件,然后提取指定进程的数据,最后通过 python 对采集的数据进行可视化。关闭CPU的统计图之后会显示第二列内存占用的数据,可拖拽或者放大查看细节。脚本运行后,每采集一次会在终端打印时间信息,按ctrl+c可停止采集。绘制折线图,并将最大值,平均值,90分位值并显示到图片中。首先是显示第一列CPU占用的数据,可拖拽或者放大查看细节。脚本读取CSV文件,并先后显示每一列的数据统计图。
2024-09-08 13:35:48 404
原创 Linux最直观的性能分析(热点分析)-编译perf并生成火焰图
本文先介绍了linux下perf工具的使用场景,然后对命令行安装和源码编译安装两种方式做了说明,接下来通过最简单的perf top命令给出perf的直观印象,最后通过perf record生成火焰图的方式说明如何发现进程中的函数热点。
2024-07-20 16:34:18 899
原创 一次进程虚拟内存占用超过200G问题分析
一次性分配大块内存的,可通过gdb单步骤执行快速确认具体位置持续小内存分配逐渐增长的,借助工具采集数据分析。
2024-06-29 12:18:48 409
原创 别再滥用std::async了,strace命令暴露了一个乱开线程问题
用strace查看进程的系统调用后,发现一个std::async滥用问题。
2024-06-22 17:43:18 216
原创 一个cmake版的C++项目代码模板,包含流水线、git以及代码格式化配置等支持CICD发布流程
本文给出快速构建C++项目的代码仓库模板 ,简单却完整编译脚本打包上传脚本-依赖拉取代码格式化配置git配置流水线pipeline配置使用这个模板你只需要:将源文件放到模块目录下,并添加到cmake中即可。
2024-06-22 16:44:45 401
原创 使用GNU Gcov & Lcov生成C++单元测试代码覆盖率报告
如何确定哪些代码被测试覆盖,哪些未被测试,并评估整体的代码覆盖率?本文介绍了如何使用 Gcov 和 LCOV 工具统计 C/C++ 项目的代码覆盖率。
2024-06-15 15:10:48 557 1
原创 google全家桶:glog/gflags/gtest编译安装和使用
gflags:Google开源命令行参数解析工具,从环境变量或配置文件中读配置glog:Google开源日志库,用来打印日志,支持多种级别日志打印gtest:Google开源的C++测试框架,可在源代码中定义测试用例Google的开源代码,有保证多人使用和验证过经典的日志库。
2024-06-05 09:58:40 1286
原创 vscode+docker搭建迷你开发环境。制作docker镜像,并通过vscode连接后进行开发
vscode+docker搭建最小化迷你开发环境。制作docker镜像,并作为开发环境通过vscode连接。
2024-05-21 09:57:43 3330
原创 docker中安装jenkins,并在node和cloud上跑通基于源码控制SCM的pipeline
从安装jenkins到创建jenkins的node和cloud,最后再将scm和FreeStyle两种流水线跑通。
2024-05-19 18:51:10 1502
原创 git分支策略(github-flow VS git flow,如何选择)
github-flow VS git flow,不同项目周期,不同团队规模,如何选择git代码分支管理策略
2024-05-18 16:08:20 975
原创 CICD:搭建gitlab-runner服务实现自动化编译打包上传
通过ruuner实现,在gitlab上的仓库打了tag后自动触发编译、打包、上传等自动化发版流程。gitlab-runner依赖项很少可以直接通过deb包的方式部署到物理机。
2024-05-17 09:58:31 596
原创 QT对话框延迟关闭销毁
启动一个对话框后,过一段时间自行关闭销毁ReminderWidget::ReminderWidget(QString text, QWidget* parent) : QWidget(parent){ //设置去掉窗口边框、任务栏无标志、置于顶层 this->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint); //设置属性:关闭即销毁 this->setAttribu
2022-05-29 19:39:40 837 1
原创 夜神模拟器和mitmproxy抓包
安装mitmproxy1 mitmproxy官网下载mitmproxy2 安装mitmproxy3 打开mitmproxymitmproxy -p 88994 电脑端设置代理(否则开启代理后,电脑打不开网页)【windows 设置】->【网络和Internet】->【代理】5 验证mitmproxy在打开的网页中(第三步操作会有网页打开)下载安装证书6 找到windows证书下载后双击安装7 找到其他平台的证书下载(下图中Other Platforms)8
2022-05-02 10:08:52 1795
原创 C++获取网卡名称和IP地址
获取网卡名称和IP地址windows下建议用windows API来获取 参考链接linux下可用pcap或者是getifaddrs API(如果不需要MAC地址的话推荐)来获取 参考链接#ifdef _MSC_VER#include <WinSock2.h>#include <Iphlpapi.h>#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库#else#include <pcap.h>#
2021-10-25 16:13:53 2467
原创 libpcap autoremove卸载引发的问题
记录一次异常操作导致的Ubuntu rviz异常问题当时的操作:执行了sudo apt-get remove libpcap-dev 卸载pcap的时候,提示autoremove,然后就选择了确认。结果把其他的依赖项给卸载了。后面导致RVIZ和系统设置里面的TAB全都无法使用。最后安装了opengl驱动后重启电脑解决了。OPENGL安装参考链接sudo apt-get install libgl1-mesa-dev...
2021-08-06 14:52:10 324
原创 Windows C++获取网卡适配器接口信息
Windows获取网卡适配器接口信息#include <pcap.h>#ifdef _MSC_VER#include <WinSock2.h>#include <Iphlpapi.h>#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库#endifstd::vector<std::string> getLocalMachineNetworkAdapterList(){ pcap_if
2021-06-07 12:30:04 1510
原创 将文件夹下面的文件数据以数组形式保存到CPP文件中
将文件夹下面的文件数据以数组形式保存到CPP文件中,以std::map方式来索引文件信息。使用场景:不希望把文件数据直接暴露给用户。效果如下:代码参考:#include <qdir.h>#include <qicon.h>#include <qpixmap.h>#include <fstream>#include <iostream>struct MyIconInfo{ std::string name; s
2021-06-04 09:10:14 418
原创 QT资源文件的两种使用方式
QT资源文件的两种使用方式(CMake)通过Qt资源文件管理图片资源,qss样式表等。有两种方式使用Qt资源文件。第一种:将资源内容编译到可执行文件中,实现了图标等资源的封装,可达到防止恶意篡改的目的。第二种:使用rcc工具将资源文件qrc编译成rcc文件,然后在代码中动态加载。1:如何将资源文件qrc编译到可执行程序中第一步:生成资源文件qrc1:打开Qt designer,随便新建一个窗体(打开窗体后才能新建出资源文件)2:打开资源浏览器,点击编辑资源图标3:点击新建资源文件4:
2021-06-04 08:58:12 2983 1
原创 CMakeLists.txt文件中为APP添加图标
windows下在CMakeLists.txt文件中为APP添加图标一:准备ico图标通过 http://tool.je2s.com/ico/ 可以在线将图片转换成ico图标。上传图片后,导出ico文件命名为app.ico二:创建RC文件logo.rc,将下面内容粘贴到文件中IDI_ICON1 ICON DISCARDABLE “app.ico”文件如图所示三:在CMakeLists文件中将rc文件添加到源文件列表中四:将准备好的ico文件放置到和rc文件相同
2021-06-03 09:19:51 2322
原创 seekg返回失败
std::ifstream seekg返回失败问题描述:std::ifstream读取到文件结尾后,使用seekg会返回失败error处理方式:在seek之前,使用ifs.clear();ifs.clear(); before ifs.seekg(pos);参考链接:https://stackoverflow.com/questions/16364301/whats-wrong-with-the-ifstream-seekg...
2021-06-03 09:14:29 411
原创 QT获取文件信息
QT获取文件信息1:判断文件是否存在:Static bool QFileInfo::exists(const QString &file)或者bool QFileInfo::exists() const2:获取文件路径QFileInfo fi(“c:/temp/foo/123.txt”); => fi.absoluteFilePath() =>“C:/temp/foo”QFileInfo fi(“c:/temp/foo”); => fi.absoluteFile
2021-06-03 09:10:47 597
原创 网络问题排查
网络问题排查记录多网卡PING外部设备不通1:PC系统上面有两个网卡A和B,A配置的动态DHCP获取IP地址,用来访问外网,网络连接之后获取到10.10.x.x网段的IP地址。B配置的是静态IP地址 192.168.10.10,用于调试设备(设备IP地址是192.168.10.x)。问题复现步骤:1:A正常连接外网,B正常连接设备但是设备处于断电状态。2:ping设备的IP地址192.168.10.10。3:将设备上电。4:ping超时,大约1分钟只有才能ping通。问题原因:系统网络配置
2021-03-19 12:58:45 369
原创 Visual Studio 打开文件后显示不一致的行尾
问题现象:Visual Studio 打开文件后显示不一致的行尾“The line endings in the following file are not consistent. Do you want to normalize the line endings?”问题影响:可能导致Visual Studio的智能代码提示功能不能用原因:WINDOW下和LINUX以及MACOS下的行尾符号不一致,从网页上面COPY的代码包含的换行符号与VISUAL STUDIO打开的文件中的换行符号不一致。
2021-02-03 09:39:55 4002
原创 QT问题记录
开发过程中遇到的一些问题QT比较好的例子教程1: QChart折线图添加大量数据效率问题2:Qt 键盘事件与消息过滤器3:正则表达式:QRegExp rx("[0-9]{0,4}[.]{0,4}");4:Qt QLineEdit控件textChanged信号和textEdited信号区别5:Qt隐藏的功能和技巧6:可以参开自定义控件的实现,QT 自定义IP地址输入框7:QtChar...
2021-01-26 10:41:57 250
原创 Gitbook安装
1:下载node js 10.23.0版本注意,如果安装了其他版本的Node JS可能会导致初始化错误2:安装成功之后打开控制台可以看到node js的版本3:安装GitBook4:查看安装结果5:Gitbook如何生成一本书参考下面链接GitBook 准备工作做好之后常用插件...
2021-01-21 21:39:55 100
原创 疑难杂症
本文记录开发过程中遇到的各种奇怪问题1:Paraview 5.8.1编译的时候出现错误==“error: fatal error C1002: compiler is out of heap space in pass 2”==解决方式参考:https://discourse.paraview.org/t/fatal-error-c1002-compiler-is-out-of-heap-space-in-pass-2/3021具体操作:Disable VTK-m by setting the PAR
2020-10-16 16:18:02 455
原创 std::cin读取行数据
#include <stdio.h>#include <iostream>#include <string.h>#include <sstream>int main(int argc, char** argv){ int row, col; const int lines = 5;// how line to read from the std::cin std::vector< std::vector<std::
2020-09-11 09:35:29 616
原创 c++回调函数、同步队列、生产者消费者举例
C++11 同步队列、注册回调函数、生产者消费者代码记录同步队列:// data queuetemplate <typename T>class SynchronizedQueue {public: SynchronizedQueue() : queue_() , mutex_() , cond_() , request_to_end_(false) , enqueue_data_(true)
2020-08-28 20:34:28 2578
原创 Nginx使用汇总
记录Nginx的相关配置1:nginx实现多个域名在同一服务器指向不同端口 主要用来处理nginx和tomcat两个端口2:Nginx反向代理到Tomcat服务器 也可以用来处理nginx和tomcat两个端口3:nginx location配置详细解释4:nginx反向代理–根据访问路径将请求分发至不同服务器 && nginx根据URL分流5:Nginx 配置 SSL 证书 + 搭建 HTTPS 网站教程...
2020-08-23 16:10:47 116
原创 Eigen库使用汇总
记录使用过的Eigen功能1:Eigen(3)矩阵Matrix及其简单操作2:使用eigen库进行空间变换 旋转平移,尺度缩放,放射变换3:基于eigen实现欧拉角(RPY), 旋转矩阵, 旋转向量, 四元数之间的变换
2020-08-23 16:00:05 605
原创 常用软件
参看windows进程和资源情况:Process Explorer v16.32参考链接:https://superuser.com/questions/117902/find-out-which-process-is-locking-a-file-or-folder-in-windows查看文件被哪个程序锁定:WhoLockMelinux字符拼装ASCII超大字母:Banner...
2020-08-23 15:41:10 103
原创 Python常用参考
Python常用参考代码1:python 枚举Enum类的使用from enum import Enumclass Color(Enum): red = 1 orange = 2 yellow = 3 green = 4 blue = 5 indigo = 6 purple = 72:Python实现线程之间的通信import _thread3:python全局变量引用与修改def func(): global a a
2020-08-23 14:59:10 178
原创 Centos7.2安装XWIKI 11.10.5
安装前的准备1:根据需求确认xwiki版本,不同版本的xwiki支持特性不一样。 这里我安装了官网推荐的11.10.5。2:根据xwiki版本确认对应的依赖环境。 1) Java支持:我安装的版本是11.10.5,所以选择安装Java8。 2) Servlet支持:我安装的版本是11.10.5,所以选择我选择的是主流的Tomcat7.0。 &
2020-08-23 12:16:50 773
原创 pyinstaller打包exe出错处理
错误1:Error running the exe file in Windows “Failed to execute script pyi_rth_pkgres”解决方式: https://github.com/pyinstaller/pyinstaller/issues/2137pip uninstall pyinstallerpip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip错误2:OSEr
2020-06-16 11:10:18 269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人