(day9) 自学Java——常用API

news/2024/9/8 5:55:20/

AIP就是Java已经写好的各种功能的java类

目录

1.Math

2.System

3.Runtime

4.Object

5.对象工具类Objects

6.BIgInteger

7.BigDecima

8.正则表达式

(1)爬虫

(2)带条件爬取,贪婪爬取和识别正则的两个方法

(3)捕获分组和非捕获分组

9.JDK7以前时间相关类

10.JDK8新增时间相关类

11.包装类

12.综合练习


1.Math

工具类:类名知其意,私有化构造方法,方法定义为静态。

Math是进行数学计算的工具类

Math的sqrt,开平方

Math的cbrt,开立方

Math的ceil(英语:天花板),是向上取整

Math的floor(英语:地板),是向下取整

Math的random的取值范围,0.0是闭区间(包括0.0),1.0是开区间(不包括1.0)

Math的abs有个bug,比如,int类型的取值范围是 -2147483648~2147483647,如果Math.abs(-2147483648)的结果还是 -2147483648,因为int的范围不包括正数2147483648。

如果用Math.absExact(-2147483648),超出范围会报错

 练习:判断一个数是否为质数

左边的因子小于等于平方根,右边的因子大于等于平方根。所以只用遍历平方根左边的因子即可

public class MathDemo {public static void main(String[] args) {System.out.println(getPrime(7));}public static boolean getPrime(int number) {for (int i = 2; i <=Math.sqrt(number); i++) {if (number%i==0){return false;}}return true;}
}

练习:自幂数,一个n位自然数等于自身各个数位上数字的n次幂之和

要求1:统计一共有多少个水仙花数。

要求2:证明没有两位的自幂数。

要求3:分别统计有多少个四叶玫瑰数和五角星数(答案都为3)

//要求1:统计一共有多少个水仙花数。
public class MathDemo {public static void main(String[] args) {int count=0;for (int i = 100; i <=999; i++) {int ge=i%10;int shi=i/10%10;int bai=i/100%10;double result=Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3);if (i==result){count++;System.out.println(i);}}System.out.println(count+"个");}
}
//要求2:证明没有两位的自幂数。
public class MathDemo {public static void main(String[] args) {int count=0;for (int i = 10; i <=99; i++) {int ge=i%10;int shi=i/10%10;double result=Math.pow(ge,2)+Math.pow(shi,2);if (i==result){count++;System.out.println(i);}}System.out.println(count+"个");}
}
//要求3:分别统计有多少个四叶玫瑰数和五角星数(答案都为3)
public class MathDemo {public static void main(String[] args) {int count=0;for (int i = 1000; i <=9999; i++) {int ge=i%10;int shi=i/10%10;int bai=i/100%10;int qian=i/1000%10;double result=Math.pow(ge,4)+Math.pow(shi,4)+Math.pow(bai,4)+Math.pow(qian,4);if (i==result){count++;System.out.println(i);}}System.out.println(count+"个");}
}
//----------------------------------------------------------------
public class MathDemo {public static void main(String[] args) {int count=0;for (int i = 10000; i <=99999; i++) {int ge=i%10;int shi=i/10%10;int bai=i/100%10;int qian=i/1000%10;int wan=i/10000%10;double result=Math.pow(ge,5)+Math.pow(shi,5)+Math.pow(bai,5)+Math.pow(qian,5)+Math.pow(wan,5);if (i==result){count++;System.out.println(i);}}System.out.println(count+"个");}
}

2.System

System也是一个工具类,提供了一些与系统相关的方法

 

1.如果数据源数组和目的地数组都是基本数据类型,两者类型必须保持一致,否则会报错

2.拷贝的时候需要考虑数组长度,超出范围,也会报错

3.如果数据源数组和目的地数组都是引用数据类型,子类类型可以赋值给父类

3.Runtime

1.Runtime表示当前虚拟机的运行环境

