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

【Linux网络编程】http协议的状态码,常见请求方法以及cookie-session

本文专栏:Linux网络编程

目录

一,状态码

重定向状态码

1,永久重定向(301 Moved Permanently)

2,临时重定向(302 Found)

二,常见请求方法

1,HTTP常见Header

2,GET方法 

3,POST方法

4,总结

三,cookie-session

1,cookie

 2,cookie问题

3,session

 4,总结

源码


 

一,状态码

HTTP状态码:是服务器响应客户端请求时返回的三位数字代码,用于表示请求的处理结果

以下列举几种常见状态码的表格:

状态码含义应用样例
100Continue表示请求已接受,需要继续处理。例如,上传大文件时,服务器告诉客户端可以继续上传。
200OK表示请求已被成功处理
201Create资源创建成功。例如,发布新文章,服务器返回文章创建成功的信息
204Not  Content删除文章后,服务器返回“无内容”表示操作成功
301Moved Permanently网站更换域名后,自动跳转到新的域名。搜索引擎更换网站链接时使用
302Found或 See Other用户登录成功后,自动跳转到用户首页
304Not Midified浏览器缓存机制
400Bad Request填写表单时,格式不正确导致的错误
401Unauthorized访问需要登陆的页面时,未登录或者认证失败
404Not Found访问的链接不存在
500

Internal Server

Error

服务器崩溃或数据库错误导致页面无法加载
502Bad Gateway使用代理服务器时,收到无效响应
503Service Unavaliable服务不可用(维护中或过载)

重定向状态码

  • 关于重定向相关的状态码,可以大概分为两类,永久重定向和临时重定向
  • 在本文中以301永久重定向302临时重定向为例,进行讨论。
  • 简单的理解重定向,就是当我们想访问一个网址时,会跳转到其他的网址。

具体看下图:

当使用浏览器访问s1时,接收到s1发送的应答报文,发现它的状态码是30x(301或者302),就知道是需要重定向到新的网址,新的网址是报文中Location后面的内容。提取到到新的网址后,浏览器会发送二次请求访问新的网址。这就是重定向的大致过程。

1,永久重定向(301 Moved Permanently)

  • 所谓永久重定向,就是我们想访问的资源的域名发生更改,当我们使用原网址进行访问的时候,会直接跳转到新的网址下。并且浏览器会更改内部的数据,用新的网址覆盖掉原来的网址,下次访问的时候就直接使用新的网址了。
  • 永久重定向(301)的价值是用来给搜索引擎更新网站链接的。
  • 在我们使用搜索引擎访问资源的时候,其实就是获取到目标资源的域名。但是如果有些域名发生改变,就可能会导致访问失败。
  • 所以,对于搜索引擎,会不定时的向目标资源发送请求,当收到目标的应答时,如果发现报文中状态码是301,并且报文中包含Location: XXX选项。搜索引擎就会将自己内部保保存原来的域名用新的XXX域名替换掉,所以下次访问的时候,直接使用新的域名。

2,临时重定向(302 Found)

有了对永久重定向的理解,临时重定向就很简单。当我们访问一个网址时,会跳转到新的网址,最常见的就是我们用户的登录操作,当我们登录完成后,就会跳转到用户首页。而下次访问时,还是需要先访问登录页面。

二,常见请求方法

最常见的两种方法:GET和POST

  • POST:上传资源,比如登录操作,需要上传我们的用户名和密码。
  • GET:获取资源,获取网页,图片,视频等等各种资源。同时也可以上传资源。

1,HTTP常见Header

Content-Type:数据类型,就是正文部分的内容是什么类型的,html,css或者是纯文本等等类型

Content-Length:正文部分的长度

Host:客户端告诉服务器,所请求的资源在哪个主机的哪个端口上。

User-Agent:声明用户的操作系统的浏览器版本信息

refer:当前页面是从哪个页面跳转过来的

Location:在上面状态码部分提到过。告诉客户端接下来要去哪里访问。

Cookie:这个 内容在本文下面讲解。

其中需要注意的是Content-Type数据类型,当服务器端给客户端返回数据时,需要带上这个属性,告诉浏览器该怎么解释(其实也可以不用带了,因为现在的浏览器已经很强大了,可以解析出来)。关于Content-Type,有一张对照表:

