Appium
Appium是一个专注于跨平台UI自动化的工具,支持使用多语言编写控制端。
组成block-beta
columns 3
space
block:core
columns 2
c["Appium core"]:2
drivers
plugins
end
space
block:client
columns 2
client1["clients"]:2
Node.js
Java
Python
Ruby
C#
end
space
block:platform
columns 2
p["platform"]:2
WebDriver:2
browser
mobile
desktop
end
client -- "WebDriver" --> core
core -- "WebDriver" --> platform
classDef head fill:#696,stroke:#333;
classDef webd ...
我被锁住了
啦啦啦,啦啦啦,我是个卖锁的小行家~
呀!一不小心,我的锁掉河里了o(╥﹏╥)o
这时候,从河里浮上来一位河神,他捞起一把悲观锁,问我:“这是你掉的锁吗?”
我看了一眼,说:“不是。”
河神再次从河里捞起一把非公平锁,问我:“这是你的锁吗?”
我摇摇头说:“不是。”
河神又一次从河里捞起一把排它锁,问我:“这是你的锁吗?”
我看了一眼锁,然后转头对河神说:“你之前也是程序员吗?”
为什么要有锁当数据/资源只有一份,而为了提高性能,有多个线程或者client同时操作该数据/资源的时候,会出现结果不正确或者不一致的情况。比如,小明有500块钱,同时给小张和小李各转300块时,可能会出现下图中的情况:
sequenceDiagram
participant 小明
Note left of 小明: 余额500元
participant 小张
小明->>小张: 转账300元
Note right of 小张: 余额+300元
小明->>小李: 转账300元
Note right of 小李: 余额 ...
