String类的学习笔记(上):介绍String类及其常用方法的使用

news2024/11/19 17:25:14

本文介绍了Java中用来描述操作字符串的String类,和其一些常用的基本操作方法,字符串的创建输出,字符串对象的比较,字符串查找,字符串的转化,字符串的替换,字符串拆分,字符串截取,和大小写转换,去除左右空格,子字符串包含,学会使用这些方法,能更方便的使用操作字符串~

String类的学习

  • 一.初识String类
    • 1.什么是String类?
    • 2.String类的常用基本操作方法
      • ①.字符串的创建和输出
      • ②.String对象的比较
      • ③.字符串查找
      • ④.字符串的转化
      • ⑤.字符串的替换
      • ⑥.字符串拆分
      • ⑦.字符串截取
      • ⑧.其他一些常用字符串方法(大小写转换,去除左右空字符,字符串匹配)

一.初识String类

前言:String也就是字符串的意思,所谓字符串就是0到多个字符构成的整体,而字符串在日常开发中应用场景很多,我们输入的一连串文字也可以看成是字符串, 而在Java库中提供了String类即字符串类供我们用其描述字符串…

1.什么是String类?

String类也就是字符串类 是Java库中提供的供程序员操作字符串的一个类,

而在C语言中也存在字符串,它可以用字符指针或者字符数组等进行指向或者存储字符串来对其进行操作
但是在C语言这类面向过程的语言当中,只是单一的存放字符串,故还有一些专门对字符串进行的相关操作(如:计算字符串长度, 字符串比较等)需要独立封装方法出来,

故在C语言提供了标准的函数库需要预编译指令#include<string.h>包含头文件后,可以调用其提供的对字符串进行操作的函数完成大部分字符串操作(如:strlen 计算字符串长度 strcmp比较两个字符串的大小等…)
但是,这种对数据和操作数据的方法分离开的方式并不符合面向对象的思想,而字符串又应用非常广泛,

在Java纯面向对象的语言中对字符串的使用也随处可见,故java中对字符串的存储和操作提供了String类…

String类即封装了字符串和对字符串的操作方法,并且有一些相应的权限限制,从使用角度来看,String类更契合字符串的特性,对字符串操作更方便也易于拓展…

2.String类的常用基本操作方法

String类内部设计很巧妙,而对于String类的学习,先用起来再分析其内部的构造对于初学者会事半功倍~

为了更容易理解String的方法
以下是博主用一些常用的字符串操作方法的代码和运行结果~

先用起来,再使用不同方法时 注意其每个方法的相同之处~

①.字符串的创建和输出

所谓创建和输出即是字符串对象的构造方法,和输出字符串的内容
以下是String的一些构造方法,了解常用的即可
在这里插入图片描述

String类的构造方法有很多,大多都是根据传过来的参数内容构建相应的字符串
还有一些传递的数组设置了范围(左闭右开区间),根据其范围内的数据进行构建字符串,

注意:还有一些参数是int[] byte[]类型时 构建的字符串内容是对应着int[] 每个元素的Ascll码字符
在这里插入图片描述
常用的构造方法:

String str="hello";// 直接赋值 字符串常量
String str1=new String("hello");//实例化对象 其传字符串传字符串常量
char[] ch={'h','e','l','l','o'};
String str2=new String(ch); // 实例化字符串对象 传字符数组引用

// 以上都会创建字符串对象 内容为 hello

字符串的输出:
输出字符串的内容直接使用内置的println输出方法即可~


public static void main(String[] args) {
        String str="hello";// 直接赋值 字符串常量
        String str1=new String("hello");//实例化对象 其传字符串传字符串常量
        char[] ch={'h','e','l','l','o'};
        String str2=new String(ch); // 实例化字符串对象 传字符数组引用
        System.out.println(str);
        System.out.println(str1);
        System.out.println(str2);
    }

在这里插入图片描述

在上篇博客中 能够知道,通过println输出对象内容实际上是重写了Object的toString方法,而输出字符串对象内容是否是字符串类里重写的toString 得到的字符串的内容呢?

