当前位置: 首页 > news >正文

C++学习之类和对象_1

1. 面向过程与面向对象

C语言是面向过程的,注重过程,通过调用函数解决问题。
比如做番茄炒蛋:买番茄和鸡蛋->洗番茄和打鸡蛋->先炒蛋->把蛋放碟子上->炒番茄->再把蛋倒回锅里->加调料->出锅

而C++是面向对象的,注重对象之间的交互。在做番茄炒蛋这个过程中大致分为以下几个对象:食材(番茄与鸡蛋),炒菜设备(锅、电磁炉、铲子等),调料(油、盐、糖),碟子。我们只关注各个对象的交互,不关注电磁炉怎么打开及关闭,不关注调料怎么放等过程。

2. 类的引入

C语言的结构体中只能定义变量,在C++中的结构体不仅可以定义变量,也可以定义函数。比如在实现栈上,C语言的结构体只能定义变量,而在C++上还能放入函数定义。

struct stack
{int* _a;int _top;int _capacity;void init(int default_capacity = 4); //声明void push(int x){_a[_top] = x;_top++;}void pop(){_top--;}int get_top(){if (_top < 0)return -9999;return _a[_top - 1];}void destroy(){free(_a);}
};int main()
{struct st;st.init();st.push(1);st.push(2);st.push(3);st.push(4);cout << st.get_top() << endl;st.pop();cout << st.get_top() << endl;st.pop();cout << st.get_top() << endl;st.pop();cout << st.get_top() << endl;st.pop();st.destroy();return 0;
}

在C++中,更喜欢用类来替代结构体

3. 类的定义

3.1 语法:

class className
{// 类体:由成员函数和成员变量组成
};  // 一定要注意后面的分号

class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。
类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。

3.2 类的两种定义方式

  • 声明和定义全部放在类内
class stu_info
{
private:char _name;int _age;char _gender;int _class;public:void show_info(){cout << "姓名:" << _name << "年龄:" << _age << "性别:" << _gender << "班级:" << _class << endl;}
};
  • 声明在类内(xx.h),成员函数放在类外(xx.c)定义(或者部分类内,部分类外)

xx.h

class stack //类有权限功能
{
private: //私有,只能在类内使用//成员变量,建议前面加个_,用于区分函数的形参int* _a;int _top;int _capacity;public: //公有,类外也可以使用//成员函数, 在变量之前或之后都可以,因为类域是一个整体// 类里面的函数也可以声明定义分离void init(int default_capacity = 4); //类内声明void push(int x) // 在类内定义的函数默认是inline{_a[_top] = x;_top++;}void pop(){_top--;}int get_top(){if (_top < 0)return -9999;return _a[_top - 1];}void destroy(){free(_a);}
};

xx.c

void stack::init(int default_capacity) //类外定义,要指定类域
{int* temp = (int*)malloc(sizeof(int) * default_capacity);if (temp == nullptr){perror("malloc fail.");return;}_a = temp;_top = 0;_capacity = default_capacity;
}

一般我们希望采用第二种形式。
成员命名规则建议:尽量让每个成员变量名前面都加下划线,以防跟成员函数名冲突,具体看项目要求。

4. 类的访问限定符和封装

4.1 访问限定符

用类将对象的属性和方法(成员函数)结合在一起,让对象更加完善,通过配置过的访问权限,有选择性地将接口提供给外部用户使用。
在这里插入图片描述
注意:

  • public修饰的成员可以在类外被访问;
  • protect与private修饰的成员只能在类内被访问(在外定义的成员函数也可以访问)
  • 访问权限从第一个访问限定符开始,直到遇到下一个访问限定符
  • 如果最后一个访问限定符直到 } 结束也没有其它访问限定符,那么其中包含的成员的访问权限都取决于这个访问限定符
  • 在使用class时,若未标明访问限定符,则默认访问权限是private,而struct的默认访问权限是public,这是为了兼容C语言而设定的。

注意:访问限定符只在编译时有用,当数据映射到内存后,没有任何访问限定符上的区别

4.2 类的封装

面向对象的三大特性:封装、继承、多态

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
封装本质是一种管理,为了给用户更好地使用类。

5. 类的作用域

类定义了一个新的作用域,类的所有成员都在类的作用域中。
如果在类内声明,类外定义成员函数时,要加上域作用限定符,指定类域,如下:

返回类型 类名::函数名(形参)

