(day4) 自学Java——字符串

news2024/12/26 22:14:13

ctrl+alt+T 选择语句包裹

目录

1.API

2.String创建

3.字符串的比较

 4.字符串——练习

(1):用户登录

(2)遍历字符串和统计字符个数

(3)字符串拼接和反转

(4)金额转换

(5)手机号屏蔽,游戏敏感词替换

5.StringBuilder

6.字符串相关类的底层原理

7.较难练习

(1)罗马数字的两种写法

(2)调整字符串内容并比较

8.后续练习思路分析


1.API

API: 应用程序编程接口。

简单解释:就是别人写好的东西,我们不需要编写,直接使用即可。

Java API:指JDK中提供的各种功能的Java类。

API帮助文档,可以在这个文档里查询API。

2.String创建

字符串不可变,它们的值被创建后不能被更改。

chatAt();能够用来检索特定索引下的字符

substring();截取

replace();替换

equals();相等

toCharArray();字符串转字符数组

new String(arr);字符数组转字符串

 

当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在,不存在就创建新的,存在就复用。

直接复制好处:代码简单,节约内存。

new的方式创建字符串,字符串不会被复用。

3.字符串的比较

想要比较字符串的内容,必须用String里的方法。

 4.字符串——练习

(1):用户登录

  • 已知正确的用户名和密码,请用程序实现模拟用户登录。
  • 总共给3次机会,登录之后,给出相应提示。
import java.util.Scanner;

public class Login {
    public static void main(String[] args) {
        String rightUser="zhangsan";
        String rightPass="123456";
        Scanner sc=new Scanner(System.in);
        for (int i = 0; i <3 ; i++) {
            System.out.print("请输入账号:");
            String user=sc.next();
            System.out.print("请输入密码:");
            String pass=sc.next();
            if(rightUser.equals(user)&&rightPass.equals(pass)){
                System.out.println("登录成功");
                break;
            }
            else{
                System.out.println("登录失败,账号或密码有误。还有"+(2-i)+"次机会登录");
                if((2-i)==0){
                    System.out.println("您的"+user+"账号已经被锁定,请联系xxxx人员");
                }
            }
        }
    }
}

(2)遍历字符串和统计字符个数

  •  键盘录入一个字符串,使用程序在控制台遍历该字符串。
import java.util.Scanner;

public class StringTest {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入一个字符串:");
        String str=sc.next();
        for (int i = 0; i < str.length(); i++) {
            System.out.println(str.charAt(i));
        }
    }
}
  • 统计字符次数
  • 键盘录入一个字符串,统计该字符串中,大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)
import java.util.Scanner;

public class StringTest {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入一个字符串:");
        String str=sc.next();
        int bigCount=0;
        int smallCount=0;
        int numCount=0;
//  char类型在计算时,会提升为int,然后查询ascii码表
        for (int i = 0; i < str.length(); i++) {
            char c=str.charAt(i);
            if(c>='A'&&c<='Z'){
                bigCount++;
            }
            else if(c>='a'&&c<='z'){
                smallCount++;
            }
            else if(c>='0'&&c<='9'){
                numCount++;
            }
        }
        System.out.println("大写字符个数:"+bigCount);
        System.out.println("小写字符个数:"+smallCount);
        System.out.println("数字字符个数:"+numCount);
    }
}

(3)字符串拼接和反转

  • 拼接字符串
  • 定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。
  • 例如:数组为int[]arr={1,2,3};   执行方法后的输出结果为:[1,2,3]
public class StringTest {
    public static void main(String[] args) {
        int[]arr={1,2,3};
        arrToString(arr);
    }
    public static  String arrToString(int[]arr){
        if(arr==null){
            return "";
        }
        if(arr.length==0){
            return "[]";
        }
//        数组不为null,长度不为0,说明数组中一定有数据
        String left="[";
        for (int i = 0; i < arr.length; i++) {
            if(i<arr.length-1){
                left=left+arr[i]+',';
            }
            else {
                left=left+arr[i];
            }
        }
        left=left+']';
        System.out.println(left);
        return left;
    }
}
  • 定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果。
  • 例如,键盘输入abc,输出结果cda。