不是,在String类里重写的toString方法,但是其内部实现并不是返回字符串内容的字符串形式,而是直接返回当前字符串对象引用
在这里插入图片描述
因为方法重载,println输出字符串对象会调用对应的println方法,根据相应的方法而输出字符串对象内的字符串内容,
而并不是String对象内重写的toString得到的字符串对象内容
具体输出内容是在println内部调用的方法中(暂不深究)
故输出字符串内容 直接使用println方法传递对象即可
在这里插入图片描述

②.String对象的比较

对于对象的比较分为 比较对象是否相等 和比较对象的大小

1.比较String对象是否相等

比较对象是否相等 可以使用== 和equals 方法以及equalsIgnoreCase 方法

public static void main(String[] args) { //比较两个字符串是否相等
        String str1="hello";
        String str2="hello";
        System.out.println(str1==str2);  //?

        //str1 和 str2 指向的都是存放 同一个字符串对象地址 比较的是地址
        String str3=new String("hello");
        String str4=new String("hello");
        // str3和str4 都是new了一个新的字符串对象 两个字符串对象地址不同!
        System.out.println(str3==str4);//?
        //比较两个字符串是否相等不能用==号其比较的是地址 得用内部的equals方法
        System.out.println(str3.equals(str4));  //String 里的equals 实际上也是重写了 object的equals方法
        System.out.println("HELLO".equalsIgnoreCase("hello"));// 忽略大小写比较是否相等
    }

在这里插入图片描述
注意: == 比较的是对象的地址 (没有意义) , 至于为什么不同的两种写法会有不同的逻辑值 其涉及到后面的字符串常量池~

equals在字符串类里重写了Object的方法能够按照字符串内容比较两个字符串是否相等

equalsIgnoreCase方法是忽略一些情况进行比较即是忽略字符串大小写进行比较( Hello 和hello 比较会 看作相等)

比较字符串是否相等用==不会报错 但没有意义
比较字符串是否相等用equals方法 要忽略大小写比较则equalsIgnoreCase方法

2.比较字符串对象的大小
比较字符串对象的大小是按字符串每个字典序大小进行判断

public static void main(String[] args) {//比较两个字符串的大小
        String str1="hello";
        String str2="hellO";
        //System.out.println(str1>str2);  不能用 > <
        System.out.println(str1.compareTo(str2));
 //实现了 comparable接口重写了compareTo方法 按字典序比较字符串对象内字符数组引用指向的字符数组内每个字符大小
 
// 从下标0开始的字符比较 当出现不同 str1 大于str2返回大于零的数 反之小于零的数 如果所有都相等则返回零
        System.out.println(str1.compareToIgnoreCase(str2)); //两个字符串对象比较大小 忽视大小写  汉字对应的是其他Ascll码值
    }

比较字符串大小不能用> < 比较 其只能作用于基本数据类型

compareTo方法比较字符串大小
字符串大小的比较需要调用compareTo方法,而此方法是String类实现了Comparable接口具备比较特性后重写的方法,方法体即是按照字符串字典序进行比较
在这里插入图片描述
当对应字符不相等时 c1比c2大 则字符串1比字符串2大 当字符相等长度不相等时,长度越长的字符串大 ,而完全相等则返回0(即两个字符串相等)

compareToIgnoreCase忽略大小写情况比较字符串大小
其作用是当两个字符串的每个字符 只是大小写不相等时, 会看成是同一个字符进行比较

字符串比较大小不能用> <
比较大小使用实现Comparable接口重写的compareTo方法
要忽略大小写情况比较 使用compareToIgnoreCase方法

③.字符串查找

字符串查找的一些方法在String类中经常被用到

比如:查找字符串中某个字符或者字符串所在的下标位置,查找指定字符在字符串中第一次出现或者最后一次出现的下标

public static void main(String[] args) {//字符串内 寻找字符内 字符 字符串 的方法
        String str1="hello";
        System.out.println(str1.charAt(4));  //获取字符串里指向字符数组下标为4位置的字符
        System.out.println(str1.indexOf('l'));  //返回字符串内 第一个出现'l' 字符的下标位置不存在则返回-1
        System.out.println(str1.indexOf('l',2)); //重载 从指定下标位置开始往后找第一个出现字符'l'的下标位置
        System.out.println(str1.indexOf("llo"));//(找子字符串)从起始位置返开始回字符串中第一次出现字符串"llo"其第一个字符的下标位置
        System.out.println(str1.indexOf("llo",3));//从3下标位置往后找子字符串 找不到返回-1
        System.out.println(str1.lastIndexOf('l'));//从后往前找第一个出现'l'的下标位置
        System.out.println(str1.lastIndexOf('l',2));//从2下标位置开始往前找
        System.out.println(str1.lastIndexOf("llo"));//从后往前找子字符串 注意字符串顺序不会颠倒 hello 从后找llo 字母顺序还是从左往右返回的也是字符串首字符地址
        System.out.println(str1.lastIndexOf("llo",2));//从指定下标从后往前找
    }

