智能家居项目(一)之基础概念引入

news2024/11/15 20:05:27

目录

一、智能家居功能整体流程

二、设计模式

三、C语言中结构体的新玩法,承接上一步

四、工厂模式概念引入


一、智能家居功能整体流程

1.控制区
语音识别模块
socket客户端

2.外设区
继电器组控制灯,远程终端子系统,窗帘等,火灾报警器,摄像头

其中远程终端子系统(WemosD1)的作用是:当主系统的接口不够或者主系统满足不了现有的功能需求时,我们会引入一个子系统,我们会把族系统控制的一些指令传给子系统,让子系统来进行控制

二、设计模式

1、什么是设计模式(面试考点)

设计模式有23种,我用过工厂模式,之所以我学设计模式的原因是,以前我写代码比较乱,在添加功能的时候,会导致其他功能的代码被破坏,所以我去学的设计模式

2、什么是类和对象

类:是一种用户定义的引用数据类型,在C语言中也称之为结构体

struct Animal{--------->类

    int age; ---------->成员的属性
    int sex;
    void *peat();------>成员的方法

};

对象:类的一种具体对象

struct Animal dog;
struct Animai cat;

举例:用C语言做一次类和对象

#include <stdio.h>

struct Animal{          //类
        char name[32];
        int eat;
        int age;
        int sex;
        void (*peat)();
};
void dogEat(){
        printf("dog chi shi\n");
}
void catEat(){
        printf("cat chi yu\n");
}
void personEat(){
        printf("person chi mi\n");
}

int main(){

        struct Animal dog;
        struct Animal cat;
        struct Animal person;   //对象,事务的具象

        dog.peat = dogEat;
        cat.peat = catEat;
        person.peat = personEat;

        dog.peat();
        cat.peat();
        person.peat();

        return 0;
}
           

三、C语言中结构体的新玩法,承接上一步

#include <stdio.h>

struct Animal{          //类
        char name[32];
        int eat;
        int age;
        int sex;
        void (*peat)();
};
void dogEat(){
        printf("dog chi shi\n");
}
void catEat(){
        printf("cat chi yu\n");
}
void personEat(){
        printf("person chi mi\n");
}

int main(){

        struct Animal dog = {   //对象,事务的具象
                .name = "a huang",
                .peat = dogEat
        };
        struct Animal cat = {
                .name = "a mao",
                .peat = catEat
        };
        struct Animal person = {
                .name = "a ren",
                .peat = personEat
        };

        dog.peat();
        cat.peat();
        person.peat();
        printf("%s\n",dog.name);

        return 0;
}

执行结果:

四、工厂模式概念引入

1、什么是工厂模式

工厂模式是最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象

如上图中,左侧可以比拟为一个工厂,工厂里有很多个可能,右侧可比拟一个main函数的入口,当我们用到哪个功能时, 就在main函数中调用工厂里的功能接口(API)就可以了,如果想要在工厂里建立一个新功能时,直接新添加一个文件就好,工厂中一个独立的文件就代表是一个独立的功能,各个功能之间互不干扰,比如你改错了一个功能文件,但不影响其他的功能文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/350779.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析面试---假设检验知识点

文章目录一、假设检验是干啥的二、假设检验基本原理/思想三、假设检验步骤显著性检验(significance test)统计显著性和置信度补充&#xff1a;第一类错误和第二类错误p值是啥链接1数理统计中的统计推断问题主要有两大类&#xff1a;参数估计问题和假设检验问题参数估计问题 所指…

[datawhale202302]CS224W图机器学习:图的基本表示及特征工程

结论速递 本章涉及了图基本表示及传统的特征工程。 图由节点和连接组成&#xff0c;节点和连接上都可以有不同的属性。根据属性的特点&#xff0c;分为几类不同的图&#xff0c;其中异质图和二分图是比较重要的特殊图。 图可以用邻接矩阵进行结构化表示&#xff0c;如果图过于…

单元测试的优势

单元测试提供了许多好处&#xff0c;包括及早发现软件错误、促进变化、简化集成、提供文档来源以及许多其他优点&#xff0c;接下来将对其进行详细介绍。 1、使流程更灵活 单元测试的主要好处之一是它使编码过程更加灵活&#xff0c;更遵循敏捷开发方法论。 当向软件中添加越来…

如何加入new bing候补名单

如何加入new bing候补名单 我们都知道现在最新版edges中已经提示我们可以加入new bing候补名单&#xff0c;但国内环境下无法正常加入new bing候补名单&#xff0c;这篇文章讲告诉你如何绕过限制加入new bing候补名单 下载配置 HeaderEditor 插件 下载地址microsoftedge.mic…

XDSpy APT组织近期针对俄罗斯国防部的攻击活动分析

一 概述 XDSpy是ESET于2020年首次披露的APT组织&#xff0c;该组织最早活跃于2011年&#xff0c;主要针对东欧和塞尔维亚地区的政府、军队、外交部及私人公司进行窃密活动。2020年9月&#xff0c;该组织在攻击活动中使用Covid-19主题诱饵下发恶意Windows脚本文件&#xff08;W…

高通平台开发系列讲解(Sensor篇)IAM20680驱动程序的使用

文章目录 一、相关编译宏二、设备树配置三、打开iio自动挂载脚本四、模块加载验证沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍 IAM20680 驱动程序。 一、相关编译宏 目录:arch/arm/configs CONFIG_IIO_BUFFER=y CONFIG_IIO_KFIFO_BUF=y CONFIG_II…

