【UE】UEC++委托代理

【UE】UEC++委托代理 

一、委托的声明与定义

#pragma once#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "DelegateGameMode.generated.h"//
// Declare DECLARE_DELEGATE
//
DECLARE_DELEGATE(FDeclareDelegate_00);
DECLARE_DELEGATE_OneParam(FDeclareDelegate_01, bool);
DECLARE_DELEGATE_TwoParams(FDeclareDelegate_02, bool, int32);
DECLARE_DELEGATE_RetVal(bool, FDeclareDelegate_03);
DECLARE_DELEGATE_RetVal_OneParam(bool, FDeclareDelegate_04, bool);//
// Declare DECLARE_MULTICAST_DELEGATE
//
DECLARE_MULTICAST_DELEGATE(FDeclareMulticastDelegate_00);
DECLARE_MULTICAST_DELEGATE_OneParam(FDeclareMulticastDelegate_01, int32);//
// Declare DECLARE_DYNAMIC_DELEGATE
//
DECLARE_DYNAMIC_DELEGATE(FDeclareDynamicDelegate_00);
DECLARE_DYNAMIC_DELEGATE_OneParam(FDeclareDynamicDelegate_01, int32, iValue);
DECLARE_DYNAMIC_DELEGATE_RetVal(bool, FDeclareDynamicDelegate_02);
DECLARE_DYNAMIC_DELEGATE_RetVal_OneParam(bool, FDeclareDynamicDelegate_03, int32, iValue);//
// Declare DECLARE_DYNAMIC_MULTICAST_DELEGATE
//
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FDeclareDynamicMulticastDelegate_00);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDeclareDynamicMulticastDelegate_01, int32, iValue);UCLASS()
class DELEGATE_API ADelegateGameMode : public AGameModeBase
{GENERATED_BODY()
public://// Define DECLARE_DELEGATE//FDeclareDelegate_00 DeclareDelegate_00;FDeclareDelegate_01 DeclareDelegate_01;FDeclareDelegate_02 DeclareDelegate_02;FDeclareDelegate_03 DeclareDelegate_03;FDeclareDelegate_04 DeclareDelegate_04;//// Define DECLARE_MULTICAST_DELEGATE//FDeclareMulticastDelegate_00 DeclareMulticastDelegate_00;FDeclareMulticastDelegate_01 DeclareMulticastDelegate_01;//// Define DECLARE_DYNAMIC_DELEGATE//FDeclareDynamicDelegate_00 DeclareDynamicDelegate_00;FDeclareDynamicDelegate_01 DeclareDynamicDelegate_01;FDeclareDynamicDelegate_02 DeclareDynamicDelegate_02;FDeclareDynamicDelegate_03 DeclareDynamicDelegate_03;//// Define DECLARE_DYNAMIC_MULTICAST_DELEGATE//FDeclareDynamicMulticastDelegate_00 DeclareDynamicMulticastDelegate_00;FDeclareDynamicMulticastDelegate_01 DeclareDynamicMulticastDelegate_01;
};

二、单播绑定与解绑

