包含标签 编程 的文章

使用gRPC和Proto Buffers来实现PRC调用

上一篇写了Thrift,这篇就把当下比较流行的跨语言服务调用框架gRPC一起介绍下。gRPC来自Google(所以要好好学习,就需要ti子了),如果你了解过Thrift,那gRPC跟其很类似,也是一个RPC的框架。gRPC采用Protocol Buffers……

阅读全文

使用Thrift来实现跨语言的方法调用

有时遇到10多年历史的C++写的老代码,对于不熟悉C++开发的团队来说,最好的方式是不去改它。但是,你却有需求从Web(比如PHP的站点)来调用老代码的库。怎么办?传统的方式是用COM组件,但这就限制在Windows平台上了。要做到完全跨平台,跨各种语言。……

阅读全文

PHP编写扩展来调用动态链接库

几年前曾写过Java如何调用动态链接库,这次的任务是用PHP来调用本地动态链接库,这篇收录下方法,主要针对Linux系统。话不多说,快速进入主题。 准备动态链接库 具体可以参考这篇文章,这里不多说了。为了简便,这次我们写一个提供整数加法功能的库。 创建&rdqu……

阅读全文

谈一谈Python的上下文管理器

经常在Python代码中看到with语句,仔细分析下,会发现这个with语句功能好强,可以自动关闭资源。这个在Python中叫上下文管理器Context Manager。那我们要怎么用它,什么时候用它呢。这里我们就来聊一聊。 上下文管理器的作用 很多情况,当我们……

阅读全文

基于协程的Python网络库gevent介绍

继续Python协程方面的介绍,这次要讲的是gevent,它是一个并发网络库。它的协程是基于greenlet的,并基于libev实现快速事件循环(Linux上是epoll,FreeBSD上是kqueue,Mac OS X上是select)。有了gevent,协程……

阅读全文

用greenlet实现Python中的并发

在上一篇介绍生成器时,我们讲到了协程(Coroutine),它也被称为微线程。回顾一下,协程可以在一个函数执行过程中将其挂起,去执行另一个函数,并在必要时将之前的函数唤醒。在Python的语言环境里,协程是相当常用的实现”并发”的方……

阅读全文

谈谈Python的生成器

第一次看到Python代码中出现yield关键字时,一脸懵逼,完全理解不了这个。网上查下解释,函数中出现了yield关键字,则调用该函数时会返回一个生成器。那到底什么是生成器呢?我们经常看到类似下面的代码 def count(n): x = 0 while x < n: yield x x += 1 for i in count(5): print i 这段代码执行……

阅读全文

关于Python的Mixin模式

像C或C++这类语言都支持多重继承,一个子类可以有多个父类,这样的设计常被人诟病。因为继承应该是个”is-a”关系。比如轿车类继承交通工具类,因为轿车是一个(“is-a”)交通工具。一个物品不可能是多种不同的……

阅读全文

探讨下Javascript中的Promise模式

Javascript最令人称道的就是它的事件回调模式,因此即使只有一个执行线程,它也能支持异步高并发。不过回调写多了,代码就会非常复杂难懂,因为回调不像同步代码,执行顺序是从上至下,读回调代码必须跳来跳去,思考什么情况下到底跳到了什么地方,很辛苦,这种情况……

阅读全文

CSS样式选择优先级

记录一下之前看到过的CSS样式优先级计算方法。 CSS的样式优先级由一个4位数字权重表示,对于同一个文档元素,如果存在多个样式,就比较每个样式4位数的优先级权重,然后选择值较大的那个。那么这4位数权重是怎么计算的呢? 一般我们添加样式有以下几种方法: 内联样式 通……

阅读全文