小编Pet*_*zki的帖子

Java catch块,捕获异常不是最终的

我正在查看Java SE7的新功能,目前我正在这里:

http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html

关于catch多功能,当我遇到这个声明时:

注意:如果catch块处理多个异常类型,则catch参数隐式为final.在此示例中,catch参数ex是final,因此您无法在catch块中为其分配任何值.

我从未注意到在处理捕获的异常的经典案例中,捕获的异常不是最终的.

我只是想知道为什么这首先是一件好事?在我猜想重新抛出它或者记录它的消息之前,对于一个被捕获的异常进行必要的修改是不是不明智?是否应该由创建异常的trowing机制来完成它应该代表什么呢?

我从来没有看到在catch块中修改异常可能有人指出它的好处?

谢谢!

java exception try-catch

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

JSF性能限制

我有一个不寻常的问题,我知道这是一个非常有争议的问题,但它来了.

我过去开发了一些JSF应用程序,但这些都限制了可以服务的用户数量5-6.这部分是因为基于许可证的政策.我用20多个用户和Selenium进行了一些测试,应用程序进展得很慢.问题可能源于服务器的性能,但我仍然不禁要问下面这个问题:

JSF应用程序可以支持大量用户吗?我敢打赌,框架应该允许它,但是我想不出任何使用JSF的商业网站,并且一次可以支持数千个用户.(如果你能告诉我一些会很棒!)

我问这个,因为我被要求开发一个更大的系统,我很乐意使用JSF,因为我非常喜欢它,但是最近的性能测试让我产生怀疑.首席程序员说这只是服务器机器的性能问题,但在这种情况下,什么样的机器可以支持同时登录的数千名用户?首席程序员并不是最好的,这就是为什么我想听听SOF的第二意见,如果你不介意的话.

如果有任何更适合极端使用的框架,请让我知道它是哪一个,我唯一真正的限制是它应该是基于服务器端的Java.

我再次为这个无意义的问题道歉.

java performance jsf jsf-2

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

Java ogg转wav

我有以下代码片段:

File file = new File(sourceFile);
AudioInputStream in = AudioSystem.getAudioInputStream(file);
AudioInputStream din = null;
AudioFormat baseFormat = in.getFormat();

AudioFormat decodedFormat = new AudioFormat(
                AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(),
                16, baseFormat.getChannels(), baseFormat.getChannels() * 2,
                baseFormat.getSampleRate(), false);

din = AudioSystem.getAudioInputStream(decodedFormat, in);
AudioSystem.write(din, AudioFileFormat.Type.WAVE, new File(targetFile));
Run Code Online (Sandbox Code Playgroud)

我编写了这段代码,用于将MP3和OGG文件转换为WAV文件.据我所知,java默认不支持这些格式,所以我必须在我的类路径中添加不同的jar,如下所述:

http://www.javazoom.net/mp3spi/documents.html

http://www.javazoom.net/vorbisspi/documents.html

当我转换MP3文件时,代码运行正常.但是当我尝试转换OGG文件时,我收到以下错误:

java.lang.IllegalArgumentException: Unsupported conversion: PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian from VORBISENC 44100.0 Hz, unknown bits per sample, stereo, 1 bytes/frame, 16000.0 frames/second
Run Code Online (Sandbox Code Playgroud)

现在只有在获取解码后的输入流时才抛出此值,这意味着ogg文件已成功解析.

AudioSystem.getTargetEncodings(sourceFormat)
Run Code Online (Sandbox Code Playgroud)

在处理MP3或OGG文件时,上面的代码不会返回任何值.唯一的区别是MP3工作正常.

我添加了ogg转换所需的前一个链接引用的所有jar,除了最新版本的jogg-0.0.7.jar,因为我找不到它.

我尝试了不同的解决方案,比如JAVE,但我需要它在MAC上运行,如果没有一些特殊的实现,JAVE将不会在MAC上运行.

有没有人有任何可能导致问题的建议?可能有任何解决方法将OGG文件转换为WAV?

编辑:

哇我意识到问题所在......在阅读完手册之后,我了解到使用两种不同类型的SPI(比如MP3和OGG)可能会导致问题.我删除了MP3 spi maven依赖,错误消失了.认为结果wav基本上是空的.有什么建议吗?如果我能让OGG进行WAV转换工作,我会很高兴,我可以用另一种方式转换MP3.

