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

HTTP 基础

文章目录1、认识 HTTP1.1 超文本2、与 HTTP 有关的组件2.1 Web 服务器3、与 HTTP 有关的协议3.1 TCP3.2 DNS3.3 URI / URL3.4 HTTPS4、HTTP 请求响应过程5、HTTP 请求特征6、详解 HTTP 报文6.1 HTTP 请求 方法6.2 HTTP 请求 URL6.2.1 http6.2.2 主机6.2.3 端口6.2.4 路径6.2.5 查询参数6.2.6 锚点6.3 HTTP 版本6.4 请求头部6.4.1 通用标头6.4.1.1 Date6.4.1.2 Cache-Control6.4.1.3 Connection6.4.2 实体标头6.4.3 请求标头6.4.3.1 Host6.4.3.2 Referer6.4.3.3 Upgrade-Insecure-Requests6.4.3.4 If-Modified-Since6.4.3.5 If-None-Match6.4.3.6 内容协商6.4.4 响应标头6.4.4.1 响应状态码6.4.4.2 Access-Control-Allow-Origin6.4.4.3 Keep-Alive参考博客https://blog.csdn.net/qq_36894974/article/details/1039304781、认识 HTTPHTTPHyperText Transfer Protocol超文本传输协议协议定义了浏览器如何向万维网服务器请求万维网文档以及服务器如何把文档传送给浏览器。HTTP是面向事务的Transaction oriented应用层协议它是万维网上能够可靠地交换文件包括文本、超文本、声音、图像等各种多媒体文件的重要基础。超文本传输协议 可以进行文字分割超文本Hypertext、传输Transfer、协议Protocol它们之间的关系如下1.1 超文本在互联网早期的时候我们输入的信息只能保存在本地无法和其他电脑进行交互。我们保存的信息通常都以文本即简单字符的形式存在文本是一种能够被计算机解析的有意义的二进制数据包。而随着互联网的高速发展两台电脑之间能够进行数据的传输后人们不满足只能在两台电脑之间传输文字还想要传输图片、音频、视频甚至点击文字或图片能够进行超链接的跳转那么文本的语义就被扩大了这种语义扩大后的文本就被称为超文本(Hypertext)。2、与 HTTP 有关的组件2.1 Web 服务器Web 服务器的正式名称叫做Web ServerWeb 服务器 一般指的是 网站服务器上面说到浏览器是 HTTP 请求的发起方那么 Web 服务器 就是 HTTP 请求的应答方Web 服务器 可以向 浏览器 等 Web 客户端 提供文档也可以放置网站文件让全世界浏览可以放置数据文件让全世界下载。目前最主流的三个Web服务器是Apache、 Nginx 、IIS。3、与 HTTP 有关的协议3.1 TCPTCP 协议的全称是 Transmission Control Protocol 的缩写意思是传输控制协议。HTTP 使用TCP作为通信协议这是因为 TCP 是一种可靠的协议而可靠能保证数据不丢失。IP 协议的全称是 Internet Protocol 的缩写它主要解决的是通信双方寻址的问题。3.2 DNS计算机网络中的每个端系统都有一个 IP 地址存在而把 IP 地址转换为便于人类记忆的协议就是 DNS 协议。DNS 的全称是域名系统Domain Name System缩写DNS它作为将域名和 IP 地址相互映射的一个 分布式数据库能够使人更方便地访问互联网。3.3 URI / URLURI的全称是Uniform Resource Identifier中文名称是统一资源标识符使用它就能够唯一地标记互联网上资源。URL的全称是Uniform Resource Locator中文名称是统一资源定位符也就是我们俗称的网址它实际上是 URI 的一个子集。URI 不仅包括 URL还包括 URN统一资源名称它们之间的关系如下3.4 HTTPSHTTP 一般是明文传输很容易被攻击者窃取重要信息鉴于此HTTPS 应运而生。HTTPS 的全称为 Hyper Text Transfer Protocol over SecureSocket Layer全称有点长HTTPS 和 HTTP 有很大的不同在于HTTPS是以安全为目标的 HTTP 通道在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在 HTTP 的基础上增加了 TLS/SSL 层也就是说 HTTPS HTTP TLS/SSL。4、HTTP 请求响应过程们通过一个例子来探讨一下我们假设访问的 URL 地址为http://www.someSchool.edu/someDepartment/home.index当我们输入网址并点击回车时浏览器内部会进行如下操作DNS服务器会首先进行域名的映射找到访问www.someSchool.edu所在的地址然后HTTP 客户端进程在 80 端口发起一个到服务器www.someSchool.edu的 TCP 连接80 端口是 HTTP 的默认端口。在客户和服务器进程中都会有一个套接字与其相连。HTTP 客户端通过它的套接字向服务器发送一个 HTTP 请求报文。该报文中包含了路径someDepartment/home.index的资源我们后面会详细讨论 HTTP 请求报文。HTTP 服务器通过它的套接字接受该报文进行请求的解析工作并从其存储器(RAM 或磁盘)中检索出对象 www.someSchool.edu/someDepartment/home.index然后把检索出来的对象进行封装封装到 HTTP 响应报文中并通过套接字向客户进行发送。HTTP 服务器随即通知 TCP 断开 TCP 连接实际上是需要等到客户接受完响应报文后才会断开 TCP 连接。HTTP 客户端接受完响应报文后TCP 连接会关闭。HTTP 客户端从响应中提取出报文中是一个 HTML 响应文件并检查该 HTML 文件然后循环检查报文中其他内部对象。检查完成后HTTP 客户端会把对应的资源通过显示器呈现给用户。至此键入网址再按下回车的全过程就结束了。上述过程描述的是一种简单的请求-响应全过程真实的请求-响应情况可能要比上面描述的过程复杂很多。5、HTTP 请求特征从上面整个过程中我们可以总结出 HTTP 进行分组传输是具有以下特征支持客户-服务器模式简单快速客户向服务器请求服务时只需传送请求方法和路径。请求方法常用的有 GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单使得 HTTP 服务器的程序规模小因而通信速度很快。灵活HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。无连接无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户的应答后即断开连接。采用这种方式可以节省传输时间。无状态HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息则它必须重传这样可能导致每次连接传送的数据量增大。另一方面在服务器不需要先前信息时它的应答就较快。6、详解 HTTP 报文HTTP 报文的组成格式。HTTP 协议主要由三大部分组成序号组成部分描述1起始行start line描述请求或响应的基本信息2头部字段header使用 key-value 形式更详细地说明报文3消息正文entity实际传输的数据它不一定是纯文本可以是图片、视频等二进制数据其中起始行和头部字段并成为 请求头 或者 响应头统称为 Header消息正文也叫做实体称为 body。HTTP 协议规定每次发送的报文必须要有 Header但是可以没有 body也就是说头信息是必须的实体信息可以没有。而且在 header 和 body 之间必须要有一个空行CRLF如果用一幅图来表示一下的话应该是下面这样使用上面的那个例子来看一下 http 的请求报文如图这是 http://www.someSchool.edu/someDepartment/home.index 请求的请求头通过观察这个 HTTP 报文我们就能够学到很多东西首先我们看到报文是用普通 ASCII 文本书写的这样保证人能够可以看懂。然后我们可以看到每一行和下一行之间都会有换行而且最后一行请求头部后再加上一个回车换行符。每个报文的起始行都是由三个字段组成方法、URL 字段和 HTTP 版本字段。6.1 HTTP 请求 方法HTTP 请求方法一般分为 8 种一般最常用的方法也就是 GET 方法和 POST 方法GET 获取资源GET 方法用来请求访问已被 URI 识别的资源。指定的资源经服务器端解析后返回响应内容。也就是说如果请求的资源是文本那就保持原样返回POST 传输实体虽然 GET 方法也可以传输主体信息但是便于区分我们一般不用 GET 传输实体信息反而使用 POST 传输实体信息。我们一般最常用的方法也就是 GET 方法和 POST 方法其他方法暂时了解即可。6.2 HTTP 请求 URLHTTP 协议使用 URI 定位互联网上的资源。正是因为 URI 的特定功能在互联网上任意位置的资源都能访问到。URL 带有请求对象的标识符。在上面的例子中浏览器正在请求对象/somedir/page.html的资源。通过一个完整的域名解析一下 URL比如http://www.example.com:80/path/to/myfile.html?key1value1key2value2#SomewhereInTheDocument这个 URL 比较繁琐了吧你把这个 URL 搞懂了其他的 URL 也就不成问题了。6.2.1 http首先出场的是httphttp://告诉浏览器使用何种协议。对于大部分 Web 资源通常使用 HTTP 协议或其安全版本HTTPS 协议。另外浏览器也知道如何处理其他协议。例如mailto:协议指示浏览器打开邮件客户端ftp:协议指示浏览器处理文件传输。6.2.2 主机第二个出场的是主机www.example.com既是一个域名也代表管理该域名的机构。它指示了需要向网络上的哪一台主机发起请求。当然也可以直接向主机的 IP address 地址发起请求。但直接使用 IP 地址的场景并不常见。6.2.3 端口第三个出场的是端口前面说到两个主机之间要发起 TCP 连接需要两个条件主机 端口。它表示用于访问 Web 服务器上资源的入口。如果访问的该 Web 服务器使用HTTP协议的标准端口HTTP为80HTTPS为443授予对其资源的访问权限则通常省略此部分。否则端口就是 URI 必须的部分。上面是请求 URL 所必须包含的部分下面就是 URL 具体请求资源路径。6.2.4 路径第四个出场的是路径/path/to/myfile.html是 Web 服务器上资源的路径。以端口后面的第一个/开始到?号之前结束中间的 每一个/都代表了层级上下级关系。这个 URL 的请求资源是一个 html 页面。6.2.5 查询参数紧跟着路径后面的是查询参数?key1value1key2value2是提供给 Web 服务器的额外参数。如果是 GET 请求一般带有请求 URL 参数如果是 POST 请求则不会在路径后面直接加参数。这些参数是用 符号分隔的键/值对列表。key1 value1 是第一对key2 value2 是第二对参数。6.2.6 锚点紧跟着参数的是锚点#SomewhereInTheDocument是资源本身的某一部分的一个锚点。锚点代表资源内的一种“书签”它给予浏览器显示位于该“加书签”点的内容的指示。 例如在HTML文档上浏览器将滚动到定义锚点的那个点上在视频或音频文档上浏览器将转到锚点代表的那个时间。值得注意的是 # 号后面的部分也称为片段标识符永远不会与请求一起发送到服务器。6.3 HTTP 版本表示报文使用的 HTTP 协议版本。6.4 请求头部在表述完了起始行之后我们再来看一下请求头部现在我们向上找找到http://www.someSchool.edu/someDepartment/home.index来看一下它的请求头部Host:www.someschool.eduConnection:closeUser-agent:Mozilla/5.0Accept-language:fr这个请求头信息比较少首先 Host 表示的是对象所在的主机。你也许认为这个 Host 是不需要的因为 URL 不是已经指明了请求对象的路径了吗这个首部行提供的信息是Web 代理高速缓存所需要的。Connection: close表示的是浏览器需要告诉服务器使用的是非持久连接。它要求服务器在发送完响应的对象后就关闭连接。User-agent: 这是请求头用来告诉 Web 服务器浏览器使用的类型是Mozilla/5.0即 Firefox 浏览器。Accept-language告诉 Web 服务器浏览器想要得到对象的法语版本前提是服务器需要支持法语类型否则将会发送服务器的默认版本。下面我们针对主要的实体字段进行介绍具体的可以参考 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers MDN 官网学习HTTP 的请求标头分为四种通用标头、实体标头、请求标头和响应标头依次来进行详解。6.4.1 通用标头通用标头主要有三个分别是Date、Cache-Control和Connection6.4.1.1 DateDate 是一个通用标头它可以出现在请求标头和响应标头中它的基本表示如下Date:Wed,21 Oct 2015 07:28:00 GMT表示的是格林威治标准时间这个时间要比北京时间慢八个小时6.4.1.2 Cache-ControlCache-Control 是一个通用标头他可以出现在请求标头和响应标头中Cache-Control 的种类比较多虽然说这是一个通用标头但是又一些特性是请求标头具有的有一些是响应标头才有的。主要大类有可缓存性、阈值性、重新验证并重新加载和其他特性可缓存性是唯一响应标头才具有的特性我们会在响应标头中详述。阈值性这个我翻译可能不准确它的原英文是 Expiration我是根据它的值来翻译的你看到这些值可能会觉得我翻译的有点道理max-age: 资源被认为仍然有效的最长时间与 Expires 不同这个请求是相对于 request标头的时间而 Expires 是相对于响应标头。请求标头s-maxage: 重写了 max-age 和 Expires 请求头仅仅适用于共享缓存被私有缓存所忽略这块不理解看完响应头的 Cache-Control 再进行理解请求标头max-stale表示客户端将接受的最大响应时间以秒为单位。响应标头min-fresh: 表示客户端希望响应在指定的最小时间内有效。响应标头6.4.1.3 ConnectionConnection 决定当前事务一次三次握手和四次挥手完成后是否会关闭网络连接。Connection 有两种一种是持久性连接即一次事务完成后不关闭网络连接Connection:keep-alive另一种是非持久性连接即一次事务完成后关闭网络连接Connection:closeHTTP1.1 其他通用标头如下6.4.2 实体标头实体标头是描述消息正文内容的 HTTP 标头。实体标头用于 HTTP 请求和响应中。头部Content-Length、Content-Language、Content-Encoding是实体头。Content-Length 实体报头指示实体主体的大小以字节为单位发送到接收方。Content-Language 实体报头描述了客户端或者服务端能够接受的语言例如Content-Language:de-DEContent-Language:en-USContent-Language:de-DE,en-CAContent-Encoding 这又是一个比较麻烦的属性这个实体报头用来压缩媒体类型。Content-Encoding 指示对实体应用了何种编码。常见的内容编码有这几种 gzip、compress、deflate、identity 这个属性可以应用在请求报文和响应报文中Accept-Encoding:gzip,deflate //请求头Content-Encoding:gzip //响应头下面是一些实体标头字段6.4.3 请求标头上面给出的例子请求报文的属性比较少下面给出一个 MDN 官网的例子GET /home.html HTTP/1.1Host:developer.mozilla.orgUser-Agent:Mozilla/5.0(Macintosh;Intel Mac OS X 10.9;rv:50.0)Gecko/20100101 Firefox/50.0Accept:text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8Accept-Language:en-US,en;q0.5Accept-Encoding:gzip,deflate,brReferer:https://developer.mozilla.org/testpage.htmlConnection:keep-aliveUpgrade-Insecure-Requests:1If-Modified-Since:Mon,18 Jul 2016 02:36:04 GMTIf-None-Match:c561c68d0ba92bbeb8b0fff2a9199f722e3a621aCache-Control:max-age06.4.3.1 HostHost 请求头指明了服务器的域名对于虚拟主机来说以及可选的服务器监听的TCP端口号。如果没有给定端口号会自动使用被请求服务的默认端口比如请求一个 HTTP 的 URL 会自动使用80作为端口。Host:developer.mozilla.org上面的Accpet、Accept-Language、Accept-Encoding都是属于内容协商的请求标头我们会在下面说明。6.4.3.2 RefererHTTP Referer 属性是请求标头的一部分当浏览器向 web 服务器发送请求的时候一般会带上 Referer告诉服务器该网页是从哪个页面链接过来的服务器因此可以获得一些信息用于处理。Referer:https://developer.mozilla.org/testpage.html6.4.3.3 Upgrade-Insecure-RequestsUpgrade-Insecure-Requests 是一个请求标头用来向服务器端发送信号表示客户端优先选择加密及带有身份验证的响应。Upgrade-Insecure-Requests:16.4.3.4 If-Modified-SinceHTTP 的 If-Modified-Since 使其成为条件请求返回200只有在给定日期的最后一次修改资源后服务器才会以200状态发送回请求的资源。如果请求从开始以来没有被修改过响应会返回304并且没有任何响应体If-Modified-Since 通常会与 If-None-Match 搭配使用If-Modified-Since 用于确认代理或客户端拥有的本地资源的有效性。获取资源的更新日期时间可通过确认首部字段Last-Modified来确定。大白话说就是如果在Last-Modified之后更新了服务器资源那么服务器会响应200如果在Last-Modified之后没有更新过资源则返回 304。If-Modified-Since:Mon,18 Jul 2016 02:36:04 GMT6.4.3.5 If-None-MatchIf-None-Match HTTP请求标头使请求成为条件请求。 对于 GET 和 HEAD 方法仅当服务器没有与给定资源匹配的ETag时服务器才会以200状态发送回请求的资源。 对于其他方法仅当最终现有资源的ETag与列出的任何值都不匹配时才会处理请求。If-None-Match:c561c68d0ba92bbeb8b0fff2a9199f722e3a621aETag 属于响应标头后面进行介绍。6.4.3.6 内容协商内容协商机制是指客户端和服务器端就响应的资源内容进行交涉然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的标准。内容协商主要有以下3种类型1服务器驱动协商Server-driven Negotiation这种协商方式是由服务器端进行内容协商。服务器端会根据请求首部字段进行自动处理。2客户端驱动协商Agent-driven Negotiation这种协商方式是由客户端来进行内容协商。3透明协商Transparent Negotiation是服务器驱动和客户端驱动的结合体是由服务器端和客户端各自进行内容协商的一种方法。内容协商的分类有很多种主要的几种类型是 Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。6.4.4 响应标头响应标头是可以在 HTTP 响应种使用的 HTTP 标头这听起来是像一句废话不过确实是这样解释。并不是所有出现在响应中的标头都是响应标头。还有一些特殊的我们上面说过有通用标头和实体标头也会出现在响应标头中比如 Content-Length 就是一个实体标头但是在这种情况下这些实体请求通常称为响应头。下面以一个例子为例和你探讨一下响应头。200 OKAccess-Control-Allow-Origin:*Connection:Keep-AliveContent-Encoding:gzipContent-Type:text/html;charsetutf-8Date:Mon,18 Jul 2016 16:06:00 GMTEtag:c561c68d0ba92bbeb8b0f612a9199f722e3a621aKeep-Alive:timeout5,max997Last-Modified:Mon,18 Jul 2016 02:36:04 GMTServer:ApacheSet-Cookie:mykeymyvalue;expiresMon,17-Jul-2017 16:06:00 GMT;Max-Age31449600;Path/;secureTransfer-Encoding:chunkedVary:Cookie,Accept-Encodingx-frame-options:DENY6.4.4.1 响应状态码首先出现的应该就是200 OK这是 HTTP 响应标头的状态码它表示着响应成功完成。HTTP 响应标头的状态码有很多并做了如下规定以2xx为开头的都表示请求成功响应状态码含义200成功响应204请求处理成功但是没有资源可以返回206对资源某一部分进行响应由Content-Range 指定范围的实体内容。以3xx为开头的都表示需要进行附加操作以完成请求状态码含义301永久性重定向该状态码表示请求的资源已经重新分配 URI以后应该使用资源现有的 URI302临时性重定向。该状态码表示请求的资源已被分配了新的 URI希望用户本次能使用新的 URI 访问303该状态码表示由于请求对应的资源存在着另一个 URI应使用 GET 方法定向获取请求的资源304该状态码表示客户端发送附带条件的请求时服务器端允许请求访问资源但未满足条件的情况307临时重定向。该状态码与 302 Found 有着相同的含义以4xx的响应结果表明客户端是发生错误的原因所在状态码含义400该状态码表示请求报文中存在语法错误。当错误发生时需修改请求的内容后再次发送请求。401该状态码表示发送的请求需要有通过 HTTP 认证BASIC 认证、DIGEST 认证的认证信息403该状态码表明对请求资源的访问被服务器拒绝了404该状态码表明服务器上无法找到请求的资源以5xx为开头的响应标头都表示服务器本身发生错误状态码含义500该状态码表明服务器端在执行请求时发生了错误503该状态码表明服务器暂时处于超负载或正在进行停机维护现在无法处理请求6.4.4.2 Access-Control-Allow-Origin一个返回的 HTTP 标头可能会具有 Access-Control-Allow-Origin Access-Control-Allow-Origin 指定一个来源它告诉浏览器允许该来源进行资源访问。 否则-对于没有凭据的请求 *通配符告诉浏览器允许任何源访问资源。例如要允许源 https://mozilla.org 的代码访问资源可以指定Access-Control-Allow-Origin:https://mozilla.orgVary:Origin如果服务器指定单个来源而不是*通配符的话 则服务器还应在 Vary 响应标头中包含Origin以向客户端指示 服务器响应将根据原始请求标头的值而有所不同。6.4.4.3 Keep-Alive上面我们提到HTTP 报文标头会分为四种这其实是按着上下文来分类的。还有一种分类是根据代理进行分类根据代理会分为端到端头和逐跳标头。而 Keep-Alive 表示的是 Connection 非持续连接的存活时间如下Connection:Keep-AliveKeep-Alive:timeout5,max997Keep-Alive 有两个参数它们是以逗号分隔的参数列表每个参数由一个标识符和一个由等号 分隔的值组成。timeout指示空闲连接必须保持打开状态的最短时间以秒为单位。max指示在关闭连接之前可以在此连接上发送的最大请求数。上述 HTTP 代码的意思就是限制最大的超时时间是 5s 和 最大的连接请求是 997 个。