import java.util.Scanner;

public class StringTest {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入一个字符串:");
        String c=sc.next();
        reverseArr(c);

    }
    public static void reverseArr(String str){
        String result="";
//倒着遍历
        for (int i = str.length()-1; i >=0 ; i--) {
            char c=str.charAt(i);
            result=result+c;
        }
        System.out.println(result);
    }
}

(4)金额转换

import java.util.Scanner;

public class StringTest {
    public static void main(String[] args) {
        //1.输入
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入金额:");
        int number = sc.nextInt();
        //判断金额是否有效
        if (number >= 1 && number <= 9999999) {
            String left = "";
            //4.获得数字的每一位,并转换、拼接
            while (true) {
                int ge = number % 10;
                number = number / 10;
                String geNew = ExchangeCapitalNum(ge);
                left = geNew + left;
                if (number == 0) {
                    break;
                }
            }
            //5.不足7位,在前面补0
            String leftStr = left;
            for (int i = 0; i < (7 - left.length()); i++) {
                leftStr = '零' + leftStr;
            }
            //6.满足7位数字,调用方法,补齐单位
            MoneyStr(leftStr);
        }
        else {
            System.out.println("输入金额无效");
        }
    }
    //2.转换,1-壹
    public static String ExchangeCapitalNum(int ge) {
        String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        String geNew = arr[ge];
        return geNew;
    }
    //3.加单位
    public static void MoneyStr(String left) {
        String[] arr = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
        String result = "";
        for (int i = arr.length - 1; i >= 0; i--) {

            char moneystr = left.charAt(i);
            result = moneystr + arr[i] + result;

        }
        System.out.println(result);
    }
}

(5)手机号屏蔽,游戏敏感词替换

  •  手机号屏蔽:将12387634991变成123****4991
public class StringTest {
    public static void main(String[] args) {
        //1.输入
        String phoneNum="12387634991";
        String result=phoneNum.substring(0,3)+"****"+phoneNum.substring(7,11);
        System.out.println(result);
    }
}
  • 游戏敏感词替换
public class StringTest {
    public static void main(String[] args) {
        //1.输入
        String talk="玩的很好,下次不要再玩了,TMD,SB";
        String[]arr={"TMD","SB","2B","CNM"};
        for (int i = 0; i < arr.length; i++) {
             talk=talk.replace(arr[i],"***");
        }
        System.out.println(talk);
    }
}

5.StringBuilder

 StringBuilder可以看成一个容器,创建之后里面的内容是可变的。

作用:提高字符串的操作效率。

使用场景:1.字符串的拼接;2.字符串的反转。

注:StringBuilder是Java已经写好的类,Java在底层对其做了特殊处理,打印对象不是地址值而是属性值。(用完可以转换为String,用方法:toString())

链式编程举例:

  • 练习:键盘接收一个字符串,程序判断该字符串是否是对称字符串,并在控制台打印是或者不是
  • 对称字符串:123321、111
  • 非对称字符串:123123
import java.util.Scanner;

public class StringTest {
    public static void main(String[] args) {
        //输入
        Scanner sc=new Scanner(System.in);
        System.out.println("判断该字符串是否为对称字符串");
        System.out.println("请输入一个字符串:");
        String str=sc.next();
        StringBuilder sb=new StringBuilder(str);
        String str1=sb.reverse().toString();
        if(str.equals(str1)){
            System.out.println("是");
        }
        else {
            System.out.println("不是");
        }
    }
}
  •  练习:拼接字符串。定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回。
  • 调用该方法,并在控制台输出结果。
  • 例如:数组为int[]arr={1,2,3};
  • 执行方法后输出结果为:[1,2,3]
public class StringTest {
    public static void main(String[] args) {
        int[]arr={1,2,3};
        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();
    }
}

