小编Mar*_*cus的帖子

在IE上,document.getElementsByName不起作用

我用这个代码:

<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中也不行.

该怎么办?

javascript internet-explorer getelementsbyname

8
推荐指数
1
解决办法
2万
查看次数

当一个锁持有一个非最终对象时,该对象的引用是否仍然可以被另一个线程更改?

当一个对象需要同步时,IDE会抱怨它是否设置为非final(因为它的引用不是持久的):

private static Object myTable;
....

synchronized(myTable){          //IDE complains!
     //access myTable here...
}
Run Code Online (Sandbox Code Playgroud)

众所周知,如果持有锁的线程改变了非最终对象的引用,IDE会抱怨阻止另一个线程进入受保护的块.

但是同步对象的引用是否也可以由另一个线程B更改,而线程A保持同一对象的锁定?

java multithreading final locking synchronized

2
推荐指数
1
解决办法
1605
查看次数

是否可以使用volatile变量来实现一致的只写同步?

是否可以使用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)

java synchronization locking volatile synchronized

2
推荐指数
1
解决办法
52
查看次数

是等待(1)在非阻塞时(true) - 循环比使用wait()和notify()更有效吗?

难道一个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%激进......)

java loops nonblocking notify wait

1
推荐指数
1
解决办法
2633
查看次数

函数setTimeout抛出错误

我的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行有效,我真的不知道问题是什么.你有什么建议吗?

javascript variables settimeout

0
推荐指数
1
解决办法
139
查看次数

SQL 返回值 - 怎么做?

我们都知道,在编程语言中,返回值是最基本的东西。但是当涉及到数据库时,我们只是不期望任何返回值。这是一个错误的概念,因为它将我们的数据库简化为黑匣子。有时,了解哪些行受到更新的影响可能是件好事。

那么我们如何构建在插入或更新后返回值的数据库呢?(不在选择之后,因为这本身总是返回一个值)

您能给我一些例如 MySQL 的示例代码,例如包含更新行的主键的列表吗?

mysql sql black-box return-value

0
推荐指数
1
解决办法
4551
查看次数

尽管是同步的,wait()和notify()是否仍然不可靠?

我最近发现使用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 multithreading synchronized notify wait

0
推荐指数
1
解决办法
334
查看次数

转义字符串中的JSON控制字符

在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 string parsing json escaping

0
推荐指数
1
解决办法
1万
查看次数