基于android开发平台的聊天软件实现(论文+源码)_kaic

摘要:互联网时代的到来使得手机通讯变得更为普及和强大,人们可以随时随地地进行交流。由于工作的繁忙以及生活节奏的加快,人们无法有更多时间展开面对面的交谈,导致在线聊天软件的使用更加频繁,所以本文尝试设计了一款在线聊天软件。为了更好的用户体验,我们开发了一款界面相对简单、交流方便快捷且操作相对简单的即时聊天软件。介绍了所用到的开发软件与相关技术。并且,本次研究基于Android平台,本聊天软件的主要功能有:用户的登录与注册、一对一聊天(包括文字聊天、发送语音信息和表情的发送),修改个人信息,更换头像,修改密码等功能。本篇论文首先介绍了聊天软件的发展历程与背景,然后介绍了本次课题的目的与意义,接着还列出了软件的系统架构、各个模块与功能实现的流程并重点介绍了即时通信实现的相关原理和实现的流程,最后也对项目进行了一些相关的测试与检查试验。
关键词:Android;登录注册;即时通信;多线程;Socket

Abstract
The advent of the Internet era makes mobile communication more popular and powerful. People can communicate anytime and anywhere. Due to the busy work and the accelerated pace of life, people can not have more time to carry out face-to-face conversation, resulting in more frequent use of online chat software, so this paper attempts to design an online chat software. For better user experience, we have developed an instant chat software with relatively simple interface, convenient and fast communication and relatively simple operation. The development software and related technologies are introduced. Moreover, based on the Android platform, the main functions of this chat software are: user login and registration, one-to-one chat (including text chat, sending voice information and expression), modifying personal information, changing avatar, modifying password and so on. This paper first introduces the development process and background of chat software, then introduces the purpose and significance of this topic, then lists the system architecture of the software, the implementation process of each module and function, focuses on the relevant principles and implementation process of instant messaging, and finally carries out some relevant tests and inspection tests on the project.
Keywords: Android; Login and registration; Instant messaging; Multithreading; Socket 
目  录
第1章 绪论
1.1选题背景及意义
1.1.1个人即时通讯软件
1.1.2企业即时通讯
1.2国内外发展现状简述
1.3主要设计内容及预期目标
第2章 关键技术介绍
2.1 Android平台
2.1.1 Android平台的特征
2.1.2 Android体系结构
2.2 TCP/IP协议
2.3 C/S模型
2.4 Android的MVC架构
2.4.1视图层(View)
2.4.2 控制层(Control)
2.4.3 模型层(Model)
2.5多线程技术
第3章 系统的总体设计
3.1系统的整体流程
3.2服务器功能模块图
3.3客户端功能模块图
第4章 软件的具体设计实现
4.1系统实现原理
4.2服务器端功能具体实现流程
4.2.1用户登录验证模块
4.2.2信息的转发模块
4.3客户端功能具体实现流程
4.3.1用户登录模块
4.3.2用户注册模块
4.3.3用户消息发送模块
4.3.4用户设置模块
4.3.5 用户添加好友模块
4.3.6 用户退出登录模块
第5章 软件运行与测试
5.1用户个人操作相关界面
5.1.1 用户登录界面展示
5.1.2 用户注册界面展示
5.1.3 聊天消息界面展示
5.1.4 通讯录展示
5.1.5 添加好友界面展示
5.1.6 消息验证界面展示
5.1.7 个人信息界面展示
5.1.8 头像更换界面展示
5.1.9 重置密码界面展示
5.2 聊天功能相关展示
5.2.1 即时聊天界面展示
5.2.1 语音消息发送界面展示
5.2.2 位置信息界面展示
5.2.3 退出登录界面展示
结 论
参考文献
致  谢
 