在这里插入图片描述

④.字符串的转化

String类中提供了将其他数据类型的数据转换为String类型的数据,也提供了将String转换为数组等方法

其他数据类型转换为String类型

public static void main(String[] args) { //将 其他类型转换为字符串
        String str ;
       str=String.valueOf(123); // String字符串内有valueOf静态方法 直接用类名调用 将所有基本数据类型数据(short byte除外) 转换为字符串
        System.out.println(str);
        str=String.valueOf(3.14);
        System.out.println(str);

        char [] arr={'h','e','l','l','o'};
        str=String.valueOf(arr); //等价于 实例化一个字符串对象将字符数组调用其构造方法  只能用于字符数组 整形数组不行
        System.out.println(str);
        str=String.copyValueOf(arr); //和上面等价 实现的都是 拷贝一份字符数组 实例化一个字符串对象 将其内部字符数组引用变量指向拷贝的字符数组
        System.out.println(str);
        str=String.valueOf(arr,2,3);//支持重载 从指定下标位置往后拷贝 3个字符 作为新数组给新字符串
        System.out.println(str);
        str=String.valueOf(new Note()); // 传递 对象地址 实际会调用对象内的toString方法得到对象内容的字符串形式返回用于printf
        System.out.println(str);
    }

在这里插入图片描述
注意:

1.字符串转化的方法String.valueOf是静态方法不需要示例对象,但是转换后会创建String对象
2. 除了short byte以外的基本数据类型数据 都可以通过String.valueOf方法转换为对应的字符串
3. String.valueOf可以传字符数组引用 根据其字符数组内容创建字符串但不能是整形数组
4.转化为字符串的数据是自定义类的实例,则会将其内容转化为字符串形式即会调用其toString方法,而如果没有重写则会调用Object类的toString方法

===============================================================

String类型的一些特殊转换
toCharArray方法 将当前字符串 转换为字符数组形式返回
String.format将数据格式化转换为字符串返回(类似于C语言的格式化输出)

public static void main(String[] args) { // 转换字符串方法
        String str="hello";
        char []arr=str.toCharArray();  // 将字符串 转换为一个字符数组 返回  即将字符串内的字符数组拷贝一份字符数组返回其地址
        System.out.println(arr);
        String str1=new String(arr);  //将数组转换为字符串  即创建一个字符串对象 调用其构造方法传数组引用 此字符串内的数组是拷贝的新的
        String str2=String.format("%d-%3d-%.2f",2023,2,7.666); //格式化转换为字符串按照数据的类型 按相对应的格式输出字符串 将其转换为字符串
        System.out.println(str2);
    }

在这里插入图片描述
注意:

toCharArray方法是成员方法,根据当前字符串对象的字符串内容转换为对应的字符数组(会拷贝新数组返回)
println输出方法 如果传参是字符数组则可以直接输出字符数组的所有字符(是整形等则会输出其全路径)
格式化转换语句是在""内的 对应的%d 是整形格式化 %3d则是宽度为3 不足左边补空格 %f是浮点型格式化 %.2f是四舍五入保留两位小数(对应的格式化和C语言类似).
对应的转换的基本类型数据在后面 逗号隔开, 每个格式化类型需要对应基本数据类型格式(不能%d 转换浮点型数据)

⑤.字符串的替换

即将字符串内的指定字符或字符串内容替换为其他字符或者字符串

在这里插入图片描述

