http协议的历史与基本概念

news2025/2/26 14:20:58

在这里插入图片描述

文章目录

  • 历史和发展
    • 起源:
    • HTTP/0.9(1991年):
    • HTTP/1.0(1996年,RFC 1945):
    • HTTP/1.1(1997年,RFC 2068;1999年更新为RFC 2616):
    • HTTP/2(2015年,RFC 7540):
    • HTTP/3(正在开发,草案状态):
    • 主要区别和改进点:
  • 演示nc/telnet来演示发起一个http请求
    • 使用nc (netcat)
    • 使用telnet
    • 以访问csdn.net为例
  • 基本概念和架构
    • 基本概念
      • 客户端和服务器:
      • 无状态协议:
      • 请求-响应模型:
      • 方法:
      • 状态码:
      • URL(统一资源定位符):
      • URI(统一资源标识符):
      • 版本:
    • 架构
      • 请求:
      • 响应:
  • 进一步阅读和参考资源
    • 官方文档和规范
    • 书籍
    • 开发工具
    • 社区和论坛

历史和发展

HTTP(超文本传输协议)的历史和发展如下:

起源:

HTTP协议最初由Tim Berners-Lee在1989年在CERN(欧洲核子研究组织)发明,目的是为了便于科学家之间通过互联网分享文档。最早的HTTP版本现已不被使用,但它奠定了后来版本的基础。

HTTP/0.9(1991年):

简单的文本协议,只支持一个命令:GET。客户端通过TCP连接请求一个资源,服务器返回纯文本格式的HTML文件,然后关闭连接。

HTTP/1.0(1996年,RFC 1945):

HTTP/1.0定义了基本的HTTP结构,引入了方法、状态码和HTTP头的概念。它支持多种类型的资源(如HTML、图片及其他文件类型)的传输,每次请求/响应后都会关闭TCP连接。这个版本使HTTP成为更通用的协议,但每次请求都建立新的TCP连接使得通信效率较低。

HTTP/1.1(1997年,RFC 2068;1999年更新为RFC 2616):

HTTP/1.1是一个重大进步,它引入了持久连接(默认不关闭TCP连接,以便复用于多个请求/响应),管线化(允许一次发送多个请求而不用等待响应)、分块传输编码、额外的缓存控制机制,以及更多的方法和状态码。HTTP/1.1提高了协议的效率和性能,是目前最广泛使用的HTTP版本。

HTTP/2(2015年,RFC 7540):

HTTP/2基于SPDY协议,主要优化了性能,引入了二进制帧、多路复用、服务器推送、头部压缩等功能,这些功能改善了网络延迟和带宽利用效率。HTTP/2使得多个请求可以在同一个TCP连接上并发进行,而不会彼此阻塞(头阻塞问题)。

HTTP/3(正在开发,草案状态):

HTTP/3是对HTTP进一步的发展,主要变化是替换了TCP传输层协议,使用基于UDP的QUIC协议。QUIC提供了更低的连接和传输延迟,改进了连接迁移和安全特性,并且在有丢包的网络环境下表现更好。HTTP/3是对HTTP协议在性能和可靠性方面的进一步提升。

主要区别和改进点:

  • 性能:HTTP/1.1引入了多次请求共用一个TCP连接,HTTP/2进一步引入多路复用和头部压缩,HTTP/3用QUIC降低了连接时延。
  • 安全性:虽然HTTP本身是无状态且无加密的,但随着互联网的发展,加密变得越来越重要。HTTP/2和HTTP/3通常都是与TLS(传输层安全性协议)结合使用的,提高了通信的安全性。
  • 可靠性:QUIC在HTTP/3中的使用减少了TCP因重传而带来的延迟,改善了在不稳定网络下的表现。
  • 简化复杂性:HTTP/2和HTTP/3的设计简化了客户端和服务器端的网络栈处理,使得并发请求更高效。

