
c++
文章平均质量分 71
zhouyongku
这个作者很懒,什么都没留下…
展开
-
C++计算性能优化
计算性能优化 c++程序性能优化原创 2022-03-16 15:53:45 · 2241 阅读 · 0 评论 -
Linux C++面试常见问题
static_cast/dynamic_cast等四种转换深度优先和广度优先红黑树特征vector底层内存分配原理同步锁多种 自旋锁等锁 已回答mutex map event criticalsection还远远不够内存页管理机制c++多态实现的底层原理 非ftable函数栈调用原理 入栈原理和出栈原理 变量如何变化。内存碎片优化算法tcp原理算法类模板虚拟化hash算法和冲突解决算法内联函数是否可以为虚函数编写string实现类信号槽原理thread condition_变.原创 2022-02-21 20:56:12 · 1994 阅读 · 0 评论 -
解决Segmention fault的思路和方法
segmation fault解决方法原创 2022-03-09 09:26:50 · 4557 阅读 · 0 评论 -
linux栈调用原理
针对以下代码进行分析 1 #include<iostream> 2 #include<stdio.h> 3 #include<stdlib.h> 4 5 int Calc( int a,int b,int c) 6 { 7 8 9 c=12; 10 b=11; 11 a=10;原创 2022-02-23 13:46:10 · 1155 阅读 · 0 评论 -
vector list map set deque效率对比
测试结果:1.增加元素线性表为末端插入,树是insert,耗时统计如下:vector<deque<list<set<map分析:list增加应该很快,但是实际上由于其内存分配策略是立即使用,则分配时间较长。new时间大于delete2.前端删除元素 耗时如下:list<set<map<vector<deque分析:树用迭代器删除第一个,只有节点操作,而且有预留内存机制,所以树删除很快。list并不是快,而是deque和vector慢,.原创 2022-02-21 12:17:19 · 892 阅读 · 0 评论 -
GRPC协议兼容问题
最近因为GRPC协议兼容问题受困,于是做了一些实验来验证其原理proto文件syntax = "proto3";package IRPC;message REQHEADER{ uint32 nState=1; //校验位 表面数据类型,为了快速定错。0- 无数据 1- 请求数据 uint32 nByteLen=2; //整个grpc请求或响应数据的总长度 uint...原创 2021-12-29 15:13:42 · 1462 阅读 · 0 评论 -
动态库和静态库中函数与变量冲突
最近遇到静态库、动态库、动态库多个版本之间的问题,做了一些实验,得出如下结论:静态库间函数 含有相同名称函数,无论参数、返回值是否相同,则会提示冲突。 静态库与动态库函数 函数名、返回值、参数完全相同 则只调用静态库 函数名称相同 形式不同 则会各自调用各自 动态库与动态库函数 函数名完...原创 2021-12-27 11:31:06 · 1374 阅读 · 0 评论 -
linux so库soname
soname qt makefile so linux原创 2021-12-24 09:01:13 · 1163 阅读 · 0 评论 -
sizeof与字节对齐
字节对齐原理:1.当前项与结构首地址的差需要是当前项字节数的整数倍2.当前结构总字节大小需要是所有项的最大字节数的整数倍struct A{ int a; float b; char c; double d; int *pa; char *pc;};int a= offsetof(A, a);//0int b= offsetof(A,...原创 2021-11-09 12:30:18 · 244 阅读 · 0 评论 -
32位机器和64位机器基本数据类型长度
测试对象:ubuntu64Ubuntu64位:类型 字节数char 1short int 2int 4float 4double 8 long 8lon...原创 2021-10-25 08:53:31 · 227 阅读 · 0 评论 -
利用信号灯和共享内存实现进程间同步通信
编写两个程序,利用同一个文件路径进行全局Key创建,然后创建两个信号灯,一个是读通知,一个是写通知。发送端:#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/ipc.h>#include<sys/shm.h>#include<unistd.h>#include<time.h>#include<sys/原创 2021-10-22 16:46:53 · 496 阅读 · 0 评论 -
TCP三次握手和四次挥手及拥塞控制
TCP是网络层级中第四层:物理层--->链路层(交换机)----->网络层(IP/路由器 三层交换机)---->传输层(tcp/udp)CP的主要特性对比:udp是面向无链接的,不需要维护与目标对象的链接状态 不保证数据可靠.而TCP恰好相反.TCP建立链接的过程:三次握手,断开链接的过程:四次挥手,保证网络传输质量:拥塞控制.下面是TCP的协议格式TCP三次握手:目的:1.握手是TCP保持链接的必要条件,有了握手才能保证数据完整性...原创 2021-10-17 10:36:28 · 514 阅读 · 0 评论 -
模块化c++团队产品开发接口头文件标准
模块化c++团队产品开发接口头文件标准:1.c风格需要声明 exterc2.函数调用约定 声明3.放置多个团队间冲突--函数名+前缀 一般是:公司简称+产品简称+模块简称 例如平板日志接口:exter "C" __stdcall CDZSPADLOGRES CDZSPADLOG_Init( const char *pStrFilePathName );4.提供日志回调以便于产品集成做问题详细跟踪5.高并发或者容易死锁等模块需要外部指针传入运行节点跟踪,当模块内部假死的时候 外部进行监控打印6.原创 2021-09-29 15:33:25 · 228 阅读 · 0 评论 -
Windows和Linux分别调试coredump方法
windows在mai函数开始处增加如下代码:inline BOOL IsDataSectionNeeded(const WCHAR* pModuleName){ if (pModuleName == 0) { return FALSE; } WCHAR szFileName[_MAX_FNAME] = L""; _wsplitpath(pModuleName, NULL, NULL, szFileName, NULL); i...原创 2021-09-26 14:17:52 · 1072 阅读 · 0 评论 -
海康威视设备发现sdp原理
首先,sdp是向239.255.255.250:1900发送udp消息以达到局域网广播目的,海康的sdp并没有像标准的ssdp那样包含:M-SEARCH,NOTIFY等关键字,而是采用自定义的xml字符串作为其私有协议。我用wireshark抓包得出:通过海康sdp客户端工具,点击刷新:客户端发送广播<?xml version="1.0" encoding="utf-8"?><Probe><Uuid>A3DD39B4-DA2E-4547-9C6C-484原创 2021-08-02 18:59:09 · 4742 阅读 · 0 评论 -
海康RTSP客户端连接深入分析
海康相机RTSP连接代码分析最近在做海康相机rtsp连接获取音视频的工作,现在介绍一下分析过程和源码。 RTSP客户端去连接服务器的最基本步骤如下: 一、分析url中的端口号,创建一个与服务器[S-PORT]端口号的TCP连接用于RTSP命令交互二、执行RTSP命令请求,告诉服务器可以连接到本地的端口[C-PORT]进行数据发送三、客户端从本地[C-PORT]读取原创 2021-07-01 10:37:30 · 50363 阅读 · 12 评论 -
YUV图像合成原理
YUV图像合成原理引言:在视频监控中最常用的就是图像拼接和字符叠加,25FPS的视频流,如果每隔40MS就从各个通道中取一幅图像来合成,则可以看到一个实时的合成视频。合成的过程也就是原始图像的拼接、缩放的过程,本文主要阐述UV分开存储的YUV420图像拼接的过程,实现下图的效果。一、原图图像格式1、图像常用的格式有两种RGB和YUV(1)YUV是原创 2021-07-01 10:37:10 · 9508 阅读 · 2 评论 -
CMakeList.txt真实项目案例
编译环境:zhouyong@ubuntu:~/work/AlarmServer/src$ uname -aLinux ubuntu 5.4.0-73-generic #82~18.04.1-Ubuntu SMP Fri Apr 16 15:10:02 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux安装cmakezhouyong@ubuntu:~/work/AlarmServer/src$ sudo apt-get install -y cmake原创 2021-06-25 17:21:32 · 527 阅读 · 0 评论 -
C++通用框架和库
Apache C++ Standard Library:是一系列算法,容器,迭代器和其他基本组件的集合 ASL:Adobe源代码库提供了同行的评审和可移植的C++源代码库。 Boost:大量通用C++库的集合。 BDE:来自于彭博资讯实验室的开发环境。 Cinder:提供专业品质创造性编码的开源开发社区。 Cxxomfort:轻量级的,只包含头文件的库,将C++ 11的一些新特性移植到C++03中。 Dlib:使用契约式编程和现代C++科技设计的通用的跨平台的C++库。 EASTL...原创 2021-06-24 13:35:41 · 1191 阅读 · 0 评论