【UE】UE5 学习笔记

news2024/9/28 1:18:13

UE5 学习笔记(持续更新中)

界面

快捷键

快捷键描述
F定位关一卡对象:双击游戏对象名字或选游戏对象名字
鼠标中键移动视野
alt+鼠标左键移旋转视野
滑动鼠标滚轮缩放视野
alt+鼠标右键拖动鼠标缩放视野
鼠标左键移动鼠标前后漫游
WASD+鼠标右键自由漫游
漫游时滑动鼠标滚轮调节漫游速度
选中要克隆的对象,按住Alf键拖动克隆游戏对象
选中游戏对象,按END下落到平台
  1. 选中物体:
    定位关一卡对象:双击游戏对象名字或选游戏对象名字,按F
  2. 视野操作相关卡快捷键:
    移动视野:按住鼠标中键,移动鼠标
    旋转视野:按住鼠标右键移动鼠标或按住alt+鼠标左键移动鼠标
    缩放视野:滑动鼠标滚轮
    缩放视野2:按住alt+鼠标右键拖动鼠标
    前后漫游场景:按住鼠标左键移动鼠标
    自由漫游场景:按WASD+鼠标右键,移动鼠标
    调节漫游速度:在漫游时滑动鼠标滚轮
  3. 克隆游戏对象:选中要克隆的对象,按住Alf键,拖动任意轴实现拖动
  4. 下落到平台:选中游戏对象,按END

UI

  1. 创建UI控件蓝图:在内容浏览器中右键→ 用户界面(User interface)->控件蓝图(Widget Blveprint)
  2. UI编辑界面主要分为:工具栏、控件、层级面板、工作区、屏幕尺寸适配、属性栏、动画区

widget控件是使用

将UI控件显示到关卡

在默认情况下,UI控件蓝图不会渲染到关卡中,需要通过创建控件蓝图实现创建:

第一步:通过创建控件节点创建指定控件蓝图

第二步:通过添加到视口节点将控件蓝图显示到关卡

显示鼠标指针(Show Mouse Cursor)

在默认情况,当我们点击游戏区域后,会将鼠标隐藏,这样就就不能很好的操作UI,这时就需要默认显示鼠标指针来控制。

  • 在关卡蓝图中获取玩家控制器通过玩家控制器显示鼠标指针
  • 可以通过FlipFlop控制鼠标显示与隐藏

动态设置控件的值

  1. 通过变量获取控件修改
  2. 通过绑定创建函数修改

widget控件的类型

多格式文本块

多格式文本又称富文本,主要表述了在单-文本段中出现多种文本样式(字体,大小,颜色,格式)并且还可以掺杂图像内容

创建文本块数据表格;选择数据表格→RichTextStyleRow箭头第一行命名必须为Default。

使用示例 这是个<Red>多格</>的文本

自定义控件

我们自己创建控件也可以作为其他UI控件的子控件

自定义控件的步骤为:

  • 创建自定义控制蓝图
  • 设置控件与样式
  • 在其他U中,通过用户创建实现控件的使用

命名插槽(Named Slot)

当用户创建的UI成为其他UI的子控件时,默认情况下是不能拥有子控件的,要想拥有子控件,就必须给U|添加一个命名插槽,这样这个UI就可以拥有子控件

实现步骤为:

  • 第一步:创建带有命名插槽的UI控件
  • 第二步:在其他U|面板中导入UI控件, 在插槽处添加对应控件

边界(Border)

  • 边界控件是一个只能包含一个子元素的容器,可以用来做元素的背景
  • 当给边界控件添加子控件后,子控件将不具备自由设置锚点、位置、尺寸等特性了

文本框(Text Box)

用于给用户提供输入文本的控件

组合框(字符串) (ComboBoxString)

用于实现下拉选项

覆层(overlay)

用于让U控件一-层- -层的叠在一起。可以有多个子控件之间的堆叠

控件切换器(Widget Switcher)

用于显示指定索引的子元素

  • 有多个子元素
  • 通过索引显示子元素
  • 索引从0开始

包裹框(Wrap Box)

为多个子控件打包的盒子,当子控件在包裹框中放不下时自动换行

  • 可以有多个子控件
  • 可以通过设置插槽填充设置子控件之间的间距
  • 可以通过设置包裹尺寸设置包裹控件的换行宽度

