浅谈网络通信(4)

news2024/10/7 14:28:20

文章目录

  • 一、应用层常见协议——HTTP[!]
    • 1.1 HTTP报文格式
      • 1.1.1、HTTP协议中的方法[!]
      • 1.1.2、请求
        • 1.1.2.1、构造 GET 请求的几种方式
        • 1.1.2.2、构造 POST 请求的几种方式
        • 1.1.2.3、请求头(header)
        • 1.1.2.4、Content-Type常见取值
      • 1.1.3、响应
        • 1.1.3.1、HTTP响应详解
      • 1.1.4、HTTP协议中的细节
    • 1.2、如何构造HTTP请求
      • 1.2.1、浏览器自己构造
      • 1.2.2、form表单
      • 1.2.3、ajax
        • 1.2.3.1、那如何在代码中使用 ajax 构造 http 请求呢??
    • 1.3、什么是HTTPS?
    • 1.3.1、HTTPS 的加密/工作过程

一、应用层常见协议——HTTP[!]

HTTP,应用层里最广泛使用的协议之一。
学习HTTP协议,主要是学习他的报文格式。

1.1 HTTP报文格式

是文本格式的协议。

一般会使用 抓包工具 —— Fiddler ,来分析HTTP协议的格式。

1.1.1、HTTP协议中的方法[!]

HTTP协议中的方法,属于 HTTP 中非常重要的部分。可以把 方法 理解成 你这个请求想干什么

GET
POST
(GET和POST 最常用,其他不常用)
PUT
HEAD
DELETE
OPTIONS
TRACE
CONNECT
LINK
UNLINK

1.1.2、请求

第一部分叫首行:由方法、URL、版本号 组成。

第二部分叫header(请求头):header 里 每一行是一个键值对,键值对使用 : 分隔键和值。

第三部分叫空行:是请求头的结束标记。

第四部分叫正文/body:承载一些网络通信时要传输的一些具体数据,可能是 JSON 格式,也可能是其他格式的。

1.1.2.1、构造 GET 请求的几种方式

(1)、浏览器里直接输入 URL,此时就会触发 GET 请求
(2)、html 里面的 link、a标签、img、script 都会触发一个 GET 请求。像 link、img、script 里面的属性 href/src 都会引用一个外部资源,本质上就是浏览器会重新发送一个GET请求,来从服务器拿到对应的数据。

一个浏览器加载出一个页面,往往要经过多重 HTTP 请求的交互。浏览器加载页面时,往往要加载这个页面依赖的很多其他资源,比如 css、图片、js…加载这些资源,会消耗不少时间。为了提高页面加载效率,浏览器就会对加载过的这些 css、图片、js … 进行缓存(保存在本地的磁盘上)。下次再访问同一个网页,之前的 css、图片、js… 就不必从网络加载,而是直接读硬盘即可。此时我们就可以通过 ctrl + shift + f5 强制刷新,就可以让浏览器不走缓存,直接强制从网络上重新获取资源。

(3)、form表单
html里的form标签,可以构造出 GET 请求。

(4)、ajax

GET请求的特点:

(1)、GET请求的 body 一般为空,当使用 GET 请求时,想把浏览器的一些参数放在请求中一块传给服务器,就可以将这些参数以查询字符串的形式传过去,但是一般传递的参数只能一些简单的参数,如果是一些保密、重要的参数放在浏览器的URL里传递的话,不安全,极易被获取到!

(2)、GET 请求没有长度上限,但是浏览器和HTTP服务器在实现时,可能是有长度上限的,GET请求的长度可以在代码中设置。

1.1.2.2、构造 POST 请求的几种方式

(1)、form
(2)、ajax

POST请求的特点:
(1)、URL通常没有查询字符串
(2)、也是有若干的请求头,以键值对的形式
(3)、body是有的。body用来携带浏览器想要传递给服务器的信息,或者是服务器返回的响应。body的格式有很多。

1.1.2.3、请求头(header)

即请求头。header 里都是键值对,这些键值对都是标准规定的,有特定的含义。当然,header 里也可以自定义一些键值对。