public static void main(String[] args) {// 替换字符串里的内容的方法  字符或者字符串  注意:字符串都是不可变的 实际上是产生新的一份字符串
        String str="aaaaaa";
        str=str.replace('a','6'); //将字符串内的所有a字符替换为6字符  可以作用于字符或者字符串
        System.out.println(str);
        str="ababc";
        str=str.replace("ab","666");//将字符串内 所有子字符串"aa"替换为 "666"
        //CharSequence 是一个String实现的一个接口 这里就可以用向上转型接受
        System.out.println(str);
        //下面两个只能作用于字符串
        str=str.replaceAll("666","c");//和上面等价 就是将第一个参数全部替换为第二个参数
        System.out.println(str);
        str=str.replaceFirst("c","6"); //遇到的第一个字符串"a"替换为字符串"6"
        System.out.println(str);
    }

在这里插入图片描述
注意:

replace方法可以传递字符参数,将字符串内所有出现此字符的替换为指定字符,
也可以传字符串参数,即字符串内从左向右顺序出现的子字符串等于字符串参数的内容替换为指定字符串
而replaceAll和replaceFirst方法只能传递字符串参数
replaceAll即将字符串内所有子字符串为字符串参数的替换为指定字符串(等价于replace替换字符串)
replaceFirst是从左往右顺序将第一次出现的等于字符串参数的子字符串替换为指定字符串

⑥.字符串拆分

可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串
字符串拆分是很常用的操作,重点掌握

在这里插入图片描述

public static void main(String[] args) {   //字符串拆分 方法
        String str="good good study";
        String[] strings=str.split(" ");//将字符串 以" "分成多组 会创建一个字符串数组 存放 返回字符串数组地址
        System.out.println(Arrays.toString(strings));
        

        String[] str1=str.split(" ",2);  // 重载 将字符串最多分成2组字符串 多余不再分 返回字符串地址
        for (int i = 0; i < str1.length; i++) { // for循环遍历字符串数组
            System.out.println(str1[i]);
        }
        String str2="192.168.1.0";
        String [] strings1=str2.split("\\.");  //   两个\ 代表一个\转义再.  //. 表示转义一个.字符
        //   "丨" "*" "+" "." "\" 表示这些字符都需要转义在前面加上"\\"  如:"\\|"表示"|" 而表示\字符需要 "\\\\"表示"\"
         
        for (int i = 0; i < strings1.length; i++) {
            System.out.println(strings1[i]);
        }
        String str3="192\\168\\1\\0";   //  一个\会为转义字符 后面跟数字会转义成八进制字符 故表示\字符使其不为转义 要\\表示一个\
        String[] strings2=str3.split("\\\\"); //  表示字符串中的\字符 进行拆分 需要\\\\
        for (int i = 0; i < strings2.length; i++) {
            System.out.println(strings2[i]);
        }

        String str4="192;168.1'0";
        String[]strings3=str4.split("'|;|\\.");  // 将";和.和'  用| 连接 表示要拿这三个字符串作为分隔 "
        for (int i = 0; i < strings3.length; i++) {
            System.out.println(strings3[i]);
        }
    }

在这里插入图片描述
注意:

split 方法 接受的参数是字符串类型 即根据接受的字符串在原字符串对象里按接受的分隔字符串进行拆分,拆分的内容不会出现进行分隔的字符串

拆分后返回的是一个String类型数组对象,因为拆分为了多个字符串对象

split 两个参数时, 第二个为整数 即表示最多拆分的组数, 从左往右开始拆分 当超过最大组数 后面即便有分隔字符串也不会拆分

拆分时要注意转义字符\ 当字符串里想要表示一个\字符时 需要两个\ 否则\111即会将111看成八进制数转换为十进制数对应的Ascll码字符
当分隔字符为丨 * + . \ 这五个特殊字符作为字符串时 需要在前面加上\将其转义为作为分隔的字符串 如 \\丨 表示一个|
而在拆分时要以\字符作为拆分传递的字符串参数应为\\\\ 表示字符串中的一个\字符串作为分隔符

丨 字符作为特殊字符 在作为分隔字符串时可以用| 后面再加字符串内容即丨两边的字符串都可以作为分隔的字符串对字符串对象进行分隔 如-丨, 拆分时会按- 或,对字符串对象进行拆分

⑦.字符串截取

从一个完整的字符串之中截取出部分内容为新的字符串

在这里插入图片描述

