【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用
文章目录
- 局域网 LAN
- 广域网 WAN
- 网络中的重要概念
- IP 地址
- 端口号
- 认识协议
- 协议分层
- 是什么
- OSI 七层网络模型
- TCP/IP 五层网络模型(或四层)
- 物理层
- 传输层
- 网络层
- 数据链表层
- 应用层
- 网络设备所在分层
- 封装和分用
- [站在发送方视角](封装)
- [站在接收方视角](分用)
发展过程:
单机 —> 局域网 —> 广域网 —> 移动互联网
局域网 LAN
- 局域⽹,即
Local Area Network
,简称LAN
。 Local
即标识了局域⽹是本地,局部组建的⼀种私有⽹络。- 局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。局域⽹组建⽹络的⽅式有很多种:
-
把几个电脑连接到一起,就构成了局域网
-
但当电脑多了之后,就不方便两两相连,就创造了“路由器”
- 只要电脑都连在同一个路由器上面,就可以构成局域网
[!quote] 调制解调器(猫)
- 不同种类的信号转换
- 这个是宽带普及之前,上网操作是通过“电话线”进行的,猫的作用是将电话线中的模拟新欢转换成网络中的“数字信号”
- “光猫”就是把光信号和电信号之间进行相互转换(一般带有路由功能)
- 因为路由器上面接口有限,当机器多了之后,就插不下了,此时就引入了“交换机”,就解决了上述问题
- 交换机就相当与是对路由器的端口的扩展
- 将计算机都插到交换机上面,然后交换机再连接路由器就行了
- 此时这些电脑就相当于都插到路由器上了,这些电脑就都早一个局域网中了
- 局域网是有路由器负责的,本身与交换器没有关系
广域网 WAN
- ⼴域⽹,即 Wide Area Network,简称 WAN。
- 通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部的局域⽹都属于其⼦⽹。
- 现在见到的“万维网”就是把全世界的设备都连接在一起的巨大广域网
- “网游”就是电脑连接到了广域网上,可以和全国甚至全世界的玩家一起进行对抗
网络中的重要概念
IP 地址
- IP 地址就是描述了一台主机,在互联网上所处的位置
- IP 地址是使用一个 32 位整数来表示的
- 使用“点分十进制”这样的方式,来表示“IP 地址”
- 将 32 位整数用三个点分成了四份,每份取值范围 0~255(一个字节)
- 使用点分十进制之后,更方便人阅读
端口号
- 用来区分当前主机上的指定的应用程序(进程)
- 一个主机上,使用网络的程序有很多个,可以通过端口号,区分当前主机收到的数据是要交给哪个程序来处理使用
- 端口号同样也是一个整数,是一个两个字节的整数(0~65535)
- 虽然是 0 ~65535 这样的范围,实际上 0~1023 这些端口都是有一些特定含义的
- 咱们自己写代码使用的端口,一般都是用剩下的
[!quote] IP 地址和端口号
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端⼝号)
认识协议
网络中最核心的概念
- 协议是进行一切通信的基础
- 协议至少得有两个主机,让发送方发送数据,接收方能理解
- 比如,我虽然在重庆上学,但我是湖北人,如果周围有人说重庆话,我有时候就听不到。
- 这就属于无效的通信
- 所以双方需要按照同样的规则来构造/解析数据,否则就是无效的通信
- 协议就是在约束通信双方,交互数据的“规则”,协议确定了,双方就在一个频道上了,才能进行有意义的通信
所以,如何进行网络通信的问题,就转为了如何设计网络通信协议。
网络上传输的数据:光信号(光纤,激光的光)/电信号(网线里的)/电磁波(WiFi、5G…)
- 无论是哪种信号,本质上都是传输 0101 这样的二进制
- 光信号:可以用高低频光代表 0/1
- 电信号:可以用高低频电代表 0/1
- 电磁波:也是光,也可以通过频率进行编码
- 所以在通信时就需要约定好,传输的这一大串 101010 都是啥意思
- 这个就是"网络通信协议“要完成的核心工作
由于网络通信,是一件非常复杂的事情,如果只使用一个协议,去约定所有的网络通信细节,就会导致这个协议非常庞大,非常复杂
为了对抗这种复杂度,我们就进行“拆分”。将一个大的协议,拆分成多个小的协议,让每个小的协议,专注于解决一个/一类问题,再让这些协议相互配合
协议分层
是什么
- 但是,拆分之后,拆出来了很多协议,不方便组织
- 所以,将这些协议分层,把功能类似的协议放到一层,并且约定号,协议之间,不能随意进行交互,只能是相邻的层之间才能进行交互
- 上层协议调用下层协议,下层协议给上层协议提供服务
分层的好处:
- 降低了使用的成本,使用某个协议的时候,不需要关注其他协议的实现细节
- 打电话这个事情,不需要理解电话机的工作原理,只需要会说话即可
- 降低整个体系的耦合性,可以灵活的变更某个协议
- 可以经汉语协议变为英语协议,不妨碍打电话;可以经无线电协议变为电话协议,也不妨碍打电话
当前互联网体系的现状就是“协议分层”的效果
OSI 七层网络模型
这种划分方式,只是存在于教科书里,并没有被真正的采用
TCP/IP 五层网络模型(或四层)
当前世界上最主流的网络协议模型
四层就是不散物理层,物理层和硬件相关,距离程序员非常遥远
物理层
- 物理层:描述的是硬件设备(网线这样的设备)需要满足什么样的条件
- 物理层就相当与是“公路“、”铁路”、“航线”
传输层
- 传输层:主要就是关注网络通信中的“起点和终点”,并不关心通信的中间细节
- 比如,你在网上买了个东西
- 下单的时候,需要填写“收件人信息”
- 卖家给你发快递的时候,也需要填写“发件人信息”
- 最后卖家就把快递给快递小哥,快递小哥最后将快递送到你手上
- 在这个过程中,传输层就只关注发货地和收货地,并不关心快递是如何到你手上的、如何运输的…
网络层
- 网络层:进行网络通信的路径规划和地址管理
- 网络是很负责的结构,从 A 到 B 中间有很多不同的路线,此时网络层协议就要进行“路径规划”,称为“路由选择”
- 网络上的这些设备他们的地址都是什么、怎么去描述、用什么样的一套规则也是网络层安排
- 比如快递小哥揽收你的包裹之后,需要进行包裹运输
- 就要规划选择一条合适的路径将包裹送到你手中
- 合适的选择不是绝对的,可能看路程、可能看速度、可能看成本…
- 使用地图导航,也是类似于网络层“路由选择”的过程
数据链表层
- 数据链路层:针对好上述规划好的路径,进行具体的实施
- 比如,你的包裹要从上海运往西安,选择的路径是:上海 —> 南京 —> 西安
- 上海 —> 南京:走水路,坐船
- 南京 —> 上海:走铁路,火车
- 西安 —> 驿站:走公路,坐卡车
- 驿站 —> 收货地:骑三轮
- 在这每两个地点之间的交通选择,都是数据链路层负责的
- 董事长(传输层) —> 制定一个公司的发展目标(今年营业额要达到 xxx 小目标)
- 高管(网络层) —> 规划一下,如何达到上述目标,明确达到上述目标,分成几个步骤,先做什么再做什么。路径规划/路由选择的过程
- 基层员工(数据链路层) —> 进行具体实施,第一步到第二步,第二步到第三步… 具体咋办
- 办公用到的基础设施(物理层) —> 办公室、工位、电脑、打印机、网络…
这四层都是程序员干预不了的,操作系统/硬件设施已经实现好了的
应用层
- 应用层:程序员可以干预到的,可以决定这个应用是用来干什么
网络设备所在分层
- 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是
TCP/IP
五层模型的下四层; - 对于⼀台路由器,它实现了从⽹络层到物理层,也即是
TCP/IP
五层模型的下三层; - 对于⼀台交换机,它实现了从数据链路层到物理层,也即是
TCP/IP
五层模型的下两层; - 对于集线器,它只实现了物理层;
这都是站在经典的模型上讨论的,笔试中遇到了相关的选择/填空题,可以照着答
真实情况下,交换机也可能是工作在网络层,甚至是传输层/应用层
路由器也可能是工作在数据链路层,也可能是传输层,也可能是应用层
封装和分用
通过 QQ,发送一个 hello
给另一个人
[站在发送方视角](封装)
- 用户输入框中输入“
hello
”字符串,点击“发送”按钮- QQ 这样的程序,就会把
hello
这个内容从输入框读取到,构成一个“应用层数据包” - “应用层数据包”是应用层的协议,描述了这个数据包的构造,此处的应用层协议,往往是开发 QQ 的程序员自行定义的
- QQ 这样的程序,就会把
[!quote] 序列化/反序列化
- 将结构化数据 —> 二进制字符串:序列化
- 将二进制字符串 —> 结构化数据:反序列化
- 进行网络传输数据,通常就需要把一个“结构化”(C 的结构体/Java 的类,包含很多属性)数据转成一个“字符串”(二进制字符串,不需要非得在码表上可以查到,任何的 01 序列都可以接在一起)
[!quote] 应用层数据包
- 主要是做了一个“序列化”的工作,将传入的信息整合成一个“字符串”
- “应用层数据包”是应用层的协议,描述了这个数据包的构造,此处的应用层协议,往往是开发 QQ 的程序员自行定义的
- 如果是我来开发 QQ,我可能会按照下列的方式定义这个应用层数据包的结构(定义方式有很多种)
- 数据包格式:发送者的 QQ 号;接收者的 QQ 号;发送时间;消息正文\n
- 数据包样例:
123456789;987654321;2024-01-14 23:50:10;hello\n
-
应用层数据包准备就绪后,QQ 这样的应用程序,就会调用操作系统提供的
API
(传输层给应用层提供的 API)- 操作系统就会提供一个类似于“发送数据”这样的
API
,然后应用程序就会把上述组织好的应用层数据包作为参数传进来,于是应用层数据包就到了系统内核里,就进入到传输层的代码部分了 - 此时,传输层这里,就会把上述的应用层数据,再进一步封装(字符串拼接)成一个传输层数据包
- 由于传输层有多种协议(其中最重要的是两个:
TCP
和UDP
),这些协议给应用层提供的API
是不同的,看应用程序种使用哪组API
就使用哪个协议- 假设此处使用
UDP
协议,则会在刚刚整合的“字符串”前面加一个“UDP 报头
”,这串“字符串”叫“UDP 正文
/载荷
(payload
)” UDP报头
中就包含了一些UDP
相关的信息,比如发送者的端口号和接受者的端口号- 拼上的这些信息,都是给后续的转发打下基础的,就类似于“贴标签”
- 网络中,有多层协议,每一层协议都要贴标签,每一层标签的侧重点不同,贴上的标签中的信息也不一样
- 假设此处使用
- 操作系统就会提供一个类似于“发送数据”这样的
-
传输层构造好数据之后,就会继续调用网络层提供给传输层的
API
,把数据进一步交给网络层- 由于传输层和网络层都是系统内核里面实现好的,上述调用的过程,我们无需关心,也感知不到
- 网络层也有多种协议,其中最重要的就是 IPv4 协议(简称为 IP 协议)
- IP 协议就会把上述拿到的传输层数据包构造成网络层数据包
- IP 报头中也会包含很多信息,主要信息为发送方的 IP 地址,接收方的 IP 地址
-
网络层继续调用数据链路层的
API
,把数据交给数据链路层处理- 数据链路层的常见协议是:以太网(平时插网线,进行上网的方式)
- 在 IP 数据包的基础上,进一步进行包装
[!quote] 网络传输数据的基本单位
- 数据包(packet)
- 数据报(Datagram)
- 数据段(segment)
- 数据帧(frame)
这几个术语严格来说是有区别的,但平时日常交流的时候,不会刻意区分
- 上述得到的数据,需要进一步交给物理层(硬件设备)
- 网卡就会针对上述的二进制数据,进行真正的传输操作
- 就需要把上述 0101 这样的序列转为光信号/电信号/电磁波…
[站在接收方视角](分用)
-
接收方物理层收到光电信号,把这样的光电信号还原成 010101 这样的二进制字符串
-
物理层转换回来的数据,交给数据链路层,以太网拿到这个数据包,就会对这个数据包进行解析
- 拿出这里的报头和载荷,根据报头中的信息做一些处理
- 这个数据包是要丢弃、还是转发、还是自己保留,向上进行解析
- 由于是站在接收方的视角,所以在这里这个数据包要交给上层协议,再做进一步解析
- 所以这个数据包就会从数据链路层交给网络层
- 网络层拿到了上述解析好的数据,网络层的 IP 协议也要对这个数据包进行解析
- 取出 IP报头和载荷
- 根据报头中的信息确认,是丢弃、转发还是保留(给上层协议)
- 由于是站在接收方的视角,所以在这里这个数据包要交给上层协议,再做进一步解析
- 传输层这边,UDP 协议也要针对数据进行解析
- 取出 UDP 报头和载荷
- 此处也需要把载荷里面的内容,进一步交给应用层协议
- 依赖 UDP 报头中的端口号,区分需要交给哪个应用程序(端口号就是用来区分不同进程的)
- 数据就到了 QQ 这样的应用程序这里了
- QQ 就要针对上述的数据进行“反序列化”
- 再针对里面的数据进行进一步的逻辑
- 将收到的消息显示到界面上
- 播放“滴滴滴”这样的声音,提醒收到信息
- 显示弹窗,提示收到信息
- 更新未读消息的列表(红色的圆圈写个数字)
- …
- 此处接收方做的工作就是发送方工作的“逆向工作”
- 发送方的“封装”,认为是“打包快递”
- 接收方的“分用”,认为是“拆快递“
一个电脑,会先连到交换机上,交换机可能连到路由器上,路由器可能又连到另一个交换机上,交换机又连到另一个路由器上… 总之,这中间会连接很多的交换机和路由器,来完成数据转发的过程
中间过程的交换机和路由器,也会涉及到封装和分用(不会像主机这样复杂)
- 交换机封装分用到链路层,就可以决定数据是丢弃还是继续转发了,不再继续分用(经典的教科书上的交换机)
- 路由器,封装分用到网络层,就可以决定数据是丢弃还是继续转发了,也不再继续分用
在传输的过程中,每到一个设备都要进行封装分用,经过层层数据的交换,最终到达终点
封装分用这么麻烦,会不会导致交换机、路由器、主机之间的通信效率很低呢?
- 得看和谁比
- 如果是那网络通信和人的反应时间相比,速度还是很快的
- 如果拿网络通信和读写硬盘相比,通常认为,网络的速度比硬盘的速度更慢
- 更不必说和内存比了
也有特殊情况:
- 如果拿网络中最强的“万兆网卡”和硬盘中最弱的“机械硬盘”相比,网络的速度更快
相关文章:
【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用
文章目录 局域网 LAN广域网 WAN网络中的重要概念IP 地址端口号 认识协议协议分层是什么OSI 七层网络模型TCP/IP 五层网络模型(或四层)物理层传输层网络层数据链表层应用层网络设备所在分层 封装和分用[站在发送方视角](封装)[站在…...
我司搜索中台的三次演变
本人从入职就开始负责我司的搜索中台了,总共是经历了三个大版本的迭代。 分别是: 基于阿里云智能开放搜索OpenSearch实现的第一代自研,开源canal(数据同步) 底层阿里云elasticsearch 对索引封装 实现的第二代自研&a…...
html+css+js网页设计 电商模版4个页面
htmlcssjs网页设计 电商模版4个页面 带js 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&…...
区块链技术在Facebook中的潜力:未来趋势与挑战
数据安全的新高度 区块链技术以其去中心化和不可篡改的特性,正在成为提升数据安全和隐私保护的重要工具。Facebook作为全球最大的社交媒体平台之一,正积极探索如何将区块链技术应用于其平台,以增强用户数据的安全性和隐私保护。Facebook在应…...
dockerfile自定义镜像
目录 概念 基于dockerfile创建 dockerfile的命令 构建容器 FROM ENTRYPOINT和CMD RUN COPY和ADD 工作目录和环境变量以及容器卷(挂载卷) EXPOSE 实战 概念 dockerfile就是自定义镜像,通过dockerfile创建的都是镜像,而…...
【工作状态】如何保持专注?
好的睡眠计划主题化 1、保持足够的睡眠,才能头脑清晰和有精力,工作不是纯拼体力,要用脑力的。 2、脑力主要工作放在午餐前,在脑力充足的时候使用脑力,下午五点后可以安排脑力活动较低的工作,比如听课读书。…...
欧科云链研究院对话:风浪越大鱼越贵—链上数据洞悉加密市场规律
作者 Hedy 出品 OKG Research “我们从来就不是理性人。但可以用最简单的工具——链上数据做‘最猛’的分析。” 在经历了超级宏观周之后,金融市场产生了巨大的震荡,加密市场的表现也越来越受到宏观经济因素的影响。欧科云链研究院OKG Research 集结多…...
SQLite库笔记:日期和时间函数
1. 函数概述 SQLite支持7个日期和时间函数,如下: 1 date(time-value, modifier, modifier, ...) 返回YYYY-MM-DD格式的日期 2 time(time-value, modifier, modifier, ...) 返回HH:MM:SS格式的时间 3 datetime(time-value, modifier, modifier, ...…...
Linux开发板运行报错/system/bin/sh: can‘t create /dev/leds: Permission denied
Linux开发板运行报错/system/bin/sh: cant create /dev/leds: Permission denied 1.问题解决 1.问题解决 /system/bin/sh: can’t create /dev/leds: Permission denied 在linux开发板下运行驱动报错没有权限,需要运行 su,同时也会停止打印 在运行: ch…...
月薪5W的项目经理是如何面试的?这份面试攻略请收好!
面试是项目经理求职必须经历的一关,但很多经验不够丰富的项目经理不知道面试会问些什么问题,也不知道要怎么回答,无疑会直接影响面试企业的判断,使项目经理求职受阳.所以,项目经理想要顺利求职,还是有必要掌…...
接口隔离原则
接口隔离原则 接口隔离原则就是客户端不应该依赖它不需要的接口,或者说类间的依赖关系应该建立在最小的接口上。 我们以搜索美女为例,设计了如下的类图: 源代码如下。美女及其实现类: 搜索程序及其子类源代码如下: 最…...
【C++ 面试 - 基础题】每日 3 题(十六)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…...
端到端测试自动化:使用JavaScript打造可靠的Web应用
端到端测试(End-to-End Testing,简称E2E测试)是软件测试的一种形式,用于验证整个应用从端到端的流程是否按预期工作。在JavaScript生态系统中,E2E测试通常使用专门的框架来模拟用户交互,验证应用的业务逻辑…...
『大模型笔记』基于LLM生成真实世界数据的合成问答数据!
基于LLM生成真实世界数据的合成问答数据! 文章目录 一. 基于LLM生成真实世界数据的合成问答数据!1. 概述(Overview)2. 场景(Scenario)2.1. 概述2.1.1. 第1阶段:构建种子数据集(Stage 1. Constructing a seed dataset)2.1.2. 第2阶段:数据增强(可选)(Data Augmentation…...
一个使用Python和`scikit-learn`库实现KMeans聚类算法的简单示例
一个使用Python和scikit-learn库实现KMeans聚类算法的简单示例。首先,请确保您已经安装了scikit-learn库。如果没有安装,可以通过pip安装它: pip install scikit-learn下面是一个简单的例子,展示如何使用scikit-learn中的KMeans进…...
记录一下vue2和vue3中如何配置keep-alive及写法上的差异
应用场景 跳转下一个页面后,返回当前页面,或者在多个页面之间切换,保留页面中的所有状态,常见的就是填写到一半的表单。h5的tabbar页面缓存,避免重复加载数据。 主要实现思路 这个东西很常见,动态路由一…...
面试题:Rabbitmq怎么保证消息的可靠性?
1.消费端消息可靠性保证: 消息确认(Acknowledgements):(自动(默认),手动) 消费者在接收到消息后,默认情况下RabbitMQ会自动确认消息(autoAcktrue)。为保证消息可靠性,可以设置auto…...
性能测试工具之JMeter
JMeter Apache JMeter应用程序是开源软件,是一个100%纯Java应用程序,旨在负载测试功能行为和衡量性能。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试功能。 JMeter是一个免费、开源、跨平台的性能测试工具,于20世纪90年代后期面世。这是一个成熟、健全且具有…...
SQL Zoo 9-.Window functions
以下数据均来自SQL Zoo 1.Show the lastName, party and votes for the constituency S14000024 in 2017.(显示2017年选区“S14000024”的姓氏、政党和选票) SELECT lastName, party, votesFROM geWHERE constituency S14000024 AND yr 2017 ORDER BY…...
智能化清理C盘的方法 小白也可以轻松清理C盘了 不再担心误删文件
智能化清理C盘的方法 小白用户也可以轻松清理C盘了 不再担心误删文件。对于电脑小白来说,C盘清理是一个大大的问题,因为大家都不知道C盘里有哪些文件可以删除,哪些不能删除,所以就直接的导致大家不可能去清理c盘垃圾。 就算是C盘…...
在c#中常用的特性
在C#中,特性(Attributes)是一种将元数据应用于程序实体(如类、方法、属性等)的方式。这些元数据可以在编译时和运行时被读取,常用于配置、自定义行为、装饰器模式等场景。以下是一些C#中常用的特性…...
Polars简明基础教程十二:可视化(二)
设置绘图后端 我们可以使用 hv.extension 更改绘图后端。但是,我们不在此处运行此单元格,因为它会导致下面的 Matplotlib/Seaborn 图表无法渲染。 注释: hvPlot 利用 HoloViews 库来构建图表,并且可以使用多个后端进行渲染&…...
python 使用正则表达式判断图片路径是否是超链接
在Python中,判断一个给定的字符串(假设为图片路径)是否是网页链接(URL),你可以通过检查该字符串是否符合URL的基本格式来实现。虽然这个方法不能保证链接一定指向图片,但它能判断该字符串是否是…...
【学习笔记】Day 14
一、进度概述 1、《地震勘探原理》第七章 二、详情 地震波动力学是相对于运动学而言的。运动学主要研究波的传播规律,其主要特征是分析、研究波的传播路径。传播速度。旅行时间等。地震波动力学则主要从能量的角度研究地震波的特征,如波的振幅、波形、频…...
使用SSL认证访问操作手册
完整版,从证书生成到使用 【金山文档 | WPS云文档】 使用SSL认证访问操作手册 https://kdocs.cn/l/cuxGfHD17eEw...
网络协议 十一 ARP,RARP,icmp,websocket,webservice,HTTPDNS,FTP,邮件相关的协议, SMTP,POP,IMAP
ARP 已知IP 求 MAC 的过程 RARP 已知MAC 求 IP 的过程,已被DHCP取代 ICMP websocket 协议,html5中提出的前端使用协议 webservice 技术,已过时 HTTPDNS 之前我们要获得 某一个域名的 IP ,要通过DNS协议 去 运营商的ISP 查询&…...
浏览器插件利器--allWebPluginV2.0.0.16-Stable版发布
allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…...
设计模式22-迭代器模式
设计模式22-迭代器模式 迭代器模式(Iterator Pattern)动机定义结构定义结构结构图解释注意事项 C代码推导多态属性(虚函数)实现迭代器1. **返回值问题**2. **对象切割问题**3. **内存管理问题**4. **迭代器生命周期问题**5. **接口…...
编程深水区之并发⑥:C#的线程池
绝大多数情况下,我们都应该使用CLR线程池,而不是直接操作Thread,本章节介绍直接操作线程池的ThreadPool,但实际开发中也很少直接使用它。 一、CLR和线程池 1.1 CLR的主要工作 CLR(Common Language Runtime࿰…...
KCTF 闯关游戏:1 ~ 7 关
前言 看雪CTF平台是一个专注于网络安全技术竞赛的在线平台,它提供了一个供网络安全爱好者和技术专家进行技术交流、学习和竞技的环境。CTF(Capture The Flag,夺旗赛)是网络安全领域内的一种流行竞赛形式,起源于1996年…...
网站seo优化/免费培训课程
文本文件操作读写文件在Python中,不必要调用外部的library用于读写文件。Python提供了内置的功能,能够创建、读写文件。内置功能 open()为了打开文件,需要使用内置的 open 功能。Open 功能返回一个文件对象,这个对象包含了多种 方…...
做调查的网站推荐/sem百度竞价推广
采用Spring管理Bean和依赖注入 1.实例化spring容器 和 从容器获取Bean对象 实例化Spring容器常用的两种方式: 方法一: 在类路径下寻找配置文件来实例化容器 [推荐使用] ApplicationContext appContext new ClassPathXmlApplicationContext("classpath*:/META-…...
微商的自己做网站叫什么名字/网站要怎么创建
如果要获取行,则需要从每个数组中获取值,然后根据值创建新数组。您可以手动分配值,也可以使用for循环,例如...int[][] MyMat {{0,1,2,3,4}, {9,8,7,6,5}};// get your columns... (easy)int[] My0 MyMat[0]; //My0 {0,1,2,3,4}i…...
网页传奇版本/潍坊seo关键词排名
下一代安全企业Palo Alto Networks(纽交所代码:PANW)近日详细披露了一款最新“BackStab”恶意软件,该攻击模式主要是从存储在被感染电脑上的移动设备备份文件中窃取私人信息。Palo Alto Networks公司Unit 42威胁情报团队在白皮书中…...
wordpress中文连接/赣州网站建设
本文转载自知乎《Pandas | 一文看懂透视表pivot_table》,在原文基础上略有增删改。感谢原作者非常生动的例子。 目录 一、概述 1.1 什么是透视表? 1.2 为什么要使用pivot_table? 二、如何使用pivot_table 2.1 读取数据 2.2 Index 2.3 …...
logo设计找什么公司/公司百度官网优化
为什么80%的码农都做不了架构师?>>> 1.学习LinkedList的必要性 在ArrayList工作原理中,我们了解到ArrayList和LinkedList是List接口的两个重要实现。并且ArrayList是一个动态数组的实现。因此ArrayList在队列中插入和删除元素方面的性能有很…...