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

计算机网络基础:4.HTTP与HTTPS

一、回顾设定

        想象你在经营一家繁忙的餐厅,顾客们通过点餐系统(网卡)下单,订单被前台(路由器)接收并分发到各个厨房区域(网络设备)。光猫像是食材供应商,通过高效的物流系统(光纤)将食材送到餐厅。厨房(交换机)处理多个订单,确保每道菜(数据包)都按顺序送达。

        在这餐厅中,OSI七层模型就像是餐厅的运营流程:

  • 物理层:餐厅的物理设施(如餐桌、椅子)传输原始比特流。
  • 数据链路层:服务员将订单从顾客传递到厨房,确保数据在物理链路上的可靠传输。
  • 网络层:前台接收订单并分发到正确的厨房区域。
  • 传输层:厨房调度员确保每道菜按顺序送达。
  • 会话层:预订系统管理顾客的预订和用餐时间。
  • 表示层:菜单将食物以吸引人的方式展示(处理数据格式、加密和压缩)。
  • 应用层:点餐应用直接接收顾客的订单。

        TCP/IP模型简化了这个流程,将应用层、表示层和会话层合并为一个应用层,直接与用户交互。每个层次协议如HTTP、FTP、TCP、IP、Ethernet和Wi-Fi分别对应不同的餐厅操作。

        IP地址就像餐桌编号,确保每个设备(桌子)都有一个唯一的编号,前台(网络层)根据IP地址将订单分发到正确的厨房区域,再由服务员(数据链路层)送到具体的餐桌。

        DNS服务器则是餐厅中的“顾客座位对照表”,将顾客的名字(域名)转换为餐桌编号(IP地址),确保每个订单准确送达。不同类型的域名可以比作餐厅中的不同类型顾客名单,比如VIP名单、普通顾客名单等。

        通过上述设定,我们可以更好地理解网络各个层次和设备的作用,以及它们如何协同工作以确保数据(订单)高效、安全地从源头(顾客)传输到目的地(目标设备)。详细介绍请看前两篇文章。

二、HTTP

        1. HTTP定义: HTTP(HyperText Transfer Protocol)就像餐厅中顾客与服务员之间的通信语言。顾客使用这种语言下单,服务员通过这种语言将订单传递到厨房。

        2. 工作原理: HTTP基于TCP/IP协议,类似于餐厅中前台(路由器)与厨房(交换机)之间的点餐和传菜系统。它是一个应用层协议,定义了顾客(客户端)和厨房(服务器)之间的请求和响应标准。

        3. 请求和响应:

  • 请求:顾客(客户端)发送的HTTP请求就像顾客向服务员下单,包含订单的各个部分。

    • 请求行:就像顾客的点单,包括点了什么菜(请求方法,如GET、POST)。
      • GET请求就是顾客查看菜单上的菜品信息。这种请求是为了获取信息,不会改变餐厅的状态。
      • POST请求就是顾客提交一个新的订单。这个请求会改变餐厅的状态,因为它代表了一个新的订单的提交。
      • 比如在HTML中常见的GET请求与POST请求的表单例子:
      • <form method="GET" action="/search"><label for="query">Search:</label><input type="text" id="query" name="query"><button type="submit">Submit</button>
        </form>
        <form method="POST" action="/order"><label for="item">Order Item:</label><input type="text" id="item" name="item"><button type="submit">Submit</button>
        </form>
    • 请求头:类似于顾客的特殊要求(如无辣、少盐),包含额外信息(如User-Agent、Accept)。
    • 空行:表示请求头的结束
    • 请求体:就像顾客详细的订单内容(如要多少份、特殊备注),特别是在POST请求中。
  • 响应:厨房(服务器)返回给顾客的HTTP响应就像服务员上菜,包含上菜的各个部分。

    • 状态行:类似于服务员告诉顾客订单状态(如菜品正在准备、已上菜),包含状态码(如200成功、404未找到)。
    • 响应头:就像服务员提供的额外信息(如菜品的配料说明),包含服务器信息、内容类型等。
    • 空行:表示响应头的结束。
    • 响应体:实际的菜品内容(如网页、数据)。

        4. HTTP方法: HTTP方法如GET、POST、PUT、DELETE等,就像不同类型的点单方式:

  • GET:像顾客查看菜单(获取资源)。
  • POST:像顾客提交订单(提交数据)。
  • PUT:像顾客修改订单(更新资源)。
  • DELETE:像顾客取消订单(删除资源)。

        5. 状态码:服务器返回的状态码就像服务员告知顾客订单状态:

  • 200:成功上菜。
  • 404:菜品未找到(点单的菜品不存在)。
  • 500:厨房出错(服务器错误)。

        6. 安全性:HTTP协议本身不加密,类似于在公开场合大声点餐,容易被他人听到。HTTPS通过SSL/TLS协议对数据加密,就像服务员悄声传递订单,确保信息安全。

        7. 持久连接:HTTP/1.1引入的持久连接,就像服务员在整个用餐过程中保持联系,而不是每次点菜都重新建立联系,减少了时间和沟通成本。

        8. HTTP/2:HTTP/2是HTTP协议的升级版,支持头部压缩和多路复用,提高了传输效率,类似于服务员同时处理多个订单,提高了服务效率。

        9. 内容类型:HTTP协议定义的内容类型如text/html、application/json等,类似于餐厅的菜单项,告诉顾客菜品的具体类型。

        10. 缓存:HTTP协议支持缓存机制,类似于餐厅提前准备一些常点的菜品,减少等待时间,提高服务速度。