下面主要介绍header里的一些常见键值对:

(1)、Host:表示服务器主机的ip地址(域名)和端口号。端口号可以省略,省略则表示默认值。

那么为什么URL里已经含有服务器主机的ip地址和端口号了,为什么请求的header里还需要使用键值对表示服务器主机ip地址和端口号呢??
这是因为:URL里的ip和端口,和Host里的ip和端口有可能会出现不一样的情况。当我们访问的过程中经过了代理,就有可能不一样了。
在这里插入图片描述
(2)、Content-Length:表示请求的body中的数据长度
Content-Type: 表示请求的body中的数据格式
这两个字段,不一定必须有,但是一旦出现,就是成对出现。如果请求有body,就一定有这两字段。

前面我们知道TCP协议是面向字节流的,那么面向字在这里插入图片描述
节流就会产生粘包问题,我们知道解决粘包问题的两个办法是:
1)、定义分隔符
2)、约定报文的长度。使用TCP协议传输数据时,数据首先会到达接收方的缓冲区:

1.1.2.4、Content-Type常见取值

(1)、application/x-www-form-urlencoded
通过 form 表单(html的form标签)构造的请求,其Content-Type 就是 application/x-www-form-urlencoded。这个格式可以放多个键值对,每个键和值之间通过 = 分隔,
(2)、mutipart/form-data
这个格式主要是上传文件时会出现。
(3)、application/json
数据为 json格式,此时body的形式形如此:
{“username” : “123456789”,“password” : “xxxxx”,“code” : “jw81”,“uuid” : “fwdsbjkndijvhfguvfykbvu”}

(3)、User-Agent(简称 UA
在这里插入图片描述
(4)、Referer
指的是当前这个页面从哪个上级页面跳转过来的。
在浏览器地址栏里输入一个 URL,这个请求的请求头里就没有Referer
直接点收藏夹,也没有Referer

(5)、Cookie[!]
每个Cookie都是一个键值对,按照域名为维度组织的。是请求头中最重要的一个字段。是让浏览器在本地存储数据的一种机制。

在网页端,网页与服务器进行交互,浏览器为了客户主机数据安全,禁止网页的js访问电脑的资源,但是浏览器也需要存储一些特殊数据至本机硬盘(持久化存储),因此就使用 Cookie 机制来让浏览器存储数据至本地。

5.1、Cookie 从哪里来?? Cookie 从服务器里来,存在浏览器里。
在这里插入图片描述
像上面的Cookie,是我访问了bing浏览器之后,由bing服务器返回的Cookie。

在服务器返回的响应报文中,可以在响应头 header 中包含一个或多个的 Set-Cookie 这样的资源(字段) , Set-Cookie 是 key,value 是 Cookie里面的值。

浏览器看到 Set-Cookie 就会把这样的数据给保存至浏览器本地。

5.2、Cookie 到哪里去??
来自于服务器,存储于浏览器,还是要再回到服务器。
当浏览器保存了 cookie 之后,下次浏览器访问同一个网站,就会把之前的 cookie 再通过 http 请求的请求头 header 中的 cookie 带过去给服务器。

那为什么服务器将 cookie 传给浏览器,浏览器保存至本地后,浏览器又需要将 cookie 再传回给服务器,绕这么一大圈的意义何在??因为服务器要服务的客户端是很多的,不同的客户端应该要有不同的数据,如果一个客户端发送的请求里携带Cookie给服务器,服务器校验这个客户端传过来的Cookie,发现这个Cookie已经过期了,或者这个Cookie是别的客户端在使用的,此时的客户端其登陆状态就会维持失败。

5.3、Cookie典型的应用场景(场景不唯一)
1、维持客户端登陆状态(刚需)
在某个网站上登陆成功后,浏览器就会记住当前登录用户的身份信息,然后接下来访问网站里的其他页面,服务器也能知道是哪个客户端在登录。
在这里插入图片描述
其实大家也可以把Cookie看成医院的就诊卡/码,当你第一次到一个医院就诊时,就需要在该医院的智慧公众号上注册填写个人信息,填写完后医院的公众号就会给你生成一个条形的电子就诊码,此时你就可以使用这个就诊码在医院看病了。不论是到医院的哪个科室,哪个检查地,哪个药房,你都需要先扫就诊码才能看病/检查/取药,这个就诊码里就包含了你个人的身份信息,过往就诊史,病史…

就诊码是从医院的系统来的,你使用这个就诊码去看病,那这个就诊码最终也还是要回到医院系统。一个医院系统,会为很多用户提供就诊码/卡,每个用户的就诊码/卡上的身份信息都不相同。如果使用当前医院的就诊卡/码到其他医院就诊,大概率是行不通的,因为当前的就诊码/卡只针对当前医院有效。对于我们的网页来说,也是一样的,当前身份标识只在当前网站有效,如果拿着当前的身份信息到别的网站(域名)访问,行不通。所以就诊码跟我们学习的Cookie、Set-Cookie十分类似。

1.1.3、响应

第一部分叫首行:由版本号、状态码、状态码描述 组成。

第二部分叫header(响应头):header 里 每一行是一个键值对,键值对使用 : 分隔键和值。

第三部分叫空行:是响应头的结束标记。

第四部分叫正文/body:承载一些网络通信时要传输的一些具体数据,可能是 JSON 格式,也可能是其他格式的,比如 css、html、js,图片…。

1.1.3.1、HTTP响应详解

(1)、状态码
是一个数字,该数字描述了当前这次请求的 “状态”,是成功的,还是失败的,失败的原因是什么。HTTP状态码有明确规定的,有很多很多种类:
1)、200(表示访问成功)、
2)、404(Not Found)一般产生该错误是由于访问路径写错了,路径就表示你要访问服务器上的哪个资源,服务器上没有你想访问的资源,就会返回404。由于404可以自定义,因此各个网站的404样式可能会有差别)
3)、403(Forbidden 由于访问没有权限,因此访问被拒绝)
4)、500(服务器内部错误,即服务器代码执行过程中,出异常了)
5)、504(访问超时。即服务器请求量大时,服务器负荷重,因此容易出现访问超时)
6)、302(重定向:访问一个旧的 URL,自动转移到新的URL上。应用场景:1、域名过期)

