XiXiLocked 最近的时间轴更新
XiXiLocked

XiXiLocked

V2EX 第 77887 号会员,加入于 2014-10-20 23:34:34 +08:00
XiXiLocked 最近回复了
2021-09-23 13:12:25 +08:00
回复了 zeronofreya 创建的主题 数学 平面内四个点,怎样保证能构建四角面?
比叉乘,(p1-p4)x(p2-p4) ,(p3-p4)x(p2-p4) ,轮换 123 。3 次里会出现一次一正一负,用那次的下标绕 1234 就不会重叠。
2020-08-19 15:29:39 +08:00
回复了 conanskyforce 创建的主题 程序员 不看不知道,一看吓一跳!密码泄露了一大半
@mmqmyy 提供一下我的思路, 我也是用的密码和网站标识然后脑内规则生成,不过用的不是直接 concat 的方式.

举个例子比如密码 123456 在京东的,我就不是 123456@jingdong ,而是 1j2i3n4g5d6o,这样混插在一起的,要是原密码不是全数字的,插了几个字母,基本很难看出来规律,除非多处密码泄漏,人工主动去看才能看出来.
混插的变种也很多 ji12ng34do56ng, j1in2gd345ong
ret 是一个回调函数 /continuation, 意义是用当前参数算完 fact ,拿返回值接下来做什么
可以人工运行几遍,或者证明"递归 0 次 ret 是上面的意义,递归 1 次 ret 是上面的意义,。。。递归 n 次...",记得用数学归纳法 注意每次递归 ret 都是一个新函数和前面的不一样。
举个例子
fact(2, console.log)//算出 fact(2),打印出来 #2
fact(1, function(n_2){ console.log(n_2*2);}) //算出 fact(1),送给匿名函数 #1
fact(0, function(n_1){ function(n_2){ console.log(n_2*2);}(n_1*1)}) //算出 fact(0),送给另一个匿名函数 #0
function(n_1){ function(n_2){ console.log(n_2*2);}(n_1*1)}(1)//对应于#0 的调用 1=fact(0)
function(n_2){ console.log(n_2*2);}(1*1)//对应于#1 的调用 1*1=fact(1)
console.log(2) )//对应于#2 的调用 2=fact(2)
2015-07-12 13:10:55 +08:00
回复了 nobodybutme 创建的主题 问与答 i=3 printf("%d %d %d %d\n", i++, ++i, i++, ++i); 求结果解释
这和压栈顺序在概念上是无关的(实现上相关那是另一回事
有关的是参数的计算顺序,
比如printf("%d %d %d\n", ++z, ++z, ++z); 补上计算过程中的临时变量,那就相当于7条无序语句
z+=1;
int temp1 = z;
z+=1;
int temp2 = z;
z+=1;
int temp3 = z;
printf("%d %d %d\n", temp1, temp2, temp3);
除了print必须最后执行,初始化temp必须在z+=1之后,并没有其他约束。所以temp1,2,3的顺序可以换,temp的初始化的时机也可以后延。要出现666只要把3条temp尽量往后挪就行。

再说这样写并不好,虽然我觉得这不是undefined behavior,而是implementation specific behavior,因为我记得语言规范上故意不限定求值顺序是为了方便编译器优化,但不管是哪种,代码已经不受自己控制了。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3554 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 04:59 · PVG 12:59 · LAX 21:59 · JFK 00:59
Developed with CodeLauncher
♥ Do have faith in what you're doing.