
一文搞懂系列
文章平均质量分 95
主要分享工作中常用的一些知识点,深入浅出
谢艺华
主要深耕于 linux 后端开发,热衷于体系能力(包括不限于C、C++、linux、编译原理、数据结构和算法、网络、操作系统
)的沉淀,分享工作中重要的知识点和具有代表性的案例分析。
欢迎志同道合的朋友与我一起前进
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
T-box 远程唤醒方案探讨(欢迎讨论)
T-Box 与TSP平台通信系统框图大致如下:在方案分析前,我们需要考虑一个问题:T-box 与 TSP 平台为什么要保持心跳?业务心跳。一般是需要TSP Client 周期发送,让TSP 平台确认终端存活。若超时未收到终端发送的心跳包,则认为终端异常,断开TCP连接,回收相关socket 资源。TCP/IP 协议心跳。我们知道TCP协议存在 Keep-Alive (保活机制),它的作用有二:确认TCP 连接是否存在。原创 2025-07-24 16:49:45 · 952 阅读 · 0 评论 -
一文搞懂系列:1PPS 的作用及如何实现高精校时
1PPS信号配合TOD信息实现高精度校时 1PPS(秒脉冲)是由GNSS接收机输出的硬件定时信号,其上升沿代表UTC整秒时刻,精度可达30-50纳秒。该精度源于卫星原子钟和接收端锁相环技术。TOD(时间日期)信息通过NMEA0183协议(如ZDA语句)传输,包含具体时间点数据。 设备校时过程:接收1PPS脉冲标记UTC整秒,解析TOD信息获取对应时间(含传输延迟),利用连续脉冲间隔修正系统时钟。此方法可实现纳秒级时间同步,广泛应用于需要高精度校时的场景(如T-Box)。两者的协同工作确保了设备时间与GNSS原创 2025-07-15 11:18:27 · 1318 阅读 · 0 评论 -
一文搞懂系列——AppArmor 使用方式
Linux系统通过DAC(自主访问控制)提供基础权限管理,但无法满足高安全场景。MAC(强制访问控制)如AppArmor通过路径限制、能力管控和网络规则,以管理员定义的策略强制约束进程行为,有效防御特权滥用。相比SELinux的标签模型,AppArmor配置更简单,适合车载等快速部署场景。借助LSM框架动态加载,AppArmor可灵活保护关键进程(如OTA、诊断服务),符合《GB 44495-2024》要求,是MT86系列实现信息安全的优选方案。原创 2025-05-10 15:51:48 · 1221 阅读 · 0 评论 -
一文搞懂i2c、uart、spi原理及Linux应用开发
本文介绍了UART、SPI和I2C三种串行通信协议的原理、数据传输格式及Linux应用编程。UART是异步串行全双工通信,SPI是同步串行全双工通信,I2C是同步串行半双工通信。每种协议在硬件连接、数据传输和应用编程上都有其独特之处,适用于不同的场景。文中还提供了Linux下的编程示例,并探讨了通信中的常见问题及解决方案。原创 2025-02-05 15:32:57 · 1407 阅读 · 5 评论 -
【项目总结】git版本管理分享
本文详细分享了使用Git进行代码版本管理的经验总结,包括Git的工作原理、使用流程、特殊场景处理及提交规范。强调了分支管理、代码提交、合并请求的重要性,并提出了具体的操作建议,希望提高团队协作效率和代码质量。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。原创 2024-10-21 17:42:29 · 1050 阅读 · 0 评论 -
一文搞懂系列——PEM文件解析流程
详细介绍了如何从.pem格式的私钥证书中提取公钥和私钥信息。.pem文件是私钥证书的常见格式,而der格式是.pem文件中数据的基本格式。文章通过介绍pem和der的关系、ASN.1、BER编码格式等基础知识,帮助读者理解如何解析.pem文件中的数据。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。原创 2024-07-25 16:26:56 · 4710 阅读 · 0 评论 -
【unix高级编程系列】标准I/O
标准I/O提供了流的概念,简化了文件I/O操作,提供了更丰富的接口和缓冲机制,使得I/O操作更加高效和方便。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。原创 2024-07-10 17:50:33 · 1177 阅读 · 0 评论 -
【unix高级编程系列】文件I/O
文件编程是Linux开发者必须掌握的技能。本文介绍了Linux文件编程中常用的API及其注意事项,包括open、creat、close、lseek、read、write、dup和dup2等。还介绍了sync、fsync和fdatasync等接口,用于确保数据安全。此外,文章还解释了Linux内核如何标识打开的文件,以及文件表项、V节点和进程表项之间的关系。希望能给您带来帮助。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。原创 2024-07-06 14:43:07 · 1264 阅读 · 0 评论 -
一文搞懂系列——可变参数函数实现原理及注意事项
可变参数函数是C语言中常见的特性,允许函数接受数量不定的参数。常见的实现方式是通过va_list系列函数,包括va_startva_argva_end。本文介绍了其实现原理,希望大家能够得到更进一步的理解。不正确使用可变参数,可能会导致程序崩溃(段错误)或其他安全问题。例如,如果调用函数时没有提供足够的参数,va_arg可能会访问非法的内存地址。明确固定参数和可变参数的个数和类型。使用编译器的警告选项(如-Wformat)来检测潜在的问题。在函数调用时提供正确的参数数量和类型。原创 2024-02-22 18:17:10 · 1680 阅读 · 0 评论 -
一文搞懂系列——非局部跳转setjmp和longjmp使用及原理
本文向大家介绍了非局部跳转函数setjmp和longjmp的使用方式,以及实现原理。即使它的存在,有很多不好的影响。但是在特定场景下还是能够体现它的价值。比如异常处理,实现C语言的异常捕获和协程。但是还是希望大家谨慎使用,按需设计。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。原创 2024-01-25 16:04:02 · 2271 阅读 · 2 评论 -
一文搞懂系列——Linux C线程池技术
实际上,我觉得在诊断项目中,线程池技术是非必要的。因此它不会涉及到大量的请求,以及每一个请求处理,一般都会比较耗时。参考:https://www.cnblogs.com/zhaoosheLBJ/p/9337291.html。原创 2024-01-15 21:09:36 · 1246 阅读 · 2 评论 -
一文搞懂系列——替换动态库,为什么导致运行进程异常
至此,该问题终于解决了。内容较多,希望大家有所收获。在知道根因后,我们不妨再想想,如何在程序运行时,替换动态库,却不影响正在程序。提示:先删除,再拷贝。即。不妨试试哦,可以把原理在评论区写出。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。原创 2024-01-02 09:48:59 · 2138 阅读 · 5 评论 -
一文搞懂系列——DBC数据库信号解析规则及案例
DBC是vector公司定义的can网络通信文件格式。网上介绍的文章很多,有兴趣的朋友可以去搜索一下。本文的主要核心是解析DBC信号部分,对于相关信息进行简略描述。版本与新符号波特率定义网络节点的定义报文帧的定义信号的定义注解部分特征部分数值表部分格式为含义如下:。BU_为关键字,表示网络节点;表示网络节点名字,由用户自己定义。通过网络节点方便地进行CAN网络的设计、开发和测试。如下:格式为BO_,为关键字,表示报文;MessageId,报文ID,是以10进制数表示的。原创 2023-12-18 21:55:25 · 7107 阅读 · 5 评论 -
一文搞懂系列——字节对齐的前因后果及应用
通过同事偶然间遇到的一个问题,深入剖析,了解到字节对齐前因后果。也给我们警示结构体定义需要满足编译器的规则,否则可能会大量浪费内存空间。在跨平台开发过程中,我们也要考虑结构体成员long数据类型在不同平台的变化。当然也有可能会因为编译器的不同,其它基础数据的自身对齐值,也会发生变化。定义结构体成员变量时,考虑跨平台的情况。对外提供的头文件,可以通过强制设置自身对齐值。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。原创 2023-12-11 17:39:10 · 1054 阅读 · 2 评论 -
一文搞懂系列——你真的了解如何生成动态库了吗?
本文从两个实际存在的场景,向大家介绍了动态库生成过程中的一些特定需求。简单介绍了和两个链接属性及使用方式。。有兴趣的朋友可以了解一下。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。原创 2023-12-07 16:50:28 · 1345 阅读 · 1 评论 -
一文搞懂系列——动态库的加载方式及应用场景
我们从输出结果,可以知道,动态链接器只加载/etc/ld.so.cache配置文件,并没有加载/etc/ld.so.conf配置文件。-Wl,-rpath是编译阶段修改可执行程序的rpath参数,但是往往我们在工程中是不太确认最终的集成路径的。我们只需要将动态库放到对应的路径下即可。我们在工作中经常会遇到动态库链接的问题,因为正常的方式并不能满足我们的场景。知道可执行程序依赖哪些动态库口,动态链接器就需要去找这些动态库,查找的方式主要有以下四种。是我们最最常用的方式,大部分情况下,我们使用该方式即可。原创 2023-12-04 14:16:19 · 2030 阅读 · 4 评论