我想在我的java应用程序中找到内存泄漏,但我不知道如何使用Netbeans profiler来做到这一点.
我正在阅读Sun关于并发的教程.
但我无法准确理解内存一致性错误是什么?我搜索了一下,但没有找到任何有用的教程或文章.
我知道这个问题是主观的,所以你可以给我链接到上述主题的文章.
如果你用一个简单的例子解释它会很棒.
我想使用一个集合来代替2D数组,这样我就不需要在声明时给出它的大小,我可以动态地添加任意数量的元素.
是否有一个Logger可以轻松记录我的堆栈跟踪(我得到了什么
ex.printStackTrace())?我搜索了log4j文档,发现没有关于记录堆栈跟踪的信息.
我可以自己做
StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw));
String stacktrace = sw.toString();
logger.error(stacktrace);
Run Code Online (Sandbox Code Playgroud)
但我不想在整个地方复制这些代码.
如果log4j不会为我执行此操作,是否有另一个日志包将为我记录堆栈跟踪?
谢谢.
我想要一个Eclipse Java EE插件,我可以直接从Eclipse安装.
我在Google上搜索过它并发现了一些,但无法弄清楚如何直接从Eclipse下载它们.
我找到的一个插件是WTP,但找不到我可以在Eclipse的软件更新工具中输入的WTP存储库的位置.
我正在使用Eclipse 3.4.2(Ganymede)
我想从受热链接保护的其他网站下载图像.我不想将这些图片链接到我的网站.我只是想下载它们.
我有一个Image的字节数组表示.如何将其作为图像文件保存在磁盘上.
我已经这样做了
OutputStream out = new FileOutputStream("a.jpg");
out.write(byteArray);
out.flush();
out.close();
Run Code Online (Sandbox Code Playgroud)
但是当我通过双击打开图像时,它不会显示任何图像.
我开发了一个Java EE Web应用程序.该应用程序允许用户在浏览器的帮助下上传文件.一旦用户上传了他的文件,该应用程序首先将上载的文件存储在服务器上(运行它),然后对其进行处理.
目前,我将文件存储在服务器上,如下所示:
try {
// formFile represents the uploaded file
FormFile formFile = programForm.getTheFile();
String path = getServlet().getServletContext().getRealPath("") + "/"
+ formFile.getFileName();
System.out.println(path);
file = new File(path);
outputStream = new FileOutputStream(file);
outputStream.write(formFile.getFileData());
}
Run Code Online (Sandbox Code Playgroud)
其中,formFile代表上传的文件.
现在,问题是它在某些服务器上正常运行但在某些服务器上getServlet().getServletContext().getRealPath("")正在返回,null因此我得到的最终路径是null/filename文件不存储在服务器上.
当我检查API ServletContext.getRealPath()方法时,我发现了以下内容:
public java.lang.String getRealPath(java.lang.String path)返回包含给定虚拟路径的实际路径的String.例如,路径
"/index.html"返回服务器文件系统上的绝对文件路径将由请求提供服务"http://host/contextPath/index.html",其中contextPath是此ServletContext的上下文路径.返回的实际路径将采用适合运行servlet容器的计算机和操作系统的形式,包括正确的路径分隔符.如果servlet容器由于任何原因(例如,当从.war存档提供内容时)无法将虚拟路径转换为实际路径,则此方法返回null.
那么,有没有其他方法可以将文件存储在那些正在返回的服务器null上getServlet().getServletContext().getRealPath("")
我正在开发一个java Web应用程序,其中包括一个applet.该applet依赖于两个jar文件:
- JFreeChart(用于在客户端绘制图形) - 1.7 MB(jar文件的大小)
- MySqlJdbcConnector(用于存储在客户端捕获的数据到远程数据库) - .7 mb(jar文件的大小)
现在,问题是上面两个jar文件的大小.我的applet jar (myApplet.jar)的总大小是2.5 MB,其中2.4 MB是因为上面两个jar文件.
我没有使用那些jar文件中的所有类.具体来说,对于 jfreechart,我使用的是来自该库的极少数类.
============================== 问题 =================== ===================
Q1.为了创建myApplet.jar文件,我所做的是解压缩了两个jar文件(jfreechart和mySQLJdbcConnector),然后使用我的applet代码的源代码打包解压缩版本的jar文件,以创建一个jar文件(即myApplet.jar).这是用你的applet代码打包第三方jar文件的正确方法吗?有什么方法可以优化这个吗?
Q2.我试图找到我在我的应用程序中使用的jfreechart库类的依赖项,以便只在myApplet.jar中打包这些依赖项.为此,我使用DependencyAnalyzer查找所有类的依赖项.但后来我发现很难手动这样做,因为每个类(我在我的应用程序中使用的jfreechart类)都有很多依赖项,而且我使用了15个类的jfreechart,因此为每个类执行此操作将非常困难.那有什么建议吗?
Q3.这种情况是非常普遍的开发人员遇到或我遗失的东西,因为我必须这样做?
我们的java程序不断地将一些重要数据写入文件.现在我们想要在某些用户手动删除文件(java程序正在编写的文件)时抛出一些异常或在控制台上显示某种错误消息.
我发现java在尝试写入已删除的文件时不会抛出任何异常.
方法I -启动一个新线程,该线程将继续检查文件是否存在,并在删除文件时通知主java程序.这在我们的情况下不起作用,因为我们将有几个java程序将要编写的文件,因此为每个文件启动一个新线程将不具有内存效率.
方法II -每次在写入文件之前检查文件是否存在.这也不是一个好方法,因为检查文件存在是一个更昂贵的操作.
方法III -扩展java.io.FilterWriter(我们用来写入文件)并覆盖write()方法,以便在尝试写入已删除的文件时抛出异常.这似乎是一个很好的解决方案,但我找不到任何地方Java正在消化一些异常(当它试图写入已被删除的文件时),我们可以通过覆盖该方法抛出.
java ×9
image ×2
io ×2
java-ee ×2
bytearray ×1
collections ×1
dependencies ×1
eclipse ×1
file-storage ×1
filewriter ×1
hotlinking ×1
jar ×1
logging ×1
netbeans ×1
plugins ×1
profiler ×1
servlets ×1
tomcat ×1
writer ×1