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

Unity3d 实时天气系统基于UniStorm插件和xx天气API实现(含源码)

前言

实时天气在Unity3d三维数字沙盘中的作用非常重要,它能够增强虚拟环境的真实感和互动性,实时天气数据的应用可以提供更为精准和直观的天气信息支持,如果真实的数据加上特效、声音和模型反馈会提高产品档次,提高真实感。
目前Unity3d虽然没有自带天气系统,不过天气关联的插件也是琳琅满目,这里个人推荐,项目中使用过的UniStorm插件,其提供了天气系统、时间系统(日夜切换),天气过度(动画)、物理效果、音效、多平台支持(pc/移动端/ARVR等),而且它还具有高度可扩展性和自定义性。
有了UniStorm插件的天气系统作为外壳支撑,真实的天气数据使用彩云天气API接入实现,它提供实况数据、分钟级降水、小时级和天级数据、还有天气预警数据。目前我只需要其实际数据接口,注册即送10000/日调用量,这里作为测试和技术研究完全够用。

关注并私信 U3D实时天气 免费获取测试程序(底部公众号)。

效果

实时效果:
大雨
在这里插入图片描述

雷雨
在这里插入图片描述

雾霾
在这里插入图片描述

其他效果:
萤火虫
在这里插入图片描述

火暴雨
在这里插入图片描述

雷暴雪
在这里插入图片描述

晴转阴
在这里插入图片描述

实现

这里的实现思路很简单,就是通过天气API接口获取实时的天气数据,通过数据接口返回数据解析出需要的实时数据,将数据显示在UI上,并通过UniStorm插件的UniStormManager管理类直接调用变更天气类型,并同步了三维地图上的天实时气系统效果。本工程基于Unity2019.4.22f1c1实现

UI搭建

这里的UI系统主要是展示一些文字信息:天气、温度、湿度等,接口提供了很多数据,可以按需解析显示。这里的UI简单搭建:
在这里插入图片描述

即用于文字显示天气、温度、湿度等,图标显示天气图标,按钮点击同步天气。

经纬度数据

天气数据的获取需要位置信息,数字沙盘大部分都是运行在PC平台上,获取经纬度直接通过设备的GPS并不适用,因为PC通常没有内建的GPS模块,使用外部API或服务来获取基于IP地址的地理位置。这边采用的代码如下(仅供参考,该接口偶尔会请求异常):

//获取ip地址信息
IEnumerator GetIPLocation()
{UnityWebRequest request = UnityWebRequest.Get("https://ipinfo.io/json");yield return request.SendWebRequest();// 检查网络错误或 HTTP 错误if (request.isNetworkError || request.isHttpError)Debug.LogError("请求失败: " + request.error);else{// 解析 JSON 数据string jsonResponse = request.downloadHandler.text;LocationData locationData = JsonUtility.FromJson<LocationData>(jsonResponse);string[] latLong = locationData.loc.Split(',');if (latLong.Length == 2){Latitude = latLong[0];Longitude = latLong[1];Debug.Log("Latitude: " + Latitude + ", Longitude: " + Longitude);}else{Debug.LogWarning("经纬度解析失败!");}}
}

其中返回的json数据类如下:

[System.Serializable]
public class LocationData
{public string ip;public string city;public string region;public string country;public string loc; // "latitude,longitude"
}

天气数据

数据通过接口直接前往api开放平台注册登录,然后创建应用:
在这里插入图片描述

创建应用后选择接口类型(天气),应用场景(随便选),填写应用名称后点击创建即可,创建后在应用管理列表能看到Token和用量等信息,Token后续需要使用,还需注意QPS为1,无法支撑请求频繁情况。
在这里插入图片描述

请求接口:

curl "https://api.caiyunapp.com/v2.6/TAkhjf8d1nlSlspN/101.6656,39.2072/realtime"

