自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 工作中总结的各调试经验,各指令总结

Linux配置库环境变量 export LD_LIBRARY_PATH=/usr/local/lib/my_lib:$LD_LIBRARY_PATH。linux查看符号表 (可执行文件或者库) 虚拟机中使用 objdump -T ZH320MAN |grep GLIBC_2.1* 查看C库版本。LINUX启动sshd /etc/init.d/sshd start /C301 或者 Ubuntu12。

2025-02-08 18:24:16 386

原创 三相电的相电压、线电压、额定值、有效值,变比,零序电压,零序电流,三相三线制的三角形连接,三相四线制的星形连接

所以使用继保仪加量时,加A、B、C三相的电压幅值为57.735,这里的幅值就是有效值,所以看录波的波形时,峰值其实是81V。在二次设备配置中经常有根电压系统相关的名词,本身不是学电气的,有些名词经常查了忘,后续工作所有遇到跟电气相关的知识总结在此帖,便于后续直接查看,避免每次都要重新查、重新梳理。三相四线制的星形连接输电线路,每两根线之间的电压为线电压,因为存在角度的关系,所以线电压为相电压的根号三倍。没有关系,线电压就是不波动的,相电压和线电压的关系是根号3倍,电压的有效值和峰值的关系是根号2倍。

2024-12-27 21:50:43 2442

原创 UBoot、BIOS、grub各自的功能、区别,UBoot详细过程

例如,CPU 内部的程序计数器(PC)会被设置为特定的复位向量地址,这个地址指向芯片内部固化的启动代码(通常在芯片内部的 ROM 或 Flash 中),在嵌入式装置中,这个所谓的启动代码往往就是UBoot的一小部分。由于从事的是嵌入式应用开发,有次和驱动的沟通过程中提到flash中存放的uboot,平时工作中也会提及升级uboot的事情,一直疑惑uboot到底做了哪些工作,以及平时听到的BIOS,grub,感觉它们几个的功能很类似,但是不清楚各自都属于什么平台,在什么场景下干活,干的活又有什么区别。

2024-12-10 23:48:18 879

原创 NULL字符串,空字符串,字符0以及截断字符串的\0

注意这两种0的区别,公式(1)是等于数字0,字符串的截断也是判断数字0,公式2是字符0,转ascii表得来,按int格式打印‘0’可以得道实际值其实是48。这种定义的是空字符串,与上一个不同的是,这个pstr是分配了内存的,已经实例化的,字符串里面没有内容而已。联想到之前使用0截断字符串,而打印字符串时有的字符串中明明又能含有0并不截断,写篇文章好好理清以下这中间的关系。这种定义的NULL字符串没有分配内存,任何跟字符串相关的方法都是不能用pstr这个对象来访问的,因为它没有被实例化。

2024-09-20 14:26:23 262

原创 Linux下利用gdb core文件排查可执行文件的段错误

最开始查看对core文件的大小限制为0,我先执行了一次 ulimit -c 1024,确实生成了core文件,但是后面gdb调试的时候直接报core文件被截断了,所以这个地方建议直接将限制改为unlimited,故执行命令 ulimit -c unlimited。最近一个项目中,编一个可执行文件出来,编译的时候没有报错,执行的时候报段错误。设置完成之后在执行刚刚重启或者报段错误的程序,这时候就发现在可执行文件的路径下就生成了core文件。2、取消当前文件夹下对core文件的限制,生成core文件。

2024-06-07 11:42:32 514

原创 各功能贴、有用知识点总结

有些知识点也想自己总结一份的,无奈很多时候没有时间,也将总结在这。主要内容:1、access;2、fopen是否能够打开;3、stat函数获取是否能够获取文件信息成功。C语言或者c++获取文件是否存在。USB总线、设备描述符、驱动相关。

2024-05-24 13:50:44 218

原创 此帖将陆续总结C++编译过程中遇到的未声明问题

1、一定注意一个函数调用另一个函数时,要么将此函数的定义或者声明写在前面,要么包含被调用函数的头文件(其实了解包含头文件的操作,其实也是相当于将函数的声明写在前面)。类中函数的调用不需要管声明或者定义顺序其实也是如此,在头文件中提前声明了。

2024-02-06 15:11:12 493

