真实世界的Go设计模式 - 原型模式 (colobu.com)

【简介】

*原型模式(Prototype Pattern)是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。
如果你有一个对象,并希望生成与其完全相同或者类似的一个复制品,你该如何实现呢?首先你必须新建一个属于相同类的对象,或者类似的对象,然后你必须遍历原始对象的所有成员变量,并将成员变量值复制到新对象中。在Go生态圈中,我们常常使用下面的库来做这份工作。

点击查看原文 >>

@技术头条 2023-09-10 23:32 / 原作者微博:@colobu / 0个评论
赞过的人: @IT技术博客大学习
要不要再学学下面的文章?
浅谈 Follow 中的设计理念 (innei.in)
本文分享了 Follow 应用中的核心设计理念,包括多种图标转换方式、Peek 模态预览、优雅的动效过渡(通过 Framer Motion)、层叠模态框的层级处理以及 AutoResize 组件的平滑高度调整。这些设计细节提升了用户体验,同时控制了动态效果强度,确保设备性能与用户偏好。
by @技术头条 2024-11-02 16:58 查看详情
IM系统重构到 SDK 设计的最佳实践 (crossoverjie.top)
本文介绍了 CIM 系统重构为 SDK 的实践,使用 Builder 模式创建客户端,实现了长连接、心跳检测及自动重连等功能,极大简化了消息收发流程。还优化了请求代理,通过 `ProxyManager` 动态管理 URL,提升了代码复用性。集成测试涵盖多服务器重连和消息验证,确保系统高可用性。重构增强了模块间解耦,使 SDK 更易于维护和扩展。
by @技术头条 2024-11-02 16:49 查看详情
领域驱动设计DDD在B端营销系统的实践 (tech.meituan.com)
领域驱动设计(DDD)在复杂业务系统中的应用非常有效,特别是在 B 端营销系统中。本文分享了美团如何通过 DDD 实践,优化营销系统的架构与设计,提升业务应对能力。想了解如何应对复杂业务需求的变化?千万别错过!
by @技术头条 2024-09-09 23:41 查看详情
防呆设计 (ixyzero.com)
设计中的“防呆”理念,是为了防止用户出错,让复杂的操作变得简单直观。本文介绍了防呆设计的10大原则,如自动化、顺序操作、视觉标识等,帮助产品经理和设计师更好地为用户提供无错体验。想要提升用户体验,降低操作错误率?快来了解这些设计技巧!
by @技术头条 2024-09-08 23:28 查看详情
命令分发模式 (colobu.com)
文章介绍了命令调度器模式(Command Dispatcher Pattern)的应用,该模式能将命令和其对应的处理逻辑分离,提升代码的可扩展性和可维护性。作者展示了如何在项目中使用Rust实现这种设计模式,包括如何将不同的命令注册到调度器,并动态调用相应的命令处理程序。文章提供了具体的代码示例,帮助读者理解如何在实践中应用该模式来简化复杂的业务逻辑。
by @技术头条 2024-08-06 07:54 查看详情
IM服务器设计-如何解决消息的乱序 (www.codedump.info)
IM消息需要面对的另一个难题:如何保证收到的消息不乱序。下面先展开看看要解决这个难题有哪些障碍。
by @技术头条 2024-03-21 23:00 查看详情
IM服务器设计-网关接入层 (www.codedump.info)
IM服务系列文章: IM服务器设计-基础 IM服务器设计-消息存储 网关接入层负责维护与客户端之间的长连接,由于它是唯一一个与客户端进行直接通信的服务入口,
by @技术头条 2024-03-21 23:00 查看详情
聊聊 Go 的边界检查消除技术 (colobu.com)
在翻译的从慢速到SIMD一文中, SourceGraph工程师其中的一个优化就是边界检查消除(BCE,bounds check elimination)技术,同时他也抛给了读者一个问题:

为啥在使用 a[i:i+4:i+4] 而不是 a[i:i+4]?

本文第一部分先回答这个问题。 第二部分介绍更好的边界检查消除方法。 第三部分再全面梳理Go的边界检查消除技术。
by @技术头条 2024-03-21 23:00 查看详情
Go 中的高速数据包处理:从 net.Dial 到 AF_XDP (colobu.com)
最近编写了一个Go程序,向数百万个IP地址发送ICMP ping消息。显然,希望这个过程能尽可能快速高效地完成。因此,这促使我研究各种与网络栈交互和快速发送数据包的各种方法。这是一个有趣的旅程,所以在本文中,我将分享一些学习成果,并记录下来供将来参考:)你将看到,仅使用8个内核就可以达到1880万数据包/秒。这里还有一个GitHub仓库,其中包含了示例代码,可以方便地跟随学习。
by @技术头条 2024-03-21 22:55 查看详情
IM服务器设计-消息存储 (www.codedump.info)
这部分专门讲述IM消息存储的设计。消息存储的难度在于,要考虑以下的场景:

1、离线消息存储。即发送消息时对方不在线该怎么处理。
2、单聊、群聊消息。
3、随着用户量越来越大,应该以后如何扩展。
by @技术头条 2024-03-13 13:33 查看详情