面试官问:如何快速开发一个类似微信的聊天系统?

软件工程毕业设计选题指南:50个实战项目与四维评估法 毕业设计是软件工程专业学生将理论知识转化为工程实践能力的关键环节。其核心在于通过一个完整的项目周期,系统性地应用软件工程方法,解决实际问题。从技术原理上看,一个成功的项目通常需要平衡创新性、可行性、实用性与技术深度,这构成了项目评估的基本框架。在技术价值层面,毕业设计不仅是学术成果,更是求职时展示技术栈掌握度、系统设计能力和解决问题思维的硬核凭证。当前,结合人工智能、物联网、微服务架构等前沿技术的项目,更能体现技术敏感性与工程实践的结合。应用场景广泛,从经典的电商平台、管理系统,到新兴的智能识别、数据推荐系 阅读详情

去年我们公司要我去面试一位候选人,当时刚好我接手了公司的 IM 系统,借这个机会,就问了候选人这个问题:如何快速开发一个类似微信的聊天系统?

这个问题的确让候选人回答起来很吃力:

  1. 从分析 PC 端微信界面的实现到怎么处理框体也业务代码分离;

  2. 从通信模型定义到怎么处理消息协议、半包粘包到流量整型;

  3. 从架构模式设计到怎么合理的搭建出完善且易于扩展的模块。

等等问题点的抛出和解答,候选人也确实用心在思考。但我知道因为这里有些技术栈和通信架构设计的缺失,使得解答这些问题变得很艰难。

恰好那段时间我刚写完 36 篇 Netty 系列教程,看似系统,但是回顾起来还是零散。看完后,一些读者反馈无法上手真实业务,问我能否写一写 Netty 在实际业务中的应用。为了让大家更好的理解,我决定采用一个大多数人熟知又有趣的场景:模仿 PC 端的微信聊天。对于学习者来说,这样不仅学习到了 Netty,还帮 Java 程序员使用自己的语言技术栈,开发出一款桌面聊天程序!

最原始的 36 篇 Netty 文章

Netty 是互联网各种框架中以及物联网里都不可缺少的一部分技术栈技能,同时它也是非常重要的一个 Socket 框架。Netty 的应用非常广泛,无论在互联网、大数据以及通信和游戏行业中,都有 Netty 的身影。比如一线大厂阿里的 RPC 框架,Dubbo 协议默认使用 Netty 作为基础通信组件,用于各节点间的内部通信。

淘宝的消息中间件 RocketMQ 的消息生产者与消费者,也是采用 Netty 作为高性能、异步通信组件。除了阿里系、淘宝系,其他很多一线大厂也都在使用 Netty 构建高性能、分布式的网络服务。

掌握一个技能最好的方式就是使用自己熟悉的工具进行实践落地,通过功能的一点点实现和逻辑的大量阅读,建设自己对代码的认知,并深化对整个框架的理解。

一个新知识点从学习到上手,往往分为三个阶段;运行 HelloWord、熟练使用 API、和最终的落地应用。而这最后一步也是最重要的一步,要将各个知识点与实际要实现的业务功能相结合,才能不断提升自己的技能。

为此我开始使用 Netty+JavaFx 以及 SpringBoot 等技术栈,搭建仿桌面版微信聊天程序,并在这个过程中梳理分析功能结构。这个过程可以使用 xmind 作为你的工具,整理自己的思路。接下来我对需要使用的技术栈做案例测试,验证核心功能是否可以满足我的需求。验证完成后,开始做架构设计以及业务流程,直到最终通过编码实现功能。

这个专栏是我使用 JavaFx、Netty4.x、SpringBoot、Mysql 等技术栈和偏向于 DDD 领域驱动设计方式,搭建的仿桌面版微信聊天工程实现通信核心功能。

本专栏会以三个大章节内容,逐步进行讲解:

第一部分 - UI 开发:使用 JavaFx 与 Maven 搭建 UI 桌面工程,逐步讲解登录框体、聊天框体、对话框、好友栏等各项 UI 展示及操作事件。从而在这一章节中让 Java 程序员学会开发桌面版应用;

第二部分 - 架构设计:在这一部分中我们会使用 DDD 领域驱动设计的四层模型结构与 Netty 结合使用,架构出合理的分层框架。同时还有相应库表功能的设计。相信这些内容学习后,你一定也可以假设出更好的框架;

第三部分 - 功能实现:这部分我们主要将通信中的各项功能逐步实现,包括;登录、添加好友、对话通知、消息发送、断线重连等各项功能。最终完成整个项目的开发,同时也可以让你从实践中学会技能。

界面效果展示

功能演示图