#pragma once#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "DeclareDelegate.generated.h"UCLASS()
class DELEGATE_API ADeclareDelegate : public AActor
{GENERATED_BODY()
public:	ADeclareDelegate();virtual void Tick(float DeltaTime) override;
protected:virtual void BeginPlay() override;virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
public:UFUNCTION()void BindDelegate();UFUNCTION()void UnBindDelegate();UFUNCTION()void FunNoParam();UFUNCTION()void FunOneParam(bool bValue);UFUNCTION()void FunTwoParam(bool bValue, int32 iValue);UFUNCTION()bool FunRetValNoParam();UFUNCTION()bool FunRetValOneParam(bool bValue);
};
#include "DeclareDelegate.h"#include "Delegate/GameMode/DelegateGameMode.h"
#include "Kismet/GameplayStatics.h"ADeclareDelegate::ADeclareDelegate()
{PrimaryActorTick.bCanEverTick = false;
}void ADeclareDelegate::Tick(float DeltaTime)
{Super::Tick(DeltaTime);
}void ADeclareDelegate::BeginPlay()
{Super::BeginPlay();BindDelegate();
}void ADeclareDelegate::EndPlay(const EEndPlayReason::Type EndPlayReason)
{Super::EndPlay(EndPlayReason);UnBindDelegate();
}void ADeclareDelegate::BindDelegate()
{UE_LOG(LogTemp,Log,TEXT("DeclareDelegateActor::BindDegelate"))if(GetWorld()){ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));DelegateGameMode->DeclareDelegate_00.BindUObject(this, &ThisClass::FunNoParam);DelegateGameMode->DeclareDelegate_01.BindUFunction(this, "FunOneParam");DelegateGameMode->DeclareDelegate_02.BindUObject(this, &ThisClass::FunTwoParam);DelegateGameMode->DeclareDelegate_03.BindUObject(this, &ThisClass::FunRetValNoParam);DelegateGameMode->DeclareDelegate_04.BindUFunction(this, "FunRetValOneParam");}
}void ADeclareDelegate::UnBindDelegate()
{UE_LOG(LogTemp,Log,TEXT("DeclareDelegateActor::UnBindDegelate"))if(GetWorld()){ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));DelegateGameMode->DeclareDelegate_00.Unbind();DelegateGameMode->DeclareDelegate_01.Unbind();DelegateGameMode->DeclareDelegate_02.Unbind();DelegateGameMode->DeclareDelegate_03.Unbind();DelegateGameMode->DeclareDelegate_04.Unbind();}
}void ADeclareDelegate::FunNoParam()
{UE_LOG(LogTemp,Log,TEXT("DeclareDelegateActor::FunNoParam"))
}void ADeclareDelegate::FunOneParam(bool bValue)
{UE_LOG(LogTemp,Log,TEXT("DeclareDelegateActor::FunOneParam"))
}void ADeclareDelegate::FunTwoParam(bool bValue, int32 iValue)
{UE_LOG(LogTemp,Log,TEXT("DeclareDelegateActor::FunTwoParam"))
}bool ADeclareDelegate::FunRetValNoParam()
{UE_LOG(LogTemp,Log,TEXT("DeclareDelegateActor::FunRetValNoParam"))return false;
}bool ADeclareDelegate::FunRetValOneParam(bool bValue)
{UE_LOG(LogTemp,Log,TEXT("DeclareDelegateActor::FunRetValOneParam"))return bValue;
}

三、多播绑定与解绑

#pragma once#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "DeclareMulticastDelegate.generated.h"UCLASS()
class DELEGATE_API ADeclareMulticastDelegate : public AActor
{GENERATED_BODY()public:	ADeclareMulticastDelegate();virtual void Tick(float DeltaTime) override;
protected:virtual void BeginPlay() override;virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
public:UFUNCTION()void BindDelegate();UFUNCTION()void UnBindDelegate();UFUNCTION()void FunNoParam_One();UFUNCTION()void FunNoParam_Two();UFUNCTION()void FunOneParam_One(int32 iValue);UFUNCTION()void FunOneParam_Two(int32 iValue);
private:FDelegateHandle DelegateHandle;TArray<FDelegateHandle> DelegateHandles;
};
#include "DeclareMulticastDelegate.h"#include "Delegate/GameMode/DelegateGameMode.h"
#include "Kismet/GameplayStatics.h"ADeclareMulticastDelegate::ADeclareMulticastDelegate()
{PrimaryActorTick.bCanEverTick = false;
}void ADeclareMulticastDelegate::Tick(float DeltaTime)
{Super::Tick(DeltaTime);
}void ADeclareMulticastDelegate::BeginPlay()
{Super::BeginPlay();BindDelegate();
}void ADeclareMulticastDelegate::EndPlay(const EEndPlayReason::Type EndPlayReason)
{Super::EndPlay(EndPlayReason);UnBindDelegate();
}void ADeclareMulticastDelegate::BindDelegate()
{UE_LOG(LogTemp,Log,TEXT("DeclareMulticastDelegateActor::BindDegelate"))if(GetWorld()){ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));DelegateGameMode->DeclareMulticastDelegate_00.AddUObject(this, &ThisClass::FunNoParam_One);DelegateHandle = DelegateGameMode->DeclareMulticastDelegate_00.AddUFunction(this, "FunNoParam_Two");DelegateHandles.Add(DelegateGameMode->DeclareMulticastDelegate_01.AddUObject(this, &ThisClass::FunOneParam_One));DelegateHandles.Add(DelegateGameMode->DeclareMulticastDelegate_01.AddUFunction(this, "FunOneParam_Two"));}
}void ADeclareMulticastDelegate::UnBindDelegate()
{UE_LOG(LogTemp,Log,TEXT("DeclareMulticastDelegateActor::UnBindDelegate"))if(GetWorld()){ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));DelegateGameMode->DeclareMulticastDelegate_00.RemoveAll(this);for(FDelegateHandle Handle : DelegateHandles){DelegateGameMode->DeclareMulticastDelegate_01.Remove(Handle);}}
}void ADeclareMulticastDelegate::FunNoParam_One()
{UE_LOG(LogTemp,Log,TEXT("DeclareMulticastDelegateActor::FunNoParam_One"))
}void ADeclareMulticastDelegate::FunNoParam_Two()
{UE_LOG(LogTemp,Log,TEXT("DeclareMulticastDelegateActor::FunNoParam_Two"))if(GetWorld()){ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));DelegateGameMode->DeclareMulticastDelegate_00.Remove(DelegateHandle);}
}void ADeclareMulticastDelegate::FunOneParam_One(int32 iValue)
{UE_LOG(LogTemp,Log,TEXT("DeclareMulticastDelegateActor::FunOneParam_One"))
}void ADeclareMulticastDelegate::FunOneParam_Two(int32 iValue)
{UE_LOG(LogTemp,Log,TEXT("DeclareMulticastDelegateActor::FunOneParam_Two"))
}