2.这个类里的方法不是静态的,想要调用方法,就要获取Runtime的对象。

3.Runtime的对象不能直接new,要用getRuntime()

4.Object

在顶级父类中只有无参的构造方法,因为不可能有所有事物的共性,也就没有参数

 

1.如果打印一个对象,想要看到属性值,那就要重写toString方法。

2.在重写方法中,把对象的属性值进行拼接。

1.如果没有重写equals方法,那么默认使用Object中的方法进行比较,比较地址值是否相等。

2.一般地址值对于我们意义不大,所以会重写,重写之后比较的是对象内部的属性值。

 

 对象克隆,把A对象的属性值完全拷贝给B,也叫对象拷贝,对象复制

 字符串在串池中,复用。

5.对象工具类Objects

Objects是一个对象工具类,提供了一些操作对象的方法。

6.BIgInteger

 BIgInteger是个对象,不能直接加减乘除等计算,都要用方法来完成。

 

  将二进制数按规则(32位为一组)分割,然后存到数组中,数组中第二个是补码

7.BigDecima

 BigDecima作用:1.用于小数的精确运算。

                                 2.用来表示很大的小数

1.如果表示的数字不大,没有超出double的取值范围,建议使用静态方法。

2.如果表示的数字比较大,超出了double的取值范围,建议使用构造方法。

3.如果传递的是0~10的之间整数,包括0和10,那么方法会返回已经创建好的对象,不会重

   新new,(10.0就会使用new,因为10.0不是int类型)。

 存储方式:遍历每个字符,然后转换为ascii码,放到数组中存储。

8.正则表达式

作用:1.校验字符串是否满足规则

            2.在一段文本中查找满足要求的内容

类:pattern(在api文档查看)

1.正则表达式中,从左到右,一个一个匹配。

2.[ ] 方括号表示一个范围 ,在这个范围里只能匹配一个字符。

3.{ }大括号表示匹配字符个数。例:{6,}至少匹配6个字符,{4}只匹配4个字符。

4.如果要求两个范围的交集,要用&&,不能只写一个,一个&只是一个简单的符号。

5.” \d “等使用时,需要加个” \ “(转义)

6.( )小括号表示分组。

7.  (?i)问号和字符i组合,可以忽略它后面字符的大小写。a(?i)bc,这个就会忽略bc的大小  

    写,所以 aBC是true。

编写写正则表达式: 1.按照正确数据进行拆分

                                     2.找出每部分规律,并编写正则表达式,每部拼接起来就是完整表达式

                                     3.从左到右书写

练习:

用正则表达式验证用户输入的手机号码是否满足要求,13276898988,13245647587

用正则表达式验证用户输入的邮箱是否满足要求,2909378766@qq.com,zhangsan@itcast.cnn

用正则表达式验证用户输入的座机电话号码是否满足要求,020-2323343,0712-2425687

public class RegexDemo {public static void main(String[] args) {//匹配电话号码13276898988,15245647587//第一位一定是1,第二位在3~9之间,后面的数字随机String regex1="1[3-9]\\d{9}";System.out.println("13276898988".matches(regex1)); //trueSystem.out.println("15245647587".matches(regex1)); //trueSystem.out.println("-------------------------");//匹配邮箱是否满足要求,2909378766@qq.com,zhangsan@itcast.cnn,dlei0009@pci.com.cn//@前面部分:\w+String regex2="\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";System.out.println("2909378766@qq.com".matches(regex2));System.out.println("zhangsan@itcast.cnn".matches(regex2));System.out.println("dlei0009@pci.com.cn".matches(regex2));System.out.println("-------------------------");//匹配座机电话号码是否满足要求,020-2323343,0712-2425687,0212453424//?表示匹配-,0次或1次//-后面数字的第一位不能为0String regex3="0\\d{2,3}-?[1-9]\\d{4,9}";System.out.println("020-2323343".matches(regex3)); //trueSystem.out.println("0712-2425687".matches(regex3)); //trueSystem.out.println("0212453424".matches(regex3)); //trueSystem.out.println("-------------------------");}
}

练习:用正则完成以下需求

验证用户名是否满足要求:

        大小写字母,数字,下划线一共4-16位。

验证身份证号码是否满足要求:

        简单要求:18位,前17位任意数字,最后一位可以是数字,可以是大写或小写的x。

        复杂要求:按照身份证号码的格式严格要求。

public class RegexDemo {public static void main(String[] args) {//用户名校验//大小写字母,数字,下划线一共4-16位。String regex1="\\w{4,16}";System.out.println("zhangannn".matches(regex1)); //trueSystem.out.println("xxxx_ssss".matches(regex1)); //trueSystem.out.println("-----------------");//乱写的511364874323458473,51156497432345847x,51136987432645847X//18位,前17位任意数字,最后一位可以是数字,可以是大写或小写的x。String regex2="[1-9]{17}[\\dxX]";  //或者[1-9]{17}(\\d|x|X)或者[1-9]{17}(\\d|(?i)x)System.out.println("511364874323458473".matches(regex2));System.out.println("51156497432345847x".matches(regex2));System.out.println("51136987432645847X".matches(regex2));System.out.println("-----------------");//身份证号码严格校验//前面6位:省份,市区,派出所等信息,第一位不能为0,后面5位是任意数字   [1-9]\\d{5}//年份前半段:18,19,20     年份后半段:任意数字出现两次   (18|19|20)\\d{2}//月份:01~09 10 11 12   (0[1-9]|1[0-2])//日期:01~31   (0[1-9]|[12]\\d|3[01])//最后四位:任意数字出现3次,最后一位可以是数字也可以是大写或小写的x  \\d{3}(\\d|(?i)x)String regex3="[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|(?i)x)";System.out.println("51156187405291747x".matches(regex3));//错误的身份证falseSystem.out.println("51136197404202047X".matches(regex3));//错误的身份证falseSystem.out.println("513723180111050521".matches(regex3));//正确的身份证true}
}

(1)爬虫

Pattern:表示正则表达式

Matcher:文本匹配器,作用是按照正则表达式的规则去读取字符串,从头开始读取

(在大串中去找符合匹配规则的子串)

1.获取正则表达式的对象

Pattern p=Pattern.compile("Java\\d{0,2}");

2.获取文本匹配器的对象

Matcher m=p.matcher(str);

3.查找匹配内容是否存在

m.find();

4.获取查找到的能匹配的内容

m.group();

练习
本地爬虫和网络爬虫
有如下文本,请按照要求爬取数据。
Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和ava11,因为这
两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台。
要求:找出里面所有的JavaXX

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexDemo {public static void main(String[] args) {String str="Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为这\n" +"两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";Pattern p=Pattern.compile("Java\\d{0,2}");Matcher m=p.matcher(str);while (m.find()){System.out.println(m.group());}}
}

练习
需求:把下面文本中的电话,邮箱,手机号,热线都爬取出来。
来黑马程序员学习Java,
电话:18512516758,18512508907
或者联系邮箱:boniu@itcast.cn,
座机电话:01036517895,010-98951256
邮箱:bozai@itcast.cn,
热线电话:400-618-9090,400-618-4000,4006184000,4006189090

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexDemo {public static void main(String[] args) {String str="练习\n" +"需求:把下面文本中的电话,邮箱,手机号,热线都爬取出来。\n" +"来黑马程序员学习Java,\n" +"手机号:18512516758,18512508907\n" +"或者联系邮箱:boniu@itcast.cn,\n" +"座机电话:01036517895,010-98951256\n" +"邮箱:bozai@itcast.cn,\n" +"热线电话:400-618-9090,400-618-4000,4006184000,4006189090";//邮箱:\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}//座机:010-?\\d{8}//手机:1[3-9]\d{9}//热线:400-?618-?[49]0[09]0String regex="\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}|010-?\\d{8}|1[3-9]\\d{9}|400-?618-?[49]0[09]0";Pattern p=Pattern.compile(regex);Matcher m=p.matcher(str);while (m.find()){System.out.println(m.group());}}
}

(2)带条件爬取,贪婪爬取和识别正则的两个方法

贪婪爬取:尽可能多的爬取数据。

非贪婪爬取:尽可能少的爬取数据。

(Java中默认贪婪爬取)

(3)捕获分组和非捕获分组

分组就是一个()小括号

练习: 捕获分组就是把这一组的数据捕获出来,再用一次。
需求1:判断一个字符串的开始字符和结束字符是否一致?只考虑一个字符
举例: a123a    b456b    17891      &abc&
需求2:判断一个字符串的开始部分和结束部分是否一致?可以有多个字符
举例: abc123abc         b456b        123789123        &!@abc&!@
需求3:判断一个字符串的开始部分和结束部分是否一致?开始部分内部每个字符也需要一致
举例: aaa123aaa         bbb456bbb     111789111         &&abc&&

public class RegexDemo {public static void main(String[] args) {
//        需求1:判断一个字符串的开始字符和结束字符是否一致?只考虑一个字符
//        举例: a123a    b456b    17891      &abc&
//                需求2:判断一个字符串的开始部分和结束部分是否一致?可以有多个字符
//        举例: abc123abc         b456b        123789123        &!@abc&!@
//                需求3:判断一个字符串的开始部分和结束部分是否一致?开始部分内部每个字符也需要一致
//        举例: aaa123aaa         bbb456bbb     111789111         &&abc&&//需求1String regex="(.).+\\1";System.out.println("a123a".matches(regex));//trueSystem.out.println("b456b".matches(regex));//trueSystem.out.println("17891".matches(regex));//trueSystem.out.println("&abc&".matches(regex));//trueSystem.out.println("-------------------");//需求2String regex1="(.+).+\\1";System.out.println("abc123abc".matches(regex1));//trueSystem.out.println("b456b".matches(regex1));//trueSystem.out.println("123789123".matches(regex1));//trueSystem.out.println("&!@abc&!@".matches(regex1));//trueSystem.out.println("-------------------");//需求3//(.)表示一个任意字符,把它看成一组String regex2="((.)\\2*).+\\1";System.out.println("aaa123aaa".matches(regex2));//trueSystem.out.println("bbb456bbb".matches(regex2));//trueSystem.out.println("111789111".matches(regex2));//trueSystem.out.println("&&abc&&".matches(regex2));//true}
}

练习:口吃替换

需求:将字符串:我要学学编编编编程程程程程

替换为:我要学编程

public class RegexDemo {public static void main(String[] args) {String str="我要学学编编编编程程程程程";String regex="(.)\\1+";String result=str.replaceAll(regex,"$1");System.out.println(result);}
}

9.JDK7以前时间相关类

 练习:将2000-11-11转换成2000年11月11日

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class RegexDemo {public static void main(String[] args) throws ParseException {String str="2000-11-11";//解析SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Date d=sdf.parse(str);//格式化SimpleDateFormat sdf1=new SimpleDateFormat("yyyy年MM月dd日");String result=sdf1.format(d);System.out.println(result);}
}

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class RegexDemo {public static void main(String[] args) throws ParseException {String startTime="2023年11月11日 0:00:00";String endTime="2023年11月11日 0:10:00";String clickTimeJ="2023年11月11日 0:01:00";String clickTimeP="2023年11月11日 0:11:00";SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 H:mm:ss");Date start = sdf.parse(startTime);Date end = sdf.parse(endTime);Date xiaoJ = sdf.parse(clickTimeJ);Date xiaoP = sdf.parse(clickTimeP);method(start, end, xiaoJ);  //参加上了method(start, end, xiaoP);  //没参加上}public static void method(Date start, Date end, Date xiao) {if (start.getTime()<=xiao.getTime()&&end.getTime()>=xiao.getTime()){System.out.println("参加上了");}else{System.out.println("没参加上");}}
}

1.Calendar是一个抽象类,不能直接new,而是通过一个静态方法获取到子类对象。

2.底层原理:会根据系统的不同时区来获取不同的日历对象,默认表示当前时间。

                    会把时间中的纪元,年,月,日,时,分,秒,星期,等等放到一个数组中。   

10.JDK8新增时间相关类

 

Instant.now()获取对象

上面两个是静态的,要用类名来调用;下面的要用对象来调用。

11.包装类

包装类:基本数据类型对应的引用类型

(简言说,就是将基本数据类型变成一个对象

 

 

 

 

 键盘输入用nextLine(),然后进行类型转换。

12.综合练习

练习1:键盘录入一些1~100的整数,并添加到集合中,直到集合内数据和超过200为止。

import java.util.ArrayList;
import java.util.Scanner;public class Test {public static void main(String[] args){//创建集合ArrayList<Integer> al=new ArrayList<>();Scanner sc = new Scanner(System.in);while (true) {System.out.print("请输入1~100的数字:");String line = sc.nextLine();Integer num = Integer.parseInt(line);if (num<1||num>100){System.out.println("不符合要求");continue;}al.add(num);int sum=0;for (int i = 0; i < al.size(); i++) {sum=sum+al.get(i);}if (sum>=200){System.out.println(sum);return;}}}
}

练习2:自己实现parseInt方法的效果,将字符串形式的数据转成整数。

要求:字符串里只能是数字,不能有其他字符

            最少一位,最多十位

           0不能开头

public class Test {public static void main(String[] args){String str="12345";String regex="[1-9]\\d{0,9}";if(!str.matches(regex)){System.out.println("数据错误");}else{int result=0;for (int i = 0; i < str.length(); i++) {int num=str.charAt(i)-'0';result=result*10+num;}System.out.println(result+1);//可以进行运算,所以已经转换成int类型了}}
}

练习3:

定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制。

public class Test {public static void main(String[] args){int num=8;String str=toBinaryString(num);System.out.println(str);}private static String toBinaryString(int num) {StringBuilder sb=new StringBuilder();while (num!=0){int remiandar=num%2;//倒着拼接数据sb.insert(0,remiandar);num=num/2;}String result=sb.toString();return result;}
}

练习4:使用代码实现计算你活了多少天,用JDK7和JDK8的两种方式完成

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Test {public static void main(String[] args) throws ParseException {//JDK7计算要用毫秒值//出生日期的毫秒值String birthday="2001-12-05";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Date birthTime = sdf.parse(birthday);long time=birthTime.getTime();//当前日期的毫秒值long time2=System.currentTimeMillis();//当前日期-出生日期long result=time2-time;result=result/1000/60/60/24;System.out.println(result);//JDK8LocalDate ld1=new LocalDate.of(2001,12,05);LocalDate ld2=new LocalDate.now();long days=ChronoUnit.DAYS.between(ld1,ld2);System.out.println(days);}
}

练习5:判断任意的一个年份是闰年还是平年。

要求:用JDK7和JDK8的两种方式完成

提示:二月有29天是闰年,一年366天是闰年

import java.text.ParseException;
import java.time.LocalDate;
import java.util.Calendar;public class Test {public static void main(String[] args) throws ParseException {//JDK7Calendar c=Calendar.getInstance();c.set(2000,2,1);//表示3月1号//把日历往前减一天,如果前一天是29就是闰年c.add(Calendar.DAY_OF_MONTH,-1);int days=c.get(Calendar.DAY_OF_MONTH);if (days==29){System.out.println("闰年");}//JDK8LocalDate ld=LocalDate.of(2000,3,1);LocalDate days1 = ld.minusDays(1);int days2=days1.getDayOfMonth();//System.out.println(days2);if (days2==29){System.out.println("闰年");}}
}

 


http://www.ppmy.cn/news/20490.html

相关文章

Java深拷贝和浅拷贝Map对象

目录1 将Map深拷贝到另一个Map对象当中2 浅拷贝Map1 将Map深拷贝到另一个Map对象当中 今天赋值的时候遇到的小坑 相关文章推荐&#xff1a; Java克隆方式避免频繁创建对象优化方案 https://blog.csdn.net/ZGL_cyy/article/details/126556907 1.需求说明 将一个MapA对象中所…

第四十七章 动态规划——状态压缩模型

第四十七章 动态规划——状态压缩模型一、什么是状态压缩二、例题讲解1、AcWing 1064. 小国王&#xff08;1&#xff09;问题&#xff08;2&#xff09;思路&#xff08;3&#xff09;代码2、AcWing 327. 玉米田&#xff08;1&#xff09;问题&#xff08;2&#xff09;思路&am…

AMQP 0-9-1 模型解释

官方文档链接&#xff1a;https://www.rabbitmq.com/tutorials/amqp-concepts.html 文章目录1. AMQP协议是什么2. AMQP模型2.1 工作过程2.2 深入理解3. 交换机3.1 默认交换机3.2 直连交换机3.3 扇形交换机3.4 主题交换机3.5 头交换机3.6 交换机小结4. Queue队列队列属性队列创建…

基于php的婚纱商城管理系统

摘要网络技术给生活带来了十分的便利。所以把婚纱商城管理系统与现在网络相结合。在婚纱商城发展的整个过程中&#xff0c;婚纱信息管理担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类管理系统程序也在不断改进。本课题所设计的婚纱商城管理系统&#xff0…

机器学习中的数学原理——对数似然函数

这个专栏主要是用来分享一下我在 机器学习中的 学习笔记及一些感悟&#xff0c;也希望对你的学习有帮助哦&#xff01;感兴趣的小伙伴欢迎 私信或者评论区留言&#xff01;这一篇就更新一下《 白话机器学习中的数学——对数似然函数》&#xff01; 目录 一、什么是对数似然函数…

Laravel笔记-使用composer搭建Laravel环境(开发工具phpStorm)

以前写过一个&#xff0c;但没这个composer直接搭建的方便。在此记录下。 使用国内的 Composer 加速镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 新建一个名为MyRestfulTest的项目&#xff1a; composer create-project larave…

对于初学python的小白大佬们有什么建议吗?

我认为态度是一块重要的敲门砖。米卢说&#xff1a;“态度决定一切”。你对人生的态度是这个世界真正的试金石。对不同的事情要有不同的态度。而对待自学&#xff0c;认真就妥了。 首先要为自己设定一个目标&#xff0c;对于初学者&#xff0c;看书的话可以看《Head First Pyt…

【Node.js实战】一文带你开发博客项目之Express重构(初始化环境,处理 session,连接 redis)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…

网络编程 -- socket 套接字

文章目录socket 套接字UDP 和 TCP 区别1. 有连接 VS 无连接2. 可靠传输 VS 不可靠传输3. 面向字节流 VS 面向数据报4. 全双工UDP 数据报套接字编程TCP 数据报套接字编程socket 套接字 本文就来学习一下 网络编程&#xff0c; 既然谈到了网络编程&#xff0c;那么要如何进行呢 &…

软件设计(二)

软件设计&#xff08;一&#xff09;https://blog.csdn.net/ke1ying/article/details/128779601 11、windows系统当双击.jpg文件的时候&#xff0c;系统会通过建立的 文件关联 来决定使用什么程序来打开该图像文件。 &#xff08;双击.jpg文件&#xff0c;系统会建立‘window…

【FreeRTOS】详细讲解FreeRTOS的软件定时器及通过示例讲述其用法

软件定时器 所谓定时器&#xff0c;也就可以类比生活中人们常用的闹钟&#xff0c;可以单次响铃提醒&#xff0c;也可以间隔固定时间响铃提醒&#xff1b;与FreeRTOS定时器不同的是周期不同&#xff0c;FreeRTOS的周期更加短&#xff0c;一般使用毫秒(ms)、秒(s)。   软件定时…

【SpringCloud】Gateway服务网关的基本使用

一、初识Gateway服务网关为什么需要网关&#xff1f;在微服务中&#xff0c;各个模块之间的调用&#xff0c;也可以称其为远程调用&#xff01;但是&#xff0c;如果是外部&#xff08;用户&#xff09;对微服务进行访问时&#xff0c;发的请求能不加处理的直接访问微服务吗&am…

【全套完结】通信原理----全套Matlab仿真实验报告

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识&#xff0c;如果大家喜欢&#xff0c;别忘点个赞加个关注哦&#xff0c;让我们一起共同进步~ &#x…

2Pai半导体-推出π122E61双通道数字隔离器 智能分压技术 兼容代替Si8622ET-IS

2Pai半导体-推出π122E61双通道数字隔离器 智能分压技术 兼容代替Si8622ET-IS 电路简单、稳定性更高 &#xff0c;具有出色的性能特征和可靠性&#xff0c;整体性能优于光耦和基于其他原理的数字隔离器产品。 产品传输通道间彼此独立&#xff0c;可实现多种传输方向的配置&…

微信小程序页面跳转三种方式

为了不让用户在使用小程序时造成困扰&#xff0c;微信小程序规定页面路径只能是五层&#xff0c;请尽量避免多层级的交互方式。 页面跳转的话就涉及到了多个页面层级 第一种&#xff1a;wx.navigateTo(OBJECT) 保留当前页面&#xff0c;跳转到应用内的某个页面&#xff0c;使用…

c++实现堆排序

看了一下优先队列&#xff0c;查了一下堆排序。堆排序主要就是建最大堆&#xff08;最小堆&#xff09;和交换2个操作。如果建的是最大堆&#xff0c;那么交换的时候&#xff0c;父节点就和最大的子节点比较&#xff0c;如果它比最大的子节点还大&#xff0c;那就不用比了。因为…

Android 实现隐私政策提示弹窗(完整版)

android studio版本&#xff1a;2021.2.1例程名称&#xff1a;pravicydialog功能&#xff1a;1、启动app后弹窗隐私协议2、屏蔽返回键3、再次启动不再显示隐私协议。本例程的绝大部分代码来自下面链接&#xff0c;因为本人改了一些&#xff0c;增加了一些功能&#xff0c;所以不…

深度学习论文: Multi-modal Sensor Fusion for Auto Driving Perception: A Survey

深度学习论文: Multi-modal Sensor Fusion for Auto Driving Perception: A Survey Multi-modal Sensor Fusion for Auto Driving Perception: A Survey PDF: https://arxiv.org/pdf/2202.02703.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: h…

【Python】request库InsecureRequestWarning的原因

今天在测试我自己写的api的时候&#xff0c;发现了之前出现的一个warning的真正原因 1.起因 先来看请求api的代码 def ApiRq(account:str,passwd:str,background):url "https://example.com/shop-url"params { # 参数涉及到隐私&#xff0c;省略}res requests.…

《JavaScript 核心原理解析》学习笔记 Day 13 作用域 对象

在 JavaScript 中&#xff0c;向没有声明的变量名赋值&#xff0c;会隐式地创建一个全局变量&#xff1b;全局变量会被绑定为全局对象&#xff08;global&#xff09;的属性。因此&#xff0c;JavaScript 的变量环境&#xff08;或者全局环境&#xff09;与对象系统就关联了起来…