统一网络面板(Uniform Grid Panel)

管理多个子元素,子元素的尺寸一样大,默认所有子元素都堆叠在一-起, 可以通过调节.上下左右控制元素位置。

网络面板(Grid Panel)

管理多个子元素,子元素的尺寸可以单独设置尺寸,默认所有子元素都堆叠在一起,可以通过调节上下左右控制元素位置。

水平面板(Horizontal Box)

用于在水平方向管理多个子元素,子元素的尺寸可以单独设置尺寸,子元素类型可以不同,子元素的位置只能左右切换

垂直面板(Vertical Box)

用于在垂直方向上管理多个子元素,子元素的尺寸可以单独设置尺寸,元素类型可以不同,子元素的位置只能上下切换

尺寸框(Size Box)

用于设置子控件尺寸,只能有一个子控件

  • 在没有勾选大小到内容时,子布局无效,子控件的尺寸与尺寸框的尺寸保持一致
  • 当大小到内容后,可通过子布局来设置或控制子控件的尺寸

滚动框(Scroll Box)

当子控件的总宽度或总高度超出滚动框时,超出部分隐藏,显示滚动条

选择框(CheckBox)

用于表明一个特定的状态是选中还是未选中,为用户提示True/False或是/否的选择

有两种状态

  • 勾选框:可添加说明文本,选择框的尺寸需要在图像中设置
  • 切换按钮:一般不添加说明文本

绑定值:可以给选择框添加一个布尔值,用于控制选中与取消

蓝图

蓝图功能

注释

选中相应的节点,按c键注释

断开连线

atl+鼠标左键

蓝图分类

关卡蓝图

每一个关卡对应一个关卡蓝图,关卡蓝图无法新建,只能打开默认的关卡蓝图并使用。

Game Instance(游戏实例)

  1. 切换关卡时不会被销毁的一种数据管理类蓝图。

  2. 存储全局游戏信息。

