图解正向代理、反向代理、透明代理:可能是你见过的讲解最透彻的代理技术教程

套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术。一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术。常用的代理技术分为正向代理、反向代理和透明代理。本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理解代理服务技术。 一、正向代理(Forward Proxy) 一般情况下,如果...

2018 年 Web 开发工程师学习进阶路线图

2018 年 Web 开发工程师路线图 在下面的路线图中你可以找到一条帮助你成为前端、后端或运维工程师的路径。如果你觉得对你有帮助的话,欢迎留言或给我们提建议。 🚀 基础入门 🎨 前端工程师路线图 👽 后端工程师路线图 对后端而言,我个人跟喜欢 Node.js 和 PHP 7。另外,最近我也在看 Go 并且很喜欢它。除此之外,如果必须选择其它语言的话,我会倾...

Laravel 开发工具系列 —— 使用 Visual Studio Code 进行 Laravel 开发

关于 Laravel 代码开发工具大家各有所好,大部分应该在用 PHPStorm,Sublime 也有很多粉丝,还有人喜欢 Atom,不过今天要给大家推荐的是微软旗下新推出的编辑器 —— Visual Studio Code,注意这货不是 Visual Studio 那个庞然大物,一字之差,如隔三秋,它只有 46M 的体量,配合丰富的插件库,可以快速搭建适用于各种编程语言的开发利...

阿里云 Ubuntu 14.04 LTS 中将 PHP 从 5.5 升级到 7.x 完整笔记

最近桥边红药同学给我反映说 Laravel 学堂用户登录退出功能报错,我去看了下确实如此,查看源码发现是 PHP 版本的问题,Flarum 框架要求 PHP 版本>=5.6.0,而现在服务器上 PHP 的版本是 5.5.9,所以有必要进行升级,为了一步到位,直接升级到 PHP 7.0 版本。现将升级步骤记录如下,以供有类似需求同学参考。 注:服务器环境是阿里云 ECS U...

RabbitMQ 从入门到放弃系列笔记(八):远程调用(RPC)

在云计算环境中,很多时候需要用它其他机器的计算资源,把一部分计算任务分配到其他节点来完成。RabbitMQ 如何使用 RPC 呢?下面将会通过其它节点完成斐波纳契示例。 流程图  当客户端启动时,它创建了匿名的 callback queue 客户端发起 RPC 请求时将同时设置两个 properties:reply_to 设置为 callback queue;cor...

RabbitMQ 从入门到放弃系列笔记(七):通过主题进行消息分发

Topic Exchange 对于 Message 的 routing_key 字符串格式是有限制的:以点号"."分割的字符表,如php.laravel,并且长度不能超过 255 个字节。 对于 routing_key 而言,有两个特殊字符: *:代表任意单词 #:代表0个或多个单词  Topic Exchange 与其他 Exchange 的转化:...

RabbitMQ 从入门到放弃系列笔记(六):消息路由

如果我们只想让 error 级别的 log 保存到磁盘,该怎么做? emit_logs_direct.php <?php /** * 发送消息 */ $exchangeName = 'direct_logs'; $level = empty($argv[1]) ? 'info' : $argv[1]; // 错误级别:info、warn、error $m...

RabbitMQ 从入门到放弃系列笔记(五):消息订阅(Publish/Subscribe)

之前都是将消息发送到同一个 Consumer,而现在我们需将其发送到多个 Consumer。 我们将创建一个日志系统,它包含两个部分:第一个部分负责发出log(Producer),第二个部分负责接收并打印(Consumer)。我们将构建两个 Consumer,第一个将 log 写到物理磁盘上;第二个将 log 输出到屏幕。 "Fanout" not telling an exch...

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

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