自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bugstack虫洞栈

微信(小傅哥):fustack | 博客:https://bugstack.cn

原创 面经手册 · 第12篇《面试官,ThreadLocal 你要这么问,我就挂了!》

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!???? 一、前言 说到底,你真的会造火箭吗? 常说面试造火箭,入职拧螺丝。但你真的有造火箭的本事吗,大部分都是不敢承认自己的知识盲区和技术瓶颈以及经验不足的自嘲。 面试时: 我希望你懂数...

2020-09-24 09:28:32 96 0

原创 专栏学习简述以及全套源码获取

一、前言 本专栏是作者小傅哥使用JavaFx、Netty4.x、SpringBoot、Mysql等技术栈和偏向于DDD领域驱动设计方式,搭建的仿桌面版微信聊天工程实现通信核心功能。在接下来的章节里会一步步来带着大家从UI到功能逐项实现。 在后续的专栏内容的讲解中,会有很多涉及到代码的地方,可以先进...

2020-09-22 12:09:38 37 0

原创 PC 端微信页面拆分及 JavaFx 使用

一、前言 对于一个知识点的学习过程来说,往往使用自己熟悉的工具或方式才更易于上手。因为所有同类型的知识点在抛出复杂的流程拨云见日后,所能得到的几乎都是同样的设计思想和实现理论。 在 Java 语言桌面版开发中,直至目前共提供了三套 UI 开发方式;Awt、Swing、JavaFx,以及一些扩展组件...

2020-09-22 12:09:36 41 0

原创 登陆框体实现:结构定义、输入框和登陆

一、前言 从本章节开始我们会陆续实现各个框体的 UI 开发,内容会包括;框体拆解、工程结构、代码开发,以及最后编写事件和接口。 在 JavaFx 中,一个框体包含;窗口 (Stage)、场景(Scene)、布局(Pane)、控件(Button 等) 这四方面内容。而开发过程中可以使用 xml 和编...

2020-09-22 12:09:34 22 0

原创 登陆框体事件与接口

一、前言 在上一章节中我们把登陆窗体开发完成了,并进行了效果演示。那么接下来我们就需要在这个窗体里面添加行为事件和接口,待完成内容如下; 序号 类型 描述 1 事件 鼠标拖拽窗体移动 2 事件 最小化到快捷栏 3 事件 退出当前窗体 4 事件 使用用户 ID 和密码登陆...

2020-09-22 12:09:33 20 0

原创 聊天框体实现:整体结构定义、侧边栏

一、前言 在前面章节我们实现了登陆窗体开发以及窗体需要的事件和接口,最终我们演示了运行效果。从上面简单的例子,我们可以学一个简单窗体的开发和框架结构的定义。 那么接下来我们开始开发聊天窗体,相对于登陆窗体来说,聊天窗体的内容会比较多,同时也会相对复杂一些。因此我们会分章节的逐步来实现这些窗体以及事...

2020-09-22 12:09:31 32 0

原创 聊天框体实现:对话框

一、前言 本章节我们来实现仿微信聊天对话框部分,对话框的功能是将与某个好友或者群组聊天的集合体现。如果你还记得以前的 QQ,那时候与任何一个好友或者群组通信,都是单独打开的窗体,需要在各个窗体间切换聊天。不过那时候大部分人的即时通信的好友并不多,所以也很适合。但是随着后来移动互联网的发展,也推进桌...

2020-09-22 12:09:30 26 0

原创 聊天框体实现:对话聊天框

一、前言 在上一章节我们实现了对话框体的 UI 部分,可以选中对话好友并可以删除操作。那么接下来我开始实现对话框选中后的内容区域展现,也就是用户之间信息发送和展现。从整体上看这是一个联动的过程,点击左侧的对话框用户,右侧就有相应内容的填充。那么右侧被填充对话列表 ListView 需要与每一个对话...

2020-09-22 12:09:28 18 0

原创 聊天框体实现:好友栏

一、前言 截至到本章节我们将聊天框体中的主页面 UI 内容实现完成,可以展示对话列表、选中模拟发送消息、删除对话框等功能。那么接下来我们将开发 好友 页的 UI,目前这一部分还是一个块空白的白板,我们需要在里面首先开发好友列表的功能。大家都经常使用 PC 端的微信,可以知道在好友栏里是分了几段内容...

2020-09-22 12:09:26 23 0

原创 聊天框体实现:好友填充框

一、前言 这一章节里我们需要实现的是将好友栏中四个内容;“新的朋友”、“公众号”、“群组”、“好友”,添加完善相应的功能。如下; 在“新的朋友”里添加好友搜索和添加的功能。因为我们实现的 PC 端微信,是没有手机端的,所以我们需要在这里添加好友搜索功能。如果你开发的是企业聊天软件,那么这里的好友...

