IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:缓冲区

共 3 篇相关文章

IT 累计浏览 2,858

PHP输出缓冲及其应用

这篇讲的是PHP里一个常被忽略但挺实用的特性:输出缓冲。作者从计算机科学里“缓冲”这个基础概念切入,清晰区分了缓冲(写时用)与缓存(读时用)的差异,为理解PHP行为打下了基础。 核心内容围绕PHP的“ob_”系列函数展开。文章用简单代码演示了,为什么即使调用了sleep,浏览器也会一次性显示所有内容——秘密就在于PHP脚本执行完后才一次性发送数据。更实用的是,利用ob_start()、ob_get_contents()等函数,我们能在数据发送前“截获”并修改它,比如实现URL协议替换这种操作。 文章还深入探讨了php.ini中的output_buffering配置。有趣的是,即使关闭它,由于系统层面和浏览器的缓冲存在,也无法简单实现分段输出。最终,作者给出了一个结合flush()函数的可行方案,并延伸到一个实际应用:如何用缓冲机制实现简易的服务器推送(Comet),让内容像“挤牙膏”一样分批到达客户端。这让我们看到了缓冲技术从原理到实战的完整链条。

IT 累计浏览 2,236

Chaos网络库(二)- Buffer的设计

这篇技术分析聚焦于Chaos网络库中的Buffer模块设计,特别是它如何不同于主流网络库libevent的处理方式。作者直接切入技术细节,指出libevent(以1.4.13版本为例)采用了能自动扩张的传统buffer策略。 而Chaos则另辟蹊径,其buffer设计旨在解决特定场景下的性能与内存管理问题。文章通过对比揭示了两者在内存分配、数据拷贝与扩容机制上的关键差异:libevent偏向灵活通用,Chaos则更注重在已知负载或特定协议下的高效与可控,减少了不必要的内存波动。 这种设计差异直接影响了各自适用的应用场景。对于需要极致性能或资源受限的环境,Chaos的方案可能更具优势;而对于需求多变的一般应用,libevent的经典方式则提供了更大的灵活性。文章通过具体实现思路的剖析,展现了网络库底层设计中权衡与取舍的艺术,为开发者提供了有价值的实现参考。

IT 累计浏览 2,805

未公开的gen_tcp:unrecv以及接收缓冲区行为分析

这篇分析聚焦于Erlang中一个未公开的gen_tcp:unrecv函数,它允许向TCP接收缓冲区直接填充指定数据。作者从gen_tcp模块的源码入手,深入探讨了这个函数的核心实现思路和缓冲区行为机制。文章指出,gen_tcp:unrecv看似简单,却巧妙地绕过了标准接收流程,让开发者能够灵活控制数据注入时机,比如在需要预加载测试数据或调整接收顺序时非常实用。通过剖析其内部实现,如缓冲区指针操作和数据管理策略,作者揭示了它在避免缓冲区溢出和确保数据一致性方面的优势。同时,文章对比了常规TCP接收方法与使用gen_tcp:unrecv的场景差异,强调后者在网络编程中能提升代码简洁性和性能。结合实际案例,作者展示了如何在Erlang并发模型中应用这一技巧来优化数据流处理,为读者提供了对底层缓冲区管理的更直观理解。