优化图像 – 用Java无损压缩图像

拥有一个电子商务网站,我们有数以千计的产品图片。 在google上检查pagespeed时它会显示如下: 我想知道,如果Java中有任何内置function或任何第三方库可用,我们可以无损压缩我们托管的所有图像。 因此,我们可以节省几KB的客户。 通过互联网搜索我发现很少像punnypng和kraken付费,因此我们没有每月上传重型图像,订阅它们是不值得的。 我更喜欢Java或任何开源第三方库中的任何内置function。 我遇到了JAI ,但不确定它是否解决了这个问题。 有实际操作经验的人吗? PS我们正在使用Java 8

计算Word文档中的页面

我正在尝试使用java计算word文档中的页面。 这是我的实际代码,我正在使用Apache POI库 String path1 = “E:/iugkh”; File f = new File(path1); File[] files = f.listFiles(); int pagesCount = 0; for (int i = 0; i < files.length; i++) { POIFSFileSystem fis = new POIFSFileSystem(new FileInputStream(files[i])); HWPFDocument wdDoc = new HWPFDocument(fis); int pagesNo = wdDoc.getSummaryInformation().getPageCount(); pagesCount += pagesNo; System.out.println(files[i].getName()+":\t"+pagesNo); } 输出是: ten.doc: 1 twelve.doc: 1 […]

正确使用Apache HttpClient以及何时关闭它。

我在servlet中使用HttpClient来调用一些资源,我在一些操作后作为servlets响应返回。 我的HttpClient使用PoolingHttpClientConnectionManager。 我像这样创建客户端: private CloseableHttpClient getConfiguredHttpClient(){ return HttpClientBuilder .create() .setDefaultRequestConfig(config) .setConnectionReuseStrategy(NoConnectionReuseStrategy.INSTANCE) .setConnectionManagerShared(true) .setConnectionManager(connManager) .build(); } 我在servlets服务方法中的Try With Resource中使用此客户端,因此它是自动关闭的。 要停止关闭连接管理器,我将setConnectionManagerShared设置为true。 我见过其他代码示例没有关闭HttpClient。 我不应该关闭这个资源吗? 谢谢

在退出之前恢复中断的不可取消任务

