- 博客(46)
- 资源 (11)
- 收藏
- 关注
原创 一个关于“坑”的顺口溜
作为程序员,做项目写代码,难免遇到各种坑,听到一个关于坑的顺口溜,很符合解bug时的心境!大坑套小坑,新坑套老坑;坑中灌着水,水中藏着钉;钉上抹着毒,毒还是剧毒!
2024-09-03 17:54:05
728
原创 C++中的 extern “C“
是一个链接指示符,用于告诉 C++编译器以 C 语言的方式进行链接。时,要确保 C 函数的声明和定义与 C++程序中的调用方式一致。只影响链接阶段,它并不会改变 C++代码的语法或语义。如果有一个 C 语言库,例如。假设存在一个 C 语言函数。,可以在 C++程序中使用。
2024-08-30 18:40:39
511
原创 C++ 中 volatile 关键字
是一个类型修饰符,用于告诉编译器,被修饰的变量可能会被程序之外的因素(如操作系统、硬件或其他线程)修改,因此编译器不能对该变量进行优化。可以确保每次读取到的都是传感器的最新值,而不是编译器可能缓存的旧值。在这个例子中,程序不断从硬件传感器读取值并输出。,编译器可能会对变量进行优化,导致结果不准确。可以确保每个线程都能看到变量的最新值。在这个例子中,两个线程同时对。
2024-08-30 18:36:44
391
原创 C++ 中this指针介绍
this 指针是一个隐含于每一个非静态成员函数中的特殊指针。它指向调用该成员函数的那个对象。当对一个对象调用成员函数时,编译程序先将对象的地址赋给 this 指针,然后调用成员函数,每次成员函数存取数据成员时,都隐式使用 this指针。当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。this 指针被隐含地声明为: ClassNameconst this,这意味着不能给 this 指针赋值;在 ClassName。
2024-08-30 18:29:37
307
原创 C++ 中 static 关键字
修改变量的存储区域和生命周期,使变量存储在静态区,在 main 函数运行前就分配了空间,如果有初始值就用初始值初始化它,如果没有初始值系统用默认值初始化它。但是,在静态成员函数内不能访问非静态成员,因为静态成员函数不依赖于特定的对象,而非静态成员属于特定的对象。,表明函数的作用范围,仅在定义该函数的文件内才能使用。,修饰成员函数使得不需要生成对象就可以访问该函数,但是在 static 函数内不能访问非静态成员。,修饰成员变量使所有的对象只保存一个该变量,而且不需要生成对象就可以访问该成员。
2024-08-30 18:18:32
617
原创 C++ 中的const关键字
分为指向常量的指针(pointer to const)和自身是常量的指针(常量指针,const pointer);,指向常量的引用(reference to const),用于形参类型,即避免了拷贝,又避免了函数对值的修改;通过表格可以看出,c++中我们尽量使用const常量去替代宏定义。,说明该成员函数内不能修改成员变量。,说明该变量不可以被改变;
2024-08-30 18:13:29
415
原创 C++ 中的auto关键字
auto是一个关键字,用于自动类型推导。它可以根据初始化表达式来推断变量的类型,从而简化代码的编写,提高代码的可读性和可维护性。时要确保初始化表达式能够明确地确定变量的类型,否则可能会导致编译错误或意外的结果。不能用于函数参数的类型推导,也不能用于推导数组类型。
2024-08-30 10:42:35
310
原创 C++命名空间(namespace)介绍
混乱的命名空间会让程序难以理解,一定要理解和用好命名空间,另外尽量少使用“using namespace myNamespace;”这种将整个命名空间引入当前作用域的操作。在 C++中,命名空间(namespace)用于避免命名冲突以及组织代码。,后面跟着命名空间的名称和一对花括号,在花括号内可以定义函数、变量和类等。命名空间可以嵌套,以进一步组织代码。命名空间的定义使用关键字。
2024-08-30 09:59:00
511
原创 C++介绍
最近又读了一遍C++的经典之作,《C++ primer plus》,学而不记则徒劳无功,独学而无友则孤陋寡闻,下面分享书籍的电子版以及思维导图文件,供大家交流。学习C++比较困难,门槛比较高,主要原因是C++在不断的发展过程中,已经发展成一个语言联邦,它支持过程式编程,面向对象,函数式编程,泛型编程,元编程等多种编程范式。我们要想能充分学习理解C++,也需要结合这些特性,分开去理解,我们可以按照下面几大类去学习。
2024-07-15 20:35:54
203
原创 linux binutils工具集
对于嵌入式系统开发来说,掌握GNU的工具集(toolchain)- binutils toolchain非常重要。这些工具,可以说是我们开发和调试不可缺少的利器。
2023-05-11 14:20:24
888
原创 一种IPC通信机制Gdbus详解
常规进程间通信有管道,消息队列,共享内存,以及socket等,每个都有优劣,这次我们介绍一种高阶的进程间通信方式DBus。DBus通信是IPC通信机制的一种方式,本身是建立在socket机制之上,它支持远程函数调用和信号传递。session(会话模式)、system(总线模式)**总线模式(system bus):**采用总线模式时,系统需要维护一个DBus Daemon,每个DBus的请求通过DBus Daemon转发。
2023-04-27 19:30:00
3757
原创 如何将网页保存为pdf
有的时候我们需要备份某一个网页,但是直接收藏有的时候源链接会被删除,如果保存成网页,文件又很多,保存成PDF格式是一个不错的选择,下面就跟大家分享一个简单的方法。我用的Google Chrome和Microsoft Edge浏览器,其他浏览器类似。打印机选择另存为pdf,布局选择纵向,页面选择全部,右侧是预览,可以看一下网页是否都加载完,确认后点击保存,即可。
2022-10-07 10:23:47
3581
原创 微软VSCode的常用操作和常用设置
微软的Visual Studio Code(VSCode)编辑器是因为其简洁高效,轻量级,是很多程序员的选择,如何快速上手并使用,本文将对vscode在C/C++下的应用进行简单介绍。
2022-10-01 23:13:57
1653
原创 开源免费强大的按键精灵软件----AutoHotKey
AutoHotkey 是一款 windows 平台下的热键脚本语言程序。可以实现快速输入、快捷操作等多种快捷功能。程序简洁小巧,脚本可玩性高,能大大提高我们的生产效率。
2022-09-20 16:09:49
3899
原创 一款开源的支持离线的支持MarkDown的优秀笔记软件----思源笔记
日常工作中,大家可能会用笔记软件记录自己积累的一些知识,组建自己的知识管理系统,常用的工具可能有云笔记,如有道云笔记,印象笔记等,但是有时候在工作中,信息比较敏感,不能够将信息上传到云端,这个时候,一款支持离线的笔记就非常重要。**思源笔记,满足你的要求!**
2022-09-20 12:08:50
2598
原创 一款开源免费的任务日程管理工具ToDoList
推荐给大家一款开源免费的任务日程管理工具ToDoList,是适合职场人尤其是程序员的经典任务管理软件,使用好的话会让大家在工作中事半功倍。
2022-09-19 20:25:50
8706
原创 本地笔记软件mybase8.x破解试用用时长限制
本地笔记软件mybase8.x是一个经典软件,但是它是收费软件,我们可以在官网进行购买,软件给了大家30天的试用时间,可是有时候可能30天大家不够用,哈哈,那就可以通过下面的方法再多试用一段时间,理论上可以无限续杯哦。
2022-09-15 18:45:46
35216
11
原创 本地笔记软件mybase8.x -- 构建个人知识体系
随着学习和工作的不断推进,大家收集积累的知识越来越多,也越来越混乱,所以一个良好的笔记记录方法和一个好用的工具非常重要。虽然现在有很多云笔记解决方案,但是有的时候本地离线笔记更靠谱,mybase是一个很好的选择。
2022-09-03 23:28:30
3268
2
原创 使用python库geopy计算多组经纬度距离的方法
日常工作中有时会用到需要计算gnss定位模组的定位精确度,需要将被测设备和真值设备进行经纬度坐标之间的对比,由于经纬度坐标想要计算差值,需要涉及到坐标系的转换,计算方法比较复杂,geopy库很好的解决了这个问题,集成了大量的方法,可以做很多地理坐标相关的事情,其中就有计算两个坐标点之间距离的方法。整理出两个设备输出的gps的utc时间以及经纬度,按照下面格式写到txt文本中,脚本读取txt文本,进行整秒的经纬度进行比较,输出某一时间点的定位误差,单位为m。...
2022-08-01 20:24:06
3305
1
原创 自动文档生成工具Doxygen
说明Doxygen 是一个程序的文件产生工具,可将程序中的特定注释转换成为说明文件。他能将文件的注释,类的注释,函数的注释,结构体的注释,按照一定的规则,生成文档,可以支持跳转,文档格式可以生成html供线上使用,也可以转成pdf格式本地查看,非常方便。如果你做的是对外的sdk接口,可以配合jenkins等持续集成工具,自动生成文档说明。安装平台:Ubuntusudo apt-get install graphvizsudo apt-get install doxygen sudo apt-ge
2022-01-18 11:11:32
870
原创 基于git的仓库管理工具repo的简单介绍
一、repo介绍repo命令行工具,是一个python脚本,对git部分命令进行封装,简化了对多个git版本库的管理,通过配置manifests配置文件,可以将很多个git仓库有效的进行组织管理。最开始是用在Android源码的管理上,目前被广泛使用。二、repo使用初始化命令:repo init -u [<OPTIONS>]-u: 指定连接到的manifest仓库地址-m: 选择仓库中某个manifest文件,如果没有设置,就使用default.xml-b: 选择一个manie
2022-01-12 16:54:56
2679
原创 基于51单片机和红外漫反射传感器的久坐提醒神器(番茄钟)的设计
一、背景介绍我们工作久了,久坐导致的毛病就显现出来了,腰酸背痛颈椎疼,最近看到利用番茄钟工作法挺好,工作25分钟,休息5分钟,既能调整工作节奏,避免精力过分消耗,也能避免久坐导致的身体问题。我刚开始使用闹钟做提醒,后来尝试番茄钟软件,但是都要手动去操作手机,拿起手机看到信息,然后就会去处理手机上的事情了,起不到作用…直到有一天收拾东西看到了我大学期间基于51单片机做的一个电子设计,激起了我的灵感,开始了基于51单片机的自动番茄钟,久坐提醒神器的设计和制作。整体方案硬件部分继承了大学时焊接的电路板,更
2022-01-11 18:50:08
8790
原创 网络抓包工具tcpdump介绍
说明tcpdump是用于网络分析和问题排查的非常有用的工具,它能够将网络中传送的数据包完全抓取下来进行分析,也能够根据参数进行筛选,选择自己需要的数据进行分析,十分方便。用法介绍# tcpdump --helptcpdump version 4.1.1libpcap version 1.8.1Usage: tcpdump [-aAbdDefIKlLnNOpqRStuUvxX] [ -B size ] [ -c count ] [ -C file_size ] [
2021-12-31 16:19:00
674
原创 网络性能测试工具iperf介绍
说明Iperf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能,具有多种参数和UDP特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。用法介绍# iperf3 -hUsage: iperf [-s|-c host] [options] iperf [-h|--help] [-v|--version]Server or Client: -p, --port # server port to listen on/connec
2021-12-31 10:48:44
487
原创 网络诊断工具ping介绍
说明ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序 。ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)echo 请求报文,测试目的站是否可达及了解其有关状态。用法介绍ping --helpBusyBox v1.29.3 (2021-10-18 08:33:23 UTC) multi-call bin
2021-12-30 20:17:17
7241
原创 监控TCP/IP网络的工具netstat介绍
说明netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息,以及与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况,用于分析网络问题,非常方便。用法介绍#netstat -husage: netstat [-vWeenNcCF] [<Af>] -r netstat {-V|--version|-h|--help} netstat [-vWnNcaeol
2021-12-30 19:51:30
3959
原创 基于51单片机的上下限可调的数字温度控制系统
摘要:设计并制作了数字温度显示控制系统,能够实时显示环境温度,并在超温限情况下报警提示和进行相应的温度控制。上下限温度可以人工调节,并能通过串口显示在pc机上。测温范围0~100℃,误差0.1℃以内。系统通过单片机STC89C52、温度传感器DS18B20、液晶1602以及串口模块组成,上机位软件用VB编写。实验测试通过,该系统可用于工业上对温度的监测和控制。关键词:数字显示;温控;上下限可调;上位机1.作品功能及总体方案1.1 功能描述本设计设计并制作了数字温度显示控制系统。主要应用了STC89C
2021-12-27 20:06:56
30241
23
原创 GNSS NMEA-0183协议解析
最近在做gps相关工作,需要解析gps模组输出的nmea数据,获得经纬度等信息,整理了一下nmea各个字段的含义,供大家参考。基本介绍GNSS的全称是全球导航卫星系统(Global Navigation Satellite System),它是泛指所有的卫星导航系统,包括全球的、区域的和增强的,如美国的GPS、俄罗斯的Glonass、欧洲的Galileo、中国的北斗卫星导航系统,以及相关的增强系统,如美国的WAAS(广域增强系统)、欧洲的EGNOS(欧洲静地导航重叠系统)和日本的MSAS(多功能运输卫星
2021-12-24 16:16:54
18434
4
原创 strace常用操作
一、strace常用操作跟踪程序运行过程中执行的系统调用和接收到的信号。二、strace使用运行./strace -p 进程号一般使用-t -T参数打印系统时间及运行时间
2021-11-09 20:11:57
197
原创 gdb常用操作
一、gdb功能介绍程序调试工具,可以动态的改变程序的执行环境。二、gdb使用1、运行(1)./gdb 程序名(2)./gdb 程序名 -p 进程号(3)./gdb运行,输入attach+进程号2、查看变量(1)p 变量名(2)p/10x 变量名3、给变量赋值 p 变量名=x4、查看栈信息 bt5、进入某一层栈 f6、查看所有线程信息 thread apply all bt / info thread7、查看目前栈信息中所有变量信息 info locals...
2021-11-09 20:08:18
1396
原创 利用闲置笔记本电脑搭建linux服务器并布置自己的网站
背景一直想有一个云服务器,做一些感兴趣的事情,比如搭建一个个人网站,做一些linux上的验证实验,学一下Python等等。之前申请了一个腾讯云服务器,但是到期后续费很贵,就不再使用了,刚好家里有一台闲置的笔记本电脑,就想着自己搭建一台linux服务器,方便自己使用。本文将从以下几个方面介绍一下。1、如何开启SSH服务,方便远程访问;2、如何开启WEB服务器,搭建简单网站;3、如何开启内网穿透,做到外网访问;4、如何配置笔记本不休眠持续运行。准备一台能联网的笔记本电脑,配置能用就行。安装好
2021-10-31 17:13:56
27538
3
原创 C语言编写的一个简单通用的日志框架----支持日志等级,日志颜色,打印到文件等设置
日常工作中常常需要输出日志进行调试,本文提供了一个C语言编写的日志框架。可以输出日志到文件或者是终端,支持日志等级设置,不同日志等级可以设置不同的颜色,另外还可以设置进程名、模块名、函数名等的输出,能够打印毫秒级时间,能够限制文件大小,使用方便,架构小巧灵活。本架构多线程的支持有待验证,每次日志调用都会使用写入,性能有待验证,另外,写满切换文件没有实现。SimpleLog.h/****************************************************************
2021-09-27 19:07:47
1052
原创 简单通用的Makefile编写例子
Makefile的语法很多,编写起来也比较麻烦,日常工作中我们可能需要编写一些简单的测试程序,每次编写Makefile文件比较麻烦,本着拿来主义的原则,编写了一个通用的Makefile示例,供大家交流使用,支持路径的修改,支持改动增量编译。例子中具体每行的含义,大家可以百度查一下,或者参考《跟我一起写 Makefile》看一下,本文仅仅是分享成品,不做详细阐述。CC = gccCFLAGS = -g -Wall -std=c99CLIBS = -lpthreadSRC_PATH = srcOB
2021-09-27 18:21:23
779
原创 日志输出显示优化----printf函数控制输出颜色
大家在编写代码的时候会使用printf函数输出日志,printf函数有控制输出字符的显示方式、前景色、背景色的功能,使用后,日志看起来比较清晰。举例说明:printf( “\033[0;31;42m Hello world !\033[0m\n” );显示结果:解释说明:格式: \033[显示方式;前景色;背景色m显示方式 :0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、5(闪烁)、25(非闪烁)、7(反显)、27(非反显)前景色:30(黑色)、31(红色)、32
2021-09-27 17:31:35
418
原创 C语言时间函数总结
日常编程过程中经常会用到日期和时间,我们常常需要对日期和时间进行转换和处理,C语言time.h中为我们提供了这些函数。一、时间的概念通用协调时间(UTC, Universal Time Coordinated):是一个全球通用的时间标准,使用秒来计算。格林尼治平均时(GMT, Greenwich Mean Time):基本上等同于UTC时间。本地时间:整个地球分为24时区,本地时间是结合各地的时区进行计算的。本地时间 = UTC + 时区差,时区差东为正,西为负,比如北京为东八区,则时区差为+8。
2021-06-01 18:55:48
11533
5
原创 cmake教程-提高篇
之前写过一篇文章,以实例简单介绍了cmake的常用操作,这次写一下稍微提高一些的用法。入门篇请参考:cmake入门篇一、常需要设置的几个变量如果我们是在嵌入式下编程,需要交叉编译,那么下面一些变量可能需要设置一下。#指定C++的标准set(CMAKE_CXX_STANDARD 11)set(CMAKE_CXX_STANDARD_REQUIRED ON)set(CMAKE_CXX_EXTENSIONS OFF)#指定C语言的标准set(CMAKE_C_STANDARD 99)set(CMA
2021-05-28 18:27:10
2432
原创 Linux下使用shell命令统计工程代码行数
使用下面脚本可以统计代码行数:find . "(" -name "*.cpp" -or -name "*.c" -or -name "*.h" ")" -print | xargs wc -l > statistics.txt结果如下:cat statistics.txt 36 ./main.cpp 6 ./div/div.cpp 1 ./div/div.h 1 ./mul/mul.h 6 ./mul/mul.cpp 1 ./sub.h 1 ./add.
2021-05-28 11:56:00
480
原创 cmake教程-入门篇
从事linux的开发工作,不可避免的需要进行编译构建的工作,直接编辑Makefile,不仅需要熟悉Makefile的语法,还需要知道依赖和推导规则,比较麻烦。而cmake工具,只需要开发者提供头文件路径、库路径、编译参数等基本参数,就能快速生成Makefile,语法简单,能够快速上手,另外cmake工具能够满足跨平台的要求,因此应用比较广泛。下面我们以一个实际的计算器的例子,逐步深入对cmake的学习理解。一、最简单的例子在linux平台下使用cmake生成Makefile并编译的通常流程有下面几步。
2021-05-27 19:09:02
9547
原创 Linux开发书籍推荐
在做linux开发学习过程中读过的一些书,有些比较经典,但是经典的未必是适合的,块头太大刚开始时读可能有些吃力,可以先阅读一些写得比较浅的书籍,比如从入门到精通系列,先入门提起兴趣,再逐步阅读精进,学习不是一蹴而就的,活到老,学到老,软件开发行业尤其如此。1、linux相关《Linux程序设计(第4版)》《Linux命令行与shell脚本编程大全(第3版)》《UNIX环境高级编程》2、C/C++语言《C语言程序设计》《C程序设计语言》《C Primer Plus(第6版)中文版》《C++
2021-05-20 19:00:39
771
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人