自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (2)
  • 收藏
  • 关注

原创 Ubuntu18.04 dpkg: 处理软件包 mysql-server-5.7 (--configure)时出错:子进程 已安装 post-installation 脚本 返回错误状态 1

Ubuntu 18.04 无法安装mysql-server-5.7,显示dpkg返回错误状态

2023-09-01 17:38:01 1759 1

原创 Android 百度离线地图及存储权限申请

项目需要在无网络环境下访问百度地图,于是想到了使用百度的离线地图,特将使用过程中遇到的问题记录下来。安卓设备为华为平板,版本Android12.0 API31.

2023-06-06 17:25:50 867

原创 HashMap ConcurrentModificationException

有一个应用场景,需要多线程访问同一HashMap,其中线程一只作遍历查询,线程二进行添加、修改或删除,在实际使用过程中遇到了ConcurrentModificationException的并发修改异常。

2023-06-06 11:49:12 940

原创 Android 百度地图简单的地理围栏

需要在百度地图上划定一片矩形区域为限行区域,当车辆即将越过上边界以及左边界时需要在百度地图上进行语音以及图片弹窗的提示。学习了百度地图SDK地理围栏的源码,官方支持多种围栏的创建,但是貌似新版的SDK不支持fence类了,所以只好参考源码进行DIY。

2023-06-01 17:42:21 621

原创 Android 横竖屏转换问题

背景是需要在华为平板上部署一个能够进行相关中文语音提示,同时可以进行弹窗预警的APP,华为系统为鸿蒙3.0,对应Android API 12。在成功调通一版APP后,发现在平板上进行横竖屏转换后,Activity会重新创建,此后进行弹窗或语音提示导致APP异常退出。提示信息均为空指针或空对象类信息。

2023-05-16 15:06:00 533

原创 Android 调用TTS语音引擎过程及问题记录

背景是需要在华为平板上部署一个能够进行相关中文语音提示的APP,华为系统为鸿蒙3.0,对应Android API 12.

2023-05-15 11:39:21 4357 2

原创 百度sdk报错_网络访问问题

百度SDK报错

2023-05-13 20:32:02 258

原创 Android 获取SHA1值遇到 keytool 错误: java.io.IOException: Invalid keystore format

Android 获取SHA1值

2023-05-12 16:19:22 1244

原创 Android 百度地图SDK闪退

Android 调用百度地图SDK闪退

2023-05-12 15:39:16 1377

原创 记录一次C++使用system函数运行cmd的小bug

C++/python 中的system函数

2022-08-13 16:12:47 868

原创 记一次printf导致的异常内存操作bug

printf引发的内存操作问题  本来很简单的UDP通信程序,移植到嵌入式板子中运行,却发现在进行发送时,目的ip地址莫名其妙的被清空了,一开始还怀疑是板子里缺少库,后来又将程序中关于UDP的代码粘了出来单独搞了个UDP测试程序,发现没问题,能够正常通信。  在百思不得解的时候,发现两段代码里只是差了一个printf,立马检查该条语句,结果发现,在指定printf输出格式时,有一个应该是整形,结果被我强制输出成了浮点型,就导致了内存的异常操作,以至于目的地址被异常清空,错误代码如下:...

2021-11-16 15:58:46 1937

原创 VTD-传感器使用小结

VTD传感器使用总结在VTD中添加传感器分析传感器输出数据RDB_SENSOR_STATE_tRDB_SENSOR_OBJECT_tRDB_OBJECT_STATE_t  由于近期需要使用VTD搭建V2X二期应用场景,需要用到传感器进行目标感知并获取感知结果,以下对于VTD中的传感器使用简单进行下总结:在VTD中添加传感器  VTD中传感器模型是已经被搭建完成的,以链接库文件形式存在,可在使用时在GUI界面中进行选择,不过默认的perfectSensor就够用,目前我所用到的传感器模型包括参数也全是默

2021-09-05 01:25:53 4713 3

原创 C 多线程捕获段错误