原创 记C301上5NMAN编译时报错,QT及交叉编译

VS上点击QT VS TOOLS栏,Qt Project Settings,Version,把Version的位置勾选上,默认可能是没选的。还是以上的位置,点击右侧的Qt Modules,勾上本项目会用到的组件。碰到了两类错误,错误如下图。

2024-02-05 14:05:03 496

原创 网关、路由、交换机、路由器、路由表、VLAN,泛洪

再从A发出广播帧的话,交换机就只会把它转发给同属于一个VLAN的其他端口——也就是同属于红色VLAN的端口2,不会再转发给属于蓝色VLAN的端口。同样,C发送广播信息时,只会被转发给其他属于蓝色VLAN的端口,不会被转发给属于红色VLAN的端口。集线器、交换机都是做端口扩展的,就是扩大局域网(通常都是以太网)的接入点,也就是能让局域网可以连进来更多的电脑。当前局域网(或子网)的网关是属于当前局域网内的一个IP地址,网关是局域网内其他所有设备通向其他局域网(子网)的出口。路由器给的网关是自动给的吗?

2024-01-12 16:30:39 482 1

原创 多线程调试避雷!多线程谨慎使用单步调试!!

多线程调试不要一直用单步调试。尤其排查起线程时,单步调试到起线程后其实那块可能已经起线程成功了,但是你单步的调,CPU没立马切到你新起的线程那去,所以容易看起来像是没创建成功。所以对于新起的线程,想验证起成功没,不要去单步调,直接开跑,这样才能快速验证线程有没有起成功。先项目中基本都是多线程并行,但是对于多线程的调试,本人还不是很熟悉,此贴作为多线程调试经验的记录。这也从侧面证明了一点,多线程其实也是单线程?1、有个坑已经连续踩了两次,每次调的身心俱竭。

2024-01-09 11:35:43 391

原创 Windows、Linux创建线程的相关操作,以及线程入口函数的问题

类里面的方法,作为线程的启动函数时,函数必须为全局函数或者静态函数。而作为类的静态函数,如果该函数中又要使用类的其他非静态方法,那就涉及到类的静态成员对非静态成员的调用,实现这种调用有几种方案,可以记录一下。

2024-01-08 09:09:55 403

原创 网络报文发送方、接收方以及网络传输中的大端小端问题

而数据部分,你那边怎么存的,发过来我还是怎么存,只要不是一个大端一个小端,我接受完了还是照样就能解析了,所以没有必要去发的时候转换一道,接的时候又转换回来,交换机、路由器不需要数据这玩意,你把他们要的IP和端口按照大端转换好就行,他们就能正确的找到路由。这就要求发送方发送的第一个字节是高位字节。socket只是一个用于通信的符号,sockaddr_in存储的是具体的通信需要的信息,将socket bind在sockaddr_in上,这样这个socket管的就是和sockaddr_in里面地址的通信。

2024-01-02 16:58:22 3454 2

原创 运行库,main函数,入口函数,C标准库,glibc,MSVC的含义及一系列关系

动态库位于/lib/x86_64-linux-gnu/libc.so.6,静态库位于/usr/lib/libc.a,除了上述头文件及标准库,还有辅助程序运行的运行库,即在执行你的代码过程中进行main引导以及返回处理的代码,它们是/usr/lib/crt1.o、/usr/lib/crti.o和/usr/lib/crtn.o。例如调用fread函数,作为运行库的调用者我不需要关心你底层怎么实现的,不管什么系统,文件什么格式存储,我在任何支持C标准库的平台调fread,你就得让我把文件中的内容给读出来。

2023-11-30 22:52:30 323

原创 数据传输与字符编码、解码的问题,嵌入式装设备通过232驱动打印机,打印乱码

920装置中字符编码均采用UTF8编码,也就是存储到计算机存储上的二进制数,都是按照UTF8的对应表来存储的。英文字符在UTF8和GBK中对应的二进制数都是一样的。所以存储的时候以UTF8的对照表存,传输的时候从内存中读取那传出的内容也是按照UTF8对应的二进制传出去的。而偏偏打印机不支持UTF8编码,只支持GB18030,这里拓展以下,GB2312是在GBK的基础上拓展的,GB18030又是在GB2312的基础上拓展的,所以GB18030囊括了GBK、GB2312编码的全部内容。所以考虑是波特率的问题。

