我有3个jar文件和依赖于这些jar文件的.java文件。 如何使用命令提示符编译带有这些jar文件的.java文件?
在Java中检查URL是否有效的最佳方法是什么? 如果试图调用new URL(urlString)并获取一个MalformedURLException ,但似乎对以http://开头的任何事情感到满意。 我不关心build立连接,只是有效性。 有没有这样的方法? Hibernate Validator中的注释? 我应该使用正则expression式吗? 编辑:接受的URL的一些例子是http://***和http://my favorite site! 。
我有一个web应用程序,我正在做一些负载/性能testing,特别是一个function,我们期望有几百个用户访问同一个页面,每10秒刷新一次。 我们发现使用这个函数可以改进的一个方面是caching来自Web服务一段时间的响应,因为数据没有变化。 在实现了这个基本的caching之后,在一些进一步的testing中,我发现我没有考虑到并发线程如何能够同时访问Cache。 我发现,在大约100ms的时间内,大约有50个线程试图从Cache中获取对象,发现它已经过期,敲击Web服务来获取数据,然后将对象放回到caching中。 原来的代码看起来像这样: private SomeData[] getSomeDataByEmail(WebServiceInterface service, String email) { final String key = "Data-" + email; SomeData[] data = (SomeData[]) StaticCache.get(key); if (data == null) { data = service.getSomeDataForEmail(email); StaticCache.set(key, data, CACHE_TIME); } else { logger.debug("getSomeDataForEmail: using cached object"); } return data; } 所以,为了确保只有一个线程在key对象过期时调用Web服务,我想我需要同步Cache的get / set操作,而且好像使用caching密钥将是一个很好的候选对象(通过这种方式,对电子邮件b@b.com的调用不会被对a@a.com的方法调用阻止)。 我更新了这个方法: private SomeData[] getSomeDataByEmail(WebServiceInterface service, String […]
我想读一个JSON数组。 这是我的代码。 JSONArray jArray = new JSONArray(jsonString); System.out.println("*****JARRAY*****"+jArray.length()); for(int i=0;i<jArray.length();i++){ JSONObject json_data = jArray.getJSONObject(i); Log.i("log_tag","_id"+json_data.getInt("account")+ ", mall_name"+json_data.getString("name")+ ", location"+json_data.getString("number")+ ", telephone"+json_data.getString("url")+ ",—-"+json_data.getString("balance")+ ",—-"+json_data.getString("credit")+ ",—-"+json_data.getString("displayName") ); } 而我的示例JSON文件的语法如下, { "list": [ { "account": 1, "name": "card", "number": "xxxxx xxxx xxxx 2002", "url": "http://www.google.com", "balance": 1.0, "credit": 1.0, "displayName": "hsbc bank" }, { "account": 2, "name": "card2", […]
我一直在寻找net和stackoverflow的例子,有人使用servletfilter将内容插入到响应中,但只能find捕获/压缩输出和/或更改标头的人员的示例。 我的目标是在所有HTML响应的结束</ body>之前附加一大块HTML。 我正在开发一个解决scheme,扩展HttpServletResponseWrapper使用我自己的PrintWriter,然后覆盖其上的写入方法。 在写入方法中,我存储了最后7个字符,看它是否与closures主体标记相同,然后写入我的HTML块和closures主体标记,然后继续执行文档其余部分的正常写入操作。 我觉得有人已经解决了这个问题,可能比我更优雅。 我将不胜感激任何如何使用servletfilter插入内容到响应的例子。 更新 回应评论,我也试图从http://www.oracle.com/technetwork/java/filters-137243.html实施CharResponseWrapper。 这是我的代码: PrintWriter out = response.getWriter(); CharResponseWrapper wrappedResponse = new CharResponseWrapper( (HttpServletResponse)response); chain.doFilter(wrappedRequest, wrappedResponse); String s = wrappedResponse.toString(); if (wrappedResponse.getContentType().equals("text/html") && StringUtils.isNotBlank(s)) { CharArrayWriter caw = new CharArrayWriter(); caw.write(s.substring(0, s.indexOf("</body>") – 1)); caw.write("WTF</body></html>"); response.setContentLength(caw.toString().length()); out.write(caw.toString()); } else { out.write(wrappedResponse.toString()); } out.close(); 我也在包装这个请求,但是这个代码起作用,不应该影响响应。
我试图尽可能简化我的困境。 我有三个类: Α: public class Alpha { public void DoSomethingAlpha() { cbeta.DoSomethingBeta() //? } } Beta版: public class Beta { public void DoSomethingBeta() { // Something } } 主要: public class MainApp { public static void main(String[] args) { Alpha cAlpha = new Alpha(); Beta cBeta = new Beta(); } } 我希望我没有过分简化它。 我的问题是如何从Alpha中的方法访问cBeta.DoSomethingBeta()?
我需要Java代码来编码的URL,以避免特殊字符,如空格和%和…等
这是我的问题:我有一个对话框,用户可以改变一些参数(例如通过微调)。 每当这些参数中的一个发生变化时,我将启动一个线程根据新的参数值更新3D视图。 如果用户在第一个线程工作的时候改变了另外一个值(或者在微调箭头上多次点击了相同的值),我想中止第一个线程(和3D视图的更新)并启动一个新的线程用最新的参数值。 我怎么能这样做? PS:在我的线程的run()方法中没有循环,因此检查一个标记不是一个选项:更新3D视图的线程基本上只调用一个很长的方法来执行。 我不能添加任何标志在这个方法要求中止,因为我没有访问其代码。
请参阅下面的简单示例,其中列出了每个单词的出现次数: Stream<String> words = Stream.of("a", "b", "a", "c"); Map<String, Integer> wordsCount = words.collect(toMap(s -> s, s -> 1, (i, j) -> i + j)); 最后, wordsCount是{a=2, b=1, c=1} 。 但是我的stream量非常大,我想平行工作,所以我写道: Map<String, Integer> wordsCount = words.parallel() .collect(toMap(s -> s, s -> 1, (i, j) -> i + j)); 不过,我注意到wordsCount是一个简单的HashMap所以我不知道是否需要明确要求一个并发映射来确保线程安全: Map<String, Integer> wordsCount = words.parallel() .collect(toConcurrentMap(s -> […]
在Java中,try {…} finally {…}对我来说有点不直观。 如另一个问题所示, 最终总是在Java中执行? ,如果在try块中有return语句,那么如果定义了finally块,它将被忽略。 例如,function boolean test () { try { return true; } finally { return false; } } 将永远返回假。 我的问题:这是为什么? Java的这个devise决策背后有一个特定的哲学吗? 感谢任何见解,谢谢。 编辑:我特别感兴趣的是为什么Java认为可以违反我定义的语义。 如果我在一个try块中返回,那么这个方法应该会在那里返回。 但JVM决定忽略我的指令,并从实际上尚未达到的子程序返回。