在这里搞乱,用循环缓冲区.这是一个明智的实施还是有更快/更可靠的方式来剥皮这只猫?
class CircularBuffer[T](size: Int)(implicit mf: Manifest[T]) {
private val arr = new scala.collection.mutable.ArrayBuffer[T]()
private var cursor = 0
val monitor = new ReentrantReadWriteLock()
def push(value: T) {
monitor.writeLock().lock()
try {
arr(cursor) = value
cursor += 1
cursor %= size
} finally {
monitor.writeLock().unlock()
}
}
def getAll: Array[T] = {
monitor.readLock().lock()
try {
val copy = new Array[T](size)
arr.copyToArray(copy)
copy
} finally {
monitor.readLock().unlock()
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建我的第一个zsh完成脚本,在本例中为命令netcfg.
Lame听起来可能听起来我已经陷入了第一道障碍,免责声明,我知道如何粗暴地做到这一点,但是我寻求"ZSH WAY"来做到这一点.
我需要在/ etc/networking中列出文件,但只列出文件,而不是目录组件,所以我做了以下操作.
echo $(ls /etc/network.d/*(.))
/etc/network.d/ethernet-dhcp /etc/network.d/wireless-wpa-config
Run Code Online (Sandbox Code Playgroud)
我想要的是:
ethernet-dhcp wireless-wpa-config
Run Code Online (Sandbox Code Playgroud)
所以我试着(原谅我的天真):
echo ${(s/*\/)$(ls /etc/network.d/*(.))}
/etc/network.d/ethernet-dhcp /etc/network.d/wireless-wpa-config
Run Code Online (Sandbox Code Playgroud)
似乎这不起作用,我敢肯定必须有一些聪明的方法来做到这一点,分成一个数组并得到最后一部分,但正如我所说,我完全是noob在这.
任何建议都感激不尽.