我用这个代码:
<div name="1234">
<img src="pic.gif" height="70" width="100" onMouseOver="clear('1234')">
</div>
Run Code Online (Sandbox Code Playgroud)
和:
function clear(element_name){
document.getElementsByName(element_name)[0].innerHTML="";
}
Run Code Online (Sandbox Code Playgroud)
它在Firefox和Opera中有效,但在IE 6.0或IE 8.0中不起作用,甚至可能在新的IE中也不行.
该怎么办?
当一个对象需要同步时,IDE会抱怨它是否设置为非final(因为它的引用不是持久的):
private static Object myTable;
....
synchronized(myTable){ //IDE complains!
//access myTable here...
}
Run Code Online (Sandbox Code Playgroud)
众所周知,如果持有锁的线程改变了非最终对象的引用,IDE会抱怨阻止另一个线程进入受保护的块.
但是同步对象的引用是否也可以由另一个线程B更改,而线程A保持同一对象的锁定?
是否可以使用volatile变量来实现一致的只写同步?
这是代码:
public class Controller {
Container cont = new Container();
...
public Object get(){
if(!cont.isLocked()){
return cont.getObject(); //many threads can read at the same time
}
else synchronized(cont){
return cont.getObject(); //threads wait until write is finished
}
}
public void set(Object o){
synchronized(cont){
cont.lock();
cont.setObject(o);
cont.unlock();
}
}
}
public class Container {
private volatile boolean lock = false;
private Object data;
public Container(){
}
public void lock() {
lock = true;
}
public void unlock() {
lock = …Run Code Online (Sandbox Code Playgroud) 难道一个while(true)共同的Java循环与wait(1)利用更多或更少的资源比用封闭循环wait()和notify()?
CPU内核是否允许一些特殊(硬件)实现wait(1)?如果是,使用这种非阻塞循环时是否有任何限制?
一个例子:
while(true){
wait(1);
//do the job here...
}
Run Code Online (Sandbox Code Playgroud)
(只是一个注意事项:如果没有wait(1)一个核心将在while(true)循环中100%激进......)
我的setTimeout函数有问题.这是代码:
1 var urlArray = ["pic1.gif"; "pic2.gif"]
2 function changeBackground(elementId, backgroundImage){
3 document.getElementById(elementId).style.background="url("+backgroundImage+")";
4 }
5 function mouseover_1(elementId){
6 changeBackground(elementId,urlArray[0]);
7 setTimeout("changeBackground(elementId,urlArray[1])",300);
8 }
Run Code Online (Sandbox Code Playgroud)
并在身体:
<area shape="rect" coords="0,0,95,91" onMouseOver="mouseover_1('navigator_1')">
Run Code Online (Sandbox Code Playgroud)
现在,Javascript代码中的第6行就像一个魅力(图片更改!),但第7行不起作用(没有图片更改).这是Firefox中调试的错误:
elementId is not defined line: 7
Run Code Online (Sandbox Code Playgroud)
但是由于第6行有效,我真的不知道问题是什么.你有什么建议吗?
我们都知道,在编程语言中,返回值是最基本的东西。但是当涉及到数据库时,我们只是不期望任何返回值。这是一个错误的概念,因为它将我们的数据库简化为黑匣子。有时,了解哪些行受到更新的影响可能是件好事。
那么我们如何构建在插入或更新后返回值的数据库呢?(不在选择之后,因为这本身总是返回一个值)
您能给我一些例如 MySQL 的示例代码,例如包含更新行的主键的列表吗?
我最近发现使用synchronized不会阻止任何死锁.
例如,在此代码中:
ArrayList <Job> task;
...
public void do(Job job){
synchronized(tasks){
tasks.add(job);
}
synchronized(this){
notify();
}
}
public void run(){
while(true){
for (int = 0;i<tasks.size();i++){
synchronized(tasks){
Job job = tasks.get(i);
}
//do some job here...
}
synchronized(this){
wait(); //lock will be lost...
notifier = false; //lock will be acquired again after notify()
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,问题是什么?好吧,如果正在运行的线程没有等待,他将不会看到任何通知(即notify()调用),因此他可能会遇到死锁而无法处理他收到的任务!(或者他可能太晚处理它们......)
因此我实现了这段代码:
private volatile boolean notifier = false;
ArrayList <Job> task;
...
public void do(Job job){
synchronized(tasks){
tasks.add(job);
}
synchronized(this){
notifier = true;
notify();
} …Run Code Online (Sandbox Code Playgroud) 在Java中编写JSON解析器时遇到了"整容"问题:
在JSON规范中,明确指出Javascript控制字符与例如C和Java中的相同,如\n或\ t.我遇到的问题是,当JSON字符串中有控制代码时(所以在引号中:"property":"value"),然后显示的JSON代码搞砸了,因为控制字符正在改变打印,例如\n创建一个新行或\ t创建一个选项卡.
一个例子:
String s = "{\n\t\"property1\": \"The quick brown fox\njumps over the lazy dog\",\n\t\"property2\":\"value2\"\n}"
印刷为:
{
"property1": "The quick brown fox
jumps over the lazy dog",
"property2": "value2"
}
解决方案如下所示:
String s = "{\n\t\"property1\": \"The quick brown fox\\njumps over the lazy dog\",\n\t\"property2\": \"value2\"\n}"
正确打印为:
{
"property1": "The quick brown fox\njumps over the lazy dog",
"property2": "value2"
}
所以我的问题是:将字符串外的控制代码与字符串中的控制代码区别对待是否正确?而且是正确的添加范围内JSON弦乐器一个反斜杠\前的任何控制字符,创建的字符串,如"\n"或"\ t"的,不会对JSON字符串的外观有什么影响?
java ×5
synchronized ×3
javascript ×2
locking ×2
notify ×2
wait ×2
black-box ×1
escaping ×1
final ×1
json ×1
loops ×1
mysql ×1
nonblocking ×1
parsing ×1
return-value ×1
settimeout ×1
sql ×1
string ×1
variables ×1
volatile ×1