Game Mode(游戏模式

  1. 管理全体玩家的输入控制、相机等基础信息,切换关卡时会被销毁。
  2. 游戏里的每个小游戏可以视为不同的游戏模式。通常,加载小游戏也是加载新关卡的行为。
  3. 存储该关卡下的信息。如当前赛事进行时间、角色排名。

Pawn/Character(游戏角色)

  1. 管理单一玩家的输入控制和实时信息。角色死亡时销毁,复活后产生新的。
  2. 存储当前时刻角色数据,如角色位置、实时血量、技能CD、手里剩余的每张卡牌等等。

蓝图节点

●事件节点
●功能节点
●变量节点
●引用节点

逻辑节点

序列节点(Sequence)的作用就是可以将一个长的顺序执行代码划分成段, 更便于管理。注意:序列节点是单线程的。分段会按照引脚(pin)的顺序执行。

分支(Branch) 节点:用于判断指定条件是否满足,如果条件为true, 执行true输出节点的逻辑,如果条件为false,执行false节点的逻辑。

ForLoop节点: 执行指定次数的功能的节点。需要传入循环开始值与结束值
ForLoopWithBreak节点: 在没有执行break时,与ForLoop节点功能- 样,当执行break时,循环终止

WhileLoop节点:只要满足循环条件,-直执行节点

Do N节点:当执行到第N次后,功能将不再执行。要想再次执行,需要执行一-次Reset复位

Do Once节点:只执行一-次,要想再次执行需要执行Reset

Flip Flop节点:又称翻转节点,可以输出两个功能,第- -次执行A功能, 第二次执行B功能,第三次再次执行A功能

Gate节点:又称门节点,即当门打开时,随时可以执行功能,当门被关闭后,就不能执行功能

**Multi Gate(多门)**节点:默认情况下会依次执行出输出,当所有输出完成后,不再执行输出。输出节点可以添加,还可以循环与随机

ForEachLoop:针对数组的的ForLoop

ForEachLoopWithBreak:针对数组的ForLoopWithBreak

时间轴节点(Timeline) 是蓝图中的特殊节点,功能是在指定的时间内将指定值变化到目标值

插值(Lerp) 节点:根据Alpha的值返回A到B之间的值, Alpha的取值范围为0-1

Deactivata:禁用组件

Activate:启用组件

Delay: 延迟

功能节点

**打开关卡(Open Level)**打开一个新的关卡

**从类生成Actor(Spawn Actor from Class)**生成一个Actor

暂停游戏(Set Game Paused)

蓝图类之间的交互

添加控制操作映射

  1. 在蓝图里添加别的蓝图的变量。

蓝图类与关卡蓝图交互

  • 在关卡蓝图中定义自定义事件
  • 在蓝图类中通过执行控制台命令(Exgecute Console Command)节点来执行关卡蓝图事件
    • 注意事件必须为自定义事件,否则会调用失败
    • Command中输入ce事件名,而且必须以ce开头,ce为关键字,ce后面需要加空格

蓝图应用

变量

获取与设置变量:
获取变量:按住ctr将变量拖到事件图表中
设置变量:按住alt将变量拖到事件图表中

数组

  1. 查找项目(Findltem) :查找指定元素的下标

  2. 获取数组长度 (Length

  3. 获取数组最后一-个元素下标: lastindex

  4. 插入数组元素(insert

  5. 判断数组是否存在元素(Contains

  6. 移除元素()

函数与自定义事件

相同点:

  • 是可以将- -段逻辑封装为功能

  • 都可以接收参数

  • 其他蓝图都可以直接调用

不同点:

  • 函数可以有局部变量,自定义事件没有
  • 函数可以定义返回值,自定义事件没有返回值
  • 自定义事件的逻辑是在事件图表定义,函数则需要单独使用一个图表;
  • 函数不能使用delay(延时功能),而自定义事件可以。是因为函数调用需要等待结果,才会有后续动作,而事件只要触发就会继续往下面执行;
  • 从逻辑上看:只要事件一触发, 处理的逻辑和事件本身没有关系;而函数一般是通过传一-些数据, 最后输出结果,关注的是处理结果,从传入参数到执行逻辑返回数据整个过程都是函数体需要关注的。

选择:

  • 当只需要执行这个功能,而且具有延时功能时,用自定义事件
  • 当需要做运算并返回结果的,用函数

函数与宏

蓝图宏整体功能与函数类似,都是对一-些功能算法进行了封装,可以根据情况添加多个输入弓|脚与输出引脚

  • 函数只有一个引脚,宏可以有多个输入、输出引脚;
  • 其他蓝图可以调用函数,不能调用宏

宏库

用于将多个宏管理起来库文件,由于是文件,所以需要创建宏库,我们可以在所有的蓝图中调用宏库中的宏

事件分发器

类似委托的用法

定义事件分发器

赋值事件分发器

调用事件分发器

事件分发器在ui中的用法

创建ui控件时,需要将ui的触发方法继承下去,这时就可以用事件分发器。

  1. 绑定事件进入图表;
  2. 建立事件分发器,并通过事件调用。

组件

读取界面方法

数学

四元数

创建四元数(Make Quat)

欧拉角转四元数(Make from Euler(Quat))

拆分四元数(Break Quat)

四元数旋转向量(Rotate Vector(Quat))

类型转换(Cast To )

  • Get Play Pawn 得到玩家

一般蓝图写到特殊的蓝图可以直接得到,并进行类型转换。

比如:GetPlayPawn,GetPlayCharacter,GetPlayController

  • 动画蓝图(这个还没遇到过先记录一下)

转换为动画蓝图时,需要先得到动画蓝图的实例,而这个实例的目标是在动画的Mesh上获得。

  • 游戏模型(GameMode)

游戏优先度是最高的。可以直接得到GetGameMode

  • 碰撞检测(On Component Begin Overlap)

通过碰撞得到Actor,从而进行类型转换。

包括射线检测

  • 遍历硬找(Get All Actors of Class) 比较耗性能

在所有的引用类里面寻找

包括:

  • Get All Actors With Tag
  • Get All Actors With Interface
  • Get Actors of Class(确定只有一个时)

补充:

当寻找UICalss时,使用 Get All Widgets Of Class

通过get寻找

通过For Each Loop with Break

  • 间接引用(常用)

就是把需要用的蓝图存到变量里,然后在通过调用这张蓝图的时候,引用。

案例是在关卡里拿到两个需要通信的蓝图,将蓝图变量赋值给通信蓝图

蓝图案例

射线检测

使用的重要节点

Convert Mouse Location To World Space(鼠标屏幕坐标转世界坐标)

Line Trace By Channel(射线检测)

界面操作

Add to Viewport 加载到界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B6UnQF0s-1681438840906)(null)]

UI图片修改

ui面板上的笔刷或者样式等等是可以修改图片的,可以通过蓝图SetBrush或者SetStyle

通过Tag读取模型

给模型设置tag后,可以通过tag获取

材质

按住3,点击面板可以创建颜色节点

模型

C++

相机控制脚本

AMyPawn.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Pawn.h"
#include "MyPawn.generated.h"

UCLASS()
class XZ_PROJECT_API AMyPawn : public APawn
{
	GENERATED_BODY()

public:
	// Sets default values for this pawn's properties
	AMyPawn();
	UPROPERTY(VisibleAnywhere, Category = "My Pawn Component")
	class	UStaticMeshComponent* myStaticMesh;
	UPROPERTY(VisibleAnywhere, Category = "My Pawn Component")
	class	UCameraComponent* myCamera;
	UPROPERTY(EditDefaultsOnly, Category = "My Pawn|Vector")
	FVector CameraLocation;
	UPROPERTY(EditDefaultsOnly, Category = "My Pawn|Vector")
	FRotator CameraRotation;
	UPROPERTY(EditAnywhere, Category = "My Pawn|Vector")
		float MaxSpeed;
	FORCEINLINE UStaticMeshComponent* GetStaticMeshComponent() { return myStaticMesh; }

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	// Called to bind functionality to input
	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
	void MoveRight(float Value);
	void MoveForward(float Value);
	void MouseLeft(float Value);
	void MouseRight(float Value);
	void MouseX(float Value);
	void MouseY(float Value);
	void MouseWheelAxis(float Value);
	float VelocityRight;
	float VelocityForward;
	FVector Velocity;
	FVector VelocityMouse;
	FVector VelocityMouseForward;
	float getMouseRight;
	float getMouseLeft;
	float getMouseX;
	float getMouseY;
	float getMouseWheelAxis;
	float MouseMoveSpeed;
};

MyPawn.cpp

// Fill out your copyright notice in the Description page of Project Settings.


#include "MyPawn.h"
#include "Components/StaticMeshComponent.h"
#include "Camera/CameraComponent.h"

// Sets default values
AMyPawn::AMyPawn()
{
 	// Set this pawn to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent"));
	myStaticMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("myStaticMesh"));
	myStaticMesh->SetupAttachment(GetRootComponent());

	static ConstructorHelpers::FObjectFinder<UStaticMesh>staticMeshAsset(TEXT("StaticMesh'/Game/s_Models/test1.test1'"));

	static ConstructorHelpers::FObjectFinder<UMaterialInterface>materialAsset(TEXT("Material'/Game/s_Models/Materials/black.black'"));

	if (staticMeshAsset.Succeeded() && materialAsset.Succeeded())
	{
		myStaticMesh->SetStaticMesh(staticMeshAsset.Object);
		myStaticMesh->SetMaterial(0, materialAsset.Object);
		myStaticMesh->SetWorldScale3D(FVector(1.0f));
	}

	myCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("myCamera"));
	myCamera->SetupAttachment(GetStaticMeshComponent());
	CameraLocation = FVector(-300.0f, 0.0f, 300.0f);
	CameraRotation = FRotator(-45.0f, 0.0f, 0.0f);
	myCamera->SetRelativeLocation(CameraLocation);
	myCamera->SetRelativeRotation(CameraRotation);
	AutoPossessPlayer = EAutoReceiveInput::Player0;

	MaxSpeed = 100.0f;
	VelocityRight = 0.0f;
	VelocityForward = 0.0f;
	Velocity = FVector(0.0f);
	VelocityMouse = FVector(0.0f);
	VelocityMouseForward = FVector(0.0f);
	getMouseRight = 0.0f;
	getMouseLeft = 0.0f;
	getMouseX = 0.0f;
	getMouseY = 0.0f;
	getMouseWheelAxis = 0.0f;
	MouseMoveSpeed = 0.0f;
}

