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

Java后端高频面经——计算机网络

  1. TCP/IP四层模型?输入一个网址后发生了什么,以百度为例?(美团)

    (1)四层模型

    • 应用层:支持 HTTP、SMTP 等最终用户进程
    • 传输层:处理主机到主机的通信(TCP、UDP)
    • 网络层:寻址和路由数据包(IP 协议)
    • 链路层:通过网络的物理电线、电缆或无线信道移动比特

    (2)网络过程

    img

    数据在网络中传输

    • 解析URL:分析 URL 所需要使用的传输协议和请求的资源路径。如果输入的 URL 中的协议或者主机名不合法,将会把地址栏中输入的内容传递给搜索引擎。如果没有问题,浏览器会检査 URL 中是否出现了非法字符,则对非法字符进行转义后在进行下一过程。
    • 缓存判断:浏览器会判断所请求的资源是否在缓存里,如果请求的资源在缓存里且没有失效,那么就直接使用,否则向服务器发起新的请求。
    • DNS解析:如果资源不在本地缓存,首先需要进行DNS解析。浏览器会向本地DNS服务器发送域名解析请求,本地DNS服务器会逐级查询,最终找到对应的IP地址。
    • 获取MAC地址:当浏览器得到 IP 地址后,数据传输还需要知道目的主机 MAC 地址,因为应用层下发数据给传输层,TCP 协议会指定源端口号和目的端口号,然后下发给网络层。网络层会将本机地址作头源地址,获取的 IP 地址作为目的地址。然后将下发给数据链路层,数据链路层的发送需要加入通信双方的 MAC 地址,本机的 MAC地址作为源 MAC 地址,目的 MAC 地址需要分情况处理。通过将IP 地址与本机的子网掩码相结合,可以判断是否与请求主机在同一个子网里,如果在同一个子网里,可以使用 APR 协议获取到目的主机的 MAC 地址,如果不在一个子网里,那么请求应该转发给网关,由它代为转发,此时同样可以通过 ARP 协议来获取网关的 MAC地址,此时目的主机的 MAC地址应该为网关的地址。
    • 建立TCP连接:主机将使用目标 IP地址和目标MAC地址发送一个TCP SYN包,请求建立一个TCP连接然后交给路由器转发,等路由器转到目标服务器后,服务器回复一个SYN-ACK包,确认连接请求。然后,主机发送一个ACK包,确认已收到服务器的确认,然后 TCP 连接建立完成。
    • HTTPS 的 TLS 四次握手:如果使用的是 HTTPS 协议,在通信前还存在 TLS 的四次握手。
    • 发送HTTP请求:连接建立后,浏览器会向服务器发送HTTP请求。请求中包含了用户需要获取的资源的。信息,例如网页的URL、请求方法(GET、POST等)等。
    • 服务器处理请求并返回响应:服务器收到请求后,会根据请求的内容进行相应的处理。例如,如果是请求网页,服务器会读取相应的网页文件,并生成HTTP响应。
  2. http和https的区别?(百度)Https的ssl要加密解密,握手过程说一下(百度、字节、腾讯)

    (1)http和https的区别?

    • HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
    • HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
    • 两者的默认端口不一样,HTTP 默认端口号是 80,HTTPS 默认端口号是443.
    • HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
    • img

    (2)SSL/TLS 的握手过程

    ​ 传统的 TLS 握手基本都是使用 RSA 算法来实现密钥交换的,在将 TLS 证书部署服务端时,证书文件其实就是服务端的公钥,会在 TLS 握手阶段传递给客户端,而服务端的私钥则一直留在服务端,一定要确保私钥不能被窃取。
    ​ 在 RSA 密钥协商算法中,客户端会生成随机密钥,并使用服务端的公钥加密后再传给服务端。根据非对称加密算法,公钥加密的消息仅能通过私钥解密,这样服务端解密后,双方就得到了相同的密钥,再用它加密应用消息。

    • TLS第一次握手:客户端向服务器发起加密通信请求,ClientHello请求。

      ①客户端支持的TLS协议版本。②客户端生产的随机数(Client Random),用于生成会话密钥。③客户端支持的密码套件列表,如RSA加密算法。

    • TLS第二次握手:服务端向客户端发出响应,SeverHello请求。

      ①确认TLS协议版本,如浏览器不支持则关闭加密通话。②服务器产生的随机数(Sever Random),用于会话密钥生成。③确认密码套件列表。④服务器的数字证件(证件里包含非对称加密的公钥)。

    • TLS第三次握手:客户端通过浏览器或者操作系统中的公钥确认服务器的数字证书的真实性。如果证书没有问题,客户端会从数字证书中取出服务器的公钥,然后使用它加密报文。

      ①一个随机数(pre-master secret),该随机数会被服务器公钥加密。②加密通信算法改变通知,表示随后的信息都将用「会话秘钥」加密通信。③客户端握手结束通知,表示客户端的握手阶段已经结束。

      此时,浏览器会根据前三次握手中的三个随机数,通过双方协商的加密算法生成会话密钥

    • TLS第四次握手:服务端用公钥对第三个随机数解密,并通过协商的加密算法生成会话密钥

      ①加密通信算法改变通知。②服务端握手结束通知。

    接下来,客户端与服务器进入加密通信,本质上是使用普通的 HTTP 协议,只不过用「会话秘钥」加密内容。(后面就是对称加密解密的过程了,因为会话密钥已经安全的“传送”给了通信的双方。)

  3. TCP三次握手过程?为啥是三次?两次呢?每一次握手中间网络阻塞会出现什么情况?(滴滴)

    TCP三次握手过程:

    TCP(Transmission Control Protocol, 传输控制协议)的三次握手过程是为了在通信双方之间建立可靠的连接,确保双方都具备发送和接收数据的能力。

    第一次握手:客户端 -> 服务端: 发送 SYN 包

    • 客户端发送一个 SYN(Synchronize, 同步)报文给服务端,表示请求建立连接。
    • 这个报文中包含一个初始序列号 seq = x
    • 状态变化:
      • 客户端: CLOSED → SYN-SENT
      • 服务端: 依旧是 LISTEN

    第二次握手:服务端 -> 客户端: 发送 SYN + ACK 包

    • 服务端收到 SYN 后,确认连接请求,同意建立连接。
    • 服务端发送一个包含 SYN 和 ACK 的报文,表示“我收到了你的请求”。
      • SYN: 用于同步序列号,服务端发送 seq = y
      • ACK: 确认客户端的 SYN,设置 ack = x + 1
    • 状态变化:
      • 服务端: LISTEN → SYN-RECEIVED

    第三次握手:客户端 -> 服务端: 发送 ACK 包

    • 客户端收到服务端的 SYN + ACK 后,发送一个 ACK 报文,确认连接建立成功。
      • ACK: 设置 ack = y + 1,确认服务端的 SYN。
    • 状态变化:
      • 客户端: SYN-SENT → ESTABLISHED
      • 服务端: SYN-RECEIVED → ESTABLISHED

    为啥是三次?两次不行吗?

    1. 保证双向通信能力:
    • 三次握手:
      • 确保 客户端和服务端都可以发送和接收数据
      • 第一次: 客户端确认自己发送能力。
      • 第二次: 服务端确认自己接收和发送能力。
      • 第三次: 客户端确认自己接收能力。
    • 两次握手:
      • 只能确认单向能力,无法确保双向通信正常。
      • 风险: 服务端可能一直等待客户端的数据,导致资源浪费。
    1. 防止历史连接造成的误判:
    • 三次握手: 能有效避免旧的连接请求(比如网络延迟导致的失效报文)造成误判,浪费资源。
    • 两次握手: 无法确认是否是历史连接,会导致伪连接(假死连接),浪费资源。

    如果某次握手中网络阻塞了会咋样?

    1. 第一次握手阻塞(SYN 丢失):
    • 情况: 客户端发出的 SYN 报文丢失。
    • 结果: 客户端超时后会重新发送 SYN,直到达到重试上限。
    • 影响: 连接延迟,但不会建立伪连接。
    1. 第二次握手阻塞(SYN + ACK 丢失):
    • 情况: 服务端发送的 SYN + ACK 报文丢失。
    • 结果: 客户端超时后会重发第一次握手的 SYN。
    • 影响: 连接延迟,服务端会重新发送 SYN + ACK。
    1. 第三次握手阻塞(ACK 丢失):
    • 情况: 客户端发送的 ACK 报文丢失。
    • 结果:
      • 服务端会认为连接未成功,超时后关闭连接。
      • 客户端认为连接已建立,会发送数据,导致服务端发送 RST(复位报文),断开连接。
    • 影响: 连接失败,客户端收到 RST 报文后,知道连接未成功。

    总结一下:

    • 为啥是三次: 保证双向通信能力,防止历史连接误判。
    • 两次不行的原因: 无法确认双向通信,容易产生伪连接。
    • 网络阻塞时:
      • 第一次阻塞: 客户端重试。
      • 第二次阻塞: 客户端重试,服务端重新发送 SYN + ACK。
      • 第三次阻塞: 服务端断开,客户端收到 RST。
  4. tcp、udp在哪一层?有什么区别?各自的应用场景(美团、滴滴)

    TCP 和 UDP 在哪一层?

    • TCP(Transmission Control Protocol, 传输控制协议)UDP(User Datagram Protocol, 用户数据报协议) 都属于 OSI 七层模型TCP/IP 协议模型 中的 传输层 (Transport Layer)
    • 传输层的作用:
      • 负责端到端的通信。
      • 提供差错检测、流量控制、数据传输等功能。

    TCP 和 UDP 的区别:

    对比维度TCP 🌟(可靠,面向连接)UDP ⚡(不可靠,面向无连接)
    协议类型面向连接的协议无连接的协议
    是否建立连接需要三次握手建立连接不需要建立连接
    可靠性可靠,保证数据按顺序到达不可靠,可能丢包
    流量控制和拥塞控制有流量控制和拥塞控制无流量控制和拥塞控制
    数据传输方式面向字节流,按顺序发送和接收面向报文,不拆分和重组
    头部开销比较大 (20-60 字节)比较小 (8 字节)
    传输效率相对较低 (因为要保证可靠性)高 (因为无确认机制)
    适用场景可靠性要求高的场景实时性要求高但不强调可靠性的场景

    各自的应用场景:

    1. TCP 适用场景 (可靠传输,慢一点也没关系的场景):
    • HTTP/HTTPS:
      • 网页浏览、登录、电商网站等,必须保证所有数据正确无误地到达。
    • FTP (文件传输协议):
      • 传文件必须保证完整性。
    • Email (SMTP, IMAP, POP3):
      • 邮件传输要求数据完整可靠。
    • 数据库通信 (如 MySQL):
      • 数据查询和更新需要保证无丢失。
    1. UDP 适用场景 (实时传输,丢一点也无所谓的场景):
    • 视频直播 (如 RTSP, RTP):
      • 允许少量丢包,保证实时性。
    • 语音通话 (如 VoIP, Skype):
      • 轻微丢包不会明显影响体验,实时性优先。
    • 游戏通信 (如 FPS, MOBA 游戏):
      • 位置和动作数据偶尔丢失没关系,必须快。
    • DNS (域名解析):
      • 请求和响应都很短,不需要复杂的确认机制。
    • 广播与组播:
      • 如视频会议,多人同时接收数据。

    总结一下:

    1. TCP: 可靠、面向连接,适合要求高可靠性的场景,比如网页、邮件、文件传输。
    2. UDP: 不可靠、面向无连接,适合要求实时性高但不强调可靠性的场景,比如直播、语音、游戏。
    3. 应用场景:
      • TCP: HTTP, FTP, 邮件, 数据库。
      • UDP: 视频直播, 语音通话, 游戏, DNS。
  5. http在七层模型中的哪一层?(美团)

    HTTP 在七层模型中的哪一层?

    HTTP(HyperText Transfer Protocol, 超文本传输协议) 属于 OSI 七层模型 中的 应用层 (Application Layer),也是 TCP/IP 协议模型 中的应用层协议。

    HTTP 的工作机制:

    • 协议类型: 应用层协议,基于 TCP 传输层。
    • 工作方式: 请求-响应模式 (Client-Server)。
    • 传输协议: 通过 TCP(传输层) 进行数据传输。
    • 特点: 无状态协议 (每次请求独立),可以通过 Cookie 和 Session 实现状态保持。
  6. ping命令用了udp还是tcp?ping命令使用了什么协议?(美团)

    ping 命令用了 UDP 还是 TCP?

    都不是! ping 命令使用的是 ICMP 协议 (Internet Control Message Protocol, 因特网控制报文协议),而不是 UDP 或 TCP。

    ICMP 是什么?

    • 协议层: 属于 OSI 七层模型TCP/IP 协议模型 中的 网络层 (Network Layer)
    • 作用: 用于传递控制消息,比如网络连通性测试、错误报告等。
    • 特点:
      • 不负责数据传输,只用于发送诊断和控制信息。
      • 不使用端口号(TCP 和 UDP 才用端口)。

    ping 命令的工作原理:

    1. 发送 ICMP 请求报文 (Echo Request):
      • 你的电脑向目标 IP 发送一个 ICMP Echo Request(回显请求)报文。
      • 包含一个序列号和时间戳,用来计算往返时间 (RTT)。
    2. 接收 ICMP 回复报文 (Echo Reply):
      • 目标 IP 收到请求后,回复一个 ICMP Echo Reply(回显回复)报文。
    3. 计算网络延迟:
      • 根据 Echo Request 和 Echo Reply 的时间差,计算网络延迟 (RTT, Round-Trip Time)。