HTTP协议的发展响应了Web应用不断增长的性能和功能需求,每个新版本都旨在提供更快、更安全、更可靠的网络通信。

演示nc/telnet来演示发起一个http请求

为了使用nc(netcat)或telnet来发起一个HTTP请求,你需要手动输入HTTP请求的原始文本格式。下面是如何使用这两个工具发起一个HTTP GET请求的示例。

使用nc (netcat)

首先,确保你已经安装了nc。然后在命令行中运行以下命令:

nc example.com 80

这会打开到example.com服务器80端口(HTTP默认端口)的TCP连接。接下来,你可以输入HTTP请求:

GET / HTTP/1.1
Host: example.com

确保在Host头和最后一个换行符之间有一个空行,这是HTTP请求头和请求体之间的分隔符。在这里,请求体是空的,因为这是一个GET请求。

使用telnet

如果你使用的是telnet,过程类似。首先,运行以下命令:

telnet example.com 80

在完成输入后,你应该会看到服务器的响应,包括响应头和可能的HTML内容。

以访问csdn.net为例

nc -v csdn.net 80
Connection to csdn.net port 80 [tcp/http] succeeded!
GET / HTTP/1.1
Host: csdn.net

HTTP/1.1 301 Moved Permanently
Server: openresty
Date: Mon, 18 Mar 2024 08:40:11 GMT
Content-Type: text/html
Content-Length: 166
Connection: keep-alive
Keep-Alive: timeout=20
Location: https://www.csdn.net/

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>openresty</center>
</body>
</html>

注意
在现实中,你很少需要使用nc或telnet来手动发起HTTP请求,因为这些工具不支持现代HTTP协议的很多特性(比如HTTPS)。这些演示主要用于教学或调试目的,帮助你理解HTTP请求和响应的基本结构。

对于加密的HTTPS请求,nc和telnet并不适用,因为它们不处理TLS/SSL加密。如果你需要进行加密通信,考虑使用专门的HTTP客户端工具,如curl、wget或者编程语言提供的HTTP库。

基本概念和架构

HTTP协议的基本概念和架构的详细介绍:

基本概念

客户端和服务器:

  • 客户端:通常是用户的Web浏览器,可以是任何HTTP兼容的应用程序,负责发起请求。
  • 服务器:是托管网页资源的系统,响应客户端的请求并发送所请求的数据。

无状态协议:

HTTP是一个无状态协议,意味着服务器不会保存任何请求客户端的状态信息。每个请求都被当作一个新的请求处理,服务器不会记录之前的请求历史。为了维持状态,通常使用cookies等机制。

请求-响应模型:

在HTTP协议中,通信始于客户端发起一个请求,服务器以一个响应结束。一旦交换完成,TCP连接可以被复用或关闭。

方法:

HTTP定义了一系列的方法(动词),用于表示对资源的操作,最常用的包括:

  • GET:请求获取指定资源。
  • POST:提交数据给服务器(如表单提交)。
  • PUT:上传文件或内容到指定资源。
  • DELETE:删除指定资源。
  • HEAD:请求资源的头部信息。

状态码:

每个HTTP响应都包含一个状态码,这个数字响应码告诉客户端请求是否成功,以及如果不成功,问题出在哪里。例如:

  • 200 OK:请求成功。
  • 404 Not Found:请求的资源未找到。
  • 500 Internal Server Error:服务器遇到了一个错误。

URL(统一资源定位符):

用于定位互联网上的资源,如 http://www.example.com/index.html。

URI(统一资源标识符):

是一个用于标识某一互联网资源名称的字符串。

版本:

HTTP协议随时间发展出不同的版本,如HTTP/1.0、HTTP/1.1、HTTP/2,每个版本在性能和功能上有所改进。

架构

HTTP协议主要由以下几个组成部分构成:

请求:

  1. 请求行:包含HTTP方法、请求的URI和HTTP版本。
  2. 请求头:包含对请求描述的元数据,如Host、User-Agent、Accept等。
  3. 空行:分隔请求头和消息主体。
  4. 消息主体(可选):请求的内容,不是所有方法都有消息主体,比如GET请求通常没有。

我们以访问一个链接来具体看一下http的请求体(这是使用chrome开发者工具截取的请求):

GET /namedlock/article/details/136787634 HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: no-cache
Connection: keep-alive
Cookie: uuid_tt_dd=10_21073607390-1630200731683-100282; UN=qq_41928247; smidV2=20210828105959b3f3f
Host: blog.csdn.net
Pragma: no-cache
Referer: https://blog.csdn.net/namedlock/category_12584955.html?spm=1001.2014.3001.5482
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "macOS"

下面是对每一行的解释:

GET /namedlock/article/details/136787634 HTTP/1.1
  • GET: HTTP请求方法,表示要获取指定资源。
  • /namedlock/article/details/136787634: 请求的URI(统一资源标识符),指定了要访问的资源的位置。
  • HTTP/1.1: 请求使用的HTTP协议版本。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
  • Accept: 告诉服务器客户端能够处理的媒体类型。这里包括了HTML、XML、图片等多种格式,以及它们的相对优先级权重(通过q参数指定)。
Accept-Encoding: gzip, deflate, br, zstd
  • Accept-Encoding: 告诉服务器客户端支持的内容编码,这里表明客户端支持gzip、deflate、br(Brotli)和zstd(Zstandard)压缩格式。
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
  • Accept-Language: 告诉服务器客户端的首选语言,这里优先选择中文,其次是英文。
Cache-Control: no-cache
  • Cache-Control: 指定请求和响应遵循的缓存机制,这里的no-cache指示请求不应该被缓存。
Connection: keep-alive
  • Connection: 控制当前的网络连接。keep-alive表示保持连接打开,以便执行后续的请求。
Cookie: uuid_tt_dd=10_21073607390-1630200731683-100282; UN=qq_41928247; smidV2=20210828105959b3f3f
  • Cookie: 包含了一个或多个由服务器设置的cookie,这些cookie存储了客户端的状态信息。
Host: blog.csdn.net
  • Host: 请求的目标主机和端口号(如果指定)。这里表示客户端想要访问的主机是blog.csdn.net。
Pragma: no-cache
  • Pragma: 类似于Cache-Control,是一个旧的HTTP/1.0头部,用于向后兼容。
Referer: https://blog.csdn.net/namedlock/category_12584955.html?spm=1001.2014.3001.5482
  • Referer: 指示请求是从哪个页面链接过来的,这里是从CSDN的某个分类页面跳转过来的。
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
  • User-Agent: 包含了发出请求的应用程序信息,这里表明请求来自于Mac OS X系统上的Chrome浏览器。

响应:

  1. 状态行:包含HTTP版本、状态码和状态信息。
  2. 响应头:包含对响应描述的元数据,如Content-Type、Content-Length、Cache-Control等。
  3. 空行:分隔响应头和消息主体。
  4. 消息主体(可选):响应的内容,如请求的HTML、图片或其他类型的数据。
    连接管理:

在HTTP/1.0中,每个请求/响应对通常都需要一个新的连接。
HTTP/1.1引入了持久连接,可以在一个连接上发送多个请求和响应。
HTTP/2和HTTP/3进一步优化了连接管理,支持多路复用和其他高级功能。
HTTP的这些基本概念和架构组成了Web通信的核心。

示例:

HTTP/1.1 200 OK
Date: Mon, 18 Mar 2024 08:48:38 GMT
Content-Type: text/html;charset=utf-8
Transfer-Encoding: chunked
Connection: close
Server: WAF
Vary: Accept-Encoding
Content-Language: zh-CN
Strict-Transport-Security: max-age=0; preload
Content-Encoding: gzip
X-Request-Id: 52a7c0cc35a79d5fd5228f8068a4f0e1
Set-Cookie: waf_captcha_marker=a808f4a666fef791039bc958c47e7284f9c4c0dec90a3a90731d829e404fb431; Max-Age=300; Path=/; HttpOnly
X-Cache: BYPASS

