RabbitMQ 从入门到放弃系列笔记(四):消息分发机制

对于计算密集型任务,需要将其分发给多个消费者进行处理。 准备工作 我们对前面测试的代码稍作改造: task.php <?php /** * 分发任务 */ $exchangeName = 'task'; $queueName = 'worker'; $routeKey = 'worker'; $message = empty($argv[1]) ?...

RabbitMQ 从入门到放弃系列笔记(一):核心概念及术语

声明:本系列为学习笔记,所以比较精简,有问题欢迎讨论。 1、AMQP:Advanced Message Queuing Protocol,是一个提供统一消息服务的应用层标准协议。 2、IPC(单一系统进程间通信) -> socket(不同机器间进程通信) -> AMQP(解决大型系统模块与组件间通信) 3、RabbitMQ 基于 Erlang 开发,是 AMQP...

荐书系列:看书就看经典,经典技术书籍推荐大全

这个列表包括了 100 多本经典技术书籍,涵盖:计算机系统与网络、系统架构、算法与数据结构、前端开发、后端开发、移动开发、数据库、测试、项目与团队、程序员职业修炼、求职面试 和 编程相关的经典书籍。 计算机系统与网络 《图灵的秘密:他的生平、思想及论文解读》 《计算机系统概论》 《深入理解Linux内核》 《深入Linux内核架构》 《TCP/IP详解 ...

《程序员修炼之道:从小工到专家》第八章:注重实效的项目

一、注重实效的团队 让我们针对团队,重述前面的部分章节: 不要破窗户 质量是一个团队问题。 煮青蛙 作为整体的团队甚至更容易被煮熟。 交流 团队作为实体需要同外界进行明晰的交流。 不要重复你自己 交流、不同的人指派不同的工作、即时聊天软件 正交性 围绕功能,而不是工作职务进行组织。 自动化 确保一致和准确的一种很好...

《程序员修炼之道:从小工到专家》第七章:在项目开始之前

一、需求之坑 完美,不是在没什么需要增加,而是在没什么需要去掉时达到的。 需求很少存在于表面上。通常,它们深深埋藏在层层假定、误解和政治手段的下面。 不要搜集需求——挖掘它们 挖掘需求 挖掘商业本质,将需求作为一般陈述,具体的要求作为元数据,从而进行良好的分解。 找出用户为何要做特定事情的原因,而不只是他们目前要做这件事的方式,这很重要。到最后,你的开发必须解决他...

《程序员修炼之道:从小工到专家》第六章:当你编码时(2)

四、易于测试的代码 我们需要在一开始就把可测试性构建进软件中,并且把各个部分连接在一起之前对每个部分进行彻底的测试。 单元测试 在隔离状态下对每个模块进行测试,目的是检验其行为。 单元测试是对模块进行演练的代码,在典型情况下,单元测试将建立某种人工环境,然后调用被测试模块中的例程。然后,它根据已知的值,或是同一测试先前返回的结果对返回的结果进行检查。 随后我们把模块装进...

《程序员修炼之道:从小工到专家》第六章:当你编码时(1)

一、靠巧合编程 怎样靠巧合编程 实现的偶然 实现的偶然是那些只是因为代码在现在的编写方式才得以发生的事情。尽管它们能够工作,但那实在只是一个巧合。 对于你调用的例程,要只依靠记入了文档的行为。如果出于任何原因你无法做到这一点,那就充分把你的各种假设记入文档。 语境的偶然 命令行?GUI?中文? 隐含的假定 巧合可以在所有层面让人误入歧途—...

《程序员修炼之道:从小工到专家》第五章:弯曲或折断(2)

四、它只是视图 一旦你基于责任把程序划分成不同模块,你就有了新的问题,在运行时,对象怎样相互交谈?你怎样管理它们之间的逻辑依赖?也就是说,你怎样对这些不同对象中的状态的变化进行同步? 我们将从事件的概念开始。 一个事件就是一条特殊的消息,说明“刚刚发生了某件有趣的事情”,我们可以用事件把某个对象的状态变化通知给可能感兴趣的其他对象。这样使用事件使得那些对象之间的耦合得以减至...