登陆页面
聊天页面
添加好友
消息提醒

多图解析

通过这个专栏,可以获得什么?
  • 以 DDD 领域驱动设计的分层模型结合 Netty,编写清晰简洁可扩展的框架结构,完成仿微信聊天核心功能项目开发。

  • 使用 JavaFX 做 UI 窗体并且与业务代码分离的方式实现桌面版程序功能。在事件驱动与接口调用的方式中,使代码更加清晰、更加易于扩展。

  • 清晰的设计,明确到位的落地,让理论与实践结合起来。快速上手掌握 Netty、JavaFx、架构、库表的设计与编码。


即日起至 3 月 17 日,《Netty + JavaFx 实战:仿桌面版微信聊天》限时特惠!现在订阅专栏,小傅哥带你实践桌面版微信核心功能,巩固 Netty 技术栈!

订阅专栏,即可进群与作者交流
如何利用ADS中的耦合线设计带通滤波器并转换为HFSS模型 耦合线带通滤波器是一种常用的微带滤波器形式,由多个长度为四分之一波长的耦合线节组成,在所需频点形成谐振,构成滤波器的频率响应特性。首先我们先来了解一下耦合线带通滤波器的电路结构,见下图:包括两对耦合线,中间为公共连接点,其中两对耦合线的偶奇模阻抗为(Z1e,Z1o)和(Z2e,Z2o,端口输入阻抗为Z0)。2.指定一个初始奇偶模值,ADS优化出一个合适的结果,通过奇偶模值利用linecalc工具计算出微带耦合线尺寸。假设中心频率为2GHz,则对应频点的电长度为。5.运行结果,两个软件仿真结果基本一致。 阅读详情

相关推荐

IsaacGym四足机器人sim to real全过程详细解析(walk these ways方法)

本文使用强化学习的方法运行到Aliengo机器人上完成从训练到部署的全过程。该方法使用的是GO1机器人提供了完整的sim to real代码和遥控器控制代码,所以我们只需要重新训练和部署健康就可以使用在Aliengo上。该方法使用lcm进行通讯首先程序通过UDP和机器人控制板进行通讯获取机器人状态并下达指令。然后又通过lcm进行机器人状态信息的发布和模型命令的获取。

weixin_44061195的博客 2万+

使用netty实现一个类似于微信的聊天功能

1.maven依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.25.Final</versio...

yfy的博客 1041

从GitHub到海浪模拟:手把手教你配置WAVEWATCHⅢ 6.07.0的完整开发与测试环境

本文详细指导如何在Ubuntu系统中配置WAVEWATCHⅢ 6.07.0的开发与测试环境,涵盖虚拟机设置、依赖安装、源码编译及案例验证的全流程。通过步骤化教程,帮助科研人员快速搭建高效的海浪模拟平台,提升海洋数值模拟的研究效率。

weixin_42568801的博客 325

VS 编辑器开发小程序,推荐的几款插件

使用vscode提高小程序开发效率 不知道大家开发小程序是用什么工具,如果是微信自带的开发者工具,相信我,看了这篇文章,你会重新做出选择的。 之前一段时间,我也一直使用微信开发者工具进行小程序的开发与调试,但是用过的就会有这种体会: 代码编写区域太小,代码堆叠在一起,难以阅读 自定义能力较弱,只能修改代码字体 编辑器代码提示较少 工具经常出现莫名的bug,时不时黑屏 因此,为了解决这些个问题,果断更换开发工具,这里推荐大家使用号称“宇宙第一IDE”的编辑器——vscode。安装方法不作赘述,主要介绍一下几

weixin_46174785的博客 2460

【DenseFusion系列目录】代码全讲解+可视化+计算评估指标

DenseFusion是2019年李飞飞等提出的用于6D姿态估计的网络。它是一种端到端的结构,输入为RGB-D数据,输出为某个物体的6D姿态。主要贡献就是针对颜色特征和几何特征提出了一种像素级稠密融合的方式。在LineMOD数据集和YCB-Video数据集上进行了实验。本文对该网络进行完整的复现,详细解析了源代码中的重要内容。由于本人刚接触姿态估计方面的内容,因此有些解析部分包含很基础的知识,放在【DenseFusion详解】专栏。除此之外,本文在源代码的基础上进行了后续评价指标的计算以及结果的可视化,这些

weixin_44564705的博客 9419

2026AI漫剧放心大胆做!小白也能轻松出片(附保姆级教程)

