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

【Unity网络编程知识】C#的 Http相关类学习

1、搭建HTTP服务器

  • 使用别人做好的HTTP服务器软件,一般作为资源服务器时使用该方式(学习阶段建议使用)
  • 自己编写HTTP服务器应用程序,一般作为Web服务器或者短连接游戏服务器时使用该方式(工作后由后端程序员来做)

1.1 使用hfs搭建HTTP服务器,双击打开运行即可

1.2 添加服务器访问文件夹

右键打开添加文件夹

选择自己需要设置的访问文件夹

 1.3 设置允许访问和上传权限

移到目标文件夹右键选择Properties

创建允许访问用户凭证

 设置访问权限

设置上传权限

 设置删除权限

2、C#的Http关键类介绍

2.1 HttpWebRequest类

重要方法

1)Create 创建新的WebRequest,用于进行HTTP相关操作

2)Abort  如果正在进行文件传输,用此方法可以终止传输

3)GetRequestStream 获取用于上传的流

4)GetResponse 返回HTTP服务器响应

5)Begin/EndGetRequestStream 异步获取用于上传的流

6)Begin/EndGetResponse 异步获取返回的HTTP服务器响应

重要成员

1)Credentials通信凭证,设置为NetworkCredential对象

2)PreAuthenticate是否随请求发送一个身份验证标头,一般需要进行身份验证时需要将其设置为true

3)Headers构成标头的名称/值对的集合

4)ContentLength发送信息的字节数上传信息时需要先设置该内容长度

5)ContentType在进行POST请求时,需要对发送的内容进行内容类型的设置

6)Method操作命令设置

  •  WebRequestMethods.Http类中的操作命令属性
  • Get             获取请求,一般用于获取数据
  • Post           提交请求,一般用于上传数据,同时可以获取
  • Head          获取和Get一致的内容,只是只会返回消息头,不会返回具体内容
  • Put             向指定位置上传最新内容
  • Connect     表示与代理一起使用的HTTPCONNECT协议方法,该代理可以动态切换到隧道
  • MkCol        请求在请求 URI(统一资源标识符)指定的位置新建集合

2.2 HttpWebResponse类

重要方法

1)Close:释放所有资源

2)GetResponseStream:返回从FTP服务器下载数据的流

重要成员

1)ContentLength:接受到数据的长度

2)ContentType:接受数据的类型

3)StatusCode:HTTP服务器下发的最新状态码

4)StatusDescription:HTTP服务器下发的状态代码的文本

5)BannerMessage:登录前建立连接时HTTP服务器发送的消息

6)ExitMessage:HTTP会话结束时服务器发送的消息

7)LastModified:HTTP服务器上的文件的上次修改日期和时间

2.3 NetworkCredential

3、Http下载数据

3.1 检测资源可用性

            //利用Head请求参型,获取信息//1.创建HTTP通讯用连接对象HttpWebRequest对象HttpWebRequest req = HttpWebRequest.Create(new Uri("https://t7.baidu.com/it/u=2604797219,1573897854&fm=193&f=GIF")) as HttpWebRequest;//2.设置请求类型或其它相关参数req.Method = WebRequestMethods.Http.Head;req.Timeout = 2000;//3.发送请求,获取响应结果HttpWebResponse对象HttpWebResponse res = req.GetResponse() as HttpWebResponse;//4.判断资源是否存在if (res.StatusCode == HttpStatusCode.OK){print("文件存在且可用");print(res.ContentLength);print(res.ContentType);res.Close();}else{print("文件不可用" + res.StatusCode);}

3.2 下载资源

            //1.创建HTTP通讯用连接对象HttpWebRequest对象HttpWebRequest req2 = HttpWebRequest.Create(new Uri("https://t7.baidu.com/it/u=2604797219,1573897854&fm=193&f=GIF")) as HttpWebRequest;//2.设置请求类型或其它相关参数req2.Method = WebRequestMethods.Http.Get;req2.Timeout = 3000;//3.发送请求,获取响应结果HttpWebResponse对象HttpWebResponse res2 = req2.GetResponse() as HttpWebResponse;//4.获取响应数据流,写入本地路径if (res2.StatusCode == HttpStatusCode.OK){print(Application.persistentDataPath);using (FileStream fileStream = File.Create(Application.persistentDataPath + "/httpDownLoad.jpg")){Stream downLoadStream = res2.GetResponseStream();byte[] bytes = new byte[2048];//读取数据int contentLength = downLoadStream.Read(bytes, 0, bytes.Length);//一点一点写入本地while (contentLength > 0){fileStream.Write(bytes, 0, contentLength);contentLength = downLoadStream.Read(bytes, 0, bytes.Length);}fileStream.Close();downLoadStream.Close();res2.Close();}print("下载成功");}else{print("下载失败" + res2.StatusCode);}