public static void main(String[] args) {  //字符串 截取 方法
        String str1="0123456789";
        String str2=str1.substring(3);// 从字符串下标为3位置开始截取 截取出3位置和其后的字符
        System.out.println(str2);
        String str3=str1.substring(4,7);  //截取出 下标 [4,7)范围内的字符串
        System.out.println(str3);
        String str4=(String) str1.subSequence(0,7);// 也可以拆分 会返回charSequence接口类型  得向下转型
        System.out.println(str4);
    }

在这里插入图片描述

注意:

subString一个整形参数时即从当前整形开始截取到字符串末尾
subString两个整形参数时是左闭右开区间 如: 3 5 截取的是下标3和下标4两个字符组成的字符串
subSequence方法和subString方法一样 但是只能设定两个参数截取区间,其返回的是charSequence接口类型,需要再向下转型
charSequence是String实现的一个接口,其内部具有一些抽象方法和默认方法~

⑧.其他一些常用字符串方法(大小写转换,去除左右空字符,字符串匹配)

字符串大小写的转换,子字符串的包含,字符串去除左右空格方法示例~
字符串还有很多方法,需要了解看文档去使用,

字符串 中大小写字符串的转换

 public static void main(String[] args) { //字符串大小写转换
        String str1="ABCD";
        String str2="abcd";

        System.out.println(str1.toLowerCase());  //将字符串内大写字符都变成小写
        System.out.println(str2.toUpperCase());   //将字符串内小写字符都变成大写
        System.out.println(str1);  //变化实际上返回的是一个新字符串里面存放了变化后的字符串

        System.out.println(str1.toUpperCase()==str1); // str1本身是大写 再转换为大写 没有发生改变
        System.out.println(str1.toLowerCase()==str1);// str1是大写转换为小写 创建了新对象
        // 如果当前字符串全是小写或者大写不需要变化情况下 则没有对字符串进行修改会返回当前字符串地址 (效率)
    }

在这里插入图片描述

注意:
在这里插入图片描述
转换后是创建新的字符串对象, 但在进行转换前会会先进行检查当当字符串内容转换前和转换后没有变化即全是大写再转换大写时,会直接返回当前字符串对象,不做后续任何转换 (减少不必要的操作)

大写转小写:toLowerCase 小写转大写 :toUpperCase 只涉及到对字母的转换 ,当不需要转换时,会返回原对象

==============================================================
trim去除字符串左右两边空格

public static void main(String[] args) {  //去掉 字符串左右两边空白 方法
        String str1="         hello  world         ";
        String str2=str1.trim();  // 将左右两边的空白字符(空格 换行 回车产生的字符)全部删掉
        System.out.println(str2);
        String str3=str1.replace(" ","");  //而使用替换操作 将空格字符串替换为空字符串会将空格全部替换
        System.out.println(str3);
    }

在这里插入图片描述
注意: trim方法 是将字符串对象左右两边产生的空白字符串全部清除,字符间的仍会存在

==============================================================
contains方法 判断某个字符串是否为主字符串的子串

public static void main(String[] args) {  //是否是子字符串
        String str="abcde";
        System.out.println(str.contains("ab"));  //查询一个字符串是否是另一个字符串的子字符串 实际底层用的 是indexOf方法
        System.out.println(str.indexOf("bc"));// 第一次出现bc的首字符下标, 即也可以判断字符串内是否存在此字符串
    }

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

contains实际上底层调用的是indexOf方法 即只要在主字符串内找到第一次出现的要查找的字符即 存在包含关系 属于方法复用~

此方法也是串中提到的字符串匹配问题~
,即判断一个字符串是否为另一个字符串的子字符串,其判断方法String已经写好,但有很多关于这方面的算法:BF暴力匹配算法 BM算法
KMP算法等 , 学编程 不仅要会利用内置的库方法 也要学习他人优秀的算法锻炼思维~

本文介绍了Java中对字符串进行描述操作的String类,
以及其常用的一些基本操作方法,其所有共同点是对字符串的内容进行修改是会创建新字符串对象,对新字符串对象进行修改后返回新字符串对象,
学会使用这些方法,对字符串的使用能更上一层
在下一篇会介绍String不可变性,字符串常量池和StringBuilder和StringBuffer

在这里插入图片描述

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

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

相关文章

c++积累6-内联函数

