小编Eli*_*ist的帖子

在外部进程中调试COM对象

我的Dll COM对象(用C#编写)由第三方进程(作为插件)加载.有没有什么可以调试它,然后记录?

更新:

刚发现这个问题,这是我正在寻找的确切场景.

.net c# com debugging

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

在我的情况下使用finalize()?

我有一个ImageWrapper类将图像保存到磁盘中的临时文件以释放堆内存,并允许在需要时重新加载它们.

class ImageWrapper {
    File tempFile;
    public ImageWrapper(BufferedImage img) {
        // save image to tempFile and gc()
    }
    public BufferedImage getImage() {
        // read the image from tempFile and return it.
    }
    public void delete() {
        // delete image from disk.
    }
}
Run Code Online (Sandbox Code Playgroud)

我关注的是,如何确保文件在ImageWrapper垃圾收集时被删除(否则我冒着用不需要的图像填充磁盘的风险).这必须在应用程序仍在运行时完成(而不是终止时的清理建议),因为它可能会长时间运行.

我不完全熟悉java的GC概念,我想知道finalize()我是否正在寻找.我的想法是从override finalize()方法调用delete()(在一个单独的Thread上).这是正确的方法吗?

更新:

close()由于每个这样的图像被提取到我无法控制的侦听器列表,并且可能保存对该对象的引用,因此我认为我不能像许多用户所建议的那样使用该对象.我确定能够删除文件的唯一时间是没有引用,因此我认为finalize()是正确的方法.有什么建议?

更新2:

什么是finalize()不会被调用的场景?如果唯一可能的是退出程序(以预期/意外的方式),我可以接受它,因为这意味着我只冒一个不需要的临时文件(在退出期间处理的文件).

java garbage-collection finalizer

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

WiX - 如何仅在尚不存在的情况下添加XML元素

我想在安装期间向XML添加一个元素,但我想避免升级安装复制我的元素.如何使我的XmlFile组件有条件?

xml wix duplicates conditional-statements

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

调用COM类的非默认构造函数

我有一个DLL(用C#编写),包含一个带有2个构造函数的类; 一个默认(无参数)构造函数,另一个有3个参数.

在VBscript中,我想调用第二个构造函数,但CreateObject只接收一个classValue参数,没有可能的arguments参数.

我想底层实现CreateObject使用系统的CoCreateObject函数,根据这个答案不支持参数,但另一方面有QTP/UFT DotNetFactory能够做到这一点,所以必须有一种方法在纯VBscript中做到这一点.

(init如果可能的话,我想避免使用明显的方法解决方案).

有关如何调用非默认构造函数的任何想法?

c# com vbscript constructor createobject

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

Java - 不可修改的键集映射

我正在寻找一种方法来提供Map预定义的(如在运行时不可变,而不是编译时const)常量键集,但可修改的值.

JDK提供Collections.unmodifiableMap工厂方法,它包装Map并提供它的不可变视图.

是否有类似的方式来包装一个Map只有它的键是不可变的?例如,put(K,V)将替换现有键的值,但UnsupportedOperationException如果键不存在则抛出.

java dictionary key immutability

4
推荐指数
2
解决办法
1960
查看次数

Thrift编译器 - 为不同的输出路径生成不同的语言

Thrift编译器允许为生成的文件指定输出目录.

我写一个Java客户端和C#的服务器,我想有从生成的文件-gen java-gen csharp设在我的项目的不同的目录.

可能吗?

c# java thrift

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

iOS - 事后获取自我进程开始时间

我正在为 iOS 应用程序编写一个插件包(我会为您提供详细信息)。当我的包被加载时,这不一定是在主应用程序包加载时,我想以秒(或更高)的分辨率获得进程的“正常运行时间”。

我知道在其他操作系统(Unix/Linux/Android)中我可以枚举kinfo_procs 或使用该/proc/self/stat方法,但我无法从 iOS 应用程序沙箱内部实现我的目标。

NSProcessInfo我可以使用一些标准的系统调用/属性吗?

这样做的目的主要是为了调试,但它可能会变成一个功能。因此,一种适用于 AppStore 的方法是首选,但不是强制性的。

plugins process sandbox ios

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

释放 BufferedImage 内存的最快方法

将 BufferedImage 保存到磁盘(以释放内存)的最快方法是什么?

我的 Java 应用程序处理大量图像(每约 300 毫秒将图像加载到内存中)。大多数图像会立即被丢弃(gc),但每隔一段时间我需要保存图像。

当然,将它们保存在 RAM 中并不是一个好主意,因为它会在几分钟内平均消耗 2GB JVM,并破坏应用程序,因此我尝试将其保存到磁盘。问题是,保存它ImageIO.write(img, "PNG", file)是不够的,因为有时(在我的 i7 机器上)每 12MB 图像需要 5-10 秒来处理和保存,并且仍然没有足够快地释放内存。

是否有其他格式可能执行得更快?

编辑:

我不在乎以合理的水平降低分辨率或松散图像数据。

java memory bufferedimage

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

XPath 语法 - 如何在复杂的位置路径中使用 position()

我正在编写一个递归算法来为给定元素生成唯一的最小 XPath。主要思想是允许在一个文档中选择一个元素(即 PC 上 chrome 中的 html 元素),并能够在类似文档(即移动版本中的同一站点)中找到相应的元素。

在此过程中,我需要为整个给定文档生成一个完整的 XPath 字符串,即对于给定节点,遍历整个树并将所有节点及其所有属性附加到字符串中。

例如,对于以下文档(想要的元素用“*”标记):

<?xml version="1.0" encoding="UTF-16"?>
<node>
    <node/>
    <node id="content">
        <node>
            <node>
                <node id="url_text_field"/>
                *<node id="go_button" text="Go">
                </node>*
                <node id="back_button" text="Back">
                </node>
            </node>
            <node id="webViewPlaceholder">
                <node/>
            </node>
        </node>
    </node>
</node>
Run Code Online (Sandbox Code Playgroud)

我的代码生成的 XPath:

//*[@id='go_button' and @text='Go' and parent::*[child::*[@id='url_text_field'] and child::*[@id='back_button' and @text='Back'] and parent::*[child::*[@id='webViewPlaceholder'] and parent::*[@id='content']]]]
Run Code Online (Sandbox Code Playgroud)

yield<node id="go_button" text="Go"> 完全符合元素。

我的问题是,在一种特殊情况下(即 - 当包含所需元素的子树具有相同的“兄弟”时)我必须使用该元素的position()=SOME_NUMBER(或“索引”节点[SOME_NUMBER])来唯一标识元素,我在语法上遇到了问题。

例如,对于更复杂的文档(同样,元素被标记为“*”。index 属性不是原始文档的一部分,添加只是为了参考):

<?xml version="1.0" encoding="UTF-16"?>
<node>
    <node/>
    <node id="content" index="a">
        <node>
            <node>
                <node id="url_text_field"/> …
Run Code Online (Sandbox Code Playgroud)

xml xpath position

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

从paintComponent调用repaint是一个很好的做法

对于我们应用程序中的一些UI组件,我们覆盖paintComponent,在某些情况下"递归地"通过调用来调用自身repaint.我们使用这种方法来实现组件中动画的高刷新率.

例如,我们使用的进度条看起来像:

public class SimpleProgressBar extends JPanel {
    private boolean inProgress;

    ....

    @Override
    protected void paintComponent(Graphics g) {
        if (inProgress) {
            paintBar(g);
            repaint();
        } else {
            doSomeOtherThings();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个很好的做法(特别是在性能/效率/ CPU使用方面)?
在组件中使用Timer或后台线程更好repaint吗?

java performance swing awt

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

修改旧的推送提交消息是否安全?

我正在关注文档以修改已推送的提交消息。我现在有我的本地分支包含修改后的消息,以及修改后的所有提交的副本。

我确信其他人已经撤回了这些提交。

推送我的本地分支是否安全?对其他人会有什么后果?

git git-amend

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

在iOS 6.0中以编程方式打开"设置","WiFi"或"蓝牙"页面

我想知道如何在iOS 6.0中以编程方式打开设置,WiFi或蓝牙页面.

我知道有一种方法可以通过自定义URL打开设置页面,但在iOS 5.1之上已弃用.

如果有任何方法可以直接打开页面,请告诉我,或提供一些示例代码.

任何帮助将不胜感激...

iphone cocoa-touch ios

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