Highcharts.Chart

Highcharts 是一个使用javascript 脚本来生成图表的工具&#xff0c;和jfreechart 作用类似&#xff0c;都用来生成各种图表&#xff0c;并支持图片的导出和打印。 从官网 www.highcharts.com 上下载的压缩表中的example中有各种图表的例子。 要编写生成图表的例子建议从 文…

生成小分子力场TOP

生成小分子力场TOP ATB网站 生成基于Amber力场适配gromacs格式TOP文件&#xff0c; 对于使用GaussView 计算resp电荷可以参考&#xff1a; https://blog.csdn.net/weixin_42486623/article/details/129055384 下面我们使用上面是生成的mol2文件来生成基于Amber的力场&#x…

Linux网络编程 | 彻底搞懂零拷贝(zero-copy)技术

传统文件传输的问题 在网络编程中&#xff0c;如果我们想要提供文件传输的功能&#xff0c;最简单的方法就是用read将数据从磁盘上的文件中读取出来&#xff0c;再将其用write写入到socket中&#xff0c;通过网络协议发送给客户端。 ssize_t read(int fd, void *buf, size_t …

JVM05 方法区

Person&#xff1a;存放在元空间&#xff0c;也可以说方法区 person&#xff1a;存放在Java栈的局部变量表中 new Person()&#xff1a;存放在Java堆中 1.方法区的理解 方法区主要存放的是 Class&#xff0c;而堆中主要存放的是 实例化的对象 方法区&#xff08;Method Area…

ubuntu清理挖矿病毒

0 序言 我之前搭建的hadoop用于测试&#xff0c;直接使用了8088和9870端口&#xff0c;没有放入docker&#xff0c;从而没有端口映射。于是&#xff0c;就被不法之徒盯上了&#xff0c;hadoop被提交了很多job&#xff0c;使得系统被感染了挖矿病毒&#xff0c;在前几天阿里云站…

企业实施了IM移动平台后,可以在上面做什么?

企业实施了IM移动平台后&#xff0c;可以有很多服务场景&#xff0c;其中员工服务平台是一个很好的场景组合。企业固然是以赢利为目的的组织&#xff0c;然而&#xff0c;在一个企业中同样需要有人文关怀的氛围。这种人文关怀&#xff0c;说到底&#xff0c;就是一种以员工为本…

阿里巴巴主流数据库连接池Druid入门

一.数据库连接池的必要性 (一).传统数据库连接模式的的步骤 1.在主程序中创建连接 2.进行sql操作 3.关闭数据库连接 &#xff08;二&#xff09;.传统数据库连接模式存在的问题 1.浪费时间&#xff1a;每次连接时都要验证登录和将conn加载到内存&#xff0c; 2.不能大规…

使用ThreadLocal实现当前登录信息的存取

有志者&#xff0c;事竟成 文章持续更新&#xff0c;可以关注【小奇JAVA面试】第一时间阅读&#xff0c;回复【资料】获取福利&#xff0c;回复【项目】获取项目源码&#xff0c;回复【简历模板】获取简历模板&#xff0c;回复【学习路线图】获取学习路线图。 文章目录一、使用…

【多线程与高并发】- 线程基础与状态

线程基础与状态 &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 一个有梦有戏的人 怒放吧德德 &#x1f31d;分享学习心得&#xff0c;欢迎指正&#xff0c;大…

漏洞深度分析|CVE-2023-25141 sling-org-apache-sling-jcr-base存在JNDI注入漏洞

项目介绍 Apache Sling提供对可插入资源提供程序的支持。虽然这允许将自定义数据提供程序非常灵活和高效地集成到Sling中&#xff0c;但这种集成是在Sling的资源 API 级别上完成的。可能依赖于能够将资源适配到JCR节点并继续使用JCR API的遗留代码将不适用于此类资源提供者。 …

微信小程序自动化测试最佳实践(附 Python 源码)

目录&#xff1a;导读 小程序运行环境 微信小程序技术架构 使用 Chrome 调试小程序 小程序的性能测试 微信小程序的自动化测试​编辑 源码-微信小程序自动化测试 Python 版代码示例 小程序自动化测试需要跨过的几个坎 写在最后 随着微信小程序的功能和生态日益完善&…

“一号文件”聚焦三农,VR全景助农发展数字化

一号文件为何如此聚焦三农&#xff1f;因为三农是拼经济的基础&#xff0c;也是筑牢底盘的基本保证。现如今&#xff0c;农业基础还不稳固&#xff0c;而且城乡区域发展和居民收入差距依旧较大&#xff0c;为了解决城乡发展不平衡、农村发展不充分等矛盾&#xff0c;发展数字化…

Fuzz概述

文章目录AFL一些概念插桩与覆盖率边和块覆盖率afl自实现劫持汇编器clang内置覆盖率反馈与引导变异遗传算法fork server机制AFL调试准备AFL一些概念 插桩与覆盖率 边和块 首先&#xff0c;要明白边和块的定义 正方形的就是块&#xff0c;箭头表示边&#xff0c;边表示程序执行…

java有关类的初始化的分析

什么是类&#xff1f; 类是具有相同状态和相同行为的一组对象的集合 什么是对象&#xff1f; 万事万物皆为对象&#xff0c;可以理解为具体的个体就是对象 什么是面向对象的编程&#xff1f; 就是只在乎结果而不在乎过程&#xff0c;怎么理解这句话&#xff1f;举个例子&#x…