四、动态单播绑定与解绑

#pragma once#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "DeclareDynamicDelegate.generated.h"UCLASS()
class DELEGATE_API ADeclareDynamicDelegate : public AActor
{GENERATED_BODY()
public:	ADeclareDynamicDelegate();virtual void Tick(float DeltaTime) override;
protected:virtual void BeginPlay() override;virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
public:	UFUNCTION()void BindDelegate();UFUNCTION()void UnBindDelegate();UFUNCTION()void FunNoParam();UFUNCTION()void FunOneParam(int32 iValue);UFUNCTION()bool FunRetValNoParam();UFUNCTION()bool FunRetValOneParam(int32 iValue);
};
#include "DeclareDynamicDelegate.h"#include "Delegate/GameMode/DelegateGameMode.h"
#include "Kismet/GameplayStatics.h"ADeclareDynamicDelegate::ADeclareDynamicDelegate()
{PrimaryActorTick.bCanEverTick = false;
}void ADeclareDynamicDelegate::Tick(float DeltaTime)
{Super::Tick(DeltaTime);
}void ADeclareDynamicDelegate::BeginPlay()
{Super::BeginPlay();BindDelegate();
}void ADeclareDynamicDelegate::EndPlay(const EEndPlayReason::Type EndPlayReason)
{Super::EndPlay(EndPlayReason);UnBindDelegate();
}void ADeclareDynamicDelegate::BindDelegate()
{UE_LOG(LogTemp,Log,TEXT("DeclareDynamicDelegate::BindDelegate"))if(GetWorld()){ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));DelegateGameMode->DeclareDynamicDelegate_00.BindDynamic(this, &ThisClass::FunNoParam);DelegateGameMode->DeclareDynamicDelegate_01.BindUFunction(this, "FunOneParam");DelegateGameMode->DeclareDynamicDelegate_02.BindDynamic(this, &ThisClass::FunRetValNoParam);DelegateGameMode->DeclareDynamicDelegate_03.BindUFunction(this, "FunRetValOneParam");}
}void ADeclareDynamicDelegate::UnBindDelegate()
{UE_LOG(LogTemp,Log,TEXT("DeclareDynamicDelegate::UnBindDelegate"))if(GetWorld()){ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));DelegateGameMode->DeclareDynamicDelegate_00.Clear();DelegateGameMode->DeclareDynamicDelegate_01.Unbind();DelegateGameMode->DeclareDynamicDelegate_02.Clear();DelegateGameMode->DeclareDynamicDelegate_03.Unbind();}
}void ADeclareDynamicDelegate::FunNoParam()
{UE_LOG(LogTemp,Log,TEXT("DeclareDynamicDelegate::FunNoParam"))
}void ADeclareDynamicDelegate::FunOneParam(int32 iValue)
{UE_LOG(LogTemp,Log,TEXT("DeclareDynamicDelegate::FunOneParam"))
}bool ADeclareDynamicDelegate::FunRetValNoParam()
{UE_LOG(LogTemp,Log,TEXT("DeclareDynamicDelegate::FunRetValNoParam"))return false;
}bool ADeclareDynamicDelegate::FunRetValOneParam(int32 iValue)
{UE_LOG(LogTemp,Log,TEXT("DeclareDynamicDelegate::FunRetValOneParam"))return false;
}

