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

计算机网络复习5

传输层——端到端

文章目录

      • 传输层——端到端
        • 功能
        • 传输层的寻址与端口
        • UDP
        • TCP
        • TCP连接管理
        • TCP可靠传输
        • TCP流量控制
        • TCP拥塞控制
        • 网络拥塞的处理

功能
  • 从通信和信息处理的角度看,传输层它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层
  • 传输层位于网络层之上,它为运行在不同主机上的进程之间提供逻辑通信,而网络层提供主机之间的逻辑通信。显然,即使网络层协议不可靠(网络层协议使分组丢失,混乱或重复),传输层同样能为应用程序提供可靠的服务。
  • 复用和分用。复用是指发送方不同的应用进程都可使用同一个传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程
  • 传输层还要对收到的报文进行差错检测(首部和数据部分)
  • 提供两种不同的传输协议,即面向连接的TCP和无连接的UDP
传输层的寻址与端口
  1. 端口的作用
    端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程
  2. 端口号
    1. 熟知端口号,数值为0-1023,把这些端口号指派给TCP/IP最重要的一些应用程序

image.png

  1. 登记端口号,数值Wie1024-49151,他是供没有熟知端口号的应用程序使用,使用这类端口号需要先登记
  2. 客户端使用的端口号,数值为49152-65535,由于这类端口号只在客户进程运行时才动态选择,因此又称为短暂端口号
  3. 套接字

端口号拼接到IP地址即构成套接字Socket

  1. 传输层可以为IP层提供无连接和面向连接两种服务。

:::danger
TCP/IP协议族在IP层之上使用了两个传输协议:一个是面向连接的传输控制协议(TCP),采用TCP时,传输层向上提供的是一条全双工的可靠逻辑信道;另一个是无连接的用户数据报协协议(UDP),采用UDP时,传输层向上提供的是一条不可靠的逻辑信道
:::

UDP
  1. UDP数据报

UDP仅在IP的数据报服务之上增加了两个最基本的服务:复用和分用以及差错检测。如果应用开发者选择UDP,那么应用程序几乎直接与IP打交道

  1. 优点
    1. 无须建立连接。因此不会引入建立连接的时延
    2. 无连接状态。TCP需要在端系统中需要维护连接状态。此连接状态包括接收和发送缓存,拥塞控制参数和序号与确认号的参数
    3. 分组首部开销小TCP有20B的首部开销,而UDP仅有8B的开销
    4. 应用层能更好地控制要发送的数据和发送时间。UDP没有拥塞控制,因此网络中的拥塞不会影响主机的发送效率
    5. UDP支持一对一,一对多,多对一和多对多的交互通信,TCP只支持一对一可靠交付
  2. 数据报格式image.png
  3. UDP校验

在计算校验和时,要在UDP数据报之前增加12B的伪首部,伪首部并不是UDP的真正首部。只是在计算校验和时,临时添加在UDP数据报的前面,得到一个临时的UDP数据报。校验和就是按照这个临时的UDP数据报来计
算的。伪首部既不向下传送又不向上递交,而只是为了计算校验和。
image.png

TCP
  1. TCP协议的特点

TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠,有序,无丢失和不重复问题。TCP是TCP/IP体系中非常复杂的一个协议,主要特点如下:

  1. TCP是**面向连接**的**传输层**协议2. 每条TCP连接**只能有两个端点**,每条TCP连接只能是**一对一**3. TCP提供**可靠的交付服务**,保证传送的数据无差错,不丢失,不重复且有序4. TCP提供**全双工通信** ,允许通信双方的应用进程在**任何时候**都能发送数据,为此TCP连接的两端都设有**发送缓存和接收缓存**,用来临时存放双向通信的数据5. TCP是**面向字节流**的,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅视为一连串的无结构的字节流
  1. TCP报文段
    1. TCP传送的数据单元称为报文段。TCP报文段既可以用来运载数据,又可以用来建立连接,释放连接和应答
    2. 一个TCP报文段分为首部和数据两部分,整个TCP报文段作为IP数据报的数据部分封装在IP数据报中,其首部的前20B是固定的。TCP报文段的首部最短为20B,后面有4N字节是根据需要而增加的选项,通常长度为4B的整数倍
  2. 报文段格式
    1. 确认号:占4B,是期望收到对方下一个报文段的第一个数据字节的序号。若确认号为n,则表明到序
      号n-1为止的所有数据都已正确收到。
    2. 数据偏移:即首部长度,占4位(4bit),它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。数据偏移的单位是32位(以4B为计算单位),因此当此字段的值为15时,达到TCP首部的最大长度60B
    3. 急位 URG,URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)
    4. 推送位PSH (push),接收方TCP收到PSH= 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填后再向上交付
    5. 同步位SYN,同步SYN=1表示这是一个连接请求连接接受报
    6. 终止位FIN(finish),用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接

