20250112面试鸭特训营第20天
更多特训营笔记详见个人主页【面试鸭特训营】专栏
250112
1. TCP 和 UDP 有什么区别?
特性 | TCP | UDP |
---|---|---|
连接方式 | 面向连接(需要建立连接) | 无连接(无需建立连接) |
可靠性 | 可靠的,提供确认、重传机制 | 不可靠,没有确认和重传机制 |
数据顺序 | 保证数据按顺序到达 | 不保证数据顺序或完整性 |
流量控制 | 有流量控制(滑动窗口) | 没有流量控制 |
拥塞控制 | 有拥塞控制(如慢启动、拥塞避免) | 没有拥塞控制 |
头部开销 | 较大(最小20字节) | 较小(最小8字节) |
速度 | 较慢(需要建立连接,维护状态) | 较快(没有连接的建立和维护) |
数据传输模式 | 字节流传输模式 | 数据包传输模式 |
错误校验 | 提供错误检测和校验,保证数据正确 | 提供简单的校验,不保证数据正确 |
重传机制 | 自动重传丢失的数据包 | 无重传机制,丢失的数据包无法恢复 |
应用场景 | 需要可靠传输的场合 (如网页、文件传输) | 实时性高、能容忍丢包的应用 (如视频流、语音通信) |
协议列举 | HTTP 协议(3.0之前) HTTPS 协议 FTP 协议 SMTP 协议 POP3 协议 | HTTP 3.0 协议 DHCP 协议 DNS 协议 |
2. 说说 TCP 的三次握手和四次挥手?
客户端和服务端之间,通过三次握手建立连接,通过四次挥手断开连接
三次握手
- 第 1 次:客户端 → 服务端,发送 SYN (同步序列编号)
- A 表达了想和 B 建立连接的意愿
- 说明客户端的发送能力是正常的
- 第 2 次:服务端 → 客户端,发送 SYN-ACK (同步序列编号—确认)
- B 表达了自己的意愿
- 说明服务端的接收能力和发送能力都是正常的
- 第 3 次:客户端 → 服务端,发送 ACK (确认)
- A 告诉 B 他已经知道了 B 的意愿
- 说明客户端的接收能力是正常的
为什么一定是三次
- 如果只有一次握手
- 客户端表达了意愿,但服务端没有表达意愿,无法直接建立联系
- 如果只有两次握手
- 客户端表达了意愿,服务端也表达了意愿,但不确定客户端有没有收到服务端的意愿,无法直接建立联系
- 如有有四次握手
- 只需要三次握手就能保证客户端和服务端都表达意愿且成功接收到对方的消息
- 理论上三次及以上的握手都可以成功建立连接,但第四次握手就显得很冗余,浪费资源
- 三次握手是保障双方信息对等,且能避免出现超时连接导致出现脏连接的最少握手次数
客户端和服务端之间,通过三次握手建立连接,通过四次挥手断开连接
四次挥手
- 第 1 次:客户端 → 服务端,发送 FIN 包(FIN = 1,表示要关闭连接)
- A 表达了想和 B 断开连接的意愿
- 第 2 次:服务端 → 客户端,发送 ACK 包(ACK = 1,表示确认收到客户端的请求)
- B 收到了 A 的意愿
- 第 3 次:服务端 → 客户端,发送 FIN 包
- B 将所有数据发送给 A
- 第 4 次:客户端 → 服务端,发送 ACK 包(ACK = 1,表示确认收到服务端的请求)
- A 收到了 B 的意愿
为什么一定是四次
- 如果只有一次挥手
- 客户端表达了意愿,但服务端没有表达意愿,无法直接建立联系
- 如果只有两次挥手
- 客户端表达了意愿,服务端收到了客户端的意愿,但服务端没有把数据反馈给客户端
- 如果只有三次挥手
- 客户端表达了意愿,服务端收到了客户端的意愿,服务端把数据反馈给客户端,但不确定客户端有没有收到数据信息,无法断开连接
- 如有有五次挥手
- 只需要四次挥手就能保证客户端和服务端都表达意愿且确定断开连接
- 理论上四次及以上的挥手都可以成功建立连接,但第五次挥手就显得很冗余,浪费资源
- 四次挥手是保障双方信息对等,且能避免出现数据丢失导致出现脏连接的最少挥手次数
3. TCP 是用来解决什么问题?
TCP 是什么
- TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议,广泛应用于计算机网络中,尤其是互联网中。
- 它是互联网协议族(TCP/IP协议族)中的核心协议之一。
- TCP用于在网络中实现端到端的通信,确保数据可靠地传输。
TCP的主要特点
-
面向连接
- 在发送数据之前,TCP必须先在通信双方之间建立一个连接。
- 这个连接是通过三次握手过程来实现的,确保双方都准备好进行数据传输。
-
可靠性
- TCP通过数据包的序号和确认机制来保证数据按顺序到达并且没有丢失。
- 如果数据包丢失或出错,TCP会自动重传。
-
流量控制
- TCP使用流量控制机制来避免发送方发送过多的数据,超出接收方的处理能力。
- 它通过滑动窗口机制来控制双方的数据流量,确保接收方能够处理所有接收到的数据。
-
拥塞控制
- TCP能够检测网络中的拥塞并通过调整数据发送速率来缓解网络负担。
- 它采用多种算法(如慢启动、拥塞避免、快速重传和快速恢复)来控制数据流的发送速度。
-
有序数据传输
- TCP确保数据按发送顺序到达接收方。
- 即使数据包在网络中以不同的路径传输,TCP也会重新排列接收到的数据包,使其按正确的顺序交付给应用程序。
-
全双工通信
- TCP支持全双工通信,即双方可以同时发送和接收数据。
TCP 解决的问题
TCP 通过提供可靠性传输、流量控制、拥塞控制和连接管理,解决了数据在不可靠 IP 网络上的传输问题。
- 可靠性传输
- TCP 确保数据包在网络传输过程中不丢失、不重复,并且按顺序到达。
- 通过确认(ACK)、重传机制以及序列号,TCP 能够保证数据在不可靠的 IP 网络上可靠传输。
- 流量控制
- TCP 通过滑动窗口机制调节发送方的数据发送速率,防止接收方因为处理能力有限而被数据流淹没。
- 滑动窗口用于动态调整可以发送的数据量。接收方通过发送窗口大小通告,指示发送方可以发送的最大数据量。
- 这种机制不仅避免了接收方的溢出,还提高了数据传输效率。
- 拥塞控制
- TCP 通过拥塞避免算法
如慢启动、拥塞避免、快速重传和快速恢复
来防止网络过载,确保网络资源的公平使用和稳定性。 - 慢启动:逐步增加发送窗口,直到检测到网络的拥塞点。
- 拥塞避免:当达到网络容量后,逐渐增加窗口以避免拥塞。
- 快速重传和快速恢复:在检测到包丢失时,立即进行重传并调整发送窗口,快速恢复到正常传输状态。
- TCP 通过拥塞避免算法
- 连接管理
- TCP 是面向连接的协议,采用三次握手(建立连接)和四次挥手(断开连接)机制来管理会话,确保通信的可靠性和状态的同步。
- 三次握手:建立连接时,双方通过三次信息交换( SYN , SYN-ACK , ACK)来确保双方都准备好进行数据传输,并协商参数(如初始序列号)。
- 四次挥手:断开连接时,通过四次消息交换来确保数据传输完成且资源可以安全释放,防止未传输的数据丢失。
TCP的工作过程
-
建立连接(三次握手)
- 在通信双方之间建立连接时,TCP使用三次握手来确认双方都能正常通信。
- 第一步:客户端发送一个SYN(同步)信号,表示请求建立连接。
- 第二步:服务器接收到 SYN 信号后,回复一个 SYN + ACK(确认)信号,表示同意连接。
- 第三步:客户端接收到 SYN + ACK 后,再发送一个 ACK(确认)信号,表示连接建立成功。
- 在通信双方之间建立连接时,TCP使用三次握手来确认双方都能正常通信。
-
数据传输(甜蜜生活ing)
- 一旦连接建立,TCP开始传输数据。数据以数据段的形式被封装,其中包含序列号、确认号、校验和等信息。
- 在传输过程中,发送方会给每个数据包分配一个序列号,接收方会对每个收到的数据包发送确认应答(ACK)。如果发送方在一定时间内没有收到确认,它会重传数据包。
-
连接终止(四次挥手)
- 当数据传输完成时,连接将被终止。这个过程叫做“四次挥手”:
- 第一步:客户端发送一个FIN(结束)信号,表示数据发送完毕,准备关闭连接。
- 第二步:服务器收到FIN信号后,确认并回复一个ACK信号。
- 第三步:服务器发送FIN信号,表示它也准备关闭连接。
- 第四步:客户端收到服务器的FIN信号后,回复ACK信号,连接最终关闭。
- 当数据传输完成时,连接将被终止。这个过程叫做“四次挥手”:
TCP报文结构
- TCP报文由多个字段组成,具体如下
字段名 | 含义 |
---|---|
源端口号 | 发送端的端口 |
目标端口号 | 接收端的端口 |
序列号 | 用于数据重排序,保证数据的顺序 |
确认号 | 表示接收到的数据的下一序列号 |
数据偏移 | 数据在报文中的起始位置 |
标志位 | 包括SYN、ACK、FIN等标志,指示连接的状态 |
窗口大小 | 表示接收方的缓冲区大小,用于流量控制 |
校验和 | 用于错误检测,保证数据的完整性 |
TCP 为什么可靠
TCP 之所以被称为可靠的协议,主要是因为它提供了以下功能
-
数据完整性:使用校验和确保数据在传输中没有被破坏。
-
数据顺序:保证数据按顺序到达接收方,且接收方能够重新排序乱序到达的数据。
-
流量控制:通过滑动窗口机制避免接收方溢出。
-
拥塞控制:通过动态调整发送速率避免网络拥塞。
-
重传机制:确保丢失的数据会被重新传输。
-
可靠的连接建立和关闭:通过三次握手和四次挥手确保连接的正确建立和断开。
-
防止数据重复:通过序列号和确认机制防止重复数据的接收。
相关文章:
20250112面试鸭特训营第20天
更多特训营笔记详见个人主页【面试鸭特训营】专栏 250112 1. TCP 和 UDP 有什么区别? 特性TCPUDP连接方式面向连接(需要建立连接)无连接(无需建立连接)可靠性可靠的,提供确认、重传机制不可靠,…...
使用conda出现requests.exceptions.HTTPError 解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
玩转大语言模型——langchain调用ollama视觉多模态语言模型
系列文章目录 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 langchain调用ollama视觉多模态语言模型 系列文章目录前言使用Ollama下载模型查找模型下载模型 测试模型ollama测试langchain测试加载图片加载模型…...
【玩转MacBook】mdfind命令搜索
mdfind 是 macOS 上的一个命令行工具,它允许用户根据元数据来查找文件。mdfind 使用 Spotlight 索引来快速搜索文件系统中的项目。这意味着它可以非常快地找到文件,因为它不直接在磁盘上搜索,而是查询由 Spotlight 维护的索引数据库。 基本用…...
数据结构与算法之二叉树: LeetCode 637. 二叉树的层平均值 (Ts版)
二叉树的层平均值 https://leetcode.cn/problems/average-of-levels-in-binary-tree/description/ 描述 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值与实际答案相差 1 0 − 5 10^{-5} 10−5 以内的答案可以被接受 示例 1 输入:root…...
【巨实用】Git客户端基本操作
本文主要分享Git的一些基本常规操作,手把手教你如何配置~ ● 一个文件夹中初始化Git git init ● 为了方便以后提交代码需要对git进行配置(第一次使用或者需求变更的时候),告诉git未来是谁在提交代码 git config --global user.na…...
从预训练的BERT中提取Embedding
文章目录 背景前置准备思路利用Transformer 库实现 背景 假设要执行一项情感分析任务,样本数据如下 可以看到几个句子及其对应的标签,其中1表示正面情绪,0表示负面情绪。我们可以利用给定的数据集训练一个分类器,对句子所表达的…...
BGP 泄露
大家读完觉得有帮助记得关注和点赞!!! 目录 1. BGP 是什么? 2. 什么是 BGP 泄露? 3. 今天发生了什么? 4. 正常和被劫持状态下的路由示意图 5. 受影响区域 6. 责任在谁? 7. 有办法避免这…...
IntelliJ IDEA和MAVEN基本操作:项目和缓存存储到非C盘
为了将 IntelliJ IDEA 的所有项目和缓存存储到 C 盘以外的地方,以下是你需要调整的设置和步骤: 1. 更改项目默认存储位置 打开 IntelliJ IDEA。点击顶部菜单的 File > Settings (Windows)或 IntelliJ IDEA > Preferences &…...
Leetcode 3418. Maximum Amount of Money Robot Can Earn
Leetcode 3418. Maximum Amount of Money Robot Can Earn 1. 解题思路2. 代码实现 题目链接:3418. Maximum Amount of Money Robot Can Earn 1. 解题思路 这一题我的思路比较暴力,就是一个动态规划,本质上就是全量遍历,然后找到…...
occ的开发框架
occ的开发框架 1.Introduction This manual explains how to use the Open CASCADE Application Framework (OCAF). It provides basic documentation on using OCAF. 2.Purpose of OCAF OCAF (the Open CASCADE Application Framework) is an easy-to-use platform for ra…...
SYS_OP_MAP_NONNULL NULL的等值比较
无意在数据库中发现了这个操作SYS_OP_MAP_NONNULL。 SYS_OP_MAP_NONNULL应该不是数据库中的对象,因为在DBA_OBJECTS中根本找不到它,而在STANDARD和DBMS_STANDARD包中也找不到函数说明。 SQL> SELECT * 2 FROM DBA_OBJECTS 3 WHERE OBJECT_NAME…...
acwing_3196_I‘m stuck
acwing_3196_I’m stuck // // Created by HUAWEI on 2024/11/17. // #include<iostream> #include<cstring> #include<algorithm>using namespace std;const int N 50 5; char g[N][N];// 地图 bool str1[N][N], str2[N][N]; // 判断1,判断2 …...
C++实现设计模式---状态模式 (State)
状态模式 (State) 状态模式 是一种行为型设计模式,它允许对象在运行时根据内部状态的改变来动态改变其行为。通过将状态相关的行为封装到独立的类中,状态模式使得状态的切换更加清晰和灵活。 意图 将对象的行为和状态分离,随着状态的改变动…...
【1】Word:邀请函
目录 题目 文字解析 流程 题目 文字解析 考生文件夹☞Word.docx☞一定要用ms打开,wps打开作答无效☞作答完毕,F12或者手动另存为(考生文件夹:路径文件名) 注意:一定要检查,很有可能你前面步…...
作业(一)
1、shell 脚本写出检测 /tmp/size.log 文件如果存在显示它的内容,不存在则创建一个文件将创建时间写入。 # vim a.sh#!/bin/bash#先对文件/tmp/size.log 是否存在进行判断 if [ -f /tmp/size.log ]; #如果存在,则用cat命令显示文件内容thencat /tmp/…...
[SAP ABAP] APPEND INITIAL LINE 追加空行
语法格式 APPEND INITIAL LINE TO itab.示例1 SFLIGHT(航班) 输出结果: 示例2 我们可以使用下面的语法进行内表分配指针,追加空行并赋值的操作 APPEND INITIAL LINE TO lt_tab ASSIGNING FIELD-SYMBOL(<lfs_val>). REPORT z437_test_2025.* 自…...
Meilisearch ASP.Net Core API 功能demo
安装 MeiliSearch 0.15.5 0.15.5demo code using Meilisearch; using System.Data; using System.Text.Json; using System.Text.Json.Serialization;namespace MeiliSearchAPI {public class MeilisearchHelper{public MeilisearchHelper(){DefaultClient…...
口碑很好的国产LDO芯片,有哪些?
在几乎任何一个电路设计中,都可能会使用LDO(低压差线性稳压器)这个器件。 虽然LDO不是什么高性能的IC,但LDO芯片市场竞争异常激烈。最近几年,诞生了越来越多的精品国产LDO,让人看得眼花缭乱。 业内人士曾经…...
深入浅出C#线程池ThreadPool:提升程序性能的利器
深入浅出C#线程池ThreadPool:提升程序性能的利器 在C#编程中,线程是并发编程的基石,它使我们能够同时执行多个任务,提升程序的响应速度和效率。然而,直接创建和管理线程会带来一定的开销,例如线程创建和销…...
git问题
拉取项目代码后,出现 1、找回未commit的代码 2、记录不全,只是显示部分代码记录...
Code-Server 项目介绍与部署指南
搜索关注,分享更多有趣的知识。 在这里插入图片描述 1. 概述 GitHub: https://github.com/coder/code-server 在日常学习和工作中,Visual Studio Code(VSCode)已成为许多开发者的首选代码编辑器。然而,其…...
NAT技术
NAT技术 1. NAT原理 NAT(Network Address Translation,网络地址转换)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。路由器构建了子网,将…...
pytest 常用插件
pytest 提供了许多功能强大的插件来增强测试体验和执行能力。以下是一些常用的 pytest 插件介绍,并结合 pytest.main() 进行使用的示例。 1. pytest-xdist pytest-xdist 插件用于并行化测试的执行,可以将测试分配到多个 CPU 核心并行运行,从…...
Avalonia 入门笔记(零):概述
Avalonia 是一个基于 .NET 和 Skia 的开源、跨平台 UI 框架,支持 Windows、Linux、macOS、iOS、Android 和 WebAssembly。Skia 是一个基于 C 的开源 2D 渲染引擎,Avalonia 通过 Skia 自绘 UI 控件,保证在全平台具有一致的观感 基于 .NET 的跨…...
19_TypeScript 声明文件 --[深入浅出 TypeScript 测试]
TypeScript 声明文件(.d.ts 文件)用于描述 JavaScript 库或模块的类型信息,使得 TypeScript 编译器能够在使用这些库时提供类型检查和智能感知。声明文件并不包含任何实现代码,只定义了接口、类、函数等的类型签名。这对于确保类型…...
如何当前正在运行的 Elasticsearch 集群信息
要查看当前正在运行的 Elasticsearch 集群信息,可以通过以下几种方法: 1. 使用 _cluster/health API _cluster/health API 返回集群的健康状态、节点数量、分片状态等信息。可以用 curl 命令直接访问: curl -X GET "http://localhost…...
【ArcGIS微课1000例】0138:ArcGIS栅格数据每个像元值转为Excel文本进行统计分析、做图表
本文讲述在ArcGIS中,以globeland30数据为例,将栅格数据每个像元值转为Excel文本,便于在Excel中进行统计分析。 文章目录 一、加载globeland30数据二、栅格转点三、像元值提取至点四、Excel打开一、加载globeland30数据 打开配套实验数据包中的0138.rar中的tif格式栅格土地覆…...
【hadoop学习遇见的小问题】centos常见配置 添加组用户权限 修改主机名等
1、指定静态ip vi /etc/sysconfig/network-scripts/ifcfg-eth0修改BOOTPROTO为static BOOTPROTOstatic IPADDR192.168.80.145 NETMASK255.255.255.0 GATEWAY192.168.80.2IPADDR、NETMASK用ifconfig命令即可查看 GATEWAY如何查看(编辑—虚拟网络编辑器—上面选择NA…...
16_Redis Lua脚本
Redis Lua脚本是Redis提供的一种强大的扩展机制。 1.Redis Lua脚本介绍 1.1 基本概念 Redis Lua脚本允许开发者将一段Lua语言编写的代码发送给Redis服务器执行。这项功能自Redis 2.6版本引入以来,为用户提供了强大的灵活性和扩展能力,使得可以在Redis内部直接处理复杂的业…...
Appium版本升级,需要注意哪些点:使用UiAutomator2Options传递capabilities
mac上安装的是较新的Appium版本,在跑之前写的Android UI 自动化代码时报错:AttributeError: dict object has no attribute to_capabilities。 查了一下资料,这是因为较新的 Selenium 和 Appium 版本要求使用 Options 类来定义能力ÿ…...
MySQL的增删改查(基础)-下篇
修改 真正在改硬盘了,这样的修改是“持久有效”。一定要确保,update的修改是改对了,改出问题来就麻烦。指定update的时候,如果当前不指定任何条件,就会针对所有的行都能生效! (把整个表都给改了)。 案例 --…...
Mysql--基础篇--事务(ACID特征及实现原理,事务管理模式,隔离级别,并发问题,锁机制,行级锁,表级锁,意向锁,共享锁,排他锁,死锁,MVCC)
在MySQL中,事务(Transaction)是一组SQL语句的集合,这些语句一起被视为一个单一的工作单元。事务具有ACID特性,确保数据的一致性和完整性。通过事务,可以保证多个操作要么全部成功执行,要么全部不…...
Android系统定制APP开发_如何对应用进行系统签名
前言 当项目开发需要使用系统级别权限或frame层某些api时,普通应用是无法使用的,需要在AndroidManifest中配置sharedUserId: AndroidManifest.xml中的android:sharedUserId“android.uid.system”,代表的意思是和系统相同的uid&a…...
Vue篇-06
1、路由简介 vue-rooter:是vue的一个插件库,专门用来实现SPA应用 1.1、对SPA应用的理解 1、单页 Web 应用(single page web application,SPA)。 2、整个应用只有一个完整的页面 index.html。 3、点击页面中的导航链…...
学习threejs,导入wrl格式的模型
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.VRMLLoader wrl模型加…...
winform第三方界面开源库AntdUI的使用教程保姆级环境设置篇
1. AntdUI 1.1. 导入项目 1.1.1. 首先新建一个空白的基于.net的Winfrom项目1.1.2. 复制AntdUI中src目录到我们的解决方案下面1.1.3. 解决方案下添加现有项目1.1.4. 添加项目引用 1.2. 编写代码 1.2.1. 改写Form1类,让其继承自public partial class Form1 : AntdUI.W…...
likeshop同城跑腿系统likeshop回收租赁系统likeshop多商户商城安装及小程序对接方法
前言:首先likeshop是一个开发平台,是一个独创的平台就像TP内核平台一样,你可以在这个平台上开发和衍生出很多伟大的产品,以likeshop为例,他们开发出商城系统,团购系统,外卖点餐系统,…...
java -jar启动项目报错:XXX.jar中没有主清单属性
XXX.jar中没有主清单属性 1、错误复现2、错误原因3、解决方案 java -jar启动项目报错:XXX.jar中没有主清单属性 1、错误复现 今天使用springboot给项目打了jar包,使用命令启动时报错,截图如下: 2、错误原因 项目的pom文件配置如…...
浅谈云计算03 | 云计算的技术支撑(云使能技术)
云计算的技术支撑 一、定义与内涵1.1 定义与内涵 二、云计算使能技术架构2.1 宽带网络和 Internet 架构2.2 数据中心技术2.3 虚拟化技术2.4 Web 技术2.5 多租户技术2.6 服务技术 一、定义与内涵 1.1 定义与内涵 云计算技术包含一些基础的关键技术,这里称为使能技术…...
使用LinkedList手撕图的邻接表
主要是学习图的邻接表的核心结构等等,话不多说直接上代码: import java.util.LinkedList;public class GrapAdj {private int n ; // 表示图中顶点的数量。private LinkedList<Integer>[] adj;public GrapAdj(int n){this.n n;adj new LinkedLis…...
学习RocketMQ
1.为什么要用MQ? 消息队列是一种“先进先出”的数据结构 其应用场景主要包含以下4个方面: 1.1 异步解耦 最常见的一个场景是用户注册后,需要发送注册邮件和短信通知,以告知用户注册成功。传统的做法有以下两种: …...
sap mm学习笔记
1. 业务流程 2. 组织架构 3. 物料主数据 4.采购主数据 5. 采购管理 6. 库存管理 7.物料主数据 8. 采购申请 ME51N...
Dockerfile 构建java镜像并运行部署java项目
目录 1. 前提准备 2. 什么是Dockerfile 3. 步骤 3.1. 创建目录 3.2. 编写dockerfile文件 3.3. 构建镜像 3.4. 运行容器 3.5. 验证 4. 总结 1. 前提准备 (1) 准备一个jar打包文件,已为大家准备(我这里的包名为 app.jar) 资源链接,点我下载 (2) 已经下载…...
【C语言系列】函数递归
函数递归 一、递归是什么?1.1尾递归 二、递归的限制条件三、递归举例3.1举例一:求n的阶乘3.2举例二:顺序打印一个整数的每一位 四、递归与迭代4.1举例三:求第n个斐波那契数 五、拓展学习青蛙跳台问题 一、递归是什么? …...
windows10 安装 Golang 版本控制工具g与使用
下载包:https://github.com/voidint/g/releases 解压, 并添加到环境变量 g 常用命令 查询当前可供安装的stable状态及所有的 go 版本 # stable 版本 g ls-remote stable# 所有版本 g ls-remote安装目标 go 版本1.23.4g install 1.23.4切换到已安装的…...
WordPress开发进群V2主题,多种引流方法,引私域二次变现
介绍: 全新前端UI界面,多种前端交互特效让页面不再单调,进群页面群成员数,群成员头像名称,每次刷新页面随机更新不重复,最下面评论和点赞也是如此随机刷新不重复 进群页面简介,群聊名称&#…...
在 CentOS/Red Hat Linux 中安装 Docker
在 Red Hat Linux 中安装 Docker 在 Red Hat Linux (RHEL) 中安装 Docker 需要一些准备工作,尤其是针对不同版本的系统(如 RHEL 7、8、9)。以下是具体的安装步骤: 步骤 1:检查系统版本 在安装前,确认系统…...
【DAPM杂谈之二】实践是检验真理的标准
本文主要分析DAPM的设计与实现 内核的版本是:linux-5.15.164,下载链接:Linux内核下载 主要讲解有关于DAPM相关的知识,会给出一些例程并分析内核如何去实现的 /**************************************************************…...
关于使用FastGPT 摸索的QA
近期在通过fastGPT,创建一些基于特定业务场景的、相对复杂的Agent智能体应用。 工作流在AI模型的基础上,可以定义业务逻辑,满足输出对话之外的需求。 在最近3个月来的摸索和实践中,一些基于经验的小问题点(自己也常常…...