6.StringJoiner

StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。

作用:提高字符串的操作效率,而且代码编写特别简洁。

7.字符串相关类的底层原理

 一个加号,堆内存里两个对象。

结论:如果很多字符串变量拼接,不要直接“+”。在底层会创建多个对象,浪费时间,浪费性能。

 

8.较难练习

(1)罗马数字的写法

  • 转换罗马数字
  • 要求1:长度为小于等于9
  • 要求2:只能是数字
  • 将内容变成罗马数字
  • 下面是阿拉伯数字跟罗马数字的对比关系:
import java.util.Scanner;

public class StringTest {
    public static void main(String[] args) {
        //1~9:I ,II ,III,IV ,V ,VI,VII ,VIII ,IX
        //1。输入字符串
        Scanner sc=new Scanner(System.in);
        while (true) {
            System.out.print("请输入都为数字的字符串:");
            String str=sc.next();
            //2.判断字符串是否符合条件,全为数字,数据有误就重新输入
            boolean flag=checkNum(str);
            if(flag){
            //3.将数字变成罗马数字,并拼接
                String result=changeLuoMa(str);
                System.out.println(result);
                break;
            }
        }

    }
    //这里还可以使用switch case实现。case'1'->str="I";
    public static String changeLuoMa(String str){
        String result="";
        String[]arr={" ","I","II","III","IV","V","VI","VII","VIII","IX"};
        for (int i = 0; i < str.length(); i++) {
            //str.charAt(i)-48是将字符转换成数字。比如9的ascii码是57,57-48=9。
            int strSingleNum=str.charAt(i)-48;
            String strSingle=arr[strSingleNum];
            result=result+strSingle+" ";
        }
        return result;
    }
    public static boolean checkNum(String str){
        if(str.length()>9){
            System.out.println("数据范围有误,请重新输入");
            return false;
        }
        for (int i = 0; i < str.length(); i++) {
            char strSingle=str.charAt(i);
            if(strSingle<=48||strSingle>=57){
                System.out.println("数据有误,请重新输入");
                return false;
            }
        }
        return true;
    }
}

(2)调整字符串内容并比较

  • 给定两个字符串,A和B。A的旋转操作就是将A最左边的字符移动到最右边。
  • 例如:若A=‘abcde’,在移动一次之后结果就是‘bcdea’。
  • 如果在若干次调整操作之后,A能变成B,那么返回True。
  • 如果不能匹配成功,则返回false

//方法一
public class StringTest {
    public static void main(String[] args) {
        //1.定义字符串
        String strA="abcde";
        String strB="cdeab";
        //2.旋转字符串A,方法:rotate
        //3.循环判断A,B字符串是否相同,调用check方法
        boolean flag=check(strA,strB);
        System.out.println(flag);
    }
    public static boolean check(String strA,String strB) {
        for (int i = 0; i < strA.length(); i++) {
            strA=rotate(strA);
            if(strA.equals(strB)){
                return true;
            }
        }
        return false;
    }
    public static String rotate(String str) {
        String first=str.substring(0,1);
        String end=str.substring(1, str.length());
        String result=end+first;
        return result;
    }
}
//方法二
public class StringTest {
    public static void main(String[] args) {
        //1.定义字符串
        String strA="abcde";
        String strB="cdeab";
        //2.旋转字符串A,方法:rotate
        //3.循环判断A,B字符串是否相同,调用check方法
        boolean flag=check(strA,strB);
        System.out.println(flag);
    }
    public static boolean check(String strA,String strB) {
        //字符转字符数组toCharArray(),然后再将字符数组变成字符串
        char[]arr=strA.toCharArray();
        for (int j = 0; j < strA.length(); j++) {
            char temp=arr[0];
            for (int i = 0; i < strA.length()-1; i++) {
                arr[i]=arr[i+1];
            }
            arr[strA.length()-1]=temp;
            //字符数组变成字符串
            String result=new String(arr);
            if (result.equals(strB)){
                System.out.println(result);
                return true;
            }
        }
        return false;
    }
}