// Called when the game starts or when spawned
void AMyPawn::BeginPlay()
{
	Super::BeginPlay();
	
}

// Called every frame
void AMyPawn::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	MouseMoveSpeed = -FMath::Clamp(myCamera->GetRelativeLocation().X * 0.02f, -1000.0f, -10.0f);
	Velocity = RootComponent->GetRightVector() * VelocityRight + RootComponent->GetForwardVector() * VelocityForward;
	if (getMouseLeft == 1)
	{
		Velocity = RootComponent->GetRightVector() * -getMouseX * MaxSpeed * MouseMoveSpeed + RootComponent->GetForwardVector() * -getMouseY * MaxSpeed * MouseMoveSpeed;
		AddActorWorldOffset(Velocity * DeltaTime, true);
	}
	if (getMouseRight == 1)
	{
		FRotator PitchRotation = myCamera->GetComponentRotation();
		PitchRotation.Pitch = FMath::Clamp(PitchRotation.Pitch += getMouseY, -80.0F, 0.0F);
		myCamera->SetWorldRotation(PitchRotation);
		FRotator YawRotation = RootComponent->GetComponentRotation();
		YawRotation.Yaw = YawRotation.Yaw += getMouseX;
		RootComponent->SetWorldRotation(YawRotation);
	}
	if (getMouseWheelAxis != 0)
	{
		VelocityMouseForward.X = getMouseWheelAxis * MaxSpeed * MouseMoveSpeed;
		myCamera->AddLocalOffset(VelocityMouseForward * DeltaTime, true);
	}

}