请求代码如下:

    IEnumerator GetWeatherInfo(){string url = $"{BaseUrl}/{ApiKey}/{Longitude},{Latitude}/realtime";//Debug.Log("请求地址: " + url);using (UnityWebRequest request = UnityWebRequest.Get(url)){yield return request.SendWebRequest();// 检查网络错误或 HTTP 错误if (request.isNetworkError || request.isHttpError)Debug.LogError("请求失败: " + request.error);else{Debug.Log("请求成功: " + request.downloadHandler.text);}}}

请求返回实时数据结构:

{"status": "ok",             // 返回状态  "api_version": "v2.6",    // API 版本"api_status": "active",     // API 服务状态"lang": "zh_CN",          // 返回语言"unit": "metric",        // 单位"tzshift": 28800,       // 时区偏移"timezone": "Asia/Shanghai",  // 时区"server_time": 1640745758,"location": [39.2072, 101.6656],"result": {"realtime": {"status": "ok","temperature": -7,  // 地表 2 米气温"humidity": 0.58,  // 地表 2 米湿度相对湿度(%)"cloudrate": 0,  // 总云量(0.0-1.0)"skycon": "CLEAR_DAY",  // 天气现象"visibility": 7.8,  // 地表水平能见度"dswrf": 47.7,  // 向下短波辐射通量(W/M2)"wind": {"speed": 1.8,  // 地表 10 米风速"direction": 22  // 地表 10 米风向},"pressure": 85583.47,  // 地面气压"apparent_temperature": -9.9,  // 体感温度"precipitation": {"local": {"status": "ok","datasource": "radar","intensity": 0  // 本地降水强度},"nearest": {"status": "ok","distance": 10000,  // 最近降水带与本地的距离"intensity": 0  // 最近降水处的降水强度}},"air_quality": {"pm25": 45,  // PM25 浓度(μg/m3)"pm10": 49,  // PM10 浓度(μg/m3)"o3": 6,  // 臭氧浓度(μg/m3)"so2": 8,  // 二氧化硫浓度(μg/m3)"no2": 42,  // 二氧化氮浓度(μg/m3)"co": 1.1,  // 一氧化碳浓度(mg/m3)"aqi": {"chn": 63,  // 国标 AQI"usa": 124},"description": {"chn": "良","usa": "轻度污染"}},"life_index": {"ultraviolet": {"index": 3,"desc": "弱"  // 参见 [生活指数](tables/lifeindex)},"comfort": {"index": 12,"desc": "湿冷"  // 参见 [生活指数](tables/lifeindex)}}},"primary": 0}
}

按这个请求格式,先根据需要的数据新建需要解析的数据结构:

// 定义数据结构(根据彩云天气 API 文档)
[System.Serializable]
public class WeatherData
{public WeatherResult result;
}[System.Serializable]
public class WeatherResult
{public RealtimeWeather realtime;
}[System.Serializable]
public class RealtimeWeather
{public string skycon; // 天气状况public float temperature; // 温度public float humidity; // 湿度public float pressure; // 地面气压
}

天气显示

上一步,通过接口获取了天气实时数据并进行了解析,这一步将通过数据的更新UI和场景中的天气类型。
UI的刷新Text内容直接数据赋值显示即可,图标和天气现象文字需要根据内容做个转换映射。天气现象代码和文字如下:
在这里插入图片描述

这里直接将其转为字典(Dictionary)存储,方便天气现象文字获取:

// 天气现象 映射表
private static readonly Dictionary<string, string> SkyconMap = new Dictionary<string, string>{{"CLEAR_DAY", "晴(白天)"},{"CLEAR_NIGHT", "晴(夜间)"},{"PARTLY_CLOUDY_DAY", "多云(白天)"},{"PARTLY_CLOUDY_NIGHT", "多云(夜间)"},{"CLOUDY", "阴"},{"LIGHT_HAZE", "轻度雾霾"},{"MODERATE_HAZE", "中度雾霾"},{"HEAVY_HAZE", "重度雾霾"},{"LIGHT_RAIN", "小雨"},{"MODERATE_RAIN", "中雨"},{"HEAVY_RAIN", "大雨"},{"STORM_RAIN", "暴雨"},{"FOG", "雾"},{"LIGHT_SNOW", "小雪"},{"MODERATE_SNOW", "中雪"},{"HEAVY_SNOW", "大雪"},{"STORM_SNOW", "暴雪"},{"DUST", "浮尘"},{"SAND", "沙尘"},{"WIND", "大风"}
};

关于天气的图标使用的是UniStorm插件内置的图标,正式项目可以让美术搞一套完整的,我这里使用的就是很精简的:
在这里插入图片描述

这里的图标没法和天气接口的天气现象一一对应,所以这些图标也需要中间一次转换:

//获取图标类型
string GetIconType(string skycon)
{string icon = "";switch (skycon){case "CLEAR_DAY":case "CLEAR_NIGHT":icon = "clear";break;case "PARTLY_CLOUDY_DAY":case "PARTLY_CLOUDY_NIGHT":icon = "partly_cloudy";break;case "CLOUDY":case "FOG":icon = "cloudy";break;case "LIGHT_HAZE":case "MODERATE_HAZE":case "HEAVY_HAZE":icon = "haze";break;case "LIGHT_RAIN":case "MODERATE_RAIN":icon = "light_rain";break;case "HEAVY_RAIN":case "STORM_RAIN":icon = "heavy_rain";break;case "LIGHT_SNOW":case "MODERATE_SNOW":icon = "light_snow";break;case "HEAVY_SNOW":case "STORM_SNOW":icon = "heavy_snow";break;case "DUST":case "SAND":icon = "sand";break;default:icon = "clear";break;}return icon;
}

如上处理映射了天气现象和需要动态加载的天气图标,更新天气UI的完整代码如下:

//更新天气UI
void UpdateWeatherUI(string jsonData)
{try{// 使用 Unity 内置的 JsonUtility 或第三方 JSON 解析工具(如 Newtonsoft.Json)解析数据WeatherData weatherData = JsonUtility.FromJson<WeatherData>(jsonData);if (weatherData != null && weatherData.result != null){text_skycon.text = "天气:<color=#14FF00>" + (SkyconMap.ContainsKey(weatherData.result.realtime.skycon) ?SkyconMap[weatherData.result.realtime.skycon] : weatherData.result.realtime.skycon) + "</color>";text_temp.text = ($"温度:<color=#14FF00>{weatherData.result.realtime.temperature}℃</color>");text_humidity.text = ($"湿度:<color=#14FF00>{weatherData.result.realtime.humidity * 100}%</color>");text_pressure.text = ($"气压:<color=#14FF00>{weatherData.result.realtime.pressure} Pa</color>");Icon.sprite = Resources.Load<Sprite>("Weather Icons/" + GetIconType(weatherData.result.realtime.skycon));SwitchWeatherType(weatherData.result.realtime.skycon);}else{Debug.LogError("解析天气数据失败");}}catch (Exception e){Debug.LogError($"解析天气数据失败:" + e);}
}

接下来处理三维场景中的天气系统,即将接口返回的天气现象转换到UniStorm插件的天气类型,并进行切换的操作,这里也存在两者之间没法直接一一对应,如下是插件的内置天气类型:

UniStorm插件内置天气类型说明
0 Clear //晴朗
1 Mostly Clear //大部分晴朗
2 Mostly Cloudy //大部分多云
3 Partly Cloudy //局部多云
4 Cloudy //多云
5 Lightning Bugs //萤火虫
6 Blowing Pollen //吹花粉
7 Blowing Leaves //吹落叶
8 Blowing Pine Needles //吹松针
9 Blowing Snow //飞雪
10 Foggy //雾
11 Overcast //阴
12 Hail //冰雹
13 Heavy Rain //暴雨
14 Rain //雨
15 Light Rain //小雨
16 Drizzle //毛毛雨
17 Heavy Snow //大雪
18 Snow //雪
19 Light Snow //小雪
20 Thunderstorm //雷雨
21 Thunder Snow //雷雪
22 Dust Storm //尘暴
23 Fire Rain //火星雨
24 Fire Storm //火星暴雨

这些是在UniStorm System节点上的AllWeatherTypes列表,上面的序号和类型是默认的,它新增了很多创意类型如Fire Rain、Fire Storm和Lightning Bugs等,默认如下:
在这里插入图片描述

当然您也可以去新增/修改自己的天气类型,但是如果修改过AllWeatherTypes列表,则没法直接套用。这里的天气映射和切换代码如下:

//切换场景中天气
void SwitchWeatherType(string skycon)
{int idx = 0;switch (skycon){case "CLEAR_DAY":case "CLEAR_NIGHT":idx = 0;break;case "PARTLY_CLOUDY_DAY":case "PARTLY_CLOUDY_NIGHT":idx = 3;break;case "CLOUDY":idx = 2;break;case "FOG":idx = 10;break;case "LIGHT_HAZE":case "MODERATE_HAZE":case "HEAVY_HAZE":idx = 22;break;case "LIGHT_RAIN":idx = 15;break;case "MODERATE_RAIN":idx = 14;break;case "HEAVY_RAIN":case "STORM_RAIN":idx = 13;break;case "LIGHT_SNOW":idx = 19;break;case "MODERATE_SNOW":idx = 18;break;case "HEAVY_SNOW":case "STORM_SNOW":idx = 17;break;case "DUST":case "SAND":idx = 22;break;default:idx = 0;break;}if (UniStormSystem.Instance != null && idx >= 0 && idx < UniStormSystem.Instance.AllWeatherTypes.Count)UniStormManager.Instance?.ChangeWeatherInstantly(UniStormSystem.Instance.AllWeatherTypes[idx]);
}

其中ChangeWeatherInstantly方法是直接切换,没有过度动画等效果,当然您也可以采用ChangeWeatherWithTransition方法,这个带个过度,如雨转晴中间有个丝滑的过度效果:
在这里插入图片描述

源码工程

https://download.csdn.net/download/qq_33789001/90272787

相关文章:

Unity3d 实时天气系统基于UniStorm插件和xx天气API实现(含源码)

前言 实时天气在Unity3d三维数字沙盘中的作用非常重要&#xff0c;它能够增强虚拟环境的真实感和互动性&#xff0c;实时天气数据的应用可以提供更为精准和直观的天气信息支持&#xff0c;如果真实的数据加上特效、声音和模型反馈会提高产品档次&#xff0c;提高真实感。 目前…...

【学习总结|DAY032】后端Web实战:登录认证

在 Web 后端开发中&#xff0c;登录认证是保障系统安全和用户数据隐私的关键环节。本文将结合实际开发案例&#xff0c;深入探讨登录功能与登录校验的实现思路和技术细节&#xff0c;希望能帮助读者更好地掌握这一重要知识点。 一、登录功能实现 1.1 思路分析 登录功能的核心…...

在 C++ 中实现调试日志输出

在 C 编程中&#xff0c;调试日志对于定位问题和优化代码至关重要。有效的调试日志不仅能帮助我们快速定位错误&#xff0c;还能提供有关程序运行状态的有价值的信息。本文将介绍几种常用的调试日志输出方法&#xff0c;并教你如何在日志中添加时间戳。 1. 使用 #ifdef _DEBUG…...

2-Kbengine+Unity3D多人在线游戏DEMO源码架构分析

2-Kbengine+Unity3D多人在线游戏DEMO源码架构分析 目录 一、服务器端 1、编写并生成我们的服务器端和客户端通用的游戏协议 2、 认识Entity实体 3、 官方DEMO-kbengine_demos_assets分析 二、 客户端...

Android系统开发(八):从麦克风到扬声器,音频HAL框架的奇妙之旅

引言&#xff1a;音浪太强&#xff0c;我稳如老 HAL&#xff01; 如果有一天你的耳机里传来的不是《咱们屯里人》&#xff0c;而是金属碰撞般的杂音&#xff0c;那你可能已经感受到了 Android 音频硬件抽象层 (HAL) 出问题的后果&#xff01;在 Android 音频架构中&#xff0c…...

使用nginx搭建通用的图片代理服务器,支持http/https/重定向式图片地址

从http切换至https 许多不同ip的图片地址需要统一进行代理 部分图片地址是重定向地址 nginx配置 主站地址&#xff1a;https://192.168.123.100/ 主站nginx配置 server {listen 443 ssl;server_name localhost;#ssl证书ssl_certificate ../ssl/ca.crt; #私钥文件ssl_ce…...

Java-数据结构-二叉树习题(1)

对于二叉树的学习&#xff0c;主要的还是得多多练习~毕竟二叉树属于新的知识&#xff0c;并且也并不是线性结构&#xff0c;再加上经常使用递归的方法解决二叉树的问题&#xff0c;所以代码的具体流程还是无法看到的&#xff0c;只能通过画图想象&#xff0c;所以还是必须多加练…...

ReactiveSwift 简单使用

记录 ReactiveSwift 简单使用 导入 ReactiveSwift 库创建 TestViewModel 文件 enum JKTypeType: Int {case cloudcase devicecase weater }// 通过监听属性变化 class TestViewModel: NSObject {lazy var recordType: Property<JKTypeType> {return Property(recordTy…...

iOS - Objective-C 底层实现中的哈希表

1. 关联对象存储&#xff08;AssociationsHashMap&#xff09; // 关联对象的哈希表实现 typedef DenseMap<const void *, ObjcAssociation> ObjectAssociationMap; typedef DenseMap<DisguisedPtr<objc_object>, ObjectAssociationMap> AssociationsHashMa…...

SystemUI 实现音量条同步功能

需求&#xff1a;SystemUI 实现音量条同步功能 具体问题 以前在SystemUI 下拉框添加了音量条控制&#xff0c;目前发现在SystemUI下拉框显示状态的情况下&#xff0c; 按键或者底部虚拟导航点击音量加减时候&#xff0c;SystemUI音量条不更新。 如下图&#xff1a;两个Syste…...

Android SystemUI——车载CarSystemUI加载(八)

Android 系统早期的状态栏和导航栏对于手机设备来说那是相当重要的,但是随着手机版本的不断更新,状态栏和导航栏对于手机的重要性在逐渐降低,特别是在快捷手势出现之后,导航栏几乎变得可有可无。但是对于当前如火如荼的车载系统来说,状态栏和导航栏却几乎是必备的,谷歌自…...

全类别机器人传感器模块推荐

视觉感知 双目视觉模块&#xff1a;常见分辨率1280720&#xff0c;帧率30fps-60fps&#xff0c;水平视场角60-90&#xff0c;垂直视场角40-60&#xff0c;通过USB接口传数据。用于机器人导航、避障等&#xff0c;基于三角测量原理获取三维信息&#xff0c;定位更精准。单目摄像…...

怎么用python写个唤醒睡眠电脑的脚本?

环境&#xff1a; win10 python3.12 问题描述&#xff1a; 怎么用python写个唤醒睡眠电脑的脚本&#xff1f; 解决方案&#xff1a; 1.唤醒处于睡眠状态的电脑通常不是通过编程直接实现的&#xff0c;而是依赖于硬件和操作系统提供的特性。对于Windows系统&#xff0c;可…...

2025春秋杯冬季赛 day1 crypto

文章目录 通往哈希的旅程小哈斯RSA1ez_rsa 通往哈希的旅程 根据提示推断是哈希函数&#xff0c;ai一下&#xff0c;推测大概率是一个sha1&#xff0c;让ai写一个爆破脚本即可 import hashlib# 给定目标 SHA-1 哈希值 target_hash "ca12fd8250972ec363a16593356abb1f3cf…...

C# 条件编译的应用

一、引言 在 C# 的开发领域中&#xff0c;条件编译宛如一位幕后英雄&#xff0c;虽不常被开发者挂在嘴边&#xff0c;却在诸多关键场景中发挥着无可替代的作用。它就像是一把神奇的钥匙&#xff0c;能够依据特定的条件&#xff0c;精准地决定源代码中的某些部分是否被纳入最终…...

C语言编程笔记:文件处理的艺术

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一、为什么要用文件二、文件的分…...

了解 .mgJSON 文件

.mgJSON &#xff08;Motion Graphics JSON&#xff09;是一个基于标准 JSON 格式的文件扩展名&#xff0c;专门用于存储和交换与动态图形、动画和多媒体应用相关的数据。该格式支持静态和动态数据流&#xff0c;能够精确描述动画、物体变换、图形效果等。 .mgJSON 文件通过层级…...

通信协议之多摩川编码器协议

前言 学习永无止境&#xff01;本篇是通信协议之多摩川编码器协议&#xff0c;主要介绍RS485硬件层以及软件层帧格式。 注&#xff1a;本文章为学习笔记&#xff0c;部分图片与文字来源于网络/应用手册&#xff0c;如侵权请联系&#xff01;谢谢&#xff01; 一、多摩川协议概述…...

dbt Semantic Layer 详细教程-6 :指标(metrics)配置规范及示例

前面几篇博文介绍了语义模型及实体、维度和度量规范及示例&#xff0c;一旦创建了语义模型&#xff0c;就该开始添加度量了。可以在与语义模型相同的YAML文件中定义度量&#xff0c;也可以将度量拆分为单独的YAML文件&#xff0c;放入任何其他子目录中&#xff08;前提是这些子…...

Redis可视化工具--RedisDesktopManager的安装

需要安装使用&#xff0c;0.9.4以上是要收费的 下载地址&#xff1a;https://github.com/uglide/RedisDesktopManager/releases/download/0.9.3/redis-desktop-manager-0.9.3.817.exe 详情&#xff1a;https://blog.csdn.net/u012688704/article/details/82251338 点击进行安…...

《汽车维护与修理》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答&#xff1a; 问&#xff1a;《汽车维护与修理》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《汽车维护与修理》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;中国汽车维修行业协会 …...

窥探QCC518x/308x系列与手机之间的蓝牙HCI记录与分析 - 手机篇

今天要介绍给大家的是, 当我们在开发高通耳机时如果遇到与手机之间相容性问题, 通常会用Frontline或Ellisys的Bluetooth Analyzer来截取资料分析, 如果手边没有这样的仪器, 要如何窥探Bluetooth的HCI log.这次介绍的是手机篇. 这次跟QCC518x/QCC308x测试的手机是Samsung S23 U…...

MySQL的不同SQL模式导致行为不同?

现象&#xff1a; 我在两个mysql库都有相同定义的表&#xff0c;其中一个字段是varchar(1200)。当我都对这个表进行insert操作&#xff0c;而且超过此字段的规定长度&#xff08;此处是1200&#xff09;&#xff0c;这两库的行为是不一样的&#xff1a;库B是直接报错too long&…...

【SPIE出版|EI、Scopus双检索】2025年绿色能源与环境系统国际学术会议(GEES 2025)

2025年绿色能源与环境系统国际学术会议&#xff08;GEES 2025&#xff09; 会议时间&#xff1a;2025年6月20-22日 会议地点&#xff1a;中国-湖北 最终截稿日期&#xff1a;2025年6月8日 注册截止时间&#xff1a;2025年6月8日 提交检索类型&#xff1a;EI Compendex 和 …...

搭建一个基于Spring Boot的书籍学习平台

搭建一个基于Spring Boot的书籍学习平台可以涵盖多个功能模块&#xff0c;例如用户管理、书籍管理、学习进度跟踪、笔记管理、评论和评分等。以下是一个简化的步骤指南&#xff0c;帮助你快速搭建一个基础的书籍学习平台。 — 1. 项目初始化 使用 Spring Initializr 生成一个…...

SDL2:PC端编译使用 -- SDL2多媒体库使用音频实例

更多内容&#xff1a;XiaoJ的知识星球 SDL2&#xff1a;PC端编译使用 1. SDL2&#xff1a;PC端编译使用1.1 安装必要的依赖1.2 下载编译SDL21.3 SDL2使用示例&#xff1a;Audio1.4 运行示例程序 1. SDL2&#xff1a;PC端编译使用 1.1 安装必要的依赖 首先&#xff0c;确保安装…...

考研计算机组成原理——零基础学习的笔记

第一章 研究计算机硬件的学科。 1.计算机系统概述 计算机系统硬件软件&#xff08;系统软件&#xff1a;比如操作系统、数据库管理系统、标准程序库等&#xff0c;应用软件&#xff1a;QQ等&#xff09; 1.2计算机的层次结构 1.2.1计算机硬件的基本组成 冯诺伊曼计算机&a…...

STM32 FreeROTS Tickless低功耗模式

低功耗模式简介 FreeRTOS 的 Tickless 模式是一种特殊的运行模式&#xff0c;用于最小化系统的时钟中断频率&#xff0c;以降低功耗。在 Tickless 模式下&#xff0c;系统只在有需要时才会启动时钟中断&#xff0c;而在无任务要运行时则完全进入休眠状态&#xff0c;从而降低功…...

GAN 用于图像增强

工程需求&#xff0c;临时学一下gan的原理和基于图像增强的实现 原理 论文链接 Generative Adversarial Nets 我们提出了一个通过对抗过程来估计生成模型的新框架&#xff0c;其中我们同时训练两个模型&#xff1a;捕获数据分布的生成模型G和估计样本来自训练数据而不是G的…...

【RAG落地利器】向量数据库Qdrant使用教程

TrustRAG项目地址&#x1f31f;&#xff1a;https://github.com/gomate-community/TrustRAG 可配置的模块化RAG框架 环境依赖 本教程基于docker安装Qdrant数据库&#xff0c;在此之前请先安装docker. Docker - The easiest way to use Qdrant is to run a pre-built Docker i…...

Day30下 - RAG系统

一、入库文档&#xff0c;问答查询 1. 数据读取 from langchain_core.documents import Document import randomfile_name"knowledge/熬夜救星护肤霜.txt" with open(filefile_name, mode"r", encoding"utf-8") as f:data f.read()# 随机生成…...

linux 安装PrometheusAlert配置钉钉告警

在 Linux 上安装 PrometheusAlert 并配置钉钉告警的步骤如下: 1. 准备工作 钉钉机器人: 在钉钉群中创建一个机器人,获取 Webhook URL。示例 Webhook URL:https://oapi.dingtalk.com/robot/send?access_token=your_dingtalk_token。PrometheusAlert 安装包: 从 Prometheus…...

EAMM: 通过基于音频的情感感知运动模型实现的一次性情感对话人脸合成

EAMM: 通过基于音频的情感感知运动模型实现的一次性情感对话人脸合成 1所有的材料都可以在EAMM: One-Shot Emotional Talking Face via Audio-Based Emotion-Aware Motion Model网站上找到。 摘要 尽管音频驱动的对话人脸生成技术已取得显著进展&#xff0c;但现有方法要么忽…...

Linux提权-02 sudo提权

文章目录 1. sudo 提权原理1.1 原理1.2 sudo文件配置 2. 提权利用方式2.1 sudo权限分配不当2.2 sudo脚本篡改2.3 sudo脚本参数利用2.4 sudo绕过路径执行2.5 sudo LD_PRELOAD环境变量2.6 sudo caching2.7 sudo令牌进程注入 3. 参考 1. sudo 提权原理 1.1 原理 sudo是一个用于在…...

【Pandas】pandas Series apply

Pandas2.2 Series Function application, GroupBy & window 方法描述Series.apply()用于将一个函数应用到 Series 的每个元素或整个 Series pandas.Series.apply pandas.Series.apply 是 Pandas 库中 Series 对象的一个方法&#xff0c;用于将一个函数应用到 Series 的…...

Git学习笔记

Git学习笔记 目录 版本控制 本地版本控制 集中版本控制 分布式版本控制 基本使用方式 Git Config Git Remote Git Add Objects Refs Annotation Tag 追溯历史版本 修改历史版本 Git GC Git Clone & Pull & Fetch Git Push 常见问题 不同的工作流 集…...

HTML5 Canvas实现的跨年烟花源代码

以下是一份基于HTML5 Canvas实现的跨年烟花源代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">…...

javaEE初阶————多线程初阶(2)

今天给大家带来第二期啦&#xff0c;保证给大家讲懂嗷&#xff1b; 1&#xff0c;线程状态 NEW安排了工作还未开始行动RUNNABLE可工作的&#xff0c;或者即将工作&#xff0c;正在工作BLOCKED排队等待WAITING排队等待其他事TIMED_WAITING排队等待其他事TERMINATED工作完成了 …...

linux下的NFS和FTP部署

目录 NFS应用场景架构通信原理部署权限认证Kerberos5其他认证方式 命令serverclient查看测试系统重启后自动挂载 NFS 共享 高可用实现 FTP对比一些ftp服务器1. **vsftpd (Very Secure FTP Daemon)**2. **ProFTPD (Professional FTP Daemon)**3. **Pure-FTPd**4. **WU-FTPD (Was…...

《Java核心技术II》可中断套接字

4.2.4 可中断套接字 SocketChannel可以中断套接字 SocketChannel channel.open(new InetSocketAddress(host,port)); 通道(channel)并没有与之相关联的流&#xff0c;实际上&#xff0c;所拥有的read和write方法都是通过Buffer对象实现的。 如果不想处理缓冲区&#xff0c;…...

电梯系统的UML文档05

Dispatcher 不控制实际的电梯组件&#xff0c;但它在软件系统中是重要的。每一个电梯有一个ispatcher&#xff0c;主要功能是计算电梯的移动方向、移动目的地以及保持门的打开时间。它和系统中除灯控制器以外的几乎所有控制对象交互。 安全装置也是一个环境对象&#xff0c;它…...

浅谈云计算19 | OpenStack管理模块 (上)

OpenStack管理模块&#xff08;上&#xff09; 一、操作界面管理架构二、认证管理2.1 定义与作用2.2 认证原理与流程2.2.1 认证机制原理2.2.2 用户认证流程 三、镜像管理3.1 定义与功能3.2 镜像服务架构3.3 工作原理与流程3.3.1 镜像存储原理3.3.2 镜像检索流程 四、计算管理4.…...

1.5 GPT 模型家族全解析:从 GPT-1 到 GPT-4 的演进与创新

GPT 模型家族全解析:从 GPT-1 到 GPT-4 的演进与创新 随着人工智能技术的飞速发展,GPT(Generative Pre-trained Transformer)模型家族已经成为了现代自然语言处理(NLP)领域的标杆。从初代的 GPT-1 到最新的 GPT-4,每一代模型的发布都标志着人工智能技术的一个飞跃,并推…...

C#如何调用执行命令行窗口(CMD)

一、引言 在 C# 的编程世界里&#xff0c;我们常常会遇到需要与操作系统底层进行交互的场景。这时&#xff0c;调用命令行窗口&#xff08;CMD&#xff09;就成为了一个强大的工具。无论是自动化日常任务&#xff0c;还是执行外部程序和批处理文件&#xff0c;通过 C# 调用 CM…...

归子莫的科技周刊#2:白天搬砖,夜里读诗

归子莫的科技周刊#2&#xff1a;白天搬砖&#xff0c;夜里读诗 本周刊开源&#xff0c;欢迎投稿。 刊期&#xff1a;2025.1.5 - 2025.1.11。原文地址。 封面图 下班在深圳看到的夕阳&#xff0c;能遇到是一种偶然的机会&#xff0c;能拍下更是一种幸运。 白天搬砖&#xff0c;…...

Spring Boot + Apache POI 实现 Excel 导出:BOM物料清单生成器(支持中文文件名、样式美化、数据合并)

目录 引言 Apache POI操作Excel的实用技巧 1.合并单元格操作 2.设置单元格样式 1. 创建样式对象 2. 设置边框 3. 设置底色 4. 设置对齐方式 5. 设置字体样式 6.设置自动换行 7. 应用样式到单元格 3. 定位和操作指定单元格 4.实现标签-值的形式 5.列宽设置 1. 设…...

OpenVela——专为AIoT领域打造的开源操作系统

目录 一、系统背景与开源 1.1. 起源 1.2. 开源 二、系统特点 2.1. 轻量化 2.2. 标准兼容性 2.3. 安全性 2.4. 高度可扩展性 三、技术支持与功能 3.1. 架构支持 3.2. 异构计算支持 3.3. 全面的连接套件 3.4. 开发者工具 四、应用场景与优势 4.1. 应用场景 4.2. …...

02UML图(D1_结构图)

目录 学习前言 ---------------------------------- 讲解一&#xff1a;类图 一、类图的组成结构 1. 类(Class) 1.1. 类的成员变量的表示方式 1.2. 类的成员方法的表示方式 2. 接口&#xff08;Interface&#xff09; 3. 包&#xff08;Package&#xff09; 二、UML类…...

二十三种设计模式-装饰器模式

一、定义与核心思想 装饰器模式是一种结构型设计模式&#xff0c;其核心思想是动态地给一个对象添加一些额外的职责。通过这种方式&#xff0c;可以在不改变原有对象结构的基础上&#xff0c;灵活地增加新的功能&#xff0c;使得对象的行为可以得到扩展&#xff0c;同时又保持…...

SSM课设-酒店管理系统功能设计

【课设者】SSM课设-酒店管理系统 分为用户端管理员端 技术栈: 后端: Spring Spring MVC MyBatis Mysql JSP 前端: HtmlCssJavaScriptAjax 功能: 用户端主要功能包括&#xff1a; 登录注册 客房预订 客房评论 首页 管理员端主要功能包括&#xff1a; 会员信息管理 客房信息…...