9.后续练习思路分析

  • 键盘输入任意字符串,打乱里面的内容
import java.util.Random;
import java.util.Scanner;

public class StringTest {
    public static void main(String[] args) {
        //1.输入任意字符串
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入一个字符串:");
        String str=sc.next();
        //2.字符串转字符数组
        char[]arr=str.toCharArray();
        //3.生成随机数
        Random r=new Random();
        //4.随机交换
        for (int i = 0; i < arr.length; i++) {
            int random=r.nextInt(arr.length);
            char temp=arr[i];
            arr[i]=arr[random];
            arr[random]=temp;
        }
        String result=new String(arr);
        System.out.println(result);
    }
}
  • 生成验证码
  • 内容:可以是小写字母,也可以是大写字母,还可以是数字
  • 规则:
  • 长度为5
  • 内容中是四位字母,1位数字。
  • 其中数字只有1位,但是可以出现在任意的位置。
import java.util.Random;

public class StringTest {
    public static void main(String[] args) {
        //1.定义两个数组分别存放A-Z、a-z和0-9
        char[]arr={
                'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
                'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'
        };
        char[]arrNum={'0','1','2','3','4','5','6','7','8','9',};
        //2.生成随机数,获取4个字母,1个数字
        String resultEnd=getWordsNum(arr,arrNum);
        //3.将4字母+1数字的结果打乱
        exchange(resultEnd);
    }

    public static String getWordsNum(char[]arr,char[]arrNum) {
        Random r=new Random();
        String result="";
        for (int i = 0; i < 4; i++) {
            int randomIndex=r.nextInt(arr.length);
            result=result+arr[randomIndex];
        }
        int randomIndexNum=r.nextInt(arrNum.length);
        char resultNum=arrNum[randomIndexNum];
        String resultEnd=result+resultNum;
        return resultEnd;
    }
    public static void exchange(String resultEnd) {
        Random r=new Random();
        char []arrNew=resultEnd.toCharArray();
        int index=r.nextInt(arrNew.length);
        for (int i = 0; i < arrNew.length; i++) {
            char temp=arrNew[i];
            arrNew[i]=arrNew[index];
            arrNew[index]=temp;
        }
        String result=new String(arrNew);
        System.out.println(result);
    }
}
  • 给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。
public class StringTest {
    public static void main(String[] args) {
        //1.定义字符串
        String num1="123456";
        String num2="123";
        //2.将字符串换成数字进行拼接
        int number1=strToNum(num1);
        int number2=strToNum(num2);
        //查看转换结果是否正确
//        System.out.println(number1);
//        System.out.println(number2);
        //3.计算乘积
        int result=number1*number2;
        System.out.println(result);

    }
    public static int strToNum (String num) {
        char[]arr1=num.toCharArray();
        int result1=0;
        for (int i = 0; i < arr1.length; i++) {
            result1=result1*10+(arr1[i]-48);
        }
        return result1;
    }
}
  • 给你一个字符串s,由若干单词组成,单词前后有一些空格字符隔开。返回最后一个单词的长度。单词是指仅由字母组成,不包含任何空格字符的最大子字符串。
  • 例如:输入s="Hello World"   输出:5
public class StringTest {
    public static void main(String[] args) {
        //1.给定字符串s
        String s="Today is unlucky day";
        //2.反向遍历,遇到空格就结束
        char[]arr=s.toCharArray();
        int count=0;
        for (int i = arr.length-1; i >=0 ; i--) {
            if (arr[i]==' '){
                break;
            }
            else {
                count++;
            }
        }
        System.out.println(count);
    }
}

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

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

相关文章

苹果手机发热发烫怎么办?常见原因及解决办法

