摘要: IM服务器要实现的最基本功能就是消息的转发。——好像是一句废话! 这就意味着IM服务器要为每个登录用户创建一个与该用户信息相关的内存上下文,为方便描述我们在这里称之为:user_context。user_context中一般包含这些基本信息:用户id、昵称、peer端的ip和端口,以及最重要的用于通 阅读全文
posted @ 2021-11-02 16:19 一只会铲史的猫 阅读(1077) 评论(3) 推荐(2)
摘要: 一、服务器特点 01、傻瓜式部署,一键式启动; 02、单机支持10万以上在线用户聊天(8G内存,如果内存足够大,并发量可超过10万); 03、支持服务器集群,集群间高内聚、低耦合,可动态横向扩展IM服务器,最大支持200台IM服务器的集群; 04、高并发、高稳定性; 05、支持群组聊天; 06、IM 阅读全文
posted @ 2021-11-01 17:29 一只会铲史的猫 阅读(1715) 评论(6) 推荐(3)
摘要: 编写服务器程序时,需要频繁的申请和释放内存,长时间运行会产生大量的内存碎片,这就导致即使当前系统中的闲置内存还足够多,但也无法申请到大的连续可用的内存块,因为此时的物理内存已经千疮百孔像个马蜂窝。此外,在高并发的情况下频繁的malloc/free也是一笔额外的cpu负担。 如何解决内存碎片呢? 在这 阅读全文
posted @ 2021-09-15 14:55 一只会铲史的猫 阅读(1852) 评论(0) 推荐(1)
摘要: 先看如下两个问题: 问题1、红黑树的键值可以重复么? 问题2、红黑树必须有键值么? 关于红黑树的介绍网上非常多,红黑树的应用也非常广泛。问一下度娘,她会告诉你各种各样的实现方法,C和C++版本都有,linux内核使用的版本也有。代码都大同小异,就是插入或删除时如何修正,如何搞平衡。很多文章图文并茂、 阅读全文
posted @ 2021-09-02 13:56 一只会铲史的猫 阅读(734) 评论(0) 推荐(3)
摘要: 为何要打印日志?让程序裸奔不是一件很快乐的事么? 有些BUG就像薛定谔的猫,具有波粒二象性,当你试图去观察它时它就消失了,当你不去观察它时,它又会出现。当你在测试人员面前赌咒发誓,亲自路演把程序跑一遍的时候,这些bug就会神奇的消失;一旦离开你的骚操作重新回到测试人员手中,这些bug又会突然的出现。 阅读全文
posted @ 2021-08-24 13:49 一只会铲史的猫 阅读(1125) 评论(0) 推荐(2)
摘要: 历史溯源 由于历史原因,我们目前看到的大部分的网络协议都是基于ASCII码这种纯文本方式,也就是基于字符串的命令行方式,比如HTTP、FTP、POP3、SMTP、Telnet等。早期操作系统UNIX(或DOS),用户操作界面就是控制台,控制台的输入输出方式就决定了用户只能通过敲击键盘的方式将协议命令 阅读全文
posted @ 2021-08-03 11:11 一只会铲史的猫 阅读(1329) 评论(2) 推荐(2)
摘要: 为什么是mysql? 现在几乎所有的后台应用都要用到数据库,什么关系型的、非关系型的;正当关系的,不正当关系的;主流的和非主流的, 大到Oracle,小到sqlite,以及包括现在逐渐流行的基于物联网的时序数据库,比如涛思的**TDengine**,咱们中国人自己的开源时序数据库,性能杠杠滴。 凡此 阅读全文
posted @ 2021-07-30 11:36 一只会铲史的猫 阅读(993) 评论(0) 推荐(0)
摘要: 很多人都提到了非对称加密速度慢,但这只是一个原因,但不是主要原因,甚至是微不足道的原因。 SSL协议到3.0后就已经到头了,取而代之的是TLS,相较于SSL的“安全套接字层”的命名,TLS的“传输层安全”这种定义更加严谨。毕竟传输安全的范畴要远大于套接字安全这种定义,这种定义偏技术层面,但安全不仅要 阅读全文
posted @ 2021-07-29 10:21 一只会铲史的猫 阅读(584) 评论(0) 推荐(1)
摘要: 服务器程序为何要进行内存管理,管中窥豹,让我们从string字符串的操作说起。。。。。。 new/delete是用于c中的动态内存管理函数,而malloc/free在c和c中都可以使用,本质上new/delete底层封装了malloc/free。无论是上面的哪种内存管理方式,都存在以下两个问题: 1 阅读全文
posted @ 2021-07-27 10:58 一只会铲史的猫 阅读(590) 评论(1) 推荐(0)
摘要: 先看如下三个结构体的定义 这三个结构体的前三个成员都相同,前两个成员只是为了充个数,从而让我们定义的struct看上去真的像个结构体,一个是char类型,一个是int类型。最后一个也是int类型,iDataLen用于记录结构体自带数据的长度,pData指向的就是我们“认为”的数据区。 // 结构体1 阅读全文
posted @ 2021-07-22 15:23 一只会铲史的猫 阅读(454) 评论(1) 推荐(0)