// Called to bind functionality to input
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
	PlayerInputComponent->BindAxis(TEXT("s_MoveForward"), this, &AMyPawn::MoveForward);
	PlayerInputComponent->BindAxis(TEXT("s_MoveRight"), this, &AMyPawn::MoveRight);
	PlayerInputComponent->BindAxis(TEXT("s_MouseLeft"), this, &AMyPawn::MouseLeft);
	PlayerInputComponent->BindAxis(TEXT("s_MouseRight"), this, &AMyPawn::MouseRight);
	PlayerInputComponent->BindAxis(TEXT("s_MouseX"), this, &AMyPawn::MouseX);
	PlayerInputComponent->BindAxis(TEXT("s_MouseY"), this, &AMyPawn::MouseY);
	PlayerInputComponent->BindAxis(TEXT("s_MouseWheelAxis"), this, &AMyPawn::MouseWheelAxis);
	}
	void AMyPawn::MoveRight(float Value)
	{
		VelocityRight = FMath::Clamp(Value, -1.0f, 1.0f) * MaxSpeed;
	}
	void AMyPawn::MoveForward(float Value)
	{
		VelocityForward = FMath::Clamp(Value, -1.0f, 1.0f) * MaxSpeed;
	}
	void AMyPawn::MouseLeft(float Value)
	{
		getMouseLeft = Value;
	}
	void AMyPawn::MouseRight(float Value)
	{
		getMouseRight = Value;
	}
	void AMyPawn::MouseX(float Value)
	{
		getMouseX = FMath::Clamp(Value, -1.0f, 1.0f);
	}
	void AMyPawn::MouseY(float Value)
	{
		getMouseY = FMath::Clamp(Value, -1.0f, 1.0f);
	}
	void AMyPawn::MouseWheelAxis(float Value)
	{
		getMouseWheelAxis = FMath::Clamp(Value, -1.0f, 1.0f);
	}



发布

宽高比变化设置

windows打包后,拖拽窗口分辨率比例不能改变,Project Settings->Project description->settings->should window preserve aspect ratio ->false;

选择发布模式

windows

开发模式

运行发布包后点击~键,可以对发布设置进行更改。

比如修改分辨率

窗口模式
r.setres 1920x1080w
全屏模式
r.setres 1920x1080f

void AMyPawn::MouseX(float Value)
{
	getMouseX = FMath::Clamp(Value, -1.0f, 1.0f);
}
void AMyPawn::MouseY(float Value)
{
	getMouseY = FMath::Clamp(Value, -1.0f, 1.0f);
}
void AMyPawn::MouseWheelAxis(float Value)
{
	getMouseWheelAxis = FMath::Clamp(Value, -1.0f, 1.0f);
}

