【Java ee初阶】HTTP(2)
一、HTTP的方法
方法 | 说明 | 支持的HTTP协议版本 |
GET | 获取资源 | 1.0、1.1 |
POST | 传输实体主体 | 1.0、1.1 |
PUT | 传输文件 | 1.0、1.1 |
HEAD | 获得报文首部 | 1.0、1.1 |
DELETE | 删除文件 | 1.0、1.1 |
OPTIONS | 询问支持的方法 | 1.1 |
TRACE | 追踪路径 | 1.1 |
CONNECT | 要求用隧道协议连接代理 | 1.1 |
LINK | 建立和资源之间的联系 | 1.0 |
UNLINE | 断开连接关系 | 1.0 |
GET:从服务器上获取某个资源
POST:向服务器上传xxx个资源
PUT:向服务器上传xxx资源(文件)
DELETE:删除服务器的xxx资源
其余的方法,使用的非常少,因此我们忽略不计
(1)GET
(一)
HTTP中最常见到的方法,有着很多操作,都会触发HTTP GET请求
1.直接在浏览器地址栏中输入URL,点收藏夹也是一样的
2.在页面上点击一些连接跳转的时候
3.HTML间接加载其他资源的时候(CSS,JS,图片......)
HTML中通过link标签,加载css
通过script标签,加载js
通过img标签,加载图片
3.也可以通过js /java/c++/Python代码手动构造GET请求
(二)GET请求的特点
GET请求一般没有body,如果你通过代码构造一个get请求,故意添加上body,理论上也是可行的
GET请求要想给服务器传递数据,往往就是通过 路径/querys stirng 来进行传递
(2)POST请求
(一)
1.登录的时候
body提交的就是用户名和密码。
用户名密码,得是加密后再传输的,不能直接明文传输
对于GET请求这种没有body的情况,一般不会用来实现登录功能。如果非要去实现也行,可以把用户名密码加密之后,通过query string进行传输
2.上传资源/文件
body部分就是我们传输的图片和内容,图片属于“二进制文件”。通过HTTP body传输的时候,有时候就会把二进制的内容,通过base64进行编码,变成文本的内容
body中完全可以放二进制数据的(压缩的结果)
之所以用Base64转成文本,主要还是因为当前图片本身比较小,按照文本的方式,服务器代码处理起来好实现。
base64:把而仅仅只数据,用文本(ascii字符)进行重新编码,通过4个ascii字符,标识原来的3个字节的二进制数据。
body可以存二进制,但是url的query string不能
如果由二进制的数据想通过query string来进行保存,那么就可以通过base64进行编码
(二)POST请求的特点
带有body,通过body给服务器传递数据
不太需要query stirng传递了,通常情况下没有query string(不绝对)
post的body格式看起来好像是和 query string 差不多(但是这里还有其他情况)
HTTP的这些方法,在使用的时候不一定严格按按照官方提供的语义来进行
经典面试题——谈谈GET和POST的区别
核心结论:GET 和 POST其实没有本质区别,只是HTTP的两个不同的方法。大部分情况下,使用GET的场景,也可以替换成POST,使用POST的场景也可以替换成GET
但是从使用习惯来讲,还是存在差异的
(1)GET通常没有body,通过query stirng传递数据给服务器
POST通常由body,不需要通过query string 传递数据
*并不绝对,你自己写一个代码,构造GET请求,加上body;构造POST请求,加上query stirng 都是可行的
(2)语义上的区别:GET标识“获取”,POST表示“提交”
*不绝对,目前HTTP的方法在时间中经常会混用
GET和 POST 的区别最主要就是上面这两个
网上还有一些其他的说法
*GET请求不安全,POST请求比GET更安全
比如登录场景中,GET的话,就会把用户名和密码显示到URL上,如果别人看一眼你的屏幕,就会知道你的密码❌
安全,得是通过“加密”来完成的
如果这个说法是正确的,那么即使没有人看你的屏幕,黑客一抓包,也就看到了
*幂等性 GET请求 官方建议实现成“幂等的”(也就是当你的请求一定的时候,得到的响应结果也就一定),而POST请求无要求(HTTP标准文档上)❌
标准文档只是“建议”,实际开发的时候,不一定会遵守,尤其是在现在,很多的网站都开始讲究“个性化”
*可缓存,承接幂等
GET如果实现成幂等,就可以把结果缓存起来
POST不是先成幂等,就不能缓存❌
*传输的数据量
之前有一个说法,GET请求传输的数据量少,POST传输的数据两最大,GET请求的URL存在长度限(1MB,10MB,1KB,2KB...)❌
HTTP标准文档中没有对URL的长度给出限制,上面的限制主要来自于 浏览器/HTTP服务器的实现。
*数据的类型
GET传输数据的时候,通过query string只能传输文本,POST通过body传输,也可以传输二进制❌
query string虽然不能够直接传输二进制,但是可以通过Urlencode传输二进制
(3)PUT(和POST是差不多一样的)
(4)DELETE(和GET类似,一般不带有body,通过query stirng传输数据)
二、Restful 风格的API设计(HTTP的API)
API:应用程序编程接口 Application Programming interface
方法/类(库/框架提供的API)
有些服务器,也可以认为是API的提供者,是网络上的接口
你给这个服务器发一个xxx的请求,服务器给你返回一个xxx的响应,可能提供TCP级别的API(例如RPC框架,形如grpc,thrift,dubbo)
也可能是提供HTTP级别的API(后面在javaee进阶)
咱们需要写一些服务器,提供Http api给别人(浏览器/前端)进行调用,此时就需要有一定的规范约束设计风格
1.通过请求中的方法表示不同的语义
GET:查询
POST:新增
PUT:修改
DELETE:删除
2.通过URL的路径,表示操作的资源
3.请求和响应携带的数据,都尽量使用json格式的数据
json格式的数据:
{
key:value
key2:value2
}
4.通过HTTP响应的状态码,表示失败的原因
按照上述的约定,设计出来的API风格是统一的
三、HTTP的版本号
当前最主流的HTTP版本,响应的版本号,也是在首行,但是在前面
四、HTTP报头(header)
行文本,每一行都是一个键值对。键和值之间使用:空格来进行分割。
header 中的键值对都是标准规定的,(也允许用户自定义),这些header中就存在特定的含义
header的key太多了,不必一一介绍
请求中的header,描述了访问的服务器的IP(域名)和端口(可以省略)
URL中已经存在了访问的服务器的地址和端口,比如针对HTTPS来说,HTTPS是会把header部分都加密的。URL里的服务器的地址端口,就可以和Host加密后的服务器地址和端口做一个校验。
Content-Length: 1554
描述了body的长度
Content-Type: application/json
描述了body的数据格式
上述这两个东西,只有请求/响应中存在body才存在这两个属性
这两个东西共同解决了粘包问题(粘包问题在以前的帖子里有具体阐述,是一个面向字节流传输涉及到的问题,是一个TCP问题,而HTTP就是基于TCP的。如果一个TCP连接中传输多个HTTP请求/响应,此时就需要让应用程序能够区分从哪里到哪里是一个完整的应用层数据包)
byte[] body = new byte[n];
inputStream.ready(body);
HTTP协议,就是按照上述学习的格式,往TCP socket当中读写数据
服务器如何区分出,从哪里到哪里是一个完整的HTTP请求呢?
1)如果没有body,直接读到空行结束 就可以认为请求结束了
2)如果有Body,header中必然存在Content-Length,取出Content-Length的值(字节)。找到空行,空行后面就是body的开始,从开始位置,读Content-Length这么多字节就可以了
常见的Content-Type:
1) text/html
2) text/css
3) application/javascript
4) application/json
5) image/png
6) image/jpg 浏览器/服务器
根据这个 Content - Type 的值 决定 body 如何使用
如果一个请求/响应,虽然有 body 但是没有 Content - Type 或者 Content - Length 。那就是一个非法的“请求/响应” ,比如响应中如果没有 Content - Type ,浏览器会根据 body 中的数据,“猜”一个格式(有较大的概率能猜对) 。如果没有 Content - Length 浏览器也能猜(按照下一个请求一定是 GET/POST 开头)。
这就是鲁棒性:一个系统的 容错能力
英文音译robustness
鲁棒性:健壮性;强健性;耐用性;
即使你对浏览器很粗鲁的返回错误格式的数据,他仍然表现的很棒。
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0
30年前1995年左右的时候,这样的特性非常重要。
计算机/互联网 飞速发展的阶段, 最早的浏览器访问的网站是纯文本的。 后来,有了多媒体(图片,音频,视频) 再后来,有了交互能力(JS) 。再再后来,有了更复杂的交互体系(flash,现在更强的是js体系) 用户手上的浏览器,有的是老版本,只能支持文本 有的是新版本,能够支持上述所有功能。这些全都要,因此要提供多个版本的网站,有的版本只包含文字,有的包含文字和多媒体,有的则全都包含。但是,如今的网站形态基本就定型了,(下一个革命性的变化,可能是VR技术成熟)。在的浏览器上面的功能基本都有。
因此User - Agent现在只有一个作用,那就是可以区分PC端还是移动端 。PC屏幕比较大比较宽,手机屏幕比较窄比较小。有些系统,也开始往多设备上进行演化了。 针对上述区分规则,也不是完全解决问题。 C语言中, 一个指针变量,存地址 地址多长。 你的手机浏览器一般都有功能,修改UA, 在手机上通过修改UA就能够访问电脑版 ,根据用户请求的User - Agent,判定用户使用的浏览器/系统版本 是哪个(也就知道浏览器能支持哪些特性) 前端开发的流行的方式。不用给PC手机维护两个版本的网页。 就一套代码, 这一套代码可以根据浏览器窗口的宽度,自动适应.
相关文章:
【Java ee初阶】HTTP(2)
一、HTTP的方法 方法 说明 支持的HTTP协议版本 GET 获取资源 1.0、1.1 POST 传输实体主体 1.0、1.1 PUT 传输文件 1.0、1.1 HEAD 获得报文首部 1.0、1.1 DELETE 删除文件 1.0、1.1 OPTIONS 询问支持的方法 1.1 TRACE 追踪路径 1.1 CONNECT 要求用隧道…...
计算机视觉与深度学习 | Python实现EMD-SSA-VMD-LSTM-Attention时间序列预测(完整源码和数据)
EMD-SSA-VMD-LSTM-Attention 一、完整代码实现二、代码结构解析三、关键数学公式四、参数调优建议五、性能优化方向六、工业部署建议 以下是用Python实现EMD-SSA-VMD-LSTM-Attention时间序列预测的完整解决方案。该方案结合了四层信号分解技术与注意力增强的深度学习模型&#…...
Java 应用如何实现 HTTPS:加密数据传输的实用指南
Java 应用如何实现 HTTPS:加密数据传输的实用指南 在当今的互联网环境中,数据安全至关重要,HTTPS 作为加密的数据传输协议,为 Java 应用提供了安全通信的保障。本文将深入探讨 Java 应用如何实现 HTTPS,通过详细代码实…...
手机打电话时如何将通话对方的声音在手机上识别成文字
手机打电话时如何将通话对方的声音在手机上识别成文字 --本地AI电话机器人 上一篇:手机打电话时由对方DTMF响应切换多级IVR语音应答(一) 下一篇:手机打电话时由对方DTMF响应切换多级IVR语音应答(二) 一、…...
18.自动化生成知识图谱的多维度质量评估方法论
文章目录 一、结构维度评估1.1 拓扑结构评估1.1.1 基础图论指标1.1.2 层级结构指标 1.2 逻辑一致性评估1.2.1 形式逻辑验证1.2.2 约束满足度 二、语义维度评估2.1 语义一致性评估2.1.1 标签语义分析2.1.2 关系语义评估 2.2 语义表示质量2.2.1 嵌入质量2.2.2 上下文语义评估 三、…...
W5500使用ioLibrary库创建TCP客户端
1、WIZnet全硬件TCP/IP协议栈 WIZnet全硬件TCP/IP协议栈,支持TCP,UDP,IPv4,ICMP,ARP,IGMP以及PPPoE协议。 以太网:支持BSD和WIZCHIP(W5500/W5300/W5200/W5100/W5100S)的SOCKET APIs驱动程序。 互联网: DHCP客户端 DNS客户端 FTP客…...
2025B难题练习
1.启动多任务排序 拓扑排序 每次选入度为0的点 对每次选的点进行排序 package mainimport ("bufio""fmt""os""slices""strings" )func main() {scanner : bufio.NewScanner(os.Stdin)scanner.Scan()text : scanner.Text()…...
20250517让NanoPi NEO core开发板在Ubuntu core16.04.2下支持TF卡的热插拔
20250517让NanoPi NEO core开发板在Ubuntu core16.04.2下支持TF卡的热插拔 2025/5/17 17:52 缘起:实测NanoPi NEO core开发板上电之后,后插入的TF卡不认/不支持热插拔。 Ubuntu core16.04.2 Ubuntu core20.04 Ubuntu core16.04.3 用NanoPi NEO core开发板…...
Vue百日学习计划Day19-20天详细计划-Gemini版
重要提示: 番茄时钟: 每个番茄钟为25分钟学习,之后休息5分钟。每完成4个番茄钟,进行一次15-30分钟的长休息。动手实践: DevTools 的使用和 Git 命令的掌握都需要大量的实际操作。请务必边学边练。环境准备:…...
Uniapp、Flutter 和 React Native 全面对比
文章目录 前言Uni-app、Flutter 和 React Native 跨平台框架对比报告1. 性能对比2. 跨平台能力3. 学习曲线4. 社区生态与第三方库5. 原生能力扩展6. UI 渲染能力7. 企业支持与典型使用场景8. 开发效率与工具链 前言 将对 Uniapp、Flutter 和 React Native 进行全面对比&#x…...
【Linux笔记】——线程互斥与互斥锁的封装
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:【Linux笔记】——Linux线程封装 🔖流水不争,争的是滔滔不息 一、线程互斥的概念二、互…...
Linux面试题集合(4)
现有压缩文件:a.tar.gz存在于etc目录,如何解压到data目录 tar -zxvf /etc/a.tar.gz -C /data 给admin.txt创建一个软链接 ln -s admin.txt adminl 查找etc目录下以vilinux开头的文件 find /etc -name vilinux* 查找admin目录下以test开头的文件 find admin -name te…...
Java二叉树题目练习
Java二叉题目练习 相同的树对称二叉树平衡二叉树二叉树的最近公共祖先二叉树的层序遍历二叉树层序遍历 ||二叉树遍历 相同的树 二叉树的题目大多数时候就可以采用递归的方法写 因为二叉树是由根左子树和右子树组成,每一棵左子树和右子树又可以被看成一颗完整的树&am…...
WORD个人简历单页326款模版分享下载
WORD个人简历模版下载:WORD个人简历模版https://pan.quark.cn/s/7e79a822c490...
Linux容器技术详解
容器技术基础 什么是容器 容器是一种轻量级的虚拟化技术,它将应用程序及其依赖(库、二进制文件、配置文件等)打包在一个独立的单元中,可以在任何支持容器运行时的环境中一致地运行。 Docker官网:https://www.docker…...
显卡、Cuda和pytorch兼容问题
这里写目录标题 驱动与CUDA版本兼容性问题1. **驱动与CUDA版本兼容性问题**2. **任务特性与硬件适配差异**3. **优化策略与框架配置差异**4. **散热与功耗限制**5. **数据传输与CPU瓶颈**排查建议总结 查询PyTorch中实际使用的CUDA版本**1. 查询PyTorch中实际使用的CUDA版本***…...
仅需三张照片即可生成沉浸式3D购物体验?谷歌电商3D方案全解析
随着消费者对线上购物体验的要求不断提高,传统2D图片已难以满足用户“真实感知商品”的需求。尤其在鞋类、家具、服装等高决策成本的商品上,缺乏空间感和交互性的购物方式成为转化率瓶颈。 谷歌敏锐地捕捉到这一趋势,早在2022年起便开始探索通过生成式AI技术实现“低成本、…...
PIC16F877A LCD1602 DHT11 温湿度读取显示代码 MPLAB
#include <xc.h> #include <stdio.h> #include <stdlib.h> #...
PIC16F18877 的主时钟 设置方法
#include <xc.h>// ========== 配置位设置 ========== // #pragma config FEXTOSC = OFF // 使用内部振荡器 #pragma...
西门子 Teamcenter13 Eclipse RCP 开发 1.3 工具栏 单选按钮
西门子 Teamcenter13 Eclipse RCP 开发 1.3 工具栏 单选按钮 1 配置文件2 插件控制3 命令框架 位置locationURI备注菜单栏menu:org.eclipse.ui.main.menu添加到传统菜单工具栏toolbar:org.eclipse.ui.main.toolbar添加到工具栏 style 值含义显示效果push普通按钮(默…...
asp.net core api RESTful 风格控制器
在 ASP.NET Core API 中,遵循 RESTful 风格的控制器一般具备以下几个关键特征: ✅ RESTful 风格控制器的命名规范 控制器命名 使用 复数名词,表示资源集合,如 ProductsController、UsersController。 路由风格 路由使用 [Rout…...
智能合约调用全景实战:前端 JS 与后端 Java 两种方式全面解析
目录 前言前端调用以太坊合约新建一个智能合约将合约部署到Hardhat本地链前端(HTML + JavaScript)调用合约后端调用以太坊合约生成java类调用智能合约(maven 插件方式)不生成Java类,通过合约ABI直接调用智能合约前后端调用方式对比开发建议结语前言 随着 Web3 的兴起,越…...
Javascript:WebAPI
获取网页元素 queryselector queryselector是 JavaScript 中用于选择 DOM 元素的重要方法,它允许使用 CSS 选择器语法来查找页面中的元素。 一般queryselector获取的元素都是html中第一个选择器的元素 支持选择器类型:类选择器(.class) ,…...
(4)python爬虫--JsonPath
文章目录 前言一、安装JsonPath库第一步: 打开pycharm第二步: 安装jsonpath 二、 jsonpath的基本使用2.1 基础语法2.2 语法测试2.2.1 准备json文件(store.json)2.2.2 jsonpath解析json语法 三、实战练习需求:爬取淘票票上所有的城市3.1 下载城市json文件3.2 解析城市…...
CentOS 上配置 Docker 使用 NVIDIA GPU
CentOS 上配置 Docker 使用 NVIDIA GPU(前提是已安装 NVIDIA 驱动): 在 CentOS 上配置 Docker 使用 NVIDIA GPU 本文介绍如何在已安装 NVIDIA 驱动的 CentOS 系统中,配置 Docker 使用 GPU 资源进行加速。 ✅ 前提条件 已安装 Cent…...
JAVA Spring MVC+Mybatis Spring MVC的工作流程*
目录 注解总结 将传送到客户端的数据转成json数据 **描述一下Spring MVC的工作流程** 1。属性赋值 BeanUtils.copyProperties(addUserDTO,user); 添加依赖: spring web、mybatis framework、mysql driver Controller和ResponseBody优化 直接改成RestControl…...
【人工智能】DeepSeek解码:揭秘AI大模型训练的创新密码
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 DeepSeek作为开源AI领域的先锋,以其高效、低成本的大模型训练技术震撼业界。本文深入剖析DeepSeek-V3和R1模型的训练密码,聚焦其创新的混…...
Java 方法向 Redis 里操作字符串有什么需要注意的?
在 Java 开发中,Redis 作为高性能的键值存储数据库,常被用于缓存数据、处理高并发场景等。当我们使用 Java 方法向 Redis 中操作字符串类型数据时,有许多关键要点需要格外注意。这些要点不仅关系到代码的正确性和性能,还影响着整个…...
C#与KepOPC通讯
使用C#连接KepOPC服务器进行数据读写的基础示例 using System; using Opc; using System.Threading;namespace KepOPCDemo {class Program{static void Main(string[] args){// OPC服务器连接参数string serverName "Kepware.KEPServerEX.V6"; // 根据实际安装的服…...
【软件测试】性能测试 —— 工具篇 LoadRunner 介绍与使用
🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. LoadRunner 是什么?2. LoadRunner 安装前提:浏览器的选择 —— IE / 360极速浏览器…...
Linux面试题集合(6)
创建多级目录或者同级目录 mkdir -p 文件名/文件名/文件名 mkdir -p 文件名 文件名 文件名 Linux创建一个文件 touch 文件名 DOS命令创建文件 echo 内容>文件名(创建一个有内容的文件) echo >文件名(创建一个没有内容的文件)…...
技术测评:小型单文件加密工具的功能解析
最近在测试一款名为OEMexe的文件加密工具,发现它确实有一些独特之处值得分享。这款软件体积非常小巧,仅209KB,属于绿色单文件版程序,无需安装即可直接运行。 主要特点 多格式支持:能够处理多种常见文件格式࿰…...
06、基础入门-SpringBoot-依赖管理特性
06、基础入门-SpringBoot-依赖管理特性 Spring Boot 的依赖管理特性是其核心优势之一,极大地简化了项目的构建和维护过程。以下是其主要特点: ## 1. 父项目依赖管理 ### 1.1 继承 spring-boot-starter-parent 在 pom.xml 文件中,通过继承 spr…...
基于 Python 的界面程序复现:标准干涉槽型设计计算及仿真
基于 Python 的界面程序复现:标准干涉槽型设计计算及仿真 在工业设计与制造领域,刀具的设计与优化是提高生产效率和产品质量的关键环节之一。本文将介绍如何使用 Python 复现一个用于标准干涉槽型设计计算及仿真的界面程序,旨在帮助工程师和…...
我的创作纪念日——《惊变256天》
我的创作纪念日——《惊变256天》 机缘收获日常成就憧憬 最近,博主收到了 CSDN 发来的系统消息,这才惊觉,自上次第128天创作纪念日之后,竟又悄然走过了 128 天。站在 256 天这个颇具意义的里程碑前回望,博主在2023 年 …...
Linux 的 UDP 网络编程 -- 回显服务器,翻译服务器
目录 1. 回显服务器 -- echo server 1.1 相关函数介绍 1.1.1 socket() 1.1.2 bind() 1.1.3 recvfrom() 1.1.4 sendto() 1.1.5 inet_ntoa() 1.1.6 inet_addr() 1.2 Udp 服务端的封装 -- UdpServer.hpp 1.3 服务端代码 -- UdpServer.cc 1.4 客户端代码 -- UdpClient.…...
回溯法理论基础 LeetCode 77. 组合 LeetCode 216.组合总和III LeetCode 17.电话号码的字母组合
目录 回溯法理论基础 回溯法 回溯法的效率 用回溯法解决的问题 如何理解回溯法 回溯法模板 LeetCode 77. 组合 回溯算法的剪枝操作 LeetCode 216.组合总和III LeetCode 17.电话号码的字母组合 回溯法理论基础 回溯法 回溯法也可以叫做回溯搜索法,它是一…...
LeetCode --- 156双周赛
题目列表 3541. 找到频率最高的元音和辅音 3542. 将所有元素变为 0 的最少操作次数 3543. K 条边路径的最大边权和 3544. 子树反转和 一、找到频率最高的元音和辅音 分别统计元音和辅音的出现次数最大值,然后相加即可,代码如下 // C class Solution {…...
第五项修炼:打造学习型组织
最近一直接到的需求,都是公司董事长或总经理都特别推崇《第五项修炼:打造学习型组织》的内容,让各个层级的管理者都持续学习、应用、实践。我不禁开始反思,这背后到底隐藏着什么原因? 随着商业环境的变化和复杂性的增加…...
Bellman - Ford 算法与 SPFA 算法求解最短路径问题 ——从零开始的图论讲解(4)
目录 前言 为什么Dijkstra算法面对负权值图会有误差??? 举例说明 什么是Bellman -Ford算法? BF算法的核心思想 什么是松弛 为什么最多松弛N-1次? 代码实现 举例 初始状态(dist[] 数组) 第 1 轮松弛(遍历所有边) …...
Python训练营打卡 Day27
函数专题2:装饰器 知识点回顾: 装饰器的思想:进一步复用函数的装饰器写法注意内部函数的返回值 昨天我们接触到了函数大部分的功能,然后在你日常ctrl点进某个复杂的项目,发现函数上方有一个xxx,它就是装饰器 装饰器本质…...
初识计算机网络。计算机网络基本概念,分类,性能指标
初识计算机网络。计算机网络基本概念,分类,性能指标 本系列博客源自作者在大二期末复习计算机网络时所记录笔记,看的视频资料是B站湖科大教书匠的计算机网络微课堂,祝愿大家期末都能考一个好成绩! 视频链接地址 一、…...
5月16日day27打卡
函数专题2:装饰器 知识点回顾: 装饰器的思想:进一步复用函数的装饰器写法注意内部函数的返回值 作业: 编写一个装饰器 logger,在函数执行前后打印日志信息(如函数名、参数、返回值) logger def …...
【生成式AI文本生成实战】DeepSeek系列应用深度解析
目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选…...
【Pandas】pandas DataFrame kurt
Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...
2025年渗透测试面试题总结-安恒[实习]安全服务工程师(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 安恒[实习]安全服务工程师 1. SQLMap爆出当前库名的参数是什么? 2. Nmap探测系统的参数&am…...
在 Visual Studio Code (VSCode) 中配置 MCP(Model Context Protocol)
前提条件 安装 VSCode:确保已安装最新版本的 VSCode(建议使用 1.99 或以上版本,支持 MCP)。安装 GitHub Copilot 扩展:MCP 通常与 GitHub Copilot 的代理模式(Agent Mode)结合使用,…...
顶层架构 - 消息集群推送方案
一、推送基础概念简述 在即时通讯(IM)系统中,最基础的一件事就是“如何把消息推送给用户”。为了实现这个过程,我们要先了解两种常见的网络通信方式:HTTP 和 WebSocket。 1. HTTP 是什么? HTTP 就像一次性…...
C++性能测试工具——Vtune等的介绍
一、介绍 我们在前面的相关文章中对C性能的测试和分析工具(见“C性能测试工具gprof和gperftools基础”等)有一个初步的了解和应用,其实类似的相关工具还有不少。为了进一步的让开发者们掌握更多的相关性能测试分析相关的方法,对另…...
车道线检测----CLRKDNet
今天的最后一篇 车道线检测系列结束 CLRKDNet:通过知识蒸馏加速车道检测 摘要:道路车道是智能车辆视觉感知系统的重要组成部分,在安全导航中发挥着关键作用。在车道检测任务中,平衡精度与实时性能至关重要,但现有方法…...