第1章 绪论
1.1 选题背景及意义
随着信息技术的高速发展,人类的通讯变得高效而便捷。得益于人们对沟通的迫切需求,即时通讯得以出现并获得了长足的发展。在本篇文章中,我们详细介绍了基于Android系统开发而出的即时通讯软件,并提供了真实而具体的案例加以说明。
为了提高市场竞争力,有必要对整个市场进行仔细检查并提供优质的客户服务。公司需要在复杂的环境中采取行动,员工与领导或者是员工与员工之间的沟通的即时性就显得特别重要。在线即时聊天系统是企业进行交流和沟通的平台。本系统能够及时反馈信息,立即处理和采取相应的措施。
移动网络通网络应用的重要体现。移动即时通讯传递则是移动网络应用程序的重要方面。该聊天系统主要用于个人聊企业,学校和小型局域网等受众使用。该应用程序可以使近距离通信更快,更方便并且更有效地反映现代即时通信的特性该系统可以满足个人聊和学校内部的在线即时通信需求。在内部网络正常运行时提供即时通讯功能。该系统是使用javaSE(服务器)和Android(客户端)开发的。局域网中使用的系统为中小企业之间的合作和沟通提供了强大的工具,有助于加强公司员工之间的沟通和工作效率的提高。
当前,许多企业为了保证沟通的便捷与高效,都企业内外部的即时通讯投入了大量的资金和精力,以下是适用于不同需求的即时通讯软件的介绍:
1.1.1 个人即时通讯软件
个人即时通讯软件称为个人IM,典型的代表性产品(如微信和QQ)主要由个人用户使用,这些产品的用户通常可以免费使用。在开发此类产品的各种功能时,公司通常要求注册用户输入所需的个人信息,例如昵称、性别、年龄、地址、职业和教育背景等。公司设计这些功能并不是因为有利可图,而是对于不同的用户需求来说,可以尽可能方便地进行聊天和交流。
1.1.2 企业即时通讯
企业级的即时通讯产品,可称作企业IM,主要是以企业用户使用为主的,具体可分为以下三种不同的类型:
(1)局域网软件型企业即时通讯产品
基于局域网的企业即时通讯软件(例如Qida Longchat)必须部署在自己的服务器上。所有信息和数据都存储在我们的服务器上。一般而言,系统各方面安全性都较高,所以一般在政府,军队和大中型企业集团更常用。
(2)互联网平台型企业即时通讯
互联网平台型企业即时通讯软件,我们不需要手动的在自己服务器上部署软件,我们只需要下载客户端即可使用,产生的和使用的数据都是在云服务器部署和保存的,这样也就导致了数据的安全性不高,但是成本也相对较低。
(3)API云服务即时通讯产品
API云服务即时通讯软件,对使用者的技术有一定要求,使用者需要拥有独立技术开发能力以及自己的APP产品,通过调用相关API接口将项目集成到自己的产品中。
1.2 国内外发展现状简述
即时通讯最初是由AOL,Microsoft,Yahoo,腾讯和其他独立于运营商的即时通讯供商提供的。但是,随着科技的不断进步,它们的功能越来越丰富,应用程也越来越广泛,并且即时通讯増强软件(尤其是IP电话)的某些功能正在转移并取代传统的电信服务。企业必须釆取步骤应对这一挑战。
2019年,相关机构发布了一份“全球最受欢迎的社交软件榜”,从这份榜单中可以看到全球最受欢迎的即时通讯软件用户数量排名。在全球范围内,微信以11.11亿用户排名榜单第三,而QQ则8.23亿用户排名第四。作为我国用户数量最多的即时通讯平台,微信只能排到第三,排在第二的是Facebook,用户数达到13.03亿,值得一提的是,排名榜首的是WhatsApp,其用户数量超过了16亿,比微信高出了整整5亿的用户。
2006年6月,中国移动推出了自己的即时通讯工具“飞信”,中国联通也推出了即时通讯工具“超级信”,但由于推迟进入市场,用户规模和品牌不如原始的众所周知一些即时通讯服务提供商。近年来,即时通讯市场的用户规模迅速扩大,市场规模具有广阔的前景。随着 Internet用户的快速增长,即时通讯传递用户的数量也在增加。2004年,中国的即时通讯用户数量达到7,000万,而2005年达到9,300万。2006年,中国的即时通讯用户数量增长了近三成,达到1.2亿。此外,根据摩根士丹利( Morgan Stanley)发布的数字数据,艾瑞咨询( i Research)发现,中国的即时通讯市场市值在2005年约为6200万美元,在2006年为7700万美,2010年则首次破亿,达到1.14亿美元。
移动即时通讯市场具有迅速增长势头和非常诱人的发展空间。根据艾瑞咨询( i Research)2007年5月发布的研究报告,2005年中国动即时通讯用户数量达到500万。2006年,中国移动即时通讯注册用户达到700万。未来几年,移动即时通讯用户数量将快速增长,到2010年,中国移动预计将达到2000万即时通讯用户。
1999年,腾讯推出了OICQ,从那以后,即时通讯已经在中国发展了二十余年。当前,即时通讯领域的国内竞争从“诸侯之间的战斗”的情形变为了腾讯公司一家独大,仅微信而言,注册用户就超过了十亿,实时在线用户最多8亿。2005年,i Research对即时通讯市场进行了调查统计,QQ占据了78.8%的市场份额,MSN为3%,网易泡泡为1.6%,淘宝旺旺为2.1%,Yahoo Messenger为0.7%等。而到了2020年,中国即时通信用户规模为9.81亿人,其中99.3%使用手机登录,微信月活用户更是突破了11亿,QQ则为8亿人,腾讯公司继续领跑全中国。
如今,即时通讯行业继续快速发展,未来的发展趋势是集成多种服务,扩展移动平台,企业用户渗透率以及包含付费内容。移动运营商原先有很大的机会深入到市场之后,但是目前看来它们并没有很好地把握,因而通讯市场的地位遭受很大的威胁。移动运营商可以访问与即时通讯通讯行业的发展兼容的多服务资源。在此阶段,腾讯在内的公司都可以利用即时通讯开发过程中积累的用户习惯以及业务和运营经验来获得更快的成功。

