【Linux-网络】HTTP的清风与HTTPS的密语
🎬 个人主页:谁在夜里看海.
📖 个人专栏:《C++系列》《Linux系列》《算法系列》
⛰️ 道阻且长,行则将至
目录
📚 引言
📚 一、HTTP
📖 1.概述
📖 2.URL
🔖结构
🔖转义
📖 3.格式
🔖请求格式
🔖响应格式
📚二、HTTPS
📖 1.概念
📖 2.加密方式
🔖对称加密
🔖非对称加密
📖 3.数据摘要
🔖概念
🔖数字签名
📖 4.HTTPS的工作过程
🔖过程推断
🔖证书
📚 引言
上一篇文章我们讲述了TCP/UDP协议,那是位于传输层的负责端到端通信,确保数据的可靠传输的协议,这篇文章我们来谈一谈应用层的协议。
如果说传输层协议的作用是确保数据能够传输到位,那么应用层协议的作用就是确保数据能被正确解析。具体地说,应用层协议决定了数据在网络上传输时的结构、顺序、传输规则以及数据如何被应用程序解释,应用层协议有效支持不同设备、操作系统和应用程序之间的相互通信和数据交换。
应用层协议可以由我们程序员自己定义,只需要通信双方遵守相同的协议即可,不过在现实中,已经有许多现成且优秀的应用层协议供我们参考使用,其中之一就是我们下面要讲述的HTTP(超文本传输协议)。
📚 一、HTTP
📖 1.概述
HTTP(HyperText Transfer Protocol) 是一种用于客户端(通常是浏览器)与服务器之间传输超文本(主要是网页)的协议。它是Web通信的基础协议,用于支持浏览器与Web服务器之间的请求和响应。
虽然HTTP的通用客户端是浏览器,但这并不意味着HTTP是基于浏览器的协议,事实上它广泛用于各种客户端与服务器间的通信,除了浏览器之外,其他许多应用(如移动应用、API、爬虫等)也使用HTTP协议进行数据交换:
① 在浏览器中:我们使用HTTP协议来请求Web服务器上的资源。当你输入一个网址(如www.example.com)并按下回车时,浏览器实际上向服务器发送一个HTTP请求,服务器返回相应的HTTP响应,其中包含网页内容。
② 其他应用程序:HTTP并不仅限于浏览器,其他应用程序(如移动应用、桌面应用、API接口等)也可以通过HTTP协议与服务器进行数据交换。
📖 2.URL
URL(Uniform Resource Locator)是一种用于标识互联网资源的地址,我们平时俗称的“网址”就是URL,URL除了可以指向网页,还可以指向图片、视频、文件、API接口等网络资源。它的作用是帮助客户端(如浏览器)在互联网上找到并访问特定的资源。
🔖结构
一个典型的URL格式如下:
http://user:pass@www.example.jp:80/dir/index.htm?uid=1#ch1
① 协议 http:// 指定了访问该URL时使用的协议,http标识使用HTTP(超文本传输协议);
② 用户信息 user:pass@ 这个部分是可选的,表示URL的用户名和密码,通常用于需要身份验证的站点。user
是用户名,pass
是密码,这种方式称为基本认证;
③ 主机名 www.example.jp 这是服务器的主机名(或域名),表示要连接的Web服务器地址;
④ 端口 :80 这是可选的,表示与目标服务器通信时使用的端口号。80
是HTTP协议的默认端口。如果未指定端口,HTTP会默认使用端口80;
⑤ 路径 /dir/index.htm 这部分表示服务器上的资源路径,指向某个文件或目录;
⑥ 查询参数 ?uid=1 这是URL的查询部分,通常用于向服务器传递额外的参数;
⑦ 片段标识符 #ch1 片段标识符是URL的一个可选部分,通常用于标识资源中的某个位置或段落。
🔖转义
像 / ? : 等这样的字符, 已经被URL当做特殊意义理解了,因此这些字符不能随意出现。因此,某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。
转义的规则如下: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY 格式
例如:
这里“+”就被转义成“%2B”。
urlencode 和 urldecode 分别是编码和解码的过程,我们可以用在线转义工具对URL进行转义:
UrlEncode编码和UrlDecode解码-在线URL编码解码工具
📖 3.格式
HTTP有两种基本的消息格式:请求格式(Request)和响应格式(Response)
🔖请求格式
请求格式由以下几个部分组成:
请求行
请求头
空行
请求体
示例:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8name=John&age=25
① 请求行
请求行包含请求方法、请求的资源路径和协议版本
<方法> <请求路径> <协议版本>
方法:HTTP请求的方法指明客户端希望对指定资源执行的操作。常见的方法有:
GET:请求指定资源,仅读取资源,不进行修改(幂等,即多次执行统一操作结果不变)
POST:向指定资源提交数据(不幂等,多次提交会创建多份资源)
PUT:向指定资源上传数据(如果资源存在,替换该资源;资源不存在则创建,因此幂等)
DELETE:删除指定资源
HEAD:与GET类似,不过只获取响应头部,不获取实体内容
请求路径:指定要请求的资源的路径(可以是相对路径或绝对路径)
协议版本:表明使用的HTTP协议的版本,常见的有HTTP/1.1
和HTTP/2
② 请求头
请求头是由多个键值对组成,用于提供额外的请求信息,如浏览器类型、支持的编码格式、Cookie信息等。请求头通常包括以下内容:
Host:指定服务器的域名或IP地址
User-Agent:客户端的浏览器和操作系统信息
Accept:浏览器可以处理的响应内容类型
Content-Type:请求体的内容类型,通常在
POST
或PUT
请求中使用Authorization:用于HTTP认证的信息
Cookie:客户端的Cookie信息
③ 空行
请求头和请求体之间会有一个空行,用于分隔请求头和请求体部分。
④ 请求体
请求体包含了实际发送到服务器的数据,通常在POST
、PUT
等请求方法中使用。对于GET
等方法,请求体一般为空。
🔖响应格式
响应格式由以下几个部分组成:
响应行
响应头
空行
响应体
示例:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1234
Server: Apache/2.4.7 (Ubuntu)<html><body><h1>Welcome to my website</h1></body>
</html>
① 响应行
响应行由协议版本、状态码和状态描述组成。格式如下:
<协议版本> <状态码> <状态描述>
协议版本:表明使用的HTTP协议版本
状态码:服务器返回的数字代码,表示响应的状态
2xx:请求成功(如
200 OK
)3xx:重定向(如
301 Moved Permanently
)4xx:客户端错误(如
404 Not Found
)5xx:服务器错误(如
500 Internal Server Error
)
状态描述:状态码的简要描述(如OK
、Not Found
)
② 响应头
响应头包含了关于服务器、响应内容以及其他一些元数据的描述。常见的响应头包括:
Content-Type:响应体的媒体类型
Content-Length:响应体的大小(以字节为单位)
Server:服务器软件的名称
Location:用于重定向的URL
Set-Cookie:设置客户端的Cookie
③ 空行
响应头和响应体之间也有一个空行,用于分隔响应头和响应体部分。
④ 响应体
响应体包含了实际的资源数据或响应内容。它可以是HTML页面、JSON数据、图片等。
📚二、HTTPS
📖 1.概念
由于HTTP的内容是明文传输的,明文数据会经过路由器、WiFi热点、通信服务运营商、代理服务器等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉,这就是中间人攻击,所以我们才需要对数据进行加密。
加密就是把明文(要传输的信息)进行一系列变换,形成密文;
解密就是把密文再进行一系列变换,还原成明文。
在这个加密和解密的过程中,往往需要一个或者多个中间的数据辅助这个过程,这样的数据就叫做密钥。
HTTPS在HTTP的基础上加入了SSL/TLS(安全套接字层/传输层安全协议)加密协议,用来对网络通信进行加密和认证,从而确保数据在传输过程中不被窃取、篡改或伪造。简单来说,HTTPS是HTTP协议的加密版本,用于保护HTTP通信的安全性。
📖 2.加密方式
加密方式有许许多多,但总体可以分成对称加密和非对称加密
🔖对称加密
采⽤单钥密码系统的加密⽅法,同⼀个密钥可以同时⽤作信息的加密和解密,这种加密⽅法称为对 称加密,也称为单密钥加密,特征:加密和解密所⽤的密钥是相同的。
工作原理:
① 加密:发送方使用密钥将明文数据转换成密文;
② 传输:密文通过不安全的通道(网络)发送到接收方;
③ 解密:接收方使用相同的密钥将密文还原成明文。
⚠️加密与解密的实现基于通信双方使用相同的加密/解密算法,因此加密算法可以看作是公开的
例如:简单的对称加密,加密/解密算法为按位异或
明文a ^ 密钥b 得到 密文c;
密文c ^ 密钥b 还原会明文 a。
因为加密和解密都使用同一个密钥,所以密钥的管理和安全性至关重要。如果密钥泄露,任何人都能解密收到的数据。
🔖非对称加密
与对称加密不同,非对称加密的加密与解密所使用的密钥是不同的,其中一个是公开密钥(简称公钥),一个是私有密钥(简称私钥)。
工作原理:
① 加密:发送方使用公钥将明文数据转换成密文;
② 解密:接受放使用私钥将密文数据还原成明文。
(当然公钥和私钥也可以反着用)
这种方式的核心思想是,虽然每个人都可以通过公钥来加密数据,但只有持有相应私钥的人才能解密数据。由于公钥和私钥是成对生成的,公钥和私钥之间具有数学上的关系,但私钥不能从公钥推算出来。
⚠️这种方法最大的缺点是:运算速度⾮常慢。
📖 3.数据摘要
上述的加密方法可以确保明文数据不会泄露,即使密文在传输过程中被中间人截取,但如果没有对应的密钥就无法将密文还原成明文。但是除此之外,我们还需要考虑一个问题,那就是数据完整性。
如果密文被中间人截取,他可以在不清楚密钥的情况下对密文进行修改,这样接收方得到的就不是原来的密文,也无法还原成正确的明文了,所以我们还需要保证密文在传输过程中不被修改。于是引入了数据摘要的概念。
🔖概念
数据摘要(数字指纹)的基本原理是利⽤单向散列函数(Hash函数)对信息进⾏运算,⽣成⼀串固定⻓度的数字摘要。数字摘要并不是⼀种加密机制,因为它没有解密的过程。
工作原理:
① 生成摘要:对数据进行运算生成数字摘要;
② 验证完整性:接收方对数据进行相同运算,将结果与摘要进行比对,若相同则表示未被修改。
⚠️但还有问题,如果中间人对数据修改后,将摘要也一并修改了,这样接收方就看不出来数据被篡改了,这该怎么解决呢?
🔖数字签名
既然如此,我们将数据摘要也进行加密,就得到了数据签名。我们使用非对称加密方式,那么接收方的验证步骤就变成了:
① 使用私钥将数字签名还原成数字摘要;
② 将数据用哈希函数进行运算,得到结果与数字摘要进行比对,验证完整性。
📖 4.HTTPS的工作过程
直接介绍HTTPS的工作原理可能会有些难以理解,有了以上的知识储备,我们可以自行推断一下HTTPS的工作过程:
🔖过程推断
① 只使用对称加密
即通信双方各自持有一个相同的密钥,发送数据时,使用密钥对明文加密;接收数据时使用密钥将密文还原。如果这个密钥只有通信双方知晓,那么通信安全就可以得到保证。
但是并没有想象的这么简单,服务器需要同时对很多客户端提供服务,如果与每个客户端使用的密钥都不一样,那么服务器还需要维护客户端与密钥的关联关系,这非常繁琐。这种方法行不通。
② 只使用非对称加密
如果通信双方都使用非对称加密呢,即双方都持有各自的公钥私钥对,通信过程为:
1️⃣在通信前,双方先交换各自的公钥;
2️⃣服务器发送数据:使用客户端的公钥对数据加密;服务器接收数据:使用自己的私钥对数据解密。
3️⃣客户端发送数据:使用服务器的公钥对数据加密;客户端接收数据:使用自己的私钥对数据解密。
⚠️但是我们上面提到了,非对称加密的最大问题是运算速度很慢,如果双方都使用非对称加密的话,效率太低了。这种办法也行不通
③ 非对称加密+对称加密
方法①的运行速度快,但问题在于,服务器要存储管理每个客户端的对称密钥,不论是否正在进行通信。那么我们可不可以优化一下,只在通信的过程中保存对称密钥,通信结束就解除绑定:
1️⃣服务器拥有一对非对称密钥对,与客户端进行通信前,先将公钥发送给客户端;
2️⃣客户端将自己的对称密钥通过公钥加密,发送给服务器;
3️⃣服务器通过解密得到对称密钥,之后的通信就可以通过这个对称密钥进行了。
上述过程只进行了一次非对称加密解密过程,后面的操作全都是对称的,这样一来相比方法②大大提高了效率,看似是最可行的,但是!
上述过程都忽略了一个重要问题:如果在通信开始前,中间人攻击就已经存在了呢 ?
拿方法③举例,服务器将公钥发送给客户端时被中间人截获,中间人把自己的对称密钥加密后发送给服务器,这样一来,中间人就可以假冒客户端与服务器进行通信,而服务器对此一无所知;
相同地,中间人可以将自己的公钥发送给客户端,并获取客户端的对称密钥,这样一来,中间人就可以假冒服务器与客户端进行通信,客户端对此也一无所知!
上面的问题关键在于:客户端不能确定公钥的来源,如果可以确定公钥来自于服务器,就可以放心地将私钥加密发送过去了。
要解决上述问题,就要引入证书的概念:
🔖证书
服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信 息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威。
所以服务器向客户端发送的其实是包含公钥信息的证书,那么客户端怎么通过证书验证公钥的来源正确性呢?
方法①:直接查看域名信息是否正确,但是如果证书被中间人篡改了呢,公钥已经被替换了呢?
这里就要用到我们提到过的数据签名。通过数据签名,我们可以确保证书的完整性,具体步骤为:
1️⃣客户端收到证书,向CA机构申请还原签名为数据摘要(私钥只有CA机构拥有,确保了安全性);
2️⃣将明文信息通过哈西函数进行运算,将结果与摘要比对,如果相同,则公钥可信;如果不相同,则公钥不可信。
如此一来,就解决了中间人攻击的问题。
❓那如果中间人发送了一个合法的证书呢(中间人向CA机构申请了一个证书)
✅只需要查看域名信息即可
❓如果中间人用于申请证书的域名与真域名极度相似,造成混淆呢
✅这就需要公安机关来“重拳出击”了✊
以上就是【HTTP的清风与HTTPS的密语】的全部内容,欢迎指正~
码文不易,还请多多关注支持,这是我持续创作的最大动力!
相关文章:
【Linux-网络】HTTP的清风与HTTPS的密语
🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚 引言 📚 一、HTTP 📖 1.概述 📖 2.URL ǵ…...
【SpringBoot】数据访问技术spring Data、 JDBC、MyBatis、JSR-303校验
Spring Boot 数据访问技术及特性 目录标题 Spring Boot 数据访问技术及特性摘要1. 引言2. Spring Data架构与原理2.1 Spring Data概述2.2 Spring Data核心组件2.3 Spring Boot与Spring Data的集成机制 3. Spring Boot与JDBC的整合3.1 JDBC整合流程3.2 数据源自动配置3.3 JdbcTe…...
直装永久授权,最新专业版集成VB7
无论是学生、教师还是职场工作人员,办公软件在日常工作和学习中都是不可或缺的重要工具。在众多办公软件中,微软的Microsoft Office和金山软件的WPS Office最常用的选择。对于许多使用要求不高的小伙伴而言,WPS Office因其易用性和免费版本的…...
Ollama 框架本地部署教程:开源定制,为AI 项目打造专属解决方案!
Ollama 是一款开源的本地大语言模型(LLM)运行框架,用于管理和运行语言模型。具有以下核心特点: 开源可定制:采用 MIT 开源协议,开发者能自由使用、阅读源码并定制,可根据自身需求进行功能扩展和…...
【单片机项目】电源如何扩展、电源模块、电池模块如何接线
一、前言 解决2个关键问题: 【1】如果项目编号小于172之前的项目。 可能会遇到电源模块不够接,需要扩展电源的问题。 【2】如果项目编号是大于 172之后项目,部分项目用到了稳压电源模块或者是电池模块。 这篇文章单独讲解一下如何接线。 …...
汽车智能钥匙中PKE低频天线的作用
PKE(Passive Keyless Entry)即被动式无钥匙进入系统,汽车智能钥匙中PKE低频天线在现代汽车的智能功能和安全保障方面发挥着关键作用,以下是其具体作用: 信号交互与身份认证 低频信号接收:当车主靠近车辆时…...
mongodb安装教程以及mongodb的使用
MongoDB是由C语言编写的一种面向文档的NoSQL数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。与传统的关系型数据库(如 MySQL 或 PostgreSQL)不同,MongoDB 存储数据的方式是以 BSON(类似于 JSON 的二进制格式…...
SpringMVC学习(controller层加载控制与(业务、功能)bean加载控制、Web容器初始化配置类)(3)
目录 一、SpringMVC、Spring的bean加载控制。 (1)实际开发的包结构层次。 (2)如何"精准"控制两个容器分别加载各自bean。(分析) <1>SpringMVC相关bean加载控制。(方法) <2>Spring相关bean加载控制。(方法) …...
redis基础结构
title: redis基础结构 date: 2025-03-04 08:39:12 tags: redis categories: redis笔记 Redis入门 (NoSQL, Not Only SQL) 非关系型数据库 关系型数据库:以 表格 的形式存在,以 行和列 的形式存取数据,一系列的行和列被…...
树莓派学习(一)——3B+环境配置与多用户管理及编程实践
树莓派学习(一)——3B环境配置与多用户管理及编程实践 一、实验目的 掌握树莓派3B无显示器安装与配置方法。学习Linux系统下多用户账号的创建与管理。熟悉在树莓派上使用C语言和Python3编写简单程序的方法。 二、实验环境 硬件设备:树莓派…...
【音视频】ffplay播放控制
一、ffplay播放控制 1.1、ffplay打开视频 比如我当前目录下现在有一个1.mp4的视频,可以使用下面的命令用ffplay打开并播放它 ffplay 1.mp4输入后回车即可打开相应的视频 1.2 ffplay播放控制 使用q、ESC退出播放按f、双击切换全屏状态按m切换为静音按9减少音量&a…...
【智能体Agent】ReAct智能体的实现思路和关键技术
基于ReAct(Reasoning Acting)框架的自主智能体 import re from typing import List, Tuplefrom langchain_community.chat_message_histories.in_memory import ChatMessageHistory from langchain_core.language_models.chat_models import BaseChatM…...
Redis系列之慢查询分析与调优
Redis 慢查询分析与优化:提升性能的实战指南 Redis 作为一款高性能的内存数据库,因其快速的数据读写能力和灵活的数据结构,被广泛应用于缓存、消息队列、排行榜等多种业务场景。然而,随着业务规模的扩大和数据量的增加࿰…...
分布式锁—2.Redisson的可重入锁一
大纲 1.Redisson可重入锁RedissonLock概述 2.可重入锁源码之创建RedissonClient实例 3.可重入锁源码之lua脚本加锁逻辑 4.可重入锁源码之WatchDog维持加锁逻辑 5.可重入锁源码之可重入加锁逻辑 6.可重入锁源码之锁的互斥阻塞逻辑 7.可重入锁源码之释放锁逻辑 8.可重入锁…...
大模型巅峰对决:DeepSeek vs GPT-4/Claude/PaLM-2 全面对比与核心差异揭秘
文章目录 一、架构设计深度解剖1.1 核心架构对比图谱1.2 动态MoE架构实现架构差异分析表 二、训练策略全面对比2.1 训练数据工程对比2.2 分布式训练代码对比DeepSeek混合并行实现GPT-4 Megatron实现对比 2.3 关键训练参数对比 三、性能表现多维评测3.1 基准测试全景对比3.2 推理…...
解决各大浏览器中http地址无权限调用麦克风摄像头问题(包括谷歌,Edge,360,火狐)后续会陆续补充
项目场景: 在各大浏览器中http地址调用电脑麦克风摄像头会没有权限,http协议无法使用多媒体设备 原因分析: 为了用户的隐私安全,http协议无法使用多媒体设备。因为像摄像头和麦克风属于可能涉及重大隐私问题的API,ge…...
Linux - 网络套接字
一、网络编程 1)地址结构 1. IP地址结构 struct in_addr:是用于表示 IPv4 地址 的结构体,定义在头文件 <netinet/in.h> 中。它的主要作用是存储一个 32 位的 IPv4 地址,通常与 struct sockaddr_in 一起使用。 struct in_a…...
Oracle数据库监听学习
官方文档: Net Services Administrators Guide Net Services Reference 一、动态注册 1.实例启动后,LREG 进程每分钟自动将服务名(service_name)注册到监听器中 也可以通过 alter system register 命令实现立刻注册。&#x…...
利率债、信用债、可转债区别与优势
利率债、信用债、城投债和可转债是债券市场的主要品种,它们在发行主体、风险收益特征和投资优势上各有不同。以下是它们的区别和优势: 1. 利率债 定义:利率债是由政府或政府支持的机构发行的债券,主要包括国债、政策性金融债&…...
C语言番外篇(4)------------------>VS环境下源码的隐藏
假设你是一个优秀的程序员,开发了一款功能十分强大的计算器。现在有一家做计算器的公司看上了你的功能,想通过每一年给你几万块钱使用这个功能。那我们是只提供一个头文件和静态库给他们使用这个功能就行呢?还是连同源代码一起给这家公司呢&a…...
Java集合
写在前面 本人在学习JUC过程中学习到集合和并发时有许多稀碎知识点 需要总结梳理思路与知识点 本文内容会涉及到ArrayList,HashMap以及扩容机制,ConcurrentHashMap,Synchronized,Volatile,ReentrantLock,…...
el-input 设置类型为number时,输入中文后光标会上移,并且会出现上下箭头
光标上移 设置 el-input 的 typenumber后,只能输入数字,输入中文后会自动清空,但是会出现一个问题:【光标会上移,如下图】 解决方法:修改样式 注意:需要使用样式穿透 :deep( ) /*解决el-in…...
迷你世界脚本自定义UI接口:Customui
自定义UI接口:Customui 彼得兔 更新时间: 2024-11-07 15:12:42 具体函数名及描述如下:(除前两个,其余的目前只能在UI编辑器内部的脚本使用) 序号 函数名 函数描述 1 openUIView(...) 打开一个UI界面(注意…...
解决windows npm无法下载electron包的问题
1.将nsis.zip解压到C:\Users\XXX\AppData\Local\electron-builder\Cache 2.将winCodeSign.zip解压到C:\Users\XXX\AppData\Local\electron-builder\Cache 3.将electron-v20.3.8-win32-ia32.zip复制到C:\Users\XXX\AppData\Local\electron\Cache 4.将electron-v20.3.8-win32-…...
Notepad++ 8.6.7 安装与配置全攻略(Windows平台)
一、软件定位与核心优势 Notepad 是开源免费的代码/文本编辑器,支持超过80种编程语言的高亮显示,相比系统自带记事本具有以下优势: 轻量高效:启动速度比同类软件快30%插件扩展:支持NppExec、JSON Viewer等200插件跨文…...
Unity InputField + ScrollRect实现微信聊天输入框功能
1、实现动态高度尺寸的的InputField 通过这两个部件就可以实现inputField的动态改变尺寸。 将inputField放入到scrollview当中作为子类 将scrollview 链接到UIChatInputField脚本中。 2、实现UIChatInputField //聊天输入框(类似wechat) [RequireComp…...
Java-servlet(三)Java-servlet-Web环境搭建(下)详细讲解利用maven和tomcat搭建Java-servlet环境
Java-servlet(三)Java-servlet-Web环境搭建(下)利用maven和tomcat搭建Java-servlet环境 前言一、配置maven阿里镜像二、利用IDEA创建maven文件创建maven文件删除src文件创建新的src模版删除example以及org文件 三、在第二个xml文件…...
在 CLion 中使用 Boost.Test 进行 C++ 单元测试
1. 安装 Boost.Test Boost.Test 是 Boost C 库的一部分,因此需要安装完整的 Boost 库。 方法 1:使用包管理器安装(推荐) Windows(vcpkg) 直接使用 CLion 集成的 vcpkg安装 boost-test: 也可…...
极狐GitLab 17.9 正式发布,40+ DevSecOps 重点功能解读【二】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
文本处理Bert面试内容整理-BERT的预训练任务是什么?
BERT的预训练任务主要有两个,分别是 Masked Language Model (MLM) 和 Next Sentence Prediction (NSP)。这两个任务帮助BERT学习从大规模未标注文本中提取深层次的语义和上下文信息。 1. Masked Language Model (MLM)(掩码语言模型)...
【蓝桥杯】每天一题,理解逻辑(3/90)【Leetcode 快乐数】
闲话系列:每日一题,秃头有我,Hello!!!!!,我是IF‘Maxue,欢迎大佬们来参观我写的蓝桥杯系列,我好久没有更新博客了,因为up猪我寒假用自己的劳动换了…...
“深入浅出”系列之Linux篇:(10)基于C++实现分布式网络通信RPC框架
分布式网络通信rpc框架 项目是分布式网络通信rpc框架, 文中提到单机服务器的缺点: 硬件资源的限制影响并发:受限于硬件资源,聊天服务器承受的用户的并发有限 模块的编译部署难:任何模块小的修改,都导致整…...
Python的那些事第四十一篇:简化数据库交互的利器Django ORM
Django ORM:简化数据库交互的利器 摘要 随着互联网技术的飞速发展,Web开发越来越受到重视。Django作为一款流行的Python Web框架,以其高效、安全、可扩展等特点受到了广大开发者的喜爱。其中,Django ORM(对象关系映射)是Django框架的核心组件之一,它为开发者提供了一种…...
[自动驾驶-传感器融合] 多激光雷达的外参标定
文章目录 引言外参标定原理ICP匹配示例参考文献 引言 多激光雷达系统通常用于自动驾驶或机器人,每个雷达的位置和姿态不同,需要将它们的数据统一到同一个坐标系下。多激光雷达外参标定的核心目标是通过计算不同雷达坐标系之间的刚性变换关系(…...
初学STM32之简单认识IO口配置(学习笔记)
在使用51单片机的时候基本上不需要额外的配置IO,不过在使用特定的IO的时候需要额外的设计外围电路,比如PO口它是没有内置上拉电阻的。因此若想P0输出高电平,它就需要外接上拉电平。(当然这不是说它输入不需要上拉电阻,…...
【长安大学】苹果手机/平板自动连接认证CHD-WIFI脚本(快捷指令)
背景: 已经用这个脚本的记得设置Wifi时候,关闭“自动登录” 前几天实在忍受不了CHD-WIFI动不动就断开,一天要重新连接,点登陆好几次。试了下在网上搜有没有CHD-WIFI的自动连接WIFI自动认证脚本,那样我就可以解放双手&…...
powermock,mock使用笔记
介于日本的形式主义junit4单体测试,特记笔记,以下纯用手机打出来,因为电脑禁止复制粘贴。 pom文件 powermock-module-junit1.7.4 powermock-api-mokcito 1.7.4 spring-test 8 1,测试类头部打注解 RunWith(PowerMockRunner.class…...
大模型微调实战指南
1. 引言 在人工智能领域,大模型(如GPT、BERT、DeepSeek等)已经展现出了强大的通用能力。然而,要让这些模型在特定任务或领域中发挥最佳性能,微调(Fine-tuning)是必不可少的一步。本文将带你从零…...
计算机毕业设计Python+Django+Vue3微博数据舆情分析平台 微博用户画像系统 微博舆情可视化(源码+ 文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
HTML第四节
一.复合选择器 1.后代选择器 注:1.后代选择器会选中后代所有的要选择的标签 2.儿子选择器 3.并集选择器 注:1.注意换行,同时选中多种标签 4.交集选择器 注:1.标签选择器放在最前面,例如放在类选择器的前面 2.两个选择…...
Kubernetes 的正式安装
1.基础的网络结构说明 软件路由器 ikuai 当然同一个仅主机模式 相当于在 同一个我们所谓的广播域内 所以相当于它们的几张网卡 是被连接起来的 为了防止出现问题 我们可以把第二块网卡临时关闭一下 2.准备路由器 ikuai 爱快 iKuai-商业场景网络解决方案提供商 (ikuai8.com)…...
VS2022C#windows窗体应用程序调用DeepSeek API
目录 一、创建DeepSeek API Key 二、创建窗体应用程序 三、设计窗体 1、控件拖放布局 2、主窗体【Form1】设计 3、多行文本框【tbContent】 4、提交按钮【btnSubmit】 5、单行文字框 四、撰写程序 五、完整代码 六、运行效果 七、其它 一、创建DeepSeek API Ke…...
7. 机器人记录数据集(具身智能机器人套件)
1. 树莓派启动机器人 conda activate lerobotpython lerobot/scripts/control_robot.py \--robot.typelekiwi \--control.typeremote_robot2. huggingface平台配置 huggingface官网 注册登录申请token(要有写权限)安装客户端 # 安装 pip install -U …...
阿里云操作系统控制台——ECS操作与性能优化
引言:在数字化时代,云服务器作为强大的计算资源承载平台,为企业和开发者提供了灵活且高效的服务。本文将详细介绍如何一步步操作云服务器 ECS,从开通到组件安装,再到内存全景诊断,帮助快速上手,…...
在飞腾E2000Q开发板上,基于RT-Thread操作系统,实现DeepSeek语音交互
目录 一 ,简介 二 ,流程与结果分享 1. Phytium E2000q demo开发板连接 2. RT-Thread Kconfig 配置选择 (1)驱动 (2)软件包 3. 主要代码 (1)录音功能,将录音结果保存…...
navicat导出postgresql的数据库结构、字段名、备注等等
1、执行sql语句 SELECT A.attnum AS "序号",C.relname AS "表名",CAST ( obj_description ( relfilenode, pg_class ) AS VARCHAR ) AS "表名描述",A.attname AS "字段名称",A.attnotnull as "是否不为null",(case when A…...
K8s 1.27.1 实战系列(三)安装网络插件
Kubernetes 的网络插件常见的有 Flannel 和 Calico ,这是两种主流的 CNI(容器网络接口)解决方案,它们在设计理念、实现方式、性能特征及适用场景上有显著差异。以下是两者的综合对比分析: 一、Flannel 和 Calico 1. 技术基础与网络实现 Flannel 核心机制:基于 Overlay …...
Python实现鼠标点击获取窗口进程信息
最近遇到挺无解的一个问题:电脑上莫名其妙出现一个白色小方块,点击没有反应,关也关不掉,想知道它和哪个软件有关还是显卡出了问题,也找不到思路,就想着要不获取一下它的进程号看看。 于是写了一个Python脚本…...
文件解析:doc、docx、pdf
1.doc解析 ubuntu/debian系统应先安装工具 apt-get install python-dev libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr \ flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig pip install textract解析: import te…...
JDBC 完全指南:掌握 Java 数据库交互的核心技术
JDBC 完全指南:掌握 Java 数据库交互的核心技术 一、JDBC 是什么?为什么它如此重要? JDBC(Java Database Connectivity)是 Java 语言中用于连接和操作关系型数据库的标准 API。它允许开发者通过统一的接口访问不同的数…...