- 博客(93)
- 收藏
- 关注
原创 STL unordered_set的eraseyong fa
In C++11 erase方法返回新的指针 指向下一个有效的元素,避免在原来失效的迭代器上做增长。但是这里还有一点是,要想彻底清除内存值,需要调用clear函数。用循环的方法删除内置范围的元素,这种做法是未定义的,也就是说产生未知的操作。如下unordered_set的erase操作导致程序崩溃,crash。这个时候 ++__begin 被调用,元素被删除,迭代器是无效的。
2023-07-17 15:05:56 301
原创 两个模块类的static静态成员相互依赖,释放顺序错误导致crash问题
两个业务模块中,类的static静态成员相互依赖,如果由系统控制释放顺序,顺序错误导致内存破坏的crash问题,使用valgrind扫描结果展示的内存问题,其实是最后的结果,但并不是问题的root cause。
2021-12-02 16:14:49 659
原创 C++编译过程中析构函数只声明未实现报错
/usr/bin/ld.gold: the vtable symbol may be undefined because the class is missing its key function具体分析参见如下文章:undefined reference to 'vtable for std::length_error' 问题解决_Blog of Chauncy Wang-CSDN博客
2021-11-24 14:58:42 1540
原创 getAddrInfo与DNS域名解析与ping
ping某个域名的详细过程 - lazypark - 博客园DNS客户端异常如何解决?_zhaowen_cug的专栏-CSDN博客_dns客户端
2021-11-21 13:30:11 2200
原创 GGA的经纬度的度分转换函数
double dmm2deg(float dmm){ return floor(dmm / 100.0) + fmod(dmm, 100.0) / 60;}
2021-09-08 14:08:41 1235
原创 Linux下网络模拟 iptables
! /bin/shecho "filter the bds3 cmd"iptables -A OUTPUT -m string --algo bm --string "rtcmSignal" -j DROPecho "start process"/mnt/hgfs/workspace/repos/yunduanyiti/sdk-core-1.9.0/sdk-core/demoecho "sleep 11s"sleep 11echo "cancel filter"iptables -D O.
2021-09-08 10:35:00 372
原创 Linux下的内存管理工具ASAN
g++编译时,加入如下参数,引用Linux的ASAN内存管理工具,可以有效提高查看程序crash时的栈帧信息;使用方法如下:g++ -fsanitize=address -fno-omit-frame-pointer test_123456.cpp -o demo.bin -lasan如果出现程序crash的问题,则会直接打印相关栈帧信息。如下图示:...
2021-08-25 11:08:59 438
原创 C++常用功能
获取C++ 二维数组的行和列大小sizeof(Arr[0][0])//一个元素占用的空间,sizeof(Arr[0])//一行元素占用的空间,sizeof(Arr)//整个数组占用的空间int size=sizeof(Arr)/sizeof(Arr[0][0]);//数组元素总数int rows = sizeof(arr) / sizeof(arr[0]);//行数int cols = sizeof(arr[0]) / sizeof(arr[0][0]);//列数...
2021-08-23 10:19:20 122
原创 计算有效的字符串长度
规则 :给定一个只包含两种字符的字符串:(,) ,其他字符均为无效1、任何左括号(必须有相应的右括号)。2、任何右括号)必须有相应的左括号(。3、左括号(必须在对应的右括号之前)。4、有效字符的长度为左括号和右括号的相加。#include<iostream>#include<string>#include<vector>#include<stack>using namespace std;int cal...
2021-08-19 10:03:56 1653
原创 指定分隔符分割字符串
/*********************************************************************** Function: split_str* Description: Splits the target string by the specified character* Input: psrc: Pointer to the data to be processed psrc_len: The ...
2021-08-14 16:38:13 314
原创 Makefile -D 配置文件转换为编译宏
-include $(DOT_CONFIG_FILE)-include $(IDS_SDK_ROOT_PATH)/project.config+CFLAGS += $(shell sed -n -r 's/^(CONFIG_\w+)\s*=\s*y/-D \1/p' $(DOT_CONFIG_FILE))
2021-08-10 10:27:21 131
原创 软件开发流程和规范
1 能力和经验 1.1 是否有软件质量管理体系和流程文件或者具备汽车行业相关资质(CMMI,ISO26262, ISO/IEC 15504 v.2.5 (ASPICE)等) * 1.2 是否有类似产品的配套经验 1.3 该组织是否有满足项目要求的足够数量的软件工程师? ...
2021-06-24 19:41:28 954
原创 unix内核消息队列的实现(C),另附信号量和共享内存
send.c: #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #include <string.h> typedef struct msgbuf{ //函数要求用户自定义一个结构体 long mtype; char mtext[128];//默认12...
2021-06-23 11:54:50 216
原创 docker容器不能安装git, apt install git不能执行
在cocker1、使用命令:apt-get update2、apt install net-tools
2021-06-20 11:19:28 940
原创 项目管理积淀-测试报告
1 引言1.1 编写目的1.2 项目背景1.3 系统简介1.4 术语和缩略语1.5 参考资料2 测试概要2.1 测试环境与配置2.2 测试方法和工具3 功能测试3.1 测试概要(千寻研发部分列表报表)3.2 管理端模块A(大唐V2X协议部分报表)4 性能测试4.1 传输数率5 可靠性测试5.1 RTCM可靠性6 安全性测试7 易用性测试7.1 APP&OBU等项8 兼容性测试(一致性)9 整体测试结果分析9.
2021-06-03 16:13:45 119
原创 为什么优秀的嵌入式程序员很少
欢迎大家积极留言。 最近上猎聘上看了下,发现市场对优秀的嵌入式程序员需求很大,懂Linux内核,QNX实时操作系统或者FreeRTOS,能熟练移植内核到嵌入式系统,懂驱动(各种驱动I2C,UART,CANFD,SPI等等)。精通C/C++这是基本要求,精通TCP/IP 。等等要求不一而足。 很多人写了几年代码,有机会到小组长了,就会放弃写代码,这是经常看到的上升通道。当然有很多技术确实提升不了,这中情况就不用讨论了。...
2021-05-27 16:33:25 445 1
原创 socket Linux超时返回值判断
socket 超时时间设置方法:intnNetTimeout=1000;//1秒,//设置发送超时setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO,(char*)&nNetTimeout,sizeof(int));//设置接收超时setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO,(char*)&nNetTimeout,sizeof(int));这样做在Linux环境下是不会产生效果的,须如下定义:str...
2021-05-27 16:25:54 496
原创 判断DNS是否正常 Wireshark
判断设备网路白名单是否正常,其中关于DNS是否可正常解析域名的操作,通过wireshark抓包来判断,如下图。
2021-05-25 11:12:42 604
原创 Linux top命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器top参数详解第一行,任务队列信息,同 uptime 命令的执行结果系统时间:07:27:05运行时间:up 1:57 min,当前登录用户: 3 user负载均衡(uptime) load average: 0.00, 0.00, 0.00 average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。load average数据是每...
2021-05-21 13:32:06 93
原创 shell 和钉钉钩子机器人上报
#!/bin/shcurl 'https://oapi.dingtalk.com/robot/send?access_token=96259f60249d4e270fe6847c4f9c8e5a4daea4e94bd6e681592e6e28e41f9509 ' \-H 'Content-Type: application/json' \-d '{"msgtype": "text","text": {"content": "IP:'$(ifconfig eth0 |grep inet | grep
2021-05-21 10:11:22 98
转载 Linux cp命令的内涵
cp是啥 ? 是的,就是 Linux 是 Linux 下最常用的命令之一,copy 的简写,小伙伴 100% 都用过。cp 命令处于 Coreutils 库里,是 GNU 项目维护的一个核心项目,提供 Linux 上核心的命令。今天用cp命令,把小伙伴惊到了,引发了我对其中细节的思考。背景是这样的,奇伢今天用cp拷贝了一个 100 GiB 的文件,竟然一秒不到就拷贝完成了。一个 SATA 机械盘的写能力能到 150 MiB/s (大部分的机械盘都是到不了这个值的)就算非常不错了,所以...
2021-05-10 10:50:59 687
原创 Linux free命令
那么,应用程序和linux会怎样看待buffers/cache呢?如下图: 在旧版linux中,free命令的结果把buffers/cache归纳到used中。可见,这是站在linux视角的(如下图片是另外一台服务器): 而在新版linux中,free命令的结果没有把buffers/cache归纳到used中。可见,这是站在应用程序角度的,如下: ubuntu@VM-0-15-ubuntu:~$ free -wh ...
2021-05-10 10:40:33 380
原创 GPSD创建
#include <stdlib.h>#include <fcntl.h>#include <stdio.h>#include <pthread.h>#include <string.h>#include <errno.h>#include <sys/stat.h>#include "qxwz_ids_log.h"#include "qxwz_gpsd_adpt.h"static pthread_mute
2021-05-08 14:06:21 242
转载 std::lock_guard作用域范围
std::lock_guard作用域内自动上锁解锁对于不同线程访问统一资源时,为了避免冲突一般都通过对目标共享变量上锁和解锁,让共享变量互斥第一种方式:一般情况可以在共享变量前后分别上锁解锁,至少需要以下三个操作复制代码// 定义锁std::mutex m_mutex;// 上锁m_mutex.lock();// 上锁和解锁之间为对共享变量的访问操作.....// 解锁m_mutex.unlock();第二种方式:使用std::lock_guard,在std::loc
2021-05-03 09:01:05 4051
原创 Linux 系统命令之free
total usedfree shared buffers cachedMem: 255268 238332169360 85540 126384-/+ buffers/cache: 26408228860Swap: ...
2021-04-23 13:47:24 115
原创 虚函数和纯虚函数的区别
1.虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstractclass),而只含有虚函数的类(class)不能被称为抽象类(abstractclass)。 2.虚函数可以被直接使用,也可以被子类(subclass)重载以后以多态的形式调用,而纯虚函数必须在子类(subclass)中实现该函数才可以使用,因为纯虚函数在基类(baseclass)只有声明而没有定义。3.虚函数和纯虚函数都可以在子类(subclass)中被重载,以多态...
2021-04-10 20:37:15 398
原创 protobuf安装遇到的坑
在安装了protobuff,https://github.com/protocolbuffers/protobuf/releases/tag/v3.15.6然后安装protoc,执行命令,sudo apt install protobuf-compiler执行protoc --c_out=. xxxxxx_cloud.proto,看到如下报错。protoc-gen-c: program not found or is not executable--c_out: protoc-gen-c: P
2021-04-02 16:30:54 1794
转载 valgrind的使用方法
1.2 工具Valgrind的最新版是3.11.0,它一般包含下列工具:1.Memcheck最常用的工具,用来检测程序中出现的内存问题,所有对内存的读写都会被检测到,一切对malloc()/free()/new/delete的调用都会被捕获。所以,它能检测以下问题:对未初始化内存的使用;读/写释放后的内存块;读/写超出malloc分配的内存块;读/写不适当的栈中内存块;内存泄漏,指向一块内存的指针永远丢失;不正确的malloc/free或new/delete匹配;memcpy()相关函数
2021-04-01 12:55:54 359
原创 malloc分配机制
malloc采用了两中不同的方式来处理内存申请。1. 若分配内存小于 128k ,调用 sbrk() ,将堆顶指针向高地址移动,获得新的虚存空间。2. 若分配内存大于 128k ,调用 mmap() ,在文件映射区域中分配匿名虚存空间。...
2021-04-01 11:38:32 161
原创 git pull 拉取最新代码时,报错,原因是虚拟机Linux没有空间导致的
来自 code.wz-inc.com:IDS/QXV2X-CORE* branch dev -> FETCH_HEAD在您刚刚获取到的引用中没有合并操作的候选。通常这意味着您提供了一个通配符引用规格但未能和远端匹配。
2021-03-24 11:17:19 600
原创 XCODE 创建新的工程,jump to definition快捷键生效
1.创建工程:2.选择要加入工程的文件拖入相关工程,如下图左边红圈,选择按照右边红圈所示
2021-02-26 15:50:18 362
原创 GCC -C main.c -o a.o
GCC-o选项使用举例1) 将源文件作为输入文件,将可执行文件作为输出文件,也即完整地编译整个程序:$ gcc main.c func.c -o app.out将 main.c 和 func.c 两个源文件编译成一个可执行文件,其名字为 app.out。如果不使用 -o 选项,那么将生成名字为 a.out 的可执行文件。2) 将源文件作为输入文件,将目标文件作为输出文件,也即只编译不链接:$ gcc -c main.c -o a.o将源文件 main.c 编译为目标文件 a.o。如果.
2021-02-20 14:08:01 1089
原创 Linux sed
如果要加两行“xiaowu”可以用一下语句,注意用“\n”换行[root@xiaowu shell]# sed -i'/bbbb/a\xiaowu\nxiaowu' fileaaaabbbbxiaowuxiaowuccccdddd如果要在第二行即“bbbb”行的上添加一行,内容为“xiaowu”,可以把参数“a”换成“i”[root@xiaowu shell]# sed -i '/b/i\xiaowu' fileaaaaxiaowubbbbccccd.
2021-02-19 15:37:52 87
转载 linux shell中$0,$?,$!等的特殊用法
一、Shell脚本中$0、$?、$!、$$、$*、$#、$@等的意义说明(1)$$Shell本身的PID(ProcessID,即脚本运行的当前进程ID号)(2)$!Shell最后运行的后台Process的PID(后台运行的最后一个进程的进程ID号)(3)$?最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)(4)$-显示shell使用的当前选项,与set命令功能相同(5)$*所有参数列表。...
2021-02-08 15:27:17 837
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人