1.3 主要设计内容及预期目标
本文的主要研究内容是设计和实现Android平台的即时通讯系统,以实现移动设备和PC终端之间的相互通讯。具体包括以下几个方面:
1. Android平台上即时通信系统的体系结构:为了实现整个系统,提出了一种合理的体系结构。
2. TCP / IP协议:介绍TCP / IP协议的内容并分析该协议。
3.移动即时消息系统的实现:根据提出的系统架构,我们将详细说明移动即时消息系统的设计和具体实现,最后演示和操作该系统。

第2章 关键技术介绍
2.1 Android平台
Android操作系统是Google和开放电话联盟共同开发的移动设备操作系统。 它的最早发布版本始于2007年11月,当时首次发布的便是Android1.0 Beta,还顺带着发布了多个更新版本的Android操作系统。到2010年底,Android系统的 市场额正式超过已经占领市场10年诺基亚Symbian系统。2012年2月,Android操作系统在全球智能手机操作系统中的市场份额达到52.5%,成为了全球最大的智能手机操作系统,2020年,Android系统的市场占比已经达到了 97.7%,形成垄断之势。
2.1.1 Android平台的特征
1.它提供用于访问硬件的API函数,并简化了诸如相机和GPS之类的硬件的访问过程。
2.它自己具备的运行时虚拟机;
3.提供用户调用的丰富界面控件,以加速用户界面开发并确保 Android平台上程序界面的一致性。
4.提供一种轻量级的进程间通信机制,该机制旨在允许进程组件进行通信并发送系统级广播。
5.该服务作为后台运行的组件提供,没有用户界面。
6.支持高效、快速的数据存储。
2.1.2 Android体系结构
软件堆栈层体系结构分为四个层,如下图2-1所示:
 
