Java基础-----Math类相关的API(一)

news2025/2/27 22:53:27

请添加图片描述

文章目录

  • 1. Math类
    • 1.1 简介
    • 1.2 常用方法
    • 1.3 小练身手
  • 2.Random类
    • 2.1 简介
    • 2.2 构造方法
    • 2.3 常用方法
  • 3. BigInteger和BigDecimal
    • 3.1 简介
    • 3.2 创建方式
    • 3.3 方法
    • 3.4 RoundingModel处理方式(8种)
      • 3.4.1 **UP**
      • 3.4.2 **DOWN**
      • 3.4.3 **CEILING**
      • 3.4.4 **FLOOR**
      • 3.4.5 **HALF_UP**
      • 3.4.6 **HALF_DOWN**
      • 3.4.7 **HALF_EVEN**
      • 3.4.8 **UNNECESSARY**

1. Math类

1.1 简介

  • Math类中提供了大量用于数学运算的相关方法
  • Math类是使用final修饰的终结类,不能产生子类
  • Math类中的方法都是static修饰的静态方法,可以通过类名.方法名直接调用
        double v = Math.PI * 10;
        System.out.println("v = " + v);

1.2 常用方法

  • abs(int):求绝对值(int,long,float,double作为参数)
  • ceil(double):求大于等于给定值的最小整数值,以double类型返回
  • floor(double):求小于等于给定值的最大整数值,以double类型返回
  • max(int,int):求两个数字中最大的值(int long float double作为参数)
  • min(int,int):求两个数字中最小的值(int long float double作为参数)
  • random():获取一个0-1之间的随机小数
  • round(float|double):返回int或long,采用四舍五入法,获取最接近的整数值(传float型参数就返回int型,传double型参数就返回long型)
  • sqrt(double):获取平方根,如果传值为负数,返回NaN(Not a Number)
  • pow(double,double):求一个数的N次方
  • sin(double)/cos(double)/tan(double):获取给定弧度值的三角函数值
//abs():求绝对值
        int abs = Math.abs(-5);
        System.out.println(abs);//5
//ceil(double):返回>=参数的最小(最接近负无穷大) double值,并等于数学整数
        double ceil = Math.ceil(3.5);
        System.out.println("ceil = " + ceil);//4.0
 //floor(double):返回<=参数的最大(最接近正无穷大) double值,等于数学整数
        double floor = Math.floor(3.5);
        System.out.println("floor = " + floor);//3.0
//round():四舍五入     float->int   double->long
        long round = Math.round(3.1415);
        System.out.println("round = " + round);//3
        long round1 = Math.round(3.5426);
        System.out.println("round1 = " + round1);//4
//sqrt():开平方
        double sqrt = Math.sqrt(2);
        System.out.println("sqrt = " + sqrt);//1.4142135623730951
        double sqrt1 = Math.sqrt(-2);
        System.out.println("sqrt1 = " + sqrt1);//NaN
//pow():求几次方
        double pow = Math.pow(5, 3);
        System.out.println("pow = " + pow);//125.0
//sin(double)/cos(double)/tan(double)
        double sin = Math.sin(30);
        System.out.println("sin = " + sin);

1.3 小练身手

有一根棍,将其随机取两点,折成三段,有可能组成三角形,也有可能不会组成三角形。(任意两边之和大于第三边)。现有20000根棍,每根棍都按照上述方法操作,能够组成三角形的概率是多少?

  • 思路:
    • 假设棍子的长度为1,利用random()生成随机数,即随机截取的两个点
    • 两个截取点p1和p2,一个在左边,一个在右边,位置不固定
    • 因此左边的点 d1=min(p1,p2) 右边的点 d2=max(p1,p2)
    • 第一段的长度为d1,第二段的距离为d2-d1,第三段的长度为1-d2
    • 然后再判断是否满足组成三角形的条件