三、HTTPS

        HTTPS(HyperText Transfer Protocol Secure)是HTTP的安全版。它在传统HTTP协议的基础上增加了SSL/TLS加密层,确保数据在传输过程中是加密的,保护用户隐私和数据安全。

        HTTPS协议可以比作餐厅中的保密点餐服务。在这个服务中,顾客的点单信息通过加密的方式传递给服务员,确保其他顾客或不相关人员无法窃听或篡改信息。

1. 加密数据传输

        在HTTPS协议中,数据传输是加密的,类似于顾客和服务员使用密语交流订单内容,确保只有顾客和服务员知道具体的点单信息。

  • 数据加密:所有数据在传输前都会被加密,防止中途被窃听或篡改。就像顾客和服务员使用特定的密语,外人无法理解他们的对话。
  • SSL/TLS:HTTPS使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来加密数据。SSL/TLS是加密的实现方式,类似于顾客和服务员之间的密语系统。
2. 数据完整性

        HTTPS确保数据在传输过程中不被篡改,就像服务员从厨房取菜到桌上的过程中,确保菜品不会被其他人动过。

  • 消息摘要:HTTPS通过消息摘要(如SHA-256)来验证数据的完整性。这就像服务员在上菜前检查菜品是否完好无损。
3. 身份验证

        HTTPS使用数字证书验证服务器身份,确保顾客与真正的餐厅(服务器)交流,而不是与冒牌餐厅(伪装的服务器)交流。

  • 数字证书:HTTPS使用由可信的第三方(CA,证书颁发机构)颁发的数字证书来验证服务器身份,类似于顾客检查服务员的工牌或餐厅的营业执照,确保其真实性。
4. HTTPS 的工作流程

        HTTPS的工作流程可以比作顾客和服务员之间的一次加密交流过程,从身份验证到加密交流,再到订单传递。

  • 建立安全连接:顾客和服务员首先相互验证身份(使用数字证书),确保对方可信。
  • 生成加密密钥:一旦身份验证通过,顾客和服务员会共同生成一个共享的加密密钥,用于接下来的交流。
  • 加密通信:所有点单和上菜信息通过加密密钥进行加密传输,确保信息安全。
5. 代码示例

        不妨写一个Python代码来观察HTTP与HTTPS的差异,这里以百度为例:

