小编mar*_*nus的帖子

将double常量定义为十六进制?

我想将1.0以下最接近的数字作为浮点数.通过阅读维基百科上的文章IEEE-754我已经设法找出1.0二进制表示3FF0000000000000,所以最接近的双值实际上是0x3FEFFFFFFFFFFFFF.

我知道使用这个二进制数据初始化double的唯一方法是:

double a;
*((unsigned*)(&a) + 1) = 0x3FEFFFFF;
*((unsigned*)(&a) + 0) = 0xFFFFFFFF;
Run Code Online (Sandbox Code Playgroud)

使用起来相当麻烦.

有没有更好的方法来定义这个双号,如果可能的话,作为常量?

c++ floating-point floating-accuracy notation ieee-754

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

什么是你很久没找到的最愚蠢的错误?

我正在研究一个错过了项目的项目,由于某些原因,即使应该有例外也没有例外.在内心深处,我发现了这种错误处理:

try {
    m.invoke(parentObject, paramObj);
} catch (IllegalArgumentException e) {
    new CaseLibException(e);
} catch (IllegalAccessException e) {
    new CaseLibException(e);
} catch (InvocationTargetException e) {
    new CaseLibException(e);
}
Run Code Online (Sandbox Code Playgroud)

我的大脑认识到有几个例外被包裹在另一个中,所以这并不是那么糟糕.但我不得不偶然发现这段代码至少3次,看看有什么遗漏......

你找不到的最愚蠢的bug是什么?

language-agnostic debugging

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

OutOfMemoryError - 为什么等待的Thread不能被垃圾收集?

这个简单的示例代码演示了该问题.我创建了一个ArrayBlockingQueue和一个等待这个队列上的数据的线程take().循环结束后,理论上队列和线程都可以被垃圾收集,但实际上我很快就会得到一个OutOfMemoryError.是什么阻止了这个GC,以及如何解决这个问题?

/**
 * Produces out of memory exception because the thread cannot be garbage
 * collected.
 */