1、说明 内联函数是c为提高程序运行速度所做的一项改进。 2、常规函数运行 编译的可执行程序&#xff1a;由一组机器语言指令组成。 程序执行&#xff1a; 1、操作系统将这些指令载入到内存&#xff0c;每条指令都有一个特定的内存地址 2、计算机逐步执行这些指令 3、如果有…

数据结构修炼第二篇:顺序表和链表

系列文章目录 第一章 时间复杂度和空间复杂度 第二章 顺序表&#xff0c;列表 第三章 栈和队列 第四章 二叉树 第五章 排序 作者&#xff1a;&#x1f388;乐言&#x1f388; 简介&#xff1a;&#x1f388;大一学生&#xff0c;目前在致力于c/c/python&#xff0c;高数的…

二十四节气-谷雨文案、海报分享,谷雨润万物,不觉夏已至。

谷雨&#xff0c;是二十四节气之第6个节气&#xff0c;春季的最后一个节气。 谷雨有三候&#xff1a; 一候萍始生&#xff0c;即谷雨后降雨量增多&#xff0c;春雨绵绵&#xff0c;浮萍开始生长&#xff1b; 二候鸣鸠拂其羽&#xff0c;布谷鸟便开始提醒人们播种了&#xff…

【SCI征稿】IEEE旗下1区人工智能类SCI, 稳定检索22年,仅3个月左右录用~

一、期刊简介&#xff1a; 1区人工智能类SCI&EI (高质量) 【期刊概况】IF:6.0-7.0, JCR1区, 中科院3区&#xff1b; 【终审周期】走期刊部系统&#xff0c;3个月左右录用&#xff1b; 【检索情况】SCI&EI双检&#xff0c;正刊&#xff1b; 【数据库收录年份】2001…

自编码器简单介绍—使用PyTorch库实现一个简单的自编码器,并使用MNIST数据集进行训练和测试

文章目录 自编码器简单介绍什么是自编码器&#xff1f;自动编码器和卷积神经网络的区别&#xff1f;如何构建一个自编码器&#xff1f;如何训练自编码器&#xff1f;如何使用自编码器进行图像压缩&#xff1f;总结使用PyTorch构建简单的自动编码器第一步&#xff1a;导入库和数…

中级软件设计师备考---数据库系统2

目录 规范化理论并发控制数据库完整性约束数据备份 规范化理论 函数依赖 部分函数依赖&#xff1a;在一个关系中&#xff0c;一个非主属性依赖于该关系的某个候选键的一部分属性。举个例子&#xff0c;假设有一个关系R(A,B,C,D)&#xff0c;其中(A,B)是候选键。 如果C仅依赖于A…

微服务学习之面试知识相关总结(Nacos、MQ)

文章目录 壹 微服务Nacos1.1 SpringCloud常见组件1.2 Nacos的服务注册表结构1.3 Nacos如何支撑内部数十万服务注册压力1.4 Nacos避免并发读写冲突问1.5 Nacos与Eureka的区别1.6 Sentinel的限流与Gateway的限流的差别1.7 Sentinel的线程隔离与Hystix的线程隔离的差别 贰 MQ知识2…

前端Img图片不同格式的互相转化