public class CountTri {
    public static void main(String[] args) {
        int count=0;
        for (int i = 0; i < 20000; i++) {
            double p1 = Math.random();
            double p2 = Math.random();
            double d1 = Math.min(p1, p2);//左边的点
            double d2 = Math.max(p1, p2);//右边的点
            double l1=d1;//截取的第一段
            double l2=d2-d1;//截取的第二段
            double l3=1-d2;//截取的第三段

           // System.out.println(l1+"\t"+l2+"\t"+l3);
            if(l1+l2>l3 && l1+l3>l2  && l2+l3>l1 ){
               // System.out.println("可以组成三角形");
                count++;
            }else {
                //System.out.println("不可以组成三角形");
            }

        }
        //组成三角形的概率
        System.out.println(count);
        System.out.println(count/20000D);
        System.out.println((count/20000D)*100+"%");
        System.out.println(Math.round(count/20000D*100)+"%");

    }
}

2.Random类

2.1 简介

  • java.util下有一个Random类,根据随机算法的起源数字(种子)进行一些迭代变化,来产生随机数。

  • 虽然Random类产生的数字是随机的,但在相同种子数下的相同次数产生的随机数是相同的(伪随机)。

2.2 构造方法

  • Random():以系统自身的时间为种子类来构造Random对象

  • Random(long):可以自己选定具体的种子来构造Random对象

public class Test {
    public static void main(String[] args) {
        /*Random random=new Random();
        int i=random.nextInt();
        System.out.println(i);//1936132354  1046228992*/
        
        /*Random()在相同种子数下的相同次数产生的额随机数是相同的(伪随机)*/
        Random random=new Random(100);
        Random random1=new Random(100);
        int num=random.nextInt();
        int num1=random1.nextInt();
        System.out.println(num);//-1193959466
        System.out.println(num1);//-1193959466
    }
}

2.3 常用方法

  • nextInt():获取int类型的随机数

  • nextInt(int):获取0(包含)到给定值(不包含)之间的随机数

  • nextlong():获取long类型的随机数

  • nextfloat():获取一个随机单精度浮点数0-1之间

  • nextDouble():获取一个随机双精度浮点数0-1之间

  • nextBoolean():返回一个随机boolean类型的值,true或false,概率相同

Random random=new Random();
//nextInt(int):获取0(包含)到给定值(不包含)之间的随机数
int i=random.nextInt(50);
System.out.println(i);

long l = random.nextLong();
System.out.println(l);

boolean b = random.nextBoolean();
System.out.println(b);

3. BigInteger和BigDecimal

3.1 简介

  • BigInteger可以支持任意长度的整数
  • BieDecimal可以支持任意精度的浮点数
  • BigInteger和BigDecimal是用来做精确计算的

3.2 创建方式

  • new BigInteger();

  • new BigInteger(参数1,进制):可以将不同进制转成10进制显示

  • new BigDecimal();

  • BigInteger.valueOf();

  • BigDecimal.valueOf();

  • Scanner对象的nextBigInteger() nextBigDecimal();

Scanner scanner=new Scanner(System.in);
BigDecimal d=scanner.nextBigDecimal();
BigInteger b=scanner.nextBigInteger();
//BigInteger可以支持任意长度的整数
BigInteger b=new BigInteger("123456789123456789123456789");
System.out.println(b);//123456789123456789123456789
BigInteger b1=BigInteger.valueOf(12345678912L);
System.out.println(b1);//12345678912
BigDecimal d=new BigDecimal("3.1415");
BigDecimal x=new BigDecimal(10);
BigDecimal z=d.multiply(x);
System.out.println("z = " + z);//31.4150
BigDecimal d1=new BigDecimal(3.1415);
BigDecimal x1=new BigDecimal(10);
BigDecimal z1=d1.multiply(x1);
System.out.println("z1 = " + z1);//

上面这段代码的运行结果
在这里插入图片描述
出现上面的原因是:
一个是字符串类型 一个是double,部分浮点数不能被精准的表达就会出现这个问题 所以用这个类的时候要用字符串传参(特别注意double 类型)

更具体的原因是 :十进制的 double 类型的数据在进行计算的时候,计算机会先将其转换为二进制数据,然后再进行相关的运算。 然而在十进制转二进制的过程中,有些十进制数是无法使用一个有限的二进制数来表达的,换言之就是转换的时候出现了精度的丢失问题,所以导致最后在运算的过程中,自然就出现了我们看到的一幕。

