logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

#pragma pack (n)使用详解

在缺省情况下,编译器为了让程序跑得跟快,减少CPU读取数据的指令周期,对结构体的存储进行了优化,比如:如下结构体struct s{char ch;int i;};虽然变量ch本身只有1个字节,但实际上却占用掉了4个字节,为的是让第二个int型成员i的地址能够被4整除。因此实际占用的是8个字节,sizeof(s) = 8。一般地,可以通过下面的方法来改变缺省的对界条件:使用伪指令#pragma pa

#c语言
MQTT异常断开

MQTT异常断开,讨论一下TCP链路的影响MQTT异常断开,TCP链路原因的几种情况:三种情况:1、客户端MQTT发送了心跳包,但是MQTT代理服务器没有收到心跳包,所以MQTT代理服务器也就不会回复心跳响应包。TCP层出现网络故障,客户端发起链路重置;2、客户端发送了MQTT心跳包,但是TCP网络的原因没有发给代理服务器,代理服务器设置MQTT心跳,1.5T没有收到心跳包,将踢掉MQTT连接3、

#物联网
MQTT Qos详解(一)

MQTT Qos的理解

xargs 与 find cp等指令的结合

xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不

sizeof 数组与指针

#include <stdlib.h>#include <stdio.h>typedef struct{int a;char buf[20];}Node;int main(){int a[5]={1,2,3,4,5};int *p=a;char *q=NULL;float *f=NULL;Nood *nood =NULL;printf("p = %p\n",p);i.

bat 将指令执行结果赋给变量

for /f "tokens=*" %i in ('ipconfig /all^|find /i "ipv4" ') do set yourvar=%ifor /f "tokens=2 delims=:(" %i in ('ipconfig /all^|find /i "ipv4" ') do set yourvar=%ifor /f "delims=" %i in ( 'ipconfig /al

MQTT心跳 Keep Alive

简介在建立连接的时候,我们可以传递一个 Keep Alive 参数,它的单位为秒,MQTT 协议中约定:在 1.5*Keep Alive 的时间间隔内,如果 Broker 没有收到来自 Client 的任何数据包,那么 Broker 认为它和 Client 之间的连接已经断开;同样地, 如果 Client 没有收到来自 Broker 的任何数据包,那么 Client 认为它和 Broker 之间的

#tcp/ip#物联网#udp
linux 默认的线程大小

#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <pthread.h>#include <termios.h>#include <unistd.h>int number = 0;void *func(){int buf[256];printf("n

snprintf 函数用法详解

使用snprintf函数时要注意两点,这是我看过无数使用这个函数的程序员绝大部分都存在的两点隐患:比如: char buf[LEN];int n = snprintf(buf, LEN, "%s%d%s", str1, int2, str3);printf("total length n %d"\n, n);1.snprintf会自动在格式化后的字符串尾添加\0, 所有格式化长度,也就是第二个参数

#c语言
到底了