链接:HTTP Content-type 对照表 | content type

比如如果正问部分为html格式,那么报头中应该包含 Content-Type:text/html

2,GET方法 

  • 方法部分需要配合代码才好理解。这里我写了一个简单的http服务器(源码在文章末尾),以该http服务器为例子来理解GET方法。
  • 在服务器中设置了4个html网页:首页,登录页面,注册页面,404页面。
  • 其中首页可以跳转到登录页面和注册页面。

当我们想要进入登录页面,进行登陆时会出现如下问题:

此时的uri内容是:

同时登录页面的html内容是:

 

可以得出结论:uri中?之前的部分表示http提供的服务,?之后的内容表示用户输入的参数。只不过现在我们的http服务器还没有实现这个服务,所以最后会进入404页面。

  1.  之前我们访问网页都是在访问呢静态资源,图片视频什么的。而现在需要实现login服务,也就是让我们的服务器实现动他交互的功能。
  2. 实现方法:在对浏览器发送过来的uri进行解析时,判断是否带有问号,如果带有问号,表示需要进行动态交互,然后提取服务名(也就是问号之前的参数),再提取用户上传的参数(?之后的内容)

当我们实现好后,添加一个登录的操作,这里只是简单的将用户输入的数据以纯文本的形式发送回去,将来我们继续登陆后,不会访问404页面,而是收到同样的数据,以文本的形式展示出来。

//实现login一个服务
void Login(HttpRequest& req,HttpResponse& resp)
{//构建resp的内容//这里直接将req的内容以纯文本的形式发送回去std::string text="hello :"+req.Args();resp.setCode(200);resp.setHeader("Content-Type","text/plain");resp.setHeader("Content-Length",std::to_string(text.size()));resp.setText(text);
}

在http协议基础之上,我们新增了一个Login服务,我们将来就可以使用域名+服务名来访问对应的服务,这就相当于http给我们提供了一种微服务的接口。这种风格的网络接口称为RESTful风格的网络接口。所以未来我们还可以新增各种服务接口。比如注册接口,统计在线人数接口等等。

最后,其实我们早就知道了,GET方法的提参是通过uri提交的。 

3,POST方法

POST方法,我们看一段正文就可以知道了。

上面的报文是通过POST方法进行登录,可以发现再提交参数的时候,是将参数增加到正文部分的 

4,总结

 GET方法:

  1. 获取静态资源或者网页
  2. 提交参数,以uri形式提交
  3. GET提交参数一般不建议太长,因为uri长度是有限的
  4. GET传参,参数是会显示出来的。

POST方法:

  1. 提交参数,以正文部分参数
  2. 参数不会回显,相对私密

不管是GET还是POST,都是明文传送,可以抓取,是不安全的。

要做到真正的安全,必须要把报文进行加密,就要用到https协议。

三,cookie-session

1,cookie

HTTP协议是无连接,无状态的协议,即每次请求都需要建立新的连接,且服务器不会保存客户端的状态信息。

  1. HTTP底层是基于tcp的,所谓无连接,是指HTTP不管通信部分,只负责接受请求和发送应答的事情,连接是底层tcp管理的。所以说HTTP是无连接的。
  2. 无状态,是指当我们访问服务器时,服务器不会记录我们状态的信息。比如我们访问某个网页一次,就给我返回该网页一次。所以说是无状态的。(但实际上,为了提高效率,当我们访问一次后,浏览器会记录数据,下次访问时直接找浏览器拿即可)

有了上面的理解,看下面的一个例子:

如下图所示,当我们项访问某个网站资源时,需要登录认证 。

  1. 第一次登录认证成功后,会给我们返回网站首页。
  2. 拿到网站首页后,当我们想要访问某个资源时,就需要再次进行登录认证,因为HTTP是无状态的,他不会记录当前你这个用户是否登录过,所以需要再次登录认证。
  3. 那么从今往后,你每访问一个资源,就需要登录认证一次,这对用户的肯定不友好。

所以,为了解决上述问题,就引入了cookie功能