image.png

TCP连接管理
  1. 每个TCP连接都有个阶段:连接建立,数据传送和连接释放。TCP连接的管理就是使运输层连接的建立和释放都能正常进行

  2. TCP连接的建立采用客户/服务器方式。主动发起连接建立的应用进程称为客户(client),而被动等待连接建立的应用进程称为服务器(server)

  3. 建立连接的过程:三次握手image.png

    1. 第一步:客户机的TCP首先向服务器的TCP发送连接请求报文段。这个特殊报文段的首部中的同步位SYN置1,同时选择一个初始序号seq=x。TCP规定,SYN报文段不能携带数据,但要消耗掉一个序号
    2. 第二步:服务器的TCP收到连接请求报文段后,如同意建立连接,则向客户机发回确认,并为该TCP连接分配缓存和变量。在确认报文段中,把SYN位和ACK位都置1,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y。注意,确认报文段不能携带数据,但也要消耗掉一个序号
    3. 第三步:当客户机收到确认报文段后,还要向服务器给出确认,并为该TCP连接分配缓存和变量。确认报文段的ACK位置1,确认号ack=y+1,序号seq=x+1该报文段可以带数据,若不携带数据则不消耗序号
  4. 释放连接的过程:四次挥手image.png

    1. 第一步:客户机打算关闭连接时,向其TCP发送连接释放报文段,并停止发送数据主动关闭TCP连接,该报文段的终止位FIN置1,序号seq=u,它等于前面已传送过的数据的最后一个字节的序号加1,FIN报文段即使不携带数据,也消耗掉一个序号
    2. 第二步: 服务器收到连接释放报文段后即发出确认,确认号ack=u+1,序号seq=v,等于它前面已传送过的数据的最后一个字节的序号加1。此时,从客户机到服务器这个方向的连接就释放了**【此时:客户机的发送端关闭,服务器的接收端关闭。但是客户机还有接收的能力,服务器还有发送的能力。】**
    3. 第三步: 服务器要关闭连接,向其TCP客户机发送连接释放报文段的同时发送确认,确认号ack=u+1,并停止发送数据,主动关闭TCP连接,该报文段的终止位FIN置1,序号seq=w,它等于前面服务器已传送过的数据的最后一个字节的序号加1,FIN报文段即使不携带数据,也消耗掉一个序号
    4. 第四步:** 客户机收到连接释放报文段后即发出确认,确认号ack=w+1,序号seq=u+1。【此时,客户机的接收端并没有释放,而是等服务器收到确认关闭发送端之后(一般时间为2MSL),客户机才关闭自己的接收端。】**这时服务器到客户机方向的连接才会释放。如果服务器没有收到确认,就会在过段时间再一次发送数据。
  5. TCP连接管理:小结

    1. 建立连接 step*3
      1. SYN=1,seq=x
      2. SYN=1,ACK=1,seq=y,ack=x+1
      3. ACK=1,seq=x+1,ack=y+1
    2. 释放连接 step*4
      1. FIN=1,seq=u
      2. ACK=1,ack=u+1,seq=v
      3. FIN=1,ACK=1,ack=u+1,seq=w
      4. ACK=1,ack=u+1,seq=w+1
TCP可靠传输
  1. 序号
  • TCP首部的序号字段用来保证数据能有序提交给应用层,TCP把数据视为一个无结构但有序字节流,序号建立在传送的字节流之上,而不建立在报文段之上
  1. 确认
  • TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号
  • TCP默认使用累计确认,即TCP只确认数据流中至第一个丢失字节为止的字节(接收到的最后一个字节)
  1. 重传
  • 两种事件会导致TCP对报文段进行重传:超时冗余ACK
  • 超时:TCP每发送一个报文段,就对这个报文段设置一次计时器。计时器设置的重传时间到期但还未收到确认时,就要重传这一报文段
  • 冗余ACK(冗余确认):冗余ACK就是再次确认某个报文段的ACK,而发送方先前已经收到过该报文段的确认
