Nginx 限流

电商平台营销时候,经常会碰到的大流量问题,除了做流量分流处理,可能还要做用户黑白名单、信誉分析,进而根据用户ip信誉权重做相应的流量拦截、限制流量。
Nginx自身有的请求限制模块ngx_http_limit_req_module、流量限制模块ngx_stream_limit_conn_module基于令牌桶算法,可以方便的控制令牌速率,自定义调节限流,实现基本的限流控制。

对于提供下载的网站,肯定是要进行流量控制的,例如软件下载站、视频服务等。
它也可以减少一些爬虫程序或者DDOS的攻击。

对这两个模块的介绍的文章也不少,这里转载一篇hopestar的文章: nginx限制IP连接数的范例参考, 因为他介绍的很简洁。

下面文章的limit_zone指令已经被弃用,请用limit_conn_zone替换

阅读全文

编程语言的隐藏特性

StackOverflow有很多有趣的问答, 其中有一些问答汇集了很多人的智慧。 其中Hidden features of系列揭示了一些语言的隐藏特性,非常的有趣, 比如Java中:

1
2
3
4
5
6
Set<String> fruits = new HashSet<String>() { {
add("苹果");
add("香蕉");
add("梨");
add("芒果");
} };

尽管这些问答很早(自08年开始)就开始收集整理了,但是很多的答案都出人意料,并且你在教科书中是不会看到这些技巧的。

阅读全文

Gitbook简明教程

Gitbook是一个命令行工具(node.js库), 使用Github/Git创建漂亮的图书。 你可以看一些用它编写的图书的例子: 学习Javascript. 你也可以很容易的通过gitbook.io网站发布在线图书。 editor 是一个图形化的编辑工具, 提供Windows, Mac 和Linux的版本. 关注Twitter帐号 @GitBookIO. 这篇文章只是一个起步教程, 完整的文档可以在help.gitbook.io网站找到.

阅读全文

ApacheBench 测试结果的解释

Apache Beach (ab)是Apache自带的一个性能测试工具,专门用来测试网站的性能, 不仅限于Apache web服务器。
它可以将每个测试数据写入的一个文件中。 格式如下:

1
2
3
4
5
6
7
8
9
starttime seconds ctime dtime ttime wait
Wed Sep 17 05:13:32 2014 1410945212 0 2 3 2
Wed Sep 17 05:13:32 2014 1410945212 0 3 3 2
Wed Sep 17 05:13:33 2014 1410945213 0 3 3 3
Wed Sep 17 05:13:32 2014 1410945212 0 3 3 3
Wed Sep 17 05:13:32 2014 1410945212 0 3 3 3
Wed Sep 17 05:13:32 2014 1410945212 0 3 3 3
Wed Sep 17 05:13:32 2014 1410945212 0 3 3 3
Wed Sep 17 05:13:33 2014 1410945213 1 2 3 2

可以使用其它作图工具如gnuplot生成图形。
但是首先,你需要了解每一列的数据代表的意思。

阅读全文

如何移除Maven pom.xml文件中没用的属性

在使用Maven管理项目时, 经常会增加一些属性在pom.xml文件中。 抽取这些属性的好处之一就是方便集中管理,可以容易升级依赖的版本。 有些依赖因为代码的重构而丢弃了,但是它使用的属性可能会遗漏在properties中。 如果在几十条的属性中找到不用的属性, 这是一个问题。
目前没有maven插件可以做这个How to find unused properties in a pom. 不过上面的链接提供了一个脚本如何查找到未用的属性, 然后手工删除。

阅读全文

npm使用镜像网站

基于众所周知的原因,在国内使用npm下载资源的时候非常缓慢,甚至失败。使用一个靠谱的国内代理镜像是较好地解决方案。

  1. 命令行临时指定
    可以临时指定npm镜像
1
npm --registry https://registry.npm.taobao.org info underscore
  1. 通过config配置
1
npm config set registry https://registry.npm.taobao.org
  1. 编辑配置文件~/.npmrc
1
registry = https://registry.npm.taobao.org

阅读全文

MathJax 快速参考

MathJax是一个JavaScript引擎,用来显示网络上的数学公式。它支持大部分的主流的浏览器,对大部分用户而言它不需要安装,既没有插件需要下载也没有软件需要安装。MathJax使用网络字体(大部分浏览器都支持)去产生高质量的排版,使其在所有分辨率都可缩放和显示,这远比使用包含公式的图片要有效得多。使用MathJax显示数学公式是基于文本的,而非图片。它可以被搜索引擎使用,这意味着方程式和页面上的文字一样是可以被搜索的。 MathJax允许页面作者使用TeX、LaTeX符号和 MathML 或者 AsciiMath 去书写公式。 MathJax甚至可以将Tex格式转化为MathML格式,使其可以被原生支持MathML格式的浏览器更多的渲染。转化为MathML格式后你可以复制粘贴它们到其他程序中。

MathJax是模块化的,所以它仅仅在需要时才加载它的组件,同时也可以被扩展以实现更多功能。 MathJax同时也是高度可配置的,允许作者作出更适宜网站自身的自定义。 如果你需要,MathJax的API甚至可以让你在你的网页上动态的创建公式。

本网站上的数学公式都用LaTex格式写的。

喜欢中文的朋友可以参考MathJax 中文文档
\(E=MC^2\)

MathJax有三种安装方式:最简单的方法就是使用分布式网络服务中的MathJax的副本,它位于 cdn.mathjax.org ,但是你也可以下载并安装一个MathJax的副本到你的服务器,或者使用在你本地硬盘的副本(这样是不需要使用网络)。 官方文档里有详细的描述。

你可以配置MathJax,以便支持各种公式格式和输出。你还可以配置内联数学公式的时候采用的标记符号。如:

1
2
3
4
5
6
7
8
9
10
11
12
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX", "output/HTML-CSS"],
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true
},
"HTML-CSS": { availableFonts: ["TeX"] }
});
</script>

stackexchange网站上有一个很好的帖子, 收集了大家认为比较常用的公式写法。

阅读全文

使用Apache Bench 和 Gnuplot产生性能测试图

Apache Beach (ab)是Apache自带的一个性能测试工具,专门用来测试网站的性能, 不仅限于Apache web服务器。

它可以同时模拟多个并发请求,测试Web服务器的最大承载压力,同时也可以根据Apache Bench提供的测试结果对服务器性能参数进行调整。它可以记录测试数据,其它工具比如Gnuplot可以利用测试数据进行分析。它也可以提供一个summary,可以直观显示当前测试的web服务器的性能。

阅读全文