在ArrayBlockingQueue中,为什么要将最终成员字段复制到本地最终variables?

在ArrayBlockingQueue ,所有需要锁的方法在调用lock()之前将其复制到本地finalvariables中。 public boolean offer(E e) { if (e == null) throw new NullPointerException(); final ReentrantLock lock = this.lock; lock.lock(); try { if (count == items.length) return false; else { insert(e); return true; } } finally { lock.unlock(); } } 当字段this.lock是final时候,是否有任何理由将this.lock复制到局部variableslock final ? 此外,它还在使用E[]之前使用本地副本: private E extract() { final E[] items = this.items; E x […]

我如何从C#开始一个进程?

如何启动一个进程,比如当用户点击一个button时启动一个URL?

产生JSF托pipebean中的线程以使用计时器进行计划任务

我想知道是否可以在应用程序范围的bean中使用Timer 。 例如,可以说我想创build一个计时器任务,每天向每个注册成员发送一堆电子邮件。 我试图尽可能多地使用JSF,我想知道这是否可以接受(我知道,这听起来有点奇怪)。 到目前为止,我已经在ServletContextListener使用了上述ServletContextListener 。 (我不想使用任何应用程序服务器或cron作业,我想保留上面的东西在我的web应用程序。) 有没有一个聪明的JSF这样做的方式还是应该坚持旧的模式?

函数指针的解引用是如何发生的?

为什么以及如何取消引用函数指针只是“什么都不做”? 这就是我所说的: #include<stdio.h> void hello() { printf("hello"); } int main(void) { (*****hello)(); } 从这里发表评论: 函数指针解引用就好了,但是得到的函数指示符会立即转换回函数指针 从这里的答案: 解除引用(以您认为的方式)函数的指针意味着:访问一个CODE内存,因为它将是一个DATA内存。 函数指针不能被这样解除引用。 相反,它被称为。 我会用“呼叫”并排使用名称“取消引用”。 没关系。 无论如何:C被devise为使得函数名称标识符以及variables保持函数的指针与代码存储器的地址相同。 而且它允许通过在标识符或variables上使用call()语法跳转到该内存。 函数指针的解引用究竟如何工作?

javascript document.getElementsByClassName与IE的兼容性

检索具有某个类的元素数组的最佳方法是什么? 我会使用document.getElementsByClassName但IE不支持它。 所以我尝试了Jonathan Snook的解决scheme : function getElementsByClassName(node, classname) { var a = []; var re = new RegExp('(^| )'+classname+'( |$)'); var els = node.getElementsByTagName("*"); for(var i=0,j=els.length; i<j; i++) if(re.test(els[i].className))a.push(els[i]); return a; } var tabs = document.getElementsByClassName(document.body,'tab'); …但IE仍然说: 对象不支持这个属性或方法 任何想法,更好的方法,错误修复? 我不希望使用任何涉及jQuery或其他“笨重的JavaScript”的解决scheme。 更新: 我得到它的工作! 正如@joe所提到的,这个函数不是一个document的方法。 所以工作代码看起来像这样: function getElementsByClassName(node, classname) { var a = []; var re = […]

从MySQL触发器调用PHP脚本

有什么办法当一个logging被插入到MySQL数据库表时如何调用一个PHP页面/函数? 我们无法控制logging插入过程。 有没有可以调用PHP脚本的触发机制?

实现C ++ 14 make_integer_sequence

我试图实现C ++ 14别名模板make_integer_sequence ,这简化了类模板integer_sequence的创build。 template< class T, T… I> struct integer_sequence { typedef T value_type; static constexpr size_t size() noexcept { return sizeof…(I) ; } }; template< class T, T N> using make_integer_sequence = integer_sequence< T, 0,1,2, … ,N-1 >; // only for illustration. 为了实现make_integer_sequence我们需要一个辅助结构make_helper 。 template< class T , class N > using make_integer_sequence […]

为什么Integer类的caching值在-128到127的范围内?

关于我以前的问题, 为什么==与Integer.valueOf(string)比较给127和128不同的结果? ,我们知道Integer class有一个caching,它存储-128到127之间的值。 只是想知道,为什么在-128和127之间 ? Integer.valueOf()文档指出,它“ caching频繁请求的值 ” 。 但是,真正需要-128到127之间的值吗? 我认为经常要求的价值观是非常主观的。 这有什么可能的原因吗? 从文档还指出: “ ..并可能caching在此范围之外的其他值。 这是如何实现的?

string.charAt(x)或string?

是否有任何理由我应该使用string.charAt(x)而不是括号表示string[x] ?

我怎样才能做一些像Android中的FlowLayout?

我怎样才能做一些像Android中的FlowLayout ?