高阶函数是至少满足下列条件之一的函数
* 函数可以作为参数被传递
* 函数可以作为返回值输出
(js这么好的语言中的函数当然满足 ^^)_
函数作为参数传递
把函数当作参数传递,可以抽离出一部分容易变化的业务逻辑,把这部分业务逻辑放在函数中,可以分离业务代码中变与不变的部分。
回调函数,ajax异步,callback
var getUserInfo() = function(userId, callback) {
$.ajax('http://xxx.com/getUserInfo?' + userId, function(data) {
if (typeof(callback === '
继续阅读 »
原文连接:Intro to Aspect Oriented Programming
本文简单地介绍了 AOP 的原理,以及 AOP 与其他方式的异同,并没有涉及太多的复杂逻辑,另外推荐下面两篇文章,这些文章中都间接或直接提及了 AOP:
用 AOP 改善 JavaScript 代码
使用 JavaScript 拦截和跟踪浏览器中的 HTTP 请求
面向切面编程(AOP)是一种非侵入式扩充对象、方法和函数行为的技术。通过 AOP 可以从“外部”去增加一些行为,进而合并既有行为或修改既有行为。
虽然有很多技术可以用来增加和合并行为,例如继承、组合、委托,然而,在很多情况下,AOP 被证明是更灵活和更少侵入的方式,非常值得将其纳入我
继续阅读 »
业界动态
Symantec加入OpenStack企业赞助
http://www.symantec.com/connect/blogs/symantec-joins-openstack-foundation
4.29号,Oracle发布了集成OpenStack的Solaris 11.2
4.30,Redhat以1.75亿美元收购inktank公司,inktank的主要产品是软件定义存储ceph解决方案。ceph本身是开源,基于一个统一的对象存储系统,同时对外提供块、文件和对象接口,其中对象接口兼容Swift和Amazon S3。对象接口和文件接口的数据是拉通访问的,即,用对象接口存储的数据,可以直接用共享文件系统访问。这是
继续阅读 »
业界动态
5.27号,Oracle发布了MySQL Fabric,为MySQL提供了HA和可扩展性的支持。这对于OpenStack来说是无疑是件好事。
2014.6.2,第一个(至少是我所知道的第一个)使用在生产环境中,采用IPv6的OpenStack云平台部署成功,是一个叫Nephos6的公司主导。在之前与Luxembourg大学的试点中已经成功支持了德国选举。
http://www.businesswire.com/news/home/20140602005581/en/IPv6-only-OpenStack-Cloud-deliver-production-services-deployed
Cloud OS fo
继续阅读 »
你对 HTTP 有什么了解
网站性能优化有哪些方法
你了解快速排序吗
and that's it
Before Interview
15:20 腾讯打电话过来问我方不方便有时间吗?我说可以等我 5 分钟吗?然后他说,那我 1 个小时之后再打电话过来,我说好
继续阅读 »
Install dependencies:
Install maven manually:
wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz
tar zxvf apache-maven-3.3.3-bin.tar.gz
mv apache-maven-3.3.3 /usr/local/apache-maven
继续阅读 »
更新历史:
2016.03,初稿完成
2017.09,针对 Pike 版本更新
2018.01,添加了几句对 lb 中 vip port 的解释
Octavia简介
Octavia主要参与贡献厂商:http://stackalytics.com/?project_type=openstack&metric=commits&module=octavia
继续阅读 »
配置
git config --list 查看系统变量的配置
export https_proxy="http://XXXXXX:XXXXXX@XXXXXX:8080/" 配置代理
密码中的特殊字符转义:
ampersand & (%26)
at @ (%40)
space (%20)
double-quote " (%22)
single-quote ' (%27)
colon : (%3A)
继续阅读 »
Tornado本身的设计目标是单线程异步非阻塞,要想很好的发挥它的性能最好使用异步IO,并且Tornado本身也提供了异步的AsyncHttpClient的实现,配合gen.coroutine和yield,可以让请求异步执行从而不阻塞当前线程,对于单线程服务器来说,阻塞(blocking)和同步的sleep这种会挂起线程的动作都是服务器的噩梦,因为只有一个线程,所以任何等待都会影响服务器对于其他请求的处理。
异步非阻塞对于第三方IO是http请求的情况还好,毕竟可以使用Tornado提供的异步实现,但是对于有些数据库的IO,则需要异步库的支持,比如针对MongoDB的Motor等。但是第三方异步库的质量也是参差不齐,在实际的工程中
继续阅读 »
服务的增删改查
在Nova中提供对Service资源的操作API,包括服务的查询、删除、更新。
查询操作使用如下(假设你已经拿到了keystone的token):
URL: http://{ip}:8774/v2/{tenant-id}/os-services(后面可以加过滤条件?binary=nova-compute或者?host=ubuntu)
Accept: application/json
Content-Type: application/json
X-Auth-Token: {token}
在看返回消息体之前,先熟悉一下Service的数据库模型:
id = Column(Integer, pri
继续阅读 »