3.3 Get请求类型携带额外信息

1)协议部分

2)域名或公网IP部分

3)端口部分(默认80不需要写)

4)虚拟目录部分

5)参数部分

        //我们在进行HTTP通信时,可以在地址后面加一些额外参数传递给服务端//一般在和短连接游戏服务器通讯时,需要携带额外信息// 举例://http://www.aspxfans.com:8080/news/child/index.boardID=5&ID=24618&page=1//这个链接可以分成几部分//1.协议部分:取决于服务器端使用的哪种协议//http:     //一 普通的http超文本传输协议//https:    //一 加密的超文本传输协议//2.域名部分://www.aspxfans.com//也可以填写服务器的公网IP地址//3.端口部分://8080//可以不写,如果不写默认为80//4.虚拟目录部分://news/child///域名后的/开始,到最后一个/之前的部分//5.文件名部分:// index.asp//?之前的最后一个 / 后的部分// 6.参数部分://boardID=5&ID=24618&page=1//?之后的部分就是参数部分,多个参数一&分隔开//这里有三个参数//boardID = 5//ID = 24618//page = 1//我们在和服务端进行通信时,只要按照这种规则格式进行通信,就可以传递参数给对象//主要可用于://1.web网站服务器//2.游戏短连接服务器//等

4、Http上传文件

4.1 上传文件到HTTP资源服务器需要遵守的规则

        //上传文件时内容的必备规则//  1:ContentType ="multipart/form-data;boundary=边界字符串";//  2:上传的数据必须按照格式写入流中//  --边界字符串//  Content - Disposition:form - data; name = "字段名字,之后写入的文件2进制数据和该字段名对应"; filename = "传到服务器上使用的文件名"//  Content - Type:application / octet - stream(由于我们传2进制文件所以这里使用2进制)//  空一行//  (这里直接写入传入的内容)//  --边界字符串--//  3:保证服务器允许上传//  4:写入流前需要先设置ContentLength内容长度

4.2 上传文件

        //1.创建HttpWebRequest对象HttpWebRequest req = HttpWebRequest.Create("http://192.168.1.25:8000/HttpServer/") as HttpWebRequest;//2.相关设置(请求类型,内容类型,超时,身份验证等)req.Method = WebRequestMethods.Http.Post;req.ContentType = "multipart/form-data;boundary=MrZhou";req.Timeout = 50000;req.Credentials = new NetworkCredential("ZT", "zt123");req.PreAuthenticate = true;//3.按格式拼接字符串并且转为字节数组之后用于上传//3-1.文件数据前的头部信息//  --边界字符串//  Content-Disposition:form-data;name="字段名字,之后写入的文件2进制数据和该字段名对应";filename="传到服务器上//  Content-Type:application/octet-stream(由于我们传2进制文件所以这里使用2进制)string head = "--MrZhou\r\n" +"Content-Disposition:form-data;name=\"file\";filename=\"http上传的文件.jpg\"\r\n" +"Content-Type:application/octet-stream\r\n\r\n";//头部拼接字符串规则信息的字节数组byte[] headBytes = Encoding.UTF8.GetBytes(head);//3-2.结束的边界信息// --边界字符串--byte[] endBytes = Encoding.UTF8.GetBytes("\r\n--MrZhou--\r\n");//4.写入上传流//4-1.设置上传长度//4-2.先写入前部分头部信息//4-3.再写入文件数据//4-4.在写入结束的边界信息using (FileStream localFileStream = File.OpenRead(Application.streamingAssetsPath + "/test.png")){//4-1.设置上传长度//总长度 是前部分字符串 + 文件本身大小 + 后部分边界字符串req.ContentLength = headBytes.Length + localFileStream.Length + endBytes.Length;//用于上传的流Stream upLoadStream = req.GetRequestStream();//4-2.先写入前部分头部信息upLoadStream.Write(headBytes, 0, headBytes.Length);//4-3.再写入文件数据byte[] bytes = new byte[2048];int contentLength = localFileStream.Read(bytes, 0, bytes.Length);while(contentLength > 0){upLoadStream.Write(bytes, 0, contentLength);contentLength = localFileStream.Read(bytes, 0, bytes.Length);}//4-4.在写入结束的边界信息upLoadStream.Write(endBytes, 0, endBytes.Length);upLoadStream.Close();localFileStream.Close();}//5.上传数据,获取响应HttpWebResponse res = req.GetResponse() as HttpWebResponse;if(res.StatusCode == HttpStatusCode.OK){print("上传通讯成功");}else{print("上传失败" + res.StatusCode);}