我的pom依赖关系看起来像这样: …

java audio wav javasound ogg

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

修复html中的未关闭标记或使用HTML解析器解析XSLT转换

我有一些HTML代码是XSLT转换的结果.(XML-> HTML)

我想在结果HTML上运行另一个XSLT转换.(HTML-> HTML)

我的问题是第一个转换可能会返回像" <img>" 这样的未闭合标签,这意味着我无法使用DocumentBuilder解析结果html,因为它使用SAXparser,当然我的html文件在所有情况下都不是有效的xml.(我得到一个例外,即必须关闭以下XY标签.)

我猜有两种解决方案.

  1. 通过关闭未关闭的标记来修复结果HTML.

  2. 使用某种HTML解析器来获取有效的org.w3c.dom.Document并跳过像SAX这样的XML解析器.

我真的很想使用我用于第一次转换的相同方法,所以我更喜欢上面问题的一个解决方案是我找不到任何可以提供帮助的明显的第三方罐子.(虽然我看了.)所以基本上我想知道我的选择是什么,这个问题有什么解决方案吗?

任何帮助将不胜感激.

html java tags xslt parsing

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

Java AES密文文本大小

我正在使用一种非常标准的Java AES加密/解密方式.

byte[] key = hexStringToByteArray("C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF");

byte[] message = hexStringToByteArray("01A0A1A2A3A4A5A6A703020100060001");

SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");

// Instantiate the cipher
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);

byte[] encrypted = cipher.doFinal(message);

cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] original = cipher.doFinal(encrypted);
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用的是128位密钥和128位消息.我总是得到我期望的结果,但加密结果总是256位长.第二个128位始终相同.截断结果除外,如何确保密码只返回前128位,而不更改前128位?我觉得我有点混淆块大小的定义.

java encryption cryptography block aes

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

Liferay 7 共享会话属性

我正在尝试使用 Liferay 共享会话属性。

我想使用以下代码在不同 URL 上的不同 WAR 文件中的两个不同 portlet 上使用相同的属性:

Liferay 7 无法设置全局会话属性

我想保存的值:单个字符串

在 portlet 1 中设置:

String sharedKey = "LIFERAY_SHARED_" + key;
HttpSession session = PortalSessionThreadLocal.getHttpSession();
session.setAttribute(sharedKey, bean);
Run Code Online (Sandbox Code Playgroud)

Portlet 1 能够很好地保留、重置和使用属性。

在 portlet 2 中读取:

key = "LIFERAY_SHARED_" + key;
HttpSession session = PortalSessionThreadLocal.getHttpSession();
Object bean = session.getAttribute(key);
Run Code Online (Sandbox Code Playgroud)

该值始终为空。

这两个 portlet 都是 Spring MVC portlet。

两个 portlet 都具有:

<instanceable>false</instanceable>
<private-session-attributes>false</private-session-attributes>
<requires-namespaced-parameters>false</requires-namespaced-parameters>
Run Code Online (Sandbox Code Playgroud)

在他们的 liferay portlet XML-s 中。

此外,这两个 portlet 都扩展了 org.springframework.web.portlet.DispatcherPortlet。

Liferay版本:

Liferay DXP 数字企业版 7.0.10 GA1

任何帮助将不胜感激。如果有人需要任何澄清,请告诉我。

非常感谢,彼得

java tomcat liferay

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

XSLT从DTD获取属性的类型

给定文档DTD中的有效条目:

<!ATTLIST name
               id  CDATA    #IMPLIED 
               attribute  ENTITY    #IMPLIED  >
Run Code Online (Sandbox Code Playgroud)

在给定属性名称和节点的情况下,如何在xslt转换期间获取属性的类型?

例如name/@ id ='CDATA'

和name/@ attribute ='ENTITY'

提前致谢!

xslt attributes dtd types element

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

Java原始声明

给出以下代码段:

int i = 0;

int y = + ++i;

System.out.println(y);
Run Code Online (Sandbox Code Playgroud)

结果是1.为什么这是一个有效的声明?谁能解释什么是= +?

java syntax primitive declaration operators

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