相关文章:

HTTP 基础

文章目录1、认识 HTTP1.1 超文本2、与 HTTP 有关的组件2.1 Web 服务器3、与 HTTP 有关的协议3.1 TCP3.2 DNS3.3 URI / URL3.4 HTTPS4、HTTP 请求响应过程5、HTTP 请求特征6、详解 HTTP 报文6.1 HTTP 请求 方法6.2 HTTP 请求 URL6.2.1 http6.2.2 主机6.2.3 端口6.2.4 路径6.2.5 …...

多线程——基础

普通线程与多线程示意图 通常 系统中运行的程序/软件当做一个进程[迅雷],迅雷里面多个任务看做多个线程。 总结:一个程序一个进程,一个进程可多个线程。线程是CPU调度和执行的的单位。多线程中至少一个为主线程 注意:真正多线程…...

Verilog基础:task和function的使用(一)

相关文章 Verilog基础专栏https://blog.csdn.net/weixin_45791458/category_12263729.html 一、前言 任务(task)和函数(function)即提供了从不同位置执行公共过程的能力(因为这样可以实现代码共享),也提供了把大过程分解成小过程的能力&…...

从演示到实战:基于快马平台构建一个功能完整的AI绘画社区应用

今天想和大家分享一个很有意思的实战项目 - 在InsCode(快马)平台上构建一个功能完整的AI绘画社区应用。这个想法来源于阿里悟空官网展示的AI绘画应用场景,但我们要做的是更贴近真实产品的综合性解决方案。 项目整体规划 首先需要明确,一个完整的AI绘画社…...

