我正在尝试在Java中做一个简单的stringSHA1转换器,这是我得到的… public static String toSHA1(byte[] convertme) { MessageDigest md = null; try { md = MessageDigest.getInstance("SHA-1"); } catch(NoSuchAlgorithmException e) { e.printStackTrace(); } return new String(md.digest(convertme)); } 当我把它传递给toSHA1("password".getBytes()) ,我得到“[ a ɹ?? %l 3〜 。 我知道这可能是一个像UTF-8简单的编码修复,但有人可以告诉我该怎么做才能得到我想要的“5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8”? 还是我这样做完全错了? 非常感谢!
我想了解Java如何在内部存储整数。 我知道所有的Java原始整数签名,(除短吗?)。 这意味着数字的一个字节中less了一位。 我的问题是,所有的整数(正数和负数)存储为二进制补码还是只有负数的二进制补码? 我看到规格说x bit two's complement number 。 但是我经常感到困惑。 例如: int x = 15; // Stored as binary as is? 00000000 00000000 00000000 00001111? int y = -22; // Stored as two complemented value? 11111111 11111111 11111111 11101010 编辑 要清楚, x = 15 In binary as is: `00000000 00000000 00000000 00001111' Two's complement: […]
我有一种情况,我想写我创build的所有日志写入到一个文本文件。 我们使用java.util.logging.Logger API来生成日志。 我试过了 private static Logger logger = Logger.getLogger(className.class.getName()); FileHandler fh; fh = new FileHandler("C:/className.log"); logger.addHandler(fh); 但仍然只有控制台上我的日志….请帮助。 提前致谢
今天,我在macOS Sierra上升级了我的Intellij Idea,现在,当我在控制台上运行应用程序时,出现此错误: objc [3648]:类JavaLaunchHelper在/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java(0x10d19c4c0)和/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/目录/首页/ jre / lib / libinstrument.dylib(0x10ea194e0)。 其中一个将被使用。 哪一个是未定义的
我已经生成了一个私钥: openssl genrsa [-out file] –des3 在此之后,我已经生成一个公钥: openssl rsa –pubout -in private.key [-out file] 我想用我的私钥签署一些消息,并用我的公钥validation一些其他消息,使用如下代码: public String sign(String message) throws SignatureException{ try { Signature sign = Signature.getInstance("SHA1withRSA"); sign.initSign(privateKey); sign.update(message.getBytes("UTF-8")); return new String(Base64.encodeBase64(sign.sign()),"UTF-8"); } catch (Exception ex) { throw new SignatureException(ex); } } public boolean verify(String message, String signature) throws SignatureException{ try { Signature sign = […]
我试图从C ++中获得一个简单的Java方法调用,而Java调用本地方法。 这是Java代码: public class MainActivity extends Activity { private static String LIB_NAME = "name"; static { System.loadLibrary(LIB_NAME); } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = (TextView) findViewById(R.id.textview); tv.setText(this.getJniString()); } public void messageMe(String text) { System.out.println(text); } public native String getJniString(); } […]
那里有很多的材料 ,这表明打印exception的堆栈跟踪是不好的做法。 例如从Checkstyle的RegexpSingleline检查: 这个检查可以用来查找常见的不良做法,如调用ex.printStacktrace() 然而,我正努力find任何地方给出了一个有效的原因,因为肯定堆栈跟踪是非常有用的在追查什么导致exception。 我知道的事情是: 最终用户永远不会看到堆栈跟踪(用于用户体验和安全目的) 生成堆栈跟踪是一个相对昂贵的过程(尽pipe在大多数“特殊”情况下不太可能成为问题) 许多日志logging框架将为您打印堆栈跟踪(我们不会,也不会轻易更改) 打印堆栈跟踪不构成error handling。 它应该与其他信息logging和exception处理相结合。 还有什么其他原因可以避免在代码中打印堆栈跟踪?
我在MacOS X上升级到了最新版本的Java 7 u40,并在eclipse中对应用程序进行引导时,在控制台上开始获取以下输出。 推出的应用程序工作正常,但我想找出是什么原因造成这个问题和解决办法。 objc[10012]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. Anynone知道为什么这个消息正在被打印,以及如何解决这个问题。
实现接口方法的方法是否应该用@Override进行注释? Override注解的javadoc说: 表示方法声明旨在覆盖超类中的方法声明。 如果一个方法用这个注解types进行了注释,但是没有重写一个超类方法,编译器需要生成一个错误消息。 我不认为一个接口在技术上是一个超类。 还是呢? 问题阐述
我正在阅读“Java教程”(第二次)。 我刚刚通过Interfaces(再次)的一节,但仍不明白Java接口如何模拟多重inheritance。 有没有比书中更清楚的解释?