![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 88
Frank-Hu
这个作者很懒,什么都没留下…
展开
-
IO多路复用之select、poll、epoll
对于网络请求,来一个请求,我们就启动一个进程去处理一个请求,随着用户量越来越大,开启的进程数量也越来越多,而每开启一个进程是需要消耗资源的,例如内存等,这样,可能会导致资源不足,无法响应更多的请求。例如:某教室有10名学生和1名老师,这些学生上课会不停的提问,所以一个老师处理不了这么多的问题。那么学校为每个学生都配一名老师,也就是这个教室目前有10名老师。此后,只要有新的转校生,那么就会为这个学生专门分配一个老师,因为转校生也喜欢提问题。原创 2023-09-15 11:03:29 · 212 阅读 · 0 评论 -
多线程编程与互斥锁
在操作系统原理的术语中,线程是进程的一条执行路径。线程在Unix系统下,通常被称为轻量级的进程,线程虽然不是进程,但却可以看作是Unix进程的表亲,所有的线程都是在同一进程空间运行,这也意味着多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。一个进程可以有很多线程,每条线程并行执行不同的任务。原创 2023-05-07 04:58:13 · 291 阅读 · 0 评论 -
多进程编程
服务器按处理方式可以分为迭代服务器和并发服务器两类。平常用C写的简单Socket客户端服务器通信,服务器每次只能处理一个客户的请求,它实现简单但效率很低,通常这种服务器被称为迭代服务器。然而在实际应用中,不可能让一个服务器长时间地为一个客户服务,而需要其具有同时处理 多个客户请求的能力,这种同时可以处理多个客户请求的服务器称为并发服务器,其效率很 高却实现复杂。在实际应用中,并发服务器应用的最广泛。原创 2023-04-17 06:02:30 · 664 阅读 · 0 评论 -
malloc、free函数及memset函数用法详解
最近在力扣刷题时,发现普通的创建数组很容易引起编译器报错。而使用到动态内存分配malloc()函数和初始化函数memset()可以避免这类问题的发生。本文将详细介绍一下两个函数的用法。原创 2022-08-15 17:25:22 · 4292 阅读 · 0 评论 -
GPIO工作模式详解(含Arduino实例)
从最基础的51单片机,Arduino,到STM32,树莓派等等,这些上面都会有GPIO口这么一个概念,如果你点开了我这个博客,说明你大概率开始学习单片机,那么你应该了解的就是这些口可以输出高低电平,或者是读取引脚上的输入电平。GPIO(general porpose intput output):通用输入输出端口的简称。可以通过软件控制其输出和输入。GPIO引脚与外部设备连接起来,从而实现与外部通信,控制以及数据采集的功能。...原创 2022-06-19 17:33:41 · 8161 阅读 · 0 评论 -
基于MQTT协议实时温度上报阿里云iot平台
前言在上篇文章中我们用MQTT.fx模拟客户端实现了与阿里云物联网平台的双向通信,接下来我们自己动手编程使用mosquitto库实现一个客户端来实现一个发布端。一.iniparser 和 json1.为什么要使用iniparser库与阿里云进行通信时,我们需要如下一些信息,例如在使用MQTT.fx时:复制保存一下,另外之前发布和订阅的topic也要记下来:这些都是我们在项目中要用到的配置信息,具体应用在:clientid:struct mosquitto *mosquitto_new( c原创 2022-05-18 10:15:23 · 1644 阅读 · 0 评论 -
阿里云iot平台实现MQTT通信(mqtt.fx接入iot平台及测试)
一.阿里云iot平台环境搭建首先进入阿里云官网https://www.aliyun.com/?utm_content=se_1000301881注册并登录账号。点击控制,搜索物联网平台并进入。第一次使用阿里云物联网平台会弹出一个界面要求同意相关协议,同意即可。复制这三个东西建议保存在记事本中,后续会使用。返回产品,点击产品名称查看产品详情;接下来添加两个功能来进行测试:一个是标准功能一个是自定义功能。得到如图所示 然后点击发布上线我们可以在功能定义里查看功能的详细信息,其中当前温原创 2022-05-16 13:27:37 · 3652 阅读 · 0 评论 -
基于MQTT协议实现从树莓派上获得的温度上传至数据库中
到这里就可以将前一博客中构建的框架放入项目代码中了,只需要修改之前项目中相关socket代码部分即可。1.发布端:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <errno.h>#include <unistd.h>#include <getopt.h>#include <sys/types.h>#include <s原创 2022-05-11 15:11:49 · 579 阅读 · 0 评论 -
MQTT----基于mosquitto库C语言实现发布和订阅
一.MQTT是什么MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议原创 2022-05-10 21:28:19 · 4278 阅读 · 0 评论 -
JSON格式与cJSON函数库
一. JSON1. JSON简介JSON(JavaScriptObject Notation, JS 对象标记) 是一种轻量级的数据交换格式。它是基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。2.json的语法规则json的语法规则:https://www.runoob.com/json/json-syn原创 2022-04-19 13:27:16 · 184 阅读 · 0 评论 -
Linux下iniparser库下载与使用
一. iniparser介绍iniparser是一个C语言库,是针对INI文件的开源解析器。ini文件则是一些系统或者软件的配置文件。 iniparser可以对配置文件进行解析、添加、修改、删除等操作。git地址如下:https://github.com/ndevilla/iniparser二. iniparser的安装1、下载iniparserwget https://codeload.github.com/ndevilla/iniparser/tar.gz/refs/tags/v4.1 -O原创 2022-04-17 14:28:57 · 1055 阅读 · 0 评论 -
MQTT协议介绍
MQTT(Message Queuing Telemetry Transport, 消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为远程连接设备提过实时可靠的消息服务,作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量原创 2022-04-02 14:21:40 · 18101 阅读 · 0 评论 -
详解socket中TCP的三次握手和四次挥手机制
对于TCP/IP,我们还知道TCP和UDP,前者可以保证数据的正确和可靠性,后者则允许数据丢失。最后,我们还知道,在建立连接前,必须知道对方的IP地址和端口号。我们还知道如下几个事实:1.一个指定的端口号不能被多个程序共用。比如,如果IIS占用了80端口,那么Apache就不能也用80端口了。2.很多防火墙只允许特定目标端口的数据包通过。3.服务程序在listen某个端口并accept某个连接请求后,会生成一个新的 socket 来对该请求进行处理。再实现了socket服务器端和客户端编程后,我通原创 2022-03-23 15:11:54 · 6707 阅读 · 0 评论 -
socket编程之服务器端与客户端(代码实例)
在我们学习的过程中,对TCP/IP、UDP、Socket编程这些词应该有所了解了。随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:什么是TCP/IP、UDP?Socket在哪里呢?Socket是什么呢?什么是TCP/IP、UDP?TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。UDP(User Data Protocol,用户数据报协议)是与TC原创 2022-01-18 10:21:54 · 11957 阅读 · 9 评论 -
树莓派DS18B20获取温度
1. DS18B20温度传感器简介(1)DS18B20介绍DS18B20是常用的数字温度传感器, 其输出的是数字信号, 具有体积小, 硬件开销低, 抗干扰能力强, 单线数字温度传感器.接下来我们将在树莓派上通过文件i/o调用来获取温度.(2)DS18B20连接树莓派配置内核启动后自动加载一线协议驱动连接引脚输入命令进行配置pi@raspberrypi:~ $ sudo raspi-config //打开配置选项按Enter选中继续按Enter选中打开内核文件pi@raspb原创 2021-12-04 16:55:47 · 888 阅读 · 0 评论