1.1.4、HTTP协议中的细节

1、URL:唯一资源定位符(用这个来找到网络上的资源)
2、URI:唯一资源标识符(用这个来区分一个网络上的资源)
3、那URL到底是由什么组成的??是什么样子的??是通过 “RFC标准文档” 进行描述的。此文档还描述了很多网络中的协议标准,包括 IP、TCP、UDP、HTTP…
在这里插入图片描述
4、URL encode(编码)/decode(解码)[!]
URL中允许包含一些特殊符号,比如:/ ?@ # 等。但是万一查询字符串的 value 中,也出现了这些特殊符号会怎么样??其实这就和JAVA代码中自定义的变量不能和关键字相同是一个道理。encode:本质上是把特殊符号进行转义,转移的范围不光特殊符号,还有汉字…

转义的规则:
(1)、URL encode (编码):就是把待转义的字符串,每个字符的十六进制表示,每个字节前加上个%。(一个中文是一个字符,一个中文3个字节)
(2)、URL decode(解码):把转义后的字符还原成原始字符

注意: URL encode 这里,必须牢记。一般在进行URL时,其查询字符串的value必须进行 URL encode ,否则项目上线极有可能造成损失!

1.2、如何构造HTTP请求

1.2.1、浏览器自己构造

地址栏里写URL,构造出GET请求;点击 a 标签,也会构造 GET 请求;img、link、script,也会构造 GET 请求。但这些没多大用。

1.2.2、form表单

使用< form >< /form>标签构造请求,例子:< form action="www.baidu.com " method=“get”>< /form> ,form标签里有两个重要的属性,一个是 action,表明指定的URL,一个是method,表示当前请求所使用的方法(此处只支持get和post)。form标签里面可以写一些具体想要传输的信息。