2020-09-22 12:09:25 33 0

原创 聊天框体事件定义

一、前言 在桌面版 UI 开发中,为了能使 UI 与业务逻辑隔离,需要在我们把 UI 打包后提供出操作界面的展示效果的接口以及界面操作事件抽象类。那么可以按照下图理解; 从示意图中可以看到,我们可以通过一些列提供出的接口,来操作 UI 效果的展示。 之后是每一个 UI 里的行为操作都会产生...

2020-09-22 12:09:23 11 0

原创 练习篇:聊天表情框体实现

一、前言 结合我们已经学习开发了JavaFx的很多功能,这里设置一个练习题锻炼下对框体的功能实现。 二、练习题 本章节的练习题是:在聊天窗体中开发默认表情框功能,如下图; 三、思路 按照我们的UI架构模型,可以思考下开发这样一个表情弹出层都需要哪些方面的代码类。 因为是两个界面之间的交...

2020-09-22 12:09:22 9 0

原创 解答篇:聊天表情框体实现

一、前言 在上一章节我们设定一个练习题,“聊天表情框体”的实现。那么在没有继续往下看之前你是否有实现了自己的框体效果呢?或者思考到了哪些点,实现了多少功能以及遇到了什么样的问题。现在可以带着你的问题继续往下看,这里我会提供一种实现方式。当然,如果你实现了自己的效果可以在留言区回复哦! 二、工程结构...

2020-09-22 12:09:20 14 0

原创 服务端架构设计

一、前言 可能有些同学一听到架构会感觉到有些“高大上”,或者以为这些东西有些神秘。当然如果是刚刚接触开发没多久,或者刚工作只是参与业务需求的实现,并没有从整体看待全局。那么是有可能对这些架构的字眼有些发蒙。其实从简单来说,哪怕是你最开始练习做作业的 CRUD,其实它也是一种建构模式。只不过在这个架...

2020-09-22 12:09:18 12 0

原创 通信协议包定义

一、前言 有些小伙伴,可能刚开始接触 Netty 通信,并不一定能理解为什么要做通信协议包的定义。那么你是否接触过 RPC 框架,比如说使用过 Dubbo 做一些分布式的接口,那么这个时候是需要将提供接口的一端,提供一个 jar 包,这个 jar 包就是接口信息的描述性文件。 好 !不管你是否接触...

2020-09-22 12:09:16 52 0

原创 客户端架构设计

一、前言 在设计客户端的架构之前,我们先思考下我们的目标以及目前已经完成的内容。好!那么你是否还能记得我们最开始设计 UI 组件包的时候,就已经反复提到要将我们的 UI 与业务进行分离,不要将业务流程代码写到 UI 窗口里去。否则你的代码将越来越难以为维护,每新增加一个功能都将会让你从很多的代码中...

2020-09-22 12:09:15 20 0

原创 数据库表结构设计

