C++: 类和对象(中)
📔个人主页📚:秋邱-CSDN博客
☀️专属专栏✨:C++
🏅往期回顾🏆:C++: 类和对象(上)
🌟其他专栏🌟:C语言_秋邱
类的默认成员函数
构造函数
定义
#include<iostream>
using namespace std;
class Date
{
public:void Init(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout << _year << "/" << _month << "/" << _day << endl;}
private:int _year;int _month;int _day;
};
int main()
{Date d1;d1.Init(2024, 7, 20);d1.Print();return 0;
}
Date类型实例化时,每次都要调用Init进行初始化,这未免有点麻烦,C++则有构造函数,构造函数完美的替代了Init。
构造函数是一个特殊的成员函数,名字与类名相同, 创建类类型对象时由编译器自动调用,以保证每个数据成员都有 一个合适的初始值,并且在对象整个生命周期内只调用一次。
特征
- 1. 函数名与类名相同。
- 2. ⽆返回值。(返回值啥都不需要给,也不需要写void,不要纠结,C++规定如此)
- 3. 对象实例化时系统会⾃动调⽤对应的构造函数。
- 4. 构造函数可以重载。
- 5. 如果类中没有显式定义构造函数,则C++编译器会⾃动⽣成⼀个⽆参的默认构造函数,⼀旦用户显示式定义编译器将不再⽣成。
分类
无参构造函数
注意
#include<iostream>
using namespace std;
class Date
{
public:// 1.⽆参构造函数Date(){_year = 1;_month = 1;_day = 1;}void Print(){cout << _year << "/" << _month << "/" << _day << endl;}
private:int _year;int _month;int _day;
};
int main()
{Date d1;//正确的Date d2();//错误的d1.Print();return 0;
}
要调用无参构造函数的时候,那么写 Date d2()编译器会有警告,不知道这是函数还是构造,使用这个写法是错误的。
带参构造函数
#include<iostream>
using namespace std;
class Date
{
public:// 2.带参构造函数Date(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout << _year << "/" << _month << "/" << _day << endl;}
private:int _year;int _month;int _day;
};
int main()
{Date d1(2024,7,20);d1.Print();return 0;
}
全缺省构造函数
#include<iostream>
using namespace std;
class Date
{
public:// 3.全缺省构造函数Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}void Print(){cout << _year << "/" << _month << "/" << _day << endl;}
private:int _year;int _month;int _day;
};
int main()
{Date d1;d1.Print();return 0;
}
注意:无参构造函数、全缺省构造函数、我们不写构造时编译器默认⽣成的构造函数,都叫做默认构造函数。 但是这三个函数有且只有⼀个存在,不能同时存在。
无参构造函数和全参构造函数虽然构成重载函数,但是调用时会发生歧义
不写时,编译器默认生成0的
对内置类型成员变量,是否初始化是不确定的,取决于编译器
对自定义类型成员变量,要求调用这个成员变量的默默人构造函数初始化。没有默认构造函就会报错,要初始化这个成员变量,需要用到初始化列表
初始化列表
除了以上的构造函数,在初始化成员变量主要使⽤函数体内赋值,构造函数还有另一种方式,就是初始化列表。结构如下
ClassName::ClassName(Type1 arg1, Type2 arg2) :member1(arg1), member2(arg2)
{// 构造函数体
}
- 每个成员变量在初始化列表中只能出现⼀次,语法理解上初始化列表可以认为是每个成员变量定义 初始化的地⽅。
- 引⽤成员变量,const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进⾏初始 化,否则会编译报错。
- C++11⽀持在成员变量声明的位置给缺省值,这个缺省值主要是给没有显⽰在初始化列表初始化的 成员使⽤的。
- 优先使用初始化列表:尽量通过初始化列表显式初始化成员变量,这样可以避免未初始化的风险并提高代码的明确性。
- 内置类型的初始化问题:内置类型成员变量如果没有初始化,将导致不确定行为。因此,尽量避免依赖编译器的默认行为,明确初始化。
- 自定义类型成员的初始化要求:如果成员是自定义类型并且没有默认构造函数,在没有在初始化列表中进行初始化时,会导致编译错误。
- 初始化列表中是按照成员变量在类中的声明顺序进行初始化的,跟成员变量在初始化列表的顺序无关。
举例:
class Date
{Date(int year = 1,int month = 1,int day = 1):_year(year),_month(month),_day(day){}
private:int _year;int _month;int _day;
};
析构函数
定义
构造函数和析构函数有具有相反的作用。
析构函数:析构函数是一个特殊的函数,当对象被销毁时自动调用。它的名称与类名相同,但前面有一个波浪号(~),析构函数用于清理对象占用的资源。
class Date
{
public:Date(int year,int month, int day){cout << " Date(int year, int month, int day) " << endl;_year = year;_month = month;_day = day;}~Date(){cout << " ~Date()" << endl;}
private:int _year;int _month;int _day;;
};
int main()
{Date d1(2024,7,7);return 0;
}
特征
- 1. 析构函数名是在类名前加上字符~。
- 2. ⽆参数⽆返回值。(这⾥跟构造类似,也不需要加void)
- 3. ⼀个类只能有⼀个析构函数。若未显式
定义,系统会⾃动⽣成默认的析构函数。#include<iostream> using namespace std; class Date { public:Date(int year =1, int month=1, int day=1) //构造函数{_year = year;_month = month;_day = day;}Date(const Date& d) //拷贝构造函数{_year = d._year;_month = d._month;_day = d._day;} private:int _year;int _month;int _day; };
- 4. 对象⽣命周期结束时,系统会⾃动调⽤析构函数。
- 5. 跟构造函数类似,我们不写编译器⾃动⽣成的析构函数对内置类型成员不做处理,⾃定类型成员会 调⽤他的析构函数。
注意:对于⾃定义类型成员也会调⽤他的析构,也就是说⾃定义类型成员⽆论什么情况都会⾃动调⽤析构函数。
如果类中没有申请资源时,析构函数可以不写,直接使⽤编译器⽣成的默认析构函数,如Date;(上面的代码只是作为例子,~Date可以不写,编译器会自动生成)
拷贝构造函数
定义
拷贝构造函数:拷贝构造函数是一个特殊的构造函数,用于创建一个新对象,其内容完全相同于另一个已存在的对象。
特征
- 1、拷贝构造函数是构造函数的一个重载
- 2、拷贝构造函数的第一个参数必须是类类型对象的引用。
- 3、C++规定⾃定义类型对象进⾏拷⻉⾏为必须调⽤拷⻉构造,所以这⾥⾃定义类型传值传参和传值返 回都会调⽤拷⻉构造完成。
#include<iostream> using namespace std; class Date { public:Date(int year =1, int month=1, int day=1) //构造函数{_year = year;_month = month;_day = day;}//Date(const Date d) //error 引发无穷递归Date(const Date& d) //拷贝构造函数{_year = d._year;_month = d._month;_day = d._day;} private:int _year;int _month;int _day; };int main() {Date d1(2024,10,10);Date d2(d1); //拷贝构造return 0; }
-
若未显式定义拷⻉构造,编译器会⽣成⾃动⽣成拷⻉构造函数。⾃动⽣成的拷⻉构造对内置类型成 员变量会完成值拷⻉/浅拷⻉
赋值运算符重载
运算符重载
C++预定义的运算符,入“+""-"等,其操作对象只能是基本数据类型。在表达式中看到 “*” “+”时,C++对给定数据结构进行相乘,相加的运算,然后得出结果,当然,使用函数也是可以,类也能进行这样的操作,但语法就复杂多了。
那么,就可以多已有的运算符赋育新的含义,化繁为简,利用运算符来操作对象。
运算符重载是具有特殊函数名的函数 ,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。
函数名: 返回类型 operator 运算符 (参数类
型1 参数名1, 参数类型2 参数名2)
注意:
- 不能通过连接语法中没有的符号来创建新的操作符:⽐如operator@。
- 重载运算符函数的参数个数和该运算符作⽤的运算对象数量⼀样多。一元运算符有一个参数,二元运算符有两个参数(左侧运算对象传给第一个参数,右侧传给第二个参数)。
- 如果⼀个重载运算符函数是成员函数,默认第一个是运算符传给隐式this指针,因此参数会比运算对象少一个。
- 运算符重载以后,其优先级和结合性与对应的内置类型运算符保持⼀致。
- 重载操作符必须有一个类类型参数
- . * :: sizeof ?:
- 重载++运算符是,前置++和后置++,运算符重载函数名都是operator++,为了区分,,后置++重载时,增加⼀个int形参。
- 重载<<和>>时,需要重载全局函数,因为重载为成员函数,第一位参数默认是this指针,第⼀个形参位置是左侧运算对象,调⽤时就变成了对象<<cout,不符合使⽤习惯和可读性。
#include<iostream>
using namespace std;
class Date
{
public:Date(int year =1, int month=1, int day=1){_year = year;_month = month;_day = day;}bool operator==(Date d) //在类中{return _year == d._year &&_month == d._month &&_day == d._day;}Date& operator++(); //前置++Date operator++(int); //后置++int _year;int _month;int _day;
};
bool operator==(Date& d1, Date& d2) //在全局
{return d1._year == d2._year&& d1._month == d2._month&& d1._day == d2._day;
}
Date Date::operator++(int) //后置++
{Date tmp = *this;*this += 1;return tmp;
}
Date& Date::operator++() //前置++
{*this += 1;return *this;
}
ostream& operator<<(ostream& out, const Date& d)
{out << "年" << d._year << "月" << d._month << "日" << d._day << endl;return out;
}
istream& operator >>(istream& in, Date& d)
{while (1){ cout << "请依次输入年月日";in >> d._year >> d._month >> d._day;if (!d.CheckDate()){cout << "输入日期非法:";d.Print();cout << "请重新输入!!!" << endl;}else{break;}}
return in;
}
int main()
{Date d1(2024, 7, 7);Date d2(2024.7, 8);if (d1.operator==(d2)) //声明在类中operator==(d1, d2); //声明在全局中if(d1 == d2) // 类/全局{ printf("日期相同");}else{printf("日期不同");}return 0;
}
赋值运算符重载
赋值运算符重载是⼀个默认成员函数,⽤于完成两个已经存在的对象直接的拷⻉赋值,这⾥要注意跟 拷⻉构造区分,拷⻉构造⽤于⼀个对象拷⻉初始化给另⼀个要创建的对象。
相关文章:
C++: 类和对象(中)
📔个人主页📚:秋邱-CSDN博客 ☀️专属专栏✨:C 🏅往期回顾🏆:C: 类和对象(上) 🌟其他专栏🌟:C语言_秋邱 类的默认成员函数 构造…...
基于slimBOXtv 9.16 V2-晶晨S905L3A/ S905L3AB-Mod ATV-Android9.0-线刷通刷固件包
基于slimBOXtv 9.16 V2-晶晨S905L3A/ S905L3AB-Mod ATV-Android9.0-线刷通刷固件包,基于SlimBOXtv 9 修改而来,贴近于原生ATV,仅支持晶晨S905L3A/ S905L3AB芯片刷机。 适用型号:M401A、CM311-1a、CM311-1s…...
Rocky8 升级 Python 3.9.20 并部署 Airflow 2.10.5
Rocky8 升级 Python 3.9.20 并部署 Airflow 2.10.5 1.系统环境配置1.1Python安装1.2 Airflow 配置1.2.1 基础配置1.2.2 新建数据库1.2.3 配置文件 airflow.cfg 1.3 安装 Airflow 2.Airflow 测试1.启动定时器2.登录系统3.自定义流3.1测试流 1.系统环境配置 # 系统版本查看 cat …...
基础智能体的进展与挑战第 3 章【记忆】
目录 第三章记忆3.1 人类记忆概述3.1.1 人类记忆的类型3.1.2 人类记忆模型 3.2 从人类记忆到智能体记忆3.3 智能体记忆的表示3.3.1 感知记忆3.3.2 短期记忆3.3.3 长期记忆 3.4 记忆生命周期3.4.1 记忆获取3.4.2 记忆编码3.4.3 记忆衍生3.4.4 记忆检索与匹配3.4.5 神经记忆网络3…...
Docker 容器与镜像核心操作命令大全(实战指南)
Docker 容器与镜像核心操作命令大全(实战指南) 摘要:本文全面整理 Docker 容器与镜像管理的高频操作命令,涵盖容器生命周期管理、镜像构建技巧、网络配置、文件挂载等场景,并附赠企业级高级用法。适用于开发、测试及生…...
见多识广3:帕累托最优解与帕累托前沿
目录 前言定义特点应用场景求解算法总结 前言 这里的知识都是kimi告诉我的,我主要记录一下。 定义 帕累托最优解:在多目标优化问题中,如果一个解在某个目标上优于另一个解,而在其他目标上至少不比另一个解差,那么这…...
遥感技术赋能电力设施监控:应用案例篇
目前主流的电力巡检手段利用无人机能够通过设定灵活航线进行低空飞行、搭载不同的采集设备,能够从不同角度对输电线进行贴近拍摄,但缺陷是偏远山区无人机飞行技术要求高,成本高,且飞行的无人机也可能会对输电线产生破坏。 星图云开…...
Docker容器虚拟化存储架构
本文主要描述Docker容器引擎中运行的应用如何持久化地存储数据。 如上所示,Docker容器引擎的总体应用架构图,包括Docker客户端应用、Docker Host服务端应用以及Docker Registry镜像仓库端应用。其中,Docker Host服务端应用包括Docker daemon容…...
Silverlight发展历程(微软2021年已经停止支持Silverlight 5)
Microsoft Silverlight 发展历程 引言 Microsoft Silverlight 是微软在 Web 多媒体和富互联网应用 (RIA) 领域的一次重要尝试,它从诞生到消亡的过程折射出了 Web 技术发展的变迁和行业格局的演变。本文将详细回顾 Silverlight 的完整发展历程,探讨其技…...
“星睿O6” AI PC开发套件评测 - 部署PVE搭建All in One NAS服务器
Radxa O6平台上部署PVE搭建All in One NAS服务器 Radxa O6是一款性能卓越的单板计算机,其强劲的硬件配置和多样化的接口设计,使其成为家庭和小型企业理想的All in One服务器解决方案。值得一提的是,O6原生配备了两个5G网口,便于直…...
【路由交换方向IE认证】BGP选路原则之AS-Path属性
文章目录 一、路由器BGP路由的处理过程控制平面和转发平面选路工具 二、BGP的选路顺序选路的前提选路顺序 三、AS-Path属性选路原则AS-Path属性特性AS-Path管进还是管出呢?使用AS-Path对进本AS的路由进行选路验证AS-Path不接收带本AS号的路由 四、BGP邻居建立配置 一…...
《软件设计师》复习笔记(14.3)——设计模式
目录 一、设计模式分类 1. 创建型模式(Creational Patterns) 2. 结构型模式(Structural Patterns) 3. 行为型模式(Behavioral Patterns) 真题示例: 一、设计模式分类 架构模式 高层设计决…...
Windows10,11账户管理,修改密码,创建帐户...
在这里,我们使用微软操作系统的一款工具:netplwiz 它可以非常便捷的管理用户账户. 一:修改密码(无需现在密码) 01修改注册表 运行命令:regedit 在地址栏输入: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Passwor…...
数据类型相关问题导致的索引失效 | OceanBase SQL 优化实践
背景 针对在OceanBase 论坛中遇到的一些典型SQL调优问题,进行记录与总结,分享给大家。本文介绍的事3个场景:数据类型不匹配、字符集相关属性不匹配,和过滤/联接条件上包含系统函数。 场景一:数据类型不匹配 类型不匹…...
银行卡风险画像在社交行业网络安全的应用
据中国支付清算协会统计,2023年银行卡欺诈案件造成的经济损失同比增长21%,而社交平台中超过35%的诈骗行为涉及金融账户盗用。本文将讲述如何使用风险画像技术助力社交网络安全。 银行卡风险画像的核心逻辑 银行卡风险画像是通过多维度数据分析构建的用…...
C++程序设计基础实验:C++对C的扩展特性与应用
C程序设计基础实验:C对C的扩展特性与应用 🔥 本文详细讲解C基础实验,包含C对C语言的扩充与增强特性,从零开始掌握函数重载、引用、指针等核心概念,附详细代码分析与运行结果。适合C初学者和有C语言基础想学习C的同学&a…...
极狐GitLab 外部授权控制机制是怎样的?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 外部授权控制 (BASIC SELF) 在高度控制的环境中,访问策略可能需要由外部服务控制,该服务允许基于项目…...
告别Feign:基于Spring 6.1 RestClient构建高可用声明式HTTP客户端
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
极狐GitLab 项目和群组的导入导出速率限制如何设置?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 项目和群组的导入导出速率限制 (BASIC SELF) 您可以为项目和群组的导入和导出配置速率限制: 更改速率限制&#…...
中华传承-医山命相卜-铁板神数
铁板神数 子平法 子平法 徐子平 倪海夏 一月(公历2025年1月29日-2025年2月27日) 运势:事业开局不利,难以快速适应工作节奏,可能面临上级的质疑或竞争压力。财富方面容易财来财去,需留意理财陷阱。 原因&…...
C++学习:六个月从基础到就业——面向对象编程:接口设计
C学习:六个月从基础到就业——面向对象编程:接口设计 本文是我C学习之旅系列的第十五篇技术文章,重点讨论在C中进行接口设计的原则、技术和最佳实践。查看完整系列目录了解更多内容。 引言 在面向对象的软件开发中,良好的接口设计…...
工作总结(十二)——迁移svn单项目到gitlab上,保留历史提交记录
文章目录 前言一、目的二、操作步骤1.创建项目库2.复制历史提交者账号3.复制待迁移项目以及历史记录4.push到gitlab远程仓库 总结 前言 本系列文章主要记录工作中一些需要记录的内容 一、目的 因为一些原因,我需要将svn库上的某个项目迁移到公司的gitlab库管理平台…...
PS中制作一张扣洞贴图
要在PS制作如下一张贴图,如下图所示 步骤: 1.首先复制一张图层 2.将最底层图层的透明度调整为0 3.选择画笔的模式为清除 4.设置画笔大小 5.选中需要清除的图层,然后就可以将图层的像素点清除了 6.导出成PNG文件即可 注࿱…...
STM32 HAL库 Freertos创建多任务
1. 引言 STM32F407 是 ST 公司推出的一款高性能微控制器,具有丰富的外设资源和强大的处理能力。HAL(Hardware Abstraction Layer)库是 ST 为其微控制器提供的硬件抽象层,它简化了硬件操作,提高了开发效率。FreeRTOS 是…...
android测试硬件工具 安卓硬件测试命令
Android开发常用ADB命令大全 在Android开发过程中,ADB(Android Debug Bridge)是一个非常重要的调试工具。掌握这些命令可以大大提高开发效率。如果你正在使用克魔开发助手(Keymob)这样的开发工具,你会发现它已经集成了很多ADB功能,让调试变得…...
第12篇:Linux程序访问控制FPGA端Switch<一>
Q:如何写.c代码访问读取FPGA端的滑动开关SW的值? A:DE1-SoC开发板上有10个滑动开关连接到DE1_SoC_Computer系统的并行输入端口,该端口只有一个10位只读Data寄存器映射到地址0xFF200040,对Data寄存器进行读操作并将读出…...
硬盘变废为宝!西部数据携微软等启动稀土回收 效率可达90%
快科技4月18日消息,西部数据(Western Digital)宣布,与微软、Critical Materials Recycling及PedalPoint Recycling携手,在美国启动一项跨产业前导计划-稀土回收。 目前,西部数据已经成功从报废硬盘&#x…...
元宇宙概念兴起,B 端数字孪生迎来哪些新机遇?
在科技飞速发展的当下,元宇宙概念如同一颗璀璨新星,迅速吸引了全球的目光。随着元宇宙的兴起,与之紧密相关的 B 端数字孪生技术也迎来了前所未有的发展机遇。元宇宙与 B 端数字孪生的融合,正悄然改变着多个行业的运作模式…...
用 NLP + Streamlit,把问卷变成能说话的反馈
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
stl 容器 – map
stl 容器 – map 1. map 和 multimap的使用文档 参考文档 参考文档点这里哟 🌈 😘 2. map 类的介绍 map的声明如下 template < class Key, // map::key_type class T, // map::mapped_type class Compare less<Key>, // map::key_…...
20250417-vue-动态插槽名
动态指令参数在 v-slot 上也是有效的,即可以定义下面这样的动态插槽名: <base-layout><template v-slot:[dynamicSlotName]>...</template><!-- 缩写为 --><template #[dynamicSlotName]>...</template> </base…...
010301-cdn_waf-web扩展1-基础入门-网络安全
文章目录 1 WAF1.1WAF 的核心功能1.2 WAF 的部署类型1.3 WAF 的应用场景1.4 主流 WAF 产品1.5 如何选择 WAF?1.6 注意事项1.7 waf总结和演示 2 CDN2.1 核心原理2.2 关键功能2.3 典型应用场景2.4 优势2.5 主流CDN服务商2.6 技术实现2.7 注意事项2.8cdn安全测试和演示…...
CentOS7执行yum命令报错 Could not retrieve mirrorlist http://mirrorlist.centos.org
CentOS7执行yum命令报错 引更新yum源备份原有源创建新的源文件清理并重建缓存 引 CentOS 7 系统无法连接到 CentOS 的官方镜像站点。这通常是由于网络问题或 CentOS 7 已停止维护导致的(2024年6月30日后 CentOS 7 已进入 EOL) 报错明细: 已…...
在阿里云虚拟主机上启用WordPress伪静态
在阿里云虚拟主机上启用WordPress伪静态,需要根据虚拟主机的Web服务器类型(Nginx或Apache)进行相应的设置。以下是具体步骤: 1. 确认虚拟主机的Web服务器类型 登录阿里云虚拟主机管理控制台。 查看主机的配置信息,确认是使用Nginx还是Apac…...
【java 13天进阶Day06】Map集合,HashMapTreeMap,斗地主、图书管理系统,排序算法
Map集合 Collection是单值集合体系。 Map集合是另一个集合体系,是一种双列集合,每个元素包含两个值。 Map集合的每个元素的格式:keyvalue(键值对元素)。 Map集合也被称为“键值对集合”。 Map集合的完整格式:{key1value1 , ke…...
从代码学习深度学习 - 小批量随机梯度下降 PyTorch 版
文章目录 前言一、数据准备与处理1.1 数据集简介1.2 数据加载与预处理二、训练工具与辅助类三、可视化工具四、模型训练五、执行训练总结前言 深度学习是人工智能领域的核心技术之一,而小批量随机梯度下降(Mini-Batch Stochastic Gradient Descent, SGD)是训练神经网络的基…...
03、GPIO外设(三):标准库代码示例
标准库代码示例 1、点亮LED2、LED闪烁3、LED流水灯4、按键控制LED5、蜂鸣器 本章源代码链接: 链接: link 1、点亮LED 实验要求:点亮LED ①LED.c文件的代码如下: #include "LED.h"/*** LED引脚初始化*//* 定义数组,想要添加引脚…...
PyTorch 深度学习实战(37):分布式训练(DP/DDP/Deepspeed)实战
在上一篇文章中,我们探讨了混合精度训练与梯度缩放技术。本文将深入介绍分布式训练的三种主流方法:Data Parallel (DP)、Distributed Data Parallel (DDP) 和 DeepSpeed,帮助您掌握大规模模型训练的关键技术。我们将使用PyTorch在CIFAR-10分类…...
MCP系列之架构篇:深入理解MCP的设计架构
前言 在上一篇《MCP系列之基础篇》中,我们初步了解了MCP(模型上下文协议)的基本概念和价值。本篇文章将深入探讨MCP的技术架构,帮助开发者和技术爱好者更全面地理解这一协议的内部工作机制。我们将剖析MCP的核心组件、通信模型和工作流程,解析Host、Client和Server三者之…...
RT-Thread RTThread studio 初使用
RT-Thread Studio 下载 https://www.rt-thread.org/studio.html 安装使用 https://bbs.elecfans.com/jishu_2425653_1_1.html 4 编译问题解决 问题一:error: unknown type name clock_t 具体的类型值是在sys/_types.h中定义的,需要包含sys/_types.h 这个…...
设计模式 --- 外观模式
外观模式是一种结构型设计模式,为复杂子系统提供统一的高层接口,通过定义一个外观类来简化客户端与子系统的交互,降低系统耦合度。这种模式隐藏了子系统的复杂性,将客户端与子系统的实现细节隔离开来,…...
第十二节:原理深挖-React Fiber架构核心思想
链表结构、时间切片(Time Slicing) 优先级调度实现(如用户输入>网络请求) React Fiber架构深度解析:从链表到优先级调度的革命性升级 一、Fiber架构核心设计思想 React Fiber是React 16的底层协调算法重构&#x…...
利用DeepSeek设计一个HTML批量转换工具设计
需求词:需要设计一个能够批量转换HTML文件格式的网页在线工具,界面简洁易用 功能概述 设计一个网页在线工具,允许用户批量上传HTML文件并进行格式转换,包括: HTML美化/格式化 HTML压缩/最小化 HTML到XHTML转换 HT…...
TypeScript 从入门到精通:完整教程与实战应用(一)
1. TypeScript 简介 什么是 TypeScript? TypeScript 是 JavaScript 的超集,添加了静态类型系统,由微软开发并开源。它编译成纯 JavaScript 运行在任何 JavaScript 环境中。 为什么使用 TypeScript? 类型安全:在编译时…...
什么是Python单例模式
什么是Python单例模式 Python单例模式是一种创建型设计模式,目的是确保一个类仅有一个实例,并提供一个全局访问点来获取该实例。以下从作用和示例进行介绍: 作用 控制资源使用:避免对系统资源的重复消耗,像数据库连接、文件句柄等稀缺资源,只创建一个实例来管理使用,防…...
PHP8.2.9NTS版本使用composer报错,扩展找不到的问题处理
使用composer install时报错: The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl extension, you can disable this error, at y our own risk, by setting the ‘disable-tls’ option to true.…...
memcache使用
Memcache 是一款高性能的分布式内存对象缓存系统,以下是其使用方法: 安装与配置 • 安装 Memcached :在 CentOS 7 系统中,可使用命令sudo yum install memcached进行安装,也可从源码编译安装,如下载 memca…...
旅游资源网站登录(jsp+ssm+mysql5.x)
旅游资源网站登录(jspssmmysql5.x) 旅游资源网站是一个为旅游爱好者提供全面服务的平台。网站登录界面简洁明了,用户可以选择以管理员或普通用户身份登录。成功登录后,用户可以访问个人中心,进行修改密码和个人信息管理。用户管理模块允许管…...
Nacos 中使用了哪些缓存?缓存的目的是什么?是如何实现的?
Nacos 在服务端和客户端都广泛的使用了缓存机制,下面着重介绍一下。 一、 Nacos 服务端缓存 (Server-Side Caching) Nacos 服务端缓存的主要目的是提高读取性能、降低对底层存储(数据库或磁盘文件)的压力,并加速对客户端请求的响…...
「GitHub热榜」AIGC系统源码:AI问答+绘画+PPT+音乐生成一站式
—零门槛搭建私有化AI内容工厂,源码开放商业落地指南 为什么全栈AIGC系统成为企业刚需? 1. 传统方案的致命缺陷 痛点 使用ChatGPTMidjourneyCanva 本全栈方案 工具割裂 需切换5平台 一个系统全搞定 成本 年费50万 一次部署永久免费 数据安全 …...