#3 楼 @small_fish__ 更准确的是一个网关的感觉。。。。就是我们有好多台服务器,其中只有一台服务器在公网暴露。要先 ssh 到这台服务器,再 ssh 到其他的服务器。
为什么不升级?
@hick 啊,学习了。不过清空配置后也是有问题的,你的背景是黑色的吧?所以看不到
@serco 不是这样的,+= 1 如果不是原子操作,它会是下面的两步 `1. 从内存取出变量
会产生 3 条指令。 如果是原子操作仅会有一步
执行自增的命令(貌似以前学过,这是一个加法器提供的机器指令,专门做自增一。只会产生一条指令)
但我想了想,因为 += 还支持非 1,也就是 a += 2 也是可以的,而机器指令中是没有自增二的操作的,所以推断+=很有可能是非原子操作。
所以我给他加了个锁
@loong0 弱弱的问一句,mirb 是什么
@africwildman 恩。是我写错了。。。可是 += 是不是原子操作呢??
@loong0 Thx。。。。+=还是 ruby 原生的。那+= 是不是原子操作哩
另外,为什么 1 ++ 1
会等于 2 呢? ++
和 +
有什么区别呢?求大神
按天分表。然后做一些 helper 方法。比如根据天来确定表明什么的。
w1.singleton_class.ancestors
=> [#<Class:#<SimpleWriter:0x007fab9120b900>>, TimeStampingWriter, SimpleWriter, Object, Kernel, BasicObject]
我的理解是这样的,对象的方法是在他的 singleton 类中的,当我们w1 = SimpleWriter.new
时实际是产生了[#<Class:#<SimpleWriter:0x007fab9120b900>>, SimpleWriter, Object, Kernel, BasicObject]
这样一个祖先链,然后 extend 总是在 singleton 类的最近位置插入,所以产生了[#<Class:#<SimpleWriter:0x007fab9120b900>>, TimeStampingWriter, SimpleWriter, Object, Kernel, BasicObject]
的祖先链。根据 ruby 的方法查找机制,找的方法自然就是 TimeStampingWriter 中的方法
同样的你可以试试各种 include extend 方法,他们其实都是在和 singleton 做游戏,一个原则,extend 是往 self 的类的 singleton 类的最近的位置插入,include 是往实例的 singleton 最近位置插入。
不知道我讲的对不对,我们可以交流交流