摘要: 在网络编程中,若想使用已被占用的地址和端口,将导致绑定套接字到该地址的操作失败,并返回错误。为了能够成功绑定到被占用的地址和端口,需要进行相应的设置,即启用地址重用功能。 系统默认阻止重复绑定有其道理,而地址重用也有其存在的意义。我们都知道,在网络中传输的消息都有一个最长的存活时间,如果在这个时间段 阅读全文
posted @ 2023-07-12 21:37 Spark++ 阅读(95) 评论(0) 推荐(1) 编辑
摘要: 什么是函数?从定义来看,函数就是一段可以重复使用的代码块,比如下面这样 void hanshu() { int a = 0; int b = 3; } 这时候就应该有人要跳出来了,这是什么**!确实,作为一个强烈反对屎山代码存在的编程者来说,一个好的函数应该是一个有着合理命名,并且功能紧凑的功能块, 阅读全文
posted @ 2023-07-06 17:14 Spark++ 阅读(257) 评论(0) 推荐(0) 编辑
摘要: UDP 相比 TCP 虽然是是无连接的,看似发送接收都很随意,但是在发送——接收过程中,仍然有些问题需要重视。在整个通讯过程中至少有两点需要注意,一方面要防止发送方的一厢情愿,另一方面是在允许的条件下,尽量保证数据的完整性。 防止发送方的一厢情愿是指在发送时要确保对方有套接字可以接收,不能在另一方没 阅读全文
posted @ 2023-07-05 18:52 Spark++ 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 在嵌入式领域,组件间的通讯是逃不掉的话题,因为仅仅只有处理器核心算不上完整的嵌入式系统,一个嵌入式系统往往是由处理器和众多外部设备组合而成的,而通讯则是处理器与外设,外设与外设之间的纽带。在嵌入式领域有成千上百的通讯协议,这些通讯协议有众多的分类方式,其中一个重要的分类方式就是将通讯方式分为串行通讯 阅读全文
posted @ 2023-06-10 17:02 Spark++ 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 一般来说引用指的是左值引用,它存在的目的是为了给左值起个别名。在 C++ 新版本里面出了一个新的概念——右值引用。类比前面对左值引用的理解,右值引用是应该是对右值起的别名。不过这个所谓的右值引用已经不能用右值的方式来理解,往常对右值的认识一般以常量居多,但是这个被起别名的引用居然能做一些变量才有的操 阅读全文
posted @ 2023-04-26 11:49 Spark++ 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 刚接触线程的时候懵懵懂懂,懵懵逼逼,只是依稀记得线程需要同步,至于这么做的原因好像是避免线程由于对数据的竞争导致不可预知的结果。随着头发日渐稀疏,对线程同步的理解也不断加深了。 什么是线程同步 线程同步是指多个线程之间的协调同步,按照一定的次序进行执行。Linux中的线程同步机制主要有互斥锁、自旋锁 阅读全文
posted @ 2023-04-03 18:07 Spark++ 阅读(277) 评论(0) 推荐(2) 编辑
摘要: 为什么是伪中断 在讲主题之前,我们先用一个例子来回顾一下中断的相关概念。假设你正在阅读或者工作,这时候你的朋友突然给你打电话或者发短信,请求你帮助他解决一个问题,之后你给朋友提了些许建议就继续自己的阅读或者工作了。 在上面这个例子中,这个请求就相当于嵌入式系统中的中断请求。你此时需要停止你手头的任务 阅读全文
posted @ 2023-03-27 21:22 Spark++ 阅读(352) 评论(3) 推荐(2) 编辑
摘要: 宏定义是什么 宏定义(macro definition)是 C/C++ 中的一种预处理指令,可以在编译之前替换源代码中的一些文本。简单来说就是用宏自定义了一些其它符号,这些符号在使用时全等于被替换的内容。 #define DATE "2023_01_20" #define FILE_NUM 250 阅读全文
posted @ 2023-03-21 21:44 Spark++ 阅读(2631) 评论(4) 推荐(5) 编辑