我们来对比一下double和BigDecimal的精度:

 double d=3.1415;
 double x=10;
 double z=d*x;
 System.out.println(z);//31.415000000000003

 BigDecimal d=new BigDecimal("3.1415");
 BigDecimal x=new BigDecimal(10);
 BigDecimal z=d.multiply(x);
 System.out.println("z = " + z);//31.4150

3.3 方法

  • add():加法

  • intValue():将BigInteger转成int类型值

  • doubleValue():将BigDecimal转成double类型值

  • substract():减法

  • multiply():乘法

  • divide():除法 BigInteger只保留整数。BigDecimal用法和BigInteger完全不同

  • remainder():求余数

  • divideAndRemainder():求除法商和余数,返回的是BigInteger数组

  • max():求最大值

  • min():求最小值

//add():加法
BigInteger b=new BigInteger("123");
BigInteger b1=new BigInteger("2");
BigInteger r=b.add(b1);
System.out.println(r);//125
int i = r.intValue();
System.out.println(i);//125
BigInteger b=new BigInteger("1231213123123");
BigInteger b1=new BigInteger("2");
BigInteger r=b.add(b1);
System.out.println(r);
int i = r.intValue();
System.out.println(i);

此段代码运行结果:
在这里插入图片描述
出现上面结果的原因是:超出int的范围

------------------------------------------------------------------------------------------------------------------------------------------------我们继续ღღღღღღღღ--------------------------------------------------------------------------------------

BigInteger b=new BigInteger("123");
BigInteger b1=new BigInteger("2");
//加法
BigInteger r=b.add(b1);
System.out.println("r = " + r);//125
int i = r.intValue();
System.out.println(i);//125
//减法
BigInteger subtract = b.subtract(b1);
System.out.println("subtract = " + subtract);//121
//乘法
BigInteger multiply = b.multiply(b1);//246
System.out.println("multiply = " + multiply);
//除法   BigInteger只保留整数   BigDecimal会有小数
BigInteger divide = b.divide(b1);
System.out.println("divide = " + divide);//61
BigDecimal d=new BigDecimal("10");
BigDecimal d1=new BigDecimal("4");
BigDecimal divide1 = d.divide(d1);
System.out.println("divide1 = " + divide1);//2.5

--------------------------------------------------------------------------------------------------------------------------------------------------我们继续ღღღღღღღღ----------------------------------------------------------------------------

BigDecimal d=new BigDecimal("10");
BigDecimal d1=new BigDecimal("3");
BigDecimal divide1 = d.divide(d1);
System.out.println("divide1 = " + divide1);//报错

在这里插入图片描述

解决办法一:使用RoundingMode.UP

BigDecimal divide1 = d.divide(d1,2, RoundingMode.UP);//保留两位小数
System.out.println("divide1 = " + divide1);//3.34

解决方法二:使用reminder 求余数

BigInteger b=new BigInteger("123");
BigInteger b1=new BigInteger("2");
BigInteger remainder = b.remainder(b1);
System.out.println("remainder = " + remainder);//1

解决方法三:使用divideAndRemainder,求商和余数 返回的是BigInteger数组

BigInteger b=new BigInteger("123");
BigInteger b1=new BigInteger("2");
BigInteger[] bigIntegers = b.divideAndRemainder(b1);
System.out.println(bigIntegers[0]);//61
System.out.println(bigIntegers[1]);//1

-------------------------------------------------------------------------------------------------------------------------------------------我们继续ღღღღღღღღ----------------------------------------------------------------------------------------------

//doubleValue():将BigDecimal转成double类型值
BigDecimal d=new BigDecimal("10");
double v = d.doubleValue();
System.out.println("v = " + v);//10.0
//new BigInteger(参数1,进制):可以将不同进制转成10进制显示
BigInteger b=new BigInteger("A",16);
BigInteger b1=new BigInteger("7",8);
System.out.println("b = " + b);//10
System.out.println("b1 = " + b1);//7

3.4 RoundingModel处理方式(8种)

  • UP
  • DOWN
  • CEILING
  • FLOOR
  • HALF_UP
  • HALF_DOWN
  • HALF_EVEN
  • UNNECESSARY