TCP流量控制
  1. 传输层和数据链路层的流量控制的区别是:传输层定义端到端用户之间的流量控制,数据链路层定义两个中间的相邻结点的流量控制。另外,数据链路层的滑动窗口协议的窗口大小不能动态变化,传输层的则可以动态变化
  2. 拥塞控制是指防止过多的数据注入网络,保证网络中的路由器或链路不致过载
  3. 拥塞控制与流量控制区别:拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是指点对点的通信量的控制,是个端到端的问题(接收端控制发送端),它所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收
TCP拥塞控制
  1. 接收窗口rwnd:接收方根据目前接收缓存大小所许诺的最新窗口值,反映接收方的容量。由接收方根据其放在TCP报文的首部的窗口字段通知发送方
  2. 拥塞窗口cwnd:发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络的当前容量。只要网络未出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入网络的分组数。发送窗口的上限值=min[rwnd,cwnd]
  3. 慢开始和拥塞避免
    1. 慢开始算法:在TCP刚刚连接好并开始发送TCP报文段时,先令拥塞窗口cwnd=1,即一个最大报文段长度MSS。每收到一个对新报文段的确认后,将cwnd加1,即增大一个MSS。用这样的方法逐步增大发送方的cwnd,可使分组注入网络的速率更加合理。【慢开始一直把cwnd增大到一个规定的慢开始门限sstresh(阈值),然后改用拥塞避免算法

例如,A向B发送数据,发送方先置拥塞窗口cwnd=1,A发送第一个报文段,A收到B对第一个报文段的确认后,把cwnd从1增大到2;于是A接着发送两个报文段,A收到B对这两个报文段的确认后,把cwnd从2增大到4,下次就可一次发送4个报文段。

  1. 拥塞避免算法:每经过一个往返时延RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,使拥塞窗口cwnd按线性规律缓慢增长(即加法增大),这比慢开始算法的拥塞窗口增长速率要缓慢得多