<form action="www.baidu.com" method="post">
	<input type="text" name="username">
	<input type="text" name="password">
	<input type="submit" value="提交">
</form>

借助这些input标签来给请求构造键值对结构的数据,每个input就对应一个键值对,input里的name属性就是 ,input 里用户输入的内容,就是 。如果方法是 get,上述键值对就是放在URL的查询字符串中;如果方法是 post,上述键值对就是放在body中。此时 Content-Tyoe 是 applicaton/x-www-form-urlencoded

1.2.3、ajax

ajax( Asynchronous javascript And XML),Asynchronous 这个词语表示异步的,与我们之前学过的关键词 synchronized 同步的,互为反义词,同步这个词,有很多种含义。比如:set 可以是 设置的意思,也可以是集合的意思;entry 可以是条目的意思,也可以是入口的意思;heap 可以是 数据结构的堆,也可以是JVM的堆,也可以是操作系统的堆;而 同步 也有多种含义,比如 多线程这里的同步指的是 “ 互斥 ”,某个线程对某段代码加锁后,其他线程就不能继续加锁了,需要等待锁释放才能进行加锁;而在网络通信/IO操作时,也涉及到同步,同步的含义是:谁发起的请求,谁负责接收结果,就比如说我们到餐馆点餐,餐点做好后,我们就会听到 “请 xx 号取餐”,如果此时正是你的餐点,你就需要到餐台拿餐。我们点的餐,我们要自己去拿。而 异步,是和同步相反的,表示的是发起请求的主体,不接受接收结果,而是有其他人推送过来。即:我们到餐馆吃法,点完餐后,餐点做好了,不用我们自己去拿,而是由服务员端过来给我们。

各种 http 方法都能构造ajax(即:form只支持get 和 post,但是ajax还支持 put、delete…),form 构造的 http 请求 一定会触发页面跳转,ajax 默认发起的请求不会引起跳转(页面跳转时等待时间长就会耗费一定资源),当然,也可以手动控制跳转。

就是说,ajax 可以做到:1、异步响应。2、局部刷新

1.2.3.1、那如何在代码中使用 ajax 构造 http 请求呢??

ajax api 属于浏览器原生自带的,但原生的 ajax api 用起来不太方便便捷,因此就可以使用第三方库 jQuery (js里最知名的第三方库之一) 封装好的api,代替原生的api。

我们可以直接通过网络地址将 jQuery 引入到我们的代码中,在浏览器里搜索 jquery cdn,或者直接使用这个网站:链接 ,在里面复制 cdn 即可。
在这里插入图片描述
在这里插入图片描述
使用ajax发起的请求:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>testAjax</title>
</head>

<!-- 当前写的ajax请求直接在浏览器运行,会报错,涉及一个跨域问题:CORS。 -->
<body>
    <!-- 通过网络地址引入 jQuery -->
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script>
        // 使用 $ 号来引用 ajax。
        $.ajax({
            // 请求的方法
            type: "get",
            //  请求的URL
            url: "https://www.sogou.com",
            // 防止请求的 body,一般习惯是post会有body,如果没有body,data不写
            data: "http 请求的 body",
            contentType:"x-www-form-urlencoded",
              // 这是一个回调函数
            success:function(body){
                // 服务器返回一个正确的响应 ok这样的
                // 就会由浏览器调用这个 success 对应的函数,来处理响应
                // 参数 body 就是响应的正文
            },
            // 这是一个回调函数
            error:function(){
                // 服务器返回一个错误的响应
                // 就会由浏览器调用这个 error 对应的函数,来处理响应
                // 参数 body 就是响应的正文
                console.log("error");
            }
        });
    </script>
</body>
</html>

在这里插入图片描述
跨域问题:一个页面在域名a之下,尝试通过 ajax 访问域名b里的资源。(例子:类似于 103班的同学跑去住了属于104班的宿舍,这是不合理的)

那上面3种构造 http 请求的方式,都是基于前端 (围绕浏览器) 里构造的,但是我们构造 http 请求,必须通过前端的方式构造吗??还有没有其他方式??有!