五、动态多播绑定与解绑

#pragma once#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "DeclareDynamicMulticastDelegate.generated.h"UCLASS()
class DELEGATE_API ADeclareDynamicMulticastDelegate : public AActor
{GENERATED_BODY()
public:	ADeclareDynamicMulticastDelegate();virtual void Tick(float DeltaTime) override;
protected:virtual void BeginPlay() override;virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
public:UFUNCTION()void BindDelegate();UFUNCTION()void UnBindDelegate();UFUNCTION()void FunNoParam_One();UFUNCTION()void FunNoParam_Two();UFUNCTION()void FunOneParam_One(int32 iValue);UFUNCTION()void FunOneParam_Two(int32 iValue);
};
#include "DeclareDynamicMulticastDelegate.h"#include "Delegate/GameMode/DelegateGameMode.h"
#include "Kismet/GameplayStatics.h"ADeclareDynamicMulticastDelegate::ADeclareDynamicMulticastDelegate()
{PrimaryActorTick.bCanEverTick = false;
}void ADeclareDynamicMulticastDelegate::Tick(float DeltaTime)
{Super::Tick(DeltaTime);
}void ADeclareDynamicMulticastDelegate::BeginPlay()
{Super::BeginPlay();BindDelegate();
}void ADeclareDynamicMulticastDelegate::EndPlay(const EEndPlayReason::Type EndPlayReason)
{Super::EndPlay(EndPlayReason);UnBindDelegate();
}void ADeclareDynamicMulticastDelegate::BindDelegate()
{UE_LOG(LogTemp,Log,TEXT("DeclareDynamicMulticastDelegate::BindDelegate"))if(GetWorld()){ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));DelegateGameMode->DeclareDynamicMulticastDelegate_00.AddDynamic(this, &ThisClass::FunNoParam_One);DelegateGameMode->DeclareDynamicMulticastDelegate_00.AddUniqueDynamic(this, &ThisClass::FunNoParam_Two);DelegateGameMode->DeclareDynamicMulticastDelegate_01.AddDynamic(this, &ThisClass::FunOneParam_One);DelegateGameMode->DeclareDynamicMulticastDelegate_01.AddUniqueDynamic(this, &ThisClass::FunOneParam_Two);}
}void ADeclareDynamicMulticastDelegate::UnBindDelegate()
{UE_LOG(LogTemp,Log,TEXT("DeclareDynamicMulticastDelegate::UnBindDelegate"))if(GetWorld()){ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));DelegateGameMode->DeclareDynamicMulticastDelegate_00.Remove(this, "FunNoParam_One");DelegateGameMode->DeclareDynamicMulticastDelegate_00.RemoveDynamic(this, &ThisClass::FunNoParam_Two);DelegateGameMode->DeclareDynamicMulticastDelegate_01.RemoveAll(this);}
}void ADeclareDynamicMulticastDelegate::FunNoParam_One()
{UE_LOG(LogTemp,Log,TEXT("DeclareDynamicMulticastDelegate::FunNoParam_One"))
}void ADeclareDynamicMulticastDelegate::FunNoParam_Two()
{UE_LOG(LogTemp,Log,TEXT("DeclareDynamicMulticastDelegate::FunNoParam_Two"))
}void ADeclareDynamicMulticastDelegate::FunOneParam_One(int32 iValue)
{UE_LOG(LogTemp,Log,TEXT("DeclareDynamicMulticastDelegate::FunOneParam_One"))
}void ADeclareDynamicMulticastDelegate::FunOneParam_Two(int32 iValue)
{UE_LOG(LogTemp,Log,TEXT("DeclareDynamicMulticastDelegate::FunOneParam_Two"))
}

六、委托的调用

