我有一个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()是正确的方法.有什么建议?
什么是finalize()不会被调用的场景?如果唯一可能的是退出程序(以预期/意外的方式),我可以接受它,因为这意味着我只冒一个不需要的临时文件(在退出期间处理的文件).
我想在安装期间向XML添加一个元素,但我想避免升级安装复制我的元素.如何使我的XmlFile组件有条件?
我有一个DLL(用C#编写),包含一个带有2个构造函数的类; 一个默认(无参数)构造函数,另一个有3个参数.
在VBscript中,我想调用第二个构造函数,但CreateObject只接收一个classValue参数,没有可能的arguments参数.
我想底层实现CreateObject使用系统的CoCreateObject函数,根据这个答案不支持参数,但另一方面有QTP/UFT DotNetFactory能够做到这一点,所以必须有一种方法在纯VBscript中做到这一点.
(init如果可能的话,我想避免使用明显的方法解决方案).
有关如何调用非默认构造函数的任何想法?
我正在寻找一种方法来提供Map预定义的(如在运行时不可变,而不是编译时const)常量键集,但可修改的值.
JDK提供Collections.unmodifiableMap工厂方法,它包装Map并提供它的不可变视图.
是否有类似的方式来包装一个Map只有它的键是不可变的?例如,put(K,V)将替换现有键的值,但UnsupportedOperationException如果键不存在则抛出.
Thrift编译器允许为生成的文件指定输出目录.
我写一个Java客户端和C#的服务器,我想有从生成的文件-gen java和-gen csharp设在我的项目的不同的目录.
可能吗?
我正在为 iOS 应用程序编写一个插件包(我会为您提供详细信息)。当我的包被加载时,这不一定是在主应用程序包加载时,我想以秒(或更高)的分辨率获得进程的“正常运行时间”。
我知道在其他操作系统(Unix/Linux/Android)中我可以枚举kinfo_procs 或使用该/proc/self/stat方法,但我无法从 iOS 应用程序沙箱内部实现我的目标。
NSProcessInfo我可以使用一些标准的系统调用/属性吗?
这样做的目的主要是为了调试,但它可能会变成一个功能。因此,一种适用于 AppStore 的方法是首选,但不是强制性的。
将 BufferedImage 保存到磁盘(以释放内存)的最快方法是什么?
我的 Java 应用程序处理大量图像(每约 300 毫秒将图像加载到内存中)。大多数图像会立即被丢弃(gc),但每隔一段时间我需要保存图像。
当然,将它们保存在 RAM 中并不是一个好主意,因为它会在几分钟内平均消耗 2GB JVM,并破坏应用程序,因此我尝试将其保存到磁盘。问题是,保存它ImageIO.write(img, "PNG", file)是不够的,因为有时(在我的 i7 机器上)每 12MB 图像需要 5-10 秒来处理和保存,并且仍然没有足够快地释放内存。
是否有其他格式可能执行得更快?
我不在乎以合理的水平降低分辨率或松散图像数据。
我正在编写一个递归算法来为给定元素生成唯一的最小 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) 对于我们应用程序中的一些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吗?
我想知道如何在iOS 6.0中以编程方式打开设置,WiFi或蓝牙页面.
我知道有一种方法可以通过自定义URL打开设置页面,但在iOS 5.1之上已弃用.
如果有任何方法可以直接打开页面,请告诉我,或提供一些示例代码.
任何帮助将不胜感激...
java ×5
c# ×3
com ×2
ios ×2
xml ×2
.net ×1
awt ×1
cocoa-touch ×1
constructor ×1
createobject ×1
debugging ×1
dictionary ×1
duplicates ×1
finalizer ×1
git ×1
git-amend ×1
immutability ×1
iphone ×1
key ×1
memory ×1
performance ×1
plugins ×1
position ×1
process ×1
sandbox ×1
swing ×1
thrift ×1
vbscript ×1
wix ×1
xpath ×1