图2-1 Android的体系结构图
丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的web浏览器。
内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。
通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。
活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。
Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:
系统 C 库:一个从BSD继承来的标准C系统函数库 Libc ), 它是专门为基于Embedded linux的设备定制的。
媒体库:基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG。
Surface Manager:对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
LibWebCore:一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。
2.2 TCP/IP协议
TCP协议是网络通信的基本核心协议,并且Java还提供了一个Socket类库来抽象化TCP协议和三次握手,这是基于TCP协议的常见通信方法。在本节中讨论TCP协议之前,让我们首先讨论一些概念。
2.2.1 TCP协议
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK
(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。在这之后,连接就建立起来了,这个连接将一直保持活动状态,直到连接超时或者客户端和服务器任何一方发出一个FIN(结束)信号是结束。这种通信模式也叫客户端/服务器(C/S)模式。如下图2-2 TCP的三次握手。
由此可见,通过客户端和服务器的“三次握手”,双方可以建立畅通的通信信道,在此信道上双方互相传输数据。
 
图2-2 TCP的三次握手

2.3 C/S模型
所谓的C/S模型,就是客户机/服务器网络。在C/S模型中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需的网络资源,而服务器为客户机提供网络必须的资源。通过C/S模型可以从分利用两端硬件环境的优势,将任务合理分配到客户端和服务器端来实现,所以C/S模式具有以下几个优点:
(1)因为在客户端上有一套完整的系统软件,具有很强的交互性,系统工作人员在运用系统时可以获得出错提示、在线帮助等较强功能;
(2)由于C/S模式是配对的点对点的结构模式,因此多采用局域网的协议,并且通常是学校内部固定的从事学生学籍管理工作的用户群,所以安全性较高;
(3)因为C/S模式只有两层逻辑结构,因此网络通讯量低,传输速度快,占用网络资源少。
随着Android手机性能的不断提升,使用C/S架构将一些需要较长时间处理的功能放置到客户端。使用户得到更好的网络传输,提升用户随着Android手机性能的不断提升,使用C/S架构将一些需要较长时间体验。
2.4 Android的MVC架构
在客户端的实现中,我们用到了MVC模式的架构思想,大大提高了程序模块化的程度。
 
 
图2-3 Android MVC架构

2.4.1 视图层(View)
视图主要提供一种用于显示用户数据输入界面和模型数据显示功能的界面功能的机制,并且还包括信息提示功能。 此方面主要介绍Xml配置文件,包括样式布局文件(样式),动画效果布局文件和图像布局文件。
2.4.2 控制层(Control)
控制层主要负责调度系统响应的流程,管理用户界面的逻辑流,用户交互如何影响数据模型以及数据模型如何影响用户交互的过程。这些是通过Android活动完成的。在Android开发中,配置文件AndroidManifest.xml充当控制器,并将文件中的各种组件视图配置为在模型更改时调用该视图。
2.4.3 模型层(Model)
控制层主要作用是对进行数据库的增、删、改、查等操作。并包含了对信息的接受、发送、请求的提交等一系列操作。具体到在程序中是通过Service实现数据的发送和接收。当一个Activity启动后动态的调用相关函数将它和Service进行绑定。
2.5 多线程技术
多线程是构建大型系统的重要技术,尤其是在效率和性能之间进行权衡的情况下。正确使用多线程可以显着提高系统性能。使用多线程的优点是:
(1)使用线程将任务放置在需要长时间在后台进行处理的程序中。
(2)用户界面可能更具吸引力。例如,当用户单击按钮触发特定事件的处理时,可以弹出一个进度条以显示处理的进度。
(3)可以加快程序执行速度。
(4)线程有助于完成等待的任务,例如用户输入,读取和写入文件以及通过网络发送和接收数据。这样可以释放宝贵的资源,例如内存使用率。
Java是一种多线程语言,它允许多个线程同时运行以处理多个任务。同时,Java具有内置的多线程控件,可以大大简化多线程应用程序的开发。它提供了一个Thread类,该类封装了所有相关的线程控制,并负责一系列逻辑控制操作,例如线程准备,运行,睡眠,暂停,恢复,结束和退出。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/712905.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Excel报表

(Apache POI) 入门案例 P164 使用POI需要导入下面2个坐标&#xff1a; <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId> </dependency> <dependency><groupId>org.apache.poi</groupId>&…

docker-compose部署FastDFS分布式文件系统

文章目录 一、技术选型二、fastDFS组成部分三、docker-compose文件四、客户端nginx配置五、存储器spring Boot集成参考文献 一、技术选型 还有一个更好的google FS&#xff08;但是他不开源&#xff0c;我也没找到社区版一类的可以不要钱使用的&#xff09;。 最后考虑到我们存…

AD学习记录

1. 负信号&#xff1a; \WR或者W\R\ 2.快捷键&#xff1a; MMS VGS X/W CTLRW原理图画总连接线&#xff0c;shift快速复制 TAA管理器&#xff0c;TG封装管理器 3. 选中后按住ctlr进行位移 4.原理图里切换原理图库&#xff1a; 5.重要警报&#xff1a;&#xff0…

CleanMyMacX4.15.4如何优化苹果电脑系统缓存,告别MacBook卡顿,提升mac电脑性能

你是否曾为苹果电脑存储空间不够而烦恼&#xff1f;是否曾因系统运行缓慢而苦恼&#xff1f;别担心&#xff0c;今天我要给大家种草一个神器——CleanMyMac&#xff01;这款软件可以帮助你轻松解决苹果电脑的种种问题&#xff0c;让你的电脑焕然一新&#xff01; 让我来给大家介…

论文学习day01

1.自我反思的检索增强生成&#xff08;SELF-RAG&#xff09; 1.文章出处&#xff1a; Chan, C., Xu, C., Yuan, R., Luo, H., Xue, W., Guo, Y., & Fu, J. (2024). RQ-RAG: Learning to Refine Queries for Retrieval Augmented Generation. ArXiv, abs/2404.00610. 2.摘…

使用消息队列(MQ)实现MySQL持久化存储与MySQL server has gone away问题解决

在现代应用程序开发中&#xff0c;消息队列&#xff08;MQ&#xff09;扮演着重要的角色。它们可以帮助我们解决异步通信和解耦系统组件之间的依赖关系。而其中一个常见的需求是将消息队列中的数据持久化到数据库中&#xff0c;以确保数据的安全性和可靠性。在本文中&#xff0…

java第二十四课 —— super 关键字 | 方法重写

super 关键字 基本介绍 super 代表父类的引用&#xff0c;用于访问父类的属性、方法、构造器。 基本语法 访问父类的属性&#xff0c;但不能访问父类的 private 属性。 super.属性名; 访问父类的方法&#xff0c;不能访问父类的 private 方法。 super.方法名(参数列表); 访…

Java的一些内容

transient的作用 transient是Java语言的关键字&#xff0c;用来表示一个成员变量不是该对象序列化的一部分。当一个对象被序列化的时候&#xff0c;transient型变量的值不包括在序列化的结果中。而非transient型的变量是被包括进去的。 注意static修饰的静态变量天然就是不可序…

Python **运算符(python**kwargs:参数解包)(kwargs:keyword arguments)

文章目录 Python中的 ** 运算符&#xff1a;参数解包参数解包基础语法和示例 在函数定义中使用 **示例代码 使用场景和好处1. 灵活性&#xff1a;使用 **kwargs 允许函数设计得更加灵活&#xff0c;可以接受未来可能增加的新参数而无需修改函数定义。2. 可读性和可维护性&#…

C#开发-集合使用和技巧(四)集合中常用的查询方法

集合中常用的查询方法 测试数据准备&#xff1a;查询方法详解**Where**条件查询定义和注释&#xff1a;功能详细说明&#xff1a;应用实例查找所有设备类型为“生产设备”的对象 结果测试&#xff1a;查询所有测试结果大于90的设备多条件查询&#xff1a;类型为生产设备同时测试…

# RocketMQ 实战:模拟电商网站场景综合案例(六)

RocketMQ 实战&#xff1a;模拟电商网站场景综合案例&#xff08;六&#xff09; 一、RocketMQ 实战 &#xff1a;项目公共类介绍 1、ID 生成器 &#xff1a;IDWorker&#xff1a;Twitter 雪花算法。 在 shop-common 工程模块中&#xff0c;IDWorker.java 是 ID 生成器公共类…

Centos7系统下Docker的安装与配置

文章目录 前言下载Docker安装yum库安装Docker启动和校验配置Docker镜像加速卸载Docker 前言 此博客的内容的为自己的学习笔记&#xff0c;如果需要更具体的内容&#xff0c;可查看Docker官网文档内容 注意&#xff1a;以下命令在root管理员用户下运行&#xff0c;如果在普通用…

基于单片机的无线遥控自动翻书机械臂设计

摘 要&#xff1a; 本设备的重点控制部件为单片机&#xff0c;充分实现了其自动化的目的。相关研究表明&#xff0c;它操作简单便捷&#xff0c;使残疾人在翻书时提供了较大的便利&#xff0c;使用价值性极高&#xff0c;具有很大的发展空间。 关键词&#xff1a; 机械臂&…

gbase8s数据库阻塞检查点和非阻塞检查点的执行机制

1. 检查点的描述 为了便于数据库系统的复原和逻辑恢复&#xff0c;数据库服务器生成的一致性标志点&#xff0c;称为检查点&#xff0c;其是建立在数据库系统的已知和一致状态时日志中的某个时间点检查点的目的在于定期将逻辑日志中的重新启动点向前移动 如果存在检查点&#…

零基础入门学用Arduino 第三部分(二)

重要的内容写在前面&#xff1a; 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。个人把这个教程学完之后&#xff0c;整体感觉是很好的&#xff0c;如果有条件的可以先学习一些相关课程&#xff0c;学起来会更加轻松&#xff0c;相关课程有数字电路…

即时聊天系统

功能描述 该项目是一个前后端分离的即时聊天项目&#xff0c;前端采用vue2、后端使用springboot以mysql8.0作为数据库。 项目功能包含了单聊、群聊功能。在此基础上增加了对好友的功能操作&#xff0c;如备注设为通知、视频聊天、语音聊天、置顶、拉入黑名单、清空聊天记录等。…

如何在两个不同的conda环境中实现jupyter notebook共同使用,避免重复下载

前提&#xff1a;有2个conda环境&#xff0c;yes和py38_pytorch 其中&#xff0c;yes已经安装了jupyter notebook;py38_pytorch没有jupyter notebook 现在&#xff0c;实现在py38_pytorch用jupyter notebook 步骤&#xff1a; 1、激活py38_pytorch conda activate py38_p…

gma 2.0.10 (2024.06.16) | GmaGIS V0.0.0a4 更新日志

安装 gma 2.0.10 pip install gma2.0.10网盘下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1P0nmZUPMJaPEmYgixoL2QQ?pwd1pc8 提取码&#xff1a;1pc8 注意&#xff1a;此版本没有Linux版&#xff01; 编译gma的Linux虚拟机没有时间修复&#xff0c;本期Linux版…

HTML5的未来:掌握最新技术,打造炫酷网页体验

引言 随着互联网技术的飞速发展&#xff0c;HTML5已经成为构建现代网页和应用的核心技术之一。HTML5不仅提供了丰富的语义化标签&#xff0c;还引入了多项前沿技术&#xff0c;使得网页体验更加丰富多彩。本文将探讨HTML5的最新技术&#xff0c;并结合行业实践&#xff0c;提供…

基础算法--双指针算法

文章目录 什么是双指针算法例题1.移动零2.复写零3.快乐数4.盛最多水的容器5.有效三角形的个数6.三数之和7.四数之和 什么是双指针算法 通常我们讲的双指针就是用两个指针&#xff0c;两个指针可以是快慢指针&#xff0c;解决成环的问题&#xff0c;也可以是指向收尾的两个指针…