我正在阅读一些java线程中断,我不明白一些东西。 希望有人能解释我。 所以,它完成了以下代码 public Integer getInteger(BlockingQueue queue) { boolean interrupted = false; try { while (true) { try { return queue.take(); } catch (InterruptedException e) { interrupted = true; // fall through and retry } } } finally { if (interrupted) Thread.currentThread().interrupt(); } } 解释如下: 不支持取消但仍调用可中断阻塞方法的活动必须在循环中调用它们,并在检测到中断时重试。 在这种情况下,他们应该在本地保存中断状态,并在返回之前恢复它,如清单所示。 而不是立即捕获InterruptedException。 过早设置中断状态可能会导致无限循环,因为大多数可中断阻塞方法会在进入时检查中断状态,并在设置时立即抛出InterruptedException。 (可中断方法通常在阻止或执行任何重要工作之前轮询中断,以便尽可能地响应中断。) 我不明白为什么我们应该在本地保存中断状态。 我很高兴听到一些解释。

Google应用引擎上的部署失败

我有一个java应用程序(spring mvc,jpa),我正在尝试在谷歌应用程序引擎上部署它。 出于某种原因,部署完成后我收到以下错误 …………………… 20%扫描本地磁盘上的文件。 25%启动更新。 错误详细信息:2011年2月26日上午10:43:58 org.apache.jasper.JspC processFile INFO:Built File:\ about.jsp Feb 26,2011 10:45:41 AM org.apache.jasper.JspC processFile INFO:建立文件:\ faq.jsp 2011年2月26日上午10:47:23 org.apache.jasper.JspC processFile INFO:Built File:\ footer.jsp Feb 26,2011 10:49:05 am org.apache.jasper。 JspC processFile INFO:Built File:\ synchronize.jsp java.io.IOException:发布到URL时出错: https : //appengine.google.com/api/appversion/create?app_id=subsconvertor&version=0.1& 500内部服务器错误 服务器错误(500)发生服务器错误。 有关详细信息,请参阅日志[C:\ Users \ CRISTI~1.POP \ AppData \ Local \ Temp \ appcfg6738798550184437418.log]。 在日志中我有: […]

如何懒惰地在Spring应用程序中加载LDAP配置。

我有application-context.xml,它有如下所示的bean。 和一个context.xml一样 ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++ 如果您在我的context.xml中注意到我将资源名称保留为DB_NAME1 我还在application-context.xml文件顶部的beans标记中保留了default-lazy-init =“true” 。 我仍然低于错误 javax.naming.NameNotFoundException: Name [DB_NAME] is not bound in this Context. Unable to find [DB_NAME]. 所以我的问题是,如何懒洋洋地加载我的jdbcTemplate / dataSource。 因为在我的应用程序中,一些服务正在攻击数据库,而一些服务正在攻击其他服务。 因此,即使数据库已关闭,其他服务也不应停止工作。

没有合适的司机。 尝试使用Hibernate连接到Heroku上的postgresql数据库

很抱歉打扰你,但我一直收到错误,我真的不明白为什么。 正如标题中所指定的,我正在尝试使用hibernate在运行heroku的postgresql数据库上进行连接。 我的应用程序也在Heroku上运行。 它在本地模式下工作,我尝试了几个postgre驱动程序。 这是我的hibernate.cfg.xml: jdbc:postgresql://paafeblgkhhbkx:PhZEtHl2RHwbWDQJJOurmej89-@ec2-54-243-243-252.compute-1.amazonaws.com:5432/d1vsgjgnfr1koq paafeblgkhhbk My password org.postgresql.Driver org.hibernate.dialect.PostgreSQLDialect org.hibernate.cache.internal.NoCacheProvider true create 我收到会话时会覆盖url,密码和用户名: Configuration configuration = new Configuration(); configuration.addAnnotatedClass(Client.class); // and other classes try { Class.forName(“org.postgresql.Driver”); System.out.println(” === === DRIVER FOUND === === “); } catch (ClassNotFoundException e) { e.printStackTrace(); System.out.println(” === === DRIVER NOT FOUND === === “); } configuration.configure(); System.out.println(“============================= EXPORT […]

由于未解决的类型,ApiDemos 3.0 / 3.1将无法构建

我正在尝试为API级别11(3.0)和12(3.1)构建ApiDemos。 我已将最新版本的工具(版本11)和平台工具(版本4)更新到最新版本。 另外,我安装了兼容包。 当我尝试构建ApiDemos项目时,我收到了数千个错误,其中Eclipse显示以下100个错误: ActionBar cannot be resolved to a type ActionBarDisplayOptions.java /ApiDemos3.1/src/com/example/android/apis/app line 34 Java Problem ActionMode cannot be resolved to a type Grid3.java /ApiDemos3.1/src/com/example/android/apis/view line 133 Java Problem alertDialogIcon cannot be resolved or is not a field AlertDialogSamples.java /ApiDemos3.1/src/com/example/android/apis/app line 82 Java Problem animator cannot be resolved or is not a field FragmentHideShow.java […]

在不同的任务中启动新的Android Activity

这是一个令人费解的故事: 我有一个Activity A Activity A使用意图打开浏览器进行一些身份validation。 完成此操作后,网页将重定向到URL。 Activity B设置为具有BROWSABLE的意图filter,并且URL使得浏览器启动Activity B而不是打开网页。 因此, Activity B是开放的,但作为Chrome的“孩子”。 在最近的应用程序窗口中,我可以看到我原来的活动A,然后我可以看到Chrome下的Activity B 我在活动B中启动的任何活动似乎都是Chrome的孩子。 我已经尝试使用意图标志FLAG_ACTIVITY_NEW_TASK但这似乎没有改变任何东西。 我想从活动B中启动一个活动,该活动不会出现在Chrome下,而是在其自己的新任务下。 理想情况下,我想回到Activity A所处的任务,但如果不可能,那么新的就足够了。

在java中将大文件加载到arraylist的最佳方法

我有一个大小约300mb的文件。 我想逐行读取内容,然后将其添加到ArrayList中。 所以我创建了一个数组列表a1的对象,然后使用BufferedReader读取文件,之后当我将文件中的行添加到ArrayList中时,它在线程“main”中给出错误exceptionjava.lang.OutOfMemoryError:Java堆空间。 请告诉我这应该是什么解决方案。 public static void main(String[] args) { // TODO Auto-generated method stub try { FileReader file = new FileReader( “/home/dmdd/Desktop/AsiaData/RawData/AllupperairVcomponent.txt”); ArrayList a1 = new ArrayList(); BufferedReader br = new BufferedReader(file); String line = “”; while ((line = br.readLine()) != null) { a1.add(line); } } catch (Exception e) { // TODO: handle exception […]