当前位置: 首页 > news >正文

Java中的常用类 --String

学习目标

  1. 掌握String常用方法
  2. 掌握StringBuilder、StringBuffer
  3. 了解正则

1.String

● String是JDK中提前定义好的类型 其所在的包是java.lang ,String翻译过来表示字符串类型,也就是说String类中已经提前定义好了很多方法都是用来处理字符串的,所以String中常用的方法大家都要掌握;

先介绍下String 类的特点 :

  • String是不可变的类,也就是说String对象是不可变的对象,那么什么叫不可变的对象我们稍后给大家解释
  • 当给String引用重新赋值时, 执行的操作为: 在内存中创建一个新的字符串地址, 使引用指向新地址

1.1 层级

public final class String implements java.io.Serializable, Comparable<String>, CharSequence {}

1.2 创建方法和常用构造

两种创建方式

  1. 双引号直接赋值
  2. 利用构造创建
//双引号直接赋值
//String用法的一种特例String 引用名 = "值";

常用构造

String(byte[] bytes) //使用IDE里面默认的编码方式
String(byte[] bytes, Charset charset) 
String(byte[] bytes, String charsetName) 
String(byte[] bytes, int offset, int length)  
//将字节数组数据使用指定的编码方式转换(解码)一个字符串对象String(char[] value) 
String(char[] value, int offset, int count)         
//将字符数组数据转换成字符串对象String(StringBuffer buffer) String(StringBuilder builder)    

案例:字节数组转String

private static void demo1() {//乱码: 编码方法至少有2种存在  保证编码方式统一//创建String类对象String s = "hello";byte[] bytes = {-26, -120, -111, -28, -69, -84};//String str1 = new String(bytes,);//解码  将看不懂的字节的数据转换成字符串//String str1 = new String(bytes, StandardCharsets.UTF_8);//String str1 = new String(bytes, "UTF_8");String str1 = null;try {str1 = new String(bytes, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}//使用的是哪一种编码格式?//获得当前ide里面默认的编码格式  Charset 维护所有编码格式的System.out.println(Charset.defaultCharset());System.out.println(str1);//鎴戜滑
}

案例:字符数组转String

