当前位置: 首页 > news >正文

UE_C++ —— UObject Instance Creation

目录

一,UObject Instance Creation

NewObject

NewNamedObject

ConstructObject

Object Flags

二,Unreal Object Handling

Automatic Property Initialization

Automatic Updating of References

Serialization

Updating of Property Values

Editor Integration

Run-Time Type Information and Casting

Garbage Collection

Network Replication


一,UObject Instance Creation

        创建对象新实例的方法;

NewObject

        NewObject() 是最简单的UObject工厂方法;它接受一个可选的外部对象和类,并用自动生成的名称创建一个新实例;

template< class T >
T* NewObject
(UObject* Outer = (UObject*)GetTransientPackage(),UClass* Class = T::StaticClass()
)
  • Outer,可选,一个待创建对象的外部 UObject
  • Class,可选,一个待创建对象类的 UClass
  • 返回值,指向生成实例(指定类)指针;
NewNamedObject

        NewNamedObject() 是在 NewObject() 上扩展,通过为新实例指定一个名称、对象标记、一个要指定为参数的模板对象;

template< class TClass >
TClass* NewNamedObject
(UObject* Outer,FName Name,EObjectFlags Flags = RF_NoFlags,UObject const* Template = NULL
)
  • Outer,一个待创建对象的外部 UObject
  • Name,一个为新对象的 名称 的 FName
  • Flags,可选,描述新对象的 FObjectFlags 枚举值;
  • Template,可选,创建新对象时用作模板的 UObject
  • 返回值,指向生成实例(指定类)指针;
ConstructObject

        为获得完全的灵活性,可以使用 ConstructObject() 函数来创建 UObjects 的新实例;此函数调用 StaticConstructObject() ,它分配对象,执行 ClassConstructor ,并执行任何初始化,如加载配置属性,加载本地化属性和实例化组件;

template< class T >
T* ConstructObject
(UClass* Class,UObject* Outer = (UObject*)GetTransientPackage(),FName Name = NAME_None,EObjectFlags SetFlags = RF_NoFlags,UObject const* Template = NULL,bool bCopyTransientsFromClassDefaults = false,struct FObjectInstancingGraph* InstanceGraph = NULL
)
  • Class,一个待创建对象类的 UClass
  • Outer,可选,一个待创建对象的外部 UObject
  • Name,可选,一个为新对象的 名称 的 FName
  • SetFlags,可选,描述新对象的 FObjectFlags 枚举值;
  • Template,可选,创建新对象时用作模板的 UObject
  • bCopyTransientsFromClassDefaults,可选,
  • FObjectInstancingGraph,可选,一个 布尔值 ,决定是否从类默认对象(而不是传入的原型指针)复制瞬态属性;如果 true ,使用类默认对象的瞬态;
  • 返回值,指向生成实例(指定类)指针;
Object Flags

        EObjectFlags 枚举用于快速而简洁地描述对象;有各种的标志来描述对象的类型、垃圾收集如何处理它、对象在其生命周期中所处的阶段等等;还有特殊的全掩码或无掩码和预定义的标记组;

Object Type
FlagValueDescription
RF_Public0x00000001对象在包含它的包外部是可见的;
RF_Standalone0x00000002即使没有被任何东西引用,对象也会被保留以供编辑;
RF_Native0x00000004对象是本地对象,仅用于 UClass 对象;
RF_Transactional0x00000008对象是事务对象;
RF_ClassDefaultObject0x00000010对象是其类的默认对象,即该类的新实例在创建时使用的默认模板;
RF_ArchetypeObject0x00000020对象是另一个对象的模板。它被视为一个类默认对象;
RF_Transient0x00000040对象不保存到磁盘;
Garbage Collection
FlagValueDescription
RF_RootSet0x00000080即使对象没有被任何东西引用,也不被垃圾回收;
RF_IsLazyReferenced0x00000100对象由一个延迟指针引用,删除时需要额外的清理;
RF_Unreachable0x00000400对象图表上不能访问该对象;
RF_TagGarbageTemp0x00000400对象被标记为供使用垃圾回收的各种实用程序所使用;此标记不由垃圾回收器本身解释;
Object Lifetime
FlagValueDescription
RF_NeedLoad0x00000800对象需要加载;
RF_AsyncLoading0x00001000对象是异步加载的;
RF_NeedPostLoad0x00002000对象需要后加载;
RF_NeedPostLoadSubobjects0x00004000对象仍然需要实例化子对象并修复序列化的组件引用;
RF_PendingKill0x00008000对象正在等待销毁;基于游戏目的将对象标记为无效,但仍然是有效的对象;
RF_BeginDestroyed0x00010000对象已经调用了 BeginDestroy()
RF_FinishDestroyed0x00020000对象已经调用了 FinishDestroy() ;
Special Masks
FlagValueDescription
RF_AllFlags0x0003ffff对象具有所有标记,主要用于错误检查;
RF_NoFlags0x00000000对象不具有标记,用于避免类型转换;
Predefined Groups
FlagValueDescription
RF_LoadRF_Public | RF_Standalone | RF_Native | RF_Transactional | RF_ClassDefaultObject | RF_ArchetypeObject从虚幻文件加载的标记;
RF_PropagateToSubobjectsRF_Public | RF_ArchetypeObject | RF_Transactional子对象从其超对象继承的标记;