@Test
public void checkLeak() {
    int count = 0;
    while (true) {

        // just a simple demo, not useful code.
        final ArrayBlockingQueue<Integer> abq = new ArrayBlockingQueue<Integer>(2);
        final Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    abq.take();
                } catch (final InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        t.start();

        // perform a GC …
Run Code Online (Sandbox Code Playgroud)

java multithreading garbage-collection out-of-memory

5
推荐指数
2
解决办法
2001
查看次数

如何禁止subversion提交到svn:external to revisions?

我们将svn:externals用于库的特定修订版,例如

xyzlib -r12345 https://asdf.asdf.local/xyzlib/trunk/
Run Code Online (Sandbox Code Playgroud)

当您在工作副本中对这样的已检出外部进行修改时,即使外部链接指向特定修订而不是HEAD,也可以提交.

svn update提交后运行时,更改将在工作副本中消失,因为subversion会将所有内容还原为修订版12345.因此,您自己从未真正看到更改,但它们仍然在HEAD中,这很糟糕.

是否可以仅在外部未指向HEAD修订版时禁止提交?

svn permissions svn-externals

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

/ fp的奇怪结果:快

我们有一些看起来像这样的代码:

inline int calc_something(double x) {
  if (x > 0.0) {
    // do something
    return 1;
  } else {
    // do something else
    return 0;
  }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当使用标志时/fp:fast,我们得到了calc_something(0)==1明显错误的代码路径.这只发生在我们在代码中的多个点使用不同参数的方法时,所以我认为编译器(Microsoft Visual Studio 2008,SP1)中存在一些可疑的优化.

此外,当我们将接口更改为时,上述问题也消失了

inline int calc_something(const double& x) {
Run Code Online (Sandbox Code Playgroud)

但我不知道为什么这会解决这个奇怪的行为.任何人都可以解释这种行为吗?如果我无法理解发生了什么,我们将不得不删除/fp:fast开关,但这会使我们的应用程序慢一点.

c++ floating-accuracy compiler-optimization visual-studio-2008

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

java中的Typeahead/Incremental Search

我们有一个搜索结果映射列表,例如一个简单的URL映射可能看起来像

"stackoverflow" - >"www.stackoverflow.com""joel" - >"www.joelonsoftware.com"

所以搜索确切的短语工作正常.

现在我们正在寻找增量搜索/预先输入,例如"stackover"也将返回"www.stackoverflow.com".我们当然可以相应地填充我们的地图,例如将每个可能的字符串放入地图中,从给定最小尺寸的所有变化开始

- >地图键:

stack - > stackoverflow ... stackoverf - > stackoverflow stackoverfl - > stackoverflow stackoverflo - > stackoverflow stackoverflow - > stackoverflow

然而,这意味着需要更高的内存占用(我猜).

有什么建议?

java search data-structures

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

如何优化获取/设置属性修饰属性的性能?

在C#中,我用属性标记了一些类的属性,并且我使用反射来查找这些属性,以便对它们执行获取和设置.然而,我发现以这种方式获得/设置反射大约是POCO获取/设置的10倍.除了放弃上述基本场景以使用替代技术之外,是否有任何记录的技巧可以使这种性能显着提升,例如某种缓存技术?

c# reflection

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

JTree 给出 ArrayIndexOutOfBoundsException?

我尝试向 Java Swing 动态添加节点JTree,并且用户应该能够在不断添加节点的同时浏览和折叠层次结构。Thread.sleep(10)当我在循环中添加 a 时,它工作正常;但这是一个肮脏的黑客......

这是触发此问题的精简代码。每当我运行它并双击根节点以展开/折叠它(在添加节点时),我都会得到一个ArrayIndexOutOfBoundsException. 当我添加一个时,Thread.sleep(10)这不会发生。我猜这是一个线程问题,但我不知道如何同步?任何提示将不胜感激!

public static void main(String[] args) throws InterruptedException {
    final JFrame frame = new JFrame();
    frame.setSize(600, 800);
    frame.setVisible(true);

    MutableTreeNode root = new DefaultMutableTreeNode("root");
    final DefaultTreeModel model = new DefaultTreeModel(root);
    final JTree tree = new JTree(model);
    frame.add(new JScrollPane(tree));

    while (true) {
        MutableTreeNode child = new DefaultMutableTreeNode("test");
        model.insertNodeInto(child, root, root.getChildCount());
        tree.expandRow(tree.getRowCount() - 1);

        // uncommenting this to make it work
        // Thread.sleep(10);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想将其用于打字搜索应用程序,因此提供(几乎)即时结果对我来说至关重要。

编辑:感谢您的快速解答! …

java swing multithreading synchronization jtree

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

如何禁用动态频率调整?

我想做一些微基准测试,并尝试做正确的.不幸的是,动态频率调整使得基准测试非常不可靠.

有没有办法以编程方式(C++,Windows)找出是否启用了动态频率调整?如果,这可以在程序中禁用吗?

香港专业教育学院曾试图在实际基准测试发生前使用100%CPU的预热阶段,但事实证明这也是不可靠的.

更新:即使我在BIOS中禁用SpeedStep,cpu-z显示频率在1995和2826 GHz之间变化

c++ windows benchmarking cpu-speed

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

C++ for循环:条件评估

关于循环,我有一个(愚蠢的?)C/C++问题:

for (size_t i = 0; i < std::distance(begin, end); ++i) {
  a.push_back(i);
}
Run Code Online (Sandbox Code Playgroud)

begin并且end是两个迭代器.我的问题是,是否std::distance(begin, end)为循环中的每个元素计算?或者使用此版本更好:

size_t dist = std::distance(begin, end);
for (size_t i = 0; i < dist; ++i) {
  a.push_back(i);
}
Run Code Online (Sandbox Code Playgroud)

c++ performance for-loop conditional-statements

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