赌钱游戏

B站上刷到一个视频说,两个人丢硬币赌钱,一个有一百万本钱,一个只有一万,赌一把一百块,最后结果一定是一百万那个有一百零一万,一万那个一分钱也没有。

既在意料之外又在情理之中,还是实测一下,看看一万块在亏光前能玩几把吧:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

var a=10000,b=100,rounds=0;;
function test(){
rounds++;
if(Math.random()<0.5){
a++;
b--;
}else{
a--;
b++;
}
console.log("rounds=",rounds,"a=",a,"b=",b)
if(a>0 && b>0)setImmediate(test)
}
test();

结果在一万多把到30几万把之间。资产差两个数量级的“公平游戏”,钱少的一方亏光几乎是必然的。

跟AI结对编程

期待了几天跟AI结对编程的体验,没想到phind这么快就提供了这个功能。

自动分解问题,搜索答案,还是挺智能的。因为是跟人类学的编程,养成了人类喜欢偷懒的习惯,居然问我要用哪个第三方的转换服务,需要明确告诉它不要偷懒要自己写一个转换服务,他才能乖乖的写出来。

最后有一个多余的script标签没有去掉,是我的锅,不是AI的问题。

里德所罗门编码

云上做开发我们常常说要面向失败做设计,比如做Serverless应用的时候就常常需要在可能存在的丢包、并发写冲突、异常截断等情形下进行自我修复。

里德所罗门编码是一个典型的面试失败设计的编码,在这个时候就可以很方便的提供数据的冗余存储和自我修复能力

Read More

让live-templet真的live起来

众所周知Jetbrains的代码片段live-templet其实并不怎么live,编写完了以后就一直放在那儿,直到下次更新它。​

虽然官方说可以用“Add Read-Only source”功能让live-templet与远程的只读源同步,实际上只读源的功能一直都不稳定,官方论坛吐槽也很多,然后file-templet和live-templet的远程同步功能似乎也并不可用。

Read More

真 · serverless的SQL数据库

数据库服务天生就是带有非常强的server意味,和serverless服务站在两端,格格不入。市面上大多数所谓的serverless数据库也几乎都只是一个数据库server按照serverless的方式计费而已。那有没有可能实现真正的无服务器数据库,既提供标准的SQL服务,又实际上不启动任何服务器,也不带来附加的服务器成本呢?答案是有!

Read More

JS实现弱缓存

一个对象,如果要缓存它,就要让它占着内存不能释放,如果要释放它,就不能持有它的访问句柄。那有没有办法又让它尽可能的被缓存,在内存紧张的时候又允许被GC回收呢?答案是弱缓存。

Read More

云开发数据库里规避写覆盖

云开发数据库不提供锁接口,实际使用的时候又经常要被多个实例并发操作,那要想要规避写覆盖往往只能通过乐观锁,但是这又会带来附加的query操作。那能不能不用任何锁就规避写覆盖呢?其实也不是不行。

Read More