很多小伙伴都喜欢使用苹果手机&#xff0c;有时候正在玩着苹果手机的时候&#xff0c;发现自己的苹果手机温度很高&#xff0c;很烫手&#xff0c;这是怎么一回事呢&#xff1f;苹果手机发热发烫怎么办&#xff1f;别担心&#xff0c;下面跟着小编一起来看看苹果手机发热发烫常…

Java之集合概述、ArrayList的使用、常见API和集合案例

目录集合概述总结ArrayList集合快速入门总结ArrayList对于泛型的支持总结ArrayList常用API、遍历集合案例遍历并删除元素值总结存储自定义类型的对象元素搜索集合概述 总结 1、数组和集合的元素存储的个数问题? 数组定义后类型确定&#xff0c;长度固定集合类型可以不固定&a…

MyBatis 动态SQL使用

动态 sql 是Mybatis的强⼤特性之⼀&#xff0c;能够完成不同条件下不同的 sql 拼接。 1.<if>标签 运行结果&#xff1a; 2.<trim>标签 之前的插⼊⽤户功能&#xff0c;只是有⼀个 photo 字段可能是选填项&#xff0c;如果有多个字段&#xff0c;⼀般考虑使⽤&l…

VS Code安装教程

一、下载 1、官网 下载地址 2、下载 根据自己电脑型号下载&#xff0c;此处以Windows为例。 二、安装 1、下载完成后&#xff0c;直接点击安装包安装&#xff0c;即可。 2、开始安装&#xff0c;然后下一步 3、可以在此处自定义地址&#xff0c;然后下一步 4、默认设置&am…

数据结构课程设计

数据结构课程设计 文章目录数据结构课程设计1.1问题描述1.2需求分析1.3概要设计1.4详细设计1.5调试分析1.6测试结果1.7参考文献1.8源码1.1问题描述 编制一个能演示执行集合的交、并和差运算的程序。 要求&#xff1a; 集合元素用小写英文字母&#xff0c;执行各种操作应以对话…

iOS 系统校园无线WIFI认证上网指南

无为WiFi介绍一下IOS手机怎么连接校园网&#xff0c;本介绍为普通途径连接使用校园网&#xff0c;想了解绕过校园网请看其他贴文。1. 打开无线网络&#xff08;WLAN&#xff09;开关2. 连接校园无线WiFi网络进入“设置”->“无线局域网”->在无线WiFi信号列表中选择“SWJ…

【从零开始学习深度学习】40. 算法优化之AdaGrad算法介绍及其Pytorch实现

之前介绍的梯度下降算法中&#xff0c;目标函数自变量的每一个元素在相同时间步都使用同一个学习率来自我迭代。例如&#xff0c;假设目标函数为fff&#xff0c;自变量为一个二维向量[x1,x2]⊤[x_1, x_2]^\top[x1​,x2​]⊤&#xff0c;该向量中每一个元素在迭代时都使用相同的…

线程安全详解

线程安全 线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中&#xff0c;线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行&#xff0c;不会出现数据污染等意外情况。 多个线程访问同一个对象时&#xff0c;如…

【docker11】docker安装常用软件

docker安装常用软件 1.安装软件说明 框架图 总体步骤&#xff1a; 搜索镜像拉去镜像查看镜像启动镜像 - 服务端口映射停止容器移除容器 1.安装tomcat docker hub上查找tomcat镜像 从docker hub上拉取tomcat镜像到本地 docker images查看是否有拉取到的tomcat 使用to…

Spring Security 导致 Spring Boot 跨域失效问题

1、CORS 是什么首先我们要明确&#xff0c;CORS 是什么&#xff0c;以及规范是如何要求的。这里只是梳理一下流程。CORS 全称是 Cross-Origin Resource Sharing&#xff0c;直译过来就是跨域资源共享。要理解这个概念就需要知道域、资源和同源策略这三个概念。域&#xff0c;指…

sahrding-jdbc的雪花算法取模为0或1的问题

工作时无意间发现sahrding-jdbc使用雪花算法生成的id 在某一业务分库分表 永远在那两个库表里面,排查后这里做下分享 环境、配置、问题介绍 16库16表使用的是org.apache.shardingsphere.core.strategy.keygen下面generateKey生成id分库表算法是对16取模生成数据永远在0库0表 0…

