当前位置: 主页 > JAVA语言

java实现聊天室功能-java置顶时间功能实现

发布时间:2023-06-04 16:05   浏览次数:次   作者:佚名

微信后台主要使用C++。后台服务使用Svrkit框架搭建java实现聊天室功能,服务之间通过同步RPC进行通讯。

java置顶时间功能实现_java聊天室的实现教程_java实现聊天室功能

使用 Svrkit 构建了数以千计的服务模块java实现聊天室功能,提供数万个服务接口,每天 RPC 调用次数达几十万亿次。

PhxRPC 就是微信后台团队推出的一个非常简洁小巧的 RPC 框架,编译生成的库只有450K:

Github 地址:

但是这个开源的框架不是微信内部实际使用的,因为实际使用的版本有太多的内部依赖,已经不太好整理开源出来,所以这个是开源简化版。

java置顶时间功能实现_java聊天室的实现教程_java实现聊天室功能

PhxRPC 使用“协程” 来解决常规“异步 + 回调”方式存在的 IO 阻塞的问题,大大提高了整体性能。

它主要有以下几个特点:

用 PhxRPC 写一个服务非常简单,用 Protobuf 定义好接口协议后,直接就可以生成服务代码,你只需要关注业务逻辑实现即可,其它网络收发包、协议解析都由框架完成了:

java置顶时间功能实现_java聊天室的实现教程_java实现聊天室功能

java置顶时间功能实现_java聊天室的实现教程_java实现聊天室功能

另外,很多同学问我网络编程如何学习?

在这分享一点个人经验吧,我们知道有本网络编程圣经:《Unix网络编程》

但是我建议不要直接上来就去看《Unix网络编程》,这本书里面很大的篇幅都在讲解 API 和 Unix Socket API 细节,很容易看不下去。

我建议先去随便找菜鸟教程或者 man 手册熟悉常用的 socket api,先写几个网络聊天室这种小程序来,然后再去考虑进阶。

java实现聊天室功能_java置顶时间功能实现_java聊天室的实现教程

C++ 后台开发基本是离不开网络编程的,其实甚至整个后台开发也可以看做是在做网络编程。

只不过别人的框架帮我们做了协议解析、网络数据传输、解封包这些底层操作。

比如 SpringBoot 这种保姆级框架,基本上属于将一个框架能干的事都干完了,以至于我们开发业务只需要定义接收和返回包的数据格式,然后做逻辑处理就完了。

像序列化、解封包、IO 处理这种网络编程必备的脏活业务开发根本不会接触到。

java聊天室的实现教程_java实现聊天室功能_java置顶时间功能实现

但是网络编程技能还是很重要的,特别是对于 Linux C++ 开发来说。

Linux 下网络编程核心的包括系统编程和网络 IO 两个部分:

推荐的书:

这两本是砖头书,虽然是网络编程和 Unix 系统编程方面的无出其右的圣经,但主要用途还是垫显示器(逃, 个人觉得这种书不是面向读者的,具体原因和如何阅读这种书在后文介绍。

java置顶时间功能实现_java聊天室的实现教程_java实现聊天室功能

我强烈推荐,这本书前半部分基本是在重复计网基础知识,但是后面几章关于高性能服务器程序框架、高性能IO、IO复用、定时器、多线程编程、线程池和进程池还是讲得非常全面到位的,值得一看,看完基本上对于整个网络编程就有了框架。

这本书同样强烈推荐,这是陈硕大佬写的书,说实话第一部分:C++ 多线程系统编程都直接把我看蒙了,没有想到 C++ 里要做到线程安全这么难,第一章我看了两三遍才看懂吧。。。这是难得的讲解 C++ 多线程编程的书。

并且在书中,陈硕大佬用了一章讲解了 Muduo 网络库设计与实现,Muduo 比较适合学完基础的网络编程后继续进阶学习如何设计和写一个网络库,是一个高质量的 Reactor 网络库,采用 one loop per thread + thread pool 实现,代码比较简洁,书和源码搭配着看作为学习网络编程方面来说是非常不错。

推荐的阅读顺序:

《Linux高性能服务器编程》—> 《Unix网络编程》(注意,不是全看,而是学习高性能服务器编程这本书的时候需要某个Socket API 或者 IO 模型时再去查阅 UNP) -> 《Linux 多线程服务端编程》

学完网络编程就可以写点小项目练手了,这里列举几个项目:

最后为大家准备了10份100元红包,只要关注了我的 CSDN 账号即可参与(必须在开奖前关注的才有效哟)