- 博客(25)
- 资源 (4)
- 收藏
- 关注
原创 Linux并发处理方式——多路复用之epoll
Linux并发处理方式——多路复用之epoll前言:自Linux 2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器的必备技术,在大数据、高并发、集群等一些名词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被epoll占尽。select的缺点:单个进程能够监视的文件描述符的数量存在最大限制,通常是1024,当然可以更改数量,但由于select采用轮询的方式扫描文件描述符,文件描述符数量越多,性能越差;内核 / 用户空间内存拷贝问题,select需
2021-07-28 21:59:57 513
原创 Linux并发处理方式——多路复用之poll
Linux并发处理方式——多路复用之poll前言:poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。一、相关函数介绍#include <poll.h>struct pollfd{int f
2021-07-28 18:14:33 345
原创 Linux并发处理方式——多路复用之select
Linux并发处理方式——多路复用之select前言:我们都知道开启一个进程都要耗费cpu的资源,每一个进程都有独立4G的虚拟内存,在高并发的情况下进程不可能无限制地开启,这样对cpu的负载实在太大,要求是在无法满足,线程在开启也需要时间开销。那么现在我们就需要解决这个问题,在多路复用里可以做到把你需要做的事情交给内核进行监听,我们只需要在事件发生的时候去完成相应的事情即可,这样不会造成程序阻塞,使得程序效率不高。下面我介绍多路复用的select用法。一、相关函数介绍多路复用的用法主要就是把多个阻塞
2021-07-28 17:09:40 557
原创 Linux并发处理方式——多线程pthread
Linux并发处理方式——多线程pthread前言:简单来说,线程是进程的一条执行路径,在Unix系统下也叫做轻量级进程。所有的线程都在同一个进程下运行的,所以所有线程都可以共享进程里的资源,同时每个线程也有属于自身的栈空间、寄存器环境等等,每个线程执行着自己的任务。这时候又不得不考虑进程里面的资源分配问题了,如何解决死锁问题;父进程与子进程之间的关系,如何关闭子线程。一、相关函数1、父、子线程主线程和子线程的默认关系是:无论子线程执行完毕与否,一旦主线程执行完毕退出,所有子线程执行都会终止。这时
2021-07-25 23:34:02 1317
原创 Linux并发处理方式——多进程fork实现
Linux——多进程fork实现运行环境:Ubuntu18.04前言:在Linux环境下进程是很重要的知识点,它可以实现在一个应用程序下处理并发问题,并发处理的方式包括多进程、多线程和多路复用,前两者会更多地占用系统的资源。下面简单地利用server和client实现,server同时服务多个client。一、基本介绍1、fork、vfork(1)fork()系统调用会创建一个新的子进程,这个子进程是父进程的一个副本。这也意味着,系统在创建新的子进程成功后,会将父进程的文本段、数据段、堆栈都复制
2021-07-21 23:40:25 2333
原创 Linux——网络socket(server、client)
Linux——网络socket(server、client)前言:对于APUE网络socket,我们需要了解就是server和client之间的通信建立过程。首先我们需要知道两台不同网段的pc是怎么通信的,当一台pc通过应用程序发一段消息过来给另一台pc时,pc获取到数据包之后就行拆包解析,这些都是操作系统内核的工作,对于server而言,需要告诉内核使用什么ip和端口来建立起服务,当有client接入时,内核先进行解析,得到client的ip和访问端口之后再给server(对应的应用程序),最后完成通
2021-07-20 23:44:35 2591 2
原创 Linux——DS18B20温度读取(C语言)
Linux——DS18B20温度读取(C语言)运行环境及硬件:树莓派4B、DS18B20前言:1、打开树莓派的单总线驱动sudo raspi-config选定之后系统会提示进行重启,点击确认就行了。2、查看系统是否自动加载单总线的驱动 lsmod | grep w如果没有可以进行下面这个操作进行添加: sudo vim /boot/config.txt在最后进行添加:采用BCM GPIO的标准,使用引脚4dtoverlay=w1-gpio-pullup,gpiopin=4
2021-07-18 22:20:30 1050
原创 Linux——C语言文件IO(系统调用)
Linux——C语言文件IO(系统调用)运行环境:Ubuntu18.04前言:对于系统调用,我们对于文件IO需要学习的主要有open()、read()、write()、close()。我们平时使用的库函数其实都是通过系统调用进行封装成各种功能的函数。1、open()int open(const char *path, int oflag, mode)path: 要打开的文件、设备的路径oflag:(1)必选:O_RDONLY(只读)、O_WRONLY(只写)、O_RDWR(读写)(2)可选
2021-07-18 18:44:53 716
原创 C语言数据结构——队列(循环队列)
C语言数据结构——队列(循环队列)前言:常见的队列数据结构有两种,原则都是“先进先出”。一种是直线的队列,这种队列相对内存而言是不合理的,因为不能够重复使用。另外一种是循环队列,这种队列的设计巧妙之处就在于数组内部空间可以重复使用,但是也存在这一些不足之处,比如,解决追赶问题,如何定义什么时候为空、什么时候为满。本章博客就是解决这个问题。1、在这里定义的结构体成员front充当一个队头的位置,用来打印数据;rear充当一个队尾的位置,用来插入数据;data[]数组用来存储数据,长度为10;qu
2021-07-14 19:47:48 884
原创 C语言数据结构——队列(尾插法)
C语言数据结构——队列前言:一、入队void in_team(int data){ node_t *new_node; new_node = (node_t *) malloc(sizeof(node_t)); if(new_node == NULL) printf("fail for malloc!"); memset(new_node, 0, sizeof(*new_node)); new_node->next = NULL; new_node->data = d
2021-07-13 22:56:04 765 1
原创 C语言——动态数组堆栈
C语言——动态数组堆栈环境:Linux18.04前言:对于数组而言,首先想到就是可以用来存放一些值,但是如何操作和分配里面有很多的东西可以学习,对于数组,我们只需要知道其首地址,全局还是局部,数据是否溢出这三个方面着手就好。这里介绍的动态数组是一个全局变量,我们会定义一个指针类型,因为指针和数组其实可以互换的。这里的动态数组堆栈主要功能有压栈(push)、出栈(pop)、创建(create)、销毁(empty)和遍历(printf)。一、压栈(push)void push(int data){
2021-07-13 22:33:05 426
原创 C语言——链表堆栈
C语言——链表堆栈本文章在这里介绍一个链表,其中的功能包括,压栈、出栈、销毁三个功能。一、压栈(push)压栈的基本思想就是头插法的方法,首先在这个过程中包括了头节点、第一个节点和新节点三个角色。在这里我们需要了解一下程序在运行的时候,内存的空间分配是什么情况。我们知道对于一个32位系统来说,一个进程能分配的最大内存大小为4G(虚存),其中的我们需要明白全局变量,局部变量,静态的内存分配位置。对于全局变量和静态而言,它们是分配在数据段,数据段在运行时又分为bss、data和rodata三个段,这些量
2021-07-13 11:11:12 472
原创 gdb调试出现No such file or directory
gdb调试出现No such file or directory在调试gdb的时候老是出现了No such file or directory,这是因为源文件与可执行文件不在同一个目录下。在这里提供一个治标不治本的办法。在这上面提示说这个malloc.c文件找不到。解决办法:show debug-file-directory 查看当前的debug路径set debug-file-directory 设置debug路径,这里为空。路径为空之后,显然它就开始从本路径开始执行了这种办法的
2021-07-13 10:15:39 14717 4
原创 Mixly第三方自定义用户库实现
Mixly第三方自定义用户库实现一、硬件准备名称数量rc522(带IC卡)一块arduino uno一块杜邦线若干二、软件准备名称版本Mixly最新Mixly官方下载链接:三、项目开始四、相关效果展示...
2021-05-19 18:51:06 1231
原创 Arduino版本 DFrobot mind+图形化模块自定义添加库--rc522(RFID)
Arduino版本 DFrobot mind+图形化模块自定义添加库–rc522(RFID)一、软件准备名称版本Mind+最新VS code(这个没硬性要求)最新二、硬件准备名称数量Arduino uno一块MFRC522一块IC卡一块杜邦线若干三、项目开始1、相关参考文章DF官方参考链接:https://mindplus.dfrobot.com.cn/ext-api#target_10DF官方学习视频参考:
2021-05-12 17:01:20 1754 1
转载 基于python飞桨PaddleHub实现将视频流转化为皮影戏
基于python飞桨PaddleHub实现将视频动作转化为皮影戏飞桨(PaddlePaddle)是集深度学习核心框架、工具组件和服务平台为一体的技术先进、功能完备的开源深度学习平台,已被中国企业广泛使用,深度契合企业应用需求,拥有活跃的开发者社区生态。提供丰富的官方支持模型集合,我们这里将要使用到其中的骨骼节点检测模型,通过PaddleHub提供的人体骨骼关键点检测预训练模型,我们就可以快速实现皮影戏的效果。这里说一下这个项目的大体实现流程,先将现有的视频按帧剪切为一张张的图片,并保存到本地,使用Pad
2021-05-06 22:55:16 437
原创 基于SIoT添加插件控制Mind+掌控板的LED灯
基于SIot(添加插件)和Mind+掌控板的数据传输一、硬件准备名称数量Mind+掌控板1二、软件准备名称版本Mind+ IDEV1.7.0 RC3.0(自己看着办)三、项目开始1、SIot相关设计四、总结...
2021-04-27 22:28:38 621 3
原创 基于arduino通过软串口发送数据给DFrobot Mind+并上传阿里云物联网平台
基于arduino通过软串口发送数据给DFrobot Mind+并上传阿里云物联网平台一、硬件准备器件数量Mind +1arduino uno1Mind +扩展板1杜邦线若干二、软件准备名称版本Mind+V1.7.0 RC3.0(自己看着办)arduino IDE1.8.13(自己看着办)三、项目开始1、四、总结...
2021-04-25 22:26:14 1726 1
原创 基于arduino的农业大棚环境监测系统
基于arduino的农业大棚环境监测系统一、硬件准备器材数量arduino主板一块LCD1602一块DHT11温湿度传感器(22or21也行)一个光照强度传感器一个4×4按键一块蜂鸣器一个面包板(可有可无,有是最好的,接线方便)一块杜邦线若干二、软件准备开发环境版本arduino IDE1.8.13(自己看着办)windows10(自己看着办)1、arduino IDE下载:http
2021-04-21 17:16:30 7858 4
原创 wemos(8266)+Mqtt+MySQL实现环境光照强度上传数据库
云+数据库MySQL一、项目硬件准备1、一块wemos开发板2、一个光照传感器3、若干杜邦线二、项目软件准备1、一个云服务器+创好的MySQL(安装宝塔可快速搭建数据库)2、mqtt x测试软件三、项目开始1、软件部分(1)安装宝塔(2)在宝塔开放相关端口这里开放了18083、1883、8080等端口,其中18083用来打开EMQ X Dashboaord,1883用来mqtt协议通信。(3)创建MySQL数据库(4)建立相关数据库的表(我这里主要是上传关照强度的值)相关
2021-04-20 22:27:45 749
原创 DFROBOT Mind+ 掌控板 人工智能测温实验
DFROBOT Mind+ 掌控板实验人工智能测温实验特别声明:本文系湛江市第十七中学星火创客团队及岭南师范学院物联网俱乐部原创部分参赛项目,转载请保留声明一、实验软硬件环境硬件:Mind +掌控板、DS18B20温度传感器(由于没有测温人体的,只好用它来代替一下)、micro:bit、HuskyLens。软件:Mind+ IDE(版本:V1.6.5 RC3.0)二、实验目的及要求1、实现测温2、实现人脸识别3、实现云数据库应用4、实现测温数据mqtt上传至物联网云平台三、实验原理与内
2020-10-27 17:40:23 1577 1
转载 ubuntu18.04无法连接网络解决方法
转载:https://blog.csdn.net/qq_35531549/article/details/89011945
2020-09-28 19:51:21 2517
原创 dfrobot Mind+掌控板图形化编程
dfrobor Mind+掌控板图形化编程一、实验软硬件环境硬件:Mind +掌控板软件:Mind IDE(版本:15.6)二、实验目的及要求实验一:光控灯实验二:声控灯实验三:语音控制灯实验四:用mqtt在esay iot平台上实现信息发送和接收三、实验原理与内容实现Mind + IDE编程。四、实验过程核心代码截图1、光控灯图形化编程:实现代码:```python#include <MPython.h>// 主程序开始void setup() {
2020-09-22 22:36:09 3345
原创 基于树莓派csi摄像头的实时监控
基于树莓派csi摄像头的实时监控今天我们来实现一下如何利用csi摄像头在树莓派上实现实时监控,以下是我们需要准备的材料: 本次操作使用putty和vnc在win实现远程操控一、材料: 1、一个烧好Linux系统的树莓派(这里使用3b+) 2、一个csi摄像头二、实现步骤如果是刚烧好的树莓派请做好以下工作:1、将树莓派的更新资源换成国内资源终端分别输入:sud...
2019-09-15 11:02:47 3986 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人