C++初阶——类和对象(下)
目录
1、再探构造函数——初始化列表
2、类型转换
3、static成员
4、友元
5、内部类
6、匿名对象
7、对象拷贝时编译器的优化(了解)
1、再探构造函数——初始化列表
1. 构造函数初始化除了使用函数体内赋值,还有一种方式——初始化列表,
初始化列表的使用方式是以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个(初始值或表达式)。
2. 每个成员变量在都要走初始化列表,并且在初始化列表中只能出现一次。
3. C++11支持在成员变量声明的位置给缺省值,这个缺省值主要是给没有显示在初始化列表初始化的成员使用的。
4. C++规定,const成员变量,没有默认构造的类类型成员变量,必须在初始化列表中 显示初始化或者用缺省值初始化,引用成员变量,必须在初始化列表中 显示初始化,否则会编译报错,
由于这三个是定义的时就要求初始化,
所以语法上初始化列表可以认为是每个成员变量定义初始化的地方。
注意:实际上对象在定义时,成员变量空间就已经开好了,构造函数只是初始化,不是开空间。
5. 推荐使用初始化列表初始化,因为那些你不在初始化列表初始化的成员变量也会先走初始化列表,
6. 初始化列表中按成员变量在类中声明顺序进行初始化,跟成员在初始化列表出现的的先后顺序无关。建议声明顺序和初始化列表顺序保持一致。
7. 无论是否显示写初始化列表,每个构造函数都有初始化列表;
无论是否在初始化列表显示初始化,每个成员变量都要走初始化列表初始化;
#include<iostream>
using namespace std;class Time
{
public:Time(int hour):_hour(hour){cout << "Time()" << endl;}
private:int _hour;
};class Date
{
public:Date(int& x, int year = 1, int month = 1, int day = 1):_year(year), _month(month), _day(day)//, _t(12)//, _ref(x)//, _n(1){// error C2512: “Time”: 没有合适的默认构造函数可用// error C2530 : “Date::_ref” : 必须初始化引用// error C2789 : “Date::_n” : 必须初始化常量限定类型的对象}void Print() const{cout << _year << "-" << _month << "-" << _day << endl;}
private:int _year;int _month;int _day;Time _t; // 没有默认构造的类类型成员变量int& _ref; // 引用成员变量const int _n; // const成员变量
};int main()
{int i = 0;Date d1(i);d1.Print();return 0;
}
#include<iostream>
using namespace std;class Time
{
public:Time(int hour):_hour(hour){cout << "Time()" << endl;}
private:int _hour;
};class Date
{
public:Date():_month(2){cout << "Date()" << endl;}void Print() const{cout << _year << "-" << _month << "-" << _day << endl;}
private:// 注意这里不是初始化,这里给的是缺省值,这个缺省值是给初始化列表用的// 如果初始化列表没有显示初始化,默认就会用这个缺省值初始化int _year = 1;int _month = 1;int _day;Time _t = 1;const int _n = 1;int* _ptr = (int*)malloc(12);
};
int main()
{Date d1;d1.Print();return 0;
}
#include<iostream>
using namespace std;
class A
{
public:A(int a):_a1(a),_a2(_a1){}void Print() {cout << _a1 << " " << _a2 << endl;}
private:int _a2 = 2;int _a1 = 2;
};int main()
{A aa(1);aa.Print();
}
答案:D,1 随机值, 初始化列表按成员变量声明顺序初始化
2、类型转换
1. C++支持内置类型 隐式类型转换为 类类型对象,需要有相关内置类型为参数的构造函数。
2. 构造函数前面加explicit就不再支持隐式类型转换。
3. 类类型的对象之间也可以隐式转换,需要有相应的构造函数。
#include<iostream>
using namespace std;class A
{
public:// explicit构造函数,就不再支持隐式类型转换// explicit A(int a1)A(int a1):_a1(a1){ }//explicit A(int a1, int a2)A(int a1, int a2):_a1(a1), _a2(a2){ }void Print(){cout << _a1 << " " << _a2 << endl;}int Get() const{return _a1 + _a2;}
private:int _a1 = 1;int _a2 = 2;
};class B
{
public:B(const A& a):_b(a.Get()){ }
private:int _b = 0;
};
int main()
{// 1构造一个A的临时对象,再用这个临时对象拷贝构造aa1// 编译器遇到连续构造+拷贝构造->优化为直接构造A aa1 = 1;aa1.Print();// aa2是临时对象的别名,此时临时对象的生命周期也随之改变const A& aa2 = 1;// C++11之后才支持多参数转化A aa3 = { 2,2 };// aa3隐式类型转换为b对象// 原理跟上面类似B b = aa3;const B& rb = aa3;return 0;
}
3、static成员
1. 用static修饰的成员变量,称之为静态成员变量,静态成员变量一定要在类外进行初始化。
2. 静态成员变量为属于类而不是属于类的对象的共享数据,不存在对象中,存放在静态区。
3. 用static修饰的成员函数,称之为静态成员函数,属于类,而不是对象
4. 静态成员函数中可以访问其他的静态成员,但是不能访问非静态的,因为没有this指针。
5.非静态的成员函数,可以访问任意的静态成员变量和静态成员函数。
6. 在类外,可以通过类名::静态成员或者对象.静态成员来访问静态成员变量和静态成员函数。
7. 静态成员也是类的成员,受public、protected、private访问限定符的限制。
8. 静态成员变量不能在声明位置给缺省值初始化,因为静态成员变量不属于某个对象,不走构造函数初始化列表。
// 实现⼀个类,计算程序中创建出了多少个类对象?
#include<iostream>
using namespace std;
class A
{
public:A(){++_scount;}A(const A& t){++_scount;}~A(){--_scount;}static int GetACount(){return _scount;}
private:// 类里面声明static int _scount;
};
// 类外面初始化
int A::_scount = 0;int main()
{cout << A::GetACount() << endl; // 0A a1, a2;A a3(a1);cout << A::GetACount() << endl; // 3cout << a1.GetACount() << endl; // 3// 编译报错:error C2248 : “A::_scount” :无法访问private成员(在“A”类中声明)//cout << A::_scount << endl;return 0;
}
求1+2+3+...+n_牛客题霸_牛客网
class Sum
{
public:Sum(){_sum += _i;++_i;}static int GetSum(){return _sum;}
private:static int _i;static int _sum;
};int Sum::_i = 1;
int Sum::_sum = 0;class Solution {public:int Sum_Solution(int n) {Sum a[n];return Sum::GetSum();}
};
4、友元
1. 友元提供了一种突破类访问限定符封装的方式,
友元分为:友元函数和友元类,
在函数声明或者类声明的前面加friend,并将其放到一个类中。
2. 外部友元函数可访问类的私有和保护成员,友元函数仅仅是一种声明,不是类的成员函数。
3. 友元函数可以在类定义的任何地方声明,不受类访问限定符限制。
4. 一个函数可以是多个类的友元函数。
5. 友元类中的成员函数都可以是另一个类的友元函数,都可以访问另一个类中的私有和保护成员。
6. 友元类的关系是单向的,不具有交换性,比如A类是B类的友元,但是B类不是A类的友元。
7. 友元类关系不能传递,如果A是B的友元,B是C的友元,但是A不是C的友元。
8. 有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用。
#include<iostream>
using namespace std;// 前置声明,否则A的友元函数声明编译器不认识B
class B;class A
{// 友元声明friend void func(const A& aa, const B& bb);
private:int _a1 = 1;
};class B
{// 友元声明friend void func(const A& aa, const B& bb);
private:int _b1 = 3;
};void func(const A& aa, const B& bb)
{cout << aa._a1 << endl; // 1cout << bb._b1 << endl; // 3
}int main()
{A aa;B bb;func(aa, bb);return 0;
}
#include<iostream>
using namespace std;class A
{// 友元声明friend class B;
private:void F() const{cout << "F" << endl;}int _a1 = 1;
};class B
{
public:void func1(const A& aa){cout << aa._a1 << endl; // 1aa.F(); // Fcout << _b1 << endl; // 3}
private:int _b1 = 3;
};int main()
{A aa;B bb;bb.func1(aa);return 0;
}
5、内部类
1. 如果一个类定义在另一个类的内部,这个内部的类就叫做内部类。
内部类是一个独立的类,跟定义在全局相比,他只是受外部类类域限制和访问限定符限制,所以外部类定义的对象中不包含内部类。
2. 内部类默认是外部类的友元类,可以访问私有和保护成员,外部类无法访问内部类的私有成员
3. 内部类本质也是一种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使用,那么可以考虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其 他地方都用不了。
#include<iostream>
using namespace std;class A
{
public:class B // B默认就是A的友元{public:void foo(const A& a){cout << _k << endl; // 1 OKcout << a._h << endl; // 1 OK}};
private:static int _k;int _h = 1;
};int A::_k = 1;int main()
{// sizeof是当创建这个类型的一个对象(或变量)的时候,需要为它分配的空间的大小// sizeof会忽略static成员变量的大小cout << sizeof(A) << endl; // 4,A::B b;A aa;b.foo(aa);return 0;
}
求1+2+3+...+n_牛客题霸_牛客网
class Solution {
// 私有的内部类,专属
private:class Sum {public:Sum() {_sum += _i;++_i;}};
public:int Sum_Solution(int n) {Sum a[n];return _sum;}
private:static int _i;static int _sum;
};int Solution::_i = 1;
int Solution::_sum = 0;
6、匿名对象
1. 用类型(实参)定义出来的对象叫做匿名对象,相比之前我们定义的类型对象名(实参)定义出来的 叫有名对象。
2. 匿名对象生命周期只在当前一行,一般临时定义一个对象当前用一下的话,就可以定义匿名对象。
#include<iostream>
using namespace std;class A
{
public:A(int a = 0):_a(a){cout << "A(int a)" << endl;}~A(){cout << "~A()" << endl;}
private:int _a;
};class Solution {
public:int Sum_Solution(int n) {//...return n;}
};int main()
{A aa1;// 不能这么定义对象,因为编译器无法识别是⼀个函数声明,还是对象定义//A aa1();// 但是我们可以这么定义匿名对象,匿名对象的特点不用取名字,// 但是他的生命周期只有这一行,我们可以看到下一行他就会自动调用析构函数A();A(1);A aa2(2);// 匿名对象在这样场景下就很好用,当然还有一些其他使用场景,这个我们以后遇到了再说// 匿名对象Solution()Solution().Sum_Solution(10);return 0;
}
7、对象拷贝时编译器的优化(了解)
1. 现代编译器会为了尽可能提高程序的效率,在不影响正确性的情况下会尽可能减少一些传参和传返回值的过程中可以省略的拷贝。
2. 如何优化C++标准并没有严格规定,各个编译器会根据情况自行处理。当前主流的相对新一点的编译器对于连续一个表达式步骤中的连续拷贝会进行合并优化,有些更新更"激进"的编译器还会进行跨行跨表达式的合并优化。
相关文章:
C++初阶——类和对象(下)
目录 1、再探构造函数——初始化列表 2、类型转换 3、static成员 4、友元 5、内部类 6、匿名对象 7、对象拷贝时编译器的优化(了解) 1、再探构造函数——初始化列表 1. 构造函数初始化除了使用函数体内赋值,还有一种方式——初始化列表, 初始化列…...
Android Framework SurfaceFlinger面试题及参考答案
目录 请简述 SurfaceFlinger 在 Android 系统中的作用。 SurfaceFlinger 是如何与 CPU、GPU 以及显示器协同工作的? 解释一下 Android 系统中的三块 Graphic Buffer 及其用途。 VSYNC 信号在 Android 渲染机制中扮演什么角色? 请描述 SurfaceFlinger 如何分发 VSYNC 信号…...
STM32 外设简介
STM32 外设简介 STM32 是由意法半导体 (STMicroelectronics) 开发的一系列基于 ARM Cortex 内核的微控制器,广泛应用于嵌入式系统中。STM32 系列的一个重要特点是其丰富而强大的外设模块,支持多种接口和功能,能满足工业控制、物联网、消费电…...
java操作doc——java利用Aspose.Words操作Word文档并动态设置单元格合并
在实际工作中,如果业务线是管理类项目或者存在大量报表需要导出的业务时,可以借助第三方插件实现其对应功能。 尤其是需要对word文档的动态操作或者模板数据的定向合并,使用Aspose会相对来说容易一些,而且相关文档比较完整&#…...
人工智能—机器学习-图像处理
1. 人工智能(AI) 定义:人工智能是计算机科学的一个分支,旨在开发能够模拟人类智能的系统,包括学习、推理、问题解决、感知和语言理解等能力。子领域: 机器学习(ML):使计…...
数据结构——树
参考:数据结构(C版)第2版 [王红梅] 文章目录 树和二叉树基本术语二叉树概念二叉树的性质二叉树的存储顺序存储二叉链表 二叉树的遍历广度遍历深度遍历 树和二叉树 基本术语 结点的度、树的度:某结点拥有子树的个数为该结点的度&…...
快速理解微服务中Fegin的概念
一.由来 1.在传统的架构里面,我们是通过使用RestTemplate来访问其他的服务,但是这种方式就存在了一个很大的缺陷,也就是被调用方如果发生了服务的迁移(IP和端口发生了变化),那么调用方也需要同步的在代码里面进行修改,…...
testImplementation和androidTestImplementation区别
testImplementation和androidTestImplementation区别 testImplementation 和 androidTestImplementation 是 Gradle 中用于添加测试依赖的配置,主要区别在于测试的类型和运行的环境: 1. testImplementation 用于:单元测试运行环境…...
Vue前端开发2.3.2-4 绑定指令
本文介绍了Vue中的绑定指令,包括属性绑定指令v-bind、事件绑定指令v-on以及双向数据绑定指令v-model。通过创建单文件组件,演示了如何使用这些指令来控制DOM属性、监听事件和实现表单输入与数据的双向同步。同时,探讨了v-model的修饰符如.num…...
使用ElementUI中的el-table制作可编辑的表格
在前端开发时,可能会需要用到可编辑的表格控件。一些原生的UI框架并不支持Table控件的可编辑功能,所以只能自己实现。 以下用Vue3Element-Plus进行示例开发。 一、实现可编辑的单元格 我想要实现的效果是,鼠标移动到el-table的某行时&…...
pytest 通过实例讲清单元测试、集成测试、测试覆盖率
1. 单元测试 概念 定义: 单元测试是对代码中最小功能单元的测试,通常是函数或类的方法。目标: 验证单个功能是否按照预期工作,而不依赖其他模块或外部资源。特点: 快速、独立,通常是开发者最先编写的测试。 示例:pytest 实现单…...
概率论中交并集的公式
文章目录 对于相容事件且独立事件1. 同时出现的概率,即 P ( A ∩ B ) P(A\cap B) P(A∩B):2. 出现任意一个的概率,即 P ( A ∪ B ) P(A\cup B) P(A∪B): 对于相容事件且依赖事件1. 同时出现的概率,即 P ( A ∩ B ) P(A\cap B) P(A∩B):特殊的,对于独立事件 2. 出现任意一个的概…...
在Ubuntu2004中搭建基于ESP-IDF v5.1的ESP32-S3开发环境
在Ubuntu2004中搭建基于ESP-IDF v5.1的ESP32-S3开发环境 目录 1 基本资料 2 注意事项 2.1 子模块检出失败处理 2.2 选择 Espressif 下载服务器 2.3 自定义工具安装路径 2.4 导出环境变量 2.5 测试基础环境 3 创建自己的工程 3.1 创建基础应用工程 3.2 创建组件(…...
Vue 项目中 Axios 的封装方向探索
什么是 Axios? Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js 环境中发送 HTTP 请求。它的主要作用是帮助前端与后端进行数据交换,通常用于向后端接口发送 GET、POST、PUT、DELETE 等请求并处理返回的响应。 Axios 的特点: 基于 Promise,支持异步编程。…...
LLM应用-prompt提示:RAG query重写、相似query生成 加强检索准确率
参考: https://zhuanlan.zhihu.com/p/719510286 1、query重写 你是一名AI助手,负责在RAG(知识库)系统中通过重构用户查询来提高检索效果。根据原始查询,将其重写得更具体、详细,以便更有可能检索到相关信…...
详解Qt QBuffer
文章目录 **QBuffer 的详解****前言****QBuffer 是什么?****QBuffer 的主要用途****构造函数****主要成员函数详解****1. open()****原型:****作用:****参数:****返回值:****示例代码:** **2. write()****原…...
【编程语言】Kotlin快速入门 - 泛型
Kotlin的泛型与Java十分类似,也是使用这种的语法结构: class Fruit<T> {fun eat(f : T): Unit {println("eat...")}fun <T> buy(p : T): T {return p} }泛型限制 和Java一样,Kotlin也允许泛型是某个类的子类 fun &l…...
Oracle 执行计划查看方法汇总及优劣对比
在 Oracle 数据库中,查看执行计划是优化 SQL 语句性能的重要工具。以下是几种常用的查看执行计划的方法及其优劣比较: 1. 使用 EXPLAIN PLAN FOR 和 DBMS_XPLAN.DISPLAY 方法 执行 EXPLAIN PLAN FOR 语句: EXPLAIN PLAN FOR SELECT * FROM …...
typescript进阶
typescript进阶 #函数重载 #参数类型和反应值不同的函数 #接口继承 #类的修饰符 #存取器 #类实现接口 #抽象类 #泛型类 #函数重载 #参数类型和反应值不同的函数 function hello (name: string) : string function hello (age: number) : string function hello (value: strin…...
【真实场景面试问题-2】
1 介绍一下低功耗设计手段–clock gating 和 clock domain; 芯片的低功耗设计尤其是在关注能耗的场景:移动设备、物联网和嵌入式系统;时钟门控(Clock Gating)和时钟域(Clock Domain)是两种常用…...
CKA认证 | Day4 K8s管理应用生命周期(下)
第四章 K8s管理应用程序生命周期(下) 1、Pod对象 1.1 Pod 的基本概念 Pod 是 Kubernetes 中最基本和最重要的概念之一,是一个逻辑抽象概念,Kubernetes创建和管理的最小单元, 一个Pod由一个容器或多个容器组成。它简…...
极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【六】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
《生成式 AI》课程 第3講 CODE TASK执行文章摘要的机器人
课程 《生成式 AI》课程 第3講:訓練不了人工智慧嗎?你可以訓練你自己-CSDN博客 任务1:总结 1.我们希望你创建一个可以执行文章摘要的机器人。 2.设计一个提示符,使语言模型能够对文章进行总结。 model: gpt-4o-mini,#gpt-3.5-turbo, import…...
Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导 一、前言 在充满活力与激情的校园生活中,校运会不仅是…...
一种简单高效的RTSP流在线检测方法,不需要再过渡拉流就可以获取设备状态以及对应音视频通道与编码格式
平台如何检测一路RTSP流是否在线? 在之前的流媒体平台方案中,我们都是通过定时RTSP拉流的方式,走一个完整的RTSP流程:包括OPTIONS、DESCRIBE、SETUP、PLAY、RTP收流,这种方式去取流,然后取到流之后进行流解…...
HTML飞舞的爱心
目录 系列文章 写在前面 完整代码 代码分析 写在后面 系列文章 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心(简易版)7HTML粒子爱心8HTML蓝色…...
银行卡 OCR 识别 API 接口的发展前景
随着智能手机的广泛普及以及互联网的迅猛发展,“互联网 ” 时代的移动支付已然开启了智慧生活的崭新蓝图。移动支付要求进行实名认证并绑定银行卡,然而传统的手工输入银行卡号不但速度缓慢、容易出错,还极大地降低了用户体验。银行卡 OCR 识别…...
python tkinter 控件实现鼠标悬停提示,提示文本动态展示
展示效果 全部代码和使用示例 # _*_ coding:utf-8 _*_ import tkinter as tk import pyautoguiscreen_width, screen_height pyautogui.size()class WidgetTip:"""鼠标悬停提示"""def __init__(self, widget, text):self.widget widgetself.…...
【spark-spring boot】学习笔记
目录 说明RDD学习RDD介绍RDD案例基于集合创建RDDRDD存入外部文件中 转换算子 操作map 操作说明案例 flatMap操作说明案例 filter 操作说明案例 groupBy 操作说明案例 distinct 操作说明案例 sortBy 操作说明案例 mapToPair 操作说明案例 mapValues操作说明案例 groupByKey操作说…...
Delphi ADO组件中的 ADOTable、ADOQurey 无SQL语句实现增、删、改、查
准备: 数据库是Acess数据库 1.放一个 Adoconnection1到 表单上,设置好数据连接字符串 并 设置 connected 属性 为 true 2 设置 adoquery1的connection 属性为 adoconnection1 3 设置 adoquery1的 sql 属性为 select * from 表名 4 设置 adoquery1的 active true …...
力扣整理版九:贪心算法
局部最优 全局最优 局部最优可以推出全局最优 并且想不出反例 ----------------------------- (1) 455 分发饼干 (2) 1005 k次取反后最大化的数组和 (3) 860 柠檬水找零 (4) 376 摆动序列 (5) 738 单调递增的数字 (6) 122 买卖股票的最佳时机2 (7) 135 分发糖果 (8…...
ffmpeg 视频滤镜:高斯模糊-gblur
滤镜描述 gblur 官网地址 > FFmpeg Filters Documentation 这个滤镜会将视频变得模糊。 滤镜使用 参数 gblur AVOptions:sigma <float> ..FV.....T. set sigma (from 0 to 1024) (default 0.5)steps <int> ..FV.....T…...
利用D3.js实现数据可视化的简单示例
目录 一、D3.js选择器 二、数据绑定相关方法 三、DOM操作方法 四、事件监听 五、实现折线图案例 1.首先引入 D3.js 库。 2.然后获取数据(这里定义了销售数据数组作为数据)。 3.接着创建一个 svg 元素作为画布 4.定义 x 轴和 y 轴的比例尺&#…...
Top 10 Tools to Level Up Your Prompt Engineering Skills
此文章文字是转载翻译,图片是自已用AI 重新生成的。文字内容来自 https://www.aifire.co/p/top-10-ai-prompt-engineering-tools 供记录学习使用。 Introduction to AI Prompt Engineering AI Prompt Engineering 简介 1,Prompt Engineering 提示工程…...
sed awk 第二版学习(十一)—— 交互式拼写检查器 spellcheck.awk
目录 1. 脚本代码 2. 执行情况 3. 代码详解 (1)BEGIN 过程 (2)主过程 (3)END 过程 (4)支持函数 4. 附加说明 这是一个基于 UNIX spell 程序的名为 spellcheck 的 awk 脚本&a…...
Android 应用测试的各种环境问题记录(Instrumentation测试)
报错记录 failed to configure packages targetSdkVersion(未解决) failed to configure com.demo.test.SettingsActivityTest.testOnCreate_withNullSavedInstanceState: Package targetSdkVersion34 > maxSdkVersion32 java.lang.IllegalArgumentE…...
python爬虫案例——猫眼电影数据抓取之字体解密,多套字体文件解密方法(20)
文章目录 1、任务目标2、网站分析3、代码编写1、任务目标 目标网站:猫眼电影(https://www.maoyan.com/films?showType=2) 要求:抓取该网站下,所有即将上映电影的预约人数,保证能够获取到实时更新的内容;如下: 2、网站分析 进入目标网站,打开开发者模式,经过分析,我…...
问题记录-Java后端
问题记录 目录 问题记录1.多数据源使用事务注意事项?2.mybatis执行MySQL的存储过程?3.springBoot加载不到nacos配置中心的配置问题4.服务器产生大量close_wait情况 1.多数据源使用事务注意事项? 问题:在springBoot项目中多表处理数…...
YB2503HV:高效率降压IC,助力电动车、太阳能设备等领域的能源转换
今天我要向大家介绍一款引人注目的产品—— YB2503HV 100V 3A SOP8内置MOS 高效率降压IC。这款单片集成芯片具备可设定输出电流的开关型降压恒压驱动器功能,可广泛应用于电动车、太阳能设备、电子电池充电等领域。让我们一起来看看它的特点和应用吧! 首先…...
Day47 | 动态规划 :线性DP 最长公共子序列最长公共子数组
Day47 | 动态规划 :线性DP 最长公共子序列&&最长公共子数组 动态规划应该如何学习?-CSDN博客 本次题解参考自灵神的做法,大家也多多支持灵神的题解 最长公共子序列 编辑距离_哔哩哔哩_bilibili 动态规划学习: 1.思考…...
【山大909算法题】2014-T1
文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 为带表头的单链表类Chain编写一个成员函数Reverse,该函数对链表进行逆序操作(将链表中的结点按与原序相反的顺序连接),要求逆序操作就地进行,不分配…...
《生成式 AI》课程 作业6 大语言模型(LLM)的训练微调 Fine Tuning -- part2
资料来自李宏毅老师《生成式 AI》课程,如有侵权请通知下线 Introduction to Generative AI 2024 Spring 来源背景说明 该文档主要介绍了国立台湾大学(NTU)2024 年春季 “生成式人工智能(GenAI)” 课程的作业 5&#…...
【机器学习】如何使用Python的Scikit-learn库实现机器学习模型,并对数据进行预处理和特征缩放以提高模型性能?
使用Python的Scikit-learn库可以方便地实现机器学习模型,并对数据进行预处理和特征缩放以提高模型性能。以下是一个典型的工作流程,包括数据加载、预处理、特征缩放、模型训练和评估: 1. 安装Scikit-learn 确保已安装Scikit-learn库&#x…...
【SpringCloud详细教程】-04-服务容错--Sentinel
精品专题: 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…...
计算机学习
不要只盯着计算机语言学习,你现在已经学习了C语言和Java,暑假又规划学习Python,最后你掌握的就是计算机语言包而已。 2. 建议你找一门想要深挖的语言,沿着这个方向继续往后学习知识就行。计算机语言是学不完的,而未来就…...
CSS - CSS One-Line
1. aspect-ratio 描述: 用于定义元素的宽高比,简化了以往使用“填充黑客”的方法。只需指定一个比率,浏览器会自动调整元素的尺寸 案例: .aspect-ratio-hd {aspect-ratio: 16/9; } .aspect-ratio-square {aspect-ratio: 1; /* 正方形 */ }2. object-…...
【AIGC】如何准确引导ChatGPT,实现精细化GPTs指令生成
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | 提示词Prompt应用实例 文章目录 💯前言💯准确引导ChatGPT创建爆款小红书文案GPTs指令案例💯 高效开发GPTs应用的核心原则明确应用场景和目标受众构建多样化风格模板提问与引…...
Redis主从架构
Redis(Remote Dictionary Server)是一个开源的、高性能的键值对存储系统,广泛应用于缓存、消息队列、实时分析等场景。为了提高系统的可用性、可靠性和读写性能,Redis提供了主从复制(Master-Slave Replication…...
无人机探测:光电侦测核心技术算法详解!
核心技术 双光谱探测跟踪: 可见光成像技术:利用无人机表面反射的自然光或主动光源照射下的反射光,通过高灵敏度相机捕捉图像。该技术适用于日间晴朗天气下的无人机探测,具有直观、易于识别目标的特点。 红外成像技术࿱…...
34 基于单片机的指纹打卡系统
目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52RC,采用两个按键替代指纹,一个按键按下,LCD12864显示比对成功,则 采用ULN2003驱动步进电机转动,表示开门,另一个…...