C 多线程捕获段错误  

2021-07-28 16:32:29 286

原创 #pragma pack() 易忽略的问题

#pragma pack() 易忽略的问题  C/C++中,class、struct、union默认的大小对齐方式为按照成员变量所占空间最大的大小进行对齐,如:typedef struct test{ char a; int b; double c;}test_t;  则test结构体内所有成员变量按照double类型进行字节对齐,此时sizeof(test_t)等于8*3。在网络通信中,为了让数据包更紧凑些,我们往往希望能够通过#pragma pack预编译命令改变默认对

2021-06-28 11:12:41 521

原创 C 字符串替换

C 字符串替换  C语言没有提供写好的字符串替换函数,需要结合字符串查找、字符串拷贝以及字符串拼接等函数自行编写,示例代码如下:// 将strRes中的from替换为to,替换成功返回1,否则返回0。int StrReplace(char strRes[],char from[], char to[]) { int i,flag = 0; char *p,*q,*ts; for(i = 0; strRes[i]; ++i) { if(strRes[i

2021-06-22 10:39:15 2345

原创 C 记录编译时间、日期

C 记录编译时间及日期  近日做嵌入式开发时,需要记录软件版本,所以希望能够获取到当前程序的编译时间及日期,经查询,ANSIC标准已定义了可供C语言使用的预定义宏,其中包括:  1、__ LINE__ : 在源代码中插入当前源代码行号。  2、__ FILE __ : 在源代码中插入当前源代码文件名。  3、__ DATE __ : 在源代码中插入当前编译日期〔注意和当前系统日期区别开来〕  4、__ TIME __ : 在源代码中插入当前编译时间〔注意和当前系统时间区别开来〕  标识符__LINE__和

2021-06-22 10:32:32 1537

原创 asn1c编解码函数引发的段错误

