我想问一个关于在Java中避免String重复的问题.
该情境是:以标签的XML和属性像这样的:
<product id="PROD" name="My Product"...></product>
Run Code Online (Sandbox Code Playgroud)
使用JibX,这个XML在这样的类中被编组/解组:
public class Product{
private String id;
private String name;
// constructor, getters, setters, methods and so on
}
Run Code Online (Sandbox Code Playgroud)
该程序是一个长时间的批处理,因此产品对象被创建,使用,复制等.
好吧,问题是:当我用Eclipse内存分析器(MAT)这样的软件分析执行时,我发现了几个重复的字符串.例如,在id属性中,PROD值在2000个实例等周围重复.
我该如何避免这种情况?Product类中的其他属性可能会在执行时更改其值,但是像id,name ......这样的attrs 不会经常更改.
我已经了解了一些关于String.intern()方法的内容,但我还没有使用过,我不确定它是否是一个解决方案.我可以在这些属性中定义最常用的值,比如类中的静态最终常量吗?
我希望我能以正确的方式表达我的问题.非常感谢任何帮助或建议.提前致谢.
在最近的两周内,在没有发布我的应用程序更新的情况下,我开始收到一堆包含损坏数据库的报告.下面是堆栈跟踪.Android无法打开数据库,我的计算机上的sqlite-manager程序也无法打开.但是,fireite的SQLite manager-addon可以打开它.运行命令"compact database"后,数据库已修复,我可以在android中打开它.有什么方法可以在我的应用程序中做这样的事情吗?最大的问题是我甚至无法尝试打开数据库,因为较新版本的Android会立即删除并替换数据库,如下面的堆栈跟踪中所示.可以在不打开数据库的情况下以某种方式执行PRAGMA语句吗?
问候,
02-22 09:55:20.245: ERROR/Database(5382): CREATE TABLE android_metadata failed
02-22 09:55:20.245: ERROR/Database(5382): Failed to setLocale() when constructing, closing the database
02-22 09:55:20.245: ERROR/Database(5382): android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed
02-22 09:55:20.245: ERROR/Database(5382): at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
02-22 09:55:20.245: ERROR/Database(5382): at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1950)
02-22 09:55:20.245: ERROR/Database(5382): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1818)
02-22 09:55:20.245: ERROR/Database(5382): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
02-22 09:55:20.245: ERROR/Database(5382): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
02-22 09:55:20.245: ERROR/Database(5382): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
02-22 09:55:20.245: ERROR/Database(5382): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)
02-22 09:55:20.245: ERROR/Database(5382): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
02-22 09:55:20.245: ERROR/Database(5382): Deleting and re-creating corrupt database …Run Code Online (Sandbox Code Playgroud) 我无法让jQuery keyup和keydown事件一起工作.看到这个jsFiddle:http://jsfiddle.net/CXkam/1/
这里的代码也很容易:
$(document).keyup(function (event) {
alert('Keyup');
});
$(document).keypress(function(e) {
alert('Keypress: ' + String.fromCharCode(e.which));
});
$(document).keydown(function(e) {
alert('Keydown: ' + String.fromCharCode(e.which));
});
Run Code Online (Sandbox Code Playgroud)
如果您注释掉keypress()和keydown()处理程序,则keyup()警报会触发.
但如果你不这样做,那么keyup()永远不要开火.
为什么不?
谢谢!
在Ubuntu的终端上,我经常运行程序,这些程序会持续运行很长时间.由于有很多这些程序,我一直忘记哪个终端是哪个程序,除非我通过所有这些程序.因此,每当我运行命令时,我想找到一种方法将终端标题更新为程序名称.我不想手动做.
我使用gnome-terminal,但答案不应该真正依赖于它.基本上,如果我能够运行第二个命令,那么我可以简单地使用gconftool命令来更新标题.所以我希望找到一种方法来捕获bash中的命令并在每个命令后更新标题.我怎么做?
我正在尝试将自己的自定义错误消息设置到我的Captcha上,但由于某种原因它会回显两次.
这是我的验证码:
$captcha = new Zend_Form_Element_Captcha(
'captcha', // This is the name of the input field
array('captcha' => array(
// First the type...
'captcha' => 'Image',
// Length of the word...
'wordLen' => 6,
// Captcha timeout, 5 mins
'timeout' => 300,
// What font to use...
'font' => 'images/captcha/font/arial.ttf',
// URL to the images
'imgUrl' => '/images/captcha',
//alt tag to keep SEO guys happy
'imgAlt' => "Captcha Image - Please verify you're human"
)));
Run Code Online (Sandbox Code Playgroud)
然后设置我自己的错误消息:
$captcha->setErrorMessages(array('badCaptcha' => 'My message …Run Code Online (Sandbox Code Playgroud) 我尝试使用ssh在chroot环境中使用tar压缩tar,但它失败了,因为它只是压缩符号链接本身,我如何压缩它的内容?
-bash-3.00$ ls -ail
1263583 lrwxrwxrwx 1 root root 18 Apr 18 2008 mainwebsite_html -> ../../var/www/html
-bash-3.00$ tar -cjvf archive.tar.bz2 mainwebsite_html
-bash-3.00$ ls -ail
7509101 -rw-r--r-- 1 user1 user1 136 Feb 22 08:57 archive.tar.bz2
1263583 lrwxrwxrwx 1 root root 18 Apr 18 2008 mainwebsite_html -> ../../var/www/html
Run Code Online (Sandbox Code Playgroud)
谢谢
当从主程序窗口生成的模式对话框正常关闭时,我的应用程序意外结束。不会引发未处理的异常,并且不会在主应用程序窗口上触发任何Closing或事件。Closed
本质上,我有一个主/外壳窗口,它是使用 ShellWindow.Show() 在应用程序代码中启动的。通过菜单,用户可以生成一个自定义打开对话框,这是一个创建的新窗口,然后使用 ShowDialog 显示(窗口所有者设置为 shell 窗口的所有者)。
当对话框关闭时(在内部,通过调用 _modalDialogWindow.Close() 的命令),应用程序将关闭,而我只期望模式对话框已关闭。
调试代码表明 ShellWindow 已从内存中转储,因为 _modalDialogWindow.Close() 之后执行的下一行代码是静态程序代码中的 Application.Run() 之外的代码。
如果有人有任何想法,我愿意尝试任何事情。
android ×3
linux ×2
bash ×1
c# ×1
command-line ×1
corruption ×1
database ×1
duplicates ×1
java ×1
jquery ×1
local ×1
modal-dialog ×1
pragma ×1
shell ×1
sqlite ×1
string ×1
tar ×1
terminal ×1
wpf ×1