二,Unreal Object Handling

        使用适当的宏标记类、属性和函数可以将它们转变为UClassesUPropertiesUFunctions;这让虚幻引擎能够访问它们,从而允许实现一些后台处理功能;

Automatic Property Initialization

        在调用构造函数之前,UObject在初始化时自动归零;这针对整个类发生,UProperties和类似的原生成员;成员随后可以使用类构造函数中的自定义值进行初始化;

Automatic Updating of References

       AActorUActorComponent被销毁或从运行中删除时,对反射系统可见的对它的所有引用(UProperty指针和引擎容器类中存储的指针,如TArray)都将自动清空;这样的好处是防止悬挂指针持久存在并导致后续问题,但也意味着如果其他某段代码将AActorUActorComponent指针销毁,这些指针也会变为空;最终的好处是空检查更可靠,因为会检测标准情况空指针和非空指针指向删除内存的情况;

        必须理解的是,这种功能仅适用于标记了UPROPERTY或存储在虚幻引擎容器类中的UActorComponentAActor引用;存储在原始指针中的Object引用对于虚幻引擎将为未知,并且不会自动清空,也不会妨碍垃圾回收;注意,这不意味着所有UObject*变量都必须是UProperties;如需要的Object指针不是UProperty,请考虑使用TWeakObjectPtr;这是"弱"指针,意味着不会妨碍垃圾回收,但可以查询有效性,然后再接受访问,并且它所指向的Object要被销毁时,它将被设置为空;

        另一种被引用UObject UProperty自动清空的情况是对编辑器中的资源使用"强制删除(Force Delete)";因此,作用于属于资源的UObject的所有代码都必须处理这些变为空的指针;

Serialization

        当UObject被序列化时,所有UProperty值都将被自动写入或读取,除非显式标记为"瞬时"或无法从后构造函数默认值进行更改;如,可以在关卡中放入AEnemy实例,将其"Health"设置为500,保存并成功地重新加载,而不必在UClass定义之外编写一行代码;

        当添加或删除UProperties时,系统会无缝处理加载预先存在的内容;新属性从新的CDO复制默认值;删除的属性将会被静默忽略;

        如需要自定义行为,则可以覆盖UObject::Serialize函数;这对于检测数据错误,检查版本号或执行自动转换或更新(如果数据格式有所更改)十分有用;

Updating of Property Values

        当UClass的 类默认对象(CDO)更改,引擎将尝试在加载类的所有实例时对这些实例应用这些更改;对于给定Object实例,如更新的变量值与旧CDO中的值相匹配,则将更新为它在新CDO中保存的值;如变量包含任何其他值,系统会假设这个值是故意设置的,这些更改将会被保留;

        如,假设在一个关卡中放置了多个 AEnemy Object并保存,然后将 AEnemy 构造函数中的默认Health值设置为100;再假设将Enemy_3的Health值设置为500,因为它们特别难对付;现在,假设改变主意,将Health的默认值增加到150;下次加载关卡时,虚幻意识到更改了CDO,并将使用旧默认Health值(100)的所有AEnemy实例更新为使用Health值150。Enemy_3的Health将保持在500,因为它不使用旧的默认值;

Editor Integration

        编辑器理解UObjectUProperties,编辑器可以自动公开这些值以供编辑,而不必编写特殊代码;可以选择在蓝图视觉脚本系统中融入集成,也有许多选项可以控制变量和函数的可访问性和公开;