void stack::init(int default_capacity) //类外定义,要指定类域
{int* temp = (int*)malloc(sizeof(int) * default_capacity);if (temp == nullptr){perror("malloc fail.");return;}_a = temp;_top = 0;_capacity = default_capacity;
}

6. 类的实例化

用类类型创建对象的过程被称为类的实例化。
类就好比一张房屋设计图纸,而对象就如同经这张图纸设计出来的房屋。
类并没有被实际分配空间,但对象却有。
一个类可以实例化出多个对象,占用实际的物理空间,存储类成员变量。

7. 类的对象大小的计算

一个类的大小实际上就是类中成员变量决定的,同时也要考虑内存对齐。(成员函数不计入)
注意空类的大小,空类比较特殊,编译器给了空类一个字节来唯一标识这个类的对象。

内存对齐规则

  1. 第一个成员在与结构体偏移量为0的地址处。
  2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。 注意:对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。 VS中默认的对齐数为8
  3. 结构体总大小为:最大对齐数(所有变量类型最大者与默认对齐参数取最小)的整数倍。
  4. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整 体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。

8. 类成员函数的this指针

8.1 this指针的引出

创建一个日期类:

class Date
{
public:void Init(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout << this->_year << "-" << _month << "-" << _day << endl; //this类型是 Date* const this,不可修改指向//this指针本身隐藏了,不能在形参和实参上显示传递//this指针放在哪?this是形参,所以是放在栈内,在函数调用的栈帧内}int _year;	// 年int _month;	// 月int _day;	// 日
};

这个类中有两个函数Init与Print,我们在调用这两个函数的时候,发现少了1个参数,这个参数就是对象,如果少了这个对象,那我们调用了之后到底会有什么结果?那肯定是编译报错。所以,我们有理由认为:类的成员函数肯定隐藏了一个参数,这个参数是指向对象本身的!

C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有“成员变量”的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。

8.2 this指针的特性