3.4.1 UP

远离零方向舍入模式,始终对非零舍弃部分前面的数字+1
在这里插入图片描述

//UP:远离零方向舍入模式,始终对非零舍弃部分前面的数字+1
BigDecimal d=new BigDecimal("11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide_UP = d.divide(d1, RoundingMode.UP);
System.out.println("divide_UP = " + divide_UP);//6
BigDecimal d=new BigDecimal("-11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide_UP = d.divide(d1, RoundingMode.UP);
System.out.println("divide_UP = " + divide_UP);//-6

3.4.2 DOWN

向零方向舍入的舍入模式,从不对舍弃部分后面的数字+1(截尾处理)

在这里插入图片描述

//DOWN:向零方向舍入的舍入模式,从不对舍弃部分后面的数字+1(截尾处理)
BigDecimal d=new BigDecimal("11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide_DOWN = d.divide(d1, RoundingMode.DOWN);
System.out.println("divide_DOWN = " + divide_DOWN);//5
BigDecimal d=new BigDecimal("-11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide_DOWN = d.divide(d1, RoundingMode.DOWN);
System.out.println("divide_DOWN = " + divide_DOWN);//-5

3.4.3 CEILING

向正无限大方向舍入的舍入模式,如果为正数,则类似于UP;如果为负数,则类似于DOWN

在这里插入图片描述

BigDecimal d=new BigDecimal("11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1, RoundingMode.CEILING);
System.out.println(divide);//6
BigDecimal d=new BigDecimal("-11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1, RoundingMode.CEILING);
System.out.println(divide);//-5

3.4.4 FLOOR

向负无限大方向舍入的舍入模式,如果为正数,则类似于DOWN;如果为负数,则类似于UP、

在这里插入图片描述

//FLOOR:向负无限大方向舍入的舍入模式
BigDecimal d=new BigDecimal("11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide_FLOOR = d.divide(d1, RoundingMode.FLOOR);
System.out.println(divide);//5
BigDecimal d=new BigDecimal("-11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1, RoundingMode.FLOOR);
System.out.println(divide);//-6

3.4.5 HALF_UP

向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入,如果被舍弃部分>=0.5,则舍入行为同UP,否则和DOWN相同,就是通常使用的四舍五入

//HALF_UP:四舍五入
BigDecimal d=new BigDecimal("11");
//BigDecimal d=new BigDecimal("-11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1, RoundingMode.HALF_UP);
System.out.println(divide);//6
BigDecimal d=new BigDecimal("-11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1, RoundingMode.HALF_UP);
System.out.println(divide);//-6

3.4.6 HALF_DOWN

向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入,如果被舍弃部分>0.5,则舍入行为同UP,否则和DOWN相同,五舍六入

BigDecimal d=new BigDecimal("11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1, RoundingMode.HALF_DOWN);
System.out.println(divide);//5
BigDecimal d=new BigDecimal("11.2");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1, RoundingMode.HALF_DOWN);
System.out.println(divide);//5.6
BigDecimal d=new BigDecimal("-11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide= d.divide(d1, RoundingMode.HALF_DOWN);
System.out.println(divide);//-5
BigDecimal d=new BigDecimal("-11.2");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1, RoundingMode.HALF_DOWN);
System.out.println(divide);//-5.6

3.4.7 HALF_EVEN

向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入,如果舍弃部分左边的数字为奇数,则舍入行为同HALF_UP,如果为偶数,则舍入行为同HALF_DOWN,也称作“银行家舍入法”。

看舍弃部分左侧数据,奇数采用四舍五入,偶数采用五舍六入。

//HALF_EVEN:看舍弃部分左侧数据,奇数采用四舍五入,偶数采用五舍六入。
BigDecimal d=new BigDecimal("11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1, RoundingMode.HALF_EVEN);
System.out.println(divide);//6
BigDecimal d=new BigDecimal("9.8");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1, RoundingMode.HALF_EVEN);
System.out.println(divide);//4.9
BigDecimal d=new BigDecimal("-11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1, RoundingMode.HALF_EVEN);
System.out.println(divide);//-6

3.4.8 UNNECESSARY

如果舍弃值为0,则正常处理,否则报ArithmeticException

//UNNECESSARY:如果舍弃值为0,则正常处理,否则报ArithmeticException
BigDecimal d=new BigDecimal("11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1,RoundingMode.UNNECESSARY);
System.out.println(divide);//报错
BigDecimal d=new BigDecimal("11");
BigDecimal d1=new BigDecimal("2");
BigDecimal divide = d.divide(d1, 1,RoundingMode.UNNECESSARY);
System.out.println(divide);//5.5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1278321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

神经网络(第三周)

一、简介 1.1 非线性激活函数 1.1.1 tanh激活函数 使用一个神经网络时&#xff0c;需要决定在隐藏层上使用哪种激活函数&#xff0c;哪种用在输出层节点上。到目前为止&#xff0c;只用过sigmoid激活函数&#xff0c;但是&#xff0c;有时其他的激活函数效果会更好。tanh函数…

18487.1 - 2015 电动汽车充电系统标准 第1部分 关键点梳理

一、部分知识介绍 1、连接方式 使用电缆和连接器将电动汽车接入电网&#xff08;电源&#xff09;的方法。 1.1、连接方式A 1.2、连接方式B 1.3、连接方式C 2、电动汽车控电设备 2.1、按照输出电压分类 1&#xff09;交流 单相 220V&#xff0c;三相 380V. 2&#xff09…

2015年五一杯数学建模C题生态文明建设评价问题解题全过程文档及程序

2015年五一杯数学建模 C题 生态文明建设评价问题 原题再现 随着我国经济的迅速发展&#xff0c;生态文明越来越重要&#xff0c;生态文明建设被提到了一个前所未有的高度。党的十八大报告明确提出要大力推进生态文明建设&#xff0c;报告指出“建设生态文明&#xff0c;是关系…

prometheus|云原生|kubernetes内部安装prometheus

架构说明&#xff1a; prometheus是云原生系统内的事实上的监控标准&#xff0c;而kubernetes集群内部自然还是需要就地取材的部署prometheus服务了 那么&#xff0c;prometheus-server部署的方式其实是非常多的&#xff0c;比如&#xff0c;kubesphere集成方式&#xff0c;h…

STM32GPIO速度配置究竟改变了什么-笔记

STM32GPIO速度配置究竟改变了什么-笔记 摘要STM32引脚内部框图STM32时钟树端口寄存器I/O交流特性定义 摘要 一般有 Low、Medium、High&#xff0c;三种速度选择。速度配置变了硬件什么状态&#xff1f; 对 GPIO 的输入输出信号有什么影响&#xff1f; 编程时如何选取速度参数&…

【计算机网络】15、NAT、NAPT 网络地址转换、打洞

文章目录 一、概念二、分类&#xff08;主要是传统 NAT&#xff09;2.1 基本 NAT2.2 NAPT 三、访问NAT下的内网设备的方式3.1 多拨3.2 端口转发、DMZ3.3 UPnP IGD、NAT-PMP3.4 服务器中转&#xff1a;frp 内网穿透3.4.1 NAT 打洞3.4.2 NAT 类型与打洞成功率3.4.2.1 完全圆锥形 …

Redis--11--Redis事务的理解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Redis事务事务回滚机制Redis 事务是不支持回滚的&#xff0c;不像 MySQL 的事务一样&#xff0c;要么都执行要么都不执行&#xff1b; Redis的事务原理 Redis事务 …

深度学习手势识别算法实现 - opencv python 计算机竞赛

文章目录 1 前言2 项目背景3 任务描述4 环境搭配5 项目实现5.1 准备数据5.2 构建网络5.3 开始训练5.4 模型评估 6 识别效果7 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习手势识别算法实现 - opencv python 该项目较为新颖…

五款适用于 Mac 电脑操作的顶级Android 数据恢复工具

在本文中&#xff0c;我们将介绍五款适用于 Mac 电脑的最佳 Android 数据恢复工具。借助这些数据恢复软件工具&#xff0c;用户可以从运行 macOS 操作系统的台式机或笔记本电脑恢复 Android 设备中丢失或删除的数据。许多 Mac 用户更喜欢 iPhone 等 iOS 设备&#xff0c;但也有…

180天Java从小白到就业-Day03-03Java位运算符、赋值运算符、数据交换的三种方式

1. 位运算符 Q&#xff1a;为什么要学习位运算 A&#xff1a;由于其运算效率更高&#xff0c;在JDK源码&#xff08;例如ArrayList、HashMap&#xff09;中大量使用位运算&#xff0c;想要看懂JDK源码必须懂位预算&#xff0c;但是在公司开发业务系统时位运算使用并不多。 Q…

神经网络 模型表示2

神经网络 模型表示2 使用向量化的方法会使得计算更为简便。以上面的神经网络为例&#xff0c;试着计算第二层的值&#xff1a; 我们令 z ( 2 ) θ ( 1 ) x {{z}^{\left( 2 \right)}}{{\theta }^{\left( 1 \right)}}x z(2)θ(1)x&#xff0c;则 a ( 2 ) g ( z ( 2 ) ) {{a}…

基于SpringBoot学生宿舍管理系统的设计与开发

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对学生宿舍信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差…

spark的安装与使用:一键自动安装

使用shell脚本一键下载、安装、配置spark&#xff08;单机版&#xff09; 1. 把下面的脚本复制保存为/tmp/install_spark.sh文件 #!/bin/bash# sprak安装版本 sprak_version"2.4.0" # sprak安装目录 sprak_installDir"/opt/module" # hadoop安装路径&…

lv11 嵌入式开发 中断处理 15

前言&#xff1a;中断属于7种异常的1种&#xff0c;这节主要讲CPU接收到中断之后怎么处理&#xff0c;回顾之前的知识。 目录 1 异常 1.1 概念 1.2 异常处理机制 1.3 ARM异常源 1.4 异常模式 1.5 ARM异常响应 1.6 异常向量表 1.7 异常返回 ​编辑 1.8 IRQ异常举例 …

什么是DDoS攻击

DDoS攻击 1. 定义2. DDoS攻击类型2.1 网络层攻击2.2 传输层攻击2.3 应用层攻击 3.DDoS攻击态势特点 1. 定义 分布式拒绝服务&#xff08;DDoS&#xff09;攻击是一种常见的网络攻击形式。攻击者利用恶意程序对一个或多个目标发起攻击&#xff0c;企图通过大规模互联网流量耗尽…

java学习part29线程通信

139-多线程-线程间的通信机制与生产者消费者案例_哔哩哔哩_bilibili 1.等待唤醒 类似于golang的channel&#xff0c; 1.1用法 类似于go的wait()&#xff0c; 1.sleep和wait的一个重大区别是&#xff0c;sleep不会让线程失去同步监视器&#xff0c;而wait会释放 2.wait必须tr…

【深度学习】深度学习框架的环境配置

目录 1. 配置cuda环境 1.1. 安装cuda和cudnn 1.1.1. 显卡驱动配置 1.1.2. 下载安装cuda 1.1.3. 下载cudnn&#xff0c;将解压后文件复制到cuda目录下 1.2. 验证是否安装成功 2. 配置conda环境 2.1. 安装anaconda 2.2. conda换源 2.3. 创建conda环境 2.4. pip换源 3…

使用MD5当做文件的唯一标识,这样安全么?

使用MD5作为文件唯一标识符可靠么&#xff1f; 文章目录 使用MD5作为文件唯一标识符可靠么&#xff1f;什么是MD5&#xff1f;MD5的用途MD5作为文件唯一标识的优劣优势劣势 使用MD5作为文件唯一标识的建议其他文件标识算法结束语 什么是MD5&#xff1f; MD5&#xff08;Messag…

企业计算机服务器中了locked1勒索病毒怎么解锁,locked1勒索病毒数据恢复

随着网络技术在企业的不断应用&#xff0c;企业的生产运营效率得到了极大提升&#xff0c;越来越多的企业利用网络开展工作&#xff0c;这也导致了企业的受到的网络安全威胁也不断增加。在本月&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的计算机服务…

无线物理层安全学习

文章目录 3.17到3.203.85到3.88 3.17到3.20 3.85到3.88