二、面向对象
一、结构体类型
结构体类型是一种自定义类型,用于创建我们游戏或者实际业务中的自定义类型.
代码中变量有通用的,可以使用结构体,包裹起来。
1、成员变量
/// <summary>
/// 英雄结构体
/// </summary>
struct Hero
{//成员public string Name;
}
使用结构体:
必须new一个出来,也就是创建一个结构体。
然后这个变量调用结构体中的字段。
private void Start(){Hero tanke=new Hero();//创建一个结构体tanke.Name = "超级坦克";Debug.Log(tanke.Name);Hero tanke2 = new Hero();tanke2.Name = "终极坦克";Debug.Log(tanke2.Name);}
2、成员函数
结构体不止能包裹成员字段还能包裹成员函数
struct Hero
{//成员函数public void Show(){Debug.Log($"我的名字是:{Name}");}
}
也是通过打点的方法调用
private void Start()
{Hero tanke=new Hero();//创建一个结构体tanke.Name = "超级坦克";tanke.Show();Hero tanke2 = new Hero();tanke2.Name = "终极坦克";tanke.Show();}
这里就相当于:
猫和狗都能吃,但两种动物的吃不相同。
3、构造函数
构造函数没有类型。
必须放入结构体中的成员字段,就和传参一样,把字段当成形参。
struct Hero
{//成员public string Name;public int Attack;//构造函数public Hero(string name,int attack){Name = name;Attack = attack;}
}
使用方法:
构造函数默认有一个无参构造函数;也可以在new一个构造函数的同时,直接传入参数。
private void Start()
{Hero tanke=new Hero();//创建一个结构体tanke.Name = "超级坦克";tanke.Attack = 20;tanke.Show();Hero tanke2 = new Hero("终极坦克",200);tanke.Show();
}
二、结构体使用细节(特性)
1、构造函数也可以重载
private void Start()
{Hero tanke=new Hero();//创建一个结构体Hero tanke2 = new Hero("终极坦克",200,300);
}
注:此处的单独形参,可以直接赋值
//构造函数
public Hero(string name,int attack)
{Name = name;Attack = attack;
}
public Hero(string name,int attack,int attackBuff)
{Name = name;Attack = attack+attackBuff;
}
2、this关键字
当形参与实参的变量名一致,此时需要用this。
此时,谁调用了这个方法,谁就是this。
public Hero(string Name, int Attack){//同名变量的就近原则,就近:定义的位置this.Name = Name;this.Attack = Attack;}
3、访问修饰符
如果结构体中的成员变量是private,外界是访问不到的,只能在结构体里面使用。
public修饰的变量,外界和内部都可以随意使用。
三、面向对象概念
本质上是一种编程思想。
核心就是:把相关的数据和行为组织成一个整体来看待。
举例子:“狗”是一个类型,但具体的“大黄”才是实体,也就是对象,所以生成对象也叫“实例化”。
四、类与对象基本语法
和结构体类似。都通过new一个方法实现
区别:结构体可以无参new,类不行
private void Start(){HeroClass hero = new HeroClass();HeroStruct heroStruct = new HeroStruct();}
class HeroClass
{public string Name;public int Attack;//如果不定义构造函数,那么有一个无参构造函数//如果定义了任意个参数的有参构造函数,那么默认的无参构造函数会失效public HeroClass(string name,int attack){Name = name;Attack = attack;}public HeroClass(){}
}
五、继承
1、封装
将事物的数据、行为抽象成类,这个过程就是封装;类的产生过程就是一种封装;
2、继承
继承的核心意义是:获得父类中的所有成员。
父类是基类;子类是派生类。
支持多层继承,一个类只能有一个父类。
private void Start()
{Animal animal= new Animal();animal.Name = "动物";animal.Eat();Dog daHuang= new Dog();daHuang.Name = "大黄";Debug.Log(daHuang.Name);daHuang.Eat();Cat xiaobai= new Cat();xiaobai.Name = "小白";Debug.Log(xiaobai.Name);xiaobai.Eat();
}
子类可以在声明一个方法后,调用父类中的对象。
//父类
public class Animal
{public string Name;public void Eat(){Debug.Log($"{Name}开始吃东西了");}
}
//子类
public class Dog:Animal
{}
public class Cat:Animal
{}
六、继承后的构造函数
基类中存在的构造函数,子类必须也做对应的实现。
1、关键字
this:表示当前类型的对象
base:在程序上他的类型是基类,所以一般用来专门访问基类成员的
一般情况下,不需要用base,因为默认就可以访问基类成员。
*但是实际上在执行上this和base是同一个对象。、
七、多态
同一操作的不同行为;封装、继承、多态
1、虚函数
当基类有一个方法,而子类也有一个同名方法时,此时就需要使用关键字virtual 将基类方法设置为虚方法。
public class Animal
{public void Cry(){Debug.Log($"{Name}张嘴了");Debug.Log($"{Name}:{CryString}");}
}
public class Dog : Animal
{public void Cry(){Debug.Log($"小狗{Name}张嘴了");Debug.Log($"{Name}:汪");}
}
public class Cat : Animal
{public void Cry(){Debug.Log($"小猫{Name}张嘴了");Debug.Log($"{Name}:喵");}
}
基类使用 virtual ;子类使用 override;
虚函数:
1、提供默认逻辑;
2、提供可选的逻辑;
在子类中使用base,继承了基类中的函数逻辑。
public override void Cry()
{base.Cry();Debug.Log($"小狗{Name}张嘴了");Debug.Log($"{Name}:汪");
}
注:重载 重写 区别
重载:同名函数 不同参数
重写:覆盖基类中的方法
2、抽象类与抽象函数
抽象类:高度抽象,不需要实例化的类型,但是子类可以实例化
public abstract class Animal
{
}
抽象函数 :
在基类中声明抽象方法
对应的子类,必须override这个基类的方法 ;也就是在子类中实现这个抽象类
八、里氏转换
就是父类和子类型之间的一个转换
1、子类转父类
private void Start()
{//Animal animal = new Animal(); 不允许实例化一个抽象类Dog daHuang= new Dog("大黄","汪");Cat xiaoBai = new Cat("小白", "喵");DoCry(daHuang);DoCry(xiaoBai);
}
public void DoCry(Animal animal)
{animal.Cry();
}
这里的DoCry方法,传入了一个Animal基类变量,而不是单独的大黄小白。
这就是里氏替换中的隐式转换;相当于子类转父类
2、父类转子类
public void KejiCry(Animal animal){Dog keji = (Dog)animal;keji.Move();}
注:父类转子类 ,强转的变量类型 应该与 传入的变量类型一致。
否则会出现类型不兼容的unity报错
九、访问修饰符和类中类
1、访问修饰符
public:公开的
private:私有的
protected:受保护的 自己以及子类才能访问
不写、默认是私有的
public abstract class Animal
{public string Name;private string Age;protected string Type;}
2、类中类
private void Start(){Animal animal = new Animal();animal.Test();}
}
//父类
public class Animal
{public void Test(){//内部使用和平时没啥区别AnimalTest animalTest=new AnimalTest();animalTest.Test();}public class AnimalTest{public void Test(){Debug.Log("AnimalTest"); }}
}
十、万物基类object
如果class 不设置基类,那么它的基类就是object
object obj=new Animal();
obj.GetType();//获取对象的实际类型
Debug.Log(obj);
这里的GetType函数,是获取变量类型的方法
源自Object
public class Animal
{public string name;public override string ToString(){return $"我是动物:{name}";}public Animal(){name = "我问";}
}
ToString
十一 、命名空间
使用命名空间namespace
在其它的代码中调用 需要引用命名空间 using namespace
在同一个命名空间下 可以进行调用
Hello是主脚本;Animal是基类脚本;Dog是子类脚本
using UnityEngine;
using Animal;
public class Hello : MonoBehaviour
{private void Start(){AnimalObject animal=new Dog();}
}
namespace Animal
{//父类public abstract class AnimalObject{public string name;public override string ToString(){return $"我是动物:{name}";}}
}
namespace Animal
{public class Dog:AnimalObject{}
}
在调用的文件中 using命名空间即可
十二、接口 Interface
示例:机器人、鹦鹉、人、这三者都能说话 ; 分别让某个对象说话
首先分别创建这三个类的脚本 都有Talk这个方法 鹦鹉继承Animal基类
public class Robot
{public void Talk(){Debug.Log("机器人说话了");}
}
using UnityEngine;
public class Person
{public void Talk(){Debug.Log("人说话了");}
}
using UnityEngine;
public class Parrot:Animal
{public void Talk(){Debug.Log("鹦鹉说话了");}
}
public class Hello : MonoBehaviour
{private void Start(){Robot robot = new Robot();robot.Talk();Person person = new Person();person.Talk();Parrot parrot = new Parrot();parrot.Talk();}
}
1、创建接口
共有两个接口:移动、说话
接口的代码命名使用 I 开头
在调用接口的函数中传入参数
//让某个对象进行说话public void Talk(ITalk talker){}
2、接口实现方法
这里的方法 默认公开 否则没意义
public interface ITalk
{//实际上是抽象函数,不需要定义访问修饰符,因为没意义;不公开没法访问void Talk(){}
}
3、实现功能
public class Hello : MonoBehaviour
{private void Start(){Robot robot = new Robot(); Person person = new Person();Parrot parrot = new Parrot();//里氏转换(隐式转换)Talk(robot);Talk(person);Talk(parrot);ITalk talker = robot;//相当于这个Robot robot1 = (Robot)talker;//显示转换(强转)}//让某个对象进行说话public void Talk(ITalk talker){talker.Talk();}
}
4、总结
接口:抽象0个或多个函数,接口一定是派生类实现
十三、属性
属性就是将成员变量和成员函数相结合;
属性在外部和变量是类似的;
属性相当于提供了两个函数,分别是get、set
属性的类型决定了get的返回值类型以及set的形参类型;
属性中的两个函数get set 可以只保留一个
public class Hero
{public int Hp;private int mp;public int MP {get{Debug.Log("有人在获取MP,检查是否能释放技能");return mp; }set {if (value < mp){Debug.Log("MP减少了!MP:" + value);}else if(value>mp){Debug.Log("MP增加!MP:" + value);}mp = value;}}}
十四、引用与Null
1、引用
引用可以理解为一个别称。
代码如下:
Start中的hero其实就是TestFunction中的unit
public class Hello : MonoBehaviour
{private void Start(){Hero hero = new Hero("张三");TestFunction(hero);Debug.Log(hero.name);}void TestFunction(Hero unit){unit.name += "_TestFunction";}
}
public class Hero
{public string name;public Hero(string name){this.name = name;}
}
Hero hero2 = new Hero("李四");
TestFunction(hero2);
Debug.Log(hero2.name);
2、Null引用
Null 意味着空对象,也就是没有数据的对象
只定义了对象,但是没有new或者其他引用方式,默认也是null。
hero = null;//让hero无效
Debug.Log (hero.name);//null,不能调用任何成员。
Debug.Log (hero3.name);
//只有变量,没有实际引用的默认就是null
Hero hero4;
十五、引用的比较
这里new一个变量。就相当于新开辟了一个内存空间
所以这里是不相同的
int num1 = 3;
int num2 = 3;
Debug.Log(num1==num2);//TrueHero hero1 = new Hero("张三");
Hero hero2 = new Hero("张三");
Debug.Log(hero1 == hero2);
上面是值类型的比较。下面是引用类型的比较
1、对象的引用比较函数
可以使用.Equals函数来比较两个变量是否相同
Debug.Log(object.ReferenceEquals(hero1, hero2));//false
Debug.Log(object.ReferenceEquals(null, null));//True
Debug.Log(object.ReferenceEquals(hero1, null));//false
2、重写Equals函数
只是逻辑相等;和引用无关
public class Hero
{public string name;public Hero(string name){this.name = name;}public override bool Equals(object obj){Hero temp = (Hero)obj;//如果obj不是Hero类型,会转换失败,temp为Null//既然类型都不同一,那么肯定不相同if(temp==null)return false;else//转换成功,obj是Hero{return this.name==temp.name;}return name.Equals(temp.name);}
}
以上是重写Equals函数的代码;
十六、值类型和引用类型
1、值类型
主要的值类型:枚举、结构体、int、float、bool等
判断相等时,一般是判断两者的值是否相等。
结论:值类型在赋值时都是拷贝值,和原先的变量无关
2、引用类型
主要的引用类型:class、interface
//在这里hero1和hero2其实是一个对象
Hero hero1=new Hero("张三",4);
Hero hero2 = hero1;
比较(相等/不等)一般是判断两者是否引用同一个对象
结论:引用类型在赋值时都是拷贝引用,和原先的变量是同一个对象
3、区分原因
值类型是轻量型数据,用完就放弃销毁。
引用类型一般是重量级数据,复制成本高。
但这不意味着引用类型不销毁,当一个对象再也没有引用时,会标记为“无用”,等待回收,但这个回收是有成本的。
class中的值类型如果进行修改,要对象名 点 成员名称
如果是引用类型,只要拿到引用,随便修改都能生效。
void SetLv(Hero hero){hero.lv = 1000;}
public class Hero
{public string name;public int lv;public Hero(string name,int lv){this.name = name;this.lv = lv;}
}
注:string不是值类型,它是特殊的引用类型
十七、特殊的引用类型String
string name = "张三Abc";
Debug.Log(name.Length);
Debug.Log(name.IndexOf("A"));
Debug.Log(name.LastIndexOf("A"));
Debug.Log(name.ToUpper());
Debug.Log(name.ToLower());
string name1 = "张三Abc";
string name2 = "张三Abc";
string name3 = new string("张三Abc");
//c#中允许重载运算符
Debug.Log(name1 == name3);
Debug.Log(object.ReferenceEquals(name1,name3));
十八、数组
数组是一种内置类型,用来管理多个数据。
数组本身是引用类型;数组中可以存放任意类型;
数组中的数据如果没有设置值,会是该类型的默认值,引用就是null;
1、定义数组
Hero hero = new Hero();
//定义数组
int[] nums1=new int[10];
int[] nums2=new int[] { 1,2,3 };
Hero[] heroes = new Hero[] {new Hero(),new Hero(),new Hero() };
//修改数据
nums1[0] = 33;
//获取数据
Debug.Log(nums1[0]);//33
//理论上不存在删除数据的情况,但是可以让数据无效
nums1[0] = 0;
heroes[0] = null;
2、打印数组数量或成员
当一个方法中传入的数组,不知道具体的数组数量时,可以使用Length方法
遍历数组的长度即可。
//打印输入数组的所有成员
private void Test(int[] nums)
{//会输出数组的长度,但不是有效的长度,而是定义的长度for(int i = 0; i < nums.Length; i++){Debug.Log(nums[i]);}
}
十九、交错数组
也就是数组的数组。
数组中可以存放一切,那么把数组存放在数组中,就是交错数组
int[] nums=new int[10];
int[][] nums2 = new int[10][];//10个int[]
nums2[0]=new int[10] {1,2,3,4,5,6,7,8,9,10 };
int num = nums2[0][2];//3
Debug.Log(num);
int[] nums=new int[10];
//交错数组只是约束成员都是某个类型,但是不约束里面的内容
int[][] nums2=new int[][]
{new int[]{0,1,2,3,4,5,6,7,8,9 },new int[]{0,1,2,3,4,5,6,7,8,9 },new int[]{0,1,2,3,4,5,6,7,8,9 },new int[]{0,1,2,},
};
Debug.Log(nums2[0][2]);//2
输出第零个数组的第二个参数。
int[] nums=new int[10];//交错数组只是约束成员都是某个类型,但是不约束里面的内容 int[][] nums2=new int[][] {new int[]{0,1,2,3,4,5,6,7,8,9 },new int[]{0,1,2,3,4,5,6,7,8,9 },new int[]{0,1,2,3,4,5,6,7,8,9 },new int[]{0,1,2,},};//遍历行列式for (int i = 0; i < nums2.Length; i++){for(int j = 0; j < nums2[i].Length; j++){Debug.Log(nums2[i][j]);}}
}
二十、多维数组
确定行列的数组
//多维数组int[,] nums3 = new int[2, 3]{{1,2,3 },{4,5,6 },};Debug.Log(nums3[0, 0]);Debug.Log(nums3[1, 0]);
相关文章:
二、面向对象
一、结构体类型 结构体类型是一种自定义类型,用于创建我们游戏或者实际业务中的自定义类型. 代码中变量有通用的,可以使用结构体,包裹起来。 1、成员变量 /// <summary> /// 英雄结构体 /// </summary> struct Hero {//成员p…...
【DeepSeek背后的技术】系列二:大模型知识蒸馏(Knowledge Distillation)
目录 1 引言2 操作步骤和公式说明2.1 准备教师模型(Teacher Model)和学生模型(Student Model)2.2 生成软标签(Soft Labels)2.3 定义蒸馏损失函数2.4 训练学生模型2.5 调整超参数2.6 评估与部署 3 其他知识蒸…...
PyQt4学习笔记2】QMainWindow
目录 一、创建 QMainWindow 组件 1. 创建工具栏 2. 创建停靠窗口 3. 设置状态栏 4. 设置中央窗口部件 二、QMainWindow 的主要方法 1. addToolBar() 2. addDockWidget() 3. setStatusBar() 4. setCentralWidget() 5. menuBar() 6. saveState() 和 restoreState() 三、QMainWind…...
《海丰县蔡氏简介》前言
《海丰县蔡氏简介》前言 蔡惠进主编 汕尾市海陆丰蔡姓祖先基本是福建人, 在宋朝时迁至海丰, 因受潮汕文化、 客家文化、 广府文化、 政治归属等系列因素影响, 形成了闽南人一 种新的文化, 既有传统的闽南文化, 又有潮汕…...
深入探索Vue 3组合式API
深入探索Vue 3组合式API 深入探索Vue 3组合式API一、组合式API诞生背景1.1 Options API的局限性1.2 设计目标二、核心概念解析2.1 setup() 函数:组合式API的基石2.2 响应式系统:重新定义数据驱动2.3 生命周期:全新的接入方式2.4 响应式原理探…...
获取 ARM Cortex - M 系列处理器中 PRIMASK 寄存器的值
第一种实现(纯汇编形式) __ASM uint32_t __get_PRIMASK(void) {mrs r0, primaskbx lr }代码分析 __ASM 关键字:这通常是特定编译器(如 ARM GCC 等)用于嵌入汇编代码的指示符。它告诉编译器下面的代码是汇编代码。mrs …...
使用deepseek写一个单击,双击和长按的检测函数
DeepSeek好火,注册试用一下,感觉和chatgpt o1差别不大,唯一的问题就是追多几次就崩溃了,再问不下去了。以下是测试结果。 提问: 请使用c语言写一个函数,输入参数是是为: A为当前的输入量&am…...
MySQL面经
1.范式 第一范式:每一列都不能再拆分 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不是主键的一部分 第三范式:在第二范式的基础上,非主键列只依赖于主键列,而不依赖于其他非主键…...
【C++】P1765 手机
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯问题描述题目内容示例: 键盘布局 💯我的做法思路问题与优化我的代码实现分析与问题 💯老师的做法思路老师的代码实现分析优点 …...
MyBatis-Plus速成指南:简化你的数据库操作流程
简介: MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatsi-Plus 提供了通用的 Mapper 和 Service,可以不编写任何 SQL 语句的前提下,快速的实现单表的增…...
DeepSeek超越ChatGPT的能力及部分核心原理
DeepSeek超越ChatGPT的能力及部分核心原理 目录 DeepSeek超越ChatGPT的能力及部分核心原理超越ChatGPT的能力核心原理超越ChatGPT的能力 推理计算能力更强:在复杂的数学计算、法律文件审查等任务中,DeepSeek的推理能力可媲美甚至超越部分国际顶尖AI模型,包括ChatGPT。例如在…...
优选算法的灵动之章:双指针专题(一)
个人主页:手握风云 专栏:算法 目录 一、双指针算法思想 二、算法题精讲 2.1. 查找总价格为目标值的两个商品 2.2. 盛最多水的容器 编辑 2.3. 移动零 2.4. 有效的三角形个数 一、双指针算法思想 双指针算法主要用于处理数组、链表等线性数据结构…...
作业day4
请实现一个终端的功能,注意需要带有cd功能 typedef struct sockaddr_in addr_in_t; typedef struct sockaddr addr_t; typedef struct sockaddr_un addr_un_t; char *mygets(char* s,int size){char* res fgets(s,size,stdin);int len strlen(s);if(s[len-1] \n)…...
python日志处理logging
python日志处理logging 在项目开发中,日志信息是程序中必不可少的组成部分。每一种语言都有相应的日志模块,如java中log4j,而python中是通过logging模块来提供日志功能。 日志要哪些本质功能? 在分享日志logging模块之前&#…...
开发板目录 /usr/lib/fonts/ 中的字体文件 msyh.ttc 的介绍【微软雅黑(Microsoft YaHei)】
本文是博文 https://blog.csdn.net/wenhao_ir/article/details/145433648 的延伸扩展。 本文是博文 https://blog.csdn.net/wenhao_ir/article/details/145433648 的延伸扩展。 问:运行 ls /usr/lib/fonts/ 发现有一个名叫 msyh.ttc 的字体文件,能介绍…...
浅谈《图解HTTP》
感悟 滑至尾页的那一刻,内心突兀的涌来一阵畅快的感觉。如果说从前对互联网只是懵懵懂懂,但此刻却觉得她是如此清晰而可爱的呈现在哪里。 介绍中说,《图解HTTP》适合作为第一本网络协议书。确实,它就像一座桥梁,连接…...
为什么在网站上复制的图片不能直接粘贴到本地的原因及解决方法
一、图片的来源与格式 ①图片链接:许多网站展示的图片并不是直接嵌入在页面中的,而是通过URL链接到远程服务器上的图片。当你复制网站上的图片时,实际上复制的是图片的URL地址,而不是图片的本地文件。 ②动态加载:有些网站使用JavaScript或其他技术动态加载图片,可能通…...
conda配置channel
你收到 CondaKeyError: channels: value https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main not present in config 错误是因为该镜像源(https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main)可能没有被正确添加到 Conda 的配置文件中&…...
Javaweb学习之Mysql(Day5)
(一)Mysql概述 (1)MYSQL通用语法 SQL语句可以单行或多行书写,以分号结尾。 SQL语句可以使用空格/缩进来增强语句的可读性(即,空格和缩进不影响代码的执行)。 MySQL数据库的SQL语句不区分大小写。 注释: 1. 单行注释: -- 注释内容 或 # 注释内容 (MySQL 特有 …...
61.异步编程1 C#例子 WPF例子
和普通的任务绑定不太相同的部分如下: public MainWindowViewModel(){FetchUserInfoCommand new RelayCommand(async (param) > await FetchUserInfoAsync());}private async Task FetchUserInfoAsync(){// 模拟异步操作,比如网络请求await Task.Del…...
自定义数据集 使用scikit-learn中svm的包实现svm分类
引入必要的库 import numpy as np from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import accuracy_score, classification_report 生成自定义数据集 X, y ma…...
Qt跨屏窗口的一个Bug及解决方案
如果我们希望一个窗口覆盖用户的整个桌面,此时就要考虑用户有多个屏幕的场景(此窗口要横跨多个屏幕),由于每个屏幕的分辨率和缩放比例可能是不同的,Qt底层在为此窗口设置缩放比例(DevicePixelRatio…...
Python零基础快速入门课程,自带在线运行环境
Python零基础入门教程 编译器地址: Python在线编译器 课程目录: Python简介 Python是一种简单易学、功能强大的编程语言。它具有高效的数据结构,能够简单有效地实现面向对象编程。 Python的优点: 简单易学,所有人都可以零基础入门开源免费,有丰富的免费学习课程跨平台…...
Java 数据库连接池:HikariCP 与 Druid 的对比
Java 数据库连接池:HikariCP 与 Druid 的对比 数据库连接池:HikariCP 1. 卓越的性能表现 HikariCP 在数据库连接池领域以其卓越的性能脱颖而出。 其字节码经过精心优化,减少了不必要的开销,使得连接获取和释放的速度极快。 在…...
51单片机 04 编程
一、模块化编程 .c文件:函数、变量的定义 .h文件:可被外部调用的函数、变量的声明 函数在调用前必须有定义或者声明。 预编译:以#开头,作用是在真正的编译开始之前,对代码做一些处理(预编译)…...
基于Springboot框架的学术期刊遴选服务-项目演示
项目介绍 本课程演示的是一款 基于Javaweb的水果超市管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项目附…...
Vite:现代前端开发的利器
Vite:现代前端开发的利器 随着前端技术的快速发展,开发工具也在不断迭代和优化。Vite 是近年来备受关注的一款前端构建工具,它以极快的冷启动速度和高效的开发体验赢得了开发者的青睐。本文将详细介绍 Vite 的特点、工作原理以及它为何成为现…...
[蓝桥杯 2024 省 B] 好数
[蓝桥杯 2024 省 B] 好数 题目描述 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是奇数,偶数位(十位、千位、十万位……)上的数字是偶数,我们就称之为“好数”。 …...
基于Flask的全国星巴克门店可视化分析系统的设计与实现
【FLask】基于Flask的全国星巴克门店可视化分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统采用Python作为主要开发语言,结合Flask框架进行后端开发&…...
2502,索界面3
原文 SonicUI,你从未见过的方便GUI引擎-源码 介绍 SonicUI是基于原生GDIAPI的GUI引擎.它提供了几个简单的UI组件来实现高效的UI效果,如自绘按钮,不规则窗口,动画,窗口中的网径和图像操作方法. 主要目的是用最少的代码来达到最佳效果. 背景 周知,UI开发一般重复用无趣.因此…...
基础笔记|splice()的用法
一、三种用法 splice(index, 0, element) 插入 元素,不删除任何元素。splice(index, deleteCount) 删除 deleteCount 个元素。splice(index, deleteCount, element1, element2, ...) 替换 元素,即删除 deleteCount 个元素,同时插入新的元素。…...
电商项目高级篇09-检索服务
电商项目高级篇09-检索服务 1、环境搭建1.1、前端静态文件准备1.2、search服务引入模版引擎1.3、index.html页面复制到templates文件夹下1.4、模仿product项目,引入名称空间1.5、动静分离,静态资源路径位置替换1.6、将1.1的静态资源放到nginx目录下1.7、…...
如何使用 DeepSeek 和 Dexscreener 构建免费的 AI 加密交易机器人?
我使用DeepSeek AI和Dexscreener API构建的一个简单的 AI 加密交易机器人实现了这一目标。在本文中,我将逐步指导您如何构建像我一样的机器人。 DeepSeek 最近发布了R1,这是一种先进的 AI 模型。您可以将其视为 ChatGPT 的免费开源版本,但增加…...
Meta财报解读:营收超预期,用户增长放缓,AI与元宇宙仍是烧钱重点
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
2024美团秋招硬件开发笔试真题及答案解析
目录 一、单选题 1、C语言中变量有一系列的命名规则,下列选项中,属于错误的C语言变量命名规则的是() 2、以下 C 代码的运行结果是什么() 3、执行下面程序,正确的输出是() 4、以下不正确的定义语句是() 5、执行语句for (i = 2; i++ < 7;);后, i 的值变为()…...
利用Vue编写一个“计数器”
目录 一、利用Vue编写一个“计数器”的操作方法:二、html文件相关源代码三、CSS文件相关源代码四、代码执行效果展示如下 一、利用Vue编写一个“计数器”的操作方法: 1、data中定义计数器的相关数据,如num、min、max。 2、methods中添加计数…...
vscode搭建git
vscode搭建git 一、安装git二、vscode上搭建git(1) 先创建本地仓库再上传到远程仓库,远程仓库名是根据本地仓库名一致(2) 先创建远程仓库,再将本地仓库上传到指定远程仓库 一、安装git 网络教程很多,在此就不赘述了 参考:git安装…...
Dijkstra算法解析
Dijkstra算法,用于求解图中从一个起点到其他所有节点的最短路径。解决单源最短路径问题的有效方法。 条件 有向 带权路径 时间复杂度 O(n平方) 方法步骤 1 把图上的点分为两个集合 要求的起点 和除了起点之外的点 。能直达的写上权值 不…...
本地部署DeepSeek教程(Mac版本)
第一步、下载 Ollama 官网地址:Ollama 点击 Download 下载 我这里是 macOS 环境 以 macOS 环境为主 下载完成后是一个压缩包,双击解压之后移到应用程序: 打开后会提示你到命令行中运行一下命令,附上截图: 若遇…...
蓝桥杯算法笔记|差分学习
!前情回顾 前缀和18437蓝桥账户中心 练习代码: #include <iostream> using namespace std; int main() {// 请在此输入您的代码int n,q;cin>>n>>q;int a[n];for(int i0;i<n;i){cin>>a[i];}int sum[n];sum[0]a[0];for(int …...
一文速览DeepSeek-R1的本地部署——可联网、可实现本地知识库问答:包括671B满血版和各个蒸馏版的部署
前言 自从deepseek R1发布之后「详见《一文速览DeepSeek R1:如何通过纯RL训练大模型的推理能力以比肩甚至超越OpenAI o1(含Kimi K1.5的解读)》」,deepseek便爆火 爆火以后便应了“人红是非多”那句话,不但遭受各种大规模攻击,即便…...
【Redis】主从模式,哨兵,集群
主从复制 单点问题: 在分布式系统中,如果某个服务器程序,只有一个节点(也就是一个物理服务器)来部署这个服务器程序的话,那么可能会出现以下问题: 1.可用性问题:如果这个机器挂了…...
结构体排序 C++ 蓝桥杯
成绩排序 #include<iostream> #include<algorithm> using namespace std; struct stu {string name;//名字int grade;//成绩 }; stu a[30]; bool cmp(stu l, stu r) {if (l.grade ! r.grade) return l.grade > r.grade;return l.name < r.name; } int main()…...
【通俗易懂说模型】线性回归(附深度学习、机器学习发展史)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …...
Haproxy+keepalived高可用集群,haproxy宕机的解决方案
Haproxykeepalived高可用集群,允许keepalived宕机,允许后端真实服务器宕机,但是不允许haproxy宕机, 所以下面就是解决方案 keepalived配置高可用检测脚本 ,master和backup都要添加 配置脚本 # vim /etc/keepalived…...
python学opencv|读取图像(五十六)使用cv2.GaussianBlur()函数实现图像像素高斯滤波处理
【1】引言 前序学习了均值滤波和中值滤波,对图像的滤波处理有了基础认知,相关文章链接为: python学opencv|读取图像(五十四)使用cv2.blur()函数实现图像像素均值处理-CSDN博客 python学opencv|读取图像(…...
电梯系统的UML文档13
5.2.6 CarPositionControl 的状态图 图 24: CarPositionControl 的状态图 5.2.7 Dispatcher 的状态图 图 25: Dispatcher 的状态图 5.3 填补从需求到状态图鸿沟的实用方法 状态图能对类的行为,一个用例,或系统整体建模。在本文中,状态图…...
CSDN原力值提升秘籍:解锁社区活跃新姿势
在 CSDN 这个技术交流的大舞台上,原力值不仅是个人活跃度的象征,更是开启更多权益与福利的钥匙。最近,我出于自身需求,一头扎进了提升原力值的研究中,经过多方探索与资料整理,现在就迫不及待地把这些干货分…...
互联网行业常用12个数据分析指标和八大模型
本文目录 前言 一、互联网线上业务数据分析的12个指标 1. 用户数据(4个) (1) 存量(DAU/MAU) (2) 新增用户 (3) 健康程度(留存率) (4) 渠道来源 2. 用户行为数据(4个) (1) 次数/频率…...
gltf工具
gltf 在线工具 ONLINE 3D VIEWER 3dviewer.netgltf-viewer cos.3dzhanting.cnviewer www.niushifu.topglTF Viewer gltf-viewer.donmccurdy.comGLTF 在线编辑器 gltf.nsdt.cloudgltfeditor...