Run-Time Type Information and Casting

        由于UObject是虚幻引擎反射系统的一部分,它们始终知道它们是哪些UClass,并可以在运行时做出有关类型的决定和类型转换;

        在原生代码中,每个UObject类都将自定义Super类型定义设置为其父类,从而可以轻松控制覆盖行为;

class AEnemy : public ACharacter
{virtual void Speak(){Say("Time to fight!");}
};class AMegaBoss : public AEnemy
{virtual void Speak(){Say("Powering up! ");Super::Speak();}
};
//调用Speak将会让MegaBoss说"Powering up!Time to fight!"

        此外,可以使用模板化Cast函数或者查询(如Object是使用IsA的特定类)安全地将Object从基类转换为更派生类;

class ALegendaryWeapon : public AWeapon
{void SlayMegaBoss(){TArray<AEnemy> EnemyList = GetEnemyListFromSomewhere();// The legendary weapon is only effective against the MegaBossfor (AEnemy Enemy : EnemyList){AMegaBoss* MegaBoss = Cast<AMegaBoss>(Enemy);if (MegaBoss){Incinerate(MegaBoss);}}}
};

        使用了Cast来尝试将AEnemy转换为AMegaBoss,如所提及Object实际上不是AMegaBoss(或者其子类),则Cast会返回空指针;在以上代码中,Incinerate将仅对MegaBoss调用;

Garbage Collection

        虚幻实现垃圾回收机制,不再被引用或已被显式标记为销毁的UObject将定期清理;引擎构建一个引用图表以确定哪些UObject仍在使用,哪些是孤立的;在该图表根部是一组指定为"root set"的UObject;任何UObject都可以添加到root set;当进行垃圾回收时,引擎将从root set开始,搜索已知UObject引用树来跟踪所有引用的UObject;任何未被引用的UObject(意味着未在树搜索中找到这些对象)将被假设为不再需要,因此被删除;

        一个实际的影响是,通常需要保持对希望保持活跃的任何Object的UPROPERTY引用,或将指向它的指针存储在TArray或其他引擎容器类中;Actor及其组件通常属于例外情况,因为Actor通常被链接回到根集的Object引用(如它们所属的关卡),而Actor的组件被Actor自身引用;Actor可以显式标记为销毁,方法是调用它们的Destroy函数,这是从进行中游戏移除Actor的标准方法;组件可以使用DestroyComponent函数显式销毁,但它们通常在拥有它们的Actor从游戏中移除时被销毁;

        虚幻引擎中的垃圾回收速度快,效率高,内置大量的优化功能,能够尽量降低开销,如多线程可访问性分析可以标识孤立Object,优化的unhashing代码能够尽快从容器中移除Actor;还有一些其他功能以调节,以更精准地控制如何以及何时执行垃圾回收,大部分都可以在 项目设置(Project Settings) 中的 引擎 - 垃圾回收(Engine - Garbage Collection) 下找到;

Setting(s)Feature Description
Create Garbage Collector UObject Clusters可在项目设置中打开或关闭(默认打开);如打开,相关Object将被分组到一起归入垃圾回收集群,这样只需要检查集群自身即可,而不必检查每个Object;这意味着可以更快速地执行可访问性,因为整个集群将被视为一个对象,但也意味着该集群中的单个项目将被unhashed,并准备在同一帧中删除,如集群足够大,这样可能会导致卡顿;一般而言,集群创建会提高垃圾回收性能,缩短可访问性分析耗费的时间;
Merge GC Clusters可启用集群合并,这样当一个集群的对象引用另一个集群的对象时,让集群合并起来;注意,清空导致合并的引用不会让新合并的集群瓦解或拆散;Create Garbage Collector UObject Clusters 也必须打开,该功能才能工作;这会使垃圾回收器unhashing和销毁对象的频率降低,但一次unhashed和销毁的对象数量会增加;此外,有些情况下不会对合并集群进行垃圾回收,因为对该集群中任何对象的任何引用都会阻止对整个集群进行垃圾回收;
Actor Clustering Enabled通过在 Project Settings 中打开这个选项,并将bCanBeInCluster变量设置为true,或覆盖代码中的CanBeInCluster函数以使其返回true,可以将Actor放入集群中;默认,Actor和组件会将这个选项关闭,但静态网格体Actor和反射捕获组件除外;该功能可用于将应该一次性全部销毁的Actor分组在一起,通常是关卡中放置的不能被销毁的静态网格体,除非卸载包含这些网格体的子关卡;
Blueprint Clustering Enabled蓝图的UBlueprintGeneratedClass和相关数据,如共享UPROPERTY和UFUNCTION数据,可以通过打开该设置来建立集群;必须要认识到的是,该集群引用蓝图生成的类自身,而不是蓝图的单个实例;
Time Between Purging Pending Kill Objects垃圾回收活动的频率可以在项目设置中调整;该高级控制对于防止卡顿尤其有用;通过缩短回收间隔,可以减少将在下一次可访问性分析阶段发现的无法访问的对象的可能数量,并避免同时清除大量Actor时可能会发生的卡顿;

Network Replication