下面是对每一行的解释:

HTTP/1.1 200 OK
  • HTTP/1.1: 响应遵循的HTTP协议版本。
  • 200: HTTP状态码,表示请求成功。
  • OK: 状态码的文本描述,也表示请求成功。
Date: Mon, 18 Mar 2024 08:48:38 GMT
  • Date: 响应生成的日期和时间。
Content-Type: text/html;charset=utf-8
  • Content-Type: 响应正文的MIME类型,这里指定为text/html,字符集为UTF-8。
Transfer-Encoding: chunked
  • Transfer-Encoding: 响应正文的传输编码类型,chunked表示数据以一系列块的形式发送,使得服务器可以在生成整个响应内容之前开始发送响应。
Connection: close
  • Connection: 控制当前的网络连接,close指示连接将在响应完成后立即关闭。
Server: WAF

Server: 告知客户端响应是由哪种服务器软件生成的,这里是WAF(可能是指Web应用防火墙)。

Vary: Accept-Encoding
  • Vary: 告诉缓存机制,响应是基于哪些请求头进行变化的。这里表示响应可能因Accept-Encoding请求头的不同而变化。
Content-Language: zh-CN
  • Content-Language: 页面内容的自然语言,这里为简体中文。
Content-Encoding: gzip
  • Content-Encoding: 告诉客户端响应正文的编码方式,这里指定为gzip压缩。
Set-Cookie: waf_captcha_marker=a808f4a666fef791039bc958c47e7284f9c4c0dec90a3a90731d829e404fb431; Max-Age=300; Path=/; HttpOnly
  • Set-Cookie: 服务器告诉客户端要设置一个cookie,这里设置了名为waf_captcha_marker的cookie,有效期300秒,只在根路径(/)下有效,且只能通过HTTP协议访问,不可通过客户端脚本访问(HttpOnly)。

进一步阅读和参考资源

HTTP协议是Web开发的基础,了解其工作原理对于任何网络应用开发人员都是至关重要的。以下是一些HTTP协议学习和参考资源,可以帮助你深入了解并掌握HTTP协议的各个方面:

官方文档和规范

  • RFC 7230 - “Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing”
  • RFC 7231 - “Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content”
  • RFC 7540 - “Hypertext Transfer Protocol Version 2 (HTTP/2)”
  • RFC 7541 - “HPACK: Header Compression for HTTP/2”
  • RFC 6455 - “The WebSocket Protocol”
  • IETF QUIC Working Group - HTTP/3 over QUIC protocol (draft)
  • Mozilla Developer Network (MDN) - HTTP

书籍

  • “HTTP: The Definitive Guide” by David Gourley and Brian Totty:
    一本经典的书籍,全面深入地介绍了HTTP协议。
  • “High Performance Browser Networking” by Ilya Grigorik (O’Reilly):
    介绍了网络协议的性能相关方面,包括HTTP/2和WebSocket。
  • “HTTP/2 in Action” by Barry Pollard:
    深入探讨了HTTP/2协议的特性和实现。
  • “Web Performance in Action” by Jeremy L. Wagner:
    讲解了如何利用HTTP协议提高网站性能。
    教程和在线课程

开发工具

  • Postman:
    一个用于构建API和测试HTTP请求的强大工具。
    https://www.postman.com/
  • Wireshark:
    网络协议分析器,可以捕获和分析HTTP通信数据。
    https://www.wireshark.org/
  • cURL:
    命令行工具,支持多种协议,包括HTTP,常用于发送请求和测试。
    https://curl.se/
  • Google Chrome Developer Tools:
    浏览器内置的开发者工具,可以查看HTTP请求和响应,分析性能等。