网络拥塞的处理
  1. 无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(未按时收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送方的cwnd值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法

image.png

  1. 快重传和快恢复
    1. 快重传:当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时
    2. 快恢复:当发送方连续收到三个冗余ACK(即重复确认)时,把慢开始门限ssthresh设置为此时发送方cwnd的一半。与慢开始不同之处是它把cwnd值设置为慢开始门限sthresh改变后的数值,然后开始执行拥塞避免算法("加法增大"),使拥塞窗口缓慢地线性增大

image.png

相关文章:

计算机网络复习5

传输层——端到端 文章目录 传输层——端到端功能传输层的寻址与端口UDPTCPTCP连接管理TCP可靠传输TCP流量控制TCP拥塞控制网络拥塞的处理 功能 从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同…...

React Hooks 面试题 | 05.精选React Hooks面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...

2024收入最高的编程语言

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 1.Python Python 是最流行、用途最广泛的语言之一。它通常用于网络开发、数据科学、机器学习等。 以下是 Python 编程语言的一些主要用途: Web 开发&…...

Android笔记(二十三):Paging3分页加载库结合Compose的实现分层数据源访问

在Android笔记(二十二):Paging3分页加载库结合Compose的实现网络单一数据源访问一文中,实现了单一数据源的访问。在实际运行中,往往希望不是单纯地访问网络数据,更希望将访问的网络数据保存到移动终端的SQL…...

Python实现马赛克图片处理

文章目录 读取图片代码1、导入使用包2、读取图片 操作图片1、上下翻转2、左右翻转3、颜色颠倒4、降低图片精度5、打马赛克 说明: 在python中,图片可以看成一个三维的矩阵,第一维控制着垂直方向,第二维控制着水平方向,第…...

你能描述下你对vue生命周期的理解?在created和mounted这两个生命周期中请求数据有什么区别呢?

一、生命周期是什么 生命周期(Life Cycle)的概念应用很广泛,特别是在政治、经济、环境、技术、社会等诸多领域经常出现,其基本涵义可以通俗地理解为“从摇篮到坟墓”(Cradle-to-Grave)的整个过程在Vue中实…...

【经典算法】有趣的算法之---蚁群算法梳理

every blog every motto: You can do more than you think. 0. 前言 蚁群算法记录 1. 简介 蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题提供了一个新的可能性…...

第八届视觉、图像与信号处理国际会议(ICVISP 2024) | Ei, Scopus双检索

会议简介 Brief Introduction 2024年第八届视觉、图像与信号处理国际会议(ICVISP 2024) 会议时间:2024年12月27日-29日 召开地点:中国西双版纳 大会官网:ICVISP 2024-2024 8th International Conference on Vision, Image and Signal Process…...

《HelloGitHub》第 93 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C、Swift...让你在短时间内…...

JAVA B/S架构智慧工地源码,PC后台管理端、APP移动端

智慧工地系统充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术,以PC端,移动端,设备端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳务、设备、物料、安全、环境、能源、资料、计划、质量、视频监控等…...

【adb】--- win10 配置 adb环境 超详细 (持续更新中)

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【adb】--- win10 配置 adb环境 超详细 &…...

SQL注入安全漏洞详解

1. SQL注入的原理: SQL注入的攻击行为是通过用户可控参数中注入了SQL语法,改变原有SQL结构,以下两种情况可以造成SQL注入: 1.使用字符串拼接的方式构造SQL语句 2.未对用户可控参数进行严格的过滤,便把参数内容拼接到…...

数据结构与算法教程,数据结构C语言版教程!(第一部分、数据结构快速入门,数据结构基础详解)四

第一部分、数据结构快速入门,数据结构基础详解 数据结构基础,主要研究数据存储的方式。 本章作为数据结构的入门课程,主要让读者明白,数据结构到底是什么,常用的数据存储结构有哪些,数据结构和算法之间到底…...

mac安装k8s环境

安装kubectl brew install kubectl 确认一下安装的版本 kubectl version --client 如果想在本地运行kubernetes 需要安装minikube brew install minikube 需要注意安装minikube需要本地的docker服务是启动的 启动 默认连接的是google的仓库 minikube start 指定阿…...

HarmonyOS4.0系列——04、@Styles、@Extend、@Extend事件以及多态样式stateStyles

Styles、Extend、Extend事件以及多态样式stateStyles Styles 通用样式 类似于css中的class 语法一:内部样式 放在struct内 Styles commonStyle(){.backgroundColor(Color.Pink).padding(20px)}语法二:外部样式 Styles function commonStyle() {.backg…...

C++项目之酒店客房管理系统架构——设计模式应用场景详解(下)

5. 迭代器模式(Iterator Pattern):用于遍历客房列表。通过定义一个迭代器接口,可以遍历客房列表并访问每个客房的属性和状态。 代码中,Iterator是抽象迭代器,定义了迭代器的基本操作,包括判断是否还有下一项和获取下一项的方法。RoomIterator是具体迭代器,实现了具体的…...

RabbitMQ消息存储JSON格式反序列化

如果发送消息消息体为实体类对象数据,交换机接收消息经由路由键发送给队列。需要实现数据反序列化操作。实现JSON格式的反序列化操作 Rabbitmq的反序列化接口 MessageConverter,它的实现类有 Jackson2JsonMessageConverter的反序列化实现类&#xff0c…...

Java解决统计有序矩阵中的负数问题

Java解决统计有序矩阵中的负数问题 01 题目 给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。 请你统计并返回 grid 中 负数 的数目。 示例 1: 输入:grid [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-…...

【算法与数据结构】435、LeetCode无重叠区间

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:思路和【算法与数据结构】452、LeetCode用最少数量的箭引爆气球类似,也是排序找重叠区间。…...

【开题报告】基于SpringBoot的茶文化宣传网站设计与实现

1.研究背景和意义 1.1研究背景 茶文化是中国传统文化的重要组成部分,具有悠久的历史和丰富的内涵。茶文化不仅是一种饮食文化,更是一种生活方式和精神追求。然而,在当今快节奏的生活中,茶文化逐渐被人们所忽视。为了加强对茶文化…...

用通俗易懂的方式讲解大模型:基于 Langchain 和 ChatChat 部署本地知识库问答系统

之前写了一篇文章介绍基于 LangChain 和 ChatGLM 打造自有知识库问答系统,最近该项目更新了0.2新版本,这个版本与之前的版本差别很大,底层的架构发生了很大的变化。 该项目最早是基于 ChatGLM 这个 LLM(大语言模型)来…...

YOLO训练results.csv文件可视化(原模型与改进模型对比可视化)

一、单独一个文件可视化(源码对应utils文件夹下的plots.py文件的plot_results类) from pathlib import Path import matplotlib.pyplot as plt import pandas as pd def plot_results(fileruns/train/exp9/results.csv, dir):# Plot training results.c…...

uni-appcss语法

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…...

java在线票务系统(选座)Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java servlet 在线票务系统(选座)管理系统是一套完善的java web信息管理系统 系统采用serlvetdaobean(mvc模式),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要…...

Python 简易图形界面库easygui 对话框大全(续)

目录 EasyGUI库 主要特点 使用场景 对话框样式 10. 文件打开框 fileopenbox 11. 文件保存框 filesavebox 12. 目录打开框 diropenbox 13. 索引对话框 indexbox 14. 例外报告框 exceptionbox 15. 代码文本框 codebox 16. 密码输入框 passwordbox 17. 多重文本框 mul…...

电容器50ZLH56MEFC6.3X11

电容器 常用电子元器件类型 50ZLH56MEFC6.3X11 文章目录 电容器前言一、电容器二、50ZLH56MEFC6.3X11总结前言 电容器在电子电路中有许多重要的应用,如滤波、耦合、储能、定时等。不同类型的电容器具有不同的性能特点,例如电容量、工作电压、频率响应等。在选择和使用电容…...

vscode 支持c,c++编译调试方法

概述:tasks.jason launch.json settings.json一定要有,没有就别想跑。还有就是c 和c配置有区别,切记,下文有说 1.安装扩展插件。 2.安装编译器,gcc.我用的是x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z &#xf…...

MyBatis的缓存!!!!

为什么使用缓存? 首次访问时,查询数据库,并将数据存储到内存中;再次访问时直接访问缓存,减少IO、硬盘读写次数、提高效率 Mybatis中的一级缓存和二级缓存? 一级缓存: 它指的是mybatis中的SqlSession对象的…...

ToB还是ToC?工业级与消费级AR眼镜都能干什么?

随着科技的飞速发展,增强现实(AR)技术逐渐融入我们的日常生活。我国AR眼镜消费市场分为消费级和工业级应用。其中消费级主要分为游戏、影视、直播以及社交购物与旅游;工业级主要应用于医疗、汽车、工业、船舶、电力和仓储等专业领…...

设计模式-Java版本

文章目录 前言设计原则单一职责原则开闭原则里氏替换原则迪米特法则接口隔离原则依赖倒置原则 设计模式构建类型工厂模式抽象工厂建造者模式原型模式单例模式 结构型适配器模式桥接模式组合模式装饰器模式代理模式外观模式享元模式 行为模式责任链模式命令模式迭代器模式中介模…...

漫画网站怎么做/公司域名查询官网

在上上篇日志里面,我介绍了在虚拟机VMware6.5下安装Fedora9.0的开发环境,其中在文章的末尾我向大家阐述了一个观点就是要新建一个user,其实也可以不新建,当时我给的理由是,ROOT权限下登录没有反应,为什么没有反应呢&am…...

排名优化软件/seo sem

前言 利用Python实现抖音字符视频。废话不多说。 让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: cv2模块; PIL模块; numpy模块; 以及一些Python自带的模块。 环境搭建 安装Python并添加到环境变…...

海淀公安局网站备案/营销型企业网站有哪些

1.压缩 对于test目录,使用 zip -rq test.zip test r表示递归压缩,q表示不显示过程 2.解压缩 unzip -q test.zip 转载于:https://www.cnblogs.com/huangshiyu13/p/7196309.html...

大港做网站/有人百度看片吗

什么是普罗米修斯?Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包 。普罗米修斯的主要特点是:具有由度量名称和键/值对标识的时间序列数据的多维数据模型PromQL,一种灵活的查询语言, 可以利用这一维度不依赖分…...

做标识的网站 知乎/网站建设免费

我们在使用mybatics的时候,在我们的xml编写之中,偶尔会遇到Cannot find class: BaseResultMap这样的问题,但是我们都很清楚的看到了,自己确确实实的定义了这样一个BaseResultMap类,那么这究竟是什么样子的问题呢&#…...

新泰网站seo/营销比较好的知名公司有哪些

C/C下测量函数运行时间 time.h介绍 C/C中的计时函数是clock(),而与其相关的数据类型是clock_t。 clock_t clock( void ); 这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,…...