
C++
文章平均质量分 54
长乐村长
这个作者很懒,什么都没留下…
展开
-
打印编译版本
1、shell脚本获取编译时间#get_build_version.sh#!/bin/bashREV=`git rev-list --all|wc -l`DATE=`date "+%Y-%m-%d_%H:%M:%S"`VERSION=${REV}_${DATE}echo ${VERSION}2、在cmake中将编译时间设置成宏execute_process(COMMAND sh ${PROJECT_SOURCE_DIR}/get_build_version.sh WORKING_DIR原创 2021-07-23 09:57:46 · 215 阅读 · 0 评论 -
rapidjson坑
base64进行编码时,超过76字符会自动加换行符;而rapidjson没有处理这种情况,会直接crash原创 2021-04-21 16:30:12 · 496 阅读 · 0 评论 -
使用tcmalloc dump内存
启动加上,会自动生成内存dump文件# HEAPPROFILE 指定perf路径# ./bin/server 需要执行的程序LD_PRELOAD="/usr/lib64/libtcmalloc.so.4" HEAPCHECK=normal HEAPPROFILE=./myprof ./bin/server生成pdfpprof --pdf a.out test.0001.heap > test.pdf对比生成pprof --pdf --base=check.008.原创 2020-11-10 18:06:55 · 401 阅读 · 0 评论 -
火焰图生成
火焰图生成脚本https://github.com/brendangregg/FlameGraph#!/bin/bashFLAMEGRAPH=/root/test/FlameGraphecho "perf record ... gen perf.data"perf record -F 99 -p $1 -g -- sleep 30echo "gen out.perf"perf ...原创 2020-05-04 13:48:59 · 700 阅读 · 0 评论 -
问题记录
事项动态库头文件不能有虚函数替换C++库,将编译的可执行文件也一起替换,否则可能导致coredump堆栈不是真实地址原创 2020-02-27 14:41:55 · 151 阅读 · 0 评论 -
打印容器和枚举
参考代码#include <iostream>#include <map>#include <vector>#include <sstream>using namespace std;/* * 打印map */template<typename _Key, typename _Value>std::ostrea...原创 2019-11-08 18:34:29 · 164 阅读 · 0 评论 -
编译boost
mingw编译下载boost源码 https://www.boost.org/users/download/gingw加入windows环境变量,cmd中输入gcc -v可以看到版本号则安装正确cmd进入boost_unix的解压目录,输入bootstrap.bat生成编译环境输入./b2.exe install --prefix=D:\boost\boost_1.65.1_mingw ...原创 2019-08-03 16:18:48 · 237 阅读 · 0 评论 -
boost::asio学习记录
使用asio捕获信号,处理程序退出Boost.Asio支持信号量,比如SIGTERM(软件终止)、SIGINT(中断信号)、SIGSEGV(段错误)等等。 可以创建一个signal_set实例,指定异步等待的信号量,然后当这些信号量产生时,就会调用你的异步处理程序:#include <iostream>#include <boost/asio.hpp>using ...原创 2019-08-03 18:31:56 · 239 阅读 · 0 评论 -
linux程序性能分析
分析程序耗时time ./test.out结果real 0m5.699s #总共运行时间5.699suser 0m0.016s #用户态耗时0.016s,说明大量的时间程序是挂起状态,如sleepsys 0m0.000s #系统调用耗时0...原创 2019-08-04 16:19:12 · 264 阅读 · 0 评论 -
ubuntu安装gcc/g++
apt-get install gcc-8 g++-8update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 50 --slave /usr/bin/g++ g++ /usr/bin/g++-8其中50为优先级删除某个版本的编译器update-alternatives --remove gcc /usr/bin/*(*...原创 2019-08-04 21:19:30 · 3690 阅读 · 0 评论 -
vim简单配置
vim /etc/vim/vimrc末尾添加set nuset tabstopset nobackupset cursorlineset rulerset autoindent原创 2019-08-04 22:05:04 · 156 阅读 · 0 评论 -
编译muduo
下载muduo代码release-2.0wget https://github.com/cugxchen/muduo/archive/v2.0.0.tar.gz安装依赖库,boost下载源码另装apt-get install libcurl4-openssl-dev libc-ares-dev protobuf-compiler libprotobuf-dev编译cd muduo/...原创 2019-08-04 22:41:24 · 500 阅读 · 0 评论 -
linux下添加库的加载路径
1.修改环境变量export LD_LIBRARY_PATH=path_name2.修改配置文件修改/etc/ld.so.conf的内容在最后添加库加载的新的路径,然后执行:ldconfig 使配置生效。原创 2019-08-09 12:43:29 · 7858 阅读 · 1 评论 -
pstack无法使用的问题
使用pstack需要在链接符号中添加-g,且不能有-s;但是pstack $pid还是出现(No symbols found in ),查了许久,开始以为是gdb版本与g++不匹配的问题,但是gdb可以单独工作。后续发现是系统自带pstack脚本的问题,附可用的pstack脚本代码#!/bin/shif test $# -ne 1; then echo "Usage: `basena...原创 2019-07-09 20:31:51 · 4916 阅读 · 0 评论 -
文件夹遍历与创建
linux下遍历文件夹,并打印文件名称#include <iostream>#include <dirent.h>#include <cstdlib>#include <fstream>#include <string>#include <cstring>using namespace std;bool...原创 2019-07-01 17:21:29 · 309 阅读 · 0 评论 -
音视频开发常用工具
1、VLC播放器VLC支持多种常见音视频格式,支持多种流媒体传输协议,也可当做本地流媒体服务器使用,功能十分强大。下载地址:https://www.videolan.org/2、Elecard Stream Analyzer码流分析工具Elecard Stream Analyzer是很给力的码率分析工具,可直接查看码流中协议规范定义的字段值。例如:分析H264分析,查看SPS、PPS中各...原创 2018-11-28 11:59:02 · 1827 阅读 · 0 评论 -
工具函数
判断端口是否被占用Bool PublicTools::IsPortUsed(UInt16 uPort){ Bool bRet = False; struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(uPort); inet_pton(AF_INET, "0.0...原创 2019-02-12 11:36:44 · 362 阅读 · 0 评论 -
按行读取文件
C++按行读取文件const string strUrlFileName = "testUrl.txt"; ifstream fin(strUrlFileName.c_str(), fstream::binary); if (!fin || fin.eof()) { ERROR_LOG("Con't getline, file = " << strUr...原创 2019-04-24 15:36:10 · 784 阅读 · 0 评论 -
C++调试小技巧
AddressFsanitize检测内存越界和内存泄漏在CMAKE_CXX_FLAGS中添加-o0 -fsanitize=address -fno-omit-frame-pointer -fsanitize=leak 关闭编译优化,使用AddressFsanitize检测内存越界,调试用,正式使用勿开启gprof性能调试工具在CMAKE_CXX_FLAGS中添加-pg选项,可使用gprof性...原创 2019-04-24 15:49:32 · 633 阅读 · 0 评论 -
CMakeList.txt模板
CMakeList.txt模板cmake_minimum_required(VERSION 2.6)project(Test)#设置编译选项set(CMAKE_CXX_FLAGS "-g3 -lpthread -lmysqlclient -lrt -Wl,-rpath,lib -std=c++11")set(CMAKE_CXX_FLAGS_DEBUG "-g3")set(CMAKE_C...原创 2019-04-24 16:03:35 · 793 阅读 · 0 评论 -
修改文件描述符限制数
一、代码修改进程的文件描述符限制数,仅当前进程生效#include <sys/resource.h>/* * 修改进程文件描述符限制数 */bool reset_fd_limit(int32_t fdNum){ bool bRet = false; do { struct rlimit rl; if (getrlimit(RLI...原创 2019-05-10 19:14:39 · 713 阅读 · 0 评论 -
删除^M
linux下vim编辑文件出现^M是因为不同平台对于回车符的定义差异造成的:windows:0D0A ‘/r/n’unix\linux: 0A ‘/n’MAC: 0D ‘/r’当linux的文件在windows下编辑过,就容易出现^M符号,就是因为多了'/r'解决办法:1、dos2unix fileName 这个最简...原创 2019-05-31 14:42:32 · 1239 阅读 · 0 评论 -
shell脚本查找字符串,不存在则添加
#!/bin/shaddText="cd /home/test"AddCmd(){#判断 file.sh 文件中是否存在该字符串if ! grep "$addText" file.sh >/dev/nullthen#不存在,添加字符串 echo "input file" sed '$a/'"$addText"'' file.sh > newfile mv...原创 2019-05-29 11:38:29 · 7071 阅读 · 0 评论 -
rapidjson库的基本使用(生成/解析json)
转载自 https://www.cnblogs.com/fnlingnzb-learner/p/10334988.html转载 2019-06-19 15:42:36 · 535 阅读 · 0 评论 -
C++11单例模板完全解决方案
class SingletonClass{private: SingletonClass() = default; ~SingletonClass() = default; SingletonClass(const SingletonClass& singletonClass) = delete; SingletonClass&operator...原创 2019-06-25 14:29:48 · 611 阅读 · 0 评论 -
curl发送post请求
curl发送post请求并统计耗时curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" -H "Content-Type:application/json" -X POST --data "{转义...原创 2019-06-25 14:42:38 · 626 阅读 · 0 评论 -
log4cxx用法
需要自己先包裹一下,用起来方便点。头文件#include <log4cxx/logger.h>#include <log4cxx/stream.h>#include <log4cxx/level.h>#include <log4cxx/basicconfigurator.h>#include <log4cxx/propertycon...原创 2019-07-01 16:30:11 · 2679 阅读 · 1 评论 -
RTP解析音视频帧
RTP解析音视频帧RTP解析H264、AAC负载解析H264解析AAC封装AAC的ADTS头部CADTS.hCADTS.cpp采坑心得附录:音频抓包分析RTP解析H264、AAC负载RTSP中音视频是通过RTP传输的,本文记录从RTP解析出H264、AAC的过程。协议介绍可参考 https://blog.youkuaiyun.com/lostyears/article/details/51374997...原创 2018-11-27 20:51:15 · 6072 阅读 · 6 评论