C#面向对象(封装,继承,多态,抽象)--08
目录
一.类和对象
1.类(Class)
2.对象
二.继承
1.定义
2.实现方式
三.多态
1.定义
2.实现方式
3.代码示例
四.抽象
1.定义
2.实现方式
3.代码示例
总结
面向对象(OOP)是C#编程语言的核心概念之一.它通过类和对象的方式来组织代码,提供了更高的代码复用性,可拓展性和可维护性
OOP的四大基本特征是封装,继承,多态和抽象.这些概念共同构成了OOP的核心原则不过,有时候人们会提到三大特性(即封装,继承,多态),这通常是将抽象和封装合并讨论,因为两者都涉及到隐藏实现细节
一.类和对象
在C#中,类和对象是面向对象编程(OOP)的基本构建块.理解它们的概念和使用方法是掌握OOP的关键.
1.类(Class)
定义:
- 类是一个模板或者说是一个蓝图,用于创建对象.它定义了对象的属性和行为
- 类可以包含字段,属性,方法,事件,构造函数等
类的声明:
- 使用Class关键字来声明一个类
- 类可以包含访问修饰符(如public,private等)来控制其可见性
C#中的访问修饰符
public:公共访问级别;类,方法或成员可以被任何其他代码访问;适用于希望在整个程序中都可以访问的成员
private:私有访问级别;只能在包含它的类或结构内部访问;是最严格的访问级别,通常用于隐藏类的实现细节
protected:受保护访问级别;可以在包含它的类或任何派生类中访问适用于希望保护成员不被外部访问,但允许子类使用的情况
internal:内部访问级别;只能在同一个程序集内访问;通常用于同一程序集中,但不希望公开给其他程序集的成员
protected internal:组合了protected和internal的访问级别;可以在同一个程序集内访问,或者在派生类中访问;适用于需要在程序集内和派生类中访问的成员
private protected:可以在包含它的类或同一个程序集中的派生类中访问;适合需要限制访问范围,但允许程序集内的派生类访问的场景
代码示例:
public class Car
{// 私有字段,仅在类内部可见private string color;private string model;// 公有属性,提供对私有字段的受控访问public string Color{get { return color; }set { color = value; }}public string Model{get { return model; }set { model = value; }}// 构造函数public Car(string model, string color){this.model = model;this.color = color;}// 公有方法public void Drive(){Console.WriteLine("这个车正在行驶");}
}
类对象:
- 字段:用于存储数据.通常使用私有访问修饰符,并通过属性来访问
- 属性:用于保护字段的访问和修改;通常包含get和set访问器
- 方法:定义对象的行为
- 构造函数:特殊方法,用于创建和初始化对象
封装:
- 封装是将对象的属性和行为(方法)绑定在一起,对外隐藏对象的内部实现细节,只暴露必要的接口,从而保护对象的数据完整性和安全性。
2.对象
定义:
- 对象是类的实例.通过类创建的具体实体
- 对象在内存中占有空间,并且可以对其进行操作
对象的创建:
- 使用new关键字去创建对象
- 创建对象时,调用类的构造函数
代码示例:
Car myCar = new Car("小米SU7", "Red");
使用对象:
- 通过对象访问类的成员(属性,方法等)
- 可以通过点操作符(.)来访问对象的成员
代码示例:
Console.WriteLine(myCar.Model); // 输出: 小米SU7
myCar.Drive(); // 输出: 这个车正在行驶
对象的生命周期:
- 对象的生命周期由C#的垃圾回收机制管理
- 当对象不再被引用时,垃圾回收器(GC)会自动释放其占用的内存
二.继承
1.定义
继承是面向对象编程中用于实现代码重用和逻辑扩展的机制。一个类(子类)可以继承另一个类(父类)的属性和方法,子类可以重用父类的代码,并且可以添加新的功能或重写父类的方法。
2.实现方式
1)使用冒号 : 来表达继承关系
2)C#只支持单继承,一个类只能有一个直接父类,但可以实现多个接口
代码示例:
// 父类:Animal
public class Animal
{public string Name { get; set; }public void Eat(){Console.WriteLine($"{Name} 正在吃东西。");}
}// 子类:Dog,继承自Animal
public class Dog : Animal
{public void Bark(){Console.WriteLine($"{Name} 正在汪汪叫。");}
}
//Dog类继承自Animal类,获得了Name属性和Eat方法。
//Dog类新增了Bark方法。
//子类可以直接使用父类的成员,实现了代码重用。
使用示例:
Dog dog = new Dog();
dog.Name = "小黑";
dog.Eat(); // 输出:小黑 正在吃东西。
dog.Bark(); // 输出:小黑 正在汪汪叫。
三.多态
1.定义
多态是指同一操作在不同对象上具有不同的表现形式.通过多态,可以使用统一的接口来调用不同对象的特定实现
2.实现方式
- 方法重写(Override):子类重写父类的虚方法
- 接口的实现:不同类实现相同的接口方法
- 方法重载:同一类中方法名相同,但参数列表不同(严格来说,这是编译时多态)
3.代码示例
代码示例(方法重写):
// 父类:Animal
public class Animal
{public string Name { get; set; }// 虚方法,可以被子类重写public virtual void Speak(){Console.WriteLine($"{Name} 正在发出声音。");}
}// 子类:Dog
public class Dog : Animal
{// 重写父类的Speak方法public override void Speak(){Console.WriteLine($"{Name} 正在汪汪叫。");}
}// 子类:Cat
public class Cat : Animal
{// 重写父类的Speak方法public override void Speak(){Console.WriteLine($"{Name} 正在喵喵叫。");}
}
代码示例(接口实现):
// 定义接口
public interface IShape
{double GetArea();
}// 实现接口的类:Circle
public class Circle : IShape
{public double Radius { get; set; }public double GetArea(){return Math.PI * Radius * Radius;}
}// 实现接口的类:Rectangle
public class Rectangle : IShape
{public double Width { get; set; }public double Height { get; set; }public double GetArea(){return Width * Height;}
}
说明:
- 方法重写:在父类中定义虚方法(virtual),在子类中使用override关键字重写
- 接口实现:不同类实现相同接口的方法,可以通过接口引用来调用具体实现
- 多态调用:通过父类或接口的引用,调用子类或具体实现的方法
使用示例:
List<Animal> animals = new List<Animal>
{new Dog { Name = "小黑" },new Cat { Name = "小白" },new Animal { Name = "未知动物" }
};foreach (var animal in animals)
{animal.Speak();
}
/* 输出:
小黑 正在汪汪叫。
小白 正在喵喵叫。
未知动物 正在发出声音。
*/// 接口多态
List<IShape> shapes = new List<IShape>
{new Circle { Radius = 5 },new Rectangle { Width = 4, Height = 6 }
};foreach (var shape in shapes)
{Console.WriteLine($"面积:{shape.GetArea()}");
}
/* 输出:
面积:78.5398163397448
面积:24
*/
四.抽象
1.定义
抽象是对现实世界复杂对象的建模,提取出关键特性,忽略不必要的细节.抽象可以通过抽象类和接口来实现,提供一个模板,让子类实现特定的功能
2.实现方式
- 抽象类(Abstract Class):使用abstract关键字修饰,不能实例化,可以包含抽象方法和非抽象方法
- 接口(Interface):定义一组未实现的方法或属性,需要由实现类提供具体实现
3.代码示例
抽象类
// 抽象类:Shape
public abstract class Shape
{// 抽象方法,没有方法体,子类必须实现public abstract double GetArea();// 普通方法,子类可直接使用或重写public virtual void Display(){Console.WriteLine("这是一个形状。");}
}// 子类:Circle
public class Circle : Shape
{public double Radius { get; set; }// 实现抽象方法public override double GetArea(){return Math.PI * Radius * Radius;}// 重写父类方法public override void Display(){Console.WriteLine($"这是一个半径为{Radius}的圆形。");}
}// 子类:Rectangle
public class Rectangle : Shape
{public double Width { get; set; }public double Height { get; set; }// 实现抽象方法public override double GetArea(){return Width * Height;}// 重写父类方法public override void Display(){Console.WriteLine($"这是一个宽为{Width},高为{Height}的矩形。");}
}
接口
// 接口:IMovable
public interface IMovable
{void Move(double distance);
}// 实现接口的类:Car
public class Car : IMovable
{public void Move(double distance){Console.WriteLine($"汽车行驶了{distance}公里。");}
}// 实现接口的类:Person
public class Person : IMovable
{public void Move(double distance){Console.WriteLine($"人行走了{distance}公里。");}
}
说明:
- 抽象类:不能被实例化,提供了一个模板或基类,强制子类实现抽象方法
- 接口:定义了行为的契约,实现类必须实现接口中的所有成员
- 抽象类与接口的区别:
- 抽象类可以包含已实现的方法和字段,接口只能包含未实现的方法(C# 8.0开始,接口可以有默认实现)
- 一个类只能继承一个抽象类,但可以实现多个接口
使用示例:
List<Shape> shapes = new List<Shape>
{new Circle { Radius = 5 },new Rectangle { Width = 4, Height = 6 }
};foreach (var shape in shapes)
{shape.Display();Console.WriteLine($"面积:{shape.GetArea()}");
}
/* 输出:
这是一个半径为5的圆形。
面积:78.5398163397448
这是一个宽为4,高为6的矩形。
面积:24
*/// 接口的使用
List<IMovable> movables = new List<IMovable>
{new Car(),new Person()
};foreach (var movable in movables)
{movable.Move(10);
}
/* 输出:
汽车行驶了10公里。
人行走了10公里。
*/
总结
- 封装:通过访问修饰符和属性,保护对象的内部状态,提供受控的访问接口
- 继承;子类继承父类的属性和方法,实现代码重用和逻辑扩展
- 多态:通过方法重写和接口实现,实现相同接口的不同表现形式,增强代码的灵活性和可扩展性
- 抽象:通过抽象类和接口,定义对象的抽象模型,强制子类实现特定的行为
相关文章:
C#面向对象(封装,继承,多态,抽象)--08
目录 一.类和对象 1.类(Class) 2.对象 二.继承 1.定义 2.实现方式 三.多态 1.定义 2.实现方式 3.代码示例 四.抽象 1.定义 2.实现方式 3.代码示例 总结 面向对象(OOP)是C#编程语言的核心概念之一.它通过类和对象的方式来组织代码,提供了更高的代码复用性,可拓展性…...
Frp工具配置内网穿透
Frp工具配置内网穿透 一.资源准备 固定 IP 的公网服务器:最低配 1C1G 即可,硬盘 20G,带宽 10M,系统推荐使用 Debian 9 或 10( Ubuntu 20.04 LTS)。安全组需要开放 443、8080、8081 端口(其他…...
pg_hba.conf是PostgreSQL中控制客户端认证和访问权限的配置文件
报错提示:FATAL: no pg_hba.conf entry for host "117.26.241.1", user "postgres", databa 报错解释: 这个错误表示PostgreSQL数据库服务器没有找到适合的认证方式来处理来自特定IP地址(在这个例子中是117.26.241.1&a…...
Winforms开发基础之非主线程操作UI控件的误区
前言 想象一下,你正在开发一个桌面应用程序,用户点击按钮后需要执行一个耗时操作。为了避免界面卡顿,你决定使用后台线程来处理任务。然而,当你在后台线程中尝试更新UI控件时,程序突然崩溃了。这是为什么呢࿱…...
【机器学习】主动学习-增加标签的操作方法-流式选择性采样(Stream-based selective sampling)
Stream-Based Selective Sampling Stream-based selective sampling 是一种主动学习方法,在处理大量数据流时特别有用。它允许学习算法动态选择是否对当前数据实例进行标注(通过与 Oracle 交互)。此方法主要应用于流数据场景中,目…...
STL之VectorMapList针对erase方法踩坑笔记
前沿 如下总结的三种容器,开头都会涉及当前容器的特点,再者就本次针对erase方法的使用避坑总结。 一.Vector vector关联关联容器,存储内存是连续,且特点支持快速访问,但是插入和删除效率比较地(需要找查找和移动)。另…...
Docker compose 使用 --force-recreate --no-recreate 控制重启容器时的行为
一、--force-recreate 作用 强制重新创建指定的服务,即使服务的配置未发生任何变化。忽略现有容器的状态,无论容器是停止、运行还是有无变化,都会销毁并重新创建。 用法 docker compose up -d --force-recreate [services...]不指定服务&…...
【pycharm】远程部署失败,查看日志
pycharm 远程部署失败,查看日志 远程一直失败,gateway超时会还知道拉取一份日志: 在./root 下 发现了崩溃日志,启动崩溃了,导致backend一直无法启动。win11就是一直在connect到ubuntu的后端pycharm。。gateway 拉取的日志 我上传的linux版本的pycharm暂时存在dist目录下,…...
FilmMusic
电影推荐 《五朵金花》《沉睡魔咒》《三国之见龙卸甲》《灰姑娘》《正义联盟》《沉睡魔咒2》 《神奇女侠》《神奇女侠》HD中字在线观看 - 影视天堂 《野性的呼唤》《野性的呼唤2020》HD中字在线观看 - 影视天堂 《毒液2》《小马王》《秦时明月之百步飞剑》《秦时明月之夜尽…...
使用 Python 实现自动化办公(邮件、Excel)
目录 一、Python 自动化办公的准备工作 1.1 安装必要的库 1.2 设置邮件服务 二、邮件自动化处理 2.1 发送邮件 示例代码 注意事项 2.2 接收和读取邮件 示例代码 三、Excel 自动化处理 3.1 读取和写入 Excel 文件 示例代码 3.2 数据处理和分析 示例代码 四、综合…...
稀疏编码 (Sparse Coding) 算法详解与PyTorch实现
稀疏编码 (Sparse Coding) 算法详解与PyTorch实现 目录 稀疏编码 (Sparse Coding) 算法详解与PyTorch实现1. 稀疏编码 (Sparse Coding) 算法概述1.1 稀疏表示1.2 稀疏编码的优势2. 稀疏编码的核心技术2.1 稀疏编码的目标2.2 稀疏编码的优化2.3 基向量的学习3. PyTorch实现稀疏编…...
基于springboot的疫情网课管理系统
作者:学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”,支持远程部署调试、运行安装。 项目包含: 完整源码数据库功能演示视频万字文档PPT 项目编码࿱…...
Cookie和Session
会话: 有状态会话: 客户端知道发起请求的是谁 无状态会话: 不知道发起请求的是谁 只知道有请求 http是无状态请求 保存会话信息的两种技术: 可以通过Cookie和Session储存会话信息 cookie:客户端技术 信心存…...
分布式ID—雪花算法
背景 现在的服务基本是分布式、微服务形式的,而且大数据量也导致分库分表的产生,对于水平分表就需要保证表中 id 的全局唯一性。 对于 MySQL 而言,一个表中的主键 id 一般使用自增的方式,但是如果进行水平分表之后,多…...
【无标题】四类sql语句通用
select select a from tableA where aa1: 总是丢掉from。。 运算: select a*3 b from tableA; 使用()来定义运算优先级。 别名 select a as xx from tableA;可以不加as,仅为增加可读性。 别名不可以中间有空格&…...
Vue的生命周期方法
Vue 的生命周期方法是指 Vue 实例从创建到销毁的过程中的一系列钩子函数。它们可以让你在特定时刻执行代码。Vue 2 和 Vue 3 的生命周期钩子大致相同,下面是 Vue 中常用的生命周期方法: 1. beforeCreate 在实例初始化之后,数据观测和事件配…...
Android SystemUI——基础简介(一)
Android SystemUI 是 Android 操作系统的一部分,负责处理与用户界面相关的所有元素。它是 Android 设备上的一个关键组件,管理着屏幕顶部的状态栏(显示时间、信号强度、电池电量等)、屏幕底部的导航栏(返回、主页、最近…...
大疆机场及无人机上云
最近基于大疆上云api进行二次开发,后面将按照开发步骤对其进行说明!...
js:正则表达式
目录 正则表达式的语法 定义 检测 检索 元字符 边界符 量词 字符类 表单判断案例 修饰符 过滤敏感词 正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本字符组合模式 正则表达式是一…...
【芯片设计- RTL 数字逻辑设计入门 9.2 -- flip flop 与 寄存器的关系详细介绍】
请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 Overview硬件角度的 Flip-Flop软件角度的寄存器举例说明硬件设计角度软件开发角度D Flip-Flop 实现基本原理:Verilog 代码:UT 示例JK Flip-Flop 实现基…...
JAVA实战开源项目:课程智能组卷系统(Vue+SpringBoot) 附源码
本文项目编号 T 009 ,文末自助获取源码 \color{red}{T009,文末自助获取源码} T009,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 老…...
【Rust自学】11.8. 忽略测试
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.8.1. 忽略某些测试,执行剩余测试 某些测试执行起来非常耗时,所以在大部分情况下会想在运行cargo test时忽略它…...
浅谈云计算09 | 服务器虚拟化
服务器虚拟化基础 一、虚拟化的定义二、系统虚拟化三、服务器虚拟化的核心要义四、典型实现:探索不同路径五、全虚拟化与半虚拟化六、主流服务器虚拟化技术 一、虚拟化的定义 虚拟化是一种将物理资源抽象为逻辑资源的技术,通过在物理硬件与操作系统、应…...
【Ubuntu 24.04】虚拟机常见问题解决
1.24开启3D加速黑屏 参考文章:Ubuntu24开机黑屏,VMware卡死,虚拟机繁忙解决方案 没有3D加速就没有动画,所以我们需要开启3D加速,但是直接开启3D加速会黑屏 由于Ubuntu24内部的图形加速驱动异常,因此需要更新…...
【已解决】【记录】2AI大模型web UI使用tips 本地
docker desktop使用 互动 如果需要发送网页链接,就在链接上加上【#】号 如果要上传文件就点击这个➕号 中文回复 命令它只用中文回复,在右上角打开【对话高级设置】 输入提示词(提示词使用英文会更好) Must reply to the us…...
iostat命令详解
iostat 命令是 I/O statistics(输入/输出统计)的缩写,用来报告系统的 CPU 统计信息和块设备及其分区的 IO 统计信息。iostat 是 sysstat 工具集的一个工具,在 Ubuntu 系统中默认是不带 iostat 命令的,需要自行安装: $ sudo apt in…...
工程水印相机结合图纸,真实现场时间地点,如何使用水印相机,超简单方法只教一次!
在工程管理领域,精准记录现场信息至关重要。水印相机拍照功能,为工程人员提供了强大的现场信息记录工具,助力工程管理和统计工程量,更可以将图片分享到电脑、分享给同事,协同工作。 一、打开图纸 打开手机版CAD快速看图…...
vue城市道路交通流量预测可视化系统
文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站、收藏、不迷路! 项目亮点 编号:R09 🚇 网站大屏管理三大前端、vuespringbootmysql、前后端分离架构 🚇 流量预测道路查询…...
秩为1的矩阵可以表示为两个向量的外积
秩为1的矩阵可以表示为两个向量的外积,为什么 秩为 1 的矩阵可以表示为两个向量的外积,原因源于矩阵的线性代数性质。以下是详细的解释: 1. 矩阵的秩定义 矩阵的秩是矩阵列向量(或行向量)线性无关的最大个数。当矩阵…...
深入浅出 Android AES 加密解密:从理论到实战
深入浅出 Android AES 加密解密:从理论到实战 在现代移动应用中,数据安全是不可忽视的一环。无论是用户隐私保护,还是敏感信息的存储与传输,加密技术都扮演着重要角色。本文将以 AES(Advanced Encryption Standard&am…...
MySQL 与 Redis 的数据一致性问题
读数据的逻辑基本一致问题1: 一致性有哪些?MySQL 与 Redis 的数据一致性方案有哪些?先写MySQL还是先写Redis?缓存数据是更新还是清除?强一致还是最终一致?问题: 如果mysql写成功了,但是Redis写(删除)失败了怎么办?重试机制的幂等问题如何解决? 方案1: 先更新 MySQL 再清…...
【论文笔记】多个大规模数据集上的SOTA绝对位姿回归方法:Reloc3r
abstract 视觉定位旨在确定查询图像相对于姿势图像数据库的相机姿势。 近年来,直接回归相机姿势的深度神经网络由于其快速推理能力而受到欢迎。 然而,现有方法很难很好地推广到新场景或提供准确的相机姿态估计。 为了解决这些问题,我们提出了…...
UE5 打包项目
UE5 打包项目 flyfish 通过 “文件”->“打开项目”,然后在弹出的对话框中选择项目文件(通常是以.uproject为后缀的文件) 选择目标平台: 在 UE5 主界面中,找到 “平台”(Platforms)。根据…...
JavaEE之定时器及自我实现
在生活当中,有很多事情,我们不是立马就去做,而是在规定了时间之后,在到该时间时,再去执行,比如:闹钟、定时关机等等,在程序的世界中,有些代码也不是立刻执行,…...
好用的php商城源码有哪些?
选择一个优秀的商城工具,能更好地帮助大家建立一个好用的商城系统。目前比较流行的都是开源PHP商城系统,那么现实中都有哪些好用的PHP商城源码值得推荐呢?下面就带大家一起来了解一下。 1.TigShop 【推荐指数】:★★★★★☆ 【推…...
GO语言实现KMP算法
前言 本文结合朱战立教授编著的《数据结构—使用c语言(第五版)》(以下简称为《数据结构(第五版)朱站立》)中4.4.2章节内容编写,KMP的相关概念可参考此书4.4.2章节内容。原文中代码是C语言&…...
国产Docker可视化面板Dpanel的安装与功能解析
国产Docker可视化面板Dpanel的安装及功能介绍 Docker 可视化面板系统,提供完善的 docker 管理功能。 支持查看基本信息、运行状态统计、网络统计、磁盘统计、用量统计等功能 容器管理: 创建/修改容器 支持基本配置、环境变量、…...
Elaticsearch常用的浏览器插件
Elasticsearch head https://github.com/mobz/elasticsearch-headElasticsearch Tools https://www.chajianxw.com/developer/31765.html#google_vignetteElasticvue https://blog.csdn.net/weixin_60457220/article/details/143595846...
LabVIEW数据库管理系统
LabVIEW数据库管理系统(DBMS)是一种集成了数据库技术与数据采集、控制系统的解决方案。通过LabVIEW的强大图形化编程环境,结合数据库的高效数据存储与管理能力,开发人员可以实现高效的数据交互、存储、查询、更新和报告生成。LabV…...
【HM-React】08. Layout模块
基本结构和样式reset 结构创建 实现步骤 打开 antd/Layout 布局组件文档,找到示例:顶部-侧边布局-通栏拷贝示例代码到我们的 Layout 页面中分析并调整页面布局 代码实现 pages/Layout/index.js import { Layout, Menu, Popconfirm } from antd impor…...
SpringCloud
1.认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构:将业务的所有功…...
HarmonyOS应用开发者初级认证最新版– 2025/1/13号题库新版
1.欢迎各位读者,本文档来自鸿蒙开发学员亲测,最新版。(考试时直接Ctrlf进行搜索,一定要认真比对答案,有的答案相似度很高)!!!!!! 欢迎…...
基于微信小程序的汽车销售系统的设计与实现springboot+论文源码调试讲解
第4章 系统设计 一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专…...
[免费]SpringBoot+Vue新能源汽车充电桩管理系统【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue新能源汽车充电桩管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue新能源汽车充电桩管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着信息化时代的到来࿰…...
《机器学习》之K-means聚类
目录 一、简介 二、K-means聚类实现步骤 1、初始化数据点、确定K值 2、通过距离分配数据点 3、更新簇中心 4、 迭代更新 三、聚类效果评价方式 1、轮廓系数的定义 2、整体轮廓系数 3、使用场景 4、优点 5、缺点 6、代码实现方法 四、K-means聚类代码实现 1、API接…...
【芯片封测学习专栏 -- 2D | 2.5D | 3D 封装的区别和联系】
请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 Overview线键合(wire-bonding)封装FOWLP2D封装2.5D 封装硅通孔(TSV)硅中介层无TSV的2.5D 3D封装 Overview 我们先要了解一下&…...
E12.【C语言】练习:求两个数的最大公约数
目录 1.枚举 2.辗转相除法 1.枚举 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() {int a 0;int b 0;int tmp 0;scanf("%d %d", &a, &b);if (a < b){for (int i1; i < a; i){if (0a% i && 0b%i)tmp i;}}if …...
SVG图表
1、时序图 英文 #mermaid-svg-OyLuBTPnpbW9XDOB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-OyLuBTPnpbW9XDOB .error-icon{fill:#552222;}#mermaid-svg-OyLuBTPnpbW9XDOB .error-text{fill:#552222;stroke:#55…...
IDEA中创建maven项目
1. IDEA中创建maven项目 在IDEA中创建Maven项目,前提是已经安装配置好Maven环境。如还未配置安装Maven的,请先下载安装。如何下载安装,可参考我另外篇文章:maven的下载与安装教程本篇教程是以创建基于servlet的JavaWeb项目为例子&…...
Laravel 中 Cache::remember 的基本用途
在 Laravel 中,Cache::remember 方法用于缓存数据,以提高应用程序的性能。当需要从数据库或其他较慢的数据源中检索数据时,可以使用 Cache::remember 来检查请求的数据是否已经被缓存。如果数据已缓存,则直接从缓存中读取…...