目录 一、格式简介 二、格式互转 2.1、base64在视图上进行页面展示 2.3、将二进制流转为url进行页面展示 2.3、静态路径转二进制流传给后端 一、格式简介 主要有base64(数字字母组成的乱码那种)、url(http://xxx地址那种)、二进制流(后端上传图片的格式)、本地项目文件夹…

【JavaEE】社区版IDEA(2021.X版本及之前)创建SpringBoot项目

目录 下载Spring Boot Helper 创建项目 下载相关依赖 判断成功 删除多余文件 项目建好后添加依赖 输出Hello World SpringBoot的优点 下载Spring Boot Helper 创建项目 下载相关依赖 如果没有配置过国内源&#xff0c;参考【JavaEE】Spring项目的创建与使用_p_fly的博…

[架构之路-173]-《软考-系统分析师》-5-数据库系统-6-分布式数据库系统

目录 5 . 6 分布式数据库系统 5.6.1分布式数据库槪述 0. 分布式数据库特点 1 . 分布式数据库的体系结构 2 . 分布式数据库的优点 5.6.2 数据切片 1 . 数据分片方法的分类 2 . 数据分片的原则 3 . 分布透明性 5.6.3分布式数据库查询优化 2 . 副本的选择与多副本的更新策…

数据迁移实践 | MySQL到ClickHouse,HTAP黄金搭档

MySQL是世界上最流行的开源数据库&#xff0c;也是OLTP界的顶流&#xff0c;但是对于OLAP分析型业务场景的能力太弱。ClickHouse是最近几年数仓OLAP分析查询领域的黑马&#xff0c;当红炸子鸡&#xff0c;有意思的是天然兼容MySQL语法。所以很多用户喜欢OLTP放MySQL&#xff0c…

2023年湖北安全员ABC证报考条件都有哪些?甘建二告诉你

一、安全员ABC证是什么&#xff1f; 安全员A、B、C证属于建筑三类人员证书。建筑三类人员&#xff1a;是指建筑施工企业主要负责人、项目负责人和专职安全生产管理人员。 建筑企业的法人代表&#xff0c;必须取得A证才能担任法人代表 建造师必须取得B证才能担任项目负责人 …

FreeRTOS 信号量(一)

文章目录 一、信号量简介二、二值信号量1. 二值信号量简介2. 创建二值信号量①函数 vSemaphoreCreateBinary ()②函数 xSemaphoreCreateBinary()③函数 xSemaphoreCreateBinaryStatic() 3. 二值信号量创建过程分析4. 释放信号量①函数 xSemaphoreGive()②函数 xSemaphoreGiveFr…

UFD203A101 3BHE019361R0101电 工理论、电子技术、信息处理、控制理论、电力系统分析

UFD203A101 3BHE019361R0101电 工理论、电子技术、信息处理、控制理论、电力系统分析 作为电气工程及其自动化专业的大学生都会关心电气工程及其自动化就业方向是什么&#xff1f;电气工程专业就业方向怎样&#xff1f;自动化专业就业方向怎样&#xff1f; 对于很多本专业的在校…

实验06:哈夫曼编码

1.实验目的&#xff1a; 理解贪心算法的思想&#xff0c;掌握哈夫曼编码的技术和图像编解码算法的基本。 2.实验内容&#xff1a; 统计图像像素灰度值的分布特性&#xff0c;利用哈夫曼编码构造码表&#xff0c;实现对图像的编码和解码。 3.实验要求&#xff1a; 首先完成…

《JavaEE》InputStream, OutputStream 的用法

目录 File类 路径 绝对路径 相对路径 InputStream和OutputStream的使用 InputStream基本用法 OutputStream基本用法 功能实现 我们先来尝试着使用一些File类完成一些基本操作 我们查看这个文本是否存在 如果不存在我们创建一个新的文本出来 在当前文件夹中创建一个新…

MATLAB函数封装1:生成QT可以调用的.dll动态链接库

在进行相关算法的开发和设计过程中&#xff0c;MATLAB具有特别的优势&#xff0c;尤其是对于矩阵运算的处理&#xff0c;具有很多现成的方法和函数可以进行调用&#xff0c;同时MATLAB支持把函数封装成不同的语言方便完成算法的集成。 这里记录利用MATLAB封装成C动态链接库&…

git 自学笔记

git 自学笔记 git 是一个开源的分布式版本控制软件&#xff0c;可以敏捷的处理任何大小项目。 git 的工作流程大体如下&#xff1a; 首先克隆一个git资源作为工作目录 在克隆的资源上添加或者修改文件 如果其他人也修改了&#xff0c;就要对资源进行更新 在提交时也要查看有没有…

通过使用生成对抗市场模型改进基于强化学习的交易的泛化

Improving Generalization in Reinforcement Learning–Based Trading by Using a Generative Adversarial Market Model | IEEE Journals & Magazine | IEEE Xplore Improving Generalization in Reinforcement Learning–Based Trading by Using a Generative Adversaria…

ASEMI代理ADG736BRMZ-REEL7原装ADI车规级ADG736BRMZ-REEL7

编辑&#xff1a;ll ASEMI代理ADG736BRMZ-REEL7原装ADI车规级ADG736BRMZ-REEL7 型号&#xff1a;ADG736BRMZ-REEL7 品牌&#xff1a;ADI /亚德诺 封装&#xff1a;MSOP-10 批号&#xff1a;2023 安装类型&#xff1a;表面贴装型 引脚数量&#xff1a;10 类型&#xff1…