我想避免(大多数)Netbeans 6.9.1的警告,我的'Leaking this in constructor'警告有问题.
我理解这个问题,在构造函数中调用一个方法并传递" this"是危险的,因为" this"可能没有完全初始化.
很容易在我的单例类中修复警告,因为构造函数是私有的,只能从同一个类中调用.
旧代码(简化):
private Singleton() {
...
addWindowFocusListener(this);
}
public static Singleton getInstance() {
...
instance = new Singleton();
...
}
Run Code Online (Sandbox Code Playgroud)
新代码(简化):
private Singleton() {
...
}
public static Singleton getInstance() {
...
instance = new Singleton();
addWindowFocusListener( instance );
...
}
Run Code Online (Sandbox Code Playgroud)
如果构造函数是公共的并且可以从其他类调用,则此修复不起作用.如何修复以下代码:
public class MyClass {
...
List<MyClass> instances = new ArrayList<MyClass>();
...
public MyClass() {
...
instances.add(this);
}
}
Run Code Online (Sandbox Code Playgroud)
当然我想要一个修复,它不需要使用这个类修改我的所有代码(例如通过调用init方法).
当我使用jdbc瘦驱动程序搜索Web以将BLOB插入Oracle数据库时,大多数网页都建议采用三步法:
empty_blob()值.for update.这对我来说很好,这是一个例子:
Connection oracleConnection = ...
byte[] testArray = ...
PreparedStatement ps = oracleConnection.prepareStatement(
"insert into test (id, blobfield) values(?, empty_blob())");
ps.setInt(1, 100);
ps.executeUpdate();
ps.close();
ps = oracleConnection.prepareStatement(
"select blobfield from test where id = ? for update");
ps.setInt(1, 100);
OracleResultSet rs = (OracleResultSet) ps.executeQuery();
if (rs.next()) {
BLOB blob = (BLOB) rs.getBLOB(1);
OutputStream outputStream = blob.setBinaryStream(0L);
InputStream inputStream = new ByteArrayInputStream(testArray);
byte[] buffer = new byte[blob.getBufferSize()];
int byteread = 0;
while …Run Code Online (Sandbox Code Playgroud) 我想使用Java将gif图像转换为jpeg.它适用于大多数图像,但我有一个简单的透明gif图像:
输入gif图像http://img292.imageshack.us/img292/2103/indexedtestal7.gif
[如果图像丢失:它是一个蓝色圆圈,周围有透明像素]
当我使用以下代码转换此图像时:
File file = new File("indexed_test.gif");
BufferedImage image = ImageIO.read(file);
File f = new File("indexed_test.jpg");
ImageIO.write(image, "jpg", f);
Run Code Online (Sandbox Code Playgroud)
此代码可以在不抛出异常的情况下工作,但会导致无效的jpeg图像:
[如果图像丢失:IE无法显示jpeg,Firefox会显示无效颜色的图像.]
我正在使用Java 1.5.
我还尝试使用gimp将示例gif转换为png并使用png作为Java代码的输入.结果是一样的.
这是JDK中的错误吗?如何在没有第三方库的情况下正确转换图像?
更新:
答案表明jpeg转换无法正确处理透明度(我仍然认为这是一个错误)并建议使用预定义颜色替换透明像素的解决方法.这两种建议的方法都非常复杂,所以我实现了一个更简单的方法(将作为答案发布).我接受了第一个已发布的答案(Markus).我不知道哪种实现更好.我选择了最简单的一个,但我发现它不起作用的gif.
我正在使用Java 1.5,我想启动相关的应用程序来打开文件.我知道Java 1.6引入了Desktop API,但我需要一个Java 1.5的解决方案.
到目前为止,我找到了一种在Windows中执行此操作的方法:
Runtime.getRuntime().exec(new String[]{ "rundll32",
"url.dll,FileProtocolHandler", fileName });
Run Code Online (Sandbox Code Playgroud)
有没有跨平台的方式来做到这一点?或者至少是Linux的类似解决方案?
如何使用以下约束将图像添加到HTML页面:
例如,我有一个图像(400x300).如果包含元素宽度为600像素,我想将图像显示为400x300.如果包含元素的宽度为200像素(例如它是移动浏览器),我想将图像显示为200x150.
我正在寻找一个纯CSS解决方案(如果可能的话)而没有硬连接图像大小.
我想使用JSP创建一个动态报告网页.基本上它应该包含以下部分:
我不想自己实现所有内容,而是想使用java报告库,所以我使用JasperReports创建了我的报告.pdf输出非常好,但报告的html导出不适合我的目的.
JasperReport的html导出创建了一个包含大量硬连线代码的html文件,以及相当随机的配置选项.例如,默认情况下它创建一个带白色背景的表(<table style="... bgcolor="white" ... ">),可以使用IS_WHITE_PAGE_BACKGROUND选项关闭,另一方面cellpadding="0" cellspacing="0" border="0",在table标签中硬连线.它也很奇怪(并使css样式很难)而不是span文件类,html文件包含<span style="font-family: sansserif; color: #000000; font-size: 10.0px;">我的所有字段.
当然我可以使用JSP实现html输出,但这意味着我必须设计输出两次(一次在jrxml中用于JasperReports,一次在JSP中),我必须重新实现报告功能(如小计计算,总计算,分组) ......)违反DRY原则.
实现这个的最佳实践是什么?是否可以使用JasperReports创建更好的HTML导出?
我有一个java类,它触发自定义java事件.代码的结构如下:
public class AEvent extends EventObject {
...
}
public interface AListener extends EventListener {
public void event1(AEvent event);
}
public class A {
public synchronized void addAListener(AListener l) {
..
}
public synchronized void removeAListener(AListener l) {
..
}
protected void fireAListenerEvent1(AEvent event) {
..
}
}
Run Code Online (Sandbox Code Playgroud)
一切正常,但我想创建一个新的A子类(称之为B),它可能会触发一个新事件.我正在考虑以下修改:
public class BEvent extends AEvent {
...
}
public interface BListener extends AListener {
public void event2(BEvent event);
}
public class B extends A {
public synchronized void addBListener(BListener l) { …Run Code Online (Sandbox Code Playgroud) 我想为我的大多数数据库对象创建ddl脚本.dbms_metadata.get_ddl适用于大多数对象类型.例如,以下内容为视图创建ddl:
select dbms_metadata.get_ddl ( 'VIEW', 'SAMPLE_VIEW') from dual
Run Code Online (Sandbox Code Playgroud)
另一方面,它不适用于object_type'JOB'.下列:
select dbms_metadata.get_ddl( 'JOB', 'SAMPLE_JOB' ) from dual
Run Code Online (Sandbox Code Playgroud)
给出以下错误:
ORA-31604: invalid NAME parameter "NAME" for object type JOB in function SET_FILTER
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 116
ORA-06512: at "SYS.DBMS_METADATA_INT", line 4705
ORA-06512: at "SYS.DBMS_METADATA_INT", line 8582
ORA-06512: at "SYS.DBMS_METADATA", line 2882
ORA-06512: at "SYS.DBMS_METADATA", line 2748
ORA-06512: at "SYS.DBMS_METADATA", line 4333
ORA-06512: at line 1
Run Code Online (Sandbox Code Playgroud)
如果我使用列出我的工作
select * from user_objects where object_type='JOB'
Run Code Online (Sandbox Code Playgroud)
它显示了SAMPLE_JOB(就像它显示了SAMPLE_VIEW,如果过滤了object_type ='VIEW').
为什么它适用于VIEW(以及TABLE,INDEX,TRIGGER,...)而不适用于JOB?
我正在使用Oracle 10g.
如果我使用clang编译以下简单程序(test.c)
#include <stdio.h>
typedef enum {
a,
b
} sample_enum_t;
int main() {
sample_enum_t sample_enum = -1;
if (sample_enum == -1) {
printf("Equals\n");
}
}
Run Code Online (Sandbox Code Playgroud)
编译给我警告:
$ clang -o test test.c
test.c:11:21: warning: comparison of constant -1 with expression of type 'sample_enum_t' is always false [-Wtautological-constant-out-of-range-compare]
if (sample_enum == -1) {
~~~~~~~~~~~ ^ ~~
1 warning generated.
Run Code Online (Sandbox Code Playgroud)
比较不总是错误的,这显然是不正确的,如果我执行程序,它将以“等于”打印:
$ ./test
Equals
Run Code Online (Sandbox Code Playgroud)
是叮当声还是我遗漏了一些东西?我确实知道,将-1分配给sample_enum变量不是一个好主意,但这是有效的行,因此clang不会因为该行而向我发出警告。
我正在使用clang 3.5.2
我想创建一个Oracle Package和两个函数:public function(function_public)和private one(function_private).public函数在sql语句中使用私有函数.
没有编译指示代码不编译(PLS-00231: function 'FUNCTION_PRIVATE' may not be used in SQL)
CREATE OR REPLACE PACKAGE PRAGMA_TEST AS
FUNCTION function_public(x IN VARCHAR2) RETURN VARCHAR2;
END PRAGMA_TEST;
CREATE OR REPLACE PACKAGE BODY PRAGMA_TEST AS
FUNCTION function_private(y IN VARCHAR2) RETURN VARCHAR2 IS
BEGIN
return 'z';
END;
FUNCTION function_public(x IN VARCHAR2) RETURN VARCHAR2 IS
ret VARCHAR2(100);
BEGIN
SELECT 'x' || function_private(x) INTO ret FROM dual;
return ret;
END;
END PRAGMA_TEST;
Run Code Online (Sandbox Code Playgroud)
如果我添加WNDS, WNPSpragma,代码将编译function_private.在我看来,pragma只能在包声明中使用,而不能在包体中使用,所以我必须 …
java ×6
oracle ×3
html ×2
blob ×1
c ×1
clang ×1
clob ×1
constructor ×1
css ×1
events ×1
gif ×1
image ×1
inheritance ×1
java-io ×1
jdbc ×1
jdk1.5 ×1
jobs ×1
jpeg ×1
jsp ×1
linux ×1
listener ×1
netbeans ×1
netbeans-6.9 ×1
ora-06512 ×1
oracle10g ×1
package ×1
plsql ×1
pragma ×1
reporting ×1
this ×1
transparency ×1