但凡是某个编程语言,可以操作网络(能够进行socket 编程) ,就一定能够构造 http 请求。(反正就是,既可以通过基于前端构造 http 请求,也可以 通过写代码的方式构造http请求)

有一个专门用来构造 http 请求的第三方工具: postman,这个工具主要用来帮助我们进行 接口测试 (即后端开发人员开发一个服务器,需要提供一些 HTTP 的接口(这些接口可以接收一些http请求,返回不同的响应),后端开发人员想要验证自己写的这些HTTP接口是否正确,就可以使用 postman 给自己的服务器发请求测试一下自己写的这些接口)

1.3、什么是HTTPS?

为了反制运营商劫持保护网络上传输的数据安全,http 开始出现加密版本,即 https。

加密和解密。

1、明文:要传递的原始信息
2、密文:对原始信息进行加工后,即使信息落入黑客手里,黑客也不知道是什么意思
3、密钥: 进行加密、解密的关键。密文如何还原成明文,还需要靠这个密钥;如何将明文变成密文,也需要依靠密钥。
4、加密:使用密钥将明文变成密文。
5、解密:使用密钥将密文变成明文。
6、对称加密:加密和解密使用同一个密钥
7、非对称加密:加密和解密使用不同密钥。有一对密钥,一个用来加密,另一个用来解密。

最简单的加密方法:对称加密。最简单的对称加密方法,就是:按位异或。

1.3.1、HTTPS 的加密/工作过程

在这里插入图片描述
一个服务器,要给很多客户端提供服务,所以如果所有客户端都使用同一个密钥进行加密、解密,此时就相当于没有密钥。

因此,此时解决的典型的做法就是,每个客户端在连接服务器之初,客户端先自己生成密钥,然后进行通信时,先将自己的密钥发给服务器。

在这里插入图片描述

如果使用上述 客户端生成密钥的方式,客户端就需要将密钥传给服务器,如果明文传递密钥,就会导致密钥被黑客拿到,此时后续的加密便形同虚设。因此就要考虑对密钥进行加密,再生成一个密钥来加密密钥??这种做法不适用。

我们上面讲的加密方法是 对称加密 。

此时我们想要解决上述加密产生的问题,就需要引入 非对称加密。非对称加密:加密一个密钥,解密一个密钥,这两个密钥是成对的,知道一个密钥,却无法推断成另一个密钥。可以使用A密钥加密,B密钥解密;也可以使用B密钥加密,配对的密钥A解密。

可以让服务器使用非对称加密生成一对密钥,一个是任何人都能获取到的 公钥,一个是只有服务器自己知道的私钥。客户端先从服务器拿到其公钥,然后使用公钥对自己使用对称加密产生的密钥进行加密,此时由于虽然公钥是公开的,但是私钥只有服务器自己知道,此时就只有服务器能拿着私钥对上述请求解密。

在这里插入图片描述
虽然服务器生成一对密钥,一个是公钥,一个是私钥,但是此时黑客还是能通过 中间人攻击获取密钥,那么如何防止 中间人攻击 入侵?

中间人攻击就像是: 假如有一天你想约你的小学朋友小李出去玩,但是你联系不上他,你只能联系上小明,于是你就让小明帮你约小李,但是小明给小李传话时却说:小李,小a说他不喜欢约你出去玩。

那么此时就需要引入 证书 ,来反制中间人攻击。中间人攻击就是通过伪造服务器公钥来窃取数据,因此 证书 是服务器用来证明自己当前的公钥是自己的公钥,而不是伪造的,如果当前服务器的证书不合格,客户端就能知道当前服务器有风险,从而选择不与其通信。

在这里插入图片描述
在这里插入图片描述
上述是 https 的加密机制: 对称加密+非对称加密+证书 ,这套流程不是 https 独有的,是属于一个专门的协议:SSL/TLS。即 HTTPS = HTTP + SSL,很多加密场景都会涉及到 SSL。

对称加密:数据传输安全的基本保证。
非对称加密:为了能够安全传输对称密钥。
证书:防止中间人攻击。

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

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