asn1c编解码函数引发的段错误Encode函数uper_encode_to_new_buffer(&asn_DEF_MessageFrame, 0,msgFrame, (void**)&chbuf);  对于Encode函数,主要在于msgFrame编码后的地址空间会直接给到存放编码的buf,所以不需要对buf进行单独的申请以及释放,不然会报段错误,详细参见我之前的博客段错误(核心已转储)——那些易被忽略的细节Decode函数uper_decode(opt_codec_ctx,

2021-05-20 22:57:36 1119

原创 Ubuntu vscode无法输入中文

Ubuntu vscode无法输入中文  能够确认的是中文输入法已经安装成功,而且在除了vscode的地方都能够正常输入中文,唯独vscode不可以。原来是因为Ubuntu商店里安装的是阉割版的vscode,就是不能输入中文的,需要移除而后去官网下载安装包安装,有些东西果然还不能图省事。...

2021-05-17 16:46:54 2172 1

原创 Ubuntu18.04 替换vscode字体

Ubuntu18.04 替换vscode字体  Ubuntu18.04中vscode的字体实在是太丑了,空格距离极小,注释斜杠符又是那么的突兀,感观极差,影响心情,所以要换一个承受度好一些的字体。流程如下:首先通过git下载字体包sudo git clone https://github.com/tonsky/FiraCode.git#没有git的伙伴先通过 sudo apt install git 将git安装上  安装成功后,字体目录在/home/user_name/.vscode/exten

2021-05-17 16:04:20 1859

原创 Ubuntu navicat界面显示乱码

Ubuntu navicat界面显示乱码  在Ubuntu18.04中成功安装navicat后,打开软件发现显示界面中的显示全是方框,解决方法如下:  1、运行./start_navicat前,用vim编辑器打开start_navicat,将export LANG="en_US.UTF-8" 更改为export LANG="zh_CN.UTF-8",如果已经是后者了,则无需改动,转2;  2、打开navicat,工具->选项->编辑器,设置其显示字体为Noto Sans Mono CJK SC

2021-05-16 11:11:36 312

原创 MYSQL——ERROR1698(28000):Access denied for user root@localhost

MYSQL——ERROR1698(28000):Access denied for user root@localhost安装环境:  Ubuntu18.04+Mysql5.7。通过以下命令进行了安装:sudo apt install mysql-server-5.7结果在安装完成后通过root用户登录时报了上面的问题,其实就是因为安装过程中也没有设置过root用户的登录密码。解决方法:1、修改mysqld.cnf配置文件  找到并打开mysqld.cnf,然后在该配置文件中的[mysqld

2021-05-16 10:51:17 217

原创 x,y直角坐标系转经纬度WGS-84坐标系

x,y直角坐标系转经纬度WGS-84坐标系  坐标系的转换采用了白塞尔大地主题反算算法,需要指明x,y坐标系的中心点所对应的现实世界的经纬度,代码如下://获取方位角double getAngle(double x, double y) { double angleTemp; if (x == 0 && y > 0) //y轴正向 { angleTemp = 0; } if (y >= 0 && x > 0) //第一象限及x轴正向

2021-05-14 09:34:08 4484 4

原创 Linux 本地socket通信

Linux 本地socket通信  话不多说,直接上代码: //server.c#include <sys/socket.h>#include <sys/un.h> // 包含本地socket的结构体int main(){ int srv_sockfd; srv_sockfd = socket(AF_UNIX, SOCK_STREAM, 0); struct sockaddr_un srv_addr; struct sockaddr_

2021-05-13 10:05:27 452

原创 段错误(核心已转储)——那些易被忽略的细节

段错误(核心已转储)——那些易被忽略的细节  段错误,就是一旦一个程序发生了越界访问,cpu 就会产生相应的保护,于是 segmentation fault 就出现了,通过上面的解释,段错误应该就是访问了不可访问的内存,这个内存区要么是不存在的,要么是受到系统保护的,还有可能是缺少文件或者文件损坏。更多关于段错误的介绍可参照C语言再学习 – 段错误(核心已转储)。  对于段错误,常伴随着“free():invaild pointer”或者"double free or corruption"等,目前我遇到

2021-05-11 23:34:27 1580 2

原创 C 多线程互斥锁pthead_mutex_t

C 多线程互斥锁pthead_mutex_t  进行C多线程开发时,需要调用<pthread.h>中的相关变量定义以及函数,对于新建一个线程无外乎下面几个步骤:  1、定义线程函数;  2、定义线程标识符pthread_t;  3、通过pthread_create函数创建线程;  4、调用pthread_join阻塞进程使得线程中函数完全运行(可选)#include <pthread.h>void* testPthread(void* arg){ printf("Hell

2021-05-01 14:54:22 238

原创 C sprintf 拷贝异常

C sprintf 拷贝异常  对于非安全的sprintf字符串拷贝函数,有时会发现,拷贝后的目的字符串输出后末尾会有乱码,或者目的字符串并没有得到想要的值,且源字符串的值也被改变了。  其实根本原因在于:1、对于字符串,系统需要获得该字符串的终止符,也就是需要知道该字符串的终止位置,若源字符串和目的字符串大小一致,则会出现上述问题,最保险的方法应该是为目的字符串申请至少大于源字符长度1个字节的空间;2、由于sprintf中间的format参数,会默认源字符串具有该指定类型的长度,如果为其申请的目的字符

2021-04-30 23:45:23 502 1

原创 Linux C 内存管理-实例分析

Linux C 内存管理-实例分析  Linux C 内存管理其实可以总结成一句话:管理你该管理的。即由系统静态分配的内存不要去释放,系统会在变量生命期结束时自动释放内存,而自己动态分配的内存则需要主动释放,同时要注意,同一块内存不要释放两次,更多具体关于Linux 内存管理的介绍可参考Linux内存管理以及段错误(核心已转储)。接下来通过一个实例来讲述下内存管理的过程。  给定了一个字符串指针,并为其分配了一定的地址空间,如下所示:#include<stdlib.h>#include&l

2021-04-29 21:21:29 153

原创 C 函数返回字符串

C 函数返回字符串  在讨论几种函数返回字符串方法之前,首先要对函数有一个简单的认识,无论是在形实结合时,还是在return语句返回时,都有一个拷贝的过程。你传进来的参数是个值,自然函数在工作之前要把这个值拷贝一份供自己使用,你传进来的是个地址,函数也就会拷贝该地址供自己使用。同样return返回时,如果返回一个值,函数会将该值拷贝一份以提供给主调函数使用,返回的是一个指针(也就是地址),自然拷贝的就是一个地址,供主调函数使用。  下面给出一个错误的例子:#include <stdio.h>

2021-04-28 20:42:56 351

转载 Linux 内存管理

     提到C语言,我们知道C语言和其他高级语言的最大的区别就是C语言是要操作内存的!      我们需要知道——变量,其实是内存地址的一个抽像名字罢了。在静态编译的程序中,所有的变量名都会在编译时被转成内存地址。机器是不知道我们取的名字的,只知道地址。     内存的使用时程序设计中需要考虑的重要因素之一,这不仅由于系统内存是有限的(尤其在嵌入式系...

2021-04-28 20:18:04 90

原创 利用asn1c 工具填充CASE消息集-BSM

利用asn1c 工具填充CASE消息集-BSM  利用asn1c工具填充BSM消息可简单总结如下:  1、使用asn1c工具将asn.1源文件解析成*.h和*.c文件。  2、新建test.c,包含上一步生成的"MessageFrame.h",填充BSM消息集,最后编码。代码如下:#include "MessageFrame.h"#include <sys/time.h>#include <time.h>void BSMEncode(){ int current

2021-04-27 20:09:46 1136 10

原创 C 函数引用参数传递Error——存在正文时不允许未命名的原型参数

C 函数引用参数传递error问题描述:  在test.c中,定义函数并为函数传引用参数,代码如下:void test(int& a){ //.... a = 666;}  结果在定义时IDE便提示error:  1、请输入")" C/C++(18)  2、存在正文时不允许未命名的原型参数 C/C++(141) 原因分析:  .c文件为纯C语言,不支持引用。解决方案:  1、将*.c文件重命名为*.cpp文件。  2、将引用传参改为指针传参,即:void test(i

2021-04-27 19:29:02 16128 5

原创 Linux (.text+0xba):对“floor”未定义的引用

Linux (.text+0xba):对“floor”未定义的引用  近期在Ubuntu Linux中编写C 程序,需要用到<math.h>中的"floor"函数,但是编译成功后运行时却报了标题上的错误,经网上查阅得知:在linux环境下编译C源代码时,除了添加头文件 #include <math.h>外,还需要链接数学库,即在编译语句后面加一个 -lm,如:gcc -o test -lm test.c  在网上关于链接库的一些资料整理如下:  C代码调用math.h中的函数

2021-04-27 00:28:01 1611

原创 Linux 获取毫秒级时间戳

Linux 获取毫秒级时间戳  在Linux中获取ms级别的时间戳,需要结合gettimeofday()以及localtime()函数。如下所示:#include <time.h>#include <sys/time.h>/* 日志时间戳,精确到毫秒 */char* get_stime(void){ static char timestr[200] ={0}; struct tm * pTempTm; struct timeval time;

2021-04-27 00:10:48 10796

原创 Linux syntax error: unexpected end of file

Linux syntax error: unexpected end of file  在网上查阅,大多数都是运行sh脚本时报的错误,解决办法是检查sh脚本文件末尾是否存在多余的换行符。然而我这边是直接运行可执行程序报的错。  其实现在想想这个问题就挺搞笑的,我居然想将Ubuntu gcc编译后的程序直接拷到嵌入式Linux上运行,结果当然是无法运行的,对于嵌入式Linux,由其架构版本区分,都有相配套的交叉编译链,需要利用交叉编译后,程序才能够在嵌入式Linux上正常运行,如arm-linux-gcc等

2021-04-26 23:57:14 169

原创 C 运算符优先级——位运算符和逻辑运算符

C 运算符优先级——位运算符和逻辑运算符  在进行C语言开发时,若单条表达式用到的运算符过多,需要注意运算符的优先级,否则无法得到欲得到的结果,最显而易见的便是“先算乘除,后算加减”。  说说我遇到的问题吧:在if中判断某一个字符&0x80后是否等于0,一开始我是这么写的:if (data & 0x80 == 0) { //code ...}  结果发现明明字符data最高位为0,但依然无法进入if语句块,而单独输出data & 0x80时,其输出结果为0,于是猜想可

2021-04-26 23:44:06 6995 2

原创 Matlab2018a license checkout failed -8

  参照网上教程安装matlab2018a后,双击点开快捷方式,发现提示“license checkout failed -8”,  license_stadalone.lic以及netapi32.dll均替换到了安装目录下还是不行,后来在网上找到了这样一篇博客,里面说应该替换libmwlmgrimpl.dll,并且对于2017a好用,这个方法我还没有试过,感兴趣的大家可以试一试。  后来看到别人的评论,由matlab自动创建的快捷方式打开matlab就会导致license check out fai

2021-04-15 13:49:46 7984 22

原创 MATLAB2018a安装卡在“弹出DVD1插入DVD2”

环境:  WIN10+破解版Matlab2018a问题描述:  按照网上常见教程安装安装matlab时,卡在“需要DVD2”这里:原因分析:  虽然也像教程中所说,弹出了DVD1并装载了DVD2,但是点击确定就是无反应,其实就是因为matlab没有正确找到DVD2的驱动路径,如下所示,虽然弹出了DVD1并装载了DVD2,但是win10下二者的盘符不一致:如我的就是一个是J:,而另一个是H:解决方案:  通过磁盘管理将后装载的DVD2更改成之前DVD1所在的盘符:(右键此电脑-&gt

2021-04-15 11:53:15 3162 3

原创 Ubuntu14.04 安装VSCode

Ubuntu14.04 安装VSCode  由于项目的需要,需要在Ubuntu14.04中进行C开发,选择IDE时不由自主的想到了VSCode,想着应该和18.04一样直接官网下载.deb文件安装就可以了,但并非如此,双击打开.deb安装包后,虽然有install的按钮,但是点击后进度便不变了,始终卡在一个地方,故此方法作废。  经网上查询,大多推荐利用ubuntu-make的方式进行安装,即运行以下命令进行安装:sudo add-apt-repository ppa:ubuntu-desktop/ub

2021-04-09 17:07:20 3271 2

原创 C/C++结构体大小问题

C/C++结构体大小问题  自定义的结构体大小与其内所定义的成员变量以及所采用的对齐方式有关。在进行网络编程时,若用结构体进行接收或者发送,则接发两端所定义的结构体大小必须一致,若跨系统编程,还要注意同一数据类型可能在不同系统下的大小也不同,如下表所示:  所以跨系统编程时,应尽量避免使用long类型,或者对其进行特殊处理。  当未指定对齐方式时,默认会按照结构体内长度最大的成员变量进行对齐,如下图示例:(操作系统为32位)  可以通过指定对齐方式的方法来改变结构体的对齐方式,在C/C++中通过.

2021-03-29 10:33:48 546

原创 C++ List遍历异常

问题描述:  在两个线程中,线程1通过UDP接收数据动态的向LIst中添加数据,线程2实时动态遍历List中的数据,发现虽然在线程1中所有的数据均已添至List中,但是线程2中却无法成功遍历List中所有的数据,代码如下:void *pthread1(void *arg) { WORD sockVersion = MAKEWORD(2, 2); WSADATA wsadata; if (WSAStartup(sockVersion, &wsadata) != 0) { cout &l

2021-03-23 23:06:07 645

asn1c工具 v0.9.29

将asn.1源文件解析成C头文件和源文件

2021-10-09

LTE-V2X_ASN.1.zip

车联网V2X消息集asn.1定义

2021-04-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除