新手零门槛部署openclaw:快马ai生成手把手配置教程与验证代码

最近在尝试部署openclaw这个开源爬虫框架时,发现网上资料比较零散,对新手不太友好。经过一番摸索,我总结了一套适合零基础同学的部署方案,整个过程在InsCode(快马)平台上测试通过,特别适合想快速上手的朋友。 硬件和系…...

手机怎么把deepseek对话导出

手机端 DeepSeek 对话怎么导出?原生功能缺口与三方工具全景对比摘要:根据 QuestMobile 2025年数据,DeepSeek 日活用户于2月1日突破3000万,成为史上最快达成该里程碑的应用。用户量激增后,“对话如何导出”"记录怎…...

从“只会聊天“到“全能员工“:2026年你需要了解的AI黑话(收藏版:小白程序员必备)

AI不再是一个聊天框。它已经进化成你的数字化同事。而你需要学会和它相处的"行话"。 引言:你的AI同事已经到岗还记得2023年人们第一次用ChatGPT的时候吗?大家的反应是:"哇,AI能写诗和画画!"然后就…...

【CW32无线抄表项目】W25Q+CW32程序示例

资料下载: https://telesky.yuque.com/bdys8w/01/zr02y6vd0r7mnzcl?singleDoc# 参考仓库: https://gitee.com/Armink/SFUD 一、程序分析 硬件总线映射(引脚与时钟的“避坑点”) #define FLASH_SPIx CW_SPI2 // 注意&…...