2023-11-15 19:19:17 195

原创 inet_addr,inet_aton,inet_ntoa,htonl,ntohl,网络字节序和本地字节序

将点分十进制(即"192.168.0.106"的格式,字符串)的格式的IP地址,转换到unsigned long(即整形数,是个整数,而且可以比较大小)中,返回的这个整数的存储方式。(大端模式)生成的。

2023-10-20 17:52:34 269 1

原创 QMAKE,pro文件,pri文件,C70文件,X64.pri文件与生成Mikefile的一系列关系及注意事项

mount-zhrepo.sh这个要在zhrepo目录下执行,因为pwd目录然后输出了ZHREPO_DIR,注意因为有 export ZHREPO,所以这个sh脚本只能在当前shell执行,采用source mount-zhrepo.sh执行。:库的头文件路径,库的路径及名称,自己添加的头文件,源文件等。库路径由x64.pri生成了全路径。公司在跨平台编译的时候,采用的方式是VS转QT工程,会生成pro文件和pri文件,如果同时生成的话,一般当前工程的pro文件中包含了工程的pri文件。

2023-09-13 15:41:24 278 1

原创 fread读取文件,内容未读完却提前结束的问题:

以文本格式打开的文件。fread函数并未读全我们文件里的内容,这是因为系统默认文件结束符为ctrl+z,而0x1A的ASCII值恰巧与ctrl+z的ASCII值相等,所以遇到 0x1A fread认为读到了结尾,就不再读文件。用fwrite/fread读写文件,发现当fread读取文件时只能读一半, 即使用foef()查看是否读到文件结尾,也是显示文件已经读取到文件末尾,查看文件的返回值发现文件只读取了一小部分。是修改文件打开方式未二进制:把fp = fopen(“*.txt”,”r”);

2023-09-11 16:49:40 1072 1

原创 文件存储和文件编码的一系列问题,二进制打开和文本格式打开的区别

以文本格式打开的文件。fread函数并未读全我们文件里的内容,这是因为系统默认文件结束符为ctrl+z,而0x1A的ASCII值恰巧与ctrl+z的ASCII值相等,所以遇到 0x1A fread就不再读文件。用fwrite/fread读写文件,发现当fread读取文件时只能读一半, 即使用foef()查看是否读到文件结尾,也是显示文件已经读取到文件末尾,查看文件的返回值发现文件只读取了一小部分。那么什么情况下或者什么格式的读取会把0x1A转成ASCII码,或者转成GBK码,或者又转成UTF8码。

2023-09-08 11:34:51 1484 1

原创 两个类互相包含,互相引用

一定有个类包含的是另一个类的指针对象,因为创建指针时只需要给个地址就行,包含对象的话要先等两一个对象构造完成,而另一个类中又包含了这个类的对象,又要先把这个类构造,进入死循环。指针只是一个地址数,只需要有那么快空间就行,

2023-09-07 16:06:30 131 1

原创 字符的读取、写入及替换的操作及坑

最开始的思路是fgetc()挨个读取字符,读到需要修改部分调用fwrite()写入,且先不说覆盖的问题。fopen按照具体操作,按照对应的格式打开文件,具体格式有"r","w","r+","a+"等,有的如果文件夹不存在,可自动创建文件夹,而有的格式则要求文件必须已经存在,如"r+"等。只读模式打开读取待替换字符串的文件,读取到待替换的内容之前,将读取到的内容拷贝到写入文件中,要替换的地方,直接写入新字符串。一个是旧的要更新字符串的文件,用来读取内容,一个新的专门用来写,用来存储字符串替换了之后的文件。

2023-09-04 10:54:52 188 1

原创 类的this指针,及静态成员函数的调用

类的非静态成员必须要用对象访问,因为构造对象后才有this指针,类的函数不是每个对象都另外保存一份的,函数代码是所有对象共用类的一份,而类通过this指针才能知道是哪个对象调用的。而静态成员函数属于类,不属于某个对象,所以this指针是对象才有的,因此指不到静态成员函数,静态成员函数只能通过类名或者对象访问,不能通过this指针访问。,成员函数和静态变量都不存放在对象中,它们共用类的一份。,stu 就是当前对象,this 就指向 stu。所谓当前对象,是指正在使用的对象。