在进行完一次认证操作后,服务器返回应答,应答报文中会包含Set-Cookie属性,记录用户输入的内容。浏览器检测到Set-Cookie属性,会将该部分内容保存下来,形成一个cookie文件,下次访问的时候直接携带该cookie文件,不需要再次认证了。

 验证cookie的存在,以登录bilibili为例:

 2,cookie问题

如果我们的电脑被植入了木马程序,那么黑客就可以获取到我们浏览器内的cookie文件。此时在他自己的电脑上访问同样的网站,使用我们的cookie,那么黑客就可以以我们的身份登录,访问服务器了。这样我们的账号就会被盗取,同时cookie中记录的私密数据(用户名,用户密码等等)也会泄漏。所以说,单纯使用cookie是不安全的。

总结一下,会存在两个问题:用户的账号丢失,用户的私密信息泄漏。

为了一定程度的解决该问题,就引入了session。

3,session

 为了一定程度的解决上述问题,就引入了session

  1. 当我们登录认证成功后,我们输入的数据(用户名+密码),服务器端会生成一个session对象,来保存我们的密码和数据。然后给浏览器端返回一个session_id。下次访问时,直接携带cookie,cookie中保存了session_id,服务器端检查session_id是否存在即可。这样将用户的信息保存在服务器端,不保存在客户端,就解决了用户私密信息泄漏的问题。
  2. 而对于账号丢失的问题,不能完全解决,只能采取一定的辅助方案,比如溯源ip,地址的变更等等。比如,上次登录是在北京,5秒后再次登录,ip变为云南了,此时服务器就会检测到异常,将保存的session对象释放掉,要求用户重新登录,重新输入用户名和密码。就在一定程度上解决了这些问题。

 4,总结

cookie和session:是用来负责会话管理与会话保持的。是HTTP的附加功能,不严格属于HTTP。

源码

myhttp2 · 小鬼/linux学习 - 码云 - 开源中国https://gitee.com/wang-junyanxx/linux-learning/tree/master/myhttp2

相关文章:

【Linux网络编程】http协议的状态码,常见请求方法以及cookie-session

本文专栏:Linux网络编程 目录 一,状态码 重定向状态码 1,永久重定向(301 Moved Permanently) 2,临时重定向(302 Found) 二,常见请求方法 1,HTTP常见Hea…...

ARM 指令集(ubuntu环境学习)第六章:ARM 编程技巧与优化策略

在本章中,我们将介绍一些在 ARM 架构上编写高效代码的技巧和常见优化策略,帮助您在嵌入式系统中获得更低延迟、更高吞吐和更低功耗。 6.1 寄存器利用与最小化内存访问 多用寄存器 ARM 通用寄存器(r0–r12)数量充足,尽量将临时变量保留在寄存器中,减少对内存的读写。 避免…...

柔性超声耦合剂的选择与设计-可穿戴式柔性超声耦合剂面临的难题

柔性PZT压电薄膜:破解可穿戴式超声耦合剂难题的关键材料! 随着可穿戴技术的快速发展,超声设备正朝着轻量化、柔性化和高集成度方向演进。在医学诊断、健康监测和智能穿戴领域,可穿戴式超声设备因其无创、实时、动态成像等优势受到…...

XCTF-pwn(二)

