小编iai*_*ain的帖子

自定义Eclipse重构的预览出错

我正在实施一个新的eclipse重构.这将使开发人员能够将preconditions语句从子方法提取到父方法.

当我在重构向导中选择"完成"时,这一切都很完美,但是当我选择"预览"时,我收到错误"没有提供目标编辑".这似乎是由TextEdit返回的问题引起的ASTRewrite.rewriteAST().但是我无法弄清楚为什么.

我的Refactoring.createChange()代码运行后发生异常的堆栈跟踪,并且更改用于生成预览.

org.eclipse.text.edits.MalformedTreeException: No target edit provided.
at org.eclipse.text.edits.MoveSourceEdit.performConsistencyCheck(MoveSourceEdit.java:208)
at org.eclipse.text.edits.TextEdit.traverseConsistencyCheck(TextEdit.java:873)
at org.eclipse.text.edits.MoveSourceEdit.traverseConsistencyCheck(MoveSourceEdit.java:183)
at org.eclipse.text.edits.TextEdit.traverseConsistencyCheck(TextEdit.java:869)
at org.eclipse.text.edits.TextEdit.traverseConsistencyCheck(TextEdit.java:869)
at org.eclipse.text.edits.TextEditProcessor.checkIntegrityDo(TextEditProcessor.java:176)
at org.eclipse.text.edits.TextEdit.dispatchCheckIntegrity(TextEdit.java:743)
at org.eclipse.text.edits.TextEditProcessor.performEdits(TextEditProcessor.java:151)
at org.eclipse.ltk.core.refactoring.TextChange.getPreviewDocument(TextChange.java:534)
at org.eclipse.ltk.core.refactoring.TextChange.getPreviewDocument(TextChange.java:403)
at org.eclipse.ltk.core.refactoring.TextChange.getPreviewContent(TextChange.java:411)
at org.eclipse.ltk.internal.ui.refactoring.TextEditChangePreviewViewer.setInput(TextEditChangePreviewViewer.java:209)
at org.eclipse.ltk.internal.ui.refactoring.AbstractChangeNode.feedInput(AbstractChangeNode.java:99)
at org.eclipse.ltk.internal.ui.refactoring.PreviewWizardPage.showPreview(PreviewWizardPage.java:598)
at org.eclipse.ltk.internal.ui.refactoring.PreviewWizardPage.access$6(PreviewWizardPage.java:583)
at org.eclipse.ltk.internal.ui.refactoring.PreviewWizardPage$7.selectionChanged(PreviewWizardPage.java:574)
at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.runtime.Platform.run(Platform.java:888)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:160)
at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1669)
at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1124)
at org.eclipse.jface.viewers.Viewer.setSelection(Viewer.java:392)
at org.eclipse.ltk.internal.ui.refactoring.PreviewWizardPage.setVisible(PreviewWizardPage.java:505)
at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.makeVisible(RefactoringWizardDialog2.java:762)
at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.showCurrentPage(RefactoringWizardDialog2.java:477)
at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.nextOrPreviewPressed(RefactoringWizardDialog2.java:507)
at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.access$2(RefactoringWizardDialog2.java:492)
at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2$1.widgetSelected(RefactoringWizardDialog2.java:691)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228) …
Run Code Online (Sandbox Code Playgroud)

java eclipse refactoring eclipse-plugin

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

如何在C++中实现序列化

每当我发现自己需要在C++程序中序列化对象时,我就会回到这种模式:

class Serializable {
  public:
    static Serializable *deserialize(istream &is) {
        int id;
        is >> id;
        switch(id) {
          case EXAMPLE_ID:
            return new ExampleClass(is);
          //...
        }
    }

    void serialize(ostream &os) {
        os << getClassID();
        serializeMe(os);
    }

  protected:
    int getClassID()=0;
    void serializeMe(ostream &os)=0;
};
Run Code Online (Sandbox Code Playgroud)

以上在实践中效果很好.但是,我听说这种类ID转换是邪恶的,反模式; 什么是在C++中处理序列化的标准OO方式?

c++ serialization design-patterns

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

VC++:KB971090并选择Visual C运行时DLL依赖项

您可能知道,Microsoft最近为Visual Studio部署了一个安全更新:KB971090.

除此之外,这还将Visual C运行时DLL从版本8.0.50727.762更新为8.0.50727.4053.

因此,在此更新之后,我编译的所有使用动态链接的运行时,将其依赖项更新为新的运行时.

当然,对于新的应用程序,可以更新到新的,可能更安全的版本.

但我也希望能够保留旧的依赖 - 例如,我可能想构建一个只需要替换一个DLL的fixpack(如果我在更新后尝试这样做,我会得到可怕的"此应用程序无法启动,因为应用程序配置不正确."除非我还分发更新的运行时).

有没有办法做到这一点,或者我需要保留两个Visual Studio安装:一个更新,一个未更新?

c++ dependencies runtime visual-studio visual-c++

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

无法在scala中设置一个名为type的java注释成员?

我试图将一些Java代码移植到scala.代码使用带有成员调用的注释,type但这是scala中的关键字.有没有办法在scala中解决这个有效的java成员?

