愤&闷

  一年前,当我学好css后,ajax进入了我的视野,还没来得及学,ria又跑到的我的身边...

一年后,当我用vfw做出一个可以录像的程序后我看到一句话:vfw是一种趋于废弃的驱动模型,而wdm是它的替代者。于是我花费了两个礼拜功夫,终于用directshow做出了一个可以录像和播放视频的程序,而后我看到:wmf will be areplacement Of Directshow…

还好,我不会靠你们吃饭的。
结论:不要跟着那些大头们跑,因为那样的话你是跑不过他们的!

private boolean delete(int i) { //检查 checkInvariants(); final Object[] elements = this.elements; final int mask = elements.length - 1; final int h = head; final int t = tail; //待删除元素前面的元素个数 final int front = (i - h) & mask; //待删除元素后面的元素个数 final int back = (t - i) & mask; // Invariant: head <= i < tail mod circularity //确认 i 在head和tail之间 if (front >= ((t - h) & mask)) throw new ConcurrentModificationException(); // Optimize for least element motion //尽量最少操作数据 //前面数据比较少 if (front < back) { if (h <= i) { //这时 h 和 i 之间最近距离没有跨过位置0 System.arraycopy(elements, h, elements, h + 1, front); } else { // Wrap around System.arraycopy(elements, 0, elements, 1, i); elements[0] = elements[mask]; System.arraycopy(elements, h, elements, h + 1, mask - h); } elements[h] = null; head = (h + 1) & mask; return false; } else { if (i < t) { // Copy the null tail as well //这时 t 和 i 之间最近距离没有跨过位置0 System.arraycopy(elements, i + 1, elements, i, back); tail = t - 1; } else { // Wrap around System.arraycopy(elements, i + 1, elements, i, mask - i); elements[mask] = elements[0]; System.arraycopy(elements, 1, elements, 0, t); tail = (t - 1) & mask; } return true; } }请解释一下索引跨越数组头尾中这个索引在整个循环数组中代表什么?还有为什么检查个数合法性不合法抛出并发修改异常,只需要检查front的合法性就行,为什么不需要检查back的合法性?为什么移动前段元素时没有跨越头尾不需要更新头指针,而移动后半段元素时需要更新尾指针,而且为什么前者是更新头指针后者更新尾指针而不是正好相反,为什么移动前半段元素需要置为null,而后半段不需要?为什么只需要前后段元素迁移,而不是整体迁移,也就是前端元素迁移加上后段元素迁移?
04-01
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值