为什么边界检查不会被消除?

我写了一个简单的基准测试 ,以便找出当通过按位和数组计算数组时是否可以消除边界检查。 这基本上就是几乎所有哈希表的作用:它们计算 h & (table.length – 1) 作为table的索引,其中h是hashCode或派生值。 结果表明边界检查不会被消除。 我的基准测试的想法很简单:计算两个值i和j ,其中两个值都保证是有效的数组索引。 i是循环计数器。 当它被用作数组索引时,边界检查被消除。 j计算为x & (table.length – 1) ,其中x是每次迭代时改变的某个值。 当它被用作数组索引时,边界检查不会被消除。 相关部分如下: for (int i=0; i<=table.length-1; ++i) { x += result; final int j = x & (table.length-1); result ^= i + table[j]; } 另一个实验使用 result ^= table[i] + j; 代替。 时间的差异可能是15%(在我尝试的不同变体中非常一致)。 我的问题: 除了绑定检查消除之外还有其他可能的原因吗? 是否有一些复杂的原因我无法理解为什么j没有绑定检查消除? […]

Java中的命令行管道输入

这是一段简单的代码: import java.io.*; public class Read { public static void main(String[] args) { BufferedReader f = new BufferedReader(new InputStreamReader(System.in)); while(true) { String x = null; try{ x = f.readLine(); } catch (IOException e) {e.printStackTrace();} System.out.println(x); } } } 我执行此操作:java读取<input.txt 一旦input.txt被完全传送到程序中,x就会不断获得无限空值。 为什么? 在将文件送入代码之后,有没有办法使标准输入(命令行)生效? 我试过关闭流并重新打开,它不起作用。 重置等也。

Java:平台在不同平台上的默认字符集?

一些遗留代码依赖于平台的默认字符集进行翻译。 对于“西方世界”中的Windows和Linux安装,我知道这意味着什么。 但是考虑到俄罗斯或亚洲平台,我完全不确定他们平台的默认字符集是什么(只是UTF-16?)。 因此,我想知道在执行以下代码行时我会得到什么: System.out.println(“Default Charset=” + Charset.defaultCharset()); 编辑:我不想在这里讨论charsets的问题以及它们与unicode的区别。 我只是想收集哪些操作系统会导致什么特定的字符集。 请仅发布具体值!

Spring JpaRepository – 分离和附加实体

我正在使用spring boot并在jpa上hibernate。 我正在使用JpaRepository接口来实现我的存储库。 与以下UserRepository一样 public interface UserRepository extends JpaRepository { } 我想实现以下目标 加载用户实体。 更改实体对象的状态,例如user.setName(“foo”) 进行外部系统Web服务调用。 将呼叫结果保存在DB中 仅在成功响应此Web服务调用时,将新用户状态保存在存储库中。 以上所有步骤都不会发生在一个事务中,即外部服务调用不在事务中。 当我通过其存储库将我的web服务结果保存在DB中时,我的用户实体更改也会保存。 根据我的理解,这是由于在步骤#3中刷新了持久性上下文。在一些谷歌之后,我想我可以实现我的目的,如果我可以在第一步分离我的用户实体并在步骤4重新连接它。请确认如果我的理解是正确的,我怎么能做到这一点? JpaRepository接口中没有用于分离实体的方法。 以下是代码来说明 public void updateUser(int id, String name, int changeReqId){ User mUser = userRepository.findOne(id); //1 mUser.setName(name); //2 ChangeRequest cr = changeRequestRepository.findOne(changeReqId); ChangeResponse rs = userWebService.updateDetails(mUser); //3 if(rs.isAccepted()){ userRepository.saveAndFlush(mUser); //4 } cr.setResponseCode(rs.getCode()); changeRequestRepository.saveAndFlush(cr); //this call also […]

如何使用Apache POI读取所有单元格值?

我想使用Apache POI从excel表中读取所有单元格值并将其存储到一维字符串数组中。是否可以逐行读取excel中的数据并从每个单元格中提取值? 请帮我解决这个问题。 谢谢

在Java和C之间传递数据

我有一个C结构。 struct data{ double value1[50]; double value2[50]; int count; }; 我想将数据从java映射到这个C结构。如何使用JNI? java代码不会由我编程。 java程序员只想知道他应该以哪种forms向我发送数据? 他是否应该期待更多细节 我目前正在通过使用包含2列的CSV文件填充结构实例来测试我的代码。 我还想从我的C代码返回3个double值到java应用程序。

将Java字符串转换为字节数组

我有一个字节数组,我正在加密然后转换为字符串,以便它可以传输。 当我收到字符串时,我必须将字符串转换回字节数组,以便解密。 我已检查收到的字符串是否匹配发送的字符串(包括长度),但是当我使用str.getBytes()之类的东西将其转换为字节数组时,它与我的原始字节数组不匹配。 示例输出: SENT: WzShnf/fOV3NZO2nqnOXZbM1lNwVpcq3qxmXiiv6M5xqC1A3 SENT STR: [B@3e4a9a7d RECEIVED STR: [B@3e4a9a7d RECEIVED: W0JAM2U0YTlhN2Q= 任何想法我如何将收到的字符串转换为匹配发送的字节数组的字节数组? 谢谢

当用户名和密码除了具有更多字段的登录页面时如何实现Spring安全性?

我有一个登录页面,用户需要在其中输入以下信息VIN号码,电子邮件,邮政编码和accessCode,它们将从不同的应用程序中获取。 因此,为了validation用户,我需要自定义UserDetailsService类中的所有信息,然后调用一个过程来validation用户。 但是当我实现UserDetailsService时,我看到了如下所示 @Component public class LoginService implements UserDetailsService { @Autowired LoginStoredProcedureDao loginStoredProcedureDao; public Map verifyLogin(LoginDetails details) { return loginStoredProcedureDao.verifyLogin(details); } @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // TODO Auto-generated method stub //verifyLogin(); return null; } } loginDetails对象如下所示 public class LoginDetails { String vin; String email; String zipcode; String accessCode; } 在上述情况下如何使用弹簧安全。 在这里,用户需要提供所有信息以validation他自己。

使用Java中的PrinterJob打印PDF文件

尝试使用Java打印PDF文件时出现问题。 这是我的代码: PdfReader readFtp = new PdfReader(); // This class is used for reading a PDF file PDDocument document = readFtp.readFTPFile(documentID); printRequestAttributeSet.add(new PageRanges(1, 10)); job.setPageable(document); job.print(printRequestAttributeSet); // calling for print document.close() 我使用document.silentPrint(job); 和job.print(printRequestAttributeSet); – 它工作正常。 如果我使用document.silentPrint(job); – 我无法设置PrintRequestAttributeSet 。 谁能告诉我如何设置PrintRequestAttributeSet ?

在Java中并行执行从属任务

我需要找到一种在java中并行执行任务(依赖和独立)的方法。 任务A和任务C可以独立运行。 任务B取决于任务A的输出。 我检查了java.util.concurrent Future和Fork / Join,但看起来我们无法向Task添加依赖项。 任何人都可以指出我更正Java API。