guess_num 看一下文件信息 利用gets函数将seed[0]给覆盖掉 距离0x20 我们需要输入十次随机数产生的值 写一个c程序先预判当seed是a的时候产生的随机数分别是多少 payload from pwn import* from ctypes import* context.log_leveldebugrremote("61.147.171.105", 6…...

AI外挂RAG:大模型时代的检索增强生成技术

目录 引言 一、RAG是什么? 二、RAG为什么会出现? 三、RAG的工作原理 四、RAG的技术优势 五、RAG的应用场景 六、RAG对AI行业的影响 七、RAG面临的挑战 引言 在人工智能领域,大型语言模型(LLM)如ChatGPT、DeepSe…...

SpringTask

Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑 应用场景:信用卡每月还款提醒、火车票售票系统处理未支付订单 fixedDelay:上一次任务执行完成后多长时间(ms)执行下一次任务 fixe…...

Sphinx 文档图片点击放大

文章目录 问题描述解决方案步骤 1:创建 JavaScript 文件步骤 2:编写 JavaScript 代码步骤 3:更新 Sphinx 配置 高级定制为所有图片添加点击功能添加缩放控制 总结 在使用 Sphinx 生成技术文档时,我们经常需要在文档中嵌入截图和示…...

菜鸟之路Day29一一MySQL之DDL

菜鸟之路Day29一一MySQL之DDL 作者:blue 时间:2025.5.2 文章目录 菜鸟之路Day29一一MySQL之DDL0.概述1.DDL之数据库操作1.1查询1.2创建1.3使用1.4删除 2.DDL之表操作2.1创建表2.2数据类型2.3查询表2.4修改表结构2.5删除表 0.概述 文章内容学习自黑马程…...

架构师面试(三十七):监控系统架构模式

题目 监控是在产品生命周期的运维环节,能对产品的关键指标数据进行【实时跟踪】并对异常数据进行【实时报警】。 一句话描述,监控系统可以帮我们【主动预防和发现】业务系统中的问题。 我们常说,监控系统是 “粮草”,业务系统是…...

【Redis】Hash哈希

文章目录 注意个问题hset命令(核心)hget命令(核心)hexists命令hdel命令hkeys和hvals命令hgetall和hmget命令hlen命令hsetnx命令hincrby命令哈希命令小结哈希编码方式使用场景1.关系型数据表保存用户的信息Redis三种缓存方式对比1.…...

【SpringBoot】Spring中事务的实现:声明式事务@Transactional、编程式事务

1. 准备工作 1.1 在MySQL数据库中创建相应的表 用户注册的例子进行演示事务操作,索引需要一个用户信息表 (1)创建数据库 -- 创建数据库 DROP DATABASE IF EXISTS trans_test; CREATE DATABASE trans_test DEFAULT CHARACTER SET utf8mb4;…...

从零开始讲DDR(9)——AXI 接口MIG 使用(2)

一、前言 在之前的文章中,我们介绍了官方DDR MIG AXI接口的例程的整体框架,在本文中,我们将着重介绍例程中关于数据产生,及驱动到AXI接口的相关逻辑实现。 二、data_gen 在例程中,有ddr4_v2_2_8_data_gen这样一个文件…...

组件通信-props

props 是使用频率最高的一种通信方式&#xff0c;父>子 子>父 父传子&#xff1a;属性值 是非函数子传父&#xff1a;属性值 是函数 父组件 <script setup lang"ts"> import { ref } from vue import Child from ./Child.vue const car ref(奥迪) c…...

纯原生Java实现:获取整个项目中指定接口所有的实现类

不使用第三方&#xff0c;不使用属性文件,不指定包名&#xff0c;获取整个系统中某一个接口所有的实现类&#xff0c;纯Java实现 /*** 类查找器&#xff0c;用于扫描类路径中的所有类&#xff0c;并找出指定类的实现类。* 该类通过递归扫描类路径下的所有 .class 文件&#xf…...

反射机制补充

不同对象实例的地址不同 在 Java 里&#xff0c;每当使用 new 关键字创建一个对象时&#xff0c;JVM 会在堆内存中为该对象分配一块新的内存空间&#xff0c;每个对象实例都有自己独立的内存地址。所以不同的对象实例&#xff0c;其内存地址是不同的。 以下是一个简单示例&am…...

计算机视觉的未来发展趋势

计算机视觉的未来发展趋势主要集中在以下几个方面&#xff1a; 1. 自监督学习与少样本学习 自监督学习&#xff1a;通过从无标签的数据中提取有用特征&#xff0c;克服对大量标注数据的依赖。2025年&#xff0c;基于大规模图像数据的自监督预训练模型将更加成熟&#xff0c;能…...

轻量级网页版视频播放器

用deepseek开发的轻量级&#xff0c;网页版视频播放器 可以选择本地文件 可以播放、暂停、全屏、有进度条和时间进度 代码如下&#xff1a; 新建.txt文本文档&#xff0c;把代码复制粘贴进去&#xff0c;把.txt文档后缀名改为.html&#xff0c;用浏览器打开即可使用 <!DO…...

18. LangChain分布式任务调度:大规模应用的性能优化

引言&#xff1a;从单机到万级并发的进化 2025年某全球客服系统通过LangChain分布式改造&#xff0c;成功应对黑五期间每秒12,000次的咨询请求。本文将基于LangChain的分布式架构&#xff0c;详解如何实现AI任务的自动扩缩容与智能调度。 一、分布式系统核心指标 1.1 性能基准…...

C/C++工程师使用 DeepSeek

一、使用 DeepSeek 生成 C/C 代码 在 C/C 开发中&#xff0c;很多时候需要编写一些常见功能的代码&#xff0c;如排序算法、文件读写操作、数据结构的实现等。借助 DeepSeek&#xff0c;工程师只需用自然语言清晰描述需求&#xff0c;它就能依据大量的代码数据和深度学习算法&a…...

数据结构-线性结构(链表、栈、队列)实现

公共头文件common.h #define TRUE 1 #define FALSE 0// 定义节点数据类型 #define DATA_TYPE int单链表C语言实现 SingleList.h #pragma once#include "common.h"typedef struct Node {DATA_TYPE data;struct Node *next; } Node;Node *initList();void headInser…...

第 7 篇:跳表 (Skip List):简单务实的概率性选手

前面几篇我们都在探讨各种基于“树”结构的有序表实现&#xff0c;它们通过精巧的平衡策略&#xff08;高度、颜色、大小&#xff09;和核心的“旋转”操作来保证 O(log N) 的性能。今天&#xff0c;我们要介绍一位画风完全不同的选手——跳表 (Skip List)。它不依赖树形结构&a…...

sys目录介绍

文章目录 1. 前言2. 目录层次3. 目录介绍3.1 devices 目录3.2 block 目录3.3 bus 目录3.4 class 目录3.5 dev 目录3.6 firmware目录3.7 fs 目录3.8 kernel目录3.9 module 目录3.10 power 目录 sys目录介绍 1. 前言 linux 下一切皆文件&#xff0c;文件的类型也很多&#xff0c;…...

基于DQN的自动驾驶小车绕圈任务

1.任务介绍 任务来源: DQN: Deep Q Learning &#xff5c;自动驾驶入门&#xff08;&#xff1f;&#xff09; &#xff5c;算法与实现 任务原始代码: self-driving car 最终效果&#xff1a; 以下所有内容&#xff0c;都是对上面DQN代码的改进&#…...

源码安装SRS4

Ubuntu20安装好SRS后&#xff0c;&#xff08;源码安装&#xff09; 注意&#xff1a;在trunk目录SRS ./objs/srs -c conf/srs.conf 以上为启动srs命令&#xff0c;-c 为指定配置文件&#xff0c; 查看SRS进程 ps aux | grep srs 查看端口&#xff1a; netstat -ano | gre…...

OrbitControls

OrbitControls 3D虚拟工厂在线体验 描述 Orbit controls&#xff08;轨道控制器&#xff09;可以使得相机围绕目标进行轨道运动。 Constructor OrbitControls( object : Camera, domElement : HTMLDOMElement ) 参数类型描述objectCamera&#xff08;必须&#xff09;将要…...

【数据库】四种连表查询:内连接,外连接,左连接,右连接

在数据库操作中&#xff0c;连表查询是处理多表关联的核心技术。以下是四种主要连接方式的详细介绍、快速掌握方法及实际应用指南&#xff1a; 目录 **一、四种连表查询详解****1. 内连接&#xff08;INNER JOIN&#xff09;****2. 左连接&#xff08;LEFT JOIN / LEFT OUTER J…...

Redis怎么避免热点数据问题

使用 RedisTemplate 避免热点数据问题的解决方案、场景及示例&#xff1a; 1. 数据分片&#xff08;Sharding&#xff09; 场景&#xff1a;高频读写的计数器&#xff08;如文章阅读量统计&#xff09; ​原理​&#xff1a;将数据分散到多个子键&#xff0c;降低单个 Key 的压…...

完整的 VS Code + CMake + Qt + GCC 项目构建方案:EXE 程序与多个 DLL 库

完整的 VS Code CMake Qt GCC 项目构建方案&#xff1a;EXE 程序与多个 DLL 库 在本文中&#xff0c;我们将介绍如何构建一个包含 EXE 程序和多个 DLL 库的项目&#xff0c;适用于 VS Code CMake Qt GCC 开发环境。这个方案为一个模块化的项目结构&#xff0c;使得代码清…...

Python 数据智能实战 (7):智能流失预警 - 融合文本反馈

写在前面 —— 不再错过关键预警!结合用户行为与 LLM 文本洞察,构建更精准的流失预测模型 在之前的探索中,我们学习了如何利用大语言模型 (LLM) 对用户评论进行深度挖掘,提取情感、发现主题,并将非结构化的文本信息转化为有价值的特征 (如 Embeddings)。 现在,我们要将…...

Flutter - 概览

Hello world ⌘ shift p 选择 Empty Application 模板 // 导入Material风格的组件包 // 位置在flutter安装目录/packages/flutter/lib/material.dart import package:flutter/material.dart;void main() {// runApp函数接收MainApp组件并将这个Widget作为根节点runApp(cons…...

Python-pandas-操作Excel文件(读取数据/写入数据)及Excel表格列名操作详细分享

Python-pandas-操作Excel文件(读取数据/写入数据) 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是pandas的使用语法。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性。【帮帮志系列文章】&#xff1a;每…...

手写 Vue 源码 === Vue3 设计思想

1.声明式框架 Vue3 是声明式的框架,用起来简单。 命令式和声明式区别 早在 JQ 的时代编写的代码都是命令式的,命令式框架重要特点就是关注过程声明式框架更加关注结果。命令式的代码封装到了 Vuejs 中,过程靠 vuejs 来实现声明式代码更加简单,不需要关注实现,按照要求填代…...

Android WebView加载h5打开麦克风与摄像头的权限问题

目录 快速处理 app向系统申请录音与相机权限h5向app申请录音和相机权限 详细解答 app权限与h5权限录音与麦克风默许的风险最佳实践 Android webview h5 麦克风权限&#xff0c;摄像头&#xff08;相机&#xff09;权限实现与填坑。 快速处理 app向系统申请录音与相机权限 …...

三种计算最小公倍数的方法分析

三种计算最小公倍数的方法分析与比较 一.引言 最小公倍数&#xff08;Least Common Multiple, LCM&#xff09;是数学中的一个基本概念&#xff0c;指能够被两个或多个整数整除的最小的正整数。在编程中&#xff0c;我们有多种方法可以计算两个数的最小公倍数。本文将分析三种…...

PDF转换工具xpdf-tools-4.05

XPDF是一个开源的PDF查看、提取和转换工具套件&#xff0c;使用C编写&#xff0c;支持多种操作系统&#xff0c;包括Linux、Unix、OS/2、Windows和Mac OS X‌1。XPDF不仅是一个PDF查看器&#xff0c;还包含多个实用工具&#xff0c;如文本提取器、图像转换器和HTML转换器等‌&a…...

aws(学习笔记第四十课) image-content-search

aws(学习笔记第四十课) image-content-search 使用SQS Lambda集成 数据库&#xff08;Aurora Serverless&#xff09; Cognito&#xff08;用户管理&#xff09; rekognition&#xff08;图像解析&#xff09; 学习内容&#xff1a; 使用SQS Lambda Aurora Serverless Cog…...

GPT-4o 图像生成与八个示例指南

什么是GPT-4o图像生成&#xff1f; 简单来说&#xff0c;GPT-4o图像生成是集成在ChatGPT内部的一项功能。用户可以直接在对话中&#xff0c;通过文本描述&#xff08;Prompt&#xff09;来创建、编辑和调整图像。这与之前的图像生成工具相比&#xff0c;体验更流畅、交互性更强…...

PostgreSQL 查看表膨胀情况的方法

PostgreSQL 查看表膨胀情况的方法 表膨胀(Table Bloat)是PostgreSQL中由于MVCC机制导致的一种常见现象&#xff0c;当大量数据被更新或删除后&#xff0c;表中会积累"死元组"(dead tuples)&#xff0c;这些死元组占据空间但不可见&#xff0c;导致表实际占用的磁盘空…...

从 0 到 1!深度剖析项目实施流程,开启项目管理新视野

一、项目准备 / 前期准备 &#xff08;一&#xff09;跟销售进行项目交接 对接人&#xff1a;销售人员交接会议内容&#xff1a; 了解项目背景、客户基本信息、项目版本、具备二次开发功能、接口、了解合同信息等。明确项目情况、客户基本情况、使用软件&#xff08;版本&…...

书生实战营之沐曦专场

一&#xff1a;实验环境进入和启动实验容器(D.run平台) 1.1首先进入平台进行注册 D.run平台https://console.d.run/ 注册和登录环节就跳过了。 1.2 启动实验容器--详细步骤如下 1.2.1选择容器的名称、区域、镜像&#xff08;注意镜像必须选择Dlinfer&#xff09; 1.2.2可以选…...

在运行 Hadoop 作业时,遇到“No such file or directory”,如何在windows里打包在虚拟机里运行

最近在学习Hadoop集群map reduce分布运算过程中&#xff0c;经多方面排查可能是电脑本身配置的原因导致每次运行都会报“No such file or directory”的错误&#xff0c;最后我是通过打包文件到虚拟机里运行得到结果&#xff0c;具体步骤如下&#xff1a; 前提是要保证maven已经…...

基于YOLOV5的目标检测识别

基于YOLOV5的目标检测识别 舰船目标检测口罩目标检测飞机目标检测 舰船目标检测 口罩目标检测 飞机目标检测...

第4篇:服务层抽象与复用逻辑

在业务系统复杂度指数级增长的今天&#xff0c;服务层&#xff08;Service Layer&#xff09;的合理设计直接影响着系统的可维护性和扩展性。本文将深入剖析 Egg.js 框架中的服务层架构设计&#xff0c;从基础实现到高级封装&#xff0c;全方位讲解企业级应用的开发实践。 一、…...

多模态大语言模型arxiv论文略读(五十四)

RoboMP 2 ^2 2: A Robotic Multimodal Perception-Planning Framework with Multimodal Large Language Models ➡️ 论文标题&#xff1a;RoboMP 2 ^2 2: A Robotic Multimodal Perception-Planning Framework with Multimodal Large Language Models ➡️ 论文作者&#xff…...

中小企业MES系统详细设计

版本&#xff1a;V1.1 日期&#xff1a;2025年5月2日 一、设备协议兼容性设计 1.1 设备接入框架 #mermaid-svg-PkwqEMRIIlIBPP58 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-PkwqEMRIIlIBPP58 .error-icon{fill…...

第二十周:项目开发中遇到的相关问题(一)

自十九周开始&#xff0c;我们便开始着手写项目&#xff08;关于新闻资讯类的Web项目&#xff09;&#xff0c;当然&#xff0c;在这之中我们也学到了很多高效且有用的好技术&#xff0c;在接下来的内容中将去具体的描述这些好技术&#xff0c;介绍它们的具体用法和应用场景。本…...

WebRtc10: 端对端1v1传输基本流程

媒体能力协商过程 RTCPeerConnection&#xff08;核心类&#xff09; 基本格式 pc new RTCPeerConnection([configiration]); RTCPeerConnection方法分类 媒体协商Stream/Track传输相关方法统计相关方法 媒体协商过程 协商状态变化 媒体协商方法 createOffercreateAnswe…...

【云备份】配置文件加载模块

目录 一.为什么要配置文件 二.配置文件的实现 三.单例文件配置类设计 四.源码 一.为什么要配置文件 我们将服务端程序运行中用到的一些关键信息保存到配置文件中&#xff0c;这样可以使程序的运行更加灵活。 这样做的好处是&#xff0c;未来如果我们想要修改一些关键信息&…...

重构之道:识别并替换不合适使用的箭头函数

1、引言 JavaScript 自 ES6 引入了箭头函数(Arrow Function)后,因其简洁的语法和对 this 的词法绑定机制,迅速成为开发者喜爱的写法之一。然而,并不是所有场景都适合使用箭头函数。 在实际开发中,我们常常会因为追求代码简洁而忽视其潜在问题,例如: this 指向错误不适…...

git问题记录-如何切换历史提交分支,且保留本地修改

问题记录 我在本地编写了代码&#xff0c;突然想查看之前提交的代码&#xff0c;并且想保留当前所在分支所做的修改 通过git stash对本地的代码进行暂存 使用git checkout <commit-hash>切换到之前的提交记录。 查看完之后我想切换回来&#xff0c;恢复暂存的本地代码…...