小编TT_*_*TT_的帖子

运行到Eclipse中的下一个断点(java)

如何运行到Eclipse中的下一个断点?我在一个断点处停了下来,之后我需要运行一段很长的代码直到下一个断点被击中.我搜索了SO和Eclipse但没有找到答案.只是用Eclipse调试器做噩梦(仍然不能忘记我心爱的Sun Workshop,我不能称赞它足够高)...

java eclipse debugging breakpoints

23
推荐指数
3
解决办法
3万
查看次数

从子类的构造函数体调用基类的构造函数

我觉得这是不可能的,例如: 在C++中的其他一些指令之后调用基类的构造函数
但是下面的程序运行并生成两行"Constructor Person":

#include <iostream>

class Person
{
public:
    Person() 
    { 
        std::cout << "Constructor Person" << std::endl; }
    };

class Child : public Person
{
public:
    Child() 
    { 
        c = 1; 
        Person(); 
    }
    int c;
};

int main() 
{
    Child child;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

第一个是默认构造函数的隐式调用,这是明确的.第二个怎么样 - 这是否意味着标题中描述的行为是合法的?我使用Visual C++ 2010.

c++ constructor base-class

9
推荐指数
3
解决办法
2万
查看次数

为什么在Java中实现对受保护成员的访问?

关于在Java中访问受保护成员的问题已经被提出并且已经回答了很多次,例如: Java:跨包的受保护访问

但我无法理解为什么以这种方式实现它,请参阅"Java Programming Language"(第4版)中的解释:

"限制背后的原因是:每个子类继承超类的契约并以某种方式扩展该契约.假设一个子类作为其扩展契约的一部分,对超类的受保护成员的值施加约束.一个不同的子类可以访问第一个子类的对象的受保护成员,然后它可以以一种破坏第一个子类的合同的方式操纵它们,这不应该是允许的."

好的,这很清楚,但考虑一下这个继承结构(从一些代码中提取):

package package1;

    public class A {
        protected int x;
    }

package package2;

public class B extends A {
    public static void main(String[] args)
        C subclass = new C();
        subclass.x = 7;  // here any constraints can be broken - ??
    }
}

class C extends B {
    // class which places constraints on the value of protected member x
    ...
}
Run Code Online (Sandbox Code Playgroud)

这里的subclass.x = 7是一个有效的陈述,仍然可以打破C的合约.我错过了什么?

编辑(补充):也许我不应该在这种情况下应用引用的逻辑?如果我们只处理一个包,则根本不存在任何限制.因此,直接继承链可能会以简化的方式处理,这意味着超类必须知道它在做什么......

java implementation protected subclass

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

优先级队列的二进制堆的优点?

看起来我错过了一些非常简单的事情:优先级队列的二进制堆的优点是比较快速排序的值数组?在这两种情况下,我们将值保存在数组中,insert是O(logN),delete-max在两种情况下都是O(1).在两种情况下,给定数组元素的初始构造是O(NlogN),尽管链接http://en.wikipedia.org/wiki/Heap_%28data_structure%29表明更快的Floyd算法用于二进制堆构造.但是在队列的情况下,元素可能是逐个接收的,因此这种优势消失了.此外,合并似乎对二进制堆表现更好.
那么除了合并之外,更喜欢BH的原因是什么?也许我的假设是错误的,BP仅用于研究目的.我检查了C++文档,他们提到了"堆"但当然没有必要意味着二进制堆.
有点类似的问题:什么时候使用堆作为优先级队列是个坏主意?
如果有的话请解释downvotes - 我真的想了解这一点.

heap priority-queue quicksort data-structures

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

为什么一般不推荐客户端锁定?

请解释以下有关Hortsmann,Cornell(9版,第865页)中"Core Java"的同步块的说明:

Vector类的get和set方法是同步的,但这对我们没有帮助.
...
但是,我们可以劫持锁:

public void transfer(Vector<Double> accounts, int from, int to, int amount)
{
    synchronized (accounts)
    {
        accounts.set(from, accounts.get(from) - amount);
        accounts.set(to, accounts.get(to) + amount);
    }
    //...
}
Run Code Online (Sandbox Code Playgroud)

这种方法有效,但它完全取决于Vector类对其所有mutator方法使用内部锁的事实.

为什么同步依赖于上述事实?如果线程A拥有对帐户的锁定,则没有其他线程可以获取相同的锁定.它不依赖于Vector用于其mutator方法的锁.

我能够想到的唯一可能的解释是以下一个.让线程A拥有对账户的锁定.如果Vector对其set/get使用另一个锁,那么线程A必须获得一个额外的锁以继续进行set/get,这是不可能的(由于某个原因,一个线程可以同时保存2个不同的锁吗?).

这个解释对我来说看起来不合理,但我没有别的.我错过了什么?

java multithreading locking synchronized

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

如何在Qt中禁用属于布局的小部件?

我想在一些布局中使窗口小部件无法访问,因此用户将无法更改任何布局的窗口小部件的状态(我希望所有内容都变灰).我创建了一个SIGNAL/SLOT,该方法被称为:

void MyWidget::slot( bool bChecked )
{
  myLayout->setEnabled(bChecked);
  std::cout << "OnAllToggled: " << bChecked <<
    ", isEnabled: " << myLayout->isEnabled() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,除了布局仍然可访问.显然我不明白setEnabled方法的含义.问题:什么setEnabled意思是什么,如何使布局无法访问?谢谢!

layout qt

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

如何使QMessageBox为非模态的?

我正在尝试创建非模式QMessageBox:

QMessageBox msgBox( pParentWindow );
msgBox.setWindowModality(Qt::WindowModal);
msgBox.setIcon( QMessageBox::Warning );
msgBox.setText( headerMsg.c_str() );
QAbstractButton *btnCancel =  msgBox.addButton( "Cancel", QMessageBox::RejectRole );
msgBox.exec();
Run Code Online (Sandbox Code Playgroud)

(这是一个简化的示例)。问题是,这仍然是模态的:我可以移动另一个(非父级)对话框,但是无法关闭它。我也尝试过:

msgBox.setModal(false);
Run Code Online (Sandbox Code Playgroud)

但是msgBox仍然阻止我关闭另一个对话框。我想念什么?也许问题出在exec()?

qt modal-dialog messagebox

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

Eclipse 中的 Unicode 字符

我正在尝试从我的 Java 程序中打印出漂亮的阴阳:

System.out.println("\u262f");
Run Code Online (Sandbox Code Playgroud)

在 Netbeans 中一切正常(默认设置):阴阳和其他英文内容都正确打印。我应该怎么做才能让 Eclipse 做同样的事情?使用默认的 Eclipse 设置,我只能得到“?”。

我试图更改运行对话框中的控制台编码,就像在从 mysql 到 java提取 unicode 文本时所建议的那样 ,但事情变得更糟(更准确地说,这是输出:???????????????????? ???????????????????????? - 哪个是阴阳??)。

有什么建议?

java eclipse encoding

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