- 博客(53)
- 收藏
- 关注
原创 打印编译版本
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
160
原创 wireshark添加h264解析插件
1、下载h264解析插件rtp_h264_extractor.luahttps://github.com/volvet/h264extractor2、将插件rtp_h264_extractor.lua放到wireshark的安装根目录3、将wireshark根目录中的init.lua文件,确保disable_lua = false,并且在最后添加dofile(DATA_DIR.."rtp_h264_extractor.lua")4、重启wireshark,在Tools栏下可以看到.
2021-07-14 15:29:39
2948
原创 使用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
338
原创 火焰图生成
火焰图生成脚本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
670
原创 打印容器和枚举
参考代码#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
136
原创 linux下添加库的加载路径
1.修改环境变量export LD_LIBRARY_PATH=path_name2.修改配置文件修改/etc/ld.so.conf的内容在最后添加库加载的新的路径,然后执行:ldconfig 使配置生效。
2019-08-09 12:43:29
7559
1
原创 编译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
448
原创 vim简单配置
vim /etc/vim/vimrc末尾添加set nuset tabstopset nobackupset cursorlineset rulerset autoindent
2019-08-04 22:05:04
135
原创 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
3645
原创 linux程序性能分析
分析程序耗时time ./test.out结果real 0m5.699s #总共运行时间5.699suser 0m0.016s #用户态耗时0.016s,说明大量的时间程序是挂起状态,如sleepsys 0m0.000s #系统调用耗时0...
2019-08-04 16:19:12
228
原创 boost::asio学习记录
使用asio捕获信号,处理程序退出Boost.Asio支持信号量,比如SIGTERM(软件终止)、SIGINT(中断信号)、SIGSEGV(段错误)等等。 可以创建一个signal_set实例,指定异步等待的信号量,然后当这些信号量产生时,就会调用你的异步处理程序:#include <iostream>#include <boost/asio.hpp>using ...
2019-08-03 18:31:56
194
原创 编译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
197
转载 ubuntu16.04系统gcc下降和升级
参考:https://blog.csdn.net/betty13006159467/article/details/78394974
2019-07-28 22:21:29
913
原创 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
4717
原创 文件夹遍历与创建
linux下遍历文件夹,并打印文件名称#include <iostream>#include <dirent.h>#include <cstdlib>#include <fstream>#include <string>#include <cstring>using namespace std;bool...
2019-07-01 17:21:29
260
原创 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
2611
1
原创 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
599
原创 C++11单例模板完全解决方案
class SingletonClass{private: SingletonClass() = default; ~SingletonClass() = default; SingletonClass(const SingletonClass& singletonClass) = delete; SingletonClass&operator...
2019-06-25 14:29:48
557
转载 rapidjson库的基本使用(生成/解析json)
转载自 https://www.cnblogs.com/fnlingnzb-learner/p/10334988.html
2019-06-19 15:42:36
496
原创 C++11 std::chrono时间库
主要时间类型std::ratio<num, den> 定义分式例如 std::ratio<60, 1> minutes;//<分子,分母>一分钟60秒 std::ratio<60 * 60> hource;//1小时3600秒 std::ratio<1, 1000> milliseconds; //1ms...
2019-06-18 14:45:05
26430
原创 删除^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
1202
原创 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
6812
原创 记一次内核升级导致的问题
最近嵌入式平台的内核进行升级,项目依赖的SDK重新编译提供给我们。但是在使用过程中,出现开O2编译运行抛异常,而开O1则正常的现象。刚开始以为是代码问题,各种加打印测试跟踪,就是没找出原因。最终找SDK的同事提供他们的DEMO和依赖的系统头文件,发现系统头文件跟我们使用的不一样。更新头文件之后,重新编译,没再抛异常。平台或者库升级,不仅仅是换库,还要看库的头文件是否有变动,以及查看库所依赖的...
2019-05-20 14:54:34
319
原创 记录一次压测问题
压测出的问题同一套程序,之前放在服务器上使用,公司内部压测和发布给客户使用,均未出现问题。后由于客户业务需求,将其移植到嵌入式平台。公司内部压测过程中,出现三种异常。问题1:大并发压测,服务进程被killed掉。问题2:大并发压测,服务挂掉,最后的打印为底层的错误日志。问题3:大并发压测,服务挂掉,打印另外的底层错误日志。分析:对于问题1,开始怀疑是内存泄漏,编译选项中添加-o0...
2019-05-15 20:26:45
245
原创 修改文件描述符限制数
一、代码修改进程的文件描述符限制数,仅当前进程生效#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
655
原创 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
758
原创 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
589
原创 按行读取文件
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
764
原创 工具函数
判断端口是否被占用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
332
原创 SDP协议总结
一、基本要求1、SDP的表示SDP(Session Description Portocol)会话描述协议,通常通过内容类型为"application/sdp"的MIME来表示。2、媒体和传送信息SDP可包括以下媒体信息:媒体类型(音频、视频等);传送协议(RTP/UDP/IP, H.320等);媒体格式(H264视频,AAC音频等);传输地址和端口;二、语法内容1、SDP...
2018-12-06 21:04:31
4367
转载 视频相关十大开源项目
视频相关十大开源项目1、 OpenH323项目 (★★★★★)上榜理由:最著名的H.323开源协议栈,视频会议开发必备协议栈,强烈推荐最著名的H.323开源协议栈,包含了全部的H.323协议功能,并有大量视频会议实现的参考例子,如终端、MCU服务器、gk等H.323协议的核心组成部件,Openh323是H.323协议首选协议栈,同时也是我们视频会议开发最值得作为参考的开源项目之...
2018-12-03 11:06:27
2702
原创 音视频开发常用工具
1、VLC播放器VLC支持多种常见音视频格式,支持多种流媒体传输协议,也可当做本地流媒体服务器使用,功能十分强大。下载地址:https://www.videolan.org/2、Elecard Stream Analyzer码流分析工具Elecard Stream Analyzer是很给力的码率分析工具,可直接查看码流中协议规范定义的字段值。例如:分析H264分析,查看SPS、PPS中各...
2018-11-28 11:59:02
1720
原创 RTP解析音视频帧
RTP解析音视频帧RTP解析H264、AAC负载解析H264解析AAC封装AAC的ADTS头部CADTS.hCADTS.cpp采坑心得附录:音频抓包分析RTP解析H264、AAC负载RTSP中音视频是通过RTP传输的,本文记录从RTP解析出H264、AAC的过程。协议介绍可参考 https://blog.csdn.net/lostyears/article/details/51374997...
2018-11-27 20:51:15
5949
6
原创 Thread类相关问题
Thread类相关问题,介绍了start()方法与run()方法的联系与区别,synchronized关键字的用法与实现原理,实例锁与全局锁的区别,线程等待wait()与线程唤醒notify(),Thread与Runnable的关系等内容
2017-11-25 12:02:23
211
原创 Android开发中常见内存泄漏问题
内存泄漏主要分为以下几种类型:1.静态变量(包括但不限于单例)引起的内存泄漏。注意静态变量持有对象的生命周期。2.非静态内部类引起的内存泄漏。静态内部类,弱引用访问。3.匿名内部类引起的内存泄漏。静态内部类,弱引用访问。4.资源未关闭引起的内存泄漏。退出前关闭资源。
2017-09-20 17:36:47
322
原创 Java内存管理
Java内存回收主要关注Java堆,为了内存管理的方便,一般将Java堆分为新生代、老年代。新生代的特点是大部分对象“朝生夕死”存活率低,适合使用复制算法。老年代中的对象存活率高,选用标记整理算法。Java堆也不是越大越好,Java堆越大,GC的频繁降低,但是单次GC的耗时大大增加,影响用户体验。
2017-09-20 14:11:24
220
原创 String中的字符串拼接问题
String的+操作是一种语法糖,其本质是创建了临时的StringBuild对象进行append操作,然后toString()赋给原来的String引用,因此大量字符串拼接不要直接用String,应该使用StringBuild或StringBuffer,其中StringBuild不考虑线程同步,效率更高,StringBuffer考虑线程安全,效率略低于StringBuild。
2017-09-20 10:51:55
6881
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人