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

Qt基础007(Tcp网络编程)

文章目录

      • QTcp服务器的关键流程
      • QTtcp客户端的关键流程
      • TCP协议
      • Socket

QTcp服务器的关键流程

工程建立,需要在.pro加入网络权限
在这里插入图片描述
创建一个基于 QTcpServer 的服务端涉及以下关键步骤:

  1. 创建并初始化 QTcpServer 实例

    • 实例化 QTcpServer 。

    • 调用 listen 方法在特定端口监听传入的连接。

  2. 处理新连接

    • 为 newConnection 信号连接一个槽函数。

    • 在槽函数中,使用 nextPendingConnection 获取 QTcpSocket 以与客户端通信。

  3. 读取和发送数据

    • 通过连接 QTcpSocket 的 readyRead 信号来读取来自客户端的数据。

    • 使用 write 方法发送数据回客户端。

  4. 关闭连接

    • 在适当的时候关闭 QTcpSocket 。

示例代码可能如下:

class MyServer : public QObject {Q_OBJECTpublic:MyServer() {QTcpServer *server = new QTcpServer(this);connect(server, &QTcpServer::newConnection, this,&MyServer::onNewConnection);server->listen(QHostAddress::Any, 1234);}private slots:void onNewConnection() {QTcpSocket *clientSocket = server->nextPendingConnection();connect(clientSocket, &QTcpSocket::readyRead, this,&MyServer::onReadyRead);// ...}void onReadyRead() {QTcpSocket *clientSocket = qobject_cast<QTcpSocket *>(sender());// 读取数据QByteArray data = clientSocket->readAll();// 处理数据// ...}
};

确保在使用 QTcpServer 和 QTcpSocket 时妥善处理网络错误和异常情况。

QTtcp客户端的关键流程

工程建立,需要在.pro加入网络权限
在这里插入图片描述
创建一个基于 QTcpSocket 的Qt客户端涉及以下步骤:

  1. 创建 QTcpSocket 实例

    • 实例化 QTcpSocket 。
  2. 连接到服务器

    • 使用 connectToHost 方法连接到服务器的IP地址和端口。
  3. 发送数据到服务器

    • 使用 write 方法发送数据。
  4. 接收来自服务器的数据

    • 为 readyRead 信号连接一个槽函数来接收数据。
  5. 关闭连接

    • 关闭 QTcpSocket 连接。

示例代码如下:

class MyClient : public QObject {Q_OBJECTpublic:MyClient() {QTcpSocket *socket = new QTcpSocket(this);connect(socket, &QTcpSocket::readyRead, this, &MyClient::onReadyRead);socket->connectToHost("server_address", 1234);}private slots:void onReadyRead() {QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());QByteArray data = socket->readAll();// 处理接收到的数据// ...}
};

TCP协议

TCP(传输控制协议)是一种广泛使用的网络通信协议,设计用于在网络中的计算机之间可靠地传输数

据。它是互联网协议套件的核心部分,通常与IP(互联网协议)一起使用,合称为TCP/IP。以下是TCP协

议的一些基本特点:

  1. 面向连接:在数据传输之前,TCP 需要在发送方和接收方之间建立一个连接。这包括三次握手过

程,确保两端都准备好进行数据传输。

  1. 可靠传输:TCP 提供可靠的数据传输服务,这意味着它保证数据包准确无误地到达目的地。如果发

生数据丢失或错误,TCP 会重新发送数据包。

  1. 顺序控制:TCP 保证数据包的传输顺序。即使数据包在网络中的传输顺序被打乱,接收方也能按照

正确的顺序重组这些数据。

  1. 流量控制:TCP 使用窗口机制来控制发送方的数据传输速率,以防止网络过载。这有助于防止接收

方被发送方发送的数据所淹没。

  1. 拥塞控制:TCP 还包括拥塞控制机制,用来检测并防止网络拥塞。当网络拥塞发生时,TCP 会减少

其数据传输速率。

  1. 数据分段:大块的数据在发送前会被分割成更小的段,以便于传输。这些段会被独立发送并在接收

端重新组装。

  1. 确认和重传:接收方对成功接收的数据包发送确认(ACK)信号。如果发送方没有收到确认,它会

重传丢失的数据包。