2023-08-31 16:09:52 416

原创 字符操作函数梳理,采用指针操作字符

指针指向字符串的某一个字符,移动指针多少位置,指针就更新指向对应位置的字符串。以上代码,利用指针的位移,指针到数组的转换来操作字符串。

2023-08-31 12:07:17 151

原创 Linux fork函数,设置守护进程,及僵尸进程孤儿进程概念

●守护进程是运行在后台的一种特殊进程,它独立于控制终端并且周期性地执行某种任务或循环等待处理某些事件的发生;它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。●守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机才随之一起停止运行;●守护进程一般都以root用户权限运行,因为要使用某些特殊的端口(1-1024)或者资源;

2023-08-31 11:23:56 154

原创 代码中时间处理及相关函数,如UTC时间,时区,time(),gmtime,gmtime_s,gmtime_r,localtime,mktime的相关处理

UTC时间、GMC时间,及格林威治天文台的时间,通常这两个时间是相等的。世界以这个时间划分时区,例如中国为东八区,与格林威治天文台的时间偏移为早八个小时,所以称为东8区。time(),返回一个值,即格林尼治时间1970年1月1日00:00:00到当前时刻下格林威治时间的时长,时长单位是秒。下面两种使用方法结果一致。:time_t,是个int的64数据,通常用来记录从1970年1.1,00:00:00到现在过去的秒数。c库函数,将time_t秒数,转换成了struct tm结构体,并转换成了本地时区;

2023-08-23 17:20:41 1004 1

原创 纯VS工程转成QT工程,使用qmake,.pro文件实现跨平台,QT VS TOOLS功能灰色的问题

所以要在VS的QT VS TOOLS中配置QT库的路径,便于VS在调用QT中的函数或者使用QT的机制时能找到对应的库(相当于再项目-属性-附加包含目录中配置链接库)。1、下载VS的QT插件,可以去QT官网下,本项目适配的机器都比较老,加上使用的VS也为2013版本,所以插件版本为qt-vsaddin-msvc2013-2.3.2,点击直接安装。首先是在VS2013建立的工程,实现了项目的整体功能。4、点开创建的QT工程的文件夹,找到工程的***.vcxproj文件,记事本打开,复制出这一行。

2023-08-17 23:57:01 3255 3

原创 virtual box中Ubuntu安装QT5记录

1、在Linux下启动Qtcreator的时候, 报错:error while loading shared libraries: libgstreamer-0.10.so.0: cannot open shared object file: No such file or directory。安装完成之后cd到/opt/QT5.5.1/Tools/Qtcreator/bin下执行./qtcreator。之后cd到bin目录下执行./qtcreator,此时QT可以打开了。报错:段错误,核心已转储。

2023-08-03 18:57:26 242

原创 Virtual box虚拟机安装Ubuntu及CentOS遇见的一系列问题

注:centos有几次更新时更改了/boot/grub2.grub.cfg里调整分辨率的配置,更新完重启屏幕一直是花的,回复快照取消配置屏幕,同时加上执行上述操作之后,重启正常。但是每次重启之后共享失效,如果配置开机自动共享,可编写shell(.sh)文件自动执行,或者百度教程。原因:版本内核太老了,更新完确实可以挂载共享文件夹,但是系统内核更新就代表着系统版本更新了,不知道新系统版本是否兼容旧系统版本,同时gcc的版本会不会不一致。首先照例安装,安装增强功能之后,并不能共享文件夹。1、安装Ubuntu。

2023-08-03 17:09:57 260

原创 Vxworks碰到问题error: expected ‘}’ at end of input }问题处理思路

2.如果括号对应正常,那么直接在该函数实现后面多加一个},看是否会报错。如果加了之后编译不报错,则必定是头文件的问题,检查包含头文件,是否拼写错误等等。原文链接:https://blog.youkuaiyun.com/chengxiaili/article/details/126830543。3.如果上一步操作发现也无错误,则再开始具体检查每一个函数的具体实现。1.排除正常的括号对应,是否真的缺括号。

2023-07-17 16:28:08 1119 1

空空如也

空空如也

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

TA关注的人

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