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

通过C#脚本更改材质球的参数

        // 设置贴图Texture mTexture = Resources.Load("myTexture", typeof(Texture )) as Texture;material.SetTexture("_MainTex", mTexture );// 设置整数material.SetInt("_Int", 1);// 设置浮点material.SetFloat("_Float", 0.1f);// 设置颜色 rgbamaterial.SetColor("_Color", Color.white);// 设置向量 xyzwmaterial.SetVector("_Vector", new Vector4());// shader的正常接口是没有bool类型的。但通过#pragma multi_compile __ UNITY_name可以实现// 设置shader的UNITY_name为truematerial.EnableKeyword("UNITY_name");// 设置shader的UNITY_name为truematerial.DisableKeyword("UNITY_name");
————————————————版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/lengyoumo/article/details/105167565

一、协程的概念

什么是协程? - 知乎 (zhihu.com)

我们都知道多线程,当需要同时执行多项任务的时候,就会采用多线程并发执行。拿手机支付举例子,当收到付款信息的时候,需要查询数据库来判断余额是否充足,然后再进行付款。

假设最开始我们只有可怜的10个用户,收到10条付款消息之后,我们开启启动10个线程去查询数据库,由于用户量很少,结果马上就返回了。

然而当用户开始爆炸增长,这时候有10000人同时在线付款,你打算启动10000个线程来处理任务。等等,问题来了,因为每个线程至少会占用4M的内存空间,10000个线程会消耗39G的内存,而服务器的内存配置只有区区8G,这时候你有2种选择,一是选择增加服务器,二是选择提高代码效率。那么是否有方法能够提高效率呢?

我们知道操作系统在线程等待IO的时候,会阻塞当前线程,切换到其它线程,这样在当前线程等待IO的过程中,其它线程可以继续执行。当系统线程较少的时候没有什么问题,但是当线程数量非常多的时候,却产生了问题。一是系统线程会占用非常多的内存空间,二是过多的线程切换会占用大量的系统时间。

协程刚好可以解决上述2个问题。协程运行在线程之上,当一个协程执行完成后,可以选择主动让出,让另一个协程运行在当前线程之上。协程并没有增加线程数量,只是在线程的基础之上通过分时复用的方式运行多个协程,而且协程的切换在用户态完成,切换的代价比线程从用户态到内核态的代价小很多。

回到上面的问题,我们只需要启动100个线程,每个线程上运行100个协程,这样不仅减少了线程切换开销,而且还能够同时处理10000个读取数据库的任务,很好的解决了上述任务。


什么是协程?

协程,从字面意义上理解就是协助程序的意思,我们在主任务进行的同时,需要一些分支任务配合工作来达到最终的效果

稍微形象的解释一下,想象一下,在进行主任务的过程中我们需要一个对资源消耗极大的操作时候,如果在一帧中实现这样的操作,游戏就会变得十分卡顿,这个时候,我们就可以通过协程,在一定帧内完成该工作的处理,同时不影响主任务的进行

首先需要了解协程不是线程,协程依旧是在主线程中进行

然后要知道协程是通过迭代器来实现功能的,通过关键字IEnumerator来定义一个迭代方法,注意使用的是IEnumerator


二、协程的使用

void Start ( ){//第一种,无参可以直接使用方法名“字符串”来启用协程StartCoroutine("wjy");//第二种,无参可以调用方法来启用协程StartCoroutine(wjy());//有参StartCoroutine(jwy(1));//第三种,有参StartCoroutine("yjw",1,2);}IEnumerator  wjy(){yield return null;
}IEnumerator  jwy(int b){yield return null;
}IEnumerator yjw(int i,int r){yield return null;
}

IEnumerator需要和yield配合使用

  • yield return null; 暂停协程等待下一帧继续执行

  • yield return 0或其他数字; 暂停协程等待下一帧继续执行

  • yield return new WairForSeconds(时间); 等待规定时间后继续执行

  • yield break; 跳出协程对应方法,其后面的代码不会被执行

  • yield return new WaitForEndOfFrame():等到所有相机画面被渲染完毕后更新