如何有效的防护暴力破解和撞库攻击

在网络威胁领域&#xff0c;暴力破解攻击仍然是网络犯罪分子非常喜爱且有利可图的攻击方法。&#xff0c;黑客通过收集互联网已泄露的用户和密码信息&#xff0c;生成对应的字典表&#xff0c;由于许多用户重复使用相同的用户名和密码&#xff0c;攻击者可以使用撞库攻击获得对…

前缀和算法

目录1.概述2.代码实现2.1.一维前缀和2.2.二维前缀和3.应用本文参考&#xff1a; LABULADONG 的算法网站 1.概述 前缀和算法分为一维和二维&#xff0c;一维前缀和可以快速求序列中某一段的和&#xff0c;而二维前缀和可以快速求一个矩阵中某个子矩阵的和。 2.代码实现 2.1.一…

约拍小程序开发,优化约拍产业路径

随着网红、直播经济的发展&#xff0c;年轻群体对于拍摄服务的需求正在急速增长&#xff0c;与此同时该群体用户又极具个性&#xff0c;很多传统影楼拍摄价格高、拍摄风格固定化、等待时间久&#xff0c;个人摄影师宣传推广难度又大&#xff0c;导致拍摄需求被抑制&#xff0c;…

_Linux多线程-基础篇

文章目录1. 什么是线程Linux中的线程叫做轻量级进程&#xff08;LWP&#xff09;2. 线程的优点3. 线程的缺点4. 线程异常5. 线程用途6. Linux进程VS线程单进程7. 总结线程在进程内部执行是OS调度的基本单位。不同视角看待进程轻量级进程1. 什么是线程 在一个程序里的一个执行路…

【Cfeng Work】 Open API的intro和 梳理

OpenAPI 开放平台 内容管理Open API intro腾讯云OpenAPIOpenAPI请求API密钥管理云API签名过程拼接规范请求串 CanonicalRequest拼接待签名字符串计算签名拼接到Authorization中云API签名失败规范Token 和 长期密钥公共参数OpenApi设计AppId、AppSecretsign签名timestamp 时间戳…

制造服务行业需要项目管理软件吗?

伴随着时代的快速发展&#xff0c;电子制造服务行业也正在飞速发展&#xff0c;在日新月异得时代步伐下&#xff0c;科学得管理方法和现代化得管理工具相结合&#xff0c;保证企业得进步与发展。项目管理工具通过构造高效统一的项目管理平台&#xff0c;优化企业管理中存在的问…

win10 conda安装labme安装和使用

1、安装conda 在WIN10中配置conda 1.1miniconda下载 https://docs.conda.io/en/latest/miniconda.html 可以任意选择对应的版本&#xff0c;安装时选择配置路径&#xff0c;以免后期重复配置环境。 1.2.2 在环境变量中添加路径 Win R&#xff0c;打开运行&#xff0c;输入…

在ubuntu系统上用pyinstaller加密打包yolov5项目代码的详细步骤

目录0. 背景1. 创建虚拟环境2. pyinstaller打包2.1. 生成并修改spec文件2.2. 重新生成二进制文件3. 测试4. 加密打包4.1. 创建入口函数main.py4.2. 修改detect.py4.3. 加密生成main.spec文件4.4. 修改main.spec文件4.5. 生成二进制文件4.6. 测试0. 背景 最近需要在ubuntu 18.0…

Payso×OceanBase:云上拓新,开启云数据库的智能托管

日前&#xff0c;聚合支付厂商 Payso&#xff08; 独角鲨北京科技有限公司&#xff09;的平台、交易系统引入 OceanBase 原生分布式数据库&#xff0c;实现显著降本增效—— 硬件成本降低 20&#xff5e;30%&#xff0c;查询效率提升 80%&#xff0c;执行效率提升了 30%&#x…