Java进阶-字符串的使用
1.API
1.1API概述
-
什么是API
API (Application Programming Interface) :应用程序编程接口
-
java中的API
指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。
1.2如何使用API帮助文档
- 打开帮助文档
- 找到索引选项卡中的输入框
- 在输入框中输入Random
- 看类在哪个包下

- 看类的描述

- 看构造方法

- 看成员方法

2.String类
2.1String类概述
String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,所以使用的时候不需要导包!
2.2String类的特点
- 字符串不可变,它们的值在创建后不能被更改
- 虽然 String 的值是不可变的,但是它们可以被共享
- 字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )
2.3String类的构造方法
常用的构造方法
方法名 | 说明 |
---|---|
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 |
public String(byte[] bys) | 根据字节数组的内容,来创建字符串对象 |
String s = “abc”; | 直接赋值的方式创建字符串对象,内容就是abc |
示例代码
public class _01_StringDemo {public static void main(String[] args) {//public String():创建一个空白字符串对象,不含有任何内容String s1 = new String();System.out.println("s1:" + s1);//public String(char[] chs):根据字符数组的内容,来创建字符串对象char[] chs = {'a', 'b', 'c'};String s2 = new String(chs);System.out.println("s2:" + s2);//public String(byte[] bys):根据字节数组的内容,来创建字符串对象byte[] bys = {97, 98, 99};String s3 = new String(bys);System.out.println("s3:" + s3);//String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abcString s4 = "abc";System.out.println("s4:" + s4);}
}
2.4 创建字符串对象两种方式的区别
-
通过构造方法创建
通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
-
直接赋值方式创建
以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护
2.5 字符串的比较
2.5.1==号的作用
- 比较基本数据类型:比较的是具体的值
- 比较引用数据类型:比较的是对象地址值
2.5.2equals方法的作用
方法介绍
public boolean equals(String s) 比较两个字符串内容是否相同、区分大小写
示例代码
public class _02_StringDemo {public static void main(String[] args) {//构造方法的方式得到对象char[] chs = {'a', 'b', 'c'};String s1 = new String(chs);String s2 = new String(chs);//直接赋值的方式得到对象String s3 = "abc";String s4 = "abc";//比较字符串对象地址是否相同System.out.println(s1 == s2);System.out.println(s1 == s3);System.out.println(s3 == s4);System.out.println("--------");//比较字符串内容是否相同System.out.println(s1.equals(s2));System.out.println(s1.equals(s3));System.out.println(s3.equals(s4));}
}
2.6 用户登录案例
2.6.1 案例需求
已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示
2.6.2 代码实现
public class _03_LoginDemo {public static void main(String[] args) {//1.定义两个变量用来记录正确的用户名和密码String rightUsername = "zhangsan";String rightPassword = "123456";//2.键盘录入用户名和密码//ctrl + alt + T 选择包裹方式for (int i = 0; i < 3; i++) {//0 1 2Scanner sc = new Scanner(System.in);System.out.println("请输入用户名");String username = sc.next();System.out.println("请输入密码");String password = sc.next();//3.判断比较if (username.equals(rightUsername) && password.equals(rightPassword)) {System.out.println("登录成功");//如果正确,循环结束break;} else {//最后一次机会if(i == 2){System.out.println("账户" + username + "被锁定,请联系管理员");}else{//不是最后一次机会System.out.println("用户名或密码错误,登录失败,还剩下" + (2 - i) + "次机会");//2 1 0}}}}
}
2.7 遍历字符串案例
2.7.1案例需求
键盘录入一个字符串,使用程序实现在控制台遍历该字符串
2.7.2直接遍历字符串
package com.iflytek.day12;import java.util.Scanner;public class _04_StringForeach {public static void main(String[] args) {//两个方法://charAt():会根据索引获取对应的字符//length(): 会返回字符串的长度//1.键盘录入一个字符串Scanner sc = new Scanner(System.in);System.out.println("请输入字符串");String str = sc.next();System.out.println(str);//2.遍历for (int i = 0; i < str.length(); i++) {//i 依次表示字符串的每一个索引//索引的范围:0 ~ 长度-1//根据索引获取字符串里面的每一个字符//ctrl + alt + V 自动生成左边的接受变量char c = str.charAt(i);System.out.println(c);}}
}
2.8 统计字符次数案例
2.8.1 案例需求
键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)
2.8.2 代码实现
package com.iflytek.day12;import java.util.Scanner;public class _05_StringCount {public static void main(String[] args) {//键盘录入一个字符串,统计大写,小写,数字出现的次数//1.键盘录入一个字符串Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串");String str = sc.next();//2.统计 --- 计数器count//此时我要统计的有3样东西,所以要定义3个计数器分别进行统计int bigCount = 0;int smallCount = 0;int numberCount = 0;//得到这个字符串里面每一个字符for (int i = 0; i < str.length(); i++) {//i 表示字符串中的索引//c 表示字符串中的每一个字符char c = str.charAt(i);//对c进行判断if (c >= 'a' && c <= 'z') {smallCount++;}else if(c >= 'A' && c <= 'Z'){bigCount++;}else if(c >= '0' && c <= '9'){numberCount++;}}//3.当循环结束之后,三个变量记录的就是对应的个数System.out.println("大写字符有:" + bigCount + "个");System.out.println("小写字符有:" + smallCount + "个");System.out.println("数字字符有:" + numberCount + "个");}
}
2.9 字符串拼接案例
2.9.1 案例需求
定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,
并在控制台输出结果。例如,数组为 int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3]
2.9.2 代码实现
package com.iflytek.day12;public class _06_StringConcat {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5};String str = arrToString(arr);System.out.println(str);}//作用:把一个数组变成字符串public static String arrToString(int[] arr) {String s = "";s = s + "[";for (int i = 0; i < arr.length; i++) {if(i == arr.length - 1){s = s + arr[i];}else{s = s + arr[i] + ", ";}}s = s + "]";return s;}}
2.10 字符串反转案例
2.10.1案例需求
定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果
例如,键盘录入 abc,输出结果 cba
2.10.2代码实现
package com.iflytek.day12;import java.util.Scanner;public class _07_StringReverse {public static void main(String[] args) {/*定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果例如,键盘录入 abc,输出结果 cba*///1.定义一个字符串Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串");String str = sc.next();//2.定义一个方法,反转字符串//abc ---> cba//可以把字符串倒着遍历,再拼接String result = reverse(str);System.out.println(result);}//注释:方法的作用就是反转字符串//把传递进来的字符串进行反转public static String reverse(String str){//abc//核心思想:倒着遍历并进行拼接就可以了//fori :正着遍历 forr:倒着遍历String s = "";for (int i = str.length() - 1; i >= 0; i--) {//i 依次表示字符串里面的每一个索引(倒着的)//我们就可以拿到里面的每一个字符并拼接s = s + str.charAt(i);}//把倒着拼接之后的结果返回即可return s;}
}
2.11 金额转换
2.11.1 案例需求
把2135变成:零佰零拾零万贰仟壹佰叁拾伍元
把789变成:零佰零拾零万零仟柒佰捌拾玖元
2.11.2 代码实现
package com.iflytek.day12;import java.util.Scanner;public class _08_MoneyToUpper {public static void main(String[] args) {//1.键盘录入一个金额Scanner sc = new Scanner(System.in);int money;while (true) {System.out.println("请录入一个金额");money = sc.nextInt();if (money >= 0 && money <= 9999999) {break;} else {System.out.println("金额无效");}}//定义一个变量用来表示钱的大写String moneyStr = "";//2.得到money里面的每一位数字,再转成中文while (true) {//2135//从右往左获取数据,因为右侧是数据的个位int ge = money % 10;String capitalNumber = getCapitalNumber(ge);//把转换之后的大写拼接到moneyStr当中moneyStr = capitalNumber + moneyStr;//第一次循环 : "伍" + "" = "伍"//第二次循环 : "叁" + "伍" = "叁伍"//去掉刚刚获取的数据money = money / 10;//如果数字上的每一位全部获取到了,那么money记录的就是0,此时循环结束if (money == 0) {break;}}//3.在前面补0,补齐7位int count = 7 - moneyStr.length();for (int i = 0; i < count; i++) {moneyStr = "零" + moneyStr;}System.out.println(moneyStr);//零零零贰壹叁伍//4.插入单位//定义一个数组表示单位String[] arr = {"佰","拾","万","仟","佰","拾","元"};// 零 零 零 贰 壹 叁 伍//遍历moneyStr,依次得到 零 零 零 贰 壹 叁 伍//然后把arr的单位插入进去String result = "";for (int i = 0; i < moneyStr.length(); i++) {char c = moneyStr.charAt(i);//把大写数字和单位拼接到result当中result = result + c + arr[i];}//5.打印最终结果System.out.println(result);}//定义一个方法把数字变成大写的中文//1 -- 壹public static String getCapitalNumber(int number) {//定义数组,让数字跟大写的中文产生一个对应关系String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};//返回结果return arr[number];}}
2.12 手机号屏蔽
需求:
以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽
最终效果为:131****9468
代码实现:
package com.iflytek.day12;import java.util.Scanner;public class _09_MobileEncode {public static void main(String[] args) {/*以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽最终效果为:131****9468*///1.键盘录入一个手机号码Scanner sc = new Scanner(System.in);System.out.println("请输入手机号码");String phoneNumber = sc.next();//13112349408//2.截取手机号码中的前三位String star = phoneNumber.substring(0, 3);//3.截取手机号码中的最后四位//此时我用substring方法,是用1个参数的,还是两个参数的?1个参数的会更好//因为现在我要截取到最后,所以建议使用1个参数的。String end = phoneNumber.substring(7);//4.拼接String result = star + "****" + end;System.out.println(result);}
}
2.13 敏感词替换
需求1:
键盘录入一个 字符串,如果字符串中包含(TMD),则使用***替换
示例代码:
package com.iflytek.day12;public class _10_SensitiveReplace {public static void main(String[] args) {//1.定义一个变量表示骂人的话String talk = "后裔你玩什么啊,TMD";//2.把这句话中的敏感词进行替换String result = talk.replace("TMD", "***");//3.打印System.out.println(talk);System.out.println(result);}
}
需求2:
如果要替换的敏感词比较多怎么办?
示例代码:
package com.iflytek.day12;import java.util.Scanner;public class _11_SensitiveReplace {public static void main(String[] args) {//实际开发中,敏感词会有很多很多//1.先键盘录入要说的话Scanner sc = new Scanner(System.in);System.out.println("请输入要说的话");String talk = sc.next();//后裔你玩什么啊,TMD,GDX,ctmd,ZZ//2.定义一个数组用来存多个敏感词String[] arr = {"TMD","GDX","ctmd","ZZ","lj","FW","nt"};//3.把说的话中所有的敏感词都替换为***for (int i = 0; i < arr.length; i++) {//i 索引//arr[i] 元素 --- 敏感词talk = talk.replace(arr[i],"***");}//4.打印结果System.out.println(talk);//后裔你玩什么啊,***,***,***,***}
}
2.14 身份证信息查看
需求:
身份证号的每一位都是有固定的含义:
- 1、2位:省份
- 3、4位:城市
- 5、6位:区县
- 7-14位:出生年、月、日
- 15、16位:所在地派出所
- 17位:性别(奇数男性,偶数女性)
- 18位:个人信息码(随机产生)
要求打印内容方式如下:
人物信息为:
出生年月日:XXXX年X月X日
性别为:男/女
示例代码:
package com.iflytek.day12;public class _12_IdCard {public static void main(String[] args) {//1.定义一个字符串记录身份证号码String id = "321281202001011234";//2.获取出生年月日String year = id.substring(6, 10);String month = id.substring(10, 12);String day = id.substring(12, 14);System.out.println("人物信息为:");System.out.println("出生年月日:" + year + "年" + month + "月" + day + "日");//3.获取性别char gender = id.charAt(16);//'3' ---> 3//利用ASCII码表进行转换//'0' ---> 48//'1' ---> 49//'2' ---> 50//'3' ---> 51//'4' ---> 52//'5' ---> 53//'6' ---> 54//'7' ---> 55//'8' ---> 56//'9' ---> 57int num = gender - 48;if(num % 2 == 0){System.out.println("性别为:女");}else{System.out.println("性别为:男");}}
}
3.StringBuilder
StringBuilder 可以看成是一个容器,创建之后里面的内容是可变
的。
当我们在拼接字符串和反转字符串的时候会使用到
3.1 基本使用
package com.iflytek.day12;public class _13_StringBuilderDemo {public static void main(String[] args) {//1.创建对象StringBuilder sb = new StringBuilder("abc");//2.添加元素/*sb.append(1);sb.append(2.3);sb.append(true);*///反转sb.reverse();//获取长度int len = sb.length();System.out.println(len);//打印//普及://因为StringBuilder是Java已经写好的类//java在底层对他做了一些特殊处理。//打印对象不是地址值而是属性值。System.out.println(sb);}
}
3.2 链式编程
package com.iflytek.day12;public class _14_StringBuilderDemo {public static void main(String[] args) {//1.创建对象StringBuilder sb = new StringBuilder();//2.添加字符串sb.append("aaa").append("bbb").append("ccc").append("ddd");System.out.println(sb);//aaabbbcccddd//3.再把StringBuilder变回字符串String str = sb.toString();System.out.println(str);//aaabbbcccddd}
}
3.3 练习1:对称字符串
需求:
键盘接收一个字符串,程序判断出该字符串是否是对称字符串,并在控制台打印是或不是
对称字符串:123321、111非对称字符串:123123
代码示例:
package com.iflytek.day12;import java.util.Scanner;public class _15_SymmetricString {//使用StringBuilder的场景://1.字符串的拼接//2.字符串的反转public static void main(String[] args) {//1.键盘录入一个字符串Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串");String str = sc.next();//2.反转键盘录入的字符串String result = new StringBuilder().append(str).reverse().toString();//3.比较if(str.equals(result)){System.out.println("当前字符串是对称字符串");}else{System.out.println("当前字符串不是对称字符串");}}
}
3.4 练习2:拼接字符串
需求:
定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回。
调用该方法,并在控制台输出结果。
例如:数组为int[] arr = {1,2,3};
执行方法后的输出结果为:[1, 2, 3]
代码示例:
package com.iflytek.day12;public class _16_ConcatString {public static void main(String[] args) {//1.定义数组int[] arr = {1,2,3};//2.调用方法把数组变成字符串String str = arrToString(arr);System.out.println(str);}public static String arrToString(int[] arr){StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if(i == arr.length - 1){sb.append(arr[i]);}else{sb.append(arr[i]).append(", ");}}sb.append("]");return sb.toString();}
}
关于字符串的小扩展:
-
字符串存储的内存原理
String s = “abc”;直接赋值
特点:
此时字符串abc是存在字符串常量池中的。
先检查字符串常量池中有没有字符串abc,如果有,不会创建新的,而是直接复用。如果没有abc,才会创建一个新的。
所以,直接赋值的方式,代码简单,而且节约内存。
-
new出来的字符串
看到new关键字,一定是在堆里面开辟了一个小空间。
String s1 = new String(“abc”);
String s2 = “abc”;
s1记录的是new出来的,在堆里面的地址值。
s2是直接赋值的,所以记录的是字符串常量池中的地址值。
-
==号比较的到底是什么?
如果比较的是基本数据类型:比的是具体的数值是否相等。
如果比较的是引用数据类型:比的是地址值是否相等。
结论:==只能用于比较基本数据类型。不能比较引用数据类型。
相关文章:

Java进阶-字符串的使用
1.API 1.1API概述 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要…...

接口自动化框架对比 | 质量工程
一、前言 自动化测试是把将手工驱动的测试行为转化为机器自动执行,通常操作是在某一框架下进行代码编写,实现用例自动发现与执行,托管在CI/CD平台上,通过条件触发或手工触发,进行回归测试&线上监控,代替…...

谷歌浏览器network error解决方法
很多用户在使用谷歌浏览器时候会出现network error网页提示,很多用户不知道该如何处理这一问题,其实解决方法不止一种,小编整理了两种谷歌浏览器network error解决方法,一起来看看吧~ 谷歌浏览器network error解决方法࿱…...

自动化测试如何做?接口自动化测试框架必备的9个功能,测试老鸟总结...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 当你准备使用一个…...

ANR原理篇 - ANR原理总览
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言ANR流程概览ANR触发机制一、service超时机制二、broadcast超时机制三、provider超…...

新版Mamba体验超快的软件安装
在一文掌握Conda软件安装:虚拟环境、软件通道、加速solving、跨服务器迁移中详细介绍的conda的基本使用和遇到问题的解决方式,也提到了mamba作为一个替代工具,可以很好的加速conda的solving environemnt过程。但有时也会遇到一个很尴尬的问题…...

LDAP配置与安装
LDAP配置与安装 一、安装LDAP1、安装OpenLDAP及相关依赖包2、查看OpenLDAP版本3、配置OpenLDAP数据库4、设置OpenLDAP的管理员密码5、修改配置文件5.1. 修改{2}hdb.ldif文件5.2. 修改{1}monitor.ldif文件5.3. 修改{-1}frontend.ldif文件 6、验证LDAP的基本配置7、修改LDAP文件权…...

1-Linux环境安装JDK
Linux环境安装JDK 准备: ① Linux 环境 本文中Linux环境为 CentOS Linux 7 可使用以下命令查询 linux 系统版本: hostnamectl② 准备JDK包 进入官网 https://www.oracle.com/java/technologies/downloads/#java17下载对应jdk包 此处使用以前下载的旧…...
通胀数据回落助金价小幅回升
现货黄金窄幅震荡,目前交投于2032.92美元/盎司附近。隔夜美国通胀数据弱于市场预期,市场对美联储6月份加息预期降温,美元指数走弱,金价一度冲高至2050关口附近,不过,随后金价回吐全部涨幅,并一度…...
正则表达式的基本语法以及技巧和示例
正则表达式(Regular Expression)是一种强大的文本模式匹配工具,它使用特定的语法规则来描述和匹配字符串。在实际应用中,正则表达式可以用于搜索、替换、验证和分割文本数据。本文将详细解释正则表达式的语法和常用的使用示例。 …...

蓝牙耳机怎么挑选?小编分享2023畅销蓝牙耳机排行榜
蓝牙耳机怎么挑选?蓝牙、音质、续航、佩戴是蓝牙耳机选购时最重要的四大维度,这几年随着技术的成熟体验有了很大改善,但挑选的时候仍然要仔细对比,不然容易踩雷。小编根据销量整理了蓝牙耳机排行榜,一起看看最受消费者…...

Linux快照太有趣了!
1.首先介绍一下什么是Linux快照 VMware 的菜单栏中有虚拟机快照这个选项,形象来说快照就相当于一个备份文件,记录的是虚拟机运行到某一节点时的状态,在虚拟机的使用过程中如果发生了意外,比如系统崩溃或系统异常,此时…...

【改进粒子群优化算法】自适应惯性权重粒子群算法(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

ROS 下 激光扫描仪 YDLidar-G4 使用
环境配置: ubuntu20.04 LTS ROS noetic 编程工具:vs code,远程通过ssh访问 扫描仪:YDLidar-G4 YDLidar驱动: YDLidar SDK YDLidar ROS 功能包 此环境包含树莓派,以下过程在树莓派3B上测试通过,…...
智能边缘:数字化时代的关键战略之一
随着物联网、云计算和人工智能等技术的快速发展,智能边缘已经成为了许多企业和组织中的重要部分。智能边缘旨在将物联网设备、应用程序和数据存储集成到一个统一的、移动的计算环境中,以提高效率、降低成本并增强数据安全性。在本文中,我们将…...

EasyRecovery16中文最新版电脑数据恢复软件下载使用教程
EasyRecovery如果需要使用它来恢复数据,请注意,尤其是当需要恢复的数据文件非常重要时,建议使用软件EasyRecovery以保障数据安全。共有三个版本,分别是个人版、专业版、企业版,这三种都可以免费下载并使用,…...

什么是鉴权?这些postman鉴权方式你又知道多少?
一、什么是鉴权? 鉴权也就是身份认证,就是验证您是否有权限从服务器访问或操作相关数据。发送请求时,通常必须包含相应的检验参数以确保请求具有访问权限并返回所需数据。通俗的讲就是一个门禁,您想要进入室内,必须通过…...
最新的经典mysql面试题及答案
互联网产品必然是需要有架构的,架构包含接入层、储蓄层、逻辑处理等等,其中存储层承载着数据落地和持久化的任务,同时给逻辑处理层提供数据查询功能支持。而一提到储蓄层必然就要说数据库了,对于数据库的掌握也是软件工程师面试时…...

算法修炼之练气篇——练气十九层
博主:命运之光 专栏:算法修炼之练气篇 前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的…...

记录一次Windows7操作系统渗透测试
#本文档仅用于实验,请勿用来使用恶意攻击! 《中华人民共和国网络安全法》中,恶意破坏计算机信息系统罪在第二十七条被明确规定,规定内容为: 第二十七条 任何单位和个人不得为达到破坏计算机信息系统安全的目的&#x…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...