## 发布

#### 宽高比变化设置

windows打包后,拖拽窗口分辨率比例不能改变,Project Settings->Project description->settings->should window preserve [aspect](https://so.csdn.net/so/search?q=aspect&spm=1001.2101.3001.7020) ratio ->false;

#### 选择发布模式

##### **windows**

**开发模式**

运行发布包后点击~键,可以对发布设置进行更改。

比如修改分辨率

**窗口模式**
r.setres 1920x1080w 
**全屏模式**
r.setres 1920x1080f


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【vue】插件集合

一、复制粘贴vue-clipboard2 1、安装vue-clipboard2 npm install ue-clipboard2 2、main.js引入插件 // 复制 import VueClipboard from vue-clipboard2 Vue.use(VueClipboard) 3、页面使用 <el-buttonsize"mini"type"text"ref"copyButton&q…

JAVAWeb06-动态WEB开发核心Servlet-02-ServletConfig/Context

1. ServletConfig 1.1 ServletConfig 基本介绍 ServletConfig 类是为 Servlet 程序的配置信息的类Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建Servlet 程序默认是第 1 次访问的时候创建&#xff0c;ServletConfig 在 Servlet 程序创建时&#xff0c;就创建一个…

thinkphp5 线上部署后view-source:可以看到源码,但是http显示空白页面的原因及解决方法汇总

本篇文章主要讲解:thinkphp5 项目线上部署后view-source:可以看到源码,但是http显示空白页面的原因及解决方法教程 作者:任聪聪 日期:2023年4月17日 thinkphp版本5.1 现象说明: 线下测试环境,显示可以看到界面 部署到线上配置完毕后发现页面空白 在php中写入echo 1232…

pytorch进阶学习(七):神经网络模型验证过程中混淆矩阵、召回率、精准率、ROC曲线等指标的绘制与代码

参考笔记 【机器学习】五分钟搞懂如何评价二分类模型&#xff01;混淆矩阵、召回率、精确率、准确率超简单解释&#xff0c;入门必看&#xff01;_哔哩哔哩_bilibili 混淆矩阵的概念_GIS_JH的博客-CSDN博客 机器学习中的混淆矩阵&#xff0c;准确率&#xff0c;精确率&#…

[java]String类

String表示字符串类型。 注意c中没有表示字符串的类型。 String内部包含如下两个变量。 java中String结尾没有/0&#xff0c;java不需要/0标注结束位置。 str2代表指向的对象内容为空&#xff0c;str3代表不指向任何对象。 str1和str2指向对象不一样&#xff0c;所以不相等 可…

在Linux中进行Jenkins-2.190的安装及使用

Jenkins-2.190安装在公网IP为x.x.x.x的服务器上 环境准备 第一步&#xff0c;下载server-jre-8u202-linux-x64.tar.gz安装包。 登录地址&#xff1a;https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html下载server-jre-8u202-linux-x64.tar.gz…

黑马程序员---微服务笔记【实用篇】

微服务技术栈导学 微服务实现流程&#xff1a; 所有要学的技术&#xff1a; 分层次教学&#xff1a; 具体分层&#xff1a; 实用篇---第一天 一、认识微服务 单体架构 将业务所有功能集中在一个项目中开发&#xff0c;打成一个包部署 优点&#xff1a;架构简单、部署成本低 …

Linux系统编程(三)—— 文件编程(2)系统数据文件和信息

一、文件&#xff1a;/etc/passwd 这是 /etc/passswd 文件下的内容&#xff1a; &#xff08;1&#xff09;标准库函数&#xff1a;getpwuid( ) 和 getpwname( ) getpwuid( )函数是根据 uid 来找到系统用户的信息&#xff1b;getpwname( )函数是根据 name 来找到用户的信息&…

机器学习 day04(梯度下降算法,学习率,偏导数,执行过程示意图)

1. 梯度下降 我们可以用一种更系统的方法&#xff0c;来找到一组w&#xff0c;b&#xff0c;使成本函数的值最小。这个方法叫梯度下降算法&#xff0c;它可用于最小化任何函数&#xff0c;不仅仅包括线性回归的成本函数&#xff0c;也包括两个以上参数的其他成本函数在线性回…

C#:在datagridview中每行添加图片,点击图片删除整行

今天要讲的是关于datagridview中的操作。 首先现在winform界面中拉取一个datagridview控件&#xff0c;如下图所示&#xff1a; 然后需要在控件中添加如下图所示的三列数据&#xff1a; 其中第一列的数据类型选择如下图所示的DataGridViewImageColumn&#xff0c;另外两列的数…

基于matlab使用 CSI-RS 的 NR 下行链路发射端波束细化

一、前言 此示例演示了使用 5G 工具箱中的信道状态信息参考信号 &#xff08;CSI-RS&#xff09; 的下行链路发射端波束细化过程。该示例展示了如何在散射环境中向不同方向传输多个CSI-RS资源&#xff0c;以及如何根据参考信号接收功率&#xff08;RSRP&#xff09;测量结果选择…

PHP调用api接口,电商平台商品详情API接口(封装可高并发)

PHP传递参数 1、通过GET方式接收调用api接口传递的参数。 2、使用switch语句&#xff0c;当GET接收到不同的值时&#xff0c;调用不同的函数。 3、分别创建one(&#xff09;&#xff0c;two()&#xff0c;three()三个函数用于返回api接口调用后返回的数据。 4、在浏览器打开…

反弹shell原理与实现

一、什么是反弹shell&#xff1f; 反弹shell&#xff08;Reverse Shell&#xff09;是一种常用于网络攻击中的技术&#xff0c;其目的是让攻击者通过远程控制程序获取被攻击计算机的权限。反弹shell技术通常是通过在受害者计算机上运行一个程序&#xff08;称为“后门”&#…

CF55D-Beautiful numbers (数位dp)

l c m ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ) 2520 lcm(1,2,3,4,5,6,7,8,9)2520 lcm(1,2,3,4,5,6,7,8,9)2520 若 x x x 能被它自己的所有非零位的数字整除&#xff0c;即能被它们的最小公倍数整除&#xff0c; x ≡ 0 ( m o d l c m ( { d i g i t [ i ] } ) ) x \equiv 0…