        UObject系统包含一组可靠的功能,能够促进网络通信和多人游戏;

        UProperties可以标记为告诉引擎
在网络游戏期间复制数据;常见模型是一个变量在服务器上发生更改,引擎检测到这个更改,并将其可靠地发送到所有客户端;当变量通过复制发生更改时,客户端可以选择性接收回调函数;

        UFunctions也可以标记为
在远程机器上执行;如,"server"函数在客户端上调用时,将会在服务器上执行这个函数以获取服务器版本的Actor;而另一方面,"client"函数可以从服务器调用,并在拥有这个函数的客户端版本的对应Actor上运行;

相关文章:

UE_C++ —— UObject Instance Creation

目录 一&#xff0c;UObject Instance Creation NewObject NewNamedObject ConstructObject Object Flags 二&#xff0c;Unreal Object Handling Automatic Property Initialization Automatic Updating of References Serialization Updating of Property Values …...

WPF的MVVMLight框架

在NuGet中引入该库&#xff1a; MVVMLight框架中的命令模式的使用&#xff1a; <StackPanel><TextBox Text"{Binding Name}"/><TextBox Text"{Binding Title}"/><Button Content"点我" Command"{Binding ShowCommand…...

【云安全】云原生- K8S kubeconfig 文件泄露

什么是 kubeconfig 文件&#xff1f; kubeconfig 文件是 Kubernetes 的配置文件&#xff0c;用于存储集群的访问凭证、API Server 的地址和认证信息&#xff0c;允许用户和 kubectl 等工具与 Kubernetes 集群进行交互。它通常包含多个集群的配置&#xff0c;支持通过上下文&am…...

binance python

binance-futures-connector 4.1.0 from binance.um_futures import UMFutures # U本位 USDT-M Futures /fapi/* # 币本位 COIN-M Delivery /dapi/* proxies { https: http://localhost:7890 } client UMFutures(proxiesproxies)apiKey"" apiSecret"" cl…...

LLaMA-Factory DeepSeek-R1 模型 微调基础教程

LLaMA-Factory 模型 微调基础教程 LLaMA-FactoryLLaMA-Factory 下载 AnacondaAnaconda 环境创建软硬件依赖 详情LLaMA-Factory 依赖安装CUDA 安装量化 BitsAndBytes 安装可视化微调启动 数据集准备所需工具下载使用教程所需数据合并数据集预处理 DeepSeek-R1 可视化微调数据集处…...

利用亚马逊云科技RDS for SQL Server配置向量数据存储

生成式人工智能&#xff08;AI&#xff09;正迎来又一个快速发展期&#xff0c;引起了开发者们的广泛关注。将生成式能力集成到商业服务和解决方案中变得非常重要。当前的生成式AI解决方案是机器学习和深度学习模型逐步进化迭代的结果。从深度学习到生成式AI的质变飞跃主要是由…...

ASP.NET Core SixLabors.ImageSharp v1.0 的图像实用程序类 web示例

这个小型实用程序库需要将 NuGet SixLabors.ImageSharp包&#xff08;版本 1.0.4&#xff09;添加到.NET Core 3.1/ .NET 6 / .NET 8项目中。它与Windows、Linux和 MacOS兼容。 这已针对 ImageSharp v3.0.1 进行了重新设计。 它可以根据百万像素数或长度乘以宽度来调整图像大…...

JVM 底层探秘:对象创建的详细流程、内存分配机制解析以及线程安全保障策略

文章目录 1. 类加载检查2. 内存分配① 指针碰撞② 空闲列表线程安全问题&#xff1a; 3. 内存空间初始化4. 对象头设置5. 对象初始化 当Java虚拟机遇到一条 new指令时&#xff0c;会执行以下步骤来创建对象&#xff1a; 1. 类加载检查 首先检查new指令的参数是否能在常量池中…...

SpringCloud框架下的注册中心比较:Eureka与Consul的实战解析

摘要 在探讨SpringCloud框架中的两种注册中心之前&#xff0c;有必要回顾单体架构与分布式架构的特点。单体架构将所有业务功能集成在一个项目中&#xff0c;优点是架构简单、部署成本低&#xff0c;但耦合度高。分布式架构则根据业务功能对系统进行拆分&#xff0c;每个模块作…...

应对DeepSeek总是服务器繁忙的解决方法

最近由于访问量过大&#xff0c;DeepSeek服务器官网经常弹出&#xff1a;“服务器繁忙&#xff0c;请稍后再试”的提示&#xff0c;直接卡成PPT怎么办&#xff1f;服务器繁忙直接看到视觉疲劳&#xff1a; 解决DeepSeek卡顿问题 DeepSeek使用卡顿问题&#xff0c;是因为访问量…...

C++ 实践扩展(Qt Creator 联动 Visual Studio 2022)

​ 这里我们将在 VS 上实现 QT 编程&#xff0c;实现如下&#xff1a; 一、Vs 2022 配置&#xff08;若已安装&#xff0c;可直接跳过&#xff09; 点击链接&#xff1a;​​​​​Visual Studio 2022 我们先去 Vs 官网下载&#xff0c;如下&#xff1a; 等待程序安装完成之…...

JENKINS(全面)

一.linux系统中JENKINS的安装 注意&#xff1a;安装jenkins需要安装jdk&#xff0c;而且具体版本的jenkins有相对应的jdk版本。可参考以下链接。 Redhat Jenkins 软件包https://pkg.jenkins.io/redhat-stable/https://pkg.jenkins.io/redhat-stable/https://pkg.jenkins.io/r…...

72.git指南(简单)

Git 操作指南 在开始之前&#xff0c;请确保你已经提前配置好 .gitignore 文件&#xff0c;以避免不必要的文件被 Git 跟踪。如果在初始化仓库后再配置 .gitignore 文件&#xff0c;之前添加的文件仍会被跟踪&#xff0c;需要手动移除。 如下例子忽略了文件夹及文件夹内所有内…...

LeetCode 232: 用栈实现队列

LeetCode 232: 用栈实现队列 题目描述 使用栈实现队列的操作。支持以下操作&#xff1a; MyQueue()&#xff1a;初始化队列。push(x)&#xff1a;将元素 x 推入队列。pop()&#xff1a;从队列中移除元素。peek()&#xff1a;返回队列头部的元素。empty()&#xff1a;检查队列…...

C#关于静态关键词static详解

Demo代码&#xff1a; public class HomeController : Controller {private DateTime time1 DateTime.Now; // 实例字段private static DateTime time2 DateTime.Now; // 静态字段[HttpGet("index")]public async Task Index(){Console.WriteLine($"now&am…...

【Pico】使用Pico进行无线串流搜索不到电脑

使用Pico进行无线串流搜索不到电脑 官串方式&#xff1a;使用Pico互联连接电脑。 故障排查 以下来自官方文档 请按照以下步骡排除故障&#xff1a; 确认电脑和一体机连接了相同的路由器WiFi网络(相同网段) IP地址通常为192.168.XX&#xff0c;若两设备的IP地址前三段相同&…...

细说STM32F407单片机RTC的基本原理及闹钟和周期唤醒功能的使用方法

目录 一、RTC基础知识 1、 RTC的功能 2、RTC工作原理 &#xff08;1&#xff09;RTC的时钟信号源 &#xff08;2&#xff09;预分频器 &#xff08;3&#xff09;实时时钟和日历数据 &#xff08;4&#xff09;周期性自动唤醒 &#xff08;5&#xff09;可编程闹钟 &a…...

ES用脚本更新异常

因为需要向原有的es结构中增加一个检索字段&#xff0c;但因为历史es数据都没有该字段&#xff0c;需要批量刷新es的该字段&#xff0c;本地使用了脚本的方式进行刷新&#xff0c;在测试环境测试&#xff0c;出现了以下错误&#xff1a; 500 Internal Server Error: [{"e…...

Navicat导入海量Excel数据到数据库(简易介绍)

目录 前言正文 前言 此处主要作为科普帖进行记录 原先Java处理海量数据的导入时&#xff0c;由于接口超时&#xff0c;数据处理不过来&#xff0c;后续转为Navicat Navicat 是一款功能强大的数据库管理工具&#xff0c;支持多种数据库系统&#xff08;如 MySQL、PostgreSQL、…...

C++学习

C对C语言的加强 1.命名空间&#xff08;namespace&#xff09; 为了避免&#xff0c;在大规模程序的设计中&#xff0c;以及在程序员使用各种各样的C库时&#xff0c;这些标识符的命名发送冲突。 标准C引入了关键字namespace&#xff0c;可以更好地控制标识符的作用域。 st…...

Linux Mem -- Where the mte store and check in the real hardware platform

目录 1 前言 2 MTE tag分类 3 Address tag 4 Memory tag 5 Tag Check 6 Cortex-A710 和 CI-700 系统示例&#xff1a; 1 前言 ARM的MTE允许分配、设置、比较一个 4bit的allocation tag 为16字节粒度的物理地址。当对MTE有一定了解后&#xff0c;应该会产生如下疑问&#…...

老牌软件,如今依旧坚挺

今天给大家介绍一个非常好用的老牌电脑清理软件&#xff0c;这个软件好多年之前就有人使用了。 今天找出来之后&#xff0c;发现还是那么的好用&#xff0c;功能非常强大。 Red Button 电脑清理软件 软件是绿色版&#xff0c;无需安装&#xff0c;打开这个图标就能直接使用了…...

springboot整合modbus实现通讯

springboot整合modbus4j实现tcp通讯 前言 本文基于springboot和modbus4j进行简单封装&#xff0c;达到开箱即用的目的&#xff0c;目前本方案仅实现了tcp通讯。代码会放在最后&#xff0c;按照使用方法操作后就可以直接使用 介绍 在使用本方案之前&#xff0c;有必要对modb…...

【java面试】线程篇

1.什么是线程&#xff1f; 线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中的实际运作单位。 2.线程和进程有什么区别&#xff1f; 线程是进程的子集&#xff0c;一个进程可以有很多线程&#xff0c;每条线程并行执行不同的任…...

DeepSeek官方发布R1模型推荐设置

今年以来&#xff0c;DeepSeek便在AI领域独占鳌头&#xff0c;热度一骑绝尘。其官方App更是创造了惊人纪录&#xff0c;成为史上最快突破3000万日活的应用&#xff0c;这一成绩无疑彰显了它在大众中的超高人气与强大吸引力。一时间&#xff0c;各大AI及云服务厂商纷纷投身其中&…...

Vue CLI 配置与插件

Vue CLI 配置与插件 今天我们来聊聊 Vue CLI 的配置与插件。随着项目复杂度的增加&#xff0c;合理配置 Vue CLI 可以帮助我们更高效地管理项目&#xff0c;同时利用插件机制快速集成各种功能。下面我就和大家详细介绍如何配置 Vue CLI&#xff0c;以及如何使用和开发插件&…...

Spring Boot (maven)分页3.0版本 通用版

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…...

pip 与 conda 的故事

pip 换源 pip 官方源 -i https://pypi.python.org/simple pip 清华源 -i https://pypi.tuna.tsinghua.edu.cn/simple pip 阿里源 -i https://mirrors.aliyun.com/pypi/simple PyTorch 安装 pip3 install torch torchvision torchaudio pip3 install torch torchvision torchaud…...

清华大学KVCache.AI团队联合趋境科技联合的KTransformers开源项目为什么那么厉害

KTransformers是一个由清华大学KVAV.AI团队开发的开源项目&#xff0c;旨在优化大语言模型&#xff08;LLM&#xff09;的推理性能&#xff0c;特别是在有限显存资源下运行大型模型。以下是KTransformers的详细介绍&#xff1a; 1. 核心特点 高性能优化&#xff1a;KTransfor…...

DeepSeek 遭 DDoS 攻击背后:DDoS 攻击的 “千层套路” 与安全防御 “金钟罩”_deepseek ddos

当算力博弈升级为网络战争&#xff1a;拆解DDoS攻击背后的技术攻防战——从DeepSeek遇袭看全球网络安全新趋势 在数字化浪潮席卷全球的当下&#xff0c;网络已然成为人类社会运转的关键基础设施&#xff0c;深刻融入经济、生活、政务等各个领域。从金融交易的实时清算&#xf…...

4090单卡挑战DeepSeek r1 671b:尝试量化后的心得的分享

引言&#xff1a; 最近&#xff0c;DeepSeek-R1在完全开源的背景下&#xff0c;与OpenAI的O1推理模型展开了激烈竞争&#xff0c;引发了广泛关注。为了让更多本地用户能够运行DeepSeek&#xff0c;我们成功将R1 671B参数模型从720GB压缩至131GB&#xff0c;减少了80%&#xff…...

【动态路由】系统Web URL资源整合系列(后端技术实现)【apisix实现】

需求说明 软件功能需求&#xff1a;反向代理功能&#xff08;描述&#xff1a;apollo、eureka控、apisix、sentinel、普米、kibana、timetask、grafana、hbase、skywalking-ui、pinpoint、cmak界面、kafka-map、nacos、gateway、elasticsearch、 oa-portal 业务应用等多个web资…...

【Elasticsearch】通过运行时字段在查询阶段动态覆盖索引字段

在 Elasticsearch 中&#xff0c;Override field values at query time是指通过运行时字段&#xff08;runtime fields&#xff09;在查询阶段动态覆盖索引字段的值&#xff0c;而无需修改原始索引数据。这种功能特别适用于以下场景&#xff1a; 1. 动态修改字段值&#xff1a…...

【stm32】定时器

stm32f4xx&#xff1a; APB2 ----> TIM1,TIM8,TIM9,TIM10,TIM11 APB1 ----> TIM2,TIM3,TIM4,TIM5,TIM6,TIM7,TIM12,TIM13,TIM14 一、定时器介绍 1、基本定时器 1.1、TIM6 和 TIM7 的主要特性 ● 16 位自动重载递增计数器 ● 16 位可编程…...

滑动窗口算法篇:连续子区间与子串问题

1.滑动窗口原理 那么一谈到子区间的问题&#xff0c;我们可能会想到我们可以用我们的前缀和来应用子区间问题&#xff0c;但是这里对于子区间乃至子串问题&#xff0c;我们也可以尝试往滑动窗口的思路方向去进行一个尝试&#xff0c;那么说那么半天&#xff0c;滑动窗口是什么…...

华三交换机-链路聚合配置案例

目录 1.链路聚合简述:2.链路聚合的作用:3.链路聚合的模式:4.网络拓扑:5.实验需求:6.网络配置&#xff1a;6.1 链路聚合配置(静态聚合)6.1.1 链路聚合配置:6.1.2 查看链路聚合状态: 6.2 链路聚合配置(动态聚合)6.2.1 链路聚合配置:6.2.2 查看链路聚合状态: 7.网络连通性测试:(接…...

Qwen2-VL 的重大省级,Qwen 发布新旗舰视觉语言模型 Qwen2.5-VL

Qwen2.5-VL 是 Qwen 的新旗舰视觉语言模型&#xff0c;也是上一代 Qwen2-VL 的重大飞跃。 Qwen2.5-VL主要特点 视觉理解事物&#xff1a;Qwen2.5-VL不仅能够熟练识别花、鸟、鱼、昆虫等常见物体&#xff0c;而且还能够分析图像中的文本、图表、图标、图形和布局。 代理性&…...

关系数据库标准语言SQL

1.SOL称为结构化查询语言&#xff0c;它是由1974年由Boyce和Chamberlin提出的&#xff0c;1975年至1979年IBM公司的San Jose Research Laboratory研制了关系数据库管理系统的原型系统SystemR,并实现了这种语言。 2.SQL(Structured Ouery Language)称为结构化查询语言 3.SQL数…...

mysql8.0使用MGR实现高可用与利用MySQL Router构建读写分离MGR集群

MGR是MySQL Group Replication的缩写&#xff0c;即MySQL组复制。 在以往&#xff0c;我们一般是利用MySQL的主从复制或半同步复制来提供高可用解决方案&#xff0c;但这存在以下几个比较严重的问题&#xff1a; 主从复制间容易发生复制延迟&#xff0c;尤其是在5.6以前的版本…...

《AI大模型开发笔记》MoE模型技术对比(Mixtral,Qwen2-MoE,DeepSeek-v3)

MoE模型技术对比(Mixtral,Qwen2-MoE,DeepSeek-v3) MoE(混合专家)大模型进入爆发期!本期我们对比三大开源MoE LLM:Mixtral、Qwen2-MoE 和最新爆火的 DeepSeek-V3。从 2023 年 Mixtral 开启风潮,到 2024 年 DeepSeek-V3 让全球瞩目,MoE 模型到底经历了怎样的进化? De…...

Vue.js 组件开发深入解析:Vue 2 vs Vue 3

Vue.js 是一个渐进式框架&#xff0c;旨在通过声明式渲染和组件化开发来提高开发效率和可维护性。组件是 Vue 应用的基本组成部分&#xff0c;几乎所有的功能都可以通过组件来实现。随着 Vue 3 的发布&#xff0c;Vue.js 引入了许多新的特性&#xff0c;使得组件的开发变得更加…...

DeepSeek大模型一键部署解决方案:全平台多机分布式推理与国产硬件优化异构计算私有部署

DeepSeek R1 走红后&#xff0c;私有部署需求也随之增长&#xff0c;各种私有部署教程层出不穷。大部分教程只是简单地使用 Ollama、LM Studio 单机运行量化蒸馏模型&#xff0c;无法满足复杂场景需求。一些操作配置也过于繁琐&#xff0c;有的需要手动下载并合并分片模型文件&…...

多个用户如何共用一根网线传输数据

前置知识 一、电信号 网线&#xff08;如以太网线&#xff09;中传输的信号主要是 电信号&#xff0c;它携带着数字信息。这些信号用于在计算机和其他网络设备之间传输数据。下面是一些关于网线传输信号的详细信息&#xff1a; 1. 电信号传输 在以太网中&#xff0c;数据是…...

DeepSeek官方推荐的AI集成系统

DeepSeek模型虽然强大先进&#xff0c;但是模型相当于大脑&#xff0c;再聪明的大脑如果没有输入输出以及执行工具也白搭&#xff0c;所以需要有配套工具才能让模型发挥最大的作用。下面是一个典型AI Agent架构图&#xff0c;包含核心组件与数据流转关系&#xff1a; #mermaid-…...

el-select 添加icon

Element-ui-plus 新版本&#xff1a;Select 选择器 | Element Plus 要实现如上的效果 &#xff0c;要用到具名插槽 prefix&#xff0c;看代码&#xff1a; <template><el-dialog ref"dialogRef" v-model"dialogVisible" :title"title"…...

Qt的QPushButton样式设置

在Qt中&#xff0c;可以通过样式表&#xff08;QSS&#xff09;为QPushButton设置丰富的样式。以下是常见样式设置方法的详细说明&#xff1a; 1. 基础样式 // 设置背景色、文字颜色、圆角边框 button->setStyleSheet("QPushButton {"" background-color…...

Java函数计算冷启动从8s到800ms的优化实录

在函数计算场景中,冷启动性能对用户体验至关重要。本文将分享如何将 Java 函数计算的冷启动时间从 8 秒优化到 800 毫秒,包括具体的技术手段和代码示例。 一、背景介绍 函数计算是一种事件驱动的计算服务,用户只需上传代码,无需管理服务器。但在实际使用中,函数计算的冷…...

通过例子学 rust 个人精简版 1-1

1-1 Hello World fn main() {println!("Hello World!");// 动手试一试println!("Im a Rustacean!"); }Hello World! Im a Rustacean!要点1 &#xff1a;println 自带换行符 注释 fn main() {let x 5 /* 90 */ 5;println!("Is x 10 or 100? x …...

STM32、GD32驱动TM1640原理图、源码分享

一、原理图分享 二、源码分享 /************************************************* * copyright: * author:Xupeng * date:2024-07-18 * description: **************************************************/ #include "smg.h"#define DBG_TAG "smg&…...

Centos安装php-8.0.24.tar

查看系统环境 cat /etc/redhat-release 预先安装必要的依赖 yum install -y \ wget \ gcc \ gcc-c \ autoconf \ automake \ libtool \ make \ libxml2 \ libxml2-devel \ openssl \ openssl-devel \ sqlite-devel yum update 1、下载解压 cd /data/ wget https:/…...