springmvc http请求,支持get,post,附件传输和参数传输
主要解决http请求支持get,post,put,delete等常规方法,支持@RequestParam,@RequestBody,@PathVariable等参数格式传输,支持传输附件同时传递参数等,主体代码如下:
package mes.client.action;import cn.hutool.crypto.digest.DigestUtil;
import com.alibaba.fastjson.JSON;
import mes.client.pojo.po.CommonEntityPo;
import mes.client.pojo.vo.ResponseInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;public class MesMomConnectAction {private static Logger logger = LoggerFactory.getLogger(MesMomConnectAction.class);/*** 无请求体body,向指定URL发送方法的请求** @param url 发送请求的URL* @return URL 所代表远程资源的响应结果*/public static ResponseInfo getHttpParamReq(String url,String requestMethodType) {StringBuilder result = new StringBuilder();BufferedReader in = null;HttpURLConnection connection = null;try {URL getUrl = new URL(url);// 打开和URL之间的连接connection = (HttpURLConnection) getUrl.openConnection();// 在connect之前,设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");connection.setRequestProperty("Charsert", "UTF-8");//添加必须的头部信息addHeader(connection);// 配置本次连接的Content-type,form表单是"application/x-www-form-urlencoded",json是"application/json"等// 根据需求自己调整Content-typeconnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 设置连接主机服务器的超时时间:15000毫秒connection.setConnectTimeout(15000);// 设置读取远程返回的数据时间:60000毫秒connection.setReadTimeout(60000);// 设置连接方式:getconnection.setRequestMethod(requestMethodType);// 建立实际的连接,可不写,注意connection.getOutputStream会隐含的进行connect。connection.connect();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));String line;while ((line = in.readLine()) != null) {result.append(line);}ResponseInfo responseInfo = JSON.parseObject(result.toString(), ResponseInfo.class);if(responseInfo.getStatusCode() == null){return getFailResponse(result.toString());}return responseInfo;} catch (Exception e) {logger.error("调用MES4.0接口异常",e);return getExceptionResponse(e);}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}if (connection != null) {//关闭连接connection.disconnect();}} catch (Exception e2) {e2.printStackTrace();}}}/** * @description: get请求* @date: 2023-10-16 16:58:30 * @param url * @return ResponseInfo */public static ResponseInfo sendGet(String url){return getHttpParamReq(url,"GET");}/** * @description:方法说明* @date: 2023-10-16 15:42:33 * @param url * @return ResponseInfo */public static ResponseInfo sendDelete(String url) {return getHttpParamReq(url,"DELETE");}/** * @description: post请求* @date: 2023-10-16 17:04:07 * @param url * @param param * @return ResponseInfo */public static ResponseInfo sendPost(String url, CommonEntityPo param){return getHttpBodyReq(url,param,"POST");}/** * @description: put请求* @date: 2023-10-16 17:05:05 * @param url * @param param * @return ResponseInfo */public static ResponseInfo sendPut(String url, CommonEntityPo param){return getHttpBodyReq(url,param,"PUT");}/*** 有请求体body,向指定 URL 发送方法的请求** @param url 发送请求的 URL* @param param 请求参数。* @return 所代表远程资源的响应结果*/public static ResponseInfo getHttpBodyReq(String url, CommonEntityPo param, String requestMethodType) {BufferedReader in = null;InputStream inputStream = null;HttpURLConnection connection = null;StringBuilder result = new StringBuilder();try {URL postUrl = new URL(url);// 打开和URL之间的连接connection = (HttpURLConnection) postUrl.openConnection();// 在connect之前,设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");connection.setRequestProperty("Charsert", "UTF-8");//添加一些必要的请求头信息addHeader(connection);//connection.setRequestProperty("Authorization","Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJiUlR5WGJ0Q05aaS1fUkVKSGUwNHNEd2RYaTNVSHRLOWZoWndXdGdPdWdNIn0.eyJleHAiOjE2OTc0MzM5NDksImlhdCI6MTY5NzAwMTk0OSwiYXV0aF90aW1lIjoxNjk2NzYwOTcxLCJqdGkiOiJiMjcyYzM2My1kMDQ1LTRhMTAtOTc5Ni0xZGE0ZmYwNDkxYTkiLCJpc3MiOiJodHRwOi8vaWRtLWRldi5zdW53b2RhLWV2Yi5jb20vYXV0aC9yZWFsbXMvc3RhbmRhcmQiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiNmIxOTE4NWYtODcxZi00NTk1LWIxZTUtYTIwZTQ1MzcyZjQ3IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoibnRzLWZyb250LXRlc3QiLCJub25jZSI6Ijc3MjBkM2QyLTg3NDQtNDI3Yy1iMzBhLTE5YWU2ZDM5NzY3NiIsInNlc3Npb25fc3RhdGUiOiJhNDJlNzU0ZC04MmRjLTQxNTgtOWQyYi1iZWZkNzNmMGI4NzUiLCJhY3IiOiIwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBlbWFpbCBwcm9maWxlIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJuYW1lIjoi6IuP5pWPIiwicHJlZmVycmVkX3VzZXJuYW1lIjoieHdkMTYiLCJnaXZlbl9uYW1lIjoi6IuP5pWPIiwibG9jYWxlIjoiemgtQ04ifQ.AUnf5meZWqYNYbfbzyqY3C9WoiL-ISCoVebvtJV-1EF8iQe2FXVEE22CLKnTvHBEoY-W62F8LtG3eW3B5LP54WBXq0JyxnMSLTjqZWMfvYmxNLfjO3rcviK9jAqqxrvLy1IR4ZVFz8ez4ThfCr3TrbammQvZgxF1jie_hx_-3RTiLTra1qyTUj8CrFRaVDBvWTt8nDu6FsRBAkqImPgZ3Jdhf-WDeVlwOkDCGPd5cUQ9KAQs2JUMY4H_jC9cgcSpQuUjNOQOnu1lnYjnsREswR7iBNSkaW6DlRry-HhD8FRs1QLOwKGcgFCBU7O9O-NCH8EyrZOriSpiPaElE2-i2Q");connection.setConnectTimeout(15000);connection.setReadTimeout(60000);// 发送POST请求必须设置如下两行,参数要放在http正文内connection.setDoOutput(true);connection.setDoInput(true);// 默认是 GET方式connection.setRequestMethod(requestMethodType);// Post 请求不使用缓存connection.setUseCaches(false);// 配置连接的Content-type,form表单是"application/x-www-form-urlencoded",json是"application/json"等connection.setRequestProperty("Content-Type", "application/json");connection.connect();//参数处理if(param != null){//打印接口入参logger.info("post请求接口入参:{}",JSON.toJSONString(param.getData()));BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream(), "UTF-8"));writer.write(JSON.toJSONString(param.getData()));writer.close();}// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));String line;while ((line = in.readLine()) != null) {result.append(line);}ResponseInfo responseInfo = JSON.parseObject(result.toString(), ResponseInfo.class);if(responseInfo.getStatusCode() == null){return getFailResponse(result.toString());}return responseInfo;} catch (Exception e) {logger.error("调用MES4.0接口异常",e);return getExceptionResponse(e);} finally {try {if (in != null) {in.close();}if(inputStream != null){inputStream.close();}if (connection != null) {//关闭连接connection.disconnect();}} catch (IOException ex) {ex.printStackTrace();}}}/*public static void main(String[] args) throws IOException {//=========================================邮箱==================================================List<Map<String, Object>> files = new ArrayList<>();Map<String, Object> map = new HashMap();File file = new File("C:\\Users\\86188\\Desktop\\t1.png");map.put("name", "t1.png");map.put("file", file);files.add(map);Map<String, Object> param = new HashMap();param.put("data", "data");sendFileUrl("http://127.0.0.1:8080/sendReport", files, param);}*//** * @description: 有附件和参数的发送方法的请求(调用方式参考实例如上方法)* @date: 2023-10-23 10:41:40 * @param actionUrl :请求链接url* @param files : 附件* @param param :请求参数* @return ResponseInfo */public static void sendFileUrl(String actionUrl, List<Map<String, Object>> files, Map<String, Object> param){HttpURLConnection conn = null;DataOutputStream outStream = null;try {final String NEWLINE = "\r\n";String BOUNDARY = java.util.UUID.randomUUID().toString();String PREFIX = "--", LINEND = "\r\n";String MULTIPART_FROM_DATA = "multipart/form-data";String CHARSET = "UTF-8";URL uri = new URL(actionUrl);conn = (HttpURLConnection) uri.openConnection();conn.setConnectTimeout(15000);conn.setReadTimeout(60000);conn.setDoInput(true);// 允许输入conn.setDoOutput(true);// 允许输出conn.setUseCaches(false);conn.setRequestMethod("POST"); // Post方式conn.setRequestProperty("connection", "keep-alive");conn.setRequestProperty("Charsert", "UTF-8");conn.setRequestProperty("Accept", "application/json;charset=UTF-8");conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA+ ";boundary=" + BOUNDARY);outStream = new DataOutputStream(conn.getOutputStream());// 获取表单中上传控件之外的控件数据,写入到输出流对象(根据上面分析的抓包的内容格式拼凑字符串);if (param != null && !param.isEmpty()) { // 这时请求中的普通参数,键值对类型的,相当于上面分析的请求中的username,可能有多个for (Map.Entry<String, Object> entry : param.entrySet()) {String key = entry.getKey(); // 键,相当于上面分析的请求中的usernameObject value = param.get(key); // 值,相当于上面分析的请求中的sdafdsaoutStream.writeBytes(PREFIX + BOUNDARY + NEWLINE); // 像请求体中写分割线,就是前缀+分界线+换行outStream.writeBytes("Content-Disposition: form-data; "+ "name=\"" + key + "\"" + NEWLINE); // 拼接参数名,格式就是Content-Disposition: form-data; name="key" 其中key就是当前循环的键值对的键,别忘了最后的换行outStream.writeBytes(NEWLINE); // 空行,一定不能少,键和值之间有一个固定的空行outStream.write(value.toString().getBytes("UTF-8")); // 将值写入,用字节流防止乱码// 或者写成:dos.write(value.toString().getBytes(charset));outStream.writeBytes(NEWLINE); // 换行}}// 发送文件数据if (files != null)for (Map<String, Object> file : files) {StringBuilder sb1 = new StringBuilder();sb1.append(PREFIX);sb1.append(BOUNDARY);sb1.append(LINEND);sb1.append("Content-Disposition: form-data; name=\"file\"; filename=\""+ file.get("name") + "\"" + LINEND);sb1.append("Content-Type: application/octet-stream; charset="+ CHARSET + LINEND);sb1.append(LINEND);outStream.write(sb1.toString().getBytes("utf-8")); //getBytes()不加utf-8 传输中文名附件时,接收附件的地方解析文件名会乱码InputStream is = new FileInputStream((File) file.get("file"));byte[] buffer = new byte[1024];int len = 0;while ((len = is.read(buffer)) != -1) {outStream.write(buffer, 0, len);}is.close();outStream.write(LINEND.getBytes());}// 请求结束标志byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();outStream.write(end_data);outStream.flush();// 得到响应码int res = conn.getResponseCode();//if (res == 200) {InputStream in = conn.getInputStream();InputStreamReader isReader = new InputStreamReader(in,"UTF-8");BufferedReader bufReader = new BufferedReader(isReader);String line = "";String data = "";while ((line = bufReader.readLine()) != null) {data += line;}logger.info("读取后最后结果:" + data);//}} catch (Exception e) {e.printStackTrace();} finally {try {//关闭流if(outStream != null){outStream.close();}//关闭连接if(conn != null){conn.disconnect();}} catch (IOException e) {e.printStackTrace();}}}//multipartFile格式文件发送public static void sendMultipartFileUrl(String actionUrl, MultipartFile file, Map<String, Object> param){HttpURLConnection conn = null;DataOutputStream outStream = null;try {final String NEWLINE = "\r\n";String BOUNDARY = java.util.UUID.randomUUID().toString();String PREFIX = "--", LINEND = "\r\n";String MULTIPART_FROM_DATA = "multipart/form-data";String CHARSET = "UTF-8";URL uri = new URL(actionUrl);conn = (HttpURLConnection) uri.openConnection();conn.setConnectTimeout(15000);conn.setReadTimeout(60000);conn.setDoInput(true);// 允许输入conn.setDoOutput(true);// 允许输出conn.setUseCaches(false);conn.setRequestMethod("POST"); // Post方式conn.setRequestProperty("connection", "keep-alive");conn.setRequestProperty("Charsert", "UTF-8");conn.setRequestProperty("Accept", "application/json;charset=UTF-8");conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA+ ";boundary=" + BOUNDARY);outStream = new DataOutputStream(conn.getOutputStream());// 获取表单中上传控件之外的控件数据,写入到输出流对象(根据上面分析的抓包的内容格式拼凑字符串);if (param != null && !param.isEmpty()) { // 这时请求中的普通参数,键值对类型的,相当于上面分析的请求中的username,可能有多个for (Map.Entry<String, Object> entry : param.entrySet()) {String key = entry.getKey(); // 键,相当于上面分析的请求中的usernameObject value = param.get(key); // 值,相当于上面分析的请求中的sdafdsaoutStream.writeBytes(PREFIX + BOUNDARY + NEWLINE); // 像请求体中写分割线,就是前缀+分界线+换行outStream.writeBytes("Content-Disposition: form-data; "+ "name=\"" + key + "\"" + NEWLINE); // 拼接参数名,格式就是Content-Disposition: form-data; name="key" 其中key就是当前循环的键值对的键,别忘了最后的换行outStream.writeBytes(NEWLINE); // 空行,一定不能少,键和值之间有一个固定的空行outStream.write(value.toString().getBytes("UTF-8")); // 将值写入,用字节流防止乱码// 或者写成:dos.write(value.toString().getBytes(charset));outStream.writeBytes(NEWLINE); // 换行}}// 发送文件数据if (file != null){StringBuilder sb1 = new StringBuilder();sb1.append(PREFIX);sb1.append(BOUNDARY);sb1.append(LINEND);sb1.append("Content-Disposition: form-data; name=\"file\"; filename=\""+ file.getOriginalFilename() + "\"" + LINEND);sb1.append("Content-Type: application/octet-stream; charset="+ CHARSET + LINEND);sb1.append(LINEND);outStream.write(sb1.toString().getBytes("utf-8")); //getBytes()不加utf-8 传输中文名附件时,接收附件的地方解析文件名会乱码InputStream is = file.getInputStream();byte[] buffer = new byte[1024];int len = 0;while ((len = is.read(buffer)) != -1) {outStream.write(buffer, 0, len);}is.close();outStream.write(LINEND.getBytes());}// 请求结束标志byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();outStream.write(end_data);outStream.flush();// 得到响应码int res = conn.getResponseCode();//if (res == 200) {InputStream in = conn.getInputStream();InputStreamReader isReader = new InputStreamReader(in,"UTF-8");BufferedReader bufReader = new BufferedReader(isReader);String line = "";String data = "";while ((line = bufReader.readLine()) != null) {data += line;}logger.info("读取后最后结果:" + data);//}} catch (Exception e) {e.printStackTrace();} finally {try {//关闭流if(outStream != null){outStream.close();}//关闭连接if(conn != null){conn.disconnect();}} catch (IOException e) {e.printStackTrace();}}}/** * @description: 需要额外添加一些请求头信息* @date: 2023-10-11 14:42:07 */private static void addHeader(HttpURLConnection connection){//针对一些第三方系统加密header}/** * @description: 返回请求异常信息* @date: 2023-10-15 17:43:36 * @param e * @return ResponseInfo */private static ResponseInfo getExceptionResponse(Exception e){ByteArrayOutputStream baos = new ByteArrayOutputStream();e.printStackTrace(new PrintStream(baos));String failMsg = baos.toString();return getFailResponse(failMsg);}/** * @description: 封装返回信息结果* @date: 2023-10-19 19:44:23 * @param failMsg * @return ResponseInfo */private static ResponseInfo getFailResponse(String failMsg){ResponseInfo responseInfo = new ResponseInfo();responseInfo.setStatusCode(400);responseInfo.setMessage(failMsg);return responseInfo;}
}
相关文章:
springmvc http请求,支持get,post,附件传输和参数传输
主要解决http请求支持get,post,put,delete等常规方法,支持RequestParam,RequestBody,PathVariable等参数格式传输,支持传输附件同时传递参数等,主体代码如下: package mes.client.action;import cn.hutool.crypto.digest.DigestUt…...

linux性能分析(七)CPU性能篇(二)怎么理解平均负载
一 怎么理解平均负载 ① 如何查看平均复杂 查看系统负载的命令: top、uptime、w、cat /proc/loadavg、tload /proc/loadavg 思考: uptime每列输出的含义?重点: 当前时间、系统运行时间、正在登录用户数、平均负载 ② 思考࿱…...

PostgreSQL12中浮点数输出算法优化带来的小问题
最近碰到同事发来这样两个SQL,开发反馈输出的结果异常。 bill# select 0.1284*100::float;?column? --------------------12.839999999999998 (1 row)bill# select (0.1284*100)::float;float8 --------12.84 (1 row) 乍一看其实能看出明显的区别,由于…...

Hive安装配置笔记
版本说明 hadoop-3.3.6(已安装) mysql-8(已安装) hive-3.1.3 将hive解压到对应目录后做如下配置: 基本配置与操作 1、hive-site <configuration><!-- jdbc连接的URL --><property><name>ja…...

前端数据可视化之【Echarts下载使用】
目录 🌟下载🌟浏览器引入🌟模块化引入 🌟使用🌟基本使用步骤 🌟绘制一个简单的图表🌟写在最后 🌟下载 🌟浏览器引入 官网下载界面:官方网站 或 Echarts中文…...
本机计算机上的mysql启动后停止
本机计算机上的mysql启动后停止 原因:mysql5.0和mysql8.0配置不同 把my.ini改成以下设置然后再重新 mysqld --initialize-insecure --usermysql然后再启动 net start mysqlmysql8.0 下面的路劲可自定义 [client] default-character-setutf8 [mysql] default-cha…...
Java中ReentrantLock测试线程的安全
使用场景 当需要在多线程环境下保证共享资源的安全访问时,可以使用Java中的ReentrantLock来实现线程安全。ReentrantLock是一个可重入的互斥锁,它提供了与synchronized关键字类似的功能,但更加灵活和扩展性强。 下面是一个使用ReentrantLoc…...
Vue-dvadmin-d2-crud-plus-常用配置-row-handle-columns-options
文章目录 1.row-handle columnHeader width minWidth fixed align renderHeader edit view remove remove.confirm remove.confirmTitle remove.confirmText custom 范例1 范例2 2.columns title key width minWidth fixed renderHeader sortable sortMethod sortBy sortOrders…...

【OpenCV实现图像的算数运算,性能测试和优化,改变颜色空间】
文章目录 OpenCV功能概要图像的算数运算性能测试和优化改变颜色空间对象追踪 OpenCV功能概要 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,提供了丰富的图像处理和计算机视觉算法。它支持多种编程语言&…...

多级缓存入门
文章目录 什么是多级缓存JVM进程缓存环境准备安装MySQL导入Demo工程导入商品查询页面 初识Caffeine Lua语法初识Lua第一个lua程序变量和循环Lua的数据类型声明变量循环 条件控制、函数函数条件控制 多级缓存安装OpenRestyOpenResty快速入门反向代理流程OpenResty监听请求编写it…...
CentOS卸载LVM磁盘的方法
在客户环境上遇到一个问题,本身的磁盘满了,需要把没有用的lvm逻辑卷卸载掉,然后挂上去,下面记录一下过程。 卸载原磁盘 umount /data # 如果/data目录正在被其他进程使用中,则使用fuser强制关闭,然后Umou…...
ChatGPT:Spring Boot和Maven——Java应用开发的关键工具和区别
ChatGPT:Spring Boot和Maven——Java应用开发的关键工具和区别 Springboot是什么? ChatGPT: Spring Boot是一个用于构建Java应用程序的开源框架,它是Spring Framework的一部分,但旨在简化Spring应用程序的开发。Sprin…...

智能振弦传感器:参数智能识别技术的重要科技创新
智能振弦传感器:参数智能识别技术的重要科技创新 智能振弦传感器是一种能够自动识别传感器参数的高科技产品。它的研发得益于河北稳控科技的不断创新和努力,其电子标签专用读数模块模块TR01将传感器生产和标定过程实现了自动化。该模块将温度电阻两芯线…...

tooltip实现悬停内容染色
一: 通过highlight.js项目实现对json字符串的染色高亮 此项目是jsp文件,并且引用了element-ui/highlight.js的组件 二: 实现效果 三: 代码实现 关键点在于成功引入相关的js及css,并且在tooltip渲染时进行数据染色。再将染色后的数据放到v-html中进行页面渲染(关键方…...

“深入探讨Java JUC中的ReentrantLock锁:实现多线程同步与并发控制“
简介 1、从Java5开始,Java提供了一种功能更强大的线程同步机制——通过显式定义同步锁对象来实现同步,在这种机制下,同步锁由Lock对象充当。 2、Lock 提供了比synchronized方法和synchronized代码块更广泛的锁定操作,Lock允许实…...

Java|学习|多线程
1.多线程的一些概念 进程:是正在运行的程序 是系统进行资源分配和调用的独立单位 每一个进程都有它自己的内存空间和系统资源。 线程:是进程中的单个顺序控制流,是一条执行路径。 单线程:一个进程如果只有一条执行路径࿰…...
【Python机器学习】零基础掌握VotingClassifier集成学习
为什么一些数据预测模型在复杂场景下表现不如预期? 在当今数据驱动的世界中,企业和研究者面临着如何从大量数据中提取有价值信息的挑战。假设一个电商公司想要通过用户行为数据预测产品销量,通常会使用单一的算法模型,如逻辑回归、随机森林或朴素贝叶斯。但问题来了,如果…...

深入了解JavaScript中的AJAX和HTTP请求
在现代Web开发中,AJAX(Asynchronous JavaScript and XML)和HTTP请求被广泛应用于实现动态交互式网页。本文将深入探讨AJAX的概念、工作原理以及使用方法。 什么是AJAX? AJAX是一种利用JavaScript和HTTP请求与服务器进行异步通信的…...

第87步 时间序列建模实战:LSTM回归建模
基于WIN10的64位系统演示 一、写在前面 这一期,我们介绍大名鼎鼎的LSTM回归。 同样,这里使用这个数据: 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal…...

GB/T28181协议介绍
GB/T28181协议介绍 文章目录 GB/T28181协议介绍总体介绍GB/T28181基本结构GB/T28181关键协议流程设备注册设备目录查询实时视频播放流程 GB/T28181协议总结 说到GB/T28181协议,如果你是从事视频监控领域的工作,那对他一定不陌生,在公共安全、…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...