线程“main”中的exceptionjava.security.InvalidKeyException:非法的键大小或默认参数

下面的代码抛出此错误消息: Exception in thread “main” java.security.InvalidKeyException: Illegal key size or default parameters Cipher dcipher; byte[] salt = new String(“12345678”).getBytes(); int iterationCount = 1024; int keyStrength = 256; SecretKey key; byte[] iv; Decrypter(String passPhrase) throws Exception { SecretKeyFactory factory = SecretKeyFactory .getInstance(“PBKDF2WithHmacSHA1”); System.out.println(“factory +” + factory); KeySpec spec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterationCount, keyStrength); System.out.println(“spec ” […]

检查整数内是否只设置了一个位(无论其位置如何)

我使用64位整数内的位存储标志。 我想知道是否有一个位设置无论64位整数内的位置(ei我不关心任何特定位的位置)。 boolean isOneSingleBitSet (long integer64) { return ….; } 我可以使用Bit Twiddling Hacks (Sean Eron Anderson)计算位数,但我想知道检测单个位是否设置的最有效方法是什么… 我发现了一些其他相关的问题: (8051)检查是否设置了一个位 检测整数内的单个一位流 以及一些维基百科页面: 找到第一个 位操作 汉明重量 注意:我的应用程序是在java中,但我很好奇使用其他语言的优化… 编辑 : LưuVĩnhPhúc指出我的问题中的第一个链接已经得到了答案:请参阅确定一个整数是否在Bit Twiddling Hacks (Sean Eron Anderson)中的2的幂 。 我没有意识到单个位 与2的幂相同。

从包中获取所有类

假设我有一个java包commands ,其中包含所有inheritance自ICommand类,我能以某种方式获得所有这些类吗? 我正在锁定以下内容: Package p = Package.getPackage(“commands”); Class[] c = p.getAllPackagedClasses(); //not real 有可能吗?

什么是JAVA的POJO和DOJO?

我对POJO有很多怀疑。 用一个小例子寻求一个清晰的定义。

使用spring boot实现2路SSL

我正在创建一些宁静的Web服务,并使用Spring-Boot创建一个嵌入式tomcat容器。 其中一个要求是实现双向SSL。 我一直在查看HttpSecurity对象,并且可以使用它来仅通过SSL通道运行web服务: – @Override protected void configure(HttpSecurity http) throws Exception { System.out.println(“CONFIGURED”); http // … .requiresChannel() .anyRequest().requiresSecure(); } 我似乎无法找到的方法是只允许提供有效客户端证书的应用程序访问Web服务。 我只有SSL的基本知识,所以即使是正确方向的一般指针也会受到赞赏。 正在部署的服务器将具有混合的应用程序 – 这是唯一需要使用双向SSL锁定的应用程序。 我真正想要的是一种锁定单个应用程序只接受客户端证书的方法。

如何在multithreading环境中有效地使用RestTemplate?

我正在开发一个项目,我需要对运行Restful Service服务器进行HTTP URL调用,该Restful Service将响应作为JSON字符串返回。 以下是我使用future和callables主要代码 – public class TimeoutThreadExample { private ExecutorService executor = Executors.newFixedThreadPool(10); public String getData() { Future future = executor.submit(new Task()); String response = null; try { response = future.get(100, TimeUnit.MILLISECONDS); } catch (TimeoutException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } return response; […]

用于读写的Java FileLock

我有一个进程,它会被cron相当频繁地调用,以读取其中包含某些与移动相关的命令的文件。 我的进程需要读取和写入此数据文件 – 并将其锁定以防止其他进程在此期间触摸它。 用户可以执行完全独立的过程(可能)写入/附加到该相同的数据文件。 我希望这两个进程运行良好,并且一次只访问一个文件。 nio FileLock似乎是我需要的(没有编写我自己的信号量类型文件),但是我无法锁定它进行阅读。 我可以锁定并写得很好,但是在读取时尝试创建锁定时会出现NonWritableChannelException。 甚至可以锁定文件进行阅读吗? 看起来像RandomAccessFile更接近我需要的东西,但我不知道如何实现它。 这是失败的代码: FileInputStream fin = new FileInputStream(f); FileLock fl = fin.getChannel().tryLock(); if(fl != null) { System.out.println(“Locked File”); BufferedReader in = new BufferedReader(new InputStreamReader(fin)); System.out.println(in.readLine()); … FileLock行抛出exception。 java.nio.channels.NonWritableChannelException at sun.nio.ch.FileChannelImpl.tryLock(Unknown Source) at java.nio.channels.FileChannel.tryLock(Unknown Source) at Mover.run(Mover.java:74) at java.lang.Thread.run(Unknown Source) 它说,看看JavaDocs 尝试写入最初未打开以进行写入的通道时,抛出未经检查的exception。 但我不一定要写信给它。 当我尝试创建FileOutpuStream等用于写入目的时,我很高兴直到我尝试在同一文件上打开FileInputStream。

如何检查数据库中是否存在表或列?

我正在尝试制作简单的java代码,以检查MySQL DB中是否存在表和/或列。 我应该使用Java代码进行检查还是创建一个SQL查询字符串并执行它来进行检查? 编辑- @ aleroot – 我尝试使用您的代码,如下所示。 当我运行下面的代码时,我看不到任何表或列。 我只看到这个 – Driver Loaded. Got Connection. 我的DB有很多DB,表和列。 我不知道为什么这个程序正常工作。 import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Tester { static Connection conn; static Statement st; public static void main(String[] args) throws Exception { try { // Step 1: Load the JDBC driver. System.out.println(“Driver […]

JAXB注释

我需要一些JAXB Annotations的帮助,我找不到好的doc帮助我解决这个问题。 我有一个我想编组成XML的类。 我的class级看起来像这样: @XmlRootElement(name=”car”) @XmlAccessorType(XmlAccessType.FIELD) @XmlType(propOrder = { “vid”, “make”, “model”, “recalls”, “engSpec” }) public class Car { @XmlElement(name=”vid”, required=true) private String vid; @XmlElement(name=”make”, required=true) private String make; @XmlElement(name=”model”, required=true) private String model; @XmlElement(name=”recalls”, required=true) private ArrayList recalls; @XmlElement(name=”engSpec”, required=true) private EngSpec engSpec; … 召回课看起来像这样: @XmlRootElement(name = “recall”) @XmlAccessorType(XmlAccessType.FIELD) @XmlType(propOrder = { “type”, “date” […]

如何使用DefaultHttpClient写入OutputStream?

如何使用org.apache.http.impl.client.DefaultHttpClient获取OutputStream ? 我正在寻找一个输出流的长字符串。 使用HttpURLConnection您可以像这样实现它: HttpURLConnection connection = (HttpURLConnection)url.openConnection(); OutputStream out = connection.getOutputStream(); Writer wout = new OutputStreamWriter(out); writeXml(wout); 有没有使用类似于我上面的DefaultHttpClient的方法? 如何使用DefaultHttpClient而不是HttpURLConnection写入OutputStream ? 例如 DefaultHttpClient client = new DefaultHttpClient(); OutputStream outstream = (get OutputStream somehow) Writer wout = new OutputStreamWriter(out);