一、前言 MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的 RDBMS (Relational Database Management Syst...

2020-09-22 12:09:13 25 0

原创 登录功能实现

一、前言介绍 在前面我们已经完成;UI 界面开发、服务端架构设计、客户端架构设计、库表设计。那么接下来从本节开始,陆续实现我们的通信核心功能。 在讲解的过程中我会在章节中提供简要明了的系统流程图,以及代码核心功能的实现。这也是我们逐步使用 DDD 四层设计模式与 Netty 结合的实践。 二、流程...

2020-09-22 12:09:12 19 0

原创 搜索和添加好友

一、前言介绍 在上一章节我们实现了用户登录到成功后跳转到主窗体聊天中,而目前跳转后我们还不能发起 聊天,因为目前我们的个人用户还没有自己的好友。那么接下来我们来实现搜索和添加好友功能,因为在微信中是可以从手机端扫描或者通信录进行添加好友。但是我们目前只有 PC 端所以需要在服务端来搜索添加。 在实...

2020-09-22 12:09:10 24 0

原创 对话通知与应答

一、前言 在我们使用微信的时候都会看到有一个聊天发送信息的地方左面是“好友栏”,但是这个好友栏可不是你的所有好友,而是与谁对话了才会在这里看到好友信息,我们称之为这个为对话框列表。这让我想起最开始我爸爸妈妈使用微信的时候,经常会说我好友咋找不到了,头几天还跟我说话了呢。而且也不敢删这里面的记录,后...

2020-09-22 12:09:09 20 0

原创 用户与好友通信

一、前言 经过我们一系列基础工作的开发,写到这里终于可以要去实现两个用户之间的通信了。可以先想一下我们都做了那些基础工作才到这里;加好友、好友列表、对话通知。是这三大部分的完成,为下一步好友之间的通信打下基础。 那么,好友之间的通信基本需要的是,好友需要在线,因为只有这样才能拿到好友的 chann...

2020-09-22 12:09:07 13 0

原创 用户与群组通信

一、前言 在上一章节我们实现了好友与好友的通信流程,可以简单回忆下我们是从对话框中选择好友进行发送信息。那么我们的对话框中还有一个默认的群组,接下来我们主要实现用户群组的通信。群组通信在 Netty 的实现中,是需要将用户的通信管道 Channel 放到 ChannelGroup 中进行群发消息,...

2020-09-22 12:09:06 8 0

原创 断线重连恢复通信

一、前言 在我们日常使用聊天软件进行通信的时候,可能有时候会由于我们的网络环境问题而导致没有网可用,也就是暂时性的断网。那么此时你的聊天软件发送信息,就不能被接收到了。但是当网络恢复后,我们的聊天就又可以继续了。在这里有一个非常重要的保持通信的手段,就是断线重连。以此来保证在网络以及以其他原因导致...

2020-09-22 12:09:04 6 0

原创 服务端控制台搭建

一、前言 到本章节我们通信的基本功能已经完成,那么接下来我们需要对通信服务做一个管理,例如 Netty 服务的运行状态、用户列表和在线状态以及各种纬度的通信信息查询等等。这些都是服务端控制台的用途,我们可以使用网页版的后台来进行搭建我们的控制台。 接下来,我们就开发完善这一个后台的基础功能,有了这...

2020-09-22 12:09:03 9 0

原创 练习篇:聊天表情发送功能实现

一、前言 什么是聊天中的灵魂呢?当然是表情了,如果没有表情只是文字,那么你怎么表达自己的不可被束缚的情感呢。 二、练习题 在UI学习完成后,我们设置了一个练习题,来开发表情框体。那么这一章节我们再加一个练习题,来完成表情的发送。 三、思路 微信表情也是分为几种的,有固定表情、自己下载的表情...

2020-09-22 12:09:01 14 0

原创 解答篇:聊天表情发送功能实现

一、前言 在上一章节我们设置了这样的一个练习题;“** 聊天表情发送功能实现 **”,那么你是否实现了发送表情呢,还是实现了更加强大的功能。学习的阶段当你已经入门了以后,就需要逐步开始简历自己的思维路径,并去实践。 二、流程设计 从我们的流程中可以看到,固定表情的发送与我们发送用户信息、群组信...

2020-09-22 12:08:59 21 0

原创 程序员为什么热衷于造轮子,升职加薪吗?

作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀、分享、成长,让自己和他人都能有所收获!???? 一、前言 哪个架构师没造过轮子? 你想过这样一件事吗?是先具备能力在安排职位,还是先安排职位在学习? ????什么?走后门,你出去! 就像我们上学考试、跆拳...

2020-09-21 09:30:49 129 1

原创 面经手册 · 第11篇《StringBuilder 比 String 快?空嘴白牙的,证据呢!》

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!???? 一、前言 聊的是八股的文,干的是搬砖的活! 面我的题开发都用不到,你为什么要问?可能这是大部分程序员求职时的经历,甚至也是大家讨厌和烦躁的点。明明给的是拧螺丝的钱、明明做的是写CR...

2020-09-18 09:35:58 62 0

原创 一次代码评审,差点过不了试用期!

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!???? 一、前言 好的代码往往也很好看 代码是给机器运行的,但同样也是给人看的,并且随着上线还需要由人来运维。那么写出可扩展、易维护、好读懂的代码就显得非常重要。 对于新人来说,互联网大厂...

2020-09-15 09:46:38 5639 4

原创 面经手册 · 第10篇《扫盲java.util.Collections工具包,学习排序、二分、洗牌、旋转算法》

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!???? 一、前言 算法是数据结构的灵魂! 好的算法搭配上合适的数据结构,可以让代码功能大大的提升效率。当然,算法学习不只是刷题,还需要落地与应用,否则到了写代码的时候,还是会for循环+i...

2020-09-11 08:36:14 99 0

原创 握草,你竟然在代码里下毒!

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!???? 一、前言 学过的代码记不住?方式不对才记不住,你这么记! Git:上厕所不叫上厕所,叫拉分支! Socket:厕所就是服务器,坑就是端口! 队列:上厕所????叫入队列,先进先出...

2020-09-07 09:35:21 942 0

原创 面经手册 · 第9篇《队列是什么?什么是双端队列、延迟对列、阻塞队列,全是知识盲区!》

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!???? 一、前言 买房子最重要的是房屋格局! 如果买房子能接受地理位置、平米价格外,最重要的就是房屋格局。什么?丈母娘!你????????‍♂,出去! 房屋的格局其实对应的就是程序开发的根...

2020-09-03 09:32:00 515 0

提示
确定要删除当前文章?
取消 删除