要是在2025,我大概率会劝他再等等,毕竟那时工具还没这么顺手。但到了2026年的今天,我的回答得很干脆:放心去做,绝对没问题。这一年多来,AI漫剧这块的变化真可谓翻天覆地。过去你想拍个像样的短片,哪怕再简陋,也得凑齐拍摄设备、找场地、找演员,后期剪辑更是折磨。但现在,时代变了,AI已经把创作的门槛踏平了。你不需要请演员,也不用操心灯光布景,更不用为剪辑特效烧钱。一个人,一台电脑,花几天时间就能做一部完整的AI漫剧。你只要有有想表达的故事,突发的灵感,剩下的,都能直接交给AI落地。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 528

Vc - Qt - 仿照微信聊天窗口 - 服务器 - 数据表结构设计与管理V1.0(支持账号、好友、群、会话、消息等)

会话表(mx_user_friend_group_session)1.2好友申请表(mx_user_friends_apply)1.4好友之间的消息(mx_user_friends_msg)2.1 群申请表(mx_user_group_apply)2.3群中所发的消息(mx_user_group_msg)1.3好友表(mx_user_friends)2.2 群列表(mx_user_group)1.1 用户表(mx_user)账号表(mx_account)

莫忘输赢的博客 918

【产品】 产品设计:如何解决铝合金氧化着色后表面硬度低的问题(硬质氧化)

1、氧化处理技术 1)化学氧化 化学氧化处理所获得的膜层较薄,一般厚度为0.5μm ~4μm,质软不耐磨,抗蚀能力低于阳极氧化膜。 一般不宜单独便用,由于化学氧化膜吸附能力好,主要作用于油漆的底层,化学氧化按其溶液性可分为碱性和酸性两种。按其膜层性质可分为氧化膜,磷酸盐膜、铬酸盐膜及磷酸一铬酸盐膜等(这类型的氧化膜是可导电)。 2)电化学氧化(阳极氧化) 电化学氧化(俗称阳极氧化)是铝及...

产品线负责人 9741

系统设计经典题:手把手教你搭建一个IM(即时通讯) 系统

OICQ这款聊天工具,不知大家是否熟悉,1999年诞生于深圳,通过熟人关系的快速构建,在一票基于陌生人关系的网络聊天室中脱颖而出,逐渐成为国内社交网络的巨头。如果对腾讯故...

程序员入门进阶 2219

如何使用freesurfer对T1w结构像进行分区指标的提取?——皮层面积,灰质体积,平均厚度,厚度标准差,平均曲率、高斯曲率、曲率指数、折叠指数

如何使用freesurfer对T1w结构像进行分区指标的提取?——皮层面积,灰质体积,平均厚度,厚度标准差,平均曲率、高斯曲率、曲率指数、折叠指数

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 3788

【100%通过率】华为od机试C卷【特殊的加密算法】Python 实现

有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。规则如下1.明文为一段数字串由0-9组成2.密码本为数字0-9组成的二维数组3.需要按明文串的数字顺序在密码本里找到同样的数字串,密码本里的数字串是由相邻的单元格数字组成,上下和左右是相邻的,注意:对角线不相邻,同一个单元格的数字不能重复使用。

MISAYAONE的博客 5924

如何设计与实现一个 IM 消息系统?

点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 8:55 更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2020 超神之路,很肝~中...

芋艿V 557

四舵轮底盘运动学模型(源码)(四轮四独立转向)二

舵轮4转向活动范围 x 轴正半轴,x轴正方向为0弧度,左正右负, -M_PI/2 < 转向范围 < M_PI/2;移动底盘的正前方为x方向,左侧为y轴方向(遵循右手坐标系,右手大拇指指向天空为z轴方向,食指与中指垂直,食指指向小车正前方为x轴,中指指向为移动底盘y轴方向)转向:逆时针旋转角速度w为正,顺时针旋转角速度w为负。(遵循右手螺旋法则,右手握拳大拇指指向天空为旋转z轴方向,拳垂直于地面,4指方向即底盘转动的正方向)左前轮为1号轮,右前轮为2号轮,左后轮为3号轮,右后轮为4号轮。

苏凯的博客 528

MyChat,一个私有的“微信“

独立开发的 IM 系统

2054

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

头条面试官:如何设计与实现一个 IM 消息系统?

Java面试笔试面经、Java技术每天学习一点公众号Java面试关注我不迷路作者:木洛来源:https://developer.aliyun.com/article/253242# 前言I...

java面试笔试 954

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

我通过了阿里面试,但算法太差,还是没去!

文/北妈阅读本文需要 2.5分钟一可能很多人并不知道,北妈我在很早之前,经过猎头介绍,我面试过阿里巴巴信息平台事业部。当然了,由于那时候不想去杭州,所以只过了电话面试这一...

前端你别闹 6934

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