告别慢查询:用快马ai智能生成postgresql性能优化与索引方案

告别慢查询:用快马AI智能生成PostgreSQL性能优化与索引方案 在电商系统中,订单查询是最常见的操作之一。随着业务量的增长,数据库查询性能往往会成为瓶颈。最近我在优化一个电商平台的订单查询模块时,发现几个典型的性能问题&…...

SELinux 导致 K8s 日志 logrotate 无法轮询压缩

1. 问题现象在某 Linux 环境中,Kubernetes 日志无法自动轮询、无法压缩归档,具体表现如下:/var/log/kubernetes/kubelet.log 持续增大,达到 90MB 不再切割日志压缩包停留在某一时间点,之后不再生成新归档系统日志&…...

收藏必备!小白程序员轻松入门大模型,带你理清AI核心概念全框架

AI浪潮已经刮了一年多,身边越来越多人聊AI,张口就是“agent”“skill”,听得人只能点头附和,似懂非懂?其实不是听不懂,而是没有把这些概念串起来,告诉你它们到底是什么、彼此有啥关系。 咱不聊复…...

ObsPy地震学工具箱:从数据采集到科学发现的完整Python解决方案

ObsPy地震学工具箱:从数据采集到科学发现的完整Python解决方案 【免费下载链接】obspy ObsPy: A Python Toolbox for seismology/seismological observatories. 项目地址: https://gitcode.com/gh_mirrors/ob/obspy ObsPy是地震学领域的Python工具箱&#xf…...

