别的没有,刚好就COMPARE_OP
,BINARY_ADD
和BINARY_SUBTRACT
这三个 inline 了 int 的,对于现在这个情形应该一样才对啊。
Python 没用 threading 是会慢一点,但是 Ruby 的速度快了一倍啊,不是换个 threading 就能达到的吧。
case BINARY_ADD:
w = POP();
v = TOP();
if (PyInt_CheckExact(v) && PyInt_CheckExact(w)) {
/* INLINE: int + int */
register long a, b, i;
a = PyInt_AS_LONG(v);
b = PyInt_AS_LONG(w);
/* cast to avoid undefined behaviour
on overflow */
i = (long)((unsigned long)a + b);
if ((i^a) < 0 && (i^b) < 0)
goto slow_add;
x = PyInt_FromLong(i);
}
else if (PyString_CheckExact(v) &&
PyString_CheckExact(w)) {
x = string_concatenate(v, w, f, next_instr);
/* string_concatenate consumed the ref to v */
goto skip_decref_vx;
}
else {
slow_add:
x = PyNumber_Add(v, w);
}
Py_DECREF(v);
skip_decref_vx:
Py_DECREF(w);
SET_TOP(x);
if (x != NULL) continue;
break;
$ ruby fib.rb
user system total real
14930352
2.240000 0.000000 2.240000 ( 2.240812)
$ python2 fib.py
14930352
4.98553395271
$ python3 fib.py
14930352
7.37453122099987
$ pypy fib.py
14930352
1.59528398514
体积好大
#3 楼 @hooopo Struts 之前都有好几波远程执行命令了,就和 Rails 3 的时候好几波 SQL 注入一样...估计这地方有设计缺陷,再挖掘一下可能还可以来个一两波
Java 其实是动态语言,Java 的运行期和动态语言真没啥差别,但是编译器却要假装成静态语言的样子。(刚才没想到还有 gcj 这种实现)
Struts 不安全不代表 Rails 就安全
看 struts 的 version notes
http://struts.apache.org/release/2.3.x/docs/version-notes-23141.html
OGNL eval expressions has been disabled by default.
http://struts.apache.org/development/2.x/docs/version-notes-23142.html
OGNL evaluation for included URL parameters has been dropped
http://struts.apache.org/development/2.x/docs/version-notes-23143.html
Whitelisting of actions' names was introduced and double evaluation of OGNL expression was removed.
果然都是出在 OGNL 里的。OGNL 难道还不是动态语言?
http://commons.apache.org/proper/commons-ognl/index.html
这个地方之前就被爆出好几次远程执行漏洞的,比如
http://blog.o0o.nu/2012/01/cve-2011-3923-yet-another-struts2.html
@hooopo 可以继续深入挖掘一下,Struts 2 就只能淘汰掉 OGNL 了
不是很早之前就有的么
效果到底是什么?
我还以为是客户端 ..
Python 算不算坑爹
cat xxx.txt | iconv -f gbk -t utf8
烧 CPU 啊啊啊啊啊啊啊啊
又是一个不认识vanilla
的
#42 楼 @blacktulip 没有就没有吧。本来就是开玩笑的。而且我自己已经把 SICP 4.4 的坑填了。
只是说代码托管的话,这个坑早就填了啊。我在 2010 年就能支持 git 和 hg 了,可能还有 bzr ... 当时最大的问题是想加进去的功能太多了,还真的都加进去了,结果代码就没法维护了。基础太差就是这么悲剧。
#40 楼 @blacktulip 看大家都积极推出 git 平台,我就不打算填坑了,呵呵
太棒了又一个 git ...