第七章:Java常用类
第七章:Java常用类
7.1:字符串相关的类
-
String的特性
-
String表示是字符串,使用一对""引起来表示。 -
String声明为final的,不可被继承。 -
String实现了Serializable、Comparable接口,表示字符是支持序列化和比较大小。 -
String内部定义了final char[] value用于存储字符串数据。 -
String代表不可变的字符串序列。简称:不可变性。 -
通过字面量的方式(区别于
new)给一个字符串赋值,此时的字符串值声明在字符串常量池中。 -
字符串常量池中是不会存储相同内容的字符串的。
-
通过
new String()的方式创建一个字符串,是数据在堆空间中开辟空间以后对应的地址值。//字面量的定义方式 String s1 = "abc"; String s2 = "abc"; System.out.println(s1 == s2); //trueString s3 = "abc"; s3 += "def"; System.out.println(s3); //abcdef System.out.println(s2); //abc -
常量与常量的拼接结果在常量池。
-
只要其中有一个是变量,结果就在堆中。
-
如果拼接的结果调用
intern()方法,返回值就在常量池中。String s1 = "javaEE"; String s2 = "hadoop"; String s3 = "javaEEhadoop";String s4 = "javaEE" + "hadoop"; String s5 = s1 + "hadoop";System.out.println(s3 == s4);//true System.out.println(s3 == s5);//falseString s6 = s5.intern(); System.out.println(s3 == s6);//true
-
-
字符串常用方法
-
int length():返回字符串的长度。 -
char cahrAt(int index):返回某索引出的字符。 -
boolean isEmpty():判断是否是空字符串。 -
String toLowerCase():使用默认语言环境,将String中的所有字符转换为小写。 -
String toUpperCase():使用默认语言环境,将String中的所有字符转换为大写。 -
String trim():返回字符串的副本,忽略前导空白和尾部空白。String s1 = "HelloWorld"; System.out.println(s1.length()); //10 System.out.println(s1.charAt(9)); //d System.out.println(s1.isEmpty()); // falseString s2 = s1.toLowerCase(); System.out.println(s2); //helloworldString s3 = " he llo world "; String s4 = s3.trim(); System.out.println("-----" + s4 + "-----"); //----he llo world---- -
boolean equals(Object obj):比较字符串的内容是否相同。 -
boolean equalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写。 -
String concat(String str):将指定字符串连接到此字符串的结尾。 -
int compareTo(String anotherString):比较两个字符串的大小。 -
String substring(int beginIndex):返回一个新的字符串,从beginIndex开始截取到最后的一个子字符串。 -
String substring(int beginIndex, int endIndex):从beginIndex开始截取到endIndex(不包含)的一个字符串String s1 = "HelloWorld"; String s2 = "helloworld"; System.out.println(s1.equals(s2)); // false System.out.println(s1.equalsIgnoreCase(s2)); // trueString s3 = "abc"; String s4 = s3.concat("def"); System.out.println(s4); //abcdefString s5 = "abc"; String s6 = new String("abe"); System.out.println(s5.compareTo(s6)); //-2String s7 = "小王同学要加油"; String s8 = s7.substring(2); System.out.println(s8); //同学要加油 String s9 = s7.substring(2, 5); System.out.println(s9); //同学要 -
boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束。 -
boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始。 -
boolean startWith(String prefix, int toffset):测试此字符串从指定索引开始的字符串是否以指定前缀开始String str1 = "hellowworld"; boolean b1 = str1.endsWith("rld"); System.out.println(b1); //trueboolean b2 = str1.startsWith("He"); System.out.println(b2); //falseboolean b3 = str1.startsWith("ll",2); System.out.println(b3); //true -
boolean contains(CharSequence s):当且仅当此字符串包含指定的char值序列时,返回true。 -
int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。 -
int indexOf(String str, int fromIndex):返回指定字符串在此字符串中第一次出现的索引,从指定的索引开始
-
int lastIndexOf(String str):返回指定字符串在此字符串中最右边出现的索引。 -
int lastIndexOf(String str, int fromIndex):返回指定字符串在此字符串中最后一次出现的索引,从指定的索引开始反向搜索。
String str1 = "hellowworld"; String str2 = "wor"; System.out.println(str1.contains(str2)); //true System.out.println(str1.indexOf("lol")); //-1(表示没有找到) System.out.println(str1.indexOf("lo",5)); //-1String str3 = "hellorworld"; System.out.println(str3.lastIndexOf("or")); //6 System.out.println(str3.lastIndexOf("or",6)); //6 -
String replace(char oldChar, char newChar):返回一个新的字符串,它是通过newChar替换此字符串中出现的所有orlChar得到的。 -
String replace(CharSequence target, CharSequence reqlacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的字符串。 -
String replaceAll(String regex, String replacement):使用给定的reqlacement替换此字符串所有匹配给定的正则表达式的字符串。 -
String replaceFirst(String regex, String replacement):使用给定的replacement替换此字符串匹配给定的正则表达式的第一个字符串。String str1 = "小王同学要加油小王"; String str2 = str1.replace('王', '胡'); System.out.println(str2); //小胡同学要加油小胡String str3 = str1.replace("小王", "小胡"); System.out.println(str3); //小胡同学要加油小胡String str = "12hello34world5java7891mysql456"; String string = str.replaceAll("\\d+", ",").replaceAll("^,|,$", ""); System.out.println(string); //hello,world,java,mysql -
boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。 -
String[] split(String regex):根据给定正则表达式的匹配拆分此字符串 -
String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中String str = "12345"; boolean matches = str.matches("\\d+"); System.out.println(matches); //truestr = "hello|world|java"; String[] strs = str.split("\\|"); for (int i = 0; i < strs.length; i++) {System.out.print(strs[i] + "\t"); //hello world java }
-
-
String与基本数据类型转换-
字符串 ———— 基本数据类型、包装类
String str1 = "123"; // 字符串 转 基本数据类型、包装类 int num = Integer.parseInt(str1); // 基本数据类型、包装类 转 字符串 String str2 = String.valueOf(num); -
字符数组 ———— 字符串
String str1 = "abc123"; // 字符串 转 字符数组 char[] charArray = str1.toCharArray(); // 字符数组 转 字符串 char[] arr = new char[]{'h','e','l','l','o'}; String str2 = new String(arr); -
字节数组 ———— 字符串
String str1 = "abc123中国"; // 字符串 转 字节数组 byte[] bytes = str1.getBytes(); //使用默认字符集将字符串转字节数组 byte[] gbks = str1.getBytes("gbk"); //使用gbk格式的字符集将字符串转字符数组,此处会有异常 // 字符数组 转 字符串 String str2 = new String(bytes);//使用默认字符集将字符数组转字节串 String str4 = new String(gbks, "gbk");//使用gbk格式的字符集将字符数组转字符串
-
-
StringBuffer和StringBuilder类-
StringBuffer、StringBuilder代表可变的字符序列,可以对字符串内容进行增删,此时不会产生新的对象。 -
StringBuffer、StringBuilder底层使用char[]存储。 -
StringBuffer是JDK 1.0中声明的,是线程安全的可变字符序列。 -
StringBuilder是JDK 5.0中声明的,是线程不安全的可变字符序列。 -
StringBuffer、StringBuilder使用空参构造器时,底层创建了一个长度是16的数组。public StringBuffer() {super(16); } -
如果要添加的数据底层数组盛不下了,那就需要扩容底层的数组。默认情况下,扩容为原来容量的2倍+2,同时将原有数组中的元素复制到新数组中。
// StringBuffer类的append方法 public synchronized StringBuffer append(String str) {toStringCache = null;super.append(str);return this; } // StringBuffer类父类AbstractStringBuilder类的append方法 public AbstractStringBuilder append(String str) {if (str == null)return appendNull();int len = str.length();ensureCapacityInternal(count + len);str.getChars(0, len, value, count);count += len;return this; } // AbstractStringBuilder类的ensureCapacityInternal方法 private void ensureCapacityInternal(int minimumCapacity) {if (minimumCapacity - value.length > 0) {value = Arrays.copyOf(value, newCapacity(minimumCapacity));} } // AbstractStringBuilder类的newCapacity方法 private int newCapacity(int minCapacity) {int newCapacity = (value.length << 1) + 2;if (newCapacity - minCapacity < 0) {newCapacity = minCapacity;}return (newCapacity <= 0 || MAX_ARRAY_SIZE - newCapacity < 0)? hugeCapacity(minCapacity): newCapacity; } -
开发中建议使用
StringBuffer(int capacity)或StringBuilder(int capacity)指定数组的长度。
-
-
StringBuffer和StringBulider常用方法StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接。StringBuffer delete(int start, int end):删除指定位置的内容。StringBuffer replace(int start, int end, String str):把[start, end)位置替换为str。StringBuffer insert(int offset, xxx):在指定位置插入xxx。StringBuffer reverse():把当前字符序列逆转。
7.2:JDK8之前日期时间API
-
java.lang.System类-
public static long currentTimeMillis():返回当前时间与1970年1月1日0时之间以毫秒为单位的时间差。long time = System.currentTimeMillis(); System.out.println(time);
-
-
java.util.Date类- 构造器
Date():使用无参构造器创建的对象可以获取本地当前时间。Date(long date):创建指定毫秒数的Date对象。
- 方法
toString():显示当前的年、月、日、时、分、秒。getTime():获取当前Date对象对应的毫秒数
//构造器一:Date():创建一个对应当前时间的Date对象 Date date1 = new Date(); System.out.println(date1.toString()); System.out.println(date1.getTime()); //构造器二:创建指定毫秒数的Date对象 Date date2 = new Date(155030620410L); System.out.println(date2.toString()); // 将java.util.Date对象转换为java.sql.Date对象 Date date6 = new Date(); java.sql.Date date7 = new java.sql.Date(date6.getTime()); - 构造器
-
java.text.SimpleDateFormat类
Date类的API不易于国际化,大部分被废弃了。java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类。-
构造器
SimpleDateFormat():默认的模式和语言环境创建对象。SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建对象
-
格式化
public String format(Date date):格式化时间对象date。
-
解析
public Date parse(String source):给定字符串的开始解析文本,以生成一个日期。
-
按照指定的方式格式化和解析

//实例化SimpleDateFormat:使用默认的构造器 SimpleDateFormat sdf = new SimpleDateFormat(); //格式化:日期 --->字符串 Date date = new Date(); String format = sdf.format(date); System.out.println(format); //解析:格式化的逆过程,字符串 ---> 日期 //要求字符串必须是符合SimpleDateFormat识别的格式(通过构造器参数体现)。否则,抛异常。 String str = "22-12-18 上午11:43"; Date date1 = sdf.parse(str); System.out.println(date1); //按照指定的方式格式化和解析:调用带参的构造器 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); //格式化 String format1 = sdf1.format(date); System.out.println(format1); //解析 Date date2 = sdf1.parse("2020-02-18 11:48:27"); System.out.println(date2); -
-
java.util.Calendar(日历)类Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。- 获取
Calendar实例- 使用
Calendar.getInstance()方法。 - 调用它的子类
GregorianCalendar的构造器。
- 使用
- 常用方法
public int get(int field):获取想要的时间信息。public void set(int field, int amount):设置想要的时间信息。public void add(int field, int amount):在现在的时间增加到想要的时间。public final Date getTime():日期转为时间。public final void setTime(Date date):时间转为日期。
- 注意
- 获取月份时:一月是0,二月是1,以此类推,12月是11。
- 获取星期时:周日是1,周二是2,以此类推,周六是7。
//实例化 Calendar calendar = Calendar.getInstance();//get() int days = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(days);//set() calendar.set(Calendar.DAY_OF_MONTH,22); days = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(days);//add() calendar.add(Calendar.DAY_OF_MONTH,-3); days = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(days);//getTime():日历类---> Date Date date = calendar.getTime(); System.out.println(date);//setTime():Date ---> 日历类 Date date1 = new Date(); calendar.setTime(date1); days = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(days);
7.3:JDK8中新日期时间API
-
LocalDate、LocalTime、LocalDateTime类LocalDate、LocalTime、LocalDateTime类的实例对象是不可变对象。-
LocalDate代表IOS格式(yyyy-MM-dd)的日期,可以存储生日、纪念日等日期。 -
LocalTime表示一个时间,而不是日期。 -
LocalDateTime是用来表示日期和时间的。 -
相关方法

//now():获取当前的日期、时间、日期+时间 LocalDate localDate = LocalDate.now(); LocalTime localTime = LocalTime.now(); LocalDateTime localDateTime = LocalDateTime.now();System.out.println(localDate); System.out.println(localTime); System.out.println(localDateTime); //of():设置指定的年、月、日、时、分、秒。没有偏移量 LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 6, 13, 23, 43); System.out.println(localDateTime1); //getXxx():获取相关的属性 System.out.println(localDateTime.getDayOfMonth()); System.out.println(localDateTime.getDayOfWeek()); System.out.println(localDateTime.getMonth()); System.out.println(localDateTime.getMonthValue()); System.out.println(localDateTime.getMinute()); //体现不可变性 //withXxx():设置相关的属性 LocalDate localDate1 = localDate.withDayOfMonth(22); System.out.println(localDate); System.out.println(localDate1);LocalDateTime localDateTime2 = localDateTime.withHour(4); System.out.println(localDateTime2); //plusXxx():增加相关属性 LocalDateTime localDateTime3 = localDateTime.plusMonths(3); System.out.println(localDateTime3); //minuXxx():减少相关属性 LocalDateTime localDateTime4 = localDateTime.minusDays(6); System.out.println(localDateTime4); -
-
瞬时
Instant-
Instant时间线上的一个瞬时点。这可能被用来记录应用程序中的事件时间戳。 -
时间线中的一个点表示一个很大的数,这有利于计算机处理。在
java中,也是从1970年开始,但以毫秒为单位 -
因为
java.time包是基于纳秒计算的,所以Instant的精度可以达到纳秒级。 -
1秒 = 1000毫秒 = 10−6^{-6}−6微秒 = 10−910^{-9}10−9纳秒
-
相关方法

//now() Instant instant = Instant.now(); System.out.println(instant); //添加时间的偏移量 OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8)); System.out.println(offsetDateTime); //toEpochMilli() long milli = instant.toEpochMilli(); System.out.println(milli); //ofEpochMilli() Instant instant1 = Instant.ofEpochMilli(1550475314878L); System.out.println(instant1); -
-
格式化与解析日期或时间
java.time.format.DateTimeFormatter类:该类提供了三种格式化方法-
预定义的标准格式:
ISO_LOCAL_DATE_TIME、ISO_LOCAL_DATE、ISO_LOCAL_TIME -
本地化相关格式:
ofLocalizedDateTime()、ofLocalizedDate() -
自定义格式
-
相关方法

// 方式一:预定义的标准格式。如:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; //格式化:日期-->字符串 LocalDateTime localDateTime = LocalDateTime.now(); String str1 = formatter.format(localDateTime); System.out.println(str1); //解析:字符串 -->日期 TemporalAccessor parse = formatter.parse("2019-02-18T15:42:18.797"); System.out.println(parse);//方式二: //FormatStyle.LONG / FormatStyle.MEDIUM / FormatStyle.SHORT :适用于LocalDateTime DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG); //格式化 String str2 = formatter1.format(localDateTime); System.out.println(str2); //FormatStyle.FULL / FormatStyle.LONG / FormatStyle.MEDIUM / FormatStyle.SHORT : 适用于LocalDate DateTimeFormatter formatter2 = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM); //格式化 String str3 = formatter2.format(LocalDate.now()); System.out.println(str3);//2019-2-18//方式三:自定义的格式 DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"); //格式化 String str4 = formatter3.format(LocalDateTime.now()); System.out.println(str4); //解析 TemporalAccessor accessor = formatter3.parse("2019-02-18 03:52:09"); System.out.println(accessor); -
-
其他
API-
Zoneld:该类中包含了所有的时区信息,一个时区的ID。 -
ZonedDateTime:一个在ISO-8601日历系统时区的日期时间。 -
Clock:使用时区提供对当前即时、日期和时间的访问的时钟。 -
Duration:持续时间,用于计算两个时间间隔。 -
Period:日期间隔,用于计算两个日期间隔。 -
TemporalAdjuster:时间校正器。 -
TemporalAdjusters该类通过静态方法
firstDayOfXxx()/lastDayOfXxx()/nextXxx()提供了大量的常用TemporalAdjuster的实现。
-
-
与传统日期处理的转换

7.4:java比较器
在Java中经常会设计到对象数组的排序问题,那么就涉及到对象之间的比较问题。
-
自然排序:
java.lang.ComparableComparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。- 实现
Comparable的类必须实现compareTo(Object obj)方法,两个对象即通过compareTo()方法的返回值来比较大小。- 如果当前对象
this大于形参对象obj,则返回正整数。 - 如果当前对象
this小于形参对象obj,则返回负整数。 - 如果当前对象
this等于形参对象obj,则返回0。
- 如果当前对象
Comparable默认都是从小到大排列的。
-
定制排序:
java.util.Comparator- 当元素的类型没有实现
java.lang.Comparable接口而又不方便修改代码,或者实现java.lang.Comparable接口的排序规则不适合当前的操作。那么可以考虑使用Comparator的对象来排序,强行对多个对象进行整体排序的比较 - 重写
compare(Object o1, Object o2)方法比较o1和o2的大小。- 如果方法返回正整数,则表示
o1大于o1。 - 如果方法返回0,则表示相等。
- 如果方法返回负整数,则表示
o1小于o2。
- 如果方法返回正整数,则表示
- 当元素的类型没有实现
-
自然排序和定值排序的对比
-
Comparable接口的方式一旦一定,保证Comparable接口实现类的对象在任何位置都可以比较大小。 -
Comparator接口属于临时性的比较。
-
7.5:System类
System类代表系统,系统级的很多属性和控制方法都防止在该类的内部。该类位于java.lang包。
由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部成员变量和成员方法都是static的,所以也可以很方便的进行调用。
- 成员变量
in:标准输入流(键盘输入)。out:标准输出流(显示器)。orr:标准错误输出流(显示器)。
- 成员方法
native long currentTimeMillis():返回当前计算机时间和1970年1月1日0时所差的毫秒数。void exit(int status):退出程序。其中status的值为0代表正常退出,非零代表异常退出。void gc():是请求系统进行垃圾回收。String getProperty(String key):获取系统中属性名为key的属性对应的值。java.version:java运行时环境版本。java.home:java安装目录。os.name:操作系统的名称。os.version:操作系统的版本。user.name:用户的账户名称。user.home:用户的主目录。user.dir:用户的当前工作目录。
7.6:Math类
java.lang.Math提供了一系列静态方法用于科学计算。其方法的参数和返回值类型一般为double型。
abs:绝对值acos、asin、atan、cos、sin、tan:三角函数sqrt:平方根pow(double a, double b):a的b次幂log:自然对数exp:e为底指数max(double a, double b):两个数中找较大的数min(double a, double b):两个数中找较小的数random():返回0.0到1.0的随机数long round(double a):doubel型数据a转换为long型。(四舍五入)toDegrees(double angrad):弧度转角度toRadians(double angdeg):角度转弧度
7.7:BigInteger和BigDecimal
BigInteger类java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger提供所有java基本整数操作符的对应物,并提供java.lang.Math的所有相关方法。BigInteger还提供模算术、GCD计算、质数测试、素数生成、位操作以及一些其他操作。- 构造器
BigInteger(String val):根据字符串构建BigInteger对象。
- 常用方法
public BigInteger abs():返回此BigInteger的绝对值的BigInteger。BigInteger add(BigInteger val):返回其值为this + val的BigInteger。BigInteger subtract(BigInteger val):返回其值为this - val的BigInteger。BigInteger multiply(BigInteger val):返回其值为this * val的BigInteger。BigInteger divide(BigInteger val):返回其值为this / val的BigInteger。整数相除只保留整数部分。BigInteger remainder(BigInteger val):返回其值为this % val的BigInteger。BigInteger[] divideAndRemainder(BigInteger val):返回包含this / val后跟this % val的两个BigInteger的数组。BigInteger pow(int exponent):返回其值为this 的 exponent次幂的BigInteger。
BigDecimal类- 一般的
Float类和Double类可以用来做科学计算或工程计算,但是在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类。 BigDecimal类支持不可变的、任意精度的有符号十进制定点数。- 构造器
public BigDecimal(double val)public BigDecimal(String val)
- 常用方法
public BigDecimal add(BigDecimal augend)public BigDecimal subtract(BigDecimal subtrahend)public BigDecimal multiply(BigDecimal multiplicand)public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
- 一般的
相关文章:
第七章:Java常用类
第七章:Java常用类 7.1:字符串相关的类 String的特性 String表示是字符串,使用一对""引起来表示。 String声明为final的,不可被继承。 String实现了Serializable、Comparable接口,表示字符是支持序列化和…...
Apk加固后多渠道打包
之前一直使用360加固宝进行apk的加固打包,可以一键加固并打多渠道打包。但是,现在360加固宝收费了,在进行加固,多渠道打包,就得一步一步自己操作了,会很繁琐。所以,本文使用 360加固美团Wallet …...
K8S + ISTIO 金丝雀部署的例子
金丝雀发布(Canary):也是一种发布策略,和国内常说的灰度发布是同一类策略。蓝绿部署是准备两套系统,在两套系统之间进行切换,金丝雀策略是只有一套系统,逐渐替换这套系统。 Istio 提供一种简单的…...
python自带数据的模型合集
鸢尾花----聚类 Python鸢尾花数据集通常用于分类问题, 这些模型都可以通过Python中的Scikit-learn库进行实现。同时,也可以对这些模型进行参数调优以提高模型的准确性。 Logistic Regression(逻辑回归): 逻辑回归是一…...
女生学习大数据怎么样~有前景么
当前大数据发展前景非常不错,且大数据领域对于人才类型的需求比较多元化,女生学习大数据也会有比较多的工作机会。大数据是一个交叉学科涉及到的知识量比较大学习有一定的难度,女生则有女生的优势,只要认真学习了都是可以做大数据…...
统计代码量
一 windows 在 Windows 系统上,您可以使用 PowerShell 命令行工具来统计项目的代码量。下面是使用 PowerShell 统计项目代码量的步骤: 打开 PowerShell 终端:按下 Win X 键,选择「Windows PowerShell(管理员…...
uniapp在线升级关联云空间
升级中心 uni-upgrade-center - App: https://ext.dcloud.net.cn/plugin?id4542 App升级中心 uni-upgrade-center文档: https://uniapp.dcloud.net.cn/uniCloud/upgrade-center.html#uni-upgrade-center-app 升级中心 uni-upgrade-center - Admin&#…...
学习streamlit-2
首先视频快速预览下今天的学习内容: Streamlit Shorts: How to make a button今天继续学习streamlit,首先激活之前建立的虚拟环境: ❯ conda activate streamlit-env (streamlit-env) ~ via 🐍 v3.9.16 via …...
Vscode中Vue文件保存格式化、 ElementUI、Font Awesome俩大插件使用
Vscode中Vue文件老一片红色出现格式错误??如何运行别人的项目(没有node_modules文件)??选用组件与图标?? 解决问题一 前提有:Prettier ESLint插件、ESLint插件 1.打开s…...
汽车标定知识整理(三):CCP报文可选命令介绍
目录 一、可选命令 CRO命令报文的可选命令表: 二、可选命令帧格式介绍 1、GET_SEED——获取被请求资源的种子(0x12) 2、UNLOCK——解锁保护(0x13) 3、SET_S_STATUS——设置Session状态(0x0C࿰…...
kubeadm安装K8S(集群)
前言市面上很多k8s的安装工具,作为产品的设计者和推广者,K8S组织也知道自己的产品部署起来十分的困难,于是把开源爱好者写的工具kubeadmn收编为正规军,纳入到了自己的麾下。为什么我们要用kubeadmn来部署?因为kubeadm不…...
Baumer工业相机堡盟相机如何使用PnPEventHandler实现相机掉线自动重连(C++新)
项目场景: Baumer工业相机堡盟相机传统开发包BGAPI SDK进行工业视觉软件整合时,常常需要将SDK中一些功能整合到图像处理软件中,方便项目的推进使用; 在项目的图像处理任务中,可能会因为一些硬件比如线缆网卡的原因导…...
Windows 命令行基础
1. 引言:为什么要使用命令行在 DOS 时代,人们只能依靠输入命令同计算机互交。而现在,微软的 Windows 操作系统已得到了广泛使用,我们处理日常事务也大多使用基于图形用户界面(GUI,Graphics User Interface&…...
面试官: 谈下音视频同步原理,音频和视频能绝对同步吗?
作者:波哥 心理分析:音视频同步本身比较难,一般使用ijkplayer 第三方做音视频同步。不排除有视频直播 视频通话需要用音视频同步,可以从三种 音频为准 视频为准 自定义时钟为准三种方式实现音视频同步 求职者:如果被问到 放正心态…...
CFS三层靶机安装与配置
CFS三层靶机安装与配置 环境下载 百度网盘 提取码:Chen 环境安装 下载完成后,有三个文件夹,每个文件夹对应一个靶机 进入三个文件夹,双击打开后缀为.ovf的文件,按提示安装虚拟机 环境配置 网段划分 target1&#…...
爬虫入门教程-Spider
Spider 爬虫是定义如何抓取某个网站(或一组网站)的类,包括如何执行抓取(即关注链接)以及如何从其网页中提取结构化数据(即抓取项目)。换句话说,Spider是您定义用于为特定网站&#x…...
Python|蓝桥杯进阶第二卷——贪心
欢迎交流学习~~ 专栏: 蓝桥杯Python组刷题日寄 蓝桥杯进阶系列: 🏆 Python | 蓝桥杯进阶第一卷——字符串 🔎 Python | 蓝桥杯进阶第二卷——贪心 💝 Python | 蓝桥杯进阶第三卷——动态规划(待续…...
Chrome开发使用技巧总结
Chrome一个程序员开发神器,但是好多猿子们不会或者没有正确使用。今天教大家如何利用它快速高效的开发调试工作。代码格式化有很多css/js的代码都会被 minify 掉,你可以点击代码窗口左下角的那个 { } 标签,chrome会帮你给格式化掉。强制DOM状…...
你真的会在阳光下拍照片么?
你好,我是小麥。 上节课我们讲了如何通过影子判断光的质量,也就是光的软硬,这节课我们来接着说一说光的方向和环境光的实际运用。 虽然在现实生活里,我们可能没有从软硬的角度观察过光线,但我相信你在拍照片的时候一…...
量化择时——均线策略及改进方法(第1部分—因子测算)
文章目录道氏理论个股股价走势阶段板块、行业股价走势均线策略交易逻辑均线策略效果测算改进一:设置策略信号偏移量改进二:生成止盈止损信号道氏理论 使用盘面数据,根据计算出的一条或多条均线,判断入场与离场的时机,…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
