要不要再学学下面的文章?
IM服务器设计-如何解决消息的乱序 (www.codedump.info)
IM消息需要面对的另一个难题:如何保证收到的消息不乱序。下面先展开看看要解决这个难题有哪些障碍。
by @技术头条 2024-03-21 23:00 查看详情
IM服务器设计-网关接入层 (www.codedump.info)
IM服务系列文章: IM服务器设计-基础 IM服务器设计-消息存储 网关接入层负责维护与客户端之间的长连接,由于它是唯一一个与客户端进行直接通信的服务入口,
by @技术头条 2024-03-21 23:00 查看详情
IM服务器设计-消息存储 (www.codedump.info)
这部分专门讲述IM消息存储的设计。消息存储的难度在于,要考虑以下的场景:

1、离线消息存储。即发送消息时对方不在线该怎么处理。
2、单聊、群聊消息。
3、随着用户量越来越大,应该以后如何扩展。
by @技术头条 2024-03-13 13:33 查看详情
IM服务器设计-基础 (www.codedump.info)
IM做为非常经典的服务器系统,其设计时候的考量具备代表性,所以这一次花几个篇幅讨论其相关设计。

主要内容相当部分参考了 一套海量在线用户的移动端IM架构设计实践分享一文,在此之上补充了更好的消息存储设计以及集群设计。

by @技术头条 2024-03-13 13:32 查看详情
防止数据泄露的高效策略-翻译整理 (ixyzero.com)
简单来说,就是数据安全左移,在每一个阶段都做卡点和检测,提高入侵/获取敏感数据的成本,减少后续阶段的日志告警量,提高告警检测准确率,利用自动化工具/平台提高响应的速度和效率。
未授权不可访问;有账号凭证要检测是否正常(常用设备、常用网络、常见时间、常见操作行为、……);有账号也仅知其所需最小权限;梳理出的高权限账号的敏感操作进行重点关注。
数据尽量不落地,大部分操作在线即可完成,系统埋点要全面和准确;对于数据下载和外发格外关注,下载设备的DLP的健康状态和策略的有效性需要及时检查。
by @技术头条 2024-03-12 22:56 查看详情
让 Nginx 将 HTTP 请求转发到 HTTPS 安全模式 (lisenhui.cn)
在某次博主的交流讨论时,忽然间发现自己站点原定让 HTTP 转发 HTTPS 的支持功能,实际上并不没有生效。如果是直接输入域名访问的话,那么会出现 400 的错误页面。当初为了让全站支持 HTTPS 也是耗费了不少精力,没想到却是这个结果。
by @技术头条 2023-12-11 23:23 查看详情
单例模式都在这了 (example.com)
Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。

它的核心在于,单例模式可以保证一个类仅创建一个实例,并提供一个访问它的全局访问点。

一些管理器和控制器常被设计成单例模式 。
by @技术头条 2023-12-11 23:08 查看详情
基于模式挖掘的可靠性治理探索 (tech.meituan.com)
本文整理自美团技术沙龙第77期《美团亿级流量系统的质量风险防控和稳定性治理实践》。本文介绍了基于模式挖掘的可靠性治理探索,为通过技术手段解决该领域代表性问题开启了新的思路。文章第一部分介绍可靠性治理的痛点;第二部分引入模式的概念;第三部分讨论新基建下的新尝试;第四部分分享三个典型的实践案例。
by @技术头条 2023-10-24 23:56 查看详情
真实世界的Go设计模式 - 对象池模式 (colobu.com)
对象池(object pool pattern)是一种设计模式。一个对象池包含一组已经初始化过且可以使用的对象,而可以在有需求时创建和销毁对象。池的用户可以从池子中取得对象,对其进行操作处理,并在不需要时归还给池子而非直接销毁它。这是一种特殊的工厂对象。

若初始化、实例化的代价高,且有需求需要经常实例化,但每次实例化的数量较少的情况下,使用对象池可以获得显著的效能提升。从池子中取得对象的时间是可预测的,但新建一个实例所需的时间是不确定。

另外,利用对象池,我们可以重用对象,减少对象的分配,对于垃圾回收的编程语言,也是一种提高性能的手段。
by @技术头条 2023-09-10 23:38 查看详情
真实世界的Go设计模式 - 原型模式 (colobu.com)
*原型模式(Prototype Pattern)是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。
如果你有一个对象,并希望生成与其完全相同或者类似的一个复制品,你该如何实现呢?首先你必须新建一个属于相同类的对象,或者类似的对象,然后你必须遍历原始对象的所有成员变量,并将成员变量值复制到新对象中。在Go生态圈中,我们常常使用下面的库来做这份工作。
by @技术头条 2023-09-10 23:32 查看详情