yield 位于 Update() 和 LateUpdate() 之间


三、使用 yield return new WaitForSeconds() 来控制材质球的变化

通过脚本和材质Shader的配合,给角色添加一个被击的效果

当点击被击Hit按钮时,角色的材质有原来的颜色变为红色,等待数秒后变回原来的颜色

可以使用协程yield return new WaitForSeconds()来实现

首先先创建一个空物体,命名为Scripts,用来挂载脚本。

然后创建脚本并命名为material02,在脚本中创建一个变量,用来存放角色。

public GameObject Monster;

将用于变化材质的对象赋予该变量Monster。

随后在场景中创建一个按钮Button

在脚本中添加一个方法OnHit()(角色被击的方法),将之前挂载了脚本的空对象拖到按钮的On Click()中

然后在方法Function中选择该脚本中的相关方法

创建好被击的方法后

再创建协程,然后在被击的方法中调用该协程,完成角色被击的效果

public void OnHit(){StopAllCoroutines();StartCououtine(WaitBeHit());}IEnumerator WaitBeHit(){Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetColor("_Color",Color.red);// 挂起,等待0.2s后继续执行下面的语句yield return new  WaitForSeconds(0.2f);Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetColor("_Color",Color.balck);}

四、利用协程 yield return null 将循环中的内容分帧执行,然后实现角色被毒的效果 

首先也是需要创建被毒的按钮,将脚本中的被毒的方法OnDie()拖动到该按钮上

然后在协程中利用循环和Lerp()函数、yield return null 实现角色从绿色到黑色的渐变

yield return null ;   //表示暂停协程等待到下一帧后继续执行

该协程中_Time初始值为0,在循环中_Time每增加一个deltaTime,使用_Time/time的值来采样Lerp()函数中的值(time为自设值),当遇到yield return null时挂起循环,然后等待下一帧继续执行循环中的下一个,直到不满足循环的条件后跳出循环

所以这样就会实现角色在time时间段内,颜色由绿色渐变为源颜色

 public void OnDU(){Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial = material01;Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.DisableKeyword("_ClipEnable");Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetFloat("_Clip", -0.1f);//在一个协程开始前,停止所有协程StopAllCoroutines();//怪物中毒的协程(在多帧下完成一个函数,常用于变化动态效果)StartCoroutine(WaitDu(2f));}  //被毒协程IEnumerator WaitDu(float time){float _Time = 0;while(_Time<time){_Time += Time.deltaTime;//yield return new WaitForEndOfFrame();Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetColor("_Color", Color.Lerp(Color.green, Color.black, _Time / time));//yield return new WaitForEndOfFrame();yield return null;}yield break;}

 五、利用循环和协程 yield return null 以及 SetFloat实现角色逐渐熔解的效果

public void OnDie()
{Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial = material01;StopAllCoroutines();StartCoroutine(WaitDie(2f));
}IEnumerator WaitDie(float time){float _Time=0;while(_Time<time){_Time += Time.deltaTime;//设置颜色参数Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetColor("_Color", Color.black);//SetFloat用于设置Float类型的参数 例如_Clip//使变体有效,引号中需要写宏的名称Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.EnableKeyword("_CLIPENABLE_ON");Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetFloat("_Clip",_Time/time);//挂起等待这一帧执行完后在继续执行该循环yield return null;}Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetColor("_Color", Color.black);Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetFloat("_Clip", -0.1f);yield break;}
}

当shader中有开关效果时,需要使用EnableKeyWord来打开变体开关

Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMateral.EnableKeyword("_CLIPENABLE_ON")

// _CLIPENABLE_ON为变体宏的名称


六、切换材质球


七、Material和sharedMaterial的区别

Material:

sharedMaterial:


【太妃糖耶】视频加载中,速速查收惊喜!

脚本:

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;public class material02 : MonoBehaviour
{public GameObject Monster;// Start is called before the first frame updatepublic Material material;public Material material01;void Start(){}// Update is called once per framevoid Update(){}public void Onclick(){Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial = material01;//修改材质球的颜色属性//Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetColor("_Color",Color.red);//在一个协程开始前,停止所有协程StopAllCoroutines();//怪物被击协程(等待)StartCoroutine(WaitBehit());}public void OnDU(){Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial = material01;Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.DisableKeyword("_ClipEnable");Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetFloat("_Clip", -0.1f);//在一个协程开始前,停止所有协程StopAllCoroutines();//怪物中毒的协程(在多帧下完成一个函数,常用于变化动态效果)StartCoroutine(WaitDu(2f));}public void OnDie(){Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial = material01;StopAllCoroutines();StartCoroutine(WaitDie(2f));}public void SwitchMaterial(){StopAllCoroutines();Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial = material;}//定义关于被击协程IEnumerator WaitBehit(){Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.EnableKeyword("_ClipEnable");Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetFloat("_Clip", -0.1f);Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetColor("_Color", Color.red);yield return new WaitForSeconds(0.2f);Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetColor("_Color", Color.black);}//被毒协程IEnumerator WaitDu(float time){float _Time = 0;while(_Time<time){_Time += Time.deltaTime;//yield return new WaitForEndOfFrame();Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetColor("_Color", Color.Lerp(Color.green, Color.black, _Time / time));//yield return new WaitForEndOfFrame();yield return null;}yield break;}IEnumerator WaitDie(float time){float _Time=0;while(_Time<time){_Time += Time.deltaTime;//设置颜色参数Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetColor("_Color", Color.black);//SetFloat用于设置Float类型的参数 例如_Clip//使变体有效,引号中需要写宏的名称Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.EnableKeyword("_CLIPENABLE_ON");Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetFloat("_Clip",_Time/time);//挂起等待这一帧执行完后在继续执行该循环yield return null;}Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetColor("_Color", Color.black);Monster.GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial.SetFloat("_Clip", -0.1f);yield break;}
}

角色Shader:

Shader"unity/practice04"
{Properties{_Color("Color",Color)=(0,0,0,0)_MainTex("MainTex",2D)="white"{}_DissolveTex("DissolveTex",2D)="white"{}_RampTex("RampTex",2D)="black"{}[Toggle]_ClipEnable("ClipEnable",int)=0_Clip("Clip",Range(-0.1,1))=0}SubShader{Offset 1,1// UsePass"unity/X_Ray02/XRayPass"Pass{CGPROGRAM#pragma vertex vert;#pragma fragment frag;//在使用multi_compile变体时,前面须添加一个空变体才有效#pragma multi_compile _ _CLIPENABLE_ON#include "UnityCG.cginc"//声明变量sampler2D _MainTex;sampler2D _DissolveTex;float4 _DissolveTex_ST;sampler   _RampTex;         //优化  RampTex贴图只用到了一个方向的数值 fixed _Clip;float4 _Color;struct appdate{float4 vertex:POSITION;float4 uv:TEXCOORD;};struct v2f{float4 pos:SV_POSITION;float4 uv:TEXCOORD;};v2f vert(appdate v){v2f o;o.pos=UnityObjectToClipPos(v.vertex);    //转换为齐次裁剪空间坐标//使第二张纹理贴图uv与主贴图的uv分开,方便调节DissolveTex贴图的平铺与偏移而不影响主贴图o.uv.xy=v.uv.xy;//o.uv.zw=v.uv*_DissolveTex_ST.xy+_DissolveTex_ST.zw;    o.uv.zw=TRANSFORM_TEX(v.uv,_DissolveTex);return o;}float4 frag(v2f i):SV_TARGET{float4 c;float4 mainTex=tex2D(_MainTex,i.uv.xy);c=mainTex;c+=_Color;float4 dissolveTex=tex2D(_DissolveTex,i.uv.zw);//smoothstep 需要优化//float4 rampTex=tex1D(_RampTex,smoothstep(_Clip,_Clip+0.1,dissolveTex.r)); #if _CLIPENABLE_ONfixed ramp=saturate((dissolveTex.r-_Clip)/(_Clip+0.1-_Clip));clip(dissolveTex.r-_Clip);float4 rampTex =tex2D(_RampTex,ramp);c+=rampTex;#endifreturn c;}ENDCG}}}

相关文章:

通过C#脚本更改材质球的参数

// 设置贴图Texture mTexture Resources.Load("myTexture", typeof(Texture )) as Texture;material.SetTexture("_MainTex", mTexture );// 设置整数material.SetInt("_Int", 1);// 设置浮点material.SetFloat("_Float", 0.1f);// 设…...

SpringBoot常用注解

SpringBoot常用注解 SpringBoot框架提供了丰富的注解&#xff0c;极大地简化了应用开发。本文将SpringBoot常用注解按功能分组&#xff0c;并提供详细说明和使用示例。 一、核心注解 1. SpringBootApplication 这是SpringBoot应用的核心注解&#xff0c;标记在主类上&#…...

Vim 编辑器复制文件所有内容

Vim 编辑器复制文件所有内容 在 Vim 的可视化模式下复制所有内容&#xff0c;可以通过以下步骤完成&#xff1a; 方法 1&#xff1a;可视化模式全选复制 进入可视化模式 按下 V&#xff08;大写 V&#xff09;进入 行可视化模式。 全选内容 依次按下 gg&#xff08;跳转到文件…...

MySQL 安全传输

Doris 开启 SSL 功能需要配置 CA 密钥证书和 Server 端密钥证书&#xff0c;如需开启双向认证&#xff0c;还需生成 Client 端密钥证书&#xff1a; 默认的 CA 密钥证书文件位于Doris/fe/mysql_ssl_default_certificate/ca_certificate.p12&#xff0c;默认密码为doris&#xf…...

【速览】数据库

一、课程性质和特点 数据库系统原理是高等教育自学考试计算机信息管理专业(独立本科段)、计算机网络专业(独立本科段)、计算机及应用专业(独立本科段)、计算机通信工程专业(独立本科段)考试计划的一门专业基础课。本课程的设置目的是为了使应考者掌握数据库系统的基本原理、方法…...

MySQL 中利用 mysql.help_topic 实现行转列的深入剖析

MySQL 中利用 mysql.help_topic 实现行转列的深入剖析 在数据库操作中&#xff0c;我们常常会遇到数据格式转换的需求。其中&#xff0c;行转列是一种常见的数据处理任务&#xff0c;它能将数据从一种便于存储的行结构&#xff0c;转换为更便于分析和展示的列结构。在 MySQL 数…...

学习使用smartengine

1、开源地址 smartengine的地址 GitCode - 全球开发者的开源社区,开源代码托管平台 2、如何基于这个开源的框架实现自己的业务定制 参考一些文章&#xff1a; 探索BPMN—工作流技术的理论与实践&#xff5c;得物技术...

鸿蒙保姆级教学

鸿蒙&#xff08;HarmonyOS&#xff09;是华为推出的一款面向全场景的分布式操作系统&#xff0c;支持手机、平板、智能穿戴、智能家居、车载设备等多种设备。鸿蒙系统的核心特点是分布式架构、一次开发多端部署和高性能。以下是从入门到大神级别的鸿蒙开发深度分析&#xff0c…...

HW华为流程管理体系精髓提炼华为流程运营体系(124页PPT)(文末有下载方式)

资料解读&#xff1a;HW华为流程管理体系精髓提炼华为流程运营体系&#xff08;124页PPT&#xff09; 详细资料请看本解读文章的最后内容。 华为作为全球领先的科技公司&#xff0c;其流程管理体系的构建与运营是其成功的关键之一。本文将从华为流程管理体系的核心理念、构建…...

What a code!

要在前后两个图表之间连接对应的坐标轴刻度点&#xff0c;可以通过在父部件中绘制线条来实现。以下是具体步骤和代码实现&#xff1a; 步骤说明 重写paintEvent函数&#xff1a;在Bigraph的paintEvent中绘制连接线。获取刻度值列表&#xff1a;根据每个坐标轴的最小值、最大值…...

Qt开发中的常见问题与解决方案

目录 1.Qt中大资源文件的处理 2.中文URL编码问题 3.编译器类型、版本与操作系统的判断 4.Qt版本与构建套件位数的判断 5.QWidget样式表不起作用的解决方案 6.动态改变弹簧的拉伸策略 7.文件操作的性能优化 8.自定义心跳包与TCP保活机制 9.Qt平台插件加载失败问题 10.…...

蓝桥杯嵌入式赛道复习笔记3(lcd与led引脚冲突问题)

直接上干货 1.在初始化lcd之前要关闭锁存器 切记一定要开启PD2的引脚&#xff0c;否则白搭 2.在用到的lcd函数要加 uint16_t temp GPIOC->ODR;GPIOC->ODR temp;例如...

【cf】交换

交换数组中元素&#xff0c;逆序对数1&#xff0c;所以逆序对奇偶性发生改变 D. Swap Dilemma https://www.cnblogs.com/pure4knowledge/p/18292578这个写的太好了 任意交换两个数&#xff0c;会使序列的逆序对数加减一个奇数。 所以如果两个序列&#xff0c;初始逆序对数的奇…...

anythingLLM之stream-chat传参

1、 接口地址 /v1/workspace/{slug}/stream-chat POST请求 {"message": "根据以下事件信息找出今天发生的事件有哪几个[{\"事件所在桩号\":\"K1045900\",\"事件发生位置&#xff08;经纬度值&#xff09;\":\"114.149…...

友思特应用 | 行业首创:基于深度学习视觉平台的AI驱动轮胎检测自动化

导读 全球领先的轮胎制造商 NEXEN TIRE 在其轮胎生产检测过程中使用了基于友思特伙伴Neurocle开发的AI深度学习视觉平台&#xff0c;实现缺陷检测率高达99.96%&#xff0c;是该行业首个使用AI平台技术推动缺陷检测自动化流程的企业。 将AI应用从轮胎开发扩展到制造过程 2024年…...

Python 变量的定义与使用:从基础到高级

Python 变量的定义与使用:从基础到高级 在 Python 中,变量是程序中最基本的概念之一。变量用于存储数据,并在程序运行过程中随时访问和修改这些数据。理解变量的定义和使用是学习 Python 编程的第一步。 1. 变量的定义 1.1 什么是变量? 变量是程序中用于存储数据的容器。…...

Linux 系统性能调优

概述 在日常运维和架构优化中&#xff0c;Linux 性能调优是提高系统稳定性和运行效率的重要手段。本文结合工作经验&#xff0c;总结了 Linux 服务器常见的优化技巧&#xff0c;涵盖 CPU、内存、磁盘 I/O、网络等多个方面&#xff0c;帮助大家在不同场景下快速定位和优化系统性…...

蓝桥杯备考:奶牛晒衣服

这道题第一眼想用贪心做&#xff0c;1 2 3 我们可以让最多的3用烘干机1秒就能完成&#xff0c;那么是不是我们每次都给湿度最大的衣服用烘干机呢&#xff1f;我们试试哈&#xff0c;比如[5,8]&#xff0c;每秒晒干1我们给8衣服一直用烘干机是需要4秒的&#xff0c;4秒后8这个…...

英伟达“AI 超级碗”开幕

Nvidia的AI和机器人技术进展 2025年03月19日 | AI日报 ![](https://i-blog.csdnimg.cn/direct/e7838b88f17f40c9a435f6dc48d26c59.jpeg#pic_center) 欢迎各位人工智能爱好者。 Nvidia的CEO Jensen Huang刚刚拉开了他的“AI超级碗”&#xff0c;并发表了关于该公司最新芯片、…...

Java使用FFmpegFrameGrabber进行视频拆帧,结合Thumbnails压缩图片保存到文件夹

引入依赖 <dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.17</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ja…...

KVM安全模块生产环境配置与优化指南

KVM安全模块生产环境配置与优化指南 一、引言 在当今复杂多变的网络安全环境下&#xff0c;生产环境中KVM&#xff08;Kernel-based Virtual Machine&#xff09;的安全配置显得尤为重要。本指南旨在详细阐述KVM安全模块的配置方法&#xff0c;结合强制访问控制&#xff08;M…...

如何设计一个 RPC 框架?需要考虑哪些点?

设计一个完整的 RPC 框架需要覆盖以下核心模块及关键技术点&#xff1a; 一、核心架构模块 模块功能与实现要点服务注册与发现使用 Zookeeper/Nacos 等实现服务地址动态注册与订阅&#xff0c;支持心跳检测和节点变更通知网络通信层基于 Netty 或 gRPC 的 HTTP/2 实现异步非阻…...

dify+deepseek联网搜索:免费开源搜索引擎Searxng使用(让你的大模型也拥有联网的功能)

docker安装SearXng 项目地址:https://github.com/searxng/searxng-docker 第一步 git clone下来 git clone https://github.com/searxng/searxng-docker.git第二步 进入 searxng-docker目录中修改docker-compose.yaml(直接复制粘贴) cd searxng-dockerdocker-compose.yaml …...

主流的Java生态下权限管理框架

在当今国内互联网行业中&#xff0c;主流的Java生态下权限管理框架主要分为三类&#xff1a; 通用权限框架&#xff08;含认证和权限&#xff09;权限细粒度控制框架&#xff08;专注资源访问&#xff09;企业级安全认证和权限框架&#xff08;更完善的安全功能&#xff09; &…...

dijkstra算法——47. 参加科学大会

卡码网:47. 参加科学大会https://kamacoder.com/problempage.php?pid=1047 题目描述 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。 小明的起点是第一个车站,终点是最后一个车站。然而,途中的各个车站之间的道路状况、交通拥堵程度以…...

LAC拨号的L2TP VPN实验

目录 一.拓扑信息​ 二.需求分析 三.详细配置信息 1.基础信息配置 服务器&#xff1a; 2.建立PPPOE 3.建立L2TP隧道 4.安全策略 四.测试 一.拓扑信息​ 二.需求分析 一.基础信息配置&#xff08;IP和安全区域&#xff09; 二.建立PPPOE连接 是FW1和FW2之间的配置&#…...

天梯赛 PTAL2-009 抢红包

很简单的一道模拟题&#xff0c;使用map统计每个用户的钱数和红包数&#xff0c;最后在使用结构体存储&#xff0c;重载小于号&#xff0c;sort排序即可。 #include <bits/stdc.h> using namespace std; #define endl \n #define int long long typedef long long ll; c…...

信息学奥赛一本通 1831:【03NOIP提高组】神经网络 | 洛谷 P1038 [NOIP 2003 提高组] 神经网络

【题目链接】 ybt 1831&#xff1a;【03NOIP提高组】神经网络 洛谷 P1038 [NOIP 2003 提高组] 神经网络 【题目考点】 1. 图论&#xff1a;拓扑排序&#xff0c;有向无环图动规 【解题思路】 神经网络是一个有向无环图&#xff0c;输入层神经元是入度为0的顶点&#xff0c…...

如何切换node版本

在Linux或MacOS系统中&#xff0c;切换Node.js版本通常可以通过nvm&#xff08;Node Version Manager&#xff09;工具来实现。nvm允许你在不同的Node.js版本之间轻松切换&#xff0c;而无需重新安装或配置。 安装nvm 使用curl命令安装nvm&#xff08;适用于大多数Linux发行版…...

前端样式库推广——TailwindCss

官方网址&#xff1a; https://tailwindcss.com/docs/installation/using-vite 中文官方文档&#xff1a;https://www.tailwindcss.cn/ github地址&#xff1a;tailwindcss 正在使用tailwindcss的网站&#xff1a;https://tailwindcss.com/showcase 一看github&#xff0c;竟然…...

【前端 vue 或者麦克风,智能语音识别和播放功能】

前端 vue 或者麦克风&#xff0c;智能语音识别和播放功能 1. 终端安装 npm install recordrtc2.引入 import RecordRTC from recordrtc3.html&#xff08;根据自己业务更改&#xff09; <div class"Page"><el-form ref"mainFormRef" class&qu…...

Java基础编程练习第34题-正则表达式

在Java里&#xff0c;正则表达式是一种强大的文本处理工具&#xff0c;它可以用于字符串的搜索、替换、分割和校验等操作。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。Java通过java.util.regex包提供了对正则表达式的支持。 以下是正则表达式在Jav…...

Java+Html实现前后端客服聊天

文章目录 核心组件网络通信层事件调度层服务编排层 Spring实现客服聊天技术方案对比WebScoket建立连接用户上线实现指定用户私聊群聊离线 SpringBootWebSocketHtmljQuery实现客服聊天1. 目录结构2. 配置类3. 实体类、service、controller4. ChatWebSocketHandler消息处理5.前端…...

基于Spring Boot的冷链物流系统的设计与实现的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

《线程池:Linux平台编译线程池动态库发生的死锁问题》

关于如何编译动态库可以移步《Linux&#xff1a;动态库动态链接与静态库静态链接》-CSDN博客 我们写的线程池代码是闭源的&#xff0c;未来想提供给别人使用&#xff0c;只需要提供so库和头文件即可。 系统默认库文件路径为&#xff1a; usr/lib usr/loacl/lib 系统默认头文件…...

鸿蒙NEXT项目实战-百得知识库03

代码仓地址&#xff0c;大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点&#xff1a; 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…...

sql server数据迁移,springboot搭建开发环境遇到的问题及解决方案

最近搭建springboot项目开发环境&#xff0c;数据库连的是sql server&#xff0c;遇到许多问题在此记录一下。 1、sql server安装教程 参考&#xff1a;https://www.bilibili.com/opus/944736210624970769 2、sql server导出、导入数据库 参考&#xff1a;https://blog.csd…...

Sensodrive机器人力控关节模组SensoJoint在海洋垃圾清理机器人中的拓展应用

海洋污染已成为全球性的环境挑战&#xff0c;其中海底垃圾的清理尤为困难。据研究&#xff0c;海洋中约有2600万至6600万吨垃圾&#xff0c;超过90%沉积在海底。传统上&#xff0c;潜水员收集海底垃圾不仅成本高昂&#xff0c;而且充满风险。为解决这一问题&#xff0c;欧盟资助…...

matrix-breakout-2-morpheus 靶机----练习攻略 【仅获取shell】

【此练习仅做到反弹shell】 1.靶机下载地址 https://download.vulnhub.com/matrix-breakout/matrix-breakout-2-morpheus.ova 2. 打开靶机&#xff0c;kali使用nmap扫描同C段的主机 找到靶机ip 确保靶机和kali网卡均为NAT模式 先查看kali的ip nmap 192.168.182.1/24 …...

吴恩达机器学习笔记复盘(八)多元线性回归的梯度下降

简介 梯度下降是多元线性回归的主流优化方法&#xff0c;具有普适性和可扩展性&#xff0c;而标准方程法适用于特定场景。实际应用中需结合特征工程和参数调优提升模型性能。本篇不复盘参数调优。 1.多元线性回归模型 多元线性回归模型假设因变量 与多个自变量 之间存在线性…...

SAP-ABAP: 采购申请创建(PR)BAPI_PR_CREATE 技术指南-详解

BAPI_PR_CREATE 技术指南 用途&#xff1a;通过 RFC 接口创建 SAP 采购申请&#xff08;PR&#xff09;&#xff0c;支持自动化集成与批量处理。 一、功能概览 类别说明核心功能创建标准采购申请、预留转采购申请&#xff0c;支持多行项目及账户分配。集成场景与 MRP 系统、外…...

Python:单继承方法的重写

继承&#xff1a;让类和类之间转变为父子关系&#xff0c;子类默认继承父类的属性和方法 单继承&#xff1a; class Person:def eat(self):print("eat")def sing(self):print("sing") class Girl(Person):pass#占位符&#xff0c;代码里面类下面不写任何东…...

Cursor解锁Claude Max,助力AI编程新突破!

Cursor 最新推出的 Claude Max 模型&#xff0c;以其卓越的性能和创新的能力&#xff0c;正在重新定义我们对 AI 辅助编程的认知。这款搭载 Claude3.7 大脑的超级模型&#xff0c;不仅具备超强智能&#xff0c;还凭借一系列技术突破&#xff0c;向传统 AI 编程工具发起了挑战。…...

Datawhale coze-ai-assistant 笔记4

课程地址&#xff1a; ‍​‌​‬​​&#xfeff;‌​&#xfeff;​‬​​​​​⁠​​‬​‌​​​​⁠​​‍&#xfeff;​​​​​⁠​⁠​&#xfeff;​⁠​‬​第 6 章 应用 - 飞书云文档https://zxdwhda-share.feishu.cn/wiki/Gi9aw4EDTiXxcekUWebcEtmUnb4 应用 AI…...

【基于深度学习的验证码识别】---- part3数据加载、模型等API介绍(2)

四、模型 模型的定义 在机器学习和深度学习中&#xff0c;模型 可以定义为&#xff1a; 一个数学函数或算法&#xff0c;能够从输入数据中提取特征并生成输出。通过训练过程&#xff0c;模型能够学习数据中的规律&#xff08;如分类、回归、聚类等&#xff09;。训练完成后&…...

留 言 板

书单 作者&#xff1a;郦波 《五百年来王阳明》 《郦波评说曾国藩家训》《最是人间留不住》《一天一生》 作者&#xff1a;曾仕强 《论语的生活智慧》 《曾仕强详解道德经 道经》 作者&#xff1a; [何勇&#xff0c;陈晓峰著] 《Greenplum企业应用实战 》 作者 Mark G. Sobel…...

3.18练习

BUUCTF练习day2 [GXYCTF2019]Ping Ping Ping ping题有点熟悉的命令注入&#xff0c;使用 127.0.0.1;ls可以得到当前目录的文件名 cat一下flag.php&#xff0c;发现不行 过滤了空格&#xff0c;那我们有什么方法绕过呢 <(重定向符号)${IFS}$IFS$9%09(tab键) 试一试发现过…...

Redis哨兵模式-黑马学习笔记

redis哨兵模式 1.哨兵主要的作用 用于监控主节点的健康情况 如果主节点挂掉立马选择一个从节点顶上去 2.监控的机制 如何监控呢&#xff1f; sentinel基于心跳机制检测主节点的状态 每个1秒向集群发送ping &#xff08;三体中逻辑用来威胁三体人的心跳检测&#xff09; 如…...

Linkreate wordpressAI插件 24小时自动生成原创图文,新增从百度、必应搜索引擎自动获取相关下拉关键词

Linkreate wordpressAI插件核心功能亮点 文章生成与优化 自动化文章生成&#xff1a;利用 AI 技术&#xff0c;根据关键词生成高质量文章。 支持指定长度和要求&#xff0c;异步生成不阻塞操作。 且 AI 可自动生成精准的 tag 标签&#xff0c;利于 SEO 优化。 批量生成文章…...

《AI赋能云原生区块链,引领供应链溯源革新》

在数字化浪潮席卷全球的当下&#xff0c;供应链管理领域正经历着深刻变革。云原生区块链凭借其去中心化、不可篡改等特性&#xff0c;为供应链溯源带来了前所未有的透明度与可靠性。而AI的融入&#xff0c;更如虎添翼&#xff0c;以强大的智能分析和决策能力&#xff0c;为云原…...