React Native Boilerplate组件库终极指南:AssetByVariant与IconByVariant高级用法

React Native Boilerplate组件库终极指南:AssetByVariant与IconByVariant高级用法 【免费下载链接】react-native-boilerplate A React Native template for building solid applications 🐙, using JavaScript 💛 or Typescript &#x1f49…...

革命性终端网站构建工具LiveTerm:5分钟打造个性化网页终端

革命性终端网站构建工具LiveTerm:5分钟打造个性化网页终端 【免费下载链接】LiveTerm 💻 Build terminal styled websites in minutes! 项目地址: https://gitcode.com/gh_mirrors/li/LiveTerm LiveTerm是一款革命性的终端网站构建工具&#xff0…...

WireGuard排除私网地址聚类表(掩码形式)

事情缘由: 玩过WireGuard的都知道,它的配置文件是如下形式的: [Interface] PrivateKey *********************** Address **********/32 DNS 8.8.8.8 MTU1420 [Peer] PublicKey ************************ Endpoint 8.8.8.8:12345 A…...

绿联 安装SeaTable在线协同表格

绿联 安装SeaTable在线协同表格 1、镜像 seatable/seatable-developer:latest 2、安装 2.1、基础设置 重启策略:容器退出时总是重启容器。 2.2、网络 网络选择桥接(bridge)。 2.3、存储空间 装载路径/shared不可变更。 2.4、端口设置 容器端口固定80&#x…...

