常量实用程序类中的最终关键字

在使用具有常量实用程序类的final关键字时,我们可以获得性能和/或任何其他好处的任何差异。 [此类仅包含静态最终字段和私有构造函数以避免对象创建] public class ActionConstants { private ActionConstants() // Prevents instantiation { } public static final String VALIDFIRSTLASTNAME = “[A-Za-z0-9.\\s]+”; public static final String VALIDPHONENUMBER = “\\d{10}”; … … } 只有差异才是最终的阶级 public final class ActionConstants { private ActionConstants() // Prevents instantiation { } public static final String VALIDFIRSTLASTNAME = “[A-Za-z0-9.\\s]+”; public static final String VALIDPHONENUMBER […]

在Java 8中懒惰地返回第一个非空列表

我有N个列表从存储库返回数据。 我想返回这三个列表中的第一个非空(每个列表执行不同的SQL来获取数据)。 问题是我想懒得这样做,所以如果我已经找到了可接受的结果,我就不需要在数据库上执行SQL。 我的代码是(修改过的) @Override public List dataService(Data data) { return firstNonEmptyList(repository.getDataWayOne(data.getParameter()), repository.getDataWayTwo(data.getParameter()), repository.getDataWayThree(data.getParameter().getAcessoryParameter()) Collections.singletonList(repository.getDefaultData(data.getParameter())); } @SafeVarargs private final List firstNonEmptyList(List… lists) { for (List list : lists) { if (!list.isEmpty()) { return list; } } return null; } 这有效,但它不是懒惰的。 有任何想法吗?

使用javamail API阅读邮件时的阿拉伯语内容问题

我正在使用Javamail API从Gmail服务器读取邮件。 我正在发送一封包含gmail id阿拉伯语内容的邮件到另一个Gmail ID。 邮件的Charset编码类型是windows-1256。 当我使用Javamail下载邮件时,我收到的内容是“??????” 格式而不是阿拉伯字符。 我将下载的内容转换为UTF-8格式,但仍未获得正确的显示。 提前致谢, 蒂姆 更新: 我使用以下代码来获取内容: Object content = message.getContent(); if (message.isMimeType(“text/html”) || message.isMimeType(“text/plain”)) { Al = (String) content; } 下载内容后,以下代码用于UTF-8编码: byte[] utf8Bytes = s.getBytes(“UTF-8”); s = new String(utf8Bytes, “UTF-8”); 更新:我目前用于阅读邮件内容的完整代码 String gmailMultipartMailDownload(Multipart multipart, String Uids) throws SocketException, UnsupportedDataTypeException, UnsupportedEncodingException { String Content = new String(“”); try { […]

Maven:在一个阶段运行插件两次,与另一个插件交错

对于我们的end-2-end测试,我们需要执行以下逻辑流程: 在数据库中创建和设置e2e模式(用户)( pre-integration-test ) 运行Liquibase以初始填充模式( pre-integration-test ) 将e2e特定的测试数据添加到数据库表( pre-integration-test ) 启动Tomcat( pre-integration-test ) 使用Protractor在Tomcat( integration-test )中运行Web应用程序 关闭Tomcat( post-integration-test ) 清理数据库:删除架构( post-integration-test ) 对于运行SQL,使用sql-maven-plugin ,但是此流程不适合常规POM布局: SQL插件必须在liquibase-maven-plugin 之前和之后两次pre-integration-test期间运行 SQL插件必须在pre-integration-test期间在 Tomcat插件之前运行,但是必须在post-integration-test期间运行,以便在Tomcat关闭后删除数据库模式。 据我所知,从Maven文档中可以看出,POM中插件的顺序定义了同一阶段的执行顺序,并且插件在同一个POM中不能被提及两次。 问题 :除了编写一个多次调用Maven的shell脚本之外,有没有办法实现这个目的? PS发现了一个类似的悬而未决的问题 。

将字节数组转换为字符串然后再转换回字节数组时,为什么长度不同?

我有以下Java代码: byte[] signatureBytes = getSignature(); String signatureString = new String(signatureBytes, “UTF8”); byte[] signatureStringBytes = signatureString.getBytes(“UTF8”); System.out.println(signatureBytes.length == signatureStringBytes.length); // prints false 问:我可能误解了这一点,但我认为new String(byte[] bytes, String charset)和String.getBytes(charset)是反向操作? 问:作为后续工作,将byte []数组作为String传输的安全方法是什么?

从Google App Engine发送请求

我正在开发一个应该在Google应用引擎上部署的播放网络应用程序。 我正在尝试向另一台服务器发送请求,而不是处理响应。 在我的本地主机上,它运行得很好但是当我在GAE上测试它时遇到了困难。 代码如下: import com.google.appengine.repackaged.org.apache.http.HttpResponse; import com.google.appengine.repackaged.org.apache.http.client.methods.HttpGet; import com.google.appengine.repackaged.org.apache.http.conn.scheme.PlainSocketFactory; import com.google.appengine.repackaged.org.apache.http.conn.scheme.Scheme; import com.google.appengine.repackaged.org.apache.http.conn.scheme.SchemeRegistry; import com.google.appengine.repackaged.org.apache.http.impl.client.DefaultHttpClient; import com.google.appengine.repackaged.org.apache.http.impl.conn.SingleClientConnManager; import com.google.appengine.repackaged.org.apache.http.params.BasicHttpParams; public class Getter{ public static byte[] getStuff(){ String urlString = “http://example.com/item?param=xy”; SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme(“http”, PlainSocketFactory.getSocketFactory(), 80)); BasicHttpParams params = new BasicHttpParams(); SingleClientConnManager connmgr = new SingleClientConnManager(params, schemeRegistry); DefaultHttpClient client = new […]

使用箭头键浏览JButtons

我制作了一个代表卡片的JButtonarrays,其中有16个,4个4个。如何用键盘上的箭头而不是鼠标在JButton浏览,如何通过按下“点击” JButton输入而不是鼠标点击? 也许还有另一种方法可以做到这一点,而不是使用JButton ? 最好的祝福!

在3d中查找2个任意立方体的交集

所以,我想找出一个函数,它允许你确定两个任意旋转和大小的立方体是否相交。 如果立方体的旋转不是任意的(但锁定到特定轴),则交叉点很简单; 通过检查它们的边界来检查它们是否在所有三个维度中交叉,以确定它们是否在所有三个维度中相交或相互在一起。 如果它们交叉或仅在两个内,它们不相交。 此方法可用于确定任意立方体是否是交集的候选对象,使用它们的最高/最低x,y和z来创建外边界。 这是第一步。 理论上,根据这些信息,我们可以分辨出它们彼此之间的“侧面”,这意味着我们可以从交叉点消除一些四边形(边)。 但是,我不能假设我们有这些信息,因为立方体的旋转可能使得难以简单地确定。 我的想法是取每对四边形,找到它们的平面的交点,然后确定该线是否与每对边的至少一个边相交。 如果任何一对边具有与其任何边相交的交线,则四边形相交。 如果没有相交,则两个立方体不相交。 然后,我们可以确定第二个立方体上的交叉点的深度,其中平面相交线与其边缘相交。 然而,这只是推测性的。 有没有更好,更有效的方法来确定这两个立方体的交集? 我可以想到许多不同的方法来做到这一点,我也可以说它们在所需的计算量方面可能非常不同。 我目前正在使用Java,但C / C ++解决方案也很酷(我可以移植它们); 即使是伪问题,因为它可能是个大问题。

使用synchronized关键字和锁之间有什么区别

Java 5引入了lock方法。 使用锁的任何利弊与synchronized关键字相比?

在android中读取二进制文件

我创建了一个Task类型的自定义对象,我想将它保存在内部存储的二进制文件中。 这是我创建的类: public class Task{ private String title; private int year; private int month; private int day; private int hour; private int minute; public Task(String inputTitle, int inputYear, int inputMonth, int inputDay, int inputHour, int inputMinute){ this.title = inputTitle; this.year = inputYear; this.month = inputMonth; this.day = inputDay; this.hour = inputHour; this.minute = inputMinute; } […]