C语言
文章平均质量分 88
Frank-Hu
这个作者很懒,什么都没留下…
展开
-
IO多路复用之select、poll、epoll
对于网络请求,来一个请求,我们就启动一个进程去处理一个请求,随着用户量越来越大,开启的进程数量也越来越多,而每开启一个进程是需要消耗资源的,例如内存等,这样,可能会导致资源不足,无法响应更多的请求。例如:某教室有10名学生和1名老师,这些学生上课会不停的提问,所以一个老师处理不了这么多的问题。那么学校为每个学生都配一名老师,也就是这个教室目前有10名老师。此后,只要有新的转校生,那么就会为这个学生专门分配一个老师,因为转校生也喜欢提问题。原创 2023-09-15 11:03:29 · 150 阅读 · 0 评论 -
多线程编程与互斥锁
在操作系统原理的术语中,线程是进程的一条执行路径。线程在Unix系统下,通常被称为轻量级的进程,线程虽然不是进程,但却可以看作是Unix进程的表亲,所有的线程都是在同一进程空间运行,这也意味着多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。一个进程可以有很多线程,每条线程并行执行不同的任务。原创 2023-05-07 04:58:13 · 258 阅读 · 0 评论 -
多进程编程
服务器按处理方式可以分为迭代服务器和并发服务器两类。平常用C写的简单Socket客户端服务器通信,服务器每次只能处理一个客户的请求,它实现简单但效率很低,通常这种服务器被称为迭代服务器。然而在实际应用中,不可能让一个服务器长时间地为一个客户服务,而需要其具有同时处理 多个客户请求的能力,这种同时可以处理多个客户请求的服务器称为并发服务器,其效率很 高却实现复杂。在实际应用中,并发服务器应用的最广泛。原创 2023-04-17 06:02:30 · 599 阅读 · 0 评论 -
基于Arduino的物联网农业控制系统(含源码)
在这个农业监测设备中,我重点监测了环境温湿度,土壤湿度以及水位情况。我采用了小型且稳定的传感器,并且将相关数据使用 LoRaWAN协议上传到The Things Network(TTN).物联网设备在现代农业中发挥了极大的作用。随着智能农业的发展,越来越多的物联网小型设备应用在农业领域。农业发展正处于从传统向现代化大农业过渡的进程当中,急需用现代物质条件进行装备,用现代科学技术进行改造。原创 2023-01-06 00:17:49 · 2165 阅读 · 0 评论 -
malloc、free函数及memset函数用法详解
最近在力扣刷题时,发现普通的创建数组很容易引起编译器报错。而使用到动态内存分配malloc()函数和初始化函数memset()可以避免这类问题的发生。本文将详细介绍一下两个函数的用法。原创 2022-08-15 17:25:22 · 3878 阅读 · 0 评论 -
基于MQTT协议实时温度上报阿里云iot平台
前言在上篇文章中我们用MQTT.fx模拟客户端实现了与阿里云物联网平台的双向通信,接下来我们自己动手编程使用mosquitto库实现一个客户端来实现一个发布端。一.iniparser 和 json1.为什么要使用iniparser库与阿里云进行通信时,我们需要如下一些信息,例如在使用MQTT.fx时:复制保存一下,另外之前发布和订阅的topic也要记下来:这些都是我们在项目中要用到的配置信息,具体应用在:clientid:struct mosquitto *mosquitto_new( c原创 2022-05-18 10:15:23 · 1516 阅读 · 0 评论 -
阿里云iot平台实现MQTT通信(mqtt.fx接入iot平台及测试)
一.阿里云iot平台环境搭建首先进入阿里云官网https://www.aliyun.com/?utm_content=se_1000301881注册并登录账号。点击控制,搜索物联网平台并进入。第一次使用阿里云物联网平台会弹出一个界面要求同意相关协议,同意即可。复制这三个东西建议保存在记事本中,后续会使用。返回产品,点击产品名称查看产品详情;接下来添加两个功能来进行测试:一个是标准功能一个是自定义功能。得到如图所示 然后点击发布上线我们可以在功能定义里查看功能的详细信息,其中当前温原创 2022-05-16 13:27:37 · 3537 阅读 · 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 · 556 阅读 · 0 评论 -
MQTT----基于mosquitto库C语言实现发布和订阅
一.MQTT是什么MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议原创 2022-05-10 21:28:19 · 3993 阅读 · 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 · 168 阅读 · 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 · 930 阅读 · 0 评论 -
冒泡排序与快速排序(代码实例)
冒泡排序(Bubble Sort)和快速排序(Quick Sort)都属于交换排序类。今天我们将从最基本的冒泡排序入手,介绍冒泡排序和快速排序。一.冒泡排序(Bubble Sort)1.基本思想冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越大的原创 2022-03-01 15:15:17 · 855 阅读 · 0 评论 -
树莓派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 · 856 阅读 · 0 评论 -
插入排序与Shell排序(图解+代码实例)
插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。1、直接插入排序(Insertion Sort)基本思想:每一次排序将一个待排序的数据,按其关键字的大小插入到前面的已经有序的序列中,然后进行排序,使其包含插入数据的序列再次有序,重复上述操作,直至整个序列有序,排序结束。一般情况下其时间复杂度为O(n^2),当所排序列本身有序时,其时间复杂度为O(n),空间复杂度为O(1)。这个排序算法是稳定的。...原创 2022-02-27 20:18:50 · 1370 阅读 · 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 · 11251 阅读 · 8 评论 -
指针函数、函数指针与回调函数
前言初学者碰到指针函数和函数指针往往会混淆概念,区分不清。其实区分这两个概念看的就是后面两个字,前面的两个字就是用来修饰的形容词。**我们需要通过后面两个字,区分它们究竟是指针还是函数。**下面我们将通过C代码来具体分析二者的区别,并进一步引出回调函数的概念。指针函数定义与声明格式指针函数:看到最后两个字,顾名思义就是函数。它的本质是一种函数,返回类型是某一类型的指针。声明形式:类型标识符函数名(函数参数1,函数参数2,…);以下几种方法都是正确的:(本人比较喜欢第一种方法,便于提醒自己返回值原创 2021-11-30 13:55:49 · 349 阅读 · 1 评论