相关文章

加速人工智能“拔节生长”,为发展注入“智慧”动能

人工智能是新一轮科技革命和产业变革的重要驱动力量&#xff0c;将对全球经济社会发展和人类文明进步产生深远影响。6月20日&#xff0c;以“智行天下 能动未来”为主题的2024世界智能产业博览会在天津开幕&#xff0c;全方位展示了人工智能、智能网联汽车、智能制造等多领域的…

文档格式批量转换-LibreOffice安装及使用(Windows)

一、LibreOffice的下载 下载网址&#xff1a; 主页 | LibreOffice 简体中文官方网站 - 自由免费的办公套件 点击Windows版本下载 安装下载的文件 安装类型选择自定义&#xff0c;下一步修改软件安装的位置&#xff0c;为了不占用C盘空间&#xff0c;我安装在了D盘。 文件类…

【华为OD机试|01】最远足迹(Java/C/Py/JS)

目录 一、题目介绍 1.1 题目描述 1.2 备注&#xff1a; 1.3 输入描述 1.4 输出描述 1.5 用例 二、Java代码实现 2.1 实现思路 2.2 详细代码 2.3 代码讲解&#xff1a; 三、C语言实现 3.1实现步骤 3.2 实现代码 3.3 代码详解 四、Python实现 4.1 实现步骤 4.2 …

MySQL之可扩展性(四)

可扩展性 向外扩展 分片?还是不分片&#xff1f; 这是一个问题&#xff0c;对吧&#xff1f;答案很简单:如非必要&#xff0c;尽量不分片。首先看是否能通过性能调优或者更好的应用或数据库设计来推迟分片。如果能足够长时间地推迟分片&#xff0c;也许可以直接购买更大地服…

Linux系统启动流程

init程序类型&#xff1a; ①、SysV&#xff1a;init&#xff0c;centos 5之前&#xff0c;配置文件/etc/init.d/ ②、Upstart: init&#xff0c;centos 6&#xff0c;配置文件/etc/init.d/ /etc/init/ ③、Systemd:Systemd&#xff0c;centos 7&#xff0c;配置文件/usr/li…

JavaScript的学习之自增自减

目录 一、自增 第一种&#xff1a;a 第二种&#xff1a;a 二、自减 一、自增 定义&#xff1a;可以是变量在自身的基础上增加1 自增分为两种&#xff1a;后&#xff08;a&#xff09;和前&#xff08;a&#xff09; 无论是a和a都会立即使原变量的值增1&#xff0c;不同的使…

windows10 无法识别双频合一的5Gwifi

windows10 无法识别双频合一的5Gwifi 在网络配置中指定 wireless mode 为802.11a 或802.11ac 这两个是 5G网络的协议&#xff0c;如果不存在则说明无线网卡不支持5G网络

1米全国土地覆盖数据如何切片

我们在《136G全国1m土地覆盖数据》一文中&#xff0c;为你分享了136G全国1米土地数据。 现在&#xff0c;再为你分享如何将该数据进行切片&#xff0c;并在水经微图&#xff08;简称“微图”&#xff09;中加载的方法。 数据加载 打开微图&#xff0c;点击左上角的图层&…

打印一张A4纸多少钱?打印a4多少钱一张

在数字化日益发展的今天&#xff0c;打印服务依然是办公、学习和生活中不可或缺的一部分。对于广大用户来说&#xff0c;了解A4纸打印的价格成为选择打印服务的重要参考因素。那么&#xff0c;A4纸打印到底多少钱一张呢&#xff1f; 在琢贝云打印平台&#xff0c;打印价格非常实…

固定翼无人机入门(二)

这里讲讲无人机的路径跟踪控制相关知识&#xff0c;路径跟踪需要制导率&#xff08;平面&#xff09;和控制器&#xff0c;在无人机中较为常用的是L1制导率&#xff0c;不过L1制导率是控制无人机在二维平面上的转向&#xff0c;此处还引入总能量控制&#xff0c;控制无人机的高…