#pragma once#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "DelegateController.generated.h"UCLASS()
class DELEGATE_API ADelegateController : public APlayerController
{GENERATED_BODY()
public:virtual void SetupInputComponent() override;////	Call Declare Delegate//UFUNCTION()void CallDeclareDelegate();////	Call Declare Multicast Delegate//UFUNCTION()void CallDeclareMulticastDelegate();////	Call Declare Dynamic Delegate//UFUNCTION()void CallDeclareDynamicDelegate();////	Call Declare Dynamic Multicast Delegate//UFUNCTION()void CallDeclareDynamicMulticastDelegate();
};
#include "DelegateController.h"#include "DelegateGameMode.h"
#include "Kismet/GameplayStatics.h"void ADelegateController::SetupInputComponent()
{Super::SetupInputComponent();InputComponent->BindAction("DeclareDelegate", IE_Pressed, this, &ThisClass::CallDeclareDelegate);InputComponent->BindAction("DeclareMulticastDelegate", IE_Pressed, this, &ThisClass::CallDeclareMulticastDelegate);InputComponent->BindAction("DeclareDynamicDelegate", IE_Pressed, this, &ThisClass::CallDeclareDynamicDelegate);InputComponent->BindAction("DeclareDynamicMulticastDelegate", IE_Pressed, this, &ThisClass::CallDeclareDynamicMulticastDelegate);
}void ADelegateController::CallDeclareDelegate()
{if(GetWorld() == nullptr) return;const ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));if(DelegateGameMode == nullptr) return;if(DelegateGameMode->DeclareDelegate_00.IsBound()){DelegateGameMode->DeclareDelegate_00.Execute();}DelegateGameMode->DeclareDelegate_01.ExecuteIfBound(true);DelegateGameMode->DeclareDelegate_02.ExecuteIfBound(true, 11);if(DelegateGameMode->DeclareDelegate_03.IsBound()){bool bValue = DelegateGameMode->DeclareDelegate_03.Execute();}if(DelegateGameMode->DeclareDelegate_04.IsBound()){bool bValue = DelegateGameMode->DeclareDelegate_04.Execute(true);}
}void ADelegateController::CallDeclareMulticastDelegate()
{if(GetWorld() == nullptr) return;const ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));if(DelegateGameMode == nullptr) return;if(DelegateGameMode->DeclareMulticastDelegate_00.IsBound()){DelegateGameMode->DeclareMulticastDelegate_00.Broadcast();}if(DelegateGameMode->DeclareMulticastDelegate_01.IsBound()){DelegateGameMode->DeclareMulticastDelegate_01.Broadcast(11);}
}void ADelegateController::CallDeclareDynamicDelegate()
{if(GetWorld() == nullptr) return;const ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));if(DelegateGameMode == nullptr) return;if(DelegateGameMode->DeclareDynamicDelegate_00.IsBound()){DelegateGameMode->DeclareDynamicDelegate_00.Execute();}DelegateGameMode->DeclareDynamicDelegate_01.ExecuteIfBound(11);if(DelegateGameMode->DeclareDynamicDelegate_02.IsBound()){bool bValue = DelegateGameMode->DeclareDynamicDelegate_02.Execute();}if(DelegateGameMode->DeclareDynamicDelegate_03.IsBound()){bool bValue = DelegateGameMode->DeclareDynamicDelegate_03.Execute(11);}
}void ADelegateController::CallDeclareDynamicMulticastDelegate()
{if(GetWorld() == nullptr) return;const ADelegateGameMode* DelegateGameMode = Cast<ADelegateGameMode>(UGameplayStatics::GetGameMode(GetWorld()));if(DelegateGameMode == nullptr) return;if(DelegateGameMode->DeclareDynamicMulticastDelegate_00.IsBound()){DelegateGameMode->DeclareDynamicMulticastDelegate_00.Broadcast();}if(DelegateGameMode->DeclareDynamicMulticastDelegate_01.IsBound()){DelegateGameMode->DeclareDynamicMulticastDelegate_01.Broadcast(11);}
}

七、运行结果

1、运行开始

2、调用单播

3、调用多播

再次调用

4、调用动态单播

5、调用动态多播

6、运行结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/236533.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

子类出现和父类同名的成员,子类如何访问父类的同名成员?

一. 子类访问子类同名的成员&#xff0c;直接访问即可。 #include <iostream> using namespace std;class Base { public:Base(int age 0) : m_age(age) {}int get_age() {return m_age;}static int get_counter() {return ms_counter;}int m_age;static int ms_counte…

回顾Django的第二天