  1. this的类型: 类的类型* const;即不能自行修改this的指向!
  2. this指针只能在成员函数内使用;
  3. this指针本质上是成员函数的形参,当对象调用成员函数时,将对象地址传给this形参,即对象不存储this指针;
  4. this指针是成员函数第一个形参,由编译器自动传递,不需要用户传递。
int main()
{Date d1, d2;d1.Init(2022, 1, 11);d2.Init(2022, 1, 12);d1.Print(); // this指针起作用,实际上是Print(&d1)d2.Print(); // 所以这里即使用同样的函数,但却可以显示不同结果//错误写法://Date::_day; //声明不是实的,设计图不能住人//d1::_day; //::为域作用限定符,对象不是域//Date::Init(); //Date是类域return 0;
}

相关文章:

C++学习之类和对象_1

1. 面向过程与面向对象 C语言是面向过程的&#xff0c;注重过程&#xff0c;通过调用函数解决问题。 比如做番茄炒蛋&#xff1a;买番茄和鸡蛋->洗番茄和打鸡蛋->先炒蛋->把蛋放碟子上->炒番茄->再把蛋倒回锅里->加调料->出锅 而C是面向对象的&#xff…...

Oracle OCP认证考试考点详解083系列14

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 66. 第66题&#xff1a; 题目 解析及答案&#xff1a; 当一个非常大的数据文件被划分为四个部分进行 RMAN 多区段备份时&#xff0c;以下…...

华为欧拉(EulerOS)系统全栈软件部署指南:从 Redis 到 MySQL 实战详解

前言 在国产化操作系统蓬勃发展的背景下&#xff0c;华为欧拉&#xff08;EulerOS&#xff09;凭借其稳定性与安全性&#xff0c;成为企业级服务器部署的重要选择。本文基于官方技术文档与最佳实践&#xff0c;详细梳理 Redis 集群、RabbitMQ、JDK、Tomcat 及 MySQL 在欧拉系统…...

YOLO使用CableInspect-AD数据集实现输电线路缺陷检测

输电线路缺陷检测是一个关键的任务&#xff0c;旨在确保电力传输系统的可靠性和安全性。今天我们使用CableInspect-AD数据集进行训练完成缺陷检测&#xff0c;下载的数据集格式如下&#xff1a; 我们需要经过以下步骤&#xff1a; COCO转YOLO 首先是将COCO格式的数据转换为YO…...

全国青少年信息素养大赛 Python编程挑战赛初赛 内部集训模拟试卷五及详细答案解析

博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解...

三个线程 a、b、c 并发运行,b,c 需要 a 线程的数据如何解决

说明&#xff1a; 开发中经常会碰到线程并发&#xff0c;但是后续线程需要等待第一个线程执行完返回结果后&#xff0c;才能再执行后面线程。 如何处理呢&#xff0c;今天就介绍两种方法 1、使用Java自有的API即CountDownLatch&#xff0c;进行实现 思考&#xff1a;CountDown…...

python实现点餐系统

使用python实现点餐系统的增加菜品及价格&#xff0c;删除菜品&#xff0c;查询菜单&#xff0c;点菜以及会员折扣价等功能。 代码&#xff1a; 下面展示一些 内联代码片。 # coding utf-8menu {拍黄瓜: 6, 小炒肉: 28, 西红柿炒蛋: 18, 烤鱼: 30, 红烧肉: 38, 手撕鸡: 45,…...

力扣26——删除有序数组中的重复项

目录 1.题目描述&#xff1a; 2.算法分析&#xff1a; 3.代码展示&#xff1a; 1.题目描述&#xff1a; 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对…...

A2A与MCP定义下,User,Agent,api(tool)间的交互流程图

官方图&#xff1a; 流程图&#xff1a; #mermaid-svg-2smjE8VYydjtLH0p {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2smjE8VYydjtLH0p .error-icon{fill:#552222;}#mermaid-svg-2smjE8VYydjtLH0p .error-tex…...

【大模型面试每日一题】Day 13:数据并行与模型并行的区别是什么?ZeRO优化器如何结合二者?

【大模型面试每日一题】Day 13&#xff1a;数据并行与模型并行的区别是什么&#xff1f;ZeRO优化器如何结合二者&#xff1f; &#x1f4cc; 题目重现 &#x1f31f;&#x1f31f; 面试官&#xff1a;数据并行与模型并行的区别是什么&#xff1f;ZeRO优化器如何结合二者&…...

各种注解含义及使用

RestController RestController注解 是Spring 4.0引入的一个组合注解&#xff0c;用于简化RESTful Web服务的开发。 RestController注解 相当于 Controller 和 ResponseBody 注解的组合&#xff0c;表示该类是一个控制器&#xff0c;并且所有的方法返回值都将直接写入HTTP响应体…...

amass:深入攻击面映射和资产发现工具!全参数详细教程!Kali Linux教程!

简介 OWASP Amass 项目使用开源信息收集和主动侦察技术执行攻击面网络映射和外部资产发现。 此软件包包含一个工具&#xff0c;可帮助信息安全专业人员使用开源信息收集和主动侦察技术执行攻击面网络映射并执行外部资产发现。 使用的信息收集技术 技术数据来源APIs&#xf…...

xxl-job简单入门使用教程

1、从git中拉取xxl-job代码 https://gitee.com/xuxueli0323/xxl-job HTTPS&#xff1a;git clone https://gitee.com/xuxueli0323/xxl-job.git SSH&#xff1a;git clone gitgitee.com:xuxueli0323/xxl-job.git 拉取本地后&#xff0c;使用Idea打开项目&#xff0c;当前使用…...

设置GO程序在离线情况下读取本地缓存的模块

在 Go 中&#xff0c;GOPROXY 环境变量用于指定模块代理服务器的地址。如果你想让 GOPROXY 读取本地的模块&#xff0c;可以通过以下几种方式实现&#xff1a; 1. 使用本地代理服务器 你可以搭建一个本地的 Go 模块代理服务器&#xff0c;将需要的模块代码推送到代理服务器中…...

Python 爬虫基础入门教程(超详细)

一、什么是爬虫&#xff1f; 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;又称网页蜘蛛&#xff0c;是一种自动抓取互联网信息的程序。爬虫会模拟人的浏览行为&#xff0c;向网站发送请求&#xff0c;然后获取网页内容并提取有用的数据。 二、Python爬虫的基本原…...

C语言实现三子棋

目录 1.通过模块化来实现三子棋 2.三子棋代码基本逻辑 3.代码的书写 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a; gane.h gane.c main.c 第五步&#xff1a; game.h game.c main.c 第六步&#xff1a; game.h game.c main…...

SCDN是什么?

SCDN是安全内容分发网络的简称&#xff0c;它在传统内容分发网络&#xff08;CDN&#xff09;的基础上&#xff0c;集成了安全防护能力&#xff0c;旨在同时提升内容传输速度和网络安全性。 SCDN的核心功能有&#xff1a; DDoS防御&#xff1a;识别并抵御大规模分布式拒绝服务…...

Transformer编码器+SHAP分析,模型可解释创新表达!

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基本介绍 基于SHAP分析的特征选择和贡献度计算&#xff0c;Matlab2023b代码实现&#xff1b;基于MATLAB的SHAP可解释Transformer编码器回归模型&#xff0c;敏感性分析方法。 详细介绍 引言 在正向渗透&#xff08…...

机器学习第三讲:监督学习 → 带答案的学习册,如预测房价时需要历史价格数据

机器学习第三讲&#xff1a;监督学习 → 带答案的学习册&#xff0c;如预测房价时需要历史价格数据 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1…...

【TACD模拟】质子辐照对GaN器件临界电压增加的影响机制

2013 年,佛罗里达大学的 Erin Patrick 等人基于 TRIM 和 FLOODS 模型,研究了质子辐照对 AlGaN/GaN HEMTs 的影响。研究背景方面,AlGaN/GaN HEMTs 因其宽禁带、高击穿场、高电子迁移率以及优秀的热管理能力,在商业和军事领域应用前景广阔,但长期可靠性仍是问题,尤其是栅极…...

VBA高级应用30例应用4:利用屏蔽事件来阻止自动运行事件

《VBA高级应用30例》&#xff08;版权10178985&#xff09;&#xff0c;是我推出的第十套教程&#xff0c;教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开&#xff0c;这套教程案例与理论结合&#xff0c;紧贴“实战”&#xff0c;并做“战术总结”&#xff0c;以…...

基于SSM实现的健身房系统功能实现八

一、前言介绍&#xff1a; 1.1 项目摘要 随着社会的快速发展和人们健康意识的不断提升&#xff0c;健身行业也在迅速扩展。越来越多的人加入到健身行列&#xff0c;健身房的数量也在不断增加。这种趋势使得健身房的管理变得越来越复杂&#xff0c;传统的手工或部分自动化的管…...

Java设计模式之原型模式详解:从入门到精通

1. 原型模式概述 1.1 定义与核心概念 **原型模式(Prototype Pattern)**是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过new关键字实例化。这种模式特别适用于创建成本较高的对象。 专业术语解释表: 术语解释原型(Prototype)被复制的原始对象克隆(Clone)…...

鞋样设计软件

Sxy 64鞋样设计软件是一款专业级鞋类设计工具 专为鞋业设计师与制鞋企业开发 该软件提供全面的鞋样设计功能 包括二维开版 三维建模 放码排料等核心模块 支持从草图构思到成品输出的完整设计流程 内置丰富的鞋型数据库与部件库 可快速生成各种鞋款模板 软件采用智能放码技术 精…...

移动IP与手机移动数据流量的概念、原理、区别与联系

移动IP与手机移动数据流量的概念、原理、区别与联系 文章目录 移动IP与手机移动数据流量的概念、原理、区别与联系一、概念与原理二、核心区别三、联系与协作四、技术挑战与发展趋势五、总结 一、概念与原理 移动IP 定义&#xff1a;移动IP是一种网络层协议&#xff0c;允许设…...

Spring中除DI之外获取 BEAN 的方式​

前言 在 Spring 框架的开发实践中&#xff0c;获取 Bean 是极为重要的基础操作。我们熟知通过依赖注入能便捷地获取 Bean&#xff0c;不过在许多场景下&#xff0c;还需要借助其他方式来获取 Bean。本文将深入探讨在 Spring 中除了依赖注入之外获取 Bean 的多种方式&#xff0c…...

屎上雕花系列-2nd

以下为“屎上雕花”的尝试2nd 使用Deepseek扩容而来&#xff0c;我竟然没有找到明显的错误&#xff0c;太强大了&#xff0c;工作改变生活了 LeCroy 以太网与 SAN 网络测试解决方案 硬件平台一&#xff1a;Xena 以太网流量生成器 Xena 以太网流量生成器是一款高性能的网络测…...

第十五章,SSL VPN

前言 IPSec 和 SSL 对比 IPSec远程接入场景---client提前安装软件&#xff0c;存在一定的兼容性问题 IPSec协议只能够对感兴趣的流量进行加密保护&#xff0c;意味着接入用户需要不停的调整策略&#xff0c;来适应IPSec隧道 IPSec协议对用户访问权限颗粒度划分的不够详细&…...

第四天 从CAN总线到Spark/Flink实时处理

前言 在智能网联汽车快速发展的今天&#xff0c;每辆汽车每天产生的数据量高达数GB。这些数据蕴藏着驾驶行为、车辆健康、道路状况等宝贵信息。本文将带您从零开始&#xff0c;系统学习车辆数据采集与分析的全流程技术体系&#xff0c;包含&#xff1a; CAN总线数据解析与采集…...

pandas中的数据聚合函数:`pivot_table` 和 `groupby`有啥不同?

pivot_table 和 groupby 是 pandas 中两种常用的数据聚合方法&#xff0c;它们都能实现数据分组和汇总&#xff0c;但在使用方式和输出结构上有显著区别。 0. 基本介绍 groupby分组聚合 groupby 是 Pandas 库中的一个功能强大的方法&#xff0c;用于根据一个或多个列对数据进…...

AI客服问答自动生成文章(基于deepseek实现)

小编一直在用AI做网站平台文章的润色或者二创。一直有一个想法&#xff0c;在自己网站加一个AI智能客服&#xff0c;通过文心或者deepseek来智能回答网友提出的问题&#xff0c;这样就能减少很多人工回复的麻烦&#xff0c;提高互动效率。 开发背景 其实很多网友提出的问题非…...

镜头内常见的马达类型(私人笔记)

① 螺杆式马达 驱动来源&#xff1a;机身内马达。镜头尾部有一个接收“螺杆”的接口&#xff0c;通过机械传动带动镜头对焦组。缺点&#xff1a;慢、吵、不能用于无机身马达的相机。✅ 典型镜头&#xff1a;尼康 AF、AF-D 系列&#xff1b;美能达老镜头。尼康传统的AF镜头通过…...

从 JMS 到 ActiveMQ:API 设计与扩展机制分析(一)

引言 在当今的分布式系统开发中&#xff0c;消息中间件扮演着举足轻重的角色&#xff0c;它为应用程序之间提供了可靠的异步通信机制。JMS&#xff08;Java Message Service&#xff09;作为 Java 平台上的消息服务规范&#xff0c;定义了一套通用的 API&#xff0c;使得开发者…...

第J7周:ResNeXt解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: Tensorflow &#xff08;二&#xff09;具体…...

机器学习-无量纲化与特征降维(一)

一.无量纲化-预处理 无量纲&#xff0c;即没有单位的数据 无量纲化包括"归一化"和"标准化"&#xff0c;这样做有什么用呢&#xff1f;假设用欧式距离计算一个公司员工之间的差距&#xff0c;有身高&#xff08;m&#xff09;、体重&#xff08;kg&#x…...

Shiro(八):JWT介绍

1、什么是JWT&#xff1f; JWT&#xff08;JSON Web Token&#xff0c;JSON Web令牌&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在网络应 用环境间安全地传递声明&#xff08;claims&#xff09;作为JSON对象&#xff1b;JWT会按指定的加密算…...

linux0.11内核源码修仙传第十六章——获取硬盘信息

&#x1f680; 前言 书接第十四章&#xff1a;linux0.11内核源码修仙传第十四章——进程调度之fork函数&#xff0c;在这一节博客中已经通过fork进程创建了一个新的进程1&#xff0c;并且可以被调度&#xff0c;接下来接着主线继续走下去。希望各位给个三连&#xff0c;拜托啦&…...

画家沈燕的山水实验:在传统皴法里植入时代密码

导语&#xff1a;当宋代山水遇上AI算法&#xff0c;当青绿颜料邂逅生态数据&#xff0c;沈燕在宣纸与人工智能的交界处&#xff0c;开启了一场关于水墨基因的“基因突变”实验。她的画笔既似考古学家的洛阳铲&#xff0c;又似未来学家的扫描仪&#xff0c;在古今对话中重构山水…...

聊聊四种实时通信技术:短轮询、长轮询、WebSocket 和 SSE

这篇文章&#xff0c;我们聊聊 四种实时通信技术&#xff1a;短轮询、长轮询、WebSocket 和 SSE 。 1 短轮询 浏览器 定时&#xff08;如每秒&#xff09;向服务器发送 HTTP 请求&#xff0c;服务器立即返回当前数据&#xff08;无论是否有更新&#xff09;。 优点&#xff1…...

国联股份卫多多与北京经纬智诚签署战略合作协议

5月9日&#xff0c;北京经纬智诚电子商务有限公司&#xff08;以下简称“经纬智诚”&#xff09;总经理王学文一行到访国联股份卫多多&#xff0c;同卫多多/纸多多副总裁、产发部总经理段任飞&#xff0c;卫多多机器人产业链总经理郭碧波展开深入交流&#xff0c;双方就未来合作…...

在 Envoy 的配置文件中出现的 “@type“ 字段

在 Envoy 的配置文件中出现的 "type" 字段是 Protocol Buffers&#xff08;Protobuf&#xff09;的 JSON/YAML 编码规范的一部分&#xff0c;属于 Typed Struct 的表示方式。它的作用是明确指定当前配置对象的 Protobuf 类型&#xff0c;以便 Envoy 正确解析配置。以…...

编译原理实验 之 语法分析程序自动生成工具Yacc实验

文章目录 实验环境准备复现实验例子分析总的文件架构实验任务 什么是Yacc Yacc(Yet Another Compiler Compiler)是一个语法分析程序自动生成工具&#xff0c;Yacc实验通常是在编译原理相关课程中进行的实践项目&#xff0c;旨在让学生深入理解编译器的语法分析阶段以及掌握Yac…...

【大模型】LLM概念相关问题(上)

1.主流的大语言模型 截至2025年&#xff0c;主流的大型语言模型&#xff08;LLM&#xff09;体系涵盖了多个国家和机构的成果&#xff0c;具有多样的架构设计、参数规模和应用场景。以下是一些具有代表性的开源和闭源 LLM 体系&#xff1a; &#x1f1fa;&#x1f1f8; OpenA…...

AWS IoT Core与MSK集成实战:打造高可靠实时IoT数据管道

在物联网快速发展的今天,如何高效、安全地处理海量设备数据成为企业面临的一大挑战。本文将带您深入探索AWS IoT Core与Amazon MSK(Managed Streaming for Apache Kafka)的集成方案,手把手教您搭建一个可靠、可扩展的实时IoT数据处理管道。无论您是IoT开发者、大数据工程师还是…...

智慧交通-车门开关状态检测数据集VOC+YOLO格式1006张2类

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1006 标注数量(xml文件个数)&#xff1a;1006 标注数量(txt文件个数)&#xff1a;1006 …...

【传感器】代码——DHT11温湿度传感器

目录 一、代码流程 二、模块.c代码 三、模块.h代码 四、主函数代码 一、代码流程 1.模块复位&#xff1a;主机发送开始通信时序&#xff0c;从机做出响应&#xff08;需检测是否有响应&#xff09; 2.MCU读取1Bit数据 3.MCU读取1Byte数据 4.MCU读取8Byte数据组成完整Dat…...

MySQL 的事务(Transaction)

1. 什么是事务&#xff1f;​​ 事务是​​一组原子性的数据库操作序列​​&#xff0c;这些操作要么​​全部执行成功​​&#xff0c;要么​​全部失败回滚​​。事务的目的是确保数据库从一个一致状态转换到另一个一致状态&#xff0c;即使在执行过程中发生错误或中断。 ​…...

vue知识点总结 依赖注入 动态组件 异步加载

一 依赖注入 使用场景&#xff1a;当需要多层组件需要传值 如 祖宗-》父亲-》儿子-》孙子如祖宗的数据需要直接传给孙子 在祖宗组件中写&#xff1a; data(){return {}} provide(){ return {shujukey:数据值 } }在孙子组件中接收,模板代码中直接使用{{shujukey}}获取数据 dat…...

【软件设计师:存储】16.计算机存储系统

一、主存储器 存储器是计算机系统中的记忆设备,用来存放程序和数据。 计算机中全部信息,包括输入的原始数据、计算机程序、中间运 行结果和最终运行结果都保存在存储器中。 存储器分为: 寄存器Cache(高速缓冲存储器)主存储器辅存储器一、存储器的存取方式 二、存储器的性…...

快速开发-基于gin的中间件web项目开发

一、概述 在 Gin 框架中&#xff0c;中间件&#xff08;Middleware&#xff09;是一种在处理 HTTP 请求之前或之后执行的函数。使用中间件可以方便地实现诸如身份验证&#xff08;Auth&#xff09;、日志记录、请求限流等功能。 二、编写中间件 // 中间件 func StartCost1(c …...