onlyoffice官方文档中打开文件示例的相关测试

文档地址&#xff1a;https://api.onlyoffice.com/zh/editors/open 开发环境&#xff1a; 后端&#xff1a;zdppy_api开发的一个文档服务前端&#xff1a;vue3开发的客户端 我们在index.html中&#xff0c;引入了文档服务的js文件&#xff1a; <!doctype html> <h…

海外代理IP哪个可靠?如何测试代理的稳定性?

在数字化时代&#xff0c;互联网已成为我们日常生活的重要组成部分。然而&#xff0c;随着网络活动的增加&#xff0c;我们面临的安全威胁也随之增加。 黑客攻击、数据泄露、网络钓鱼等安全事件频发&#xff0c;严重威胁着我们的个人隐私和网络安全。代理服务器在当今的互联网世…

ansible自动化运维,(2)ansible-playbook

三种常见的数据格式&#xff1a; XML&#xff1a;可扩展标记语言&#xff0c;用于数据交换和配置 JSON&#xff1a;对象标记法&#xff0c;主要用来数据交换或配置&#xff0c;不支持注释 YAML&#xff1a;不是一种标记语言&#xff0c;主要用来配置&#xff0c;大小写敏感&…

3.任务的创建与删除

1.什么是任务&#xff1f; 任务可以理解为进程/线程&#xff0c;创建一个任务&#xff0c;就会在内存开辟一个空间。 任务通常都含有while(1)死循环 2.任务创建与删除相关的函数 3.CUBEMAX相关配置 编辑一个led1闪烁的任务

Python学习打卡:day16

day16 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 目录 day16116、SQL 基础和 DDLSQL的概述SQL语言的分类SQL的语法特征DDL — 库管理DDL — 表管理 117、SQL — DMLDML概述数据插入 INSERT数据删除 DEL…

flink输出中文乱码

flink输出中文乱码 &#xff08;1&#xff09;首先在/etc/profile.d/my_env.sh中加入下面这行数据 export LANGzh_CN.UTF-8&#xff08;2&#xff09;其次在flink配置文件中指定编码 [xxxhadoop102 flink-1.13.6]$ vim conf/flink-conf.yaml加入下面这行数据 env.java.opts:…

A股探底回升,跑出惊天大阳,你们知道为什么吗?

今天的A股&#xff0c;探底回升&#xff0c;让人惊呆了&#xff0c;你们知道是为什么吗&#xff1f;盘面上出现3个重要信号&#xff0c;一起来看看&#xff1a; 1、今天A股市场炸锅了&#xff0c;AI人工智能、国产软件、存储芯片迎来了涨停潮&#xff0c;惊呆了&#xff0c;科技…

【MySQL事务】深刻理解事务隔离以及MVCC

文章目录 什么叫事务事务的提交方式常见的事务操作方式事务的开始与回滚总结 事务的隔离设置隔离级别解释脏读解释幻读解释不可重复读为什么可重复读不能解决幻读问题&#xff1f;总结 数据库并发的场景MVCC隐藏列字段undo日志Read view RR和RC的本质区别总结 什么叫事务 在My…

游戏AI的创造思路-技术基础-sigmoid函数详解

在前面的机器学习和深度学习的内容中&#xff0c;大量出现了sigmoid函数&#xff0c;所以本篇为大家介绍下sigmoid函数&#xff0c;希望对大家理解前面的算法和后面的Transformer有所帮助 目录 3.8. sigmoid函数 3.8.1. 定义 3.8.2. 性质 3.8.3. 应用 3.8.4. 缺点 3.8.5.…

sd卡一插上就提示格式化是怎么回事?sd卡数据如何恢复?

sd卡一插上就提示格式化是怎么回事&#xff1f;里面的数据怎么办&#xff1f;下面小编总结了SD卡提示格式化的原因和对应解决办法分享给大家&#xff01; SD卡好好的&#xff0c;为什么一插电脑上就提示需要格式化呢&#xff1f;当SD卡提示格式化时&#xff0c;可以考虑下面几类…