import requests
from requests.exceptions import SSLError# URL using HTTP
http_url = "http://baidu.com"# URL using HTTPS
https_url = "https://baidu.com"def fetch_data(url):try:response = requests.get(url)return response.status_code, response.contentexcept SSLError as e:return None, str(e)def main():# Fetch data using HTTPhttp_status, http_content = fetch_data(http_url)print("HTTP Status Code:", http_status)print("HTTP Content (first 100 bytes):", http_content[:100])# Fetch data using HTTPShttps_status, https_content = fetch_data(https_url)print("\nHTTPS Status Code:", https_status)print("HTTPS Content (first 100 bytes):", https_content[:100])if __name__ == "__main__":main()

        返回结果如下:

HTTP Status Code: 200
HTTP Content (first 100 bytes): b'<html>\n<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">\n</html>\n'HTTPS Status Code: 200
HTTPS Content (first 100 bytes): b'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charse'进程已结束,退出代码0

        可以看到二者状态码都是200,表示均访问成功了。

        同时,HTTP协议返回的内容在传输过程中是以明文形式发送的,任何中间人都可以读取到这些内容。而HTTPS协议返回的通过SSL/TLS协议进行了加密,这样就无法被中间人直接读取。

相关文章:

计算机网络基础:4.HTTP与HTTPS

一、回顾设定 想象你在经营一家繁忙的餐厅&#xff0c;顾客们通过点餐系统&#xff08;网卡&#xff09;下单&#xff0c;订单被前台&#xff08;路由器&#xff09;接收并分发到各个厨房区域&#xff08;网络设备&#xff09;。光猫像是食材供应商&#xff0c;通过高效的物流系…...

【深度学习入门】安装conda/miniconda、所需包类、CUDA与conda/Miniconda间的关系

深度学习入门 须知 本教程跟随李沐老师课程随笔&#xff0c;课程链接点击此处。 CUDA和Anaconda的关系 CUDA Toolkit是由Nvidia官方提供的完整工具包&#xff0c;其中提供了Nvidia驱动程序、开发CUDA程序相关的开发工具包等。 Anaconda在安装Pytorch等会用到的CUDA的框架时…...

0725,进程间传递文件描述符,socketpair + sendmsg/recvmsg

我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎…...

放大电路总结

补充: 只有直流移动时才有Rbe动态等效电阻 从RsUs看进去,实际上不管接了什么东西都能够看成是一个Ri(输入电阻) Ri Ui/Ii Rb//Rbe Ui/Us Ri/(RiRs) Aus (Uo/Ui)*(Ui/Us) Au *Ri/(RiRs) 当前面是一个电压源的信号 我们就需要输入电阻更大 Ro--->输出电阻--->将…...

深度学习1-简介

人工智能&#xff08;AI&#xff09;旨在打造模仿智能行为的系统。它覆盖了众多方法&#xff0c;涵盖了基于逻辑、搜索和概率推理的技术。机器学习是 AI 的一个分支&#xff0c;它通过对观测数据进行数学模型拟合来学习决策制定。这个领域近年来迅猛发展&#xff0c;现在几乎&a…...

Java基础语法 (基础介绍 二)

目录 Java 基础语法 第一个Java程序 基本语法 Java标识符 Java修饰符 Java变量 Java关键字 Java注释 Java 空行 Java 对象和类 Java中的对象 Java中的类 构造方法 创建对象 访问实例变量和方法 实例 源文件声明规则 Java包 Import语句 一个简单的例子 Java…...

SAPUI5基础知识18 - 自定义CSS和主题色

1. 背景 在上一篇博客中&#xff0c;我们通过使用SAPUI5提供的CSS类实现元素间距的调整。在本篇博客中&#xff0c;让我们看一下如何实现自定义的CSS样式。 2. 背景知识 2.1 CSS基础语法 CSS&#xff0c;全称为级联样式表&#xff08;Cascading Style Sheets&#xff09;&a…...

Postman中API测试的艺术:测试用例复用的高级技巧

Postman中API测试的艺术&#xff1a;测试用例复用的高级技巧 在API测试过程中&#xff0c;复用测试用例可以显著提高测试效率和一致性。Postman作为一个强大的API开发工具&#xff0c;提供了多种机制来实现测试用例的复用。本文将深入探讨Postman中API测试用例复用的技巧&…...