十大常见行业 BI 可视化应用

智能商业指的是利用互联网、物联网、自动化、人工智能等新一代信息技术&#xff0c;在一定程度上对市场判断、发展决策、业务复盘、业务预测等商业行为实现智能化、自动化&#xff0c;整个过程基本不需要人类参与。 很多企业部署了商业智能BI系统&#xff0c;这是一种包含了数…

Node 02-fs模块

fs 模块 fs 全称为 file system &#xff0c;称之为 文件系统 &#xff0c;是 Node.js 中的 内置模块 &#xff0c;可以对计算机中的磁盘进行操作。 本章节会介绍如下几个操作&#xff1a; 文件写入文件读取文件移动与重命名文件删除文件夹操作查看资源状态 文件写入 文件写入…

ubuntu常用命令

查询进程&#xff1a; ps -ef 杀死进程 kill -9 killall -9 chrome killall chromedriver 杀死所有chrome ps ef 查看运行的任务 ps -ef | grep python top 查看运行任务详情 后台启动Python脚本 可以使用下面的命令来启动上面的脚本&#xff0c;让Python在后台运行。 nohup…

Matlab论文插图绘制模板第87期—模值赋色的三维箭头图

在之前的文章中&#xff0c;分享了Matlab三维箭头图的绘制模板&#xff1a; 进一步&#xff0c;如果我们想对每一个箭头赋上颜色&#xff0c;以更加直观地表示其模值的大小&#xff0c;该怎么操作呢&#xff1f; 那么&#xff0c;来看一下模值赋色的三维箭头图的绘制模板。 先…

设计模式 -- 多例模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

docker镜像制作: 构建UI镜像

前端构建docker镜像 事前准备 安装nodejs cd/usr/local/ wgethttps://npm.taobao.org/mirrors/node/v12.16.2/node-v12.16.2-linux-x64.tar.gz tar-zxvfnode-v12.16.2-linux-x64.tar.gz rm-rfnode-v12.16.2-linux-x64.tar.gz mvnode-v12.16.2-linux-x64node echoexportNODE_HO…