Category Archives: 计算机技术

npm网站的架构:如何应对扩大了十倍的访问量

npm服务的架构变迁:如何支撑

  • 129K packages
  • 239 GB package tarballs
  • 40 million pkg dls/day
  • 1500 req/sec, peak 3200

final

我来小结下:

  • 使用NOSQL Couchdb,且一写多读,P2P复制(DB内置支持)。
  • 文件用nginx+文件系统存放,DB中只记录信息
  • 很矫情的使用了Couchdb,这个是不支持cluster的,所以用了haproxy和pound两种负载均衡的反[......]

    继续阅读

透明代理、匿名代理、混淆代理、高匿代理有什么区别?

这4种代理,主要是在代理服务器端的配置不同,导致其向目标地址发送请求时,REMOTE_ADDR, HTTP_VIA,HTTP_X_FORWARDED_FOR三个变量不同。

1、透明代理(Transparent Proxy)

  • REMOTE_ADDR = Proxy IP
  • HTTP_VIA = Proxy IP
  • HTTP_X_FORWARDED_FOR = Your IP

透明代理虽然可以直接“隐藏”你的IP地址,但是还是可以从HTTP_X_FORWARDED_FOR来查[......]

继续阅读

flex & bison 如何用yylval传递字符串值

flex进行scanner,将数值存入yylval。

而bison读取yylval之中的值。

神奇的yylval是int类型,如何让它存储多种类型呢?

以string为例:

需要在.l和.y的头部第一句加入:
#define YYSTYPE char*
在.l赋值的时候,要特别注意,需要拷贝字符串。
yylval = strdup(yytext); return WORD;
在.y取用的时候,直接强转就可以了。
(char*)$1
关于更优雅的实现方式,当然[......]

继续阅读