1.http 1.1http请求协议与响应协议 1.1.1简介 http协议包含由浏览器发送数据到服务器需要遵循的请求协议与服务器发送数据到浏览器需要遵循的请求协议。用于HTTP协议交互的信被为HTTP报文。请求端(客户端)的HTTP报文 做请求报文,响应端(服务器端)的 做响应报文。HTTP报文本身…

中国版的 GPTs:InsCode AI 生成应用

前言 在上一篇文章 《InsCode&#xff1a;这可能是下一代应用开发平台&#xff1f;》中&#xff0c;我们介绍了一个新的应用开发平台 InsCode&#xff0c;它是基于云原生开发环境 云 IDE AI 辅助编程的一站式在线开发平台。 最近&#xff0c;InsCode 又推出了另一种全新的开…

一、Linux系统概述和安装

目录 1、Linux系统概述 2、Linux发行版介绍 3、虚拟机软件介绍 4、VMware安装 5、Linux系统&#xff08;CentOS&#xff09;系统安装 6、登录并查看IP地址 7、Linux连接工具CRT使用 7.1 概述 7.2 CRT安装 7.3 使用步骤 7.4 文件上传 8、Linux的快照 8.1 作用 8.2…

新手村之SQL——分组与子查询

1.GROUP BY GROUP BY 函数就是 SQL 中用来实现分组的函数&#xff0c;其用于结合聚合函数&#xff0c;能根据给定数据列的每个成员对查询结果进行分组统计&#xff0c;最终得到一个分组汇总表。 mysql> SELECT country, COUNT(country) AS teacher_count-> FROM teacher…

数据爬取+可视化实战_告白气球_词云展示----酷狗音乐

一、前言 歌词上做文本分析&#xff0c;数据存储在网页上&#xff0c;需要爬取数据下来&#xff0c;词云展示在工作中也变得日益重要&#xff0c;接下来将数据爬虫与可视化结合起来&#xff0c;做个词云展示案例。 二、代码 # -*- coding:utf-8 -*- # 酷狗音乐 通过获取每首歌…

学习笔记三十五:Ingress-controller高可用

Ingress-controller高可用 Ingress-controller高可用特别注意&#xff1a; 通过keepalivednginx实现ingress-nginx-controller高可用安装nginx主备&#xff1a;修改nginx配置文件。主备一样keepalive配置主keepalived备keepalivek8snode1和k8snode2启动服务测试vip是否绑定成功…

python实现two way ANOVA

文章目录 目的&#xff1a;用python实现two way ANOVA 双因素方差分析1. python代码实现1 加载python库2 加载数据3 统计样本重复次数&#xff0c;均值和方差&#xff0c;绘制箱线图4 查看people和group是否存在交互效应5 模型拟合与Two Way ANOVA&#xff1a;双因素方差分析6 …

Docker 下载加速

文章目录 方式1&#xff1a;使用 网易数帆容器镜像仓库进行下载。方式2&#xff1a;配置阿里云加速。方式3&#xff1a;方式4&#xff1a;结尾注意 Docker下载加速的原理是&#xff0c;在拉取镜像时使用一个国内的镜像站点&#xff0c;该站点已经缓存了各个版本的官方 Docker 镜…

Redis的高可用模式

1. 什么是高可用&#xff1f; 高可用&#xff08;High Availability, HA&#xff09;是指在信息技术中确保系统、服务或应用程序在绝大多数时间内都是可操作和可访问的能力。这通常涉及以下几个关键方面&#xff1a; 最小化停机时间: 高可用系统的目标是减少因硬件故障、系统升…

Linux基本指令(中篇)

目录 8.cp指令&#xff08;重要&#xff09; 9.mv指令&#xff08;重要&#xff09;&#xff1a; 10.cat指令&#xff08;适合查看小文件内容&#xff09; 11.more指令&#xff08;适合查看大文件内容&#xff09; 12.less指令&#xff08;重要&#xff09; 13.head指令和…

IntelliJ IDEA安装使用教程

IntelliJ IDEA是一个流行的Java 集成开发环境&#xff08;IDE&#xff09;&#xff0c;由JetBrains公司开发。它是一款全功能的IDE&#xff0c;支持多种编程语言&#xff0c;如Java、Kotlin、Groovy、Scala、Python、JavaScript、HTML、CSS等等。IntelliJ IDEA 提供了高效的代码…