Tag: java

在multithreading环境中使用HttpClient的最佳实践

有一段时间,我一直在multithreading环境中使用HttpClient。 对于每个线程,当它启动连接时,它将创build一个全新的HttpClient实例。 最近我发现用这种方法可能会导致用户打开太多的端口,大部分连接都处于TIME_WAIT状态。 http://www.opensubscriber.com/message/commons-httpclient-dev@jakarta.apache.org/86045.html 因此,而不是每个线程在做: HttpClient c = new HttpClient(); try { c.executeMethod(method); } catch(…) { } finally { method.releaseConnection(); } 我们计划有: [方法A] // global_c is initialized once through // HttpClient global_c = new HttpClient(new MultiThreadedHttpConnectionManager()); try { global_c.executeMethod(method); } catch(…) { } finally { method.releaseConnection(); } 在正常情况下,global_c将被50个++线程同时访问。 我想知道,这会造成任何性能问题吗? MultiThreadedHttpConnectionManager是否使用无锁机制来实现其线程安全策略? 如果10个线程正在使用global_c,其他40个线程是否会被locking? 或者,如果在每个线程中创build一个HttpClient实例,但明确释放连接pipe理器,会更好吗? [方法B] MultiThreadedHttpConnectionManager connman […]

用Java构buildSQLstring的最简单的方法

我想要构build一个SQLstring来执行数据库操作(更新,删除,插入,select,这样的事情) – 而不是糟糕的stringconcat方法使用数以百万计的“+”和引号,这是最难读的 – 那里一定是一个更好的方法。 我曾考虑使用MessageFormat – 但它应该用于用户消息,虽然我认为它会做一个合理的工作 – 但我想应该有更多的东西在java sql库中的SQLtypes的操作。 Groovy会有什么好处?

Android:使用XML为togglebutton指定两个不同的图像

我试图重写默认的ToggleButton外观。 这里是定义ToggleButton的XML: <ToggleButton android:id="@+id/FollowAndCenterButton" android:layout_width="30px" android:layout_height="30px" android:textOn="" android:textOff="" android:layout_alignParentLeft="true" android:layout_marginLeft="5px" android:layout_marginTop="5px" android:background="@drawable/locate_me"/> 现在,我们有两个30×30的图标,我们想用于点击/非点击状态。 现在我们有代码,根据状态编程改变背景图标: centeredOnLocation.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (centeredOnLocation.isChecked()) { centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me_on)); } else { centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me)); } } }); 很明显,我正在寻找一个更好的方法来做到这一点。 我试图做一个select器的背景图像,这将自动切换状态之间: <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/locate_me" /> <!– default –> <item android:state_checked="true" android:drawable="@drawable/locate_me_on" /> <!– pressed –> <item android:state_checked="false" android:drawable="@drawable/locate_me" /> <!– […]

如果…在JSP或JSTL内

我有一个开放式的问题.. 我想根据条件(桌面/ ipad)有一个HTML代码..说条件1 /条件2 我想要为这些条件中的每一个单独的HTML片段… if (Condition 1) Some HTML code for con1 else if (Condition 2) Some HTML code for con2 我想testing的条件(在JS中)是; var isiPad = navigator.userAgent.match(/iPad/i) != null; if (isiPad) {} else {} 现在这个必须在.jsp页面中实现… 那我该怎么做? 我应该使用JSTL吗? 什么是最好的方法? 最主要的是,只有相应的代码才能被加载/渲染,例如,如果条件1为真,条件2中的HTML代码根本不应该被执行(除了被隐藏在浏览器中)

如何使用ConcurrentLinkedQueue?

如何在Java中使用ConcurrentLinkedQueue ? 使用这个LinkedQueue ,我需要担心队列中的并发吗? 或者我只需要定义两个方法(一个从列表中检索元素,另一个向列表中添加元素)? 注意:显然这两个方法必须同步。 对? 编辑:我想要做的是这样的:我有一个类(在Java中)与一种方法来检索项目从队列和另一个类用一种方法添加项目到队列。 从列表中添加和检索的项目是我自己class级的对象。 还有一个问题:我需要在删除方法中执行此操作: while (queue.size() == 0){ wait(); queue.poll(); } 我只有一个消费者和一个生产者。

Collections.emptyList()与新的实例

在实践中,最好是返回一个像这样的空列表: return Collections.emptyList(); 或者像这样 : return new ArrayList<Foo>(); 或者这是完全依赖于你将要做什么与返回列表?

debuggingjdk源码不能监视variables是什么

我正在debuggingJDK源代码,如: public static int codePointAt(CharSequence seq, int index) { char c1 = seq.charAt(index++); if (isHighSurrogate(c1)) { if (index < seq.length()) { char c2 = seq.charAt(index); if (isLowSurrogate(c2)) { return toCodePoint(c1, c2); } } } return c1; } 我想在看到c1variablesif (isHighSurrogate(c1))之前进入variables。 但是,当我debugging手表c1variables时,它显示: 我真的已经尝试添加rt.jar源代码,它真的可以进入JDK源的断点,如: 但是为什么c1variables不能显示?

在try-with-resources块中pipe理多个链接资源的正确习惯用法?

Java 7 try-with-resources语法(也称为ARM块( 自动资源pipe理 ))在使用一个AutoCloseable资源时很好,简单明了。 然而,我不确定什么是正确的习惯用法,当我需要声明多个相互依赖的资源,例如一个FileWriter和一个BufferedWriter包装它。 当然,这个问题涉及到一些AutoCloseable资源被封装的情况,不仅仅是这两个特定的类。 我提出了以下三个备选scheme: 1) 我见过的天真的习惯用法是只声明ARMpipe理的variables中的顶层包装: static void printToFile1(String text, File file) { try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) { bw.write(text); } catch (IOException ex) { // handle ex } } 这很好,很短,但是坏了。 因为底层的FileWriter没有在variables中声明,它永远不会直接在生成的finally块中closures。 它只会通过包装BufferedWriter的close方法来closures。 问题是,如果从bw的构造函数抛出exception,它将不会被调用,因此底层的FileWriter 将不会被closures 。 2) static void printToFile2(String text, File file) { try (FileWriter fw = new […]

generics返回types的上界 – 接口与类 – 令人惊讶的有效的代码

这是来自第三方库API的真实示例,但简化了。 用Oracle JDK 8u72编译 考虑这两种方法: <X extends CharSequence> X getCharSequence() { return (X) "hello"; } <X extends String> X getString() { return (X) "hello"; } 两人都报告“未经检查的演员”的警告 – 我明白了为什么。 让我感到困惑的是为什么我可以打电话 Integer x = getCharSequence(); 它编译? 编译器应该知道Integer没有实现CharSequence 。 打电话给 Integer y = getString(); 给出一个错误(如预期) incompatible types: inference variable X has incompatible upper bounds java.lang.Integer,java.lang.String 有人可以解释为什么这种行为被认为是有效的? 它将如何有用? 客户端不知道这个调用是不安全的 […]

@Mock和@InjectMocks之间的区别

@Mock和@InjectMocks在Mockito框架中有什么区别?