  1. 终止连接:数据传输完成后,TCP 连接需要被正常关闭,这通常涉及到四次挥手过程。

TCP 适用于需要高可靠性的应用,如网页浏览、文件传输、电子邮件等。然而,由于它的这些特性,TCP

在处理速度上可能不如其他协议(如UDP)那么快速。

Socket

Socket 不是一个协议,而是一种编程接口(API)或机制,用于在网络中实现通信。Socket 通常在应用层和传输层之间提供一个端点,使得应用程序可以通过网络发送和接收数据。它支持多种协议,主要是TCP 和 UDP。

以下是 Socket 的一些基本特点:

  • 类型:有两种主要类型的 Sockets —— TCP Socket(面向连接,可靠)和 UDP Socket(无连接,不可靠)。

  • 应用:在各种网络应用中广泛使用,如网页服务器、聊天应用、在线游戏等。

  • 编程语言支持:大多数现代编程语言如 Python, Java, C++, 等都提供 Socket 编程的支持。

  • 功能:提供了创建网络连接、监听传入的连接、发送和接收数据等功能。

  • QT: 在QT组件中,QTcpSocket用来管理和实现TCP Socket通信,QUdpSocket用来管理和实现UDP Socket通信

总之,Socket 是实现网络通信的基础工具之一,它抽象化了网络层的复杂性,为开发者提供了一种相对简单的方式来建立和管理网络连接。

小贴士:

TCPServer类关于监听,连接,发送,接受的API

TCPServer在网络通信中常用的信号

TCPScoket在QT实现Socket常用的API

TCPScoket在QT实现Socket常用的信号

EditText的内容读取方法,内容写入方法,在特定行写入特点颜色的方法

相关文章:

Qt基础007(Tcp网络编程)

文章目录 QTcp服务器的关键流程QTtcp客户端的关键流程TCP协议Socket QTcp服务器的关键流程 工程建立&#xff0c;需要在.pro加入网络权限 创建一个基于 QTcpServer 的服务端涉及以下关键步骤&#xff1a; 创建并初始化 QTcpServer 实例&#xff1a; 实例化 QTcpServer 。 调…...

visio导出的图片过大导致latex格式转成pdf之后很不清楚

联想电脑解决方法 右键打开方式选择【照片】&#xff0c;然后选择调整图片大小&#xff0c;将像素的宽度和高度调低。...

leetcode刷题——判断对称二叉树(C语言版)

题目描述&#xff1a; 示例 1&#xff1a; 输入&#xff1a;root [6,7,7,8,9,9,8] 输出&#xff1a;true 解释&#xff1a;从图中可看出树是轴对称的。 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false 解释&#xff1a;从图中可看出最…...

STM32与i.MX6ULL内存与存储机制全解析:从微控制器到应用处理器的设计差异

最近做FreeRTos&#xff0c;以及前面设计的RVOS&#xff0c;这种RTOS级别的系统内存上的分布与CortexA系列里面的分布有相当大的区别&#xff0c;给我搞糊涂了。 目录 STM32&#xff08;Cortex-M系列&#xff09;的内存与存储机制 Flash存储内容RAM存储内容启动与运行时流程示例…...

经验分享-上传ios的ipa文件

.ipa格式的二进制文件&#xff0c;是打包后生成的文件&#xff0c;无论我们是放上去testflight测试还是正式上传到app store&#xff0c;都需要先上传到苹果开发者中心的app store connect上的构建版本上。 在app store connect上&#xff0c;上传构建版本的功能&#xff0c;它…...

Linux423 删除用户

查找 上面已查过&#xff1a;无法使用sudo 新开个终端试试 之前开了一个终端&#xff0c;按照deepseek排查 计划再开一个进程 开一个终端 后强制删除时显示&#xff1a;此事将被报告...

AI与Web3.0:技术融合

AI与Web3.0&#xff1a;技术融合 分享一下给大家一个从0开始学习ai 的网站。点击跳转到网站。 https://www.captainbed.cn/ccc 前言 随着互联网技术的飞速发展&#xff0c;Web3.0作为下一代互联网形态&#xff0c;正以前所未有的速度改变着我们的生活方式和工作模式。Web3.0强…...

Python爬虫第18节-动态渲染页面抓取之Splash使用上篇

目录 引言 一、Splash 的简介与安装 1.1 简介 1.2 安装 二、Splash 的使用 三、Splash Lua 脚本开发 3.1 脚本入口与返回值 3.2 异步处理 四、Splash 对象属性 4.1 args 4.2 js_enabled 4.3 resource_timeout 4.4 images_enabled 4.5 scroll…...

Linux进程状态及转换关系

目录 1、就绪态&#xff08;Ready&#xff09; 2、运行态&#xff08;Running&#xff09; 3、僵尸态&#xff08;Zombie&#xff09; 4、可中断睡眠态&#xff08;Interruptible Sleep&#xff09; 5、不可中断睡眠态&#xff08;Uninterruptible Sleep&#xff09; 6、…...

Java基础:认识注解,模拟junit框架

认识注解 自定义注解 注解的原理 元注解 解析注解 应该场景-配合反射做juint框架 public static void main(String[] args) {AnnotationDemo4 a new AnnotationDemo4();Class clazz AnnotationDemo4.class;Method[] methods clazz.getDeclaredMethods();for (Method method …...

chrony服务器

时间有什么作用&#xff1f;约定干什么事情&#xff0c;会出问题&#xff0c;双方约定会达成 一旦有一方的时间不准确&#xff0c;约定都会达不成 不联网&#xff0c;计算机运行一个月&#xff0c;你的计算机就会和标准的时间差一两分钟 通常情况下&#xff0c;硬件时间的运…...

Springboot——Redis的使用

在当今的软件开发领域&#xff0c;缓存技术是提升应用性能的关键手段之一。Redis 作为一款高性能的键值对存储数据库&#xff0c;凭借其出色的读写速度和丰富的数据结构&#xff0c;在缓存场景中得到了广泛应用。Spring Boot 作为一款简化 Spring 应用开发的框架&#xff0c;与…...

【EasyPan】removeFile2RecycleBatch方法及递归操作解析

【EasyPan】项目常见问题解答&#xff08;自用&持续更新中…&#xff09;汇总版 文件批量转移到回收站方法解析 一、方法总述 removeFile2RecycleBatch方法实现将用户选中的文件/目录及其子内容批量移入回收站的业务逻辑&#xff0c;主要特点&#xff1a; 递归处理&…...

AIGC的伦理困境:机器生成内容是否该被监管?

AIGC的伦理困境&#xff1a;机器生成内容是否该被监管&#xff1f; 在当今数字时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的发展日新月异&#xff0c;其中生成式人工智能&#xff08;AIGC, AI-Generated Content&#xff09;作为一项前沿技术&#xff0c;正以前…...

缓存一致性

什么是缓存一致性&#xff1f; 当数据库和缓存之间的额数据内容保持同步或最终一致&#xff0c;称为缓存一致性 为什么缓存不一致会发生&#xff1f; 因为缓存和数据库是两个独立系统&#xff0c;它们的更新过程不是原子操作&#xff0c;就可能发生以下情况&#xff1a; //…...

【Java学习方法】终止循环的关键字

终止循环的关键字 一、break 作用&#xff1a;跳出最近的循环&#xff08;直接结束离break最近的那层循环&#xff09; 使用场景&#xff1a;一般搭配if条件判断&#xff0c;如果满足某个条件&#xff0c;就结束循环&#xff0c;&#xff08;场景&#xff1a;常见于暴力枚举中…...

bert学习

BERT Google在2018年提出的​​预训练语言模型​​&#xff0c;通过双向Transformer结构和大规模预训练。 核心特点 双向上下文 与传统模型&#xff08;如LSTM或单向Transformer&#xff09;不同&#xff0c;BERT通过同时考虑单词的​​左右上下文​​来捕捉更丰富的语义信息。…...

读书笔记:淘宝十年产品与技术演进史

作者&#xff1a;大淘宝技术 原文地址&#xff1a;读书笔记&#xff1a;淘宝十年产品与技术演进史 本文是对《淘宝十年产品事》与《淘宝技术这十年》两本书的阅读笔记总结。通过回顾淘宝过去十年在产品、技术、架构、中间件及开放平台等方面的发展历程&#xff0c;展现了其从初…...

ROS 快速入门教程02

5. Node 节点 以智能手机为例&#xff0c;当我们使用智能手机的某个功能时&#xff0c;大多时候在使用手机的某个APP。同样当我们使用ROS的某个功能时&#xff0c;使用的是ROS的某一个或者某一些节点。 虽然每次我们只使用ROS的某一个或者某一些节点&#xff0c;但我们无法下…...

卷积神经网络常用结构

空间注意力机制(Spatial Attention)详解 空间注意力机制(Spatial Attention)详解 空间注意力机制是计算机视觉中的重要组件&#xff0c;它使网络能够选择性地关注特征图中的重要空间区域&#xff0c;同时抑制不相关区域的影响。 空间注意力机制结构图 空间注意力机制详细解析…...

neo4j中节点内的名称显示不全解决办法(如何让label在节点上自动换行)

因为节点过多而且想让节点中所有文字都显示出来而放大节点尺寸 从neo4j中导出png,再转成PDF来查看时&#xff0c;要看清节点里面的文字就得放大5倍才行 在网上看了很多让里面文字换行的办法都不行 然后找到一个比较靠谱的办法是在要显示的标签内加换行符 但是我的节点上显示的是…...

容器化-Docker-进阶

一、自定义镜像:从基础部署到镜像定制​ (一)Linux 与 Docker 原生部署 Nginx 对比​ Linux 原生部署 Nginx # 安装依赖 sudo apt-get update && sudo apt-get install -y build-essential openssl libpcre3-dev zlib1g-dev # 下载Nginx源码 wget http://nginx.org…...

Sqlserver 自增长id 置零或者设置固定值

在 SQL Server 中&#xff0c;如果需要重置一个表的自增长&#xff08;Identity&#xff09;列的当前值&#xff0c;通常有几种方法可以实现。但是&#xff0c;值得注意的是&#xff0c;直接将自增长列的值设置为0并不是一个推荐的做法&#xff0c;因为这会破坏自增长列的连续性…...

状态模式(State Pattern)详解

文章目录 一、状态模式简介1.1 什么是状态模式?1.2 为什么需要状态模式?1.3 状态模式的核心思想二、状态模式的结构2.1 UML类图2.2 各个组件的详细说明2.3 交互过程三、状态模式的实现步骤(以Java为例)步骤1:创建状态接口步骤2:实现具体状态类步骤3:创建上下文类步骤4:…...

Shopee五道质检系统重构东南亚跨境格局,2025年电商游戏规则悄然改写

在2024年的东南亚跨境电商市场&#xff0c;一场以“质量”为核心的深度变革正在上演。作为头部平台的Shopee率先出招&#xff0c;以一套“五道质检流程”打破行业旧格局&#xff0c;不仅有效遏制高企的退货率&#xff0c;更引发从卖家结构到政策制度的连锁反应。 这场质量革命…...

Unity-无限滚动列表实现Timer时间管理实现

今天我们来做一个UI里经常做的东西&#xff1a;无限滚动列表。 首先我们得写清楚实现的基本思路&#xff1a; 所谓的无限滚动当然不是真的无限滚动&#xff0c;我们只要把离开列表的框再丢到列表的后面就行&#xff0c;核心理念和对象池是类似的。 我们来一点一点实现&#x…...

Python高级爬虫之JS逆向+安卓逆向1.6节: 函数基础

目录 引言: 1.6.1 理解函数 1.6.2 定义函数 1.6.3 调用函数 1.6.4 位置实参 1.6.5 关键字实参 1.6.6 爬虫不要进接单群 引言: 大神薯条老师的高级爬虫+安卓逆向教程: 这套爬虫教程会系统讲解爬虫的初级,中级,高级知识,涵盖的内容包括基础爬虫,高并发爬虫的设计与…...

集结号海螺捕鱼组件搭建教程与源码结构详解(第四篇)

本篇将聚焦“冰封领域”场景构建与性能优化策略。本节适合有Unity经验的技术团队&#xff0c;对大型特效场景优化、C与Unity协同通信及资源动态加载有深入需求的开发者。 一、冰封领域场景设计理念 冰封领域是高难度玩法场景&#xff0c;常用于高段位玩家房间&#xff0c;场景…...

02.Python代码Pandas - Series全系列分享(使用.特点.说明.取值.函数)

02.Python代码Pandas - Series全系列分享(使用.特点.说明.取值.函数) 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是pandas的使用语法。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性&#xff0c;希望…...

星火燎原:Spark技术如何重塑大数据处理格局

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业发展与社会进步的核心驱动力。面对海量且复杂的数据&#xff0c;传统的数据处理技术逐渐显得力不从心。而Apache Spark作为大数据领域的明星框架&#xff0c;凭借其卓越的性能与强大的功能&#xff0c;如同一束璀璨的星火…...

AI大模型和人脑的区别

为什么人脑没有幻觉&#xff0c;但是 AI 大语言模型有幻觉&#xff1f; 人脑和大型语言模型&#xff08;LLM&#xff09;在处理信息的方式上存在根本差异&#xff0c;这导致了幻觉现象主要出现在LLM中。LLM的幻觉是指模型生成了貌似合理但实际上错误或虚构的内容。 LLM的工作…...

第一章:基于Docker环境快速搭建LangChain框架的智能对话系统:从langchain环境搭建到多轮对话代码实现(大语言模型加载)

文章目录 前言一、langchain环境搭建1、docker容器搭建2、docker容器连接修改密码容器内容修改物理机修改 3、langchain安装 二、langchain构建简单智能对话示例1、基于deepseek的简单问答Demo2、langchain的invoke、stream与astream生成方法1、langchain的invoke、stream与ast…...

数据结构的学习(1)二分查找,利用二分查找找局部最小值,选择排序,冒泡排序,插入排序,位运算的基础知识

一、二分查找某个元素 &#xff08;1&#xff09;查找是否存在某个元素在数组中 思想&#xff1a; 1&#xff09;先看中间位置的值 2&#xff09;如果中间位置的值大于目标值说明目标值在整个数组中偏左的位置&#xff0c;改变右边界&#xff0c;即Right Mid - 1; 3&#xf…...

vue2+Vant 定制主题

参考文档&#xff1a;Vant主题定制-CSDV博客 vant提供了一套默认主题&#xff0c;若想完全替换主题是或者其他样式&#xff0c;则需要定制主题。 定制方法 1、main.js文件引入主题样式源文件 // 导入并安装 Vant 组件库 import Vant from vant // 切记&#xff1a;为了能够覆…...

【自然语言处理与大模型】大模型参数规模与部署配置调查2025第一季度

调查大模型参数规模与部署配置之间的关系。探讨如何在不同硬件和场景下优化大模型的部署。 一、 当前主流模型的参数规模对比 &#xff08;1&#xff09;当前主流模型有哪些 参考全球最大AI开源社区Hugging Face发布的榜单、上海AI实验室推出的开放评测体系OpenCompass和国内开…...

香港科技大学广州|先进材料学域博士招生宣讲会—南开大学专场

香港科技大学广州&#xff5c;先进材料学域博士招生宣讲会—南开大学专场 时间&#xff1a;2025年4月25日&#xff08;星期五&#xff09;10:00 地点&#xff1a;南开大学八里台校区中心实验室报告厅 宣讲嘉宾&#xff1a; 李昊翔 助理教授 TAN Chee Keong 助理教授 教授亲…...

异构迁移学习(无创脑机接口中的跨脑电帽迁移学习)

本文介绍BCI中的跨脑电帽的迁移学习最新算法。 (发表于2025 arxiv,应该属于投稿阶段,这个场景具有非常不错的研究意义和前景) 最新跨脑电帽异构算法github开源代码 SDDA算法原文 一、脑机接口绪论 脑机接口(BCI)指在人或动物大脑与外部设备之间创建的直接连接,通过脑…...

若依项目部署小结

参考视频&#xff1a;前后端分离式项目实战部署 | CodeSheep 环境搭建 虚拟机环境&#xff1a;jdk1.8 tomcat9 nginx A &#xff1a;虚拟机A运行前端项目 A B&#xff1a;虚拟机B运行war包 B C&#xff1a;虚拟机C运行jar包 C mysql和redis连的是C主机 前端项目部署 必备&…...

多智能体系统的中间件架构

多智能体系统&#xff08;Multi-Agent Systems, MAS&#xff09;是一种由多个智能体&#xff08;Agents&#xff09;组成的分布式系统&#xff0c;这些智能体能够自主地感知环境、做出决策并与其他智能体进行交互。 中间件&#xff08;Middleware&#xff09;在多智能体系统中…...

Eliciting Causal Abilities in Large Language Models for Reasoning Tasks

Eliciting Causal Abilities in Large Language Models for Reasoning Tasks | Proceedings of the AAAI Conference on Artificial Intelligencehttps://ojs.aaai.org/index.php/AAAI/article/view/33669 1. 概述 大型语言模型(Large Language Models, LLMs)面临的一...

DeepSeek+Mermaid:轻松实现可视化图表自动化生成(附实战演练)

目录 一、引言&#xff1a;AI 与图表的梦幻联动二、DeepSeek&#xff1a;大语言模型新星崛起2.1 DeepSeek 全面剖析2.2 多场景应用示例2.2.1 文本生成2.2.2 代码编写 三、Mermaid&#xff1a;代码式图表绘制专家3.1 Mermaid 基础探秘3.2 语法与图表类型详解3.2.1 流程图&#x…...

LeetCode第164题_最大间距

LeetCode 第164题&#xff1a;最大间距 题目描述 给定一个无序的数组 nums&#xff0c;返回 数组在排序之后&#xff0c;相邻元素之间最大的差值 。如果数组元素个数小于 2&#xff0c;则返回 0 。 您必须编写一个在「线性时间」内运行并使用「线性额外空间」的算法。 难度…...

什么是DDD?为什么它正在取代传统架构?

什么是DDD&#xff1f;为什么它正在取代传统架构&#xff1f; 1. 传统开发模式的痛点 在经典的MVC架构中&#xff0c;开发流程往往从数据库表结构设计开始&#xff0c;业务逻辑散落在Service层&#xff0c;随着需求迭代容易形成「大泥球」代码&#xff1a; 实体类变成纯粹的…...

Vue3父子组件数据双向同步实现方法

在 Vue 3 中&#xff0c;实现父子组件间双向同步响应式对象的步骤如下&#xff1a; 实现思路 父组件通过 v-model 传递响应式对象。 子组件接收并深拷贝为本地副本。 子组件监听父组件的数据变化&#xff0c;更新本地副本&#xff08;不触发同步&#xff09;。 子组件监听本…...

一些基本的 Vue 规范

一、项目结构规范 推荐的目录结构 src/ ├── assets/ # 静态资源&#xff08;如图片、字体&#xff09; ├── components/ # 全局组件 ├── views/ # 页面组件&#xff08;用于路由&#xff09; ├── router/ # 路由配置 ├── store/…...

面试篇:Java并发与多线程

基础概念 什么是线程&#xff1f;线程和进程的区别是什么&#xff1f; 线程 是程序执行的最小单位&#xff0c;它是 CPU 调度和执行的基本单元。一个进程可以包含多个线程&#xff0c;这些线程共享进程的资源&#xff08;如内存&#xff09;&#xff0c;但每个线程有自己的栈…...

Unity中通过TMP使用图片字体

折腾了半天&#xff0c;最后发现一个相对简单&#xff0c;不需要使用任何插件&#xff0c;只凭默认的TMP外加PS的办法。 1&#xff0c;在Font Asset Creator设置参数 &#xff08;1&#xff09;source font file&#xff1a;尽量选一个支持中文的字体。 &#xff08;2&#x…...

WSL2-Ubuntu22.04下拉取Docker MongoDB镜像并启动

若未安装docker可参考此教程&#xff1a;可以直接在wsl上安装docker吗&#xff0c;而不是安装docker desktop&#xff1f;-CSDN博客 1. 拉取镜像 docker pull mongo:latest 2.打开网络加速&#xff0c;再次拉取镜像 3.创建docker-compose.yml 进入vim编辑器后输入i进行编辑&a…...

Java基础系列-HashMap源码解析2-AVL树

文章目录 AVL树左旋右旋左旋右旋的4种情况LL 型RR 型LR 型RL 型 实际插入时怎么判断是那种类型&#xff1f;插入时注意事项删除节点 AVL树 为避免BST树退化成链表的极端情况&#xff0c; AVL 树应运而生。 平衡因子取值&#xff08;-1&#xff0c;0&#xff0c;1&#xff09;…...

介绍 IntelliJ IDEA 快捷键操作

IntelliJ IDEA 快捷键操作 1. 编辑与导航2. 查找与替换3. 调试与运行4. 导航与视图5. 重构与生成6. 高级快捷键&#xff08;提高效率&#xff09;注意事项 IntelliJ IDEA 是一款功能强大的集成开发环境&#xff0c;掌握其常用快捷键可以显著提升开发效率。但是有些小伙伴并不清…...