private static void demo2() {//将字符数组转换成Stringchar[] chars = {97, 100, 'a', '1', '我'};String s = new String(chars);System.out.println(s);String s1 = new String(chars, 0, 3);System.out.println(s1);}

1.3 常用方法

1.3.1 与数组相关的方法

1.byte[] getBytes()  
2.byte[] getBytes(Charset charset)  
3.byte[] getBytes(String charsetName)  
//将字符串的数组转换成字节符数组  (与编码格式有关)----> 编码  4.char[] toCharArray()  //遍历字符数据
5.String[] split(String regex)  //分割  使用指定的字符串的数据对原字符串进行分割
6.String[] split(String regex, int limit)    //使用指定的正则模式分割字符串  

1.3.2 字符串搜索相关的方法

1. int	indexOf​(String str);//指定字符串第一次出现的索引位置  没有找到-1
2. int	indexOf​(String str, int fromIndex)//指定的索引开始  查询指定字符串第一次出现的索引位置  没有找到-13. int	lastIndexOf​(String str);// 指定字符串最后一次出现的索引位置  没有找到-1
4. int	lastIndexOf​(String str, int fromIndex);
// 指定的索引开始  查询指定字符串最后一次出现的索引位置  没有找到-1

1.3.3 提取字符串相关的方法

1.char charAt(int index)  //获得指定索引字符数据  index
private static void charatdemo() {String str = "hello";for (int index = 0; index < str.length(); index++) {System.out.println(str.charAt(index));}
}
2.String substring(int beginIndex)  //截取字符串   根据指定的索引截取原字符串部分数据
3.String substring(int beginIndex, int endIndex)  //包头不包尾
private static void substringdemo() {String filePath = "C:\\demo.\\a\\b\\a.txt";//查询最后一个\\的索引位置  lastIndexOf()String fileName = filePath.substring(filePath.lastIndexOf("\\")+1);System.out.println(fileName);//获得文件扩展名//文件上传  不同的用户传的文件名以及后缀都一样//A: C:\\a.jpg//B: D:\\a.jpg//上传到同一个目录---> 文件名重名的文件
//        System.currentTimeMillis()//System.out.println(UUID.randomUUID().toString());String extension = filePath.substring(filePath.lastIndexOf(".") + 1);System.out.println(extension);String str = "hello";System.out.println(str.substring(2, 4));//案例: 152****3456String phone = "15234567890";//长度固定的String begin = phone.substring(0,3);String end = phone.substring(7);String result = begin+"****"+end;System.out.println(result);
}
4.String toUpperCase()  //字母 转大写
5.String toLowerCase()  //字母 转小写
6.String trim() //去除空格String stripLeading()String stripTrailing()  
7.String concat(String str)  
8.static String join(CharSequence delimiter, CharSequence... elements) 
private static void demo12() {//模拟用户注册  将数据转换成:  id-name-pass-ageScanner input = new Scanner(System.in);int idIndex = 1001;System.out.println("录入name:");String name = input.next();System.out.println("录入pass:");String pass = input.next();System.out.println("录入age:");int age = input.nextInt();//将id name age pass 转换成指定格式//id-name-pass-age//String info = idIndex + "-" + name + "-" + pass + "-" + age;//System.out.println(info);//String concat(str)  类似+//String concat = String.valueOf(idIndex++).concat("-").concat(name).concat("+").concat(pass).concat("-").concat(String.valueOf(age));//String.join();String info = String.join("-", String.valueOf(idIndex), name, pass, String.valueOf(age));System.out.println(info);input.close();}
9.String repeat(int count)  

1.3.4 可变长参数

public static void main(String[] args) {//调用的时候 传递参数0个method();//调用的时候 传递多个参数method("aa", "bb");}/*** 如何定义可变长参数 任意数据类型...* 注意点:若方法中包含可变长参数,则必须出现在最后* 在方法内部,把可变长参数当成数组来进行使用* 调用的时候 可传值  0或多个都可以* @param a*/public static void method(String... a) {System.out.println(a);// 在方法内部,把可变长参数当成数组来进行使用System.out.println(a.length);System.out.println(Arrays.toString(a));}

1.3.5 比较判断方法相关的方法

1.int compareTo(String anotherString)  //比较2个字符串是否相等  返回值: 0 正整数 负整数2.int compareToIgnoreCase(String str) //不区分大小写比较2个字符串是否相等  返回值: 0 正整数 负整数 3.boolean contains(CharSequence s)  //判断字符串是否包含指定字符串
4.boolean equals(Object anObject)  //比较2个字符串是否相等
5.boolean equalsIgnoreCase(String anotherString)  //不区分大小写比较2个字符串是否相等6.boolean endsWith(String suffix)  //判断字符串是否以指定字符串结尾
7.boolean startsWith(String prefix)  //判断字符串是否以指定字符串开头8.boolean isEmpty()  //判断字符串是否是空 ""  length==09.boolean isBlank()  //判断字符串是否是空 ""  "   "  length==010.boolean matches(String regex)   

1.3.6 替换相关的方法

1.String replace(char oldChar, char newChar)  //使用指定的字符的数据替换原字符串里面指定的所有的字符
2.String replace(CharSequence target, CharSequence replacement)  //使用指定的字符串的数据替换原字符串里面指定的所有的字符串3.String replaceAll(String regex, String replacement)   
4.String replaceFirst(String regex, String replacement)     // 使用字符串替换满足正则语法模式要求的字符串的数据   

1.4 运行时常量池(串池)

● 字符串是使用的最频繁的类型,如果每次使用字符串对象,都用new关键字进行创建,那么堆内存中就会出现大量的字符串对象而占用大量堆空间;
● 为了提高JVM对字符串操作的内存使用率,JVM在方法区中提供了一块区域专门用于存储字符串字面量,这块区域位于方法区的运行时常量池;
● 当直接把字面量 赋值给字符串引用的时候, JVM会先去常量池中找这个字符串对象是否存在,如果存在直接返回此对象的地址 否则就会新建一个字符串对象 然后返回这个对象的内存地址;
● 如果+两边都是常量,查询规则还是先去常量池中找字符序列是否存在,如果存在直接返回地址 否则就新建对象;
● 如果+两边一旦有变量,拼接后的字符串对象是先存放在一个缓冲区中 并没有在常量池中

/*** 常量池 在方法区中 :里面放的是字符序列*/public static void method9() {String str1 = "java";// 如果存在字面量 直接返回地址String str2 = "java";String str3 = "javaSun";String str4 = "javaSun";String str5 = "java" + "Sun"; // 如果+两边都是常量,查询规则还是先去常量池中找字符序列是否存在,如果存在直接返回地址 否则就新建对象String str6 = str1 + "Sun"; //  如果+两边一旦有变量,拼接后的结果是存放在一个缓冲区中 没有在常量池中// new 都在堆空间/*String str3 = new String("java");String str4 = new String("java");*/System.out.println("equals1:" + (str1 == str2));
//        System.out.println("equals2 :" + (str1 == str3));System.out.println("+两边有常量了" + (str5 == str4));System.out.println("+两边有变量了" + (str6 == str4));}
  • intern(): 其功能可以做到 在运行期间 把字符对象放入常量池
private static void demo17() {//并发里面 充当锁对象String str1 = "hello";String intern1 = str1.intern();System.out.println(str1 == intern1);//trueString str2 = new String("hello");String intern2 = str2.intern();System.out.println(str1 == str2);//falseSystem.out.println(str2 == intern2);//falseSystem.out.println(str1 == intern2);//true
}

1.5 字符串不可变性

  • 对象内部的成员变量的值是不可变的因此是不可变的类型,使用final修饰了!

1.6 总结String两种创建方式的区别

  1. 双引号直接赋值: 直接使用串池. 先在串池中查找是否存在指定内容, 存在则直接指向, 不存在则先在串池中创建后指向
  2. 利用构造创建: 间接使用串池. 无论如何都会开辟对象空间, 再去串池中查找指定内容, 存在则直接存储串池地址, 不存在则先在串池中创建后存储该地址
		String str1 = "abc";String str2 = "abc";System.out.println(str1 == str2);//t 串池地址相同String s1 = new String("edf");String s2 = new String("edf");String str3 = "edf";System.out.println(s1 == s2);//f 对象地址不同System.out.println(s1 == str3);//f 对象地址 != 串池地址

在这里插入图片描述

2.StringBuffer/StringBuilder

  • StringBuffer/StringBuilder也是用来处理字符串的,因此方法和String方法非常类似;
  • 并非常量, 值可变
  • StringBuffer : JDK1.0 线程安全,效率低
  • StringBuilder :JDK5.0 线程不安全, 效率高
    这两个类的方法一模一样

2.1 层级

public final class StringBuilderextends AbstractStringBuilderimplements java.io.Serializable, Comparable<StringBuilder>, CharSequence{}public final class StringBufferextends AbstractStringBuilderimplements Serializable, Comparable<StringBuffer>, CharSequence{}

2.2 特点

  1. 不能使用串池

  2. 必须通过构造创建

  3. 必须调用方法操作字符串内容, 无法使用运算符

2.3 常用方法

   1. append(): 在末尾追加内容2. insert(index,str); 在指定的索引位置 插入字符串数据3. delete(startIndex,endIndex)  删除从startIndex到endIndex的字符串的数据  包头不包尾4. deleteCharAt(index) 删除指定索引的字符数据5. insert(index,str); 在指定的索引位置 插入字符串数据6. replace(startIndex,endIndex,newStr)  使用newStr替换从startIndex到endIndex的字符串的数据  包头不包尾7. reverse(): 内容反转

2.4 对比

类名值是否可变线程安全性能内存(拼接)
String不可变安全(final)其次+ new 占据更多内存
StringBuffer可变安全(synchronized)最后只有1个对象
StringBuilder可变不安全最快只有1个对象

2.5 与String的相互转换

  1. String 转 可变长字符串
 StringBuilder 引用名 = new StringBuilder(String引用名 | "值");
  1. 可变长字符串 转 String
   String 引用名 = StringBuilder引用名.toString();
		String str = "abc";//转为可变长字符串StringBuilder sb = new StringBuilder(str);//转StringString str2 = sb.toString();

当对String进行运算符操作时, 如+=, 会在底层中将其转换为StringBuilder完成操作, 再将StringBuilder转换回String

String s1 = "abcdefg";
String s2 = "abcd";s2 += "efg";//先将s2内容转换进StringBuilder, 在SB中完成拼接操作, 再转换回StringSystem.out.println(s1 == s2);//f//以下动作不会操作StringBuilderString str = "abc";str = "edf";str = "123"; 

3 正则表达式

能够读懂即可,一般在前端的js,校验数据。(判断用户客户端提交的数据是否满足正则要求)
● 后端编程语言 java也是支持正则匹配

3.1 概念

● 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。
● 正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,
● 通常被用来检索、替换那些符合某个模式(规则)的文本

String类的方法中: 支持正则编写。1.  String[] split(String regex,int limit); //根据正则模式要求分割源字符串的数据2.  boolean  matches(String regex); //检索/判断字符串的数据(文本数据)是否满足正则模式的要求。3.  String replaceAll(String regex,String replacement);//使用replacement替换原字符串中满足正则模式要求的文本数据String replaceFirst(String regex,String replacement);// 使用replacement替换原字符串中第一个满足正则模式要求的文本数据

3.2 语法

● 参考正则在线手册: https://tool.oschina.net/uploads/apidocs/jquery/regexp.html
语法: String regx = “^([]{})([]{})([]{})([]{})$”;
● ^:可以省略。以xxx开头。
● $:可以省略。以xxx结尾。
● (): 可以省略。代表的是一个组/域。简称域段。域和域之间没有关系的。正则模式里面: \n代表第n个域。从1开始。一般用于执行"替换功能"的时候,域段必须编写的。动态的获得第n个域里面的内容作为替换内容的话 $n
● []:可以省略。编写限定的字符数据。[a-zA-Z0-9_]{1}
● {}: 可以省略。 限定[]里面字符内容的次数。[ab]{1,3} {正整数}
● : 转义符号
: 匹配前面的子表达式零次或多次 [a]{0,} [a] a*
● +: 匹配前面的子表达式一次或多次 [a]{1,} a{1,} a+
● .: 匹配除“\n”之外的任何单个字符 [.]{1} 匹配任意一个字符
● x|y: 匹配x或y
● [xyz]: 匹配所包含的任意一个字符 [a-z]{1} [A-Z]{1} [0-9]{1} \d 等价于[0-9] \d{1}
● \s: 匹配的是空白字符 \s+ 匹配字符串里面出现>=1次的空格内容
● \w: 等价于[A-Za-z0-9_]

4.String方法汇总

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.StringBuilder方法总结

在这里插入图片描述

相关文章:

Java中的常用类 --String

学习目标 掌握String常用方法掌握StringBuilder、StringBuffer了解正则 1.String ● String是JDK中提前定义好的类型 其所在的包是java.lang ,String翻译过来表示字符串类型&#xff0c;也就是说String类中已经提前定义好了很多方法都是用来处理字符串的&#xff0c;所以Str…...

手机控制电脑远程关机

远程看看软件兼容iOS和Android设备&#xff0c;该软件除了能通过电脑远程关闭另一台电脑外&#xff0c;您还可以通过它在手机上远程关闭公司的电脑。您可以按照以下步骤进行操作以实现电脑远程关机&#xff1a; 步骤1.在手机应用商店搜索“远程看看”进行软件安装&#xff0c;…...

用DeepSeeker + AI 进行物料主数据编码规则学习训练

AI 进行物料主数据编码规则学习训练 作为需要通过AI赋能SAP用户&#xff0c;如何通过DeepSeeker AI帮助SAP进行物料主数据的学习和规则验证 一、核心场景与痛点分析 SAP物料主数据管理挑战 数据质量问题 字段值错误&#xff08;如单位错误、分类错误&#xff09;重复数据&#…...

ES6相关操作(2)

一.Promise Promise是ES6引入的异步编程工具。 语法上Promise是一个构造函数,用于封装异步操作并可以获取操作成功或失败的结果 Promise构造函数:Promise(excutor){} Promise的常用函数:then,catch 实例化Promise对象(创建Promise工具) let data"请求数据"//该数据为…...

Java中JDK、JRE,JVM之间的关系

Java中的JDK、JRE和JVM是三个核心概念&#xff0c;其关系可概括为JDK > JRE > JVM&#xff0c;具体如下&#xff1a; 一、定义与作用 JDK&#xff08;Java Development Kit&#xff09; 定义&#xff1a;Java开发工具包&#xff0c;用于开发和编译Java程序。包含内容&…...

HTTP SSE 实现

参考&#xff1a; SSE协议 SSE技术详解&#xff1a;使用 HTTP 做服务端数据推送应用的技术 一句概扩 SSE可理解为&#xff1a;服务端和客户端建立连接之后双方均保持连接&#xff0c;但仅支持服务端向客户端推送数据。推送完毕之后关闭连接&#xff0c;无状态行。 下面是基于…...

51单片机介绍

1、单片机基础知识 1.1、单板机 将CPU芯片、存储器芯片、I/O接口芯片和简单的I/O设备(小键盘、LED显示器)等装配到一块印刷电路板上,再配上监控程序(固化在ROM中),就构成了一台单板微型计算机(简称单板机)。 1.2、单片机 在一片集成电路芯片上集成微处理器、存储器…...

Github访问不了解决方案(Mac)

电脑又重装了&#xff0c;到Github下载东西&#xff0c;又访问不了&#xff0c;记录一下解决方案&#xff1a;修改hosts文件。 补充 1、确定可以访问Github的IP地址 打开多个地点ping[github.com]服务器-网站测速-站长工具 输入github.com&#xff0c;点击Ping检测&#xff…...

机器视觉3D深度图颜色含义解析

在机器视觉中&#xff0c;3D深度图颜色变化通常表示以下含义&#xff1a; 1.深度信息变化 颜色深浅&#xff1a;颜色越深&#xff0c;物体越近&#xff1b;颜色越浅&#xff0c;物体越远。 颜色渐变&#xff1a;平滑的渐变表示深度连续变化&#xff0c;突变则表示深度不连续。 …...

鸡兔同笼问题

鸡兔同笼问题是这样一个问题&#xff1a; 现有鸡、兔合装在一个笼子里。数头一共100个头&#xff0c;数脚一共300只脚。问有多少只鸡多少只兔&#xff1f; 在这里讨论这个问题的解法当然太小儿科了。但是y_tab这个C语言解释器只提供了1维数组。如果需要用到2维数组时&#xff…...

【Next.js App Router 深度解剖手册】

&#x1f50d; Next.js App Router 深度解剖手册 让我们抛开表象&#xff0c;直击 App Router 的设计核心&#xff01; 本文将用 2000 字 底层原理图解&#xff0c;带你彻底理解这个现代路由系统的运作机制。系好安全带&#xff0c;准备深入代码底层&#xff01; &#x1f68…...

Spring Boot ShardingJDBC分库分表(草稿)

ShardingJDBC分库分表 1.Maven 引用 <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><version>4.1.1</version></dependency><dependency><…...

基于射频开关选择的VNA校准设计

活动发起人小虚竹 想对你说&#xff1a; 这是一个以写作博客为目的的创作活动&#xff0c;旨在鼓励大学生博主们挖掘自己的创作潜能&#xff0c;展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴&#xff0c;那么&#xff0c;快来参加吧&#xff01…...

Pipeline 获取 Jenkins参数

Pipeline 获取 Jenkins参数 Jenkins 提供了一系列默认的环境变量&#xff0c;这些变量在构建过程中可以被使用。以下是一些常见的 Jenkins 默认环境变量&#xff1a; WORKSPACE: 当前构建的工作目录路径 JOB_NAME: 当前构建的作业名称 BUILD_NUMBER: 当前构建的编号&#xff…...

ARM Linux平台下 OpenCV Camera 实验

一、硬件原理 1. OV2640 1.1 基本功能 OV2640 是一款低功耗、高性能的图像传感器&#xff0c;支持以下功能&#xff1a; 最高分辨率&#xff1a;200 万像素&#xff08;1600x1200&#xff09;。 输出格式&#xff1a;JPEG、YUV、RGB。 内置图像处理功能&#xff1a;自动曝…...

【Python爬虫(30)】构建高效爬虫数据管理体系:从抓取到协作

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…...

淘宝/天猫店铺订单数据导出、销售报表设计与数据分析指南

在电商运营中&#xff0c;订单数据是店铺运营的核心资产之一。通过对订单数据的导出、整理和分析&#xff0c;商家可以更好地了解销售情况、优化运营策略、提升客户满意度&#xff0c;并制定科学的业务决策。本文将详细介绍淘宝/天猫店铺订单数据的导出方法、销售报表的设计思路…...

EasyRTC智能硬件:实时畅联、沉浸互动、消音护航

在当今智能硬件迅猛发展的时代&#xff0c;音视频通讯技术已成为设备与用户、设备与设备间不可或缺的沟通纽带。而EasyRTC&#xff0c;凭借其无可比拟的实时性能、卓越的互动感受以及强大的交互实力&#xff0c;正逐步演变为智能硬件领域的“超级动力”核心。特别是其倾力打造的…...

Docker Mysql 数据迁移

查看启动命令目录映射 查看容器名称 docker ps查看容器的启动命令 docker inspect mysql8.0 |grep CreateCommand -A 20如下图所示:我这边是把/var/lib/mysql 目录映射到我宿主机的/mnt/mysql/data目录下,而且我的数量比较大使用方法1的话时间比较久,所以我采用方法2 如果没…...

【文本】词嵌入经典模型:从one-hot到BERT

【文本】词嵌入经典模型&#xff1a;从one-hot到BERT one-hot编码&#xff08;独热编码&#xff09;&#xff1a; 根据词表的所有词构建一个向量特征。每一个文段中每个单词有一个词向量&#xff08;二进制且只有一位为1&#xff09; — 稀疏、缺乏语义&#xff08;father&am…...

unity学习49:寻路网格链接 offMeshLinks, 以及传送门效果

目录 1 网格链接 offMeshLinks 功能入口 1.1 unity 2022之前 1.2 unity 2022之后 2 网格链接 offMeshLinks 功能设置 3 点击 offMeshLinks 功能里的bake 3.1 unity 2022之前 3.2 unity 2022之后 3.3 实测link 3.4 跳跃距离增大&#xff0c;可以实现轻功类的效果 4 …...

【SQL】SQL多表查询

多表查询案例联系点击此处 &#x1f384;概念 一般我们说的多表查询都涉及外键和父子表之间的关系。比如一对多:一般前面指的是父表后面指的是子表。 ⭐分类 一对多(多对一) 多对多 一对一 ⭐一对多 &#x1f4e2;案例&#xff1a;部门与员工的关系 &#x1f4e2;关系&…...

linux网络安全设置

TCP SYN Flood 攻击 TCP SYN Flood是一种常见&#xff0c;而且有效的远端(远程)拒绝服务(Denial of Service)攻击方式&#xff0c;它透过一定的操作破坏TCP三次握手建立正常连接&#xff0c;占用并耗 费系统资源&#xff0c;使得提供TCP服务的主机系统无法正常工作。由於TCP SY…...

AutoDock CrankPep or ADCP进行蛋白质多肽对接

需求描述 使用AutoDock CrankPep or ADCP进行蛋白质多肽对接 硬件及系统配置 自用电脑型号如下&#xff1a; 电脑&#xff1a;Precision Tower 7810 (Dell Inc.) CPU &#xff1a; Intel Xeon CPU E5-2686 v4 2.30GHz GPU&#xff1a; NVIDIA GeForce GTX 1070 Linux版本&a…...

Qt开源项目获取

GitHub上超实用的Qt开源项目,码住不谢!🎉 宝子们,今天来给大家安利一波GitHub上超棒的Qt开源项目,无论是学习还是开发,都能找到超多灵感和实用工具,快来看看有没有你需要的吧!1. Qt-Advanced-Docking-System完美的Dock窗口布局解决方案,让你的窗口管理变得超级灵活。…...

Java——super

在Java中&#xff0c;super关键字用于引用父类的成员&#xff08;属性、方法或构造器&#xff09;。它在继承关系中非常重要&#xff0c;主要用于以下几种场景&#xff1a; 1. 调用父类的构造器 在子类的构造器中&#xff0c;可以使用super关键字调用父类的构造器。super()必须…...

【设计模式精讲】创建型模式之原型模式(深克隆、浅克隆)

文章目录 第四章 创建型模式4.5 原型模式4.5.1 原型模式介绍4.5.2 原型模式原理4.5.3 深克隆与浅克隆4.5.4 原型模式应用实例4.5.5 原型模式总结 个人主页&#xff1a;道友老李 欢迎加入社区&#xff1a;道友老李的学习社区 第四章 创建型模式 4.5 原型模式 4.5.1 原型模式介…...

DeepSeek动画视频全攻略:从架构到本地部署

DeepSeek 本身并不直接生成动画视频,而是通过与一系列先进的 AI 工具和传统软件协作,完成动画视频的制作任务。这一独特的架构模式,使得 DeepSeek 在动画视频创作领域发挥着不可或缺的辅助作用。其核心流程主要包括脚本生成、画面设计、视频合成与后期处理这几个关键环节。 …...

嵌入式面试高频面试题:嵌入式系统调试方法大全

目录 调试基础概述 调试的重要性 嵌入式系统特点 调试流程 硬件调试方法 JTAG 调试 仿真器调试 逻辑分析仪 软件调试技巧 断点调试 日志输出 内存监视 代码静态分析 嵌入式调试器 常用调试器介绍 调试器使用技巧 远程调试方法 串口调试 网络调试 特殊调试场…...

Java中Map循环安全的删除数据的4中方法

文章目录 前言一、使用Iterator删除二、使用 removeIf&#xff08;Java 8&#xff09;三、遍历时记录需要删除的键&#xff08;不推荐&#xff09;四、使用 Stream&#xff08;Java 8&#xff09;总结 前言 在 Java 中&#xff0c;遍历 HashMap 并删除数据时&#xff0c;直接使…...

影刀RPA中级证书-Excel进阶-开票清单

1.操作题需求 请参照视频内容&#xff0c;将开票账单表格中的数据整理成开票清单。请下载 开票账单.xlsx 整理规则如下&#xff1a; 1. 金额为0的数据为赠品&#xff0c;无需开票&#xff0c;需删除2. 开票清单需要从开票账单中获取的数据包括有开票名称、数量、金额、税率&…...

PMBOK第7版整体架构全面详解

1. 引言 7月1日对于项目管理从业者和研究者而言&#xff0c;是个非凡意义的一个时间&#xff0c;这一天&#xff0c;翘首以待的《 项 目管理知识体系指南 》&#xff08;PMBOK&#xff09;第七版终于发布了。 总体而言&#xff0c;PMBOK第七版集百家之所长&#xff0c;成一…...

el-dropdown选中效果

vue2版本 <template><el-dropdown size"mini" command"handleCommand"><span class"el-dropdown-link">{{ selectedOption }}<i class"el-icon-arrow-down el-icon--right"></i></span><el-d…...

解决 `pip install open-webui` 时的编译错误:Microsoft Visual C++ 14.0 或更高版本缺失

在尝试安装 Python 包 open-webui 时&#xff0c;如果你遇到了如下错误信息&#xff1a; error: subprocess-exited-with-error Building wheel for chroma-hnswlib (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [5 lines of output]running bdist_w…...

git使用指南

一、git客户端设置 git config --global http.sslVerify false git config --global user.name 315222 git config --global user.email li_feng10dahuatech.com ssh-keygen -t rsa -C li_feng10dahuatech.com...

SpringBoot整合Redis和Redision锁

参考文章 1.Redis 1.导入依赖 <!--Redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.apache.c…...

DeepSeek与ChatGPT的对比分析

一 概述 1 DeepSeek DeepSeek是杭州深度求索&#xff08;DeepSeek&#xff09;官方推出的AI助手&#xff0c;免费体验与全球领先AI模型的互动交流。总参数达到6710亿的DeepSeek-V3大模型&#xff0c;多项性能指标对齐海外顶尖模型&#xff0c;用更快的速度、更加全面强…...

部署前端项目

前端项目部署是指将前端应用程序从开发环境转移到生产环境的过程&#xff0c;涉及上传代码和资源文件至服务器并确保其正确运行&#xff0c;以下是详细步骤&#xff1a; 一、前期准备 检查项目依赖&#xff1a;确保项目的所有依赖都已正确安装&#xff0c;并更新到最新版本。常…...

python-leetcode 38.翻转二叉树

题目&#xff1a; 给定一个二叉树的根节点root,检查它是否轴对称。 方法一&#xff1a;递归 如果一个树的左子树与右子树镜像对称&#xff0c;那么这个树是对称的。 互为镜像的条件&#xff1a;他们的两个根结点具有相同的值&#xff0c;每棵树的右子树都与另一个树的左子树…...

js中常用方法整理

数据类型 typeOf()Number&#xff08;&#xff09;parseInt()parseFloat()- * / %检测数据类型转换为数字转换为整数类型转换为浮点类型非加法的数字运算toString()Boolean()String()转换为字符串&#xff0c;不能转换undefined/null字符串拼接转换为布尔类型转换为字符串、所有…...

【云原生】最新版Kubernetes集群基于Containerd部署

文章目录 Kubernetes集群基于Containerd部署(单主多从模式)资源列表基础环境一、基础环境准备1.1、关闭Swap分区1.2、添加hosts解析1.3、桥接的IPv4流量传递给iptables的链 二、准备Containerd容器运行时2.1、安装Containerd2.2、配置Containerd2.3、启动Containerd 三、部署Ku…...

Flink CDC详解

一、Flink CDC 概述 1.1 什么是 Flink CDC? Flink CDC 是 Apache Flink 提供的一种实时数据捕获技术,主要用于从数据库中捕获增量数据变更(如插入、更新、删除操作),并将这些变更数据传输到目标系统进行实时处理或存储。 1.2 Flink CDC 的核心价值 实时数据处理:能够实…...

匹配算法:向下就近原则,向下没有就向上

匹配算法&#xff1a;向下就近原则&#xff0c;向下没有就向上 实现方式一实现方式二总结 实现方式一 private static List<Integer> findMatches(List<Integer> sourceList, List<Integer> searchValues) {List<Integer> sortedList sourceList.stre…...

网络安全三件套

一、在线安全的四个误解     Internet实际上是个有来有往的世界&#xff0c;你可以很轻松地连接到你喜爱的站点&#xff0c;而其他人&#xff0c;例如黑客也很方便地连接到你的机器。实际上&#xff0c;很多机器都因为自己很糟糕的在线安全设置无意间在机器和系统中留下了“…...

NLP-RNN-LSTM浅析

目录 双向 LSTM&#xff08;Bi - LSTM&#xff09; 双向 LSTM&#xff08;Bi - LSTM&#xff09;原理深入讲解 代码示例&#xff08;基于 PyTorch&#xff09; LSTM 应用到双向 RNN 中 代码示例&#xff08;基于 PyTorch&#xff09; 双向 LSTM - CRF&#xff08;Conditio…...

深入解析 iText 7:从 PDF 文档中提取文本和图像

在现代开发中&#xff0c;PDF 文件的操作是不可避免的一部分。无论是生成报告、解析文档&#xff0c;还是从文件中提取信息&#xff0c;我们常常需要处理 PDF 文件。iText 是一个非常强大的库&#xff0c;广泛应用于 PDF 文件的创建、修改和解析。自 iText 7 发布以来&#xff…...

【AI】GitHub Copilot

GitHub Copilot 是一款由 GitHub 和 OpenAI 合作开发的 AI 编程助手&#xff0c;它可以在多种开发工具中使用。以下是 GitHub Copilot 支持的主要开发工具和平台&#xff1a; 1. Visual Studio Code (VS Code) 官方支持&#xff1a;GitHub Copilot 在 VS Code 中拥有最完整的集…...

深入理解 MySQL 8 C++ 源码:SELECT MOD(MONTH(NOW()), 2) 的函数执行过程

MySQL 作为最流行的关系型数据库之一&#xff0c;其内部实现机制一直是开发者探索的热点。本文将以一条简单的 SQL 查询 SELECT MOD(MONTH(NOW()), 2) 为例&#xff0c;深入分析 MySQL 8 源码中内置函数 MOD、MONTH 和 NOW 的执行过程&#xff0c;揭示其底层实现逻辑。 一、SQL…...

基于深度学习进行呼吸音检测的详细示例

以下是一个基于深度学习进行呼吸音检测的详细示例&#xff0c;我们将使用Python语言以及一些常见的深度学习库&#xff08;如TensorFlow、Keras&#xff09;和数据处理库&#xff08;如numpy、pandas&#xff09;&#xff0c;同时会用到音频处理库librosa。整个流程包括数据加载…...

Python 正则表达式的非捕获组介绍

在 Python 正则表达式中&#xff0c;非捕获组 ((?:...)) 是一种用于分组但不保存匹配结果的结构。它与普通的捕获组 (...) 语法类似&#xff0c;但在匹配时不会创建编号或命名的组&#xff0c;常用于简化正则表达式和提高性能。 1. 语法 (?:pattern)?: 表示非捕获标记。pat…...