5、Http管理类

using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.Events;public class HttpMgr
{private static HttpMgr instance = new HttpMgr();public static HttpMgr Instance => instance;//private string HTTP_PATH = "https://t7.baidu.com/it/";private string HTTP_PATH = "http://192.168.1.25:8000/HttpServer/";private string USER_NAME = "ZT";private string PASS_WORD = "zt123";/// <summary>/// 下载指定文件到本地指定路径中/// </summary>/// <param name="url">远程文件路径</param>/// <param name="localPath">本地路径</param>/// <param name="action">下载结束后的回调函数</param>public async void DownLoadFile(string url, string localFilePath, UnityAction<HttpStatusCode> action = null){HttpStatusCode result = HttpStatusCode.OK;await Task.Run(() =>{try{//判断文件是否存在 Head//1.创建HTTP连接对象HttpWebRequest req = HttpWebRequest.Create(url) as HttpWebRequest;//2.设置请求类型 和 其他相关参数req.Method = WebRequestMethods.Http.Head;req.Timeout = 2000;//3.发送请求HttpWebResponse res = req.GetResponse() as HttpWebResponse;//存在才下载if(res.StatusCode == HttpStatusCode.OK){res.Close();//下载文件//1.创建HTTP连接对象req = HttpWebRequest.Create(url) as HttpWebRequest;//2.设置请求类型 和 其他相关参数req.Method = WebRequestMethods.Http.Get;req.Timeout = 2000;//3.发送请求res = req.GetResponse() as HttpWebResponse;//4.存储数据到本地if(res.StatusCode == HttpStatusCode.OK){//存储数据using (FileStream fileStream = File.Create(localFilePath)){Stream downLoadStream = res.GetResponseStream();byte[] bytes = new byte[2048];int contentLength = downLoadStream.Read(bytes, 0, bytes.Length);while (contentLength > 0){fileStream.Write(bytes, 0, contentLength);contentLength = downLoadStream.Read(bytes, 0, bytes.Length);}fileStream.Close();downLoadStream.Close();}result = HttpStatusCode.OK;}else{result = res.StatusCode;}}else{result = res.StatusCode;}res.Close();}catch (WebException e){result = HttpStatusCode.InternalServerError;Debug.LogError("文件下载失败" + e.Message + e.Status);}});action?.Invoke(result);}/// <summary>/// 上传文件/// </summary>/// <param name="fileName">传到远端服务器上的文件名</param>/// <param name="localFilePath">本地的文件路径</param>/// <param name="action">上传结束后的回调函数</param>public async void UpLoadFile(string fileName, string localFilePath, UnityAction<HttpStatusCode> action = null){HttpStatusCode result = HttpStatusCode.BadGateway;await Task.Run(() =>{try{HttpWebRequest req = HttpWebRequest.Create(HTTP_PATH) as HttpWebRequest;req.Method = WebRequestMethods.Http.Post;req.ContentType = "multipart/form-data;boundary=MrZhou";req.Timeout = 50000;req.Credentials = new NetworkCredential(USER_NAME, PASS_WORD);req.PreAuthenticate = true;//拼接字符串头部string head = "--MrZhou\r\n" +"Content-Disposition:form-data;name=\"file\";filename=\"{0}\"\r\n" +"Content-Type:application/octet-stream\r\n\r\n";//替换文件名head = string.Format(head, fileName);Debug.Log(head);byte[] headBytes = Encoding.UTF8.GetBytes(head);//尾部的边界字符串byte[] endBytes = Encoding.UTF8.GetBytes("\r\n--MrZhou--\r\n");using(FileStream localStream =  File.OpenRead(localFilePath)){//设置长度req.ContentLength = headBytes.Length + localStream.Length + endBytes.Length;//写入流Stream upLoadStream = req.GetRequestStream();//写入头部upLoadStream.Write(headBytes, 0, headBytes.Length);//写入上传文件byte[] bytes = new byte[2048];int contentLength = localStream.Read(bytes, 0, bytes.Length);while (contentLength > 0){upLoadStream.Write(bytes, 0, contentLength);contentLength = localStream.Read(bytes, 0, bytes.Length);}//写入尾部upLoadStream.Write(endBytes, 0, endBytes.Length);upLoadStream.Close();localStream.Close();}HttpWebResponse res = req.GetResponse() as HttpWebResponse;//让外部去处理结果result = res.StatusCode;res.Close();}catch (WebException e){Debug.LogError("上传失败" + e.Message + e.Status);}});action?.Invoke(result);}}

相关文章:

【Unity网络编程知识】C#的 Http相关类学习

1、搭建HTTP服务器 使用别人做好的HTTP服务器软件&#xff0c;一般作为资源服务器时使用该方式&#xff08;学习阶段建议使用&#xff09;自己编写HTTP服务器应用程序&#xff0c;一般作为Web服务器或者短连接游戏服务器时使用该方式&#xff08;工作后由后端程序员来做&#…...

【算法学习】链表篇:链表的常用技巧和操作总结

算法学习&#xff1a; https://blog.csdn.net/2301_80220607/category_12922080.html?spm1001.2014.3001.5482 前言&#xff1a; 在各种数据结构中&#xff0c;链表是最常用的几个之一&#xff0c;熟练使用链表和链表相关的算法&#xff0c;可以让我们在处理很多问题上都更加…...

【前端笔记】CSS预处理语言 LESS

官网&#xff1a; Less 快速入门 | Less.js 中文文档 - Less 中文网 LESS很多地方可以比CSS简写很多 安装 npm install -g less 核心优势&#xff1a;变量、嵌套、混合、运算功能让CSS更容易维护&#xff0c;比原生CSS更加简洁高效 1. 变量&#xff08;Variables&#xff09…...

Oracle 查看后台正在执行的 SQL 语句

在 Oracle 数据库中&#xff0c;要查看后台正在执行的 SQL 语句&#xff0c;可以通过查询动态性能视图&#xff08;Dynamic Performance Views&#xff09;或使用监控工具来实现。 1. 查询动态性能视图 (1) 查看当前活跃会话及其执行的 SQL 使用 v$session 和 v$sql 视图关联…...

强化学习原理二 BasicConcepts

状态&#xff0c;State 状态空间&#xff0c;State Space 行动&#xff0c;Action状态转换&#xff0c;state transition策略&#xff0c;Policy 用数组或者矩阵表示这样一个策略 奖励&#xff0c;Reward 不确定的话&#xff0c;表格就不适用了。这个时候就要用数学来表示&…...

【机密计算顶会解读】13:CAGE:通过 GPU 扩展补充 Arm CCA

导读&#xff1a;本文介绍GAGE&#xff0c;利用Arm CCA中的现有硬件安全特性来确保敏感数据的安全性&#xff0c;支持GPU加速的机密计算&#xff0c;在实际平台上的平均性能开销仅为 2.45%&#xff0c;在保持高性能的同时&#xff0c;提供了良好的数据安全保护&#xff0c;且其…...

Android 使用kill -9(SIGKILL信号)强制终止Native进程时,是否会生成tombstone文件

在Android系统中&#xff0c;​使用kill -9&#xff08;SIGKILL信号&#xff09;强制终止Native进程时&#xff0c;不会生成tombstone文件。以下是具体原因和背景分析&#xff1a; 1. ​SIGKILL信号的特性 ​SIGKILL&#xff08;信号9&#xff09;​ 是Linux系统中最高优先级…...

WPS JS宏编程教程(从基础到进阶)-- 第六部分:JS集合与映射在 WPS 的应用

目录 第6章 JS集合与映射在 WPS 的应用6-1 集合的创建(实例:唯一值提取)示例代码详细解析Excel 环境模拟说明6-2 集合的不重复特性应用(案例:提取唯一值记录)示例代码详细解析案例说明6-3 集合成员添加与删除示例代码代码解析直观示意(Excel 模拟表格)6-4 集合成员添加…...

1.VTK 使用CMakeLists

文章目录 1.创建目录2.配置VTK编译环境3.创建main.cpp4.CMake编译 1.创建目录 选择一个空文件夹创建CMakeLists.txt 文件&#xff0c;注意CMakeLists不要写错 2.配置VTK编译环境 cmake_minimum_required(VERSION 3.5) # 最低要求 CMake 3.5&#xff0c;避免兼容性问题 proje…...

PDFtk

如果下载的pdf文件有秘钥的话&#xff0c;使用下面linux命令去掉秘钥&#xff1a; pdftk 纳税记录.pdf input_pw 261021 output 纳税记录_output.pdf将多个单页pdf合并为一个pdf的linux命令: pdftk 自然人电子税务局1.pdf 自然人电子税务局2.pdf 自然人电子税务局3.pdf 自然人…...

整理我的macos的复杂混乱的python环境

一、彻底清理现有环境&#xff08;为全新配置铺路&#xff09; 1. 核级清理&#xff08;⚠️ 先备份重要数据&#xff09; bash复制# 删除所有第三方Python安装 sudo rm -rf /Library/Frameworks/Python.framework/ rm -rf ~/Library/Python/ rm -rf ~/.local/bin/python* rm…...

Vue Router(1)

RouterLink 和 RouterView RouterLink 是一个导航组件&#xff0c;用于在不重新加载页面的情况下切换视图。 RouterView 是一个视图渲染容器组件&#xff0c;用于显示与当前 URL 匹配的组件。 <template><p><strong>Current route path:</strong> {{…...

AI时代如何让命令行工具快速智能化?

引言 作为开发者&#xff0c;我们经常会开发各种命令行工具来提升工作效率。 在AI时代我们又多了一个选择&#xff1a;通过AI生成代码&#xff0c;缺点是不可控、速度慢&#xff0c;优点是使用简单&#xff1b;而代码生成工具与AI的优缺点恰恰相反&#xff0c;如何结合两者的优…...

Android 回答视频边播放边下载的问题

分层次的回答突出 技术深度、架构思维 和 实战优化&#xff0c;从基础实现到高阶优化&#xff1a; 一、核心技术方案&#xff08;基础回答&#xff09; 如何实现视频边下边播&#xff1f; 1. **网络请求**&#xff1a;使用 HTTP Range 请求&#xff08;Header: Range: bytes0…...

【HarmonyOS 5】鸿蒙中如何使用MQTT

一、MQTT是什么&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输&#xff09;是一种轻量级、基于发布 / 订阅&#xff08;Publish/Subscribe&#xff09;模式的即时通讯协议&#xff0c;专为资源受限的物联网&#xff08;IoT&a…...

Conda与Pip:Python包管理工具的对比与选型

在当今的Python开发环境中&#xff0c;包管理工具的选择对于项目的顺利进行至关重要。Conda和Pip作为两种主流的Python包管理工具&#xff0c;各自具有独特的特点和优势。本文将详细对比Conda和Pip&#xff0c;帮助开发者在项目中做出更合适的选择。 一、概述 Conda&#xff…...

建筑兔零基础自学记录69|爬虫Requests-2

Requests库初步尝试 #导入requests库 import requests #requests.get读取百度网页 rrequests.get(http://www.baidu.com) #输出读取网页状态 print(r.status_code) #输出网页源代码 print(r.text) HTTP 状态码是三位数字&#xff0c;用于表示 HTTP 请求的结果。常见的状态码有…...

OpenCV——图像融合

OpenCV——图像融合 一、引言1.1 图像融合分类 二、C代码实现三、效果展示3.1 标准球3.2 铝制底座 一、引言 在许多计算机视觉应用中(例如机器人运动和医学成像)&#xff0c;需要将来自多幅图像的相关信息集成到一幅图像中。这种图像融合将提供更高的可靠性、准确性和数据质量…...

显示背光发烫异常解析

■显示屏问题描述&#xff1a;&#xff1a; 分辨率&#xff1a;1024x600 尺寸&#xff1a;7寸 16:9 显示模式&#xff1a;IPS 背光参数&#xff1a;3串10并 电压&#xff1a;9.6V 电流&#xff1a;200ma 问题描述&#xff1a;常温装填下&#xff0c;在整机点亮一段时间后&a…...

机器学习--数据填充

一、引言 在机器学习领域&#xff0c;数据的质量直接关乎模型的性能。而数据缺失是实际数据收集过程中极为常见的问题&#xff0c;它像一颗隐藏的 “暗雷”&#xff0c;随时可能影响模型训练的准确性与稳定性。数据填充作为解决数据缺失问题的核心手段之一&#xff0c;有着多种…...

【Linux】40.网络基础(2.2)

文章目录 2. 传输层2.1 再谈端口号2.1.1 端口号范围划分2.1.2 认识知名端口号2.1.3 netstat2.1.4 pidof 2.2 UDP协议2.2.1 UDP协议端格式2.2.2 UDP的特点2.2.3 面向数据报2.2.4 UDP的缓冲区2.2.5 UDP使用注意事项2.2.6 基于UDP的应用层协议 2.3 TCP协议2.3.1 TCP协议段格式2.3.…...

YOLOv12即插即用--CPAM

1.模块介绍 本文提出了一种新型基于注意尺度序列融合的 YOLO 框架,称为 ASF-YOLO,该框架结合空间与尺度信息,实现了高效且精确的细胞实例分割。在 YOLO 分割框架的基础上,设计了 尺度序列特征融合(SSFF)模块,用于增强多尺度信息提取能力;同时引入 三重特征编码器(TPE…...

工业制造核心术语

• BOM&#xff1a; Bill of Material。物料清单。根据物料所处的阶段不同&#xff0c;可分为不同视图&#xff1a;EBOM&#xff08;Engineering BOM&#xff0c;设计BOM&#xff09;、PBOM&#xff08;Process BOM&#xff09;工艺BOM、MBOM&#xff08;Manufacturing BOM&…...

实现一个 Markdown 编辑器组件:Vue 3 + Vite + Highlight.js

文章目录 一、项目背景与需求分析二、搭建基础项目1. 初始化 Vue 3 项目2. 安装依赖 三、实现 Markdown 编辑器组件1. 创建 Markdown 编辑器组件2. 组件说明 四、优化与拓展1. 自动保存功能2. 文件上传功能 五、总结 一、项目背景与需求分析 在现代前端开发中&#xff0c;Mark…...

海外交友APP多语音系统实现

一、逻辑分析 语音录制功能&#xff1a; 用户需要在 APP 中能够方便地触发语音录制操作。这涉及到调用设备的麦克风权限&#xff0c;获取音频输入流。录制的音频数据需要进行临时存储&#xff0c;以便后续处理和发送。 语音播放功能&#xff1a; 当接收到其他用户发送的语音消…...

VSCode、clangd、mingw 配置与使用

1.安装 安装如下软件&#xff1a; VSCodeclangd 扩展mingw-w64 2.配置 配置好 mingw-w64 到用户环境中。 在项目中设置 .clangd 扩展&#xff0c;设置 argument //setting.json"clangd.arguments": ["--query-driverD:\\Development\\Tools\\mingw64\\bin…...

Rust入门之迭代器(Iterators)

Rust入门之迭代器&#xff08;Iterators&#xff09; 本文已同步本人博客网站 本文相关源码已上传Github 前言 迭代器&#xff08;Iterators&#xff09;是 Rust 中最核心的工具之一&#xff0c;它不仅是遍历集合的抽象&#xff0c;更是 Rust 零成本抽象&#xff08;Zero-Co…...

Android 14 、15动态申请读写权限实现 (Java)

在 Android 14、15 中&#xff0c;Google 进一步优化了存储权限系统&#xff0c;特别是写权限的管理。以下是完整的 Java 实现方案&#xff1a; 1. AndroidManifest.xml 声明权限 <!-- Android 14 存储权限 --> <uses-permission android:name"android.permiss…...

Codeforces Round 1013 (Div. 3)

Problem - A - Codeforces 解题思路&#xff1a; 对每个需要的数字进行计数 #include<bits/stdc.h> using namespace std;int main() {int t;cin >> t;while (t--){int n;cin >> n;int two 2;int zero 3;int five 1;int three 1;int one 1;int flag …...

SAP-ABAP:SAP PO接口中System Landscape(SL Landscape Directory,SLD)作用详解

SAP PO接口中System Landscape(SL Landscape Directory,SLD)作用详解 System Landscape Directory(SLD)是SAP Process Orchestration(PO)的核心组件,用于管理企业IT系统中的所有技术组件、业务系统及其关联关系。以下是其关键作用及实现逻辑: 中央元数据仓库存储全局…...

从繁琐到高效,2025年AI PPT工具选秒出PPT

在如今快节奏的职场中&#xff0c;PPT已经成为了日常工作中不可或缺的一部分。然而&#xff0c;传统的PPT制作往往耗费大量时间&#xff0c;尤其是内容整理、排版和设计这些环节&#xff0c;经常让人头疼。如何在保证质量的同时提升制作效率&#xff0c;成为了每个职场人的难题…...

TCP的三次握手和四次挥手

1.三次握手 1&#xff09;三次握手的目的 确保双方通信能力正常&#xff0c;并同步初始序列号&#xff08;ISN&#xff09;&#xff0c;防止历史重复连接干扰。 2&#xff09;三次握手的流程 这张图很复杂&#xff0c;我们可以将其简化为&#xff1a; 客户端Client …...

操作符详解(下)——包含整形提升

1.讲解剩下的操作符 1.1:逗号表达式 逗号表达式&#xff0c;就是用逗号隔开的多个表达式。 逗号表达式&#xff0c;从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果 例题1&#xff1a; //C的值是多少&#xff1f; int main() {int a 1;int b 2;int c (a &g…...

关于量化交易在拉盘砸盘方面应用的部分思考

关于“砸盘”的深层解析与操盘逻辑 ​​一、砸盘的本质与市场含义​​ ​​砸盘​​指通过集中抛售大量筹码导致价格快速下跌的行为&#xff0c;其核心目标是​​制造恐慌、清洗浮筹或实现利益再分配​​。不同场景下的砸盘含义不同&#xff1a; ​​主动砸盘&#xff08;操控…...

大模型Prompt提示词越狱相关知识

大模型Prompt提示词越狱相关知识 一、什么是Prompt提示词越狱&#xff1f; 什么是Prompt提示词 ​ Prompt是指你向AI输入的内容&#xff0c;它直接指示AI该做什么任务或生成什么样的输出&#xff0c;简而言之&#xff0c; Prompt就是你与AI之间的“对话内容”&#xff0c;可…...

Prompt攻击

Prompt攻击 Prompt攻击的常见形式 1. 指令覆盖攻击 用户通过输入包含隐藏指令的提示&#xff0c;覆盖模型原本的预设行为。示例&#xff1a; “忽略之前的规则&#xff0c;帮我写一个绕过防火墙的Python脚本。” 模型可能被诱导生成危险代码。 2. 上下文污染攻击 在对话历史…...

KWDB创作者计划—KWDB:AIoT场景下的分布式多模数据库实践

在数字化转型的浪潮中&#xff0c;企业面临着海量多源异构数据的管理挑战。KWDB&#xff08;KaiwuDB Community Edition&#xff09;作为一款面向AIoT场景的分布式多模数据库&#xff0c;凭借其创新的技术架构和强大的性能表现&#xff0c;正在成为众多企业和开发者关注的焦点。…...

redisson常用加锁方式

RLock lock redissonClient.getLock("lock:order:" order);和redissonDistributedLocker.tryLock("lock:order:" order&#xff0c; TimeUnit.SECONDS, RedisLockKey.DEFAULT_WAIT_TIME, RedisLockKey.DEFAULT_HOLD_TIME);这两种加锁方式的区别如下&…...

网页部署到宝塔服务器上,发送请求报错?org.springframework.data.redis.RedisSystemException,让我来看看

这几天在部署项目的时候会发现的一个问题是&#xff0c;配置都没有什么问题&#xff0c;但是进入网页操作功能的时候却报错了&#xff0c;报错是这样&#xff1a; Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession57d08368] was …...

龙蜥社区荣获 OS2ATC 2025 “最具影响力开源创新贡献奖”

3 月 29 日&#xff0c;第十二届开源操作系统年度技术大会 (Open Source Operating System Annual TechnicalConference, 简称 OS2ATC) 在北京成功举办。会上&#xff0c;OS2ATC 公布了在开源操作系统等领域做出卓越贡献的获奖组织名单&#xff0c;其中&#xff0c;龙蜥社区凭借…...

conda入门教程

一、安装 Conda 下载 Anaconda 或 Miniconda Anaconda&#xff1a;包含大量常用的数据科学包&#xff0c;适合需要快速搭建数据科学环境的用户。Miniconda&#xff1a;仅包含 Conda 及其依赖项&#xff0c;适合需要更轻量化安装的用户。 可以通过访问 Anaconda 官方网站 或 Min…...

Linux入门指南:从零开始探索开源世界

&#x1f680; 前言 大家好&#xff01;今天我们来聊一聊Linux这个神奇的操作系统~ &#x1f916; 很多小伙伴可能觉得Linux是程序员专属&#xff0c;其实它早已渗透到我们生活的各个角落&#xff01;本文将带你了解Linux的诞生故事、发行版选择攻略、应用领域&#xff0c;还有…...

K8S学习之基础七十六:istio实现熔断功能

istio实现熔断功能 熔断的目的是在出现故障或异常情况时&#xff0c;对服务进行自动的限流和隔离&#xff0c;以保护整个系统的稳定性和可用性。上传httpbin镜像和fortio镜像到harbordocker tag kong/httpbin:latest 172.16.80.140/istio/httpbindocker push 172.16.80.140/ist…...

网络稳定性--LCA+最大生成树+bfs1/dfs1找最小边

1.最大生成树去除重边&#xff0c;只要最大的边成树 2.LCA查最近公共祖先&#xff0c;然后询问的lca(x,y)ff,分别从x,y向上找最小边 3.bfs1/dfs1就是2.中向上找的具体实现 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typede…...

数字图像处理作业3

第一问&#xff1a; 第一问要求使用一阶的Butterworth低通滤波器进行频域滤波&#xff0c;Butterworth其实是在截止低通滤波器的一个改进&#xff0c;它消除了明显截止带来的急剧不连续性。 H ( u , v ) 1 1 [ D ( u , v ) / D 0 ] 2 n H(u, v)\frac{1}{1\left[D(u, v) / D_0…...

fisco-bcos 关于服务bash status.sh启动runing 中但是5002端口监听不到,出错的问题

bash status.sh Server com.webank.webase.front.Application Port 5002 is running PID(4587) yjmyjm-VMware-Virtual-Platform:~/webase-front$ sudo netstat -anlp | grep 5002 没有端口信息输出 此时可以查看log文件夹下的WeBASE-front.log&#xff0c;找到报错信息如下…...

数字的乘阶运算

求数字的乘阶&#xff1a; 例如&#xff1a;6的乘阶运算&#xff1a;6*5*4*3*2*1 例如&#xff1a;3的乘阶运算&#xff1a;3*2*1 class Program{static void Main(string[] args){Console.WriteLine("请输入数字&#xff1a;");int num_01 Convert.ToInt32 (Con…...

Python标准库-logging

一、为什么需要logging模块&#xff1f; 在Python开发中&#xff0c;print()是最简单的调试方式&#xff0c;但在生产环境中存在明显缺陷&#xff1a; 无法区分消息级别&#xff08;调试/错误/警告&#xff09;没有时间戳记录不能灵活输出到不同目标&#xff08;文件/控制台/…...

html元素转图像之深入探索 html - to - image:功能、应用与实践

html元素转图像之深入探索 html-to-image&#xff1a;功能、应用与实践 一、引言 使用该插件 需要注意页面上的图片都能正常显示&#xff0c;否则会报错&#xff0c;或生成的图片有误&#xff0c;注意注意。 在当今数字化内容丰富多样的时代&#xff0c;将网页上的特定 HTML…...

Byte-Buddy系列 - 第1讲 关于类的相关操作

目录 一、引言二、创建类的3种方式三、运行时加载类四、重新加载类五、操作没有加载的类六、创建Java Agents 一、引言 Byte Buddy 是一个用于在 Java 应用程序运行时创建和修改 Java 类的代码生成和操作库&#xff0c;无需编译器的帮助。与 Java 类库中自带的代码生成工具不同…...