从Java全栈到前端框架:一位资深开发者的面试实录

张伟的面试表现非常出色,他不仅展示了扎实的技术功底,还展现了良好的沟通能力和项目经验。他的回答逻辑清晰,技术细节掌握牢固,能够应对各种复杂问题。相信他在未来的岗位上会有出色的表现。

CatchLight的博客 391

系统设计模拟面试:从需求拆解到风险闭环的完整实战指南

系统设计是技术面试中衡量候选人架构思维与工程落地能力的关键环节,其本质并非考察知识点的记忆,而是检验面对模糊需求时的决策过程与推导逻辑。理解从需求澄清、高层设计到容量估算、风险闭环的完整方法论,能够帮助开发者从单点功能视角跳出,系统性地思考模块边界、数据流与组件选型。这套能力广泛应用于短链接、信息流、消息推送等典型场景,也是技术专家和架构师日常工作中必备的通用素养。对于准备系统设计面试的工程师来说,通过模拟面试进行实时输出训练,能在压力环境下暴露思路断层和表达卡点,从而建立一套稳定可复用的设计推进框架,真正

weixin_30319153的博客 306

Vibe Coding:用GitHub、博客与项目打造差异化技术简历

在软件开发领域,简历是开发者展示技术能力的关键载体。然而,传统简历往往局限于罗列技能关键词,导致信息扁平化,难以在激烈的求职竞争中脱颖而出。其核心原理在于,简历不仅是陈述,更应是能力的证明。从技术价值看,一份优秀的简历应能立体展示开发者的工程思维、问题解决能力和持续学习意愿。应用场景广泛,尤其适用于寻求技术岗位的应届生和初级、中级开发者。为此,Vibe Coding 理念应运而生,它倡导通过经营高质量的 **GitHub 仓库**、撰写深度的 **技术博客**、构建可交互的个人项目Demo,并将这些元素有机

weixin_34235457的博客 446

Meta、微软、谷歌全翻车,给最近想进大厂的人提个醒!

今年北美的秋招形势很残酷:谷歌宣布下半年进入slow down hiring阶段;Meta至少削减3000个engineer岗位;微软取消部分招聘计划,一些核心组将slow hiring在普遍放缓process的情况下,当下仅剩亚麻还在正常招人...坑少人多,竞争将会空前激烈。Sam选择另辟蹊径:重点准备设计题,最后成功拿下亚麻$380k的大包。据他本人透露:之前80%的...

西雅图IT圈 343

Vc - Qt - 仿照微信项目- 服务器 - 数据表结构设计与管理V2.0(支持账号、好友、会话、消息等)

仿照微信聊天项目过程中关于数据库的修改的记录

莫忘输赢的博客 1056

轻松搭建--类似微信的聊天工具

一、前言 腾讯QQ,微信我们大家一直在用的聊天工具。一直想着自己搭建一套类似QQ的聊天工具,最近发现了一款“融云”的聊天平台。可以满足聊天功能。 它支持应用内社交等场景,体验单群聊、聊天室、音视频通话、红包、小视频、动态表情等通讯能力。 它的源码在Github都能找到,Android端,Ios端,Web端,Server端源码都有。今天先搭建一套Web版的聊天工具。 二、搭建步骤 ...

不安分的猿人的专栏 3824

华为面试题就这?00后卷王直接拿下30k华为offer......

先说一下我的情况,某211本计算机,之前在深圳做了大约一年多少儿编程老师,之后内部平调回长沙这边,回来之后发现有点难,这边可能是业绩难做,虚假承诺很厉害,要给那些家长虚假承诺去骗人家,技术上也没啥提升,工资自然也不会有提升(不说提升了,不降就是幸运的了),后面就辞职了,然后自学一段时间就面华为od(现在这环境,我这情况这样很满足了)。

HUA1211的博客 9096

如何开发一个简单的聊天应用程序

开发一个简单的聊天应用程序需要掌握基本的编程和一些Web开发技术。IO等实时通信协议实现聊天功能,能够发送给用户。使用开源框架或库来简化开发过程,例如:快递。js、反应、Vue。考虑使用云服务平台,例如:Heroku、AWS、谷歌云平台。数据库:MySQL、MongoDB、PostgreSQL。实时通信协议:WebSocket、Socket。前端:HTML、CSS、JavaScript。聊天界面(消息列表、输入框、表情符号等)测试聊天App的功能和性能,确保其庆典。

qq_45843977的博客 1850
上一篇: 为什么要学习设计模式
下一篇: Python 全栈工程师必备面试题 300 道(2020 版)
软件供应链安全
软件供应链安全 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 347原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值