Pi0机器人控制实战:从模型下载到Web演示完整流程

Pi0机器人控制实战:从模型下载到Web演示完整流程 1. 项目概述与核心价值 Pi0是一个创新的视觉-语言-动作流模型,专为通用机器人控制设计。这个开源项目将深度学习与机器人技术相结合,通过自然语言指令和视觉输入来生成精确的机器人动作。项…...

DeepSeek架构深度解析:从原理到实践的完整指南

一、引言 2025年1月,DeepSeek-R1的发布在全球AI领域引发巨大震动——一个开源模型以远低于主流闭源模型的训练成本,实现了与之相匹敌的推理性能,直接导致英伟达股价单日下跌17%。在随后的时间里,DeepSeek团队持续迭代&#xff0c…...

数字记忆守护者:GetQzonehistory全攻略

数字记忆守护者:GetQzonehistory全攻略 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 一、数字记忆危机:我们正在失去什么? 在这个信息爆炸的时代&…...

nfs-subdir-external-provisioner核心配置参数详解:onDelete、archiveOnDelete、pathPattern

nfs-subdir-external-provisioner核心配置参数详解:onDelete、archiveOnDelete、pathPattern 【免费下载链接】nfs-subdir-external-provisioner Dynamic sub-dir volume provisioner on a remote NFS server. 项目地址: https://gitcode.com/gh_mirrors/nf/nfs-s…...

