本文最后更新于:December 3, 2021 pm
积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里,不积小流无以成江海。齐骥一跃,不能十步,驽马十驾,功不在舍。面对悬崖峭壁,一百年也看不出一条裂缝来,但用斧凿,能进一寸进一寸,能进一尺进一尺,不断积累,飞跃必来,突破随之。
目录 1.Math
求绝对值
int a = -123 ; System.out.println(Math.abs(a)); int a = -1234 ;int b = ~a+1 ; System.out.println(b);
取最大或最小值
int a = 123 ;int b = 456 ;int m = Math.max(a,b);int mi = Math.min(a,b); System.out.println(m); System.out.println(mi);
计算x的y次方
计算√x
计算e的x次方
计算以e为底的对数
计算以10为底的对数
三角函数
Math.sin(3.14 ); Math.cos(3.14 ); Math.tan(3.14 ); Math.asin(1.0 ); Math.acos(1.0 );
数学常量
double pi = Math.PI; double e = Math.E; Math.sin(Math.PI / 6 );
随机数
2.Random Random用来创建伪随机数。 要生成一个随机数,可以使用nextInt()、nextLong()、nextFloat()、nextDouble()。
Random r = new Random(); r.nextInt(); r.nextInt(10 ); r.nextInt()%10 ; r.nextLong(); r.nextLong()%10 ; r.nextFloat(); r.nextDouble();
3.SecureRandom 有伪随机数,就有真随机数。实际上真正的真随机数只能通过量子力学原理来获取,而我们想要的是一个不可预测的安全的随机数,SecureRandom就是用来创建安全的随机数的。
SecureRandom sr = new SecureRandom(); System.out.println(sr.nextInt(100 ));
SecureRandom无法指定种子,它使用RNG(random number generator)算法。JDK的SecureRandom实际上有多种不同的底层实现,有的使用安全随机种子加上伪随机数算法来产生安全的随机数,有的使用真正的随机数生成器。实际使用的时候,可以优先获取高强度的安全随机数生成器,如果没有提供,再使用普通等级的安全随机数生成器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import java.util.Arrays;import java.security.SecureRandom;import java.security.NoSuchAlgorithmException;public class Main { public static void main (String[] args) { SecureRandom sr = null ; try { sr = SecureRandom.getInstanceStrong(); } catch (NoSuchAlgorithmException e) { sr = new SecureRandom(); } byte [] buffer = new byte [16 ]; sr.nextBytes(buffer); System.out.println(Arrays.toString(buffer));; } }
SecureRandom的安全性是通过操作系统提供的安全的随机种子来生成随机数。这个种子是通过CPU的热噪声、读写磁盘的字节、网络流量等各种随机事件产生的“熵”。
在密码学中,安全的随机数非常重要。如果使用不安全的伪随机数,所有加密体系都将被攻破。因此,时刻牢记必须使用SecureRandom来产生安全的随机数。