相关文章:

Java后端高频面经——计算机网络

TCP/IP四层模型?输入一个网址后发生了什么,以百度为例?(美团) (1)四层模型 应用层:支持 HTTP、SMTP 等最终用户进程传输层:处理主机到主机的通信(TCP、UDP&am…...

CSDN博客:Markdown编辑语法教程总结教程(中)

❤个人主页:折枝寄北的博客 Markdown编辑语法教程总结 前言1. 列表1.1 无序列表1.2 有序列表1.3 待办事项列表1.4 自定义列表 2. 图片2.1 直接插入图片2.2 插入带尺寸的图片2.3 插入宽度确定,高度等比例的图片2.4 插入高度确定宽度等比例的图片2.5 插入居…...

Springboot redis bitMap实现用户签到以及统计,保姆级教程

项目架构,这是作为demo展示使用: Redis config: package com.zy.config;import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.Ob…...

AI Agent系列(一) - Agent概述

AI Agent系列【一】 前言一、AI代理的特点二、 AI Agent的技术框架三、 开源自主代理 前言 AI Agent,即人工智能代理,一般直接叫做智能体 百度百科给AI Agent定义为: “以大语言模型为大脑驱动的系统,具备自主理解、感知、规划、…...

Scala 中trait的线性化规则(Linearization Rule)和 super 的调用行为

在 Scala 中,特质(Trait)是一种强大的工具,用于实现代码的复用和组合。当一个类混入(with)多个特质时,可能会出现方法冲突的情况。为了解决这种冲突,Scala 引入了最右优先原则&#…...

【Linux系统编程】初识系统编程

目录 一、什么是系统编程1. 系统编程的定义2. 系统编程的特点3. 系统编程的应用领域4. 系统编程的核心概念5. 系统编程的工具和技术 二、操作系统四大基本功能1. 进程管理(Process Management)2. 内存管理(Memory Management)3. 文…...

Unsloth - 动态 4 bit 量化

文章目录 💔 量化可能会破坏模型🦙 Llama 3.2 Vision 细节Pixtral (12B) 视觉🦙 Llama 3.2 (90B) 视觉指令 本文翻译自:Unsloth - Dynamic 4-bit Quantization (2024年12月4日 Daniel & Michael https://unsloth.…...

技术领域,有许多优秀的博客和网站

在技术领域,有许多优秀的博客和网站为开发者、工程师和技术爱好者提供了丰富的学习资源和行业动态。以下是一些常用的技术博客和网站,涵盖了编程、软件开发、数据科学、人工智能、网络安全等多个领域: 1. 综合技术博客 1.1 Medium 网址: ht…...

黑金风格人像静物户外旅拍Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 针对人像、静物以及户外旅拍照片,运用 Lightroom 软件进行风格化调色工作。旨在通过软件中的多种工具,如基本参数调整、HSL(色相、饱和度、明亮度)调整、曲线工具等改变照片原本的色彩、明度、对比度等属性,将…...

Manus 与鸿蒙 Next 深度融合:构建下一代空间计算生态

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/north 文章目录 一、技术融合背景与意义1.1 技术栈协同优势1.2 典型应用场景 二、系统架构设计2.1 整体架构图…...

并查集模板

注意理解路径压缩 static class UnionFind {int[] fa;public UnionFind(int n) {fa new int[n];for (int i 0; i < n; i) {fa[i] i;}}public int find(int i) {if (fa[i] ! i) {fa[i] find(fa[i]);}return fa[i];}public void union(int i, int j) {int fai find(i);in…...

推流项目的ffmpeg配置和流程重点总结一下

ffmpeg的初始化配置&#xff0c;在合成工作都是根据这个ffmpeg的配置来做的&#xff0c;是和成ts流还是flv&#xff0c;是推动远端还是保存到本地&#xff0c; FFmpeg 的核心数据结构&#xff0c;负责协调编码、封装和写入操作。它相当于推流的“总指挥”。 先来看一下ffmpeg的…...

使用 Python 开发的简单招聘信息采集系统

以下是一个使用 Python 开发的简单招聘信息采集系统,它包含用户登录、招聘信息收集和前后端交互的基本功能。我们将使用 Flask 作为后端框架,HTML 作为前端页面。 项目结构 recruitment_system/ ├── app.py ├── templates/ │ ├── login.html │ ├── index…...

Selenium库打开指定端口(9222、9333等)浏览器【已解决!!!】

就是在写动态爬虫爬取数据的过程中&#xff0c;如果用selenium的话&#xff0c;有一个缺点&#xff0c;就是当我们去测试一个网站能不能爬取&#xff0c;它都会重新换端口打开一个浏览器&#xff0c;不会使用上一次使用的浏览器&#xff0c;在实际使用过程中这样调试很烦&#…...

Android MVI架构模式详解

MVI概念 MVI&#xff08;Model-View-Intent&#xff09;是一种Android应用架构模式&#xff0c;旨在通过单向数据流和不可变性来简化应用的状态管理。MVI的核心思想是将用户操作、状态更新和界面渲染分离&#xff0c;确保应用的状态可预测且易于调试。 MVI的核心组件 Model&a…...

低代码开发直聘管理系统

低代码 DeepSeek 组合的方式开发直聘管理系统&#xff0c;兼职是开挂的存在。整个管理后台系统 小程序端接口的输出&#xff0c;只花了两个星期不到。 一、技术栈 后端&#xff1a;SpringBoot mybatis MySQL Redis 前端&#xff1a;Vue elementui 二、整体效果 三、表结…...

LVGL开发说明

准备工作 LVGL图形化工具&#xff1a;Gui-Guider-Setup-1.8.0-GA.exeLVGL库&#xff1a;lvgl-release-v8.3屏幕触摸驱动&#xff1a;CST816屏幕驱动&#xff1a;ST7789屏幕尺寸&#xff1a;320 * 170 触发事件 按键的点击事件 添加点击事件 触摸屏点击对应的按键后就会触发回…...

推荐优秀的开源软件合集

在信息化高度发达的今天&#xff0c;数据安全与远程协作变得越来越重要。很多企业和个人都在寻找可替代商业闭源软件的开源解决方案。今天&#xff0c;我们向大家推荐几款优秀的开源软件&#xff0c;涵盖私有云存储、远程桌面、团队协作、内容管理等多个领域。 1. Nextcloud —…...

代码随想录刷题day41|(二叉树篇)二叉树的最大深度(递归)

目录 一、二叉树理论基础 二、二叉树的深度和高度 三、递归和迭代思路 3.1 递归法 3.2 迭代法 四、相关算法题目 五、总结 一、二叉树理论基础 详见&#xff1a;代码随想录刷题day34|&#xff08;二叉树篇&#xff09;二叉树的递归遍历-CSDN博客 二、二叉树的深度和高…...

向量内积(点乘)和外积(叉乘)

文章目录 1. 向量的内积&#xff08;点积&#xff09;1.1 定义1.2 几何意义表征两个向量的投影关系计算向量夹角的余弦值 1.3 重要性质1.4 应用场景 2. 向量的外积&#xff08;叉积&#xff09;2.1 定义&#xff08;仅适用于三维空间&#xff09;2.2 几何意义2.3 重要性质2.4 应…...

PDF转JPG(并去除多余的白边)

首先&#xff0c;手动下载一个软件&#xff08;poppler for Windows&#xff09;&#xff0c;下载地址&#xff1a;https://github.com/oschwartz10612/poppler-windows/releases/tag/v24.08.0-0 否则会出现以下错误&#xff1a; PDFInfoNotInstalledError: Unable to get pag…...

【无人机路径规划】基于麻雀搜索算法(SSA)的无人机路径规划(Matlab)

效果一览 代码获取私信博主基于麻雀搜索算法&#xff08;SSA&#xff09;的无人机路径规划&#xff08;Matlab&#xff09; 一、算法背景与核心思想 麻雀搜索算法&#xff08;Sparrow Search Algorithm, SSA&#xff09;是一种受麻雀群体觅食行为启发的元启发式算法&#xff0…...

2020CVPR-SiamBAN:用于视觉跟踪的Siamese框自适应网络

原文标题&#xff1a;Siamese Box Adaptive Network for Visual Tracking 中文标题&#xff1a;用于视觉跟踪的Siamese框自适应网络 代码地址&#xff1a; GitHub - hqucv/siamban: Siamese Box Adaptive Network for Visual Tracking Abstract 大多数现有的跟踪器通常依靠多尺…...

带你从入门到精通——自然语言处理(五. 自注意力机制和transformer的输入部分)

建议先阅读我之前的博客&#xff0c;掌握一定的自然语言处理前置知识后再阅读本文&#xff0c;链接如下&#xff1a; 带你从入门到精通——自然语言处理&#xff08;一. 文本的基本预处理方法和张量表示&#xff09;-CSDN博客 带你从入门到精通——自然语言处理&#xff08;二…...

MySql自动安装脚本

一、脚本安装流程 1. 添加MySQL的Repository 使用wget命令从MySQL官方网站下载Yum Repository的RPM包。使用rpm -ivh命令安装下载的RPM包&#xff0c;以添加MySQL的Yum Repository。 2. 安装mysql-community-server 使用yum install -y mysql-community-server --nogpgchec…...

3.9【Q】csd

在计算机存储领域&#xff0c;CSD是什么&#xff1f; 基于CXL™-Type3 实现内存池化 CPU访问内存的瓶颈是什么&#xff1f;具体矛盾是什么&#xff1f; 计算型存储-2&#xff1a;标准、API实现 NUMA是什么&#xff1f;详细解释一下它的核心思想&#xff1f;...

Qt常用控件之表格QTableWidget

表格QTableWidget QTableWidget 是一个表格控件&#xff0c;行和列交汇形成的每个单元格&#xff0c;是一个 QTableWidgetItem 对象。 1. QTableWidget属性 QTableWidget 的属性只有两个&#xff1a; 属性说明rowCount当前行的个数。columnCount当前列的个数。 2. QTableW…...

数据库批处理

数据库批处理是一种处理数据的方法&#xff0c;通常用于对大量数据进行一次性操作。批处理可以有效地减少数据库操作的次数&#xff0c;提高数据处理的效率。在数据库中&#xff0c;批处理通常通过编写批处理脚本或使用相应的工具来实现。 一般情况下&#xff0c;数据库批处理…...

Flask 框架简介

Flask 框架简介 Flask 框架简介 Flask 框架简介 Flask 是一个 Python 微型网页开发框架。微型指明了 Flash 的核心是轻量级的&#xff0c;但是可以灵活扩展。下面的简单的例子要和一个数据库系统交互。Django附带了与最常见的数据库交互所需的库。另一方面&#xff0c;Flask允…...

KMP 算法的 C 语言实现

# include <stdio.h> # include <stdlib.h> # include <string.h>// 打印 KMP 匹配结果. void ColorPrint(char *T, int *result, int result_size, int m) {int green_size strlen("\x1b[31m");int reset_size strlen("\x1b[0m");cha…...

深入理解 TCP 协议:可靠传输、连接管理与经典面试题解析

TCP&#xff08;Transmission Control Protocol&#xff09;是互联网中最重要的传输层协议之一&#xff0c;其设计目标是提供可靠的、面向连接的、全双工的数据传输服务。本文将从核心机制、工作原理到经典面试题&#xff0c;全面解析 TCP 协议的关键特性。 一、TCP 核心特性 …...

雪花算法

雪花算法&#xff08;Snowflake&#xff09; 雪花算法是一种由Twitter开源的分布式ID生成算法&#xff0c;广泛应用于分布式系统中&#xff0c;用于生成全局唯一的ID。这些ID不仅具有唯一性&#xff0c;还按照时间顺序递增&#xff0c;便于排序和查询。以下是雪花算法的详细解…...

coding ability 展开第二幕(双指针——巩固篇)超详细!!!!

文章目录 前言有效的三角形个数思路 查找总价格为目标值的两个商品思路 两数之和思路 三数之和思路 四数之和思路 总结 前言 本专栏的上篇&#xff0c;讲述了双指针的一些基础的算法习题 今天我们来学习更进一步的双指针用法吧 其实也是大相径庭&#xff0c;和前面的差不多&…...

系统安全阶段练习真题(高软44)

系列文章目录 系统安全阶段练习真题 文章目录 系列文章目录前言一、真题总结 前言 本节就是系统安全的阶段练习真题&#xff0c;带答案与解析。 一、真题 总结 就是高软笔记&#xff0c;大佬请略过&#xff01;...

Mybatis Generator 使用手册

第一章 什么是Mybatis Generator&#xff1f; MyBatis Generator Core – Introduction to MyBatis Generator MyBatis生成器&#xff08;MBG&#xff09;是MyBatis框架的代码生成工具。它支持为所有版本的MyBatis生成代码&#xff0c;通过解析数据库表&#xff08;或多个表&…...

Android中AIDL和HIDL的区别

在Android中&#xff0c;AIDL&#xff08;Android Interface Definition Language&#xff09; 和 HIDL&#xff08;HAL Interface Definition Language&#xff09; 是两种用于定义跨进程通信接口的语言。AIDL 是 Android 系统最早支持的 IPC&#xff08;进程间通信&#xff0…...

Gazebo 启动时候配置物体

1. 准备模型 mkdir -p ~/.gazebo/models/table echo export GAZEBO_MODEL_PATH$HOME/.gazebo/models:$GAZEBO_MODEL_PATH >> ~/.bashrc source ~/.bashrc # 从https://github.com/osrf/gazebo_models下载模型 # 桌子 cd ~/.gazebo/models/table wget https://raw.github…...

展示深拷贝与移动语义的对比

定义 Buffer 类&#xff08;含深拷贝和移动语义&#xff09; #include <iostream> #include <chrono> #include <cstring>class Buffer { public:// 默认构造函数&#xff08;分配内存&#xff09;explicit Buffer(size_t size) : size_(size), data_(new in…...

STM32基础教程——对射式红外传感器计数实验

前言 对射式红外传感器介绍 对射式红外传感器是一种非接触式的距离检测器&#xff0c;主要由发射器和接收器两部分组成。发射器发出特定波长的红外光束&#xff0c;当物体阻挡了这条光束时&#xff0c;接收器无法接收到光线信号&#xff0c;从而产生一个开关信号来判断物体的存…...

Git与GitHub:理解两者差异及其关系

目录 Git与GitHub&#xff1a;理解两者差异及其关系Git&#xff1a;分布式版本控制系统概述主要特点 GitHub&#xff1a;基于Web的托管服务概述主要特点 Git和GitHub如何互补关系现代开发工作流 结论 Git与GitHub&#xff1a;理解两者差异及其关系 Git&#xff1a;分布式版本控…...

【时时三省】(C语言基础)赋值语句2

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 赋值运算符 赋值符号“”就是赋值运算符&#xff0c;它的作用是将一个数据赋给一个变量。如a 3的作用是执行一次赋值操作&#xff08;或称赋值运算&#xff09;。把常量3赋给变量a。也可以…...

服务器上通过ollama部署deepseek

2025年1月下旬&#xff0c;DeepSeek的R1模型发布后的一周内就火了&#xff0c;性能比肩OpenAI的o1模型&#xff0c;且训练成本仅为560万美元&#xff0c;成本远低于openAI&#xff0c;使得英伟达股票大跌。 下面我们来看下如何个人如何部署deepseek-r1模型。 我是用的仙宫云的…...

自动控制原理【知识点总结、复习笔记】

1.控制系统定义 控制系统是指通过监测和调整系统的行为&#xff0c;以达到预期目标的一套系统。它由一组相互关联的组件组成&#xff0c;这些组件协同工作&#xff0c;用于控制物理过程、机械设备、电子设备或其他系统。例如&#xff0c;一个简单的温控系统可以通过监测房间温…...

【AI】什么是Embedding向量模型?我们应该如何选择?

我们之前讲的搭建本地知识库,基本都是使用检索增强生成(RAG)技术来搭建,Embedding模型则是RAG的核心,同时也是大模型落地必不可少的技术。那么今天我们就来聊聊Embedding向量模型: 一、Embedding模型是什么? Embedding模型是一种将离散数据(如文本、图像、用户行为等)…...

openwrt路由系统------Linux 驱动开发的核心步骤

以下是 Linux 驱动开发的核心步骤,结合实践案例与注意事项,适合嵌入式设备(如 OpenWrt 路由器)开发: 一、驱动开发基本流程 1. 环境准备 工具链与内核源码 # 安装交叉编译工具链(如 ARM) sudo apt-get install gcc-arm-linux-gnueabihf# 获取目标内核源码(需匹配运行的…...

Educational Codeforces Round 7 F. The Sum of the k-th Powers 多项式、拉格朗日插值

题目链接 题目大意 求 ( ∑ i 1 n i k ) (\sum_{i1}^{n} i^k) (∑i1n​ik) m o d ( 1 0 9 7 ) mod(10^97) mod(1097) . 数据范围 &#xff1a; 1 ≤ n ≤ 1 0 9 1 \leq n \leq 10^9 1≤n≤109 , 0 ≤ k ≤ 1 0 6 0 \leq k \leq 10^6 0≤k≤106 . 思路 令 f ( n ) ∑ …...

学习笔记:利用OpenAI实现阅卷智能体

https://zhuanlan.zhihu.com/p/18047953492 ### 学习笔记&#xff1a;利用OpenAI实现阅卷智能体 #### 一、背景与需求 在各类考试中&#xff0c;选择题、判断题、填空题的阅卷相对简单&#xff0c;只需对比答案与作答是否一致。然而&#xff0c;简答题的阅卷较为复杂&#xff…...

进程的简要介绍

一.进程 1.概念&#xff1a;担当分配系统资源的实体 2.进程内核数据结构对象自己的代码和数据 或进程PCB(task_struct)自己的代码和数据 注1&#xff1a;PCB&#xff1a;操作系统中描述进程的结构体 2.进程的所有属性均可在task_struct中找到&#xff0c;管理进程其实就是…...

每日一题——乘积最大子数组

乘积最大子数组问题详解 问题描述示例约束条件 问题分析难点分析解题思路 代码实现代码说明 测试用例测试用例 1测试用例 2测试用例 3 总结 问题描述 给定一个整数数组 nums&#xff0c;请你找出数组中乘积最大的非空连续子数组&#xff08;该子数组中至少包含一个数字&#x…...

HttpServletRequest 和 HttpServletResponse 区别和作用

一、核心作用对比 对象HttpServletRequest&#xff08;请求对象&#xff09;HttpServletResponse&#xff08;响应对象&#xff09;本质客户端发给服务器的 HTTP 请求信息&#xff08;输入&#xff09;服务器返回客户端的 HTTP 响应信息&#xff08;输出&#xff09;生命周期一…...