Flutter Geocoding插件使用指南:简化地理编码与逆地理编码

Flutter Geocoding插件使用指南&#xff1a;简化地理编码与逆地理编码 简介 geocoding 是一个Flutter插件&#xff0c;提供了简便的地理编码&#xff08;将地址转换为经纬度坐标&#xff09;和逆地理编码&#xff08;将经纬度坐标转换为地址&#xff09;功能。它利用了iOS和A…...

“手撕”全网最细的JDBC教程(安装导入使用)

目录 一、什么是JDBC 二、JDBC的安装 三、JDBC如何导入 四、怎么使用JDBC编写代码 一、什么是JDBC JDBC由Java提供给数据库的一组通用的API。 在平常的业务中&#xff0c;是比较少使用像cmd命令行来操作数据库的&#xff0c;更多的是操作代码&#xff08;Python&#xff…...

C++指针选择题带答案

1、有如下语句int a10,b20,*p1,*p2;p1&a;p2&b;如图1所示&#xff0c;若要实现图2所示的存储 结构&#xff0c;可选用的赋值语句是___________。 A)*p1*p2; B)p1p2; C&#xff09;p1*p2; D)*p1p2; 2、变量的指针&#xff0c;其含义是该…...

力扣 二分查找

二分查找基础篇。 题目 class Solution {public int searchInsert(int[] nums, int target) {int l 0, r nums.length - 1;while(l < r) {int mid l((r-l)>>1);//(lr)/2if(nums[mid]<target)lmid1;else rmid-1;}return l;//处理边界&#xff0c;设定数组的左半…...

ADMAS-Simulink联合仿真输入设置

使用Solidworks、ADAMS、Simulink进行机电联合仿真_adams-simulink-CSDN博客RecurDynSimulink联合仿真案例演示_哔哩哔哩_bilibili# C#调用已经使用Python训练好的神经网络做图片检测_c#调用python训练好的神经网络模型-CSDN博客...

【NOI】C++程序设计入门三

文章目录 前言一、大杂烩1.导入2.常量3.标识符4.关键字5.整型补充5.1 short&#xff1a;短整型5.2 long&#xff1a;长整型5.3 long long&#xff1a;长长整型 二、例题讲解问题&#xff1a;1597. 买文具问题&#xff1a;1596. 火柴棒三角形问题问题&#xff1a;1417. 买文具问…...

Three.js投射光线实现三维物体交互

<template><div id"webgl"></div> </template><script setup> import * as THREE from three //导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入 dat.gui import { GUI } from thre…...

SSRF学习笔记

1.NAT学习 Nat&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是 一种网络通信技术主要用于将私有网络中的内部IP地址转换成公共网络中的公共IP地址&#xff0c;以实现局域网内部设备访问互联网的功能。具体来说&#xff0c;Nat有以下几个主要…...

Python——Pandas(第三讲)

文章目录 修改替换变量值对应数值的替换指定数值范围的替换 虚拟变量变换数值变量分段数据分组基于拆分进行筛选 分组汇总使用 agg 函数进行汇总引用自定义函数 长宽格式转换转换为最简格式长宽型格式的自由互转 多个数据源的合并数据的横向合并concat 命令 处理缺失值认识缺失…...

性能测试中qps 一直上不去的原因

QPS&#xff1a;Queries Per Second意思是“每秒查询率”&#xff0c;是一台服务器每秒能够相应的查询次数&#xff0c;是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 在性能测试中&#xff0c;QPS&#xff08;每秒查询率&#xff09;一直上不去可能由以下…...

学习笔记14:CNAME 记录值、TTL (Time to Live)、Redis 的 Pool 对象池、钩子函数、依赖注入

CNAME 记录值 CNAME 记录是一种DNS记录类型&#xff0c;它将一个域名映射到另一个域名。这通常用于将一个子域名指向另一个域名&#xff0c;或者将一个域名指向一个不同的顶级域。 用途&#xff1a;用于域名别名&#xff0c;负载均衡&#xff0c;或者在更换域名时保持服务的连…...

springboot集成mybatis时,dao层的mapper类需要添加@Repository注解吗?

在Spring Boot项目中&#xff0c;当你使用MyBatis作为ORM框架时&#xff0c;关于DAO层的Mapper类是否需要添加Repository注解&#xff0c;这主要取决于你的项目需求和配置。 Repository注解的作用Repository注解是Spring框架中用于声明持久层&#xff08;DAO层&#xff09;的组…...

一文总结代理:代理模式、代理服务器

概述 代理在计算机编程领域&#xff0c;是一个很通用的概念&#xff0c;包括&#xff1a;代理设计模式&#xff0c;代理服务器等。 代理类持有具体实现类的实例&#xff0c;将在代理类上的操作转化为实例上方法的调用。为某个对象提供一个代理&#xff0c;以控制对这个对象的…...

探索 Kubernetes 持久化存储之 Longhorn 初窥门径

作者&#xff1a;运维有术星主 在 Kubernetes 生态系统中&#xff0c;持久化存储扮演着至关重要的角色&#xff0c;它是支撑业务应用稳定运行的基石。对于那些选择自建 Kubernetes 集群的运维架构师而言&#xff0c;选择合适的后端持久化存储解决方案是一项至关重要的选型决策。…...

全国区块链职业技能大赛样题第9套智能合约+数据库表设计

后端源码地址:https://blog.csdn.net/Qhx20040819/article/details/140746050 前端源码地址:https://blog.csdn.net/Qhx20040819/article/details/140746216 智能合约+数据库表设计:https://blog.csdn.net/Qhx20040819/article/details/140746646 nice.sql /* Navicat MySQ…...

常见OVS网桥及其链接接口详解

目录 引言OVS简介常见OVS网桥 QBR&#xff08;qbr&#xff09;PLY网桥br-intbr-tunbr-routerbrcps常见网桥链接接口 QVOQVIQVMPatch网桥和接口的工作原理应用场景 虚拟化环境数据中心网络云计算平台 1. 引言 开放虚拟交换机&#xff08;Open vSwitch&#xff0c;简称OVS&…...

创建最最最纯净 Windows 11/10 系统镜像!| 全网独一份

前期准备工作 1.配置系统应答文件&#xff1a;【点击前往】 2.系统镜像编辑器&#xff1a; 【点击下载】 3.Windows 系统镜像官方下载&#xff1a; 【Windows 11】、【Windows 10】【官方密钥】 4.翻译工具 【GitHub】 5.详细的设置教程 5.1先打开配置系统应答文件&#…...

带你学会Git必会操作

文章目录 带你学会Git必会操作1Git的安装2.Git基本操作2.1本地仓库的创建2.2配置本地仓库 3.认识一些Git的基本概念3.1操作流程&#xff1a; 4.一些使用场景4.1添加文件场景一4.2查看git文件4.3修改文件4.4Git版本回退4.5git撤销修改 5.分支管理5.1查看分支5.2创建本地分支5.3切…...

clickhouse处理readonly报错

1&#xff0c;clickhouse执行 SYSTEM RESTORE REPLICA db_com.dwd_com_t_judge_result_local; SYSTEM RESTORE REPLICA db_com.dwd_com_t_judge_result_local Query id: 70669be0-eef8-41da-b761-4980ce48ece2 0 rows in set. Elapsed: 0.001 sec. Received exception fro…...

使用git命令行的方式,将本地项目上传到远程仓库

在国内的开发环境中&#xff0c;git的使用是必不可少的。Git 是一款分布式版本控制系统&#xff0c;用于有效管理和追踪文件的变更历史及协作开发。本片文章就来介绍一下怎样使用git命令行的方式&#xff0c;将本地项目上传到远程仓库&#xff0c;虽然现在的IDE中基本都配置了g…...

jetbrains InterlliJ IDEA 2024.1 版本最新特性一览: Java 相关内容

简简单单 Online zuozuo:欢迎商业合作 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo :联系我们:VX :tja6288 / EMAIL: 347969164@qq.com 文章目录 jetbrains InterlliJ …...

百日筑基第三十四天-JAVA中的强/软/弱/虚引用

百日筑基第三十四天-JAVA中的强/软/弱/虚引用 Java对象的引用被划分为4种级别&#xff0c;分别为强引用、软引用、弱引用以及虚引用。帮助程序更加灵活地控制对象的生命周期和JVM进行垃圾回收。 强引用 强引用是最普遍的引用&#xff0c;一般把一个对象赋给一个引用变量&…...

C语言100基础拔高题(3)

1.利用递归函数调用方式&#xff0c;将所输入的5个字符&#xff0c;以相反顺序打印出来。 解题思路&#xff1a;通过反复调用一个打印最后一个元素的函数&#xff0c;来实现此功能。源代码如下: #include<stdio.h> void oposize(char str[], int len); int main() {//利…...

AV1技术学习:Constrained Directional Enhancement Filter

CDEF允许编解码器沿某些(可能是倾斜的)方向应用非线性消阶滤波器。它以88为单位进行。如下图所示&#xff0c;通过旋转和反射所示的三个模板来定义八个预设方向。 Templates of preset directions and their associated directions. The templates correspond to directions of…...

C++的STL简介(一)

目录 1.什么是STL 2.STL的版本 3.STL的六大组件 4.string类 4.1为什么学习string类&#xff1f; 4.2string常见接口 4.2.1默认构造 ​编辑 4.2.2析构函数 Element access: 4.2.3 [] 4.2.4迭代器 ​编辑 auto 4.2.4.1 begin和end 4.2.4.2.regin和rend Capacity: 4.2.5…...

DNS劫持

目录 一、DNS的基本概念 二、DNS劫持的工作原理 三、DNS劫持的影响 四、DNS劫持的防范措施 DNS劫持&#xff1a;一种网络安全威胁的深入分析 在当今网络日益发达的时代&#xff0c;互联网已经成为了人们日常生活中不可或缺的一部分。然而&#xff0c;随着网络技术的进步&am…...

Centos7解决网关ens33的静态地址配置

原因复现: 我登录一段时间之后我ens33的网关ip地址发生了改变 原ip地址配置 现有地址: 根据文心一言提示 修改配置文件 sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33 我的原配置 [rootlocalhost ~]# sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE"…...

python中常用于构建cnn的库有哪些

在Python中&#xff0c;有多种库可用于构建卷积神经网络&#xff08;CNN&#xff09;。以下是几种常用的库&#xff1a; 1. TensorFlow TensorFlow是一个开源深度学习框架&#xff0c;由Google Brain团队开发。它支持构建和训练各种神经网络模型&#xff0c;包括卷积神经网络。…...

【前端 17】使用Axios发送异步请求

Axios 简介与使用&#xff1a;简化 HTTP 请求 在现代 web 开发中&#xff0c;发送 HTTP 请求是一项常见且核心的任务。Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;适用于 node.js 和浏览器&#xff0c;它提供了一种简单的方法来发送各种 HTTP 请求。本文将介绍 Axio…...

Unity Android接入SDK 遇到的问题

1. buildtools、platformtools、commandline tools 以及compiled sdk version、buildtools sdk version、target sdk version 的说明 Android targetSdkVersion了解一下 - 简书 2. 查看.class 和.jar文件 jd_gui 官网地址&#xff1a; 下载jd_gui 工具 &#xff0c;或者 idea 下…...

基于深度学习的复杂策略学习

基于深度学习的复杂策略学习&#xff08;Complex Strategy Learning&#xff09;是通过深度学习技术&#xff0c;特别是强化学习和模仿学习&#xff0c;来开发和优化解决复杂任务的策略。这类技术广泛应用于自动驾驶、游戏AI、机器人控制和金融交易等领域。以下是对这一领域的系…...

【Golang 面试 - 进阶题】每日 3 题(一)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

周报 Week 3:

补题链接&#xff1a; Week 3 DAY 1-CSDN博客 河南萌新联赛2024第&#xff08;二&#xff09;场&#xff1a;南阳理工学院-CSDN博客 Week 3 DAY 5:-CSDN博客 Week 3 DAY 6-CSDN博客 这周题单是动态规划——&#xff08;背包问题&#xff0c;线性dp&#xff09;&#xff1a…...

开源消息队列比较

目录 1. Apache Kafka 1.1安装步骤 1.1.1使用Docker安装 1.1.1手动安装 1.2 C#使用示例代码 1.2.1 安装Confluent.Kafka 1.2.2生产者代码示例 1.2.3消费者代码示例 1.3特点 1.4使用场景 2. RabbitMQ 2.1安装步骤 2.1.1使用Docker安装 2.1.2手动安装 2.2 C#使用示…...

【前端逆向】最佳JS反编译利器,原来就是chrome!

有时候需要反编译别人的 min.js。 比如简单改库、看看别人的 min,js 干了什么&#xff0c;有没有重复加载&#xff1f;此时就需要去反编译Javascript。 Vscode 里面有一些反编译插件&#xff0c;某某Beautify等等。但这些插件看人品&#xff0c;运气不好搞的话&#xff0c;反…...

微信小程序根据动态权限展示tabbar

微信小程序自定义 TabBar 后根据权限动态展示tabbar 在微信小程序开发中,自定义 TabBar 可以让应用更具灵活性和个性化。特别是在用户根据不同权限展示不同的 TabBar 内容时,正确的实现方法能够提升用户体验。本篇文章将分享如何使用事件总线实现权限变动时动态更新自定义 T…...

开源安全信息和事件管理(SIEM)平台OSSIM

简介 OSSIM&#xff0c;开源安全信息和事件管理&#xff08;SIEM&#xff09;产品&#xff0c;提供了经过验证的核心SIEM功能&#xff0c;包括事件收集、标准化和关联。 OSSIM作为一个开源平台&#xff0c;具有灵活性和可定制性高的优点&#xff0c;允许用户根据自己的特定需…...

【DP】01背包

算法-01背包 前置知识 DP 思路 01背包一般分为两种&#xff0c;不妨叫做价值01背包和判断01背包。 价值01背包 01背包问题是这样的一类问题&#xff1a;给定一个背包的容量 m m m 和 n n n 个物品&#xff0c;每个物品有重量 w w w 和价值 v v v&#xff0c;求不超过背…...

50、PHP 实现选择排序

题目&#xff1a; PHP 实现选择排序 描述&#xff1a; n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果&#xff1a;(1)初始状态&#xff1a;无序区为R[1…n]&#xff0c;有序区为空。(2)第1趟排序在无序区R[1…n]中选出关键字最小的记录R[k]&#xff0c;将…...

17.延迟队列

介绍 延迟队列&#xff0c;队列内部是有序的&#xff0c;延迟队列中的元素是希望在指定时间到了以后或之前取出和处理。 死信队列中&#xff0c;消息TTL过期的情况其实就是延迟队列。 使用场景 1.订单在十分钟内未支付则自动取消。 2.新创建的店铺&#xff0c;如果十天内没…...

KCache-go本地缓存,支持本地缓存过期、缓存过期自维护机制。

GitHub - kocor01/kcache: go 本地缓存解决方案&#xff0c;支持本地缓存过期、缓存过期自维护机制。 最近系统并发很高&#xff0c;单接口10W的 QPS&#xff0c;对 redis 压力很大&#xff0c;大量的热KEY导致 redis 分片CPU资源经常告警。计划用 go 本地缓存缓解 redis 的压…...

斯坦福UE4 C++课学习补充 14:UMG-优化血量条

文章目录 一、优化执行效率二、简单脉冲动画 一、优化执行效率 绑定事件需要每一帧检查绑定对象是否有变化&#xff0c;势必造成CPU资源的浪费&#xff0c;因此优化执行效率的思路是&#xff1a;UI组件不再自行每帧查询血量&#xff0c;而是让血量自己在发生变化的同时通知UI进…...