社区和论坛

  • Stack Overflow:
    一个活跃的开发者社区,可以找到关于HTTP协议和网络通信的讨论和问题。
    https://stackoverflow.com/
  • IETF HTTP Working Group:
    讨论和制定HTTP协议标准的官方工作组。
    https://httpwg.org/

通过这些资源,你可以系统地学习HTTP协议的基础知识,掌握其进阶内容,以及保持对最新发展的了解。对于实践应用,实际编码和使用开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1528698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【动态规划】【 数位dp】2827. 范围中美丽整数的数目

本文涉及知识点 数位dp 动态规划汇总 LeetCode2827. 范围中美丽整数的数目 给你正整数 low &#xff0c;high 和 k 。 如果一个数满足以下两个条件&#xff0c;那么它是 美丽的 &#xff1a; 偶数数位的数目与奇数数位的数目相同。 这个整数可以被 k 整除。 请你返回范围 [l…

写作之路:寻找动力与认可的探索

✍️作者简介&#xff1a;小北编程&#xff08;专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向&#xff09; &#x1f433;博客主页&#xff1a; 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN &#x1f514;如果文章对您些帮助请&#x1f449;关…

Android14音频进阶:AudioFlinger究竟如何混音?(六十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

R语言中的常用基础绘图函数 直方图,箱线图,条形图,散点图

目录 R语言中的绘图参数 绘图函数 1.plot函数绘制散点图 2.hist函数绘制直方图 如何修饰直方图? 如何在直方图上标注各组频数&#xff1f; 使用text函数把某些信息标注在直方图上 如何在直方图上添加概率密度曲线&#xff1f; 3.boxplot函数绘制箱线图 4.barplot函数…

实现安卓连接阿里云物联网平台(2)

完整工程链接 链接&#xff1a;https://pan.baidu.com/s/1ykcJHPBSKBXVMaMWKoVRvA?pwd8888 提取码&#xff1a;8888 &#xff08;1&#xff09;创建一个新工程 &#xff08;2&#xff09;添加mqtt包的依赖 implementation org.eclipse.paho:org.eclipse.paho.client.mqttv…

C语言技能数(知识点汇总)

C语言技能数&#xff08;知识点汇总&#xff09; C 语言概述特点不足之处 标准编程机制 数据类型变量数据类型字符类型整数类型符号位二进制的原码、反码和补码 浮点类型布尔类型 常量字面常量const 修饰的常变量#define定义的标识符常量枚举常量 sizeofsizeof(结构体)不要对 v…

代码随想录训练营Day26:● 93.复原IP地址 ● 78.子集 ● 90.子集II

93.复原IP地址 题目链接 https://leetcode.cn/problems/restore-ip-addresses/description/ 题目描述 思路 class Solution {List<String> list new ArrayList<>();public List<String> restoreIpAddresses(String s) {if(s.length()>12) return list…

并联谐振回路

并联谐振回路概述 串联谐振回路适用于低内阻电源(理想电压源)。而对于大内阻电源&#xff0c;则适合采用并联谐振回路。 并联谐振回路&#xff1a;指电感线圈L、电容器C和外加信号源相互并联的振荡回路。同样&#xff0c;由于电容器C的损耗很小&#xff0c;可以认为损耗电阻集…

JavaScript中a++和++a的区别是什么?

在JS中&#xff0c;a 和 a 都是对变量 a进行自增操作&#xff0c;但是他们在执行的行为和结果上有些不同&#xff1a; a (前缀自增)&#xff1a; 首先是将a的值增加1&#xff0c;然后返回 a 增加后的值。这意味着&#xff0c;表达式的其余部分使用 a的时候&#xff0c; a 的值…

【办公类-22-15】周计划系列(5-6)“周计划-06 周计划打印pdf(docx删除内容转PDF)“ (2024年调整版本)

作品展示 背景需求&#xff1a; 前期用docx&#xff08;删除第一页反思部分内容&#xff09;转PDF转png&#xff08;第一页&#xff09;的方式获得上传网页用的图片。 【办公类-22-14】周计划系列&#xff08;5-5&#xff09;“周计划-05 上传周计划png&#xff08;docx转PDF…

KTV点歌系统|基于JSP技术+ Mysql+Java+ B/S结构的KTV点歌系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

议题揭晓 | 3月23日武汉 Linux 用户组线下沙龙邀您参与!

内容来源&#xff1a;deepin 社区 WHLUG&#xff08;武汉Linux用户组&#xff09;线下沙龙将于 2024 年 3 月 23 日下午举办&#xff0c; 欢迎大家来到现场&#xff0c;一起交流最新产品动态与前沿技术&#xff0c;聆听社区成员的共建经验与收获。 本次活动由 deepin&#xff…

发票OCR-国税可进行的发票查验种类-接口文档

发票查验内容包括发票种类名称、发票代码、发票号码、金额、销售方名称、购买方名称等信息。可以在国家税务总局全国增值税发票查验平台上进行查验&#xff0c;也可以进入发票所属省、直辖市税务局官方网站的“我要查询-发票查询”模块进行查验&#xff0c;企业也可以通过发…

python基础——字符串的常见操作方法【下标索引,index,count,len,replace,split,strip】

&#x1f4dd;前言&#xff1a; 字符串是一种有序的&#xff0c;允许重复字符串存在的&#xff0c;不可修改的序列 这篇文章主要总结一下python中有关字符串的部分相关知识&#xff0c;以及字符串的常见操作方法&#xff1a; 1&#xff0c;和其他序列极其类似的操作方法 2&…

遥感深度学习:CNN-LSTM模型用于NDVI的预测(Pytorch代码深度剖析)

代码上传至Github库&#xff1a;https://github.com/ChaoQiezi/CNN-LSTM-model-is-used-to-predict-NDVI 01 前言 这是一次完整的关于时空遥感影像预测相关的深度学习项目&#xff0c;后续有时间更新后续部分。 通过这次项目&#xff0c;你可以了解&#xff1a; pytroch的模…

java算法题每日多道

274. H 指数 题目 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义&#xff1a;h 代表“高引用次数” &#xff0c;一名科研人员的 h 指数 是指他&#xff08;…

Linux vi/vim编辑器“高亮/取消高亮”显示命令

背景 在Linux系统的vi/vim编辑器中&#xff0c;高亮可以迅速查找相关命令名&#xff0c;取消高亮适合不需要此功能者 步骤 高亮 在需要高亮的命令名前 “shift #” 例如&#xff0c;我现在需要对timestep高亮&#xff0c;编辑位置定位在第一个字母处&#xff08;绿色&…

探讨NLP对行业大量数据信息抽取的技术实现

在本文中&#xff0c;为了实现高效的信息抽取&#xff0c;我们采用了一个自主研发的多模态AI的大模型NLP平台。 这个平台的使用过程分为以下几个步骤&#xff1a; 数据收集&#xff1a;我们收集了与项目相关的100条数据样本&#xff0c;这些样本涵盖了各种商品描述&#xff0c…

JAVA八股day1

遇到的问题 相比于包装类型&#xff08;对象类型&#xff09;&#xff0c; 基本数据类型占用的空间往往非常小为什么说是几乎所有对象实例都存在于堆中呢&#xff1f;静态变量和成员变量、成员变量和局部变量的区别为什么浮点数运算的时候会有精度丢失的风险&#xff1f;如何解…

fn键设置

1、起因&#xff0c;按F7 F8调试&#xff0c;总是执行Fn功能&#xff0c;让人反感。 2、搜索了下对应的型号Fn键设置 方法一&#xff1a;浮岛式键盘Fn热键切换功能 方法二&#xff1a;通过键盘属性设置Fn锁定功能。【方法一解决了我的问题&#xff0c;方法二不试了。】 3、问题…