OpenClaw+Phi-3-vision-128k-instruct数据标注:半自动生成图像标签训练集

OpenClawPhi-3-vision-128k-instruct数据标注:半自动生成图像标签训练集 1. 为什么需要半自动数据标注 去年我在做一个宠物品种识别项目时,最头疼的就是数据标注环节。手动给5000多张猫狗图片打标签,不仅耗时耗力,还容易因为疲劳…...

Git-Credential-Manager-for-Windows安全存储机制深度解析:如何保护你的Git凭证安全 [特殊字符]

Git-Credential-Manager-for-Windows安全存储机制深度解析:如何保护你的Git凭证安全 🔐 【免费下载链接】Git-Credential-Manager-for-Windows Secure Git credential storage for Windows with support for Visual Studio Team Services, GitHub, and B…...

WebGLStudio.js虚拟文件系统完全指南:如何高效管理3D资源

WebGLStudio.js虚拟文件系统完全指南:如何高效管理3D资源 【免费下载链接】webglstudio.js A full open source 3D graphics editor in the browser, with scene editor, coding pad, graph editor, virtual file system, and many features more. 项目地址: http…...

文字的编码方式————不同UTF之间的区别

目录 1. 编码与字体 A. ASCII(American Standard Code for Information Interchange) B. ANSI C. UNICODE 2 . UNICODE 编码实现 (1)UTF-16 a. UTF-16 LE b. UTF-16 BE (2)UTF-8 (3&#xff…...

Protocol

在Python的世界里,Protocol这个概念,其实挺有意思的。它不是那种一上来就让人眼前一亮的语法糖,也不是什么解决具体问题的现成工具。它更像是一种约定,一种让代码“说清楚自己”的方式。如果你写过一段时间Python,尤其…...

TypeVar

## 关于Python里的TypeVar,你可能想知道的 最近在整理一些旧代码,翻到几年前写的一个通用缓存工具类,里面用到了TypeVar。当时注释里只简单写了一句“用于类型提示”,现在回头看,觉得可以展开聊聊这个东西。 TypeVar是…...

如何用Venera打造个性化漫画阅读体验?

如何用Venera打造个性化漫画阅读体验? 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 你是否曾经感到市面上的漫画阅读应用千篇一律,界面设计缺乏个性?或者希望在深夜阅读时,应…...

全方位解析GBFR Logs:《碧蓝幻想:Relink》战斗数据分析平台

全方位解析GBFR Logs:《碧蓝幻想:Relink》战斗数据分析平台 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_mirrors/gb/gbf…...

性能测试中的“假阳性”:如何识别与避免?

在软件性能测试领域,“假阳性”是一个令测试团队既头疼又难以回避的挑战。它指的是测试报告或监控工具错误地发出性能警报,声称系统存在性能瓶颈或缺陷,但经过深入分析或在实际环境中验证,发现系统运行状态良好,并不存…...

Node.js企业级应用部署与运维完整方案:Google Cloud Platform实战指南

Node.js企业级应用部署与运维完整方案:Google Cloud Platform实战指南 【免费下载链接】nodejs-docs-samples Node.js samples for Google Cloud Platform products. 项目地址: https://gitcode.com/gh_mirrors/no/nodejs-docs-samples 想要构建稳定可靠的No…...