这是Java代码

@Component(
        name = "RestProcessorImpl",
        type = mediation // Compile error
        )
public class RestProcessorImpl {
 // impl
}
Run Code Online (Sandbox Code Playgroud)

这部分代码在scala中是相同的,除了它type是一个关键字,因此它不能编译.有没有办法逃避type关键字?

这也是带有type成员的java类的问题

HasType.java

package spike1;

public class HasType {
    public String type() { 
        return "the type";
    }
}
Run Code Online (Sandbox Code Playgroud)

UseType.scala

class UseType {
    def hasType = new HasType
    hasType.type() // Compile error
}
Run Code Online (Sandbox Code Playgroud)

java scala scala-java-interop

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

如何使用umdh.exe在所有堆中跟踪内存泄漏?

我有一个C ++ Windows应用程序,每个事务都会泄漏内存。使用perfmon,我可以看到每个事务的专用字节都增加了,而应用程序空闲时内存使用率却是稳定的。

按照先前关于stackoverflow的答案,我使用了Microsoft调试工具中的umdh来跟踪一次内存泄漏。但是仍然有更多的泄漏,并且umdh的结果与我的性能结果不符。

First umdh仍然报告此泄漏,堆栈跟踪为:

+   36192 ( 2082056 - 2045864)    251 allocs    BackTraceCB
+       4 (    251 -    247)    BackTraceCB allocations

    ntdll!RtlAllocateHeapSlowly+00000041
    ntdll!RtlAllocateHeap+00000E9F
    MSVCR80!malloc+0000007A
Run Code Online (Sandbox Code Playgroud)

这是没有用的,因为第一个调用是malloc,没有说什么叫它。我对这种泄漏感到怀疑,因为在应用程序正在处理事务和空闲时都会报告该泄漏。但是我可以清楚地看到空闲时没有内存泄漏。并且在处理事务时报告的内存泄漏与作为性能报告处理的事务不成比例。

umhd没有显示任何其他泄漏,尽管我知道至少还有一个未显示。我刚刚从网上搜索中学到Windows应用程序可以有多个堆。

  • 可能是umhd仅报告了其中一个堆的内存使用情况吗?例如默认堆或crt堆?
  • 如何跟踪其他堆中的内存使用情况?
  • 以及如何找出哪些dll /模块正在使用其他堆?

当我用尽所有选项时,将不胜感激地收到任何跟踪此问题的指针。

c++ memory-leaks

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

如何在Gradle中以多种语言(Java和Scala)支持多个项目?

我正在尝试将过时的Ant构建转换为Gradle。该项目包含Java 50个子项目和10个Scala子项目。Java项目仅包含Java,而Scala项目仅包含Scala。每个项目都由Java构建,然后由Scala构建,这大大降低了我们的构建速度。

我想在根build.gradle文件中放置尽可能多的通用逻辑,如下所示:

subprojects {
    apply plugin: 'java'
    apply plugin: 'scala'

    sourceCompatibility=1.7
    targetCompatibility=1.7

    sourceSets {
        main {
            scala {
                srcDir 'src'
            }
            java {
                srcDir 'src'
            }
        }
        test {
            scala {
                srcDir 'test'
            }
            java {
                srcDir 'test'
            }
        }
    }

    repositories {
        mavenCentral()
    }

    dependencies {
        scalaTools "org.scala-lang:scala-compiler:2.9.3"
        compile "org.scala-lang:scala-library:2.9.3"
    }

    // Use the sbt compiler (not scalac ant task)
    tasks.withType(ScalaCompile) {
        scalaCompileOptions.useAnt = false
    }

    task showCompileClasspath << {
       sourceSets.main.compileClasspath.each { println it }
    }

    test { …
Run Code Online (Sandbox Code Playgroud)

java scala build gradle

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

在QTableView的单个单元格中显示多个图标

我正在QtCreator中用QT4.5编写一个小gui应用程序.

应用程序的主屏幕包含一个带有两列的QTreeView,第一个是文本,第二个是一组图标.这些图标代表行中显示的项目的最后几个状态.

我不确定最好的办法是什么.我目前通过生成模型data()方法的QPixmap来实现这一点.

QVariant MyModel::data(const QModelIndex &index, int role) const
{
    if (role == Qt::DisplayRole || role == Qt::EditRole) {
        switch(index.column()) {
            case 0:
                return item_.at(index.row()).title();
        }
    }
    if (role == Qt::DecorationRole) {
        switch(index.column()) {
            case 1:
                return makeImage(item_.add(index.row()).lastStates());
        }
    }

    return QVariant();
}

QVariant MyModel::makeImage(const QList<MyState> &states) const
{
    const int IconSize = 22;
    QPixmap image(IconSize * states.size(), IconSize);
    QPainter painter(&image);

    painter.fillRect(0, 0, IconSize * count, IconSize, Qt::transparent);
    for (int i = 0; i < states.size(); ++i) …
Run Code Online (Sandbox Code Playgroud)

c++ user-interface qt qt4

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