Java基础 - 7 - 常用API(二)

API(全称 Application Programming Interface:应用程序编程接口)

API就是Java帮我们已经写好的一些程序,如类、方法等,可以直接拿过来用

JDK8 API文档:Java Platform SE 8


一. Object

Object类的作用

        Object类是Java中所有类的祖宗类,因此,Java中所有类的对象都可以直接使用Object类中提供的一些方法

Object类的常见方法

方法名说明
public String toString()返回对象的字符串表示形式
public boolean equals(Object o)判断两个对象是否相等
protected Object clone()对象克隆

toString存在的意义:toString()方法存在的意义就是为了被子类重写,以便返回对象具体的内容

equals存在的意义:直接比较两个对象的地址是否相同完全可以用==代替equals,equals存在的意义就是为了被子类重写,以便子类自己来定制比较规则(比如比较对象内容)

clone()方法

        当某个对象调用这个方法时,这个方法会复制一个一模一样的新对象返回

clone()方法分为浅克隆和深克隆

        浅克隆:拷贝出的新对象,与原对象中的数据一模一样(引用类型拷贝的只是地址)

        深克隆:对象中基本类型的数据直接拷贝,字符串数据拷贝的还是地址,对象中还包含的其他对象,不会拷贝地址,会创建新对象 

//demo
public class demo {public static void main(String[] args) throws CloneNotSupportedException {Student s1 = new Student("小美",20,new double[]{99,100,90});System.out.println(s1);  //默认输出s1就是输出s1.toString()System.out.println(s1.toString());  //不重写toString方法的话返回的是s的地址Student s2 = new Student("小美",20,new double[]{99,100,90});
//        //不重写equals方法
//        System.out.println(s2.equals(s1));  // false  equals方法判断两个对象的地址是否相等
//        System.out.println(s2 == s1);  // false 比较两个对象地址是否一样,可以直接用==
//        Student s3 = s1;
//        System.out.println(s3.equals(s1));  // true   equals方法判断两个对象的地址是否相等System.out.println(s2.equals(s1));  //true 重写了equals方法//s1.clone(); //因为clone()方法是protected的,因此不能直接使用,需要重写clone()方法Student s4 = (Student) s1.clone(); //重写后System.out.println(s4.getName());  //小美System.out.println(s4.getAge());  //20System.out.println(s4.getScore());System.out.println(s4 == s1);  //false,克隆后s4和s1的地址不一样(克隆只是复制内容)System.out.println(s4.equals(s1));  //true(重写后的equals方法比较内容是否相同)}
}//Student
//Cloneable是一个标记接口(实现Cloneable接口,才能使用clone()方法)
public class Student implements Cloneable {  //extends Objectprivate String name;private int age;private double[] score;  //学生成绩数组(如语数英三门成绩)public Student() {}public Student(String name, int age, double[] score) {this.name = name;this.age = age;this.score = score;}@Overrideprotected Object clone() throws CloneNotSupportedException {//通过super调用父类Object中的clone方法//浅克隆//return super.clone();  //等同于 Student s = (Student) super.clone(); return s;//深克隆Student s = (Student) super.clone();s.score = s.score.clone(); //对象中基本类型的数据直接拷贝,字符串数据拷贝的还是地址,对象中还包含的其他对象,不会拷贝地址,会创建新对象 return s;}//重写toString方法,得到对象内容(自动生成)@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", score=" + Arrays.toString(score) +'}';}//重写equals方法,比较两个对象的内容是否一致(自动生成)//比较者:s2 == this//被比较者;s1 == o@Overridepublic boolean equals(Object o) {//判断两个对象地址是否一致,一致直接返回trueif (this == o) return true;//判断o是否是null,o是null直接返回false//判断比较者和被比较者的类型是否一致,不一致直接返回false//这里的getClass()相当于this.getClass()if (o == null || getClass() != o.getClass()) return false;//因为接收的时候是Object类型,这里需要进行强转为StudentStudent student = (Student) o;return age == student.age &&Objects.equals(name, student.name) &&Arrays.equals(score, student.score);}@Overridepublic int hashCode() {return Objects.hash(name, age);}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double[] getScore() {return score;}public void setScore(double[] score) {this.score = score;}
}

二. Objects 

Objects

        Objects是一个工具类,提供了很多操作对象的静态方法给我们使用

        (静态方法可以直接用类名.静态方法)

Objects类的常见方法

方法名说明
public static boolean equals(Object a,Object b)先做非空判断,再比较两个对象
public static boolean isNull(Object obj)判断对象是否为null,为null返回true,反之返回false
public static boolean nonNull(Object obj)判断对象是否不为null,不为null返回true,反之返回false
//demo
public class demo {public static void main(String[] args) {String s1 = null;String s2 = "zhang";//System.out.println(s1.equals(s2)); //如果s1是null,这种比较方法会报错(空指针异常 NullPointerException)System.out.println(Objects.equals(s1, s2)); //更安全System.out.println(Objects.isNull(s1));  //trueSystem.out.println(s1 == null);  //trueSystem.out.println(Objects.isNull(s2));  //falseSystem.out.println(s2 == null);  //falseSystem.out.println(Objects.nonNull(s1));  //falseSystem.out.println(Objects.nonNull(s2));  //true}
}

三. 包装类

        Java的思想是万物皆对象,但是Java基本类型的数据(byte  short  int  long  char  float  double  boolean)不是对象,因此引入了包装类

包装类

        包装类就是把基本类型的数据包装成对象

基本数据类型对应的包装类(引用数据类型)
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble
booleanBoolean

包装类的其他常见操作

        · 可以把基本类型的数据转换成字符串类型(toString())

        · 可以把字符串类型的数值转换成数值本身对应的数据类型(valueOf()更推荐)

//demo
public class demo {public static void main(String[] args) {//Integer a = new Integer(12);  //过时方案Integer a = Integer.valueOf(12);System.out.println(a);//自动装箱机制:可以自动把基本类型的数据转换成对象Integer b = 12;//自动拆箱机制:可以自动把包装类型的对象转换成对应的基本数据类型int c = b;//泛型和集合不支持基本数据类型,只能支持引用数据类型//ArrayList<int> list = new ArrayList<>();  //报错ArrayList<Integer> list = new ArrayList<>();list.add(12);  //自动装箱int r = list.get(0); //自动拆箱System.out.println("=======================");//1.把基本类型的数据转换成字符串Integer x = 23;  //自动装箱String s1 = Integer.toString(x);  //自动拆箱  Integer.toString(x)把x转换成字符串类型System.out.println(s1 + 1);  //231String s2 = x.toString();  //继承Object类,toString()也是转换成字符串System.out.println(s2 + 1);  //231String s3 = x + "";  //这样也可以转换成字符串System.out.println(s3 + 1);  //231//2.把字符串类型的数值转换成对应的基本类型//字符串类型的数值!!!不是数值没法转换//不是对应的数据类型也没办法转换,字符串中的数值是浮点型,不能用IntegerString m1 = "29";//int z1 = Integer.parseInt(m1);  //字符串转换成对应的基本类型 parseInt()不推荐使用int z1 = Integer.valueOf(m1);System.out.println(z1 + 1);  //30String m2 = "99.5";//double z2 = Double.parseDouble(m2);  //字符串转换成对应的基本类型 parseDouble()不推荐使用double z2 = Double.valueOf(m2);System.out.println(z2 + 1);  //100.5}
}

 四. StringBuilder

        StringBuilder代表可变字符串对象,相当于一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的

        好处:StringBuilder比String更适合做字符串的修改操作,效率会更高,代码也会更简洁

构造器说明
public StringBuilder()创建一个空白的可变的字符串对象,不包含任何内容
public StringBuilder(String str)创建一个指定字符串内容的可变字符串对象
方法名称说明
public StringBuilder append(任意类型)添加数据并返回StringBuilder对象本身
public StringBuilder reverse()将对象的内容反转
public int length()返回对象内容长度
public String toString()通过toString()就可以实现把StringBuilder转换为String
//demo
public class demo {public static void main(String[] args) {//StringBuilder sb = new StringBuilder();  //sb ""StringBuilder sb = new StringBuilder("wosun");//1.拼接内容sb.append(12);  //拼接intsb.append(true);  //拼接booleansb.append(13.14);  //拼接double/floatsb.append("你好");  //拼接String//支持链式编程sb.append(1).append('a').append(5.20).append(false);System.out.println(sb);//2.内容反转sb.reverse();  //内容反转System.out.println(sb);//3.返回字符串长度System.out.println(sb.length());//4.把StringBuilder对象又转换成String类型String s = sb.toString();System.out.println(s);System.out.println("======================");//需求:拼接100万次abc//String   很很恨很慢
//        String rs = "";
//        for (int i = 0; i < 1000000; i++) {
//            rs += "abc";
//        }
//        System.out.println(rs);//StringBuilder 非常快StringBuilder rs = new StringBuilder();for (int i = 0; i < 1000000; i++) {rs.append("abc");}System.out.println(rs);}
}

注意:如果操作字符串较少,或者不需要操作,以及定义字符串变量,还是建议使用String;如果需要频繁的拼接、修改等,建议使用StringBuilder

案例:返回任意整型数组的内容

//demo
public class demo {public static void main(String[] args) {int[] arr1 = new int[]{1,2,3,4,5};System.out.println(method(arr1));int[] arr2 = new int[5];System.out.println(method(arr2));int[] arr3 = null;System.out.println(method(arr3));}//一般来说返回值是String,不会是StringBuilderpublic static String method(int[] arr){//!!!要先进行非空校验,判断arr是否为nullif(arr == null){return null;  //数组对象不存在}//数组对象存在StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {
//            if(i==0){
//                sb.append("[");
//            }sb.append(arr[i]);if(i!=arr.length-1){sb.append(",");}else{sb.append("]");}}return sb.toString();}
}

五. StringBuffer

        StringBuffer的用法和StringBuilder是一模一样的,但StringBuilder是线程不安全的,StringBuffer是线程安全的

六. StringJoiner

        StringJoiner是JDK8开始才有的,跟StringBuilder一样,也是用来操作字符串的,也可以看成是一个容器,创建之后里面的内容是可变的

        好处:不仅能提高字符串的操作效率,并且在有些场景下使用它操作字符串,代码会更简洁

构造器说明
public StringJoiner(间隔符号)创建一个StringJoiner对象,指定拼接时的间隔符号
public StringJoiner(间隔符号,开始符号,结束符号)创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号
方法名称说明
public StringJoiner add(添加de)添加数据,并返回对象本身
public int length()返回长度(字符出现的个数)
public String toString()返回一个字符串(该字符串就是拼接后的结果)
//demo
public class demo {public static void main(String[] args) {//StringJoiner s = new StringJoiner(",");  //间隔符StringJoiner s = new StringJoiner(",","[","]");  //间隔符 开始符 结束符s.add("java1");s.add("java2");s.add("java3");System.out.println(s);  //java1,java2,java3int[] arr = new int[]{1,2,3,4,5};System.out.println(method(arr));}public static String method(int[] arr){if(arr == null){return null;}StringJoiner sj = new StringJoiner(",","[","]");for (int i = 0; i < arr.length; i++) {String s = arr[i] + "";  //把数组里的整型数值 转换成 字符串sj.add(s);}return sj.toString();}
}

 七. Math

        代表数学,是一个工具类,里面提供的都是对数据进行操作的一些静态方法

Math类提供的常见方法

方法名说明
public static int abs(int a)获取参数绝对值
public static double ceil(double a)向上取整
public static double floor(double a)向下取整
public static long round(float a)四舍五入
public static int max(int a,int b)获取两个int值中的较大值
public static double pow(double a,double b)返回a的b次幂的值
public static double random()返回值为double的随机值,范围[0.0 , 1.0]
//demo
public class demo {public static void main(String[] args) {
// 获取参数绝对值 public static int abs(int a)	获取参数绝对值
// 获取参数绝对值 public static double abs(double a)System.out.println(Math.abs(-12));  //12System.out.println(Math.abs(123));  //123System.out.println(Math.abs(0));  //0System.out.println(Math.abs(-13.14));  //13.14// 向上取整 public static double ceil(double a)System.out.println(Math.ceil(4.3));  //5.0System.out.println(Math.ceil(3));  //3.0// 向下取整 public static double floor(double a)System.out.println(Math.floor(4.99));  //4.0System.out.println(Math.floor(3));  //3.0// 四舍五入 public static long round(float a)System.out.println(Math.round(4.49));  //4System.out.println(Math.round(4.51));  //5// 获取两个int值中的较大值 public static int max(int a,int b) (还可以是浮点型或long型)
// 获取两个int值中的较小值 public static int min(int a,int b)System.out.println(Math.max(10,20));  //20System.out.println(Math.min(10,20));  //10System.out.println(Math.min(10.07,10.09));  //10.07// 返回a的b次幂的值 public static double pow(double a,double b)System.out.println(Math.pow(2, 3));  //8.0
// 返回值为double的随机值,范围[0.0 , 1.0] public static double random()System.out.println(Math.random());  //随机数 如0.5848377958673234}
}

八. System

        System代表程序所在的系统,也是一个工具类

System类提供的常见方法

方法名说明
public static void exit(int status)终止当前运行的Java虚拟机
public static long currentTimeMillis()返回当前系统的时间毫秒值形式

时间毫秒值:指的是从1970年1月1日00:00:00走到此刻的总的毫秒值(ms)  1s=1000ms

//demo
public class demo {public static void main(String[] args) {
//        public static void exit(int status)//终止当前运行的Java虚拟机//该参数用作状态代码,按照惯例,非零状态代码表示异常终止//System.exit(0); //人为终止虚拟机(不要使用)System.out.println("===============");//        public static long currentTimeMillis()//返回当前系统的时间毫秒值形式Long l1 = System.currentTimeMillis();System.out.println(l1);for (int i = 0; i < 10000; i++) {System.out.println(i);}Long l2 = System.currentTimeMillis();System.out.println((l2-l1)/1000.0 +"s");  //l2-l1是毫秒值//时间差即两次时间中间程序的运行时间,可以做程序的性能分析}
}

九. Runtime

        Runtime代表程序所在的运行环境

        Runtime是一个单例类

Runtime类提供的常见方法

方法名说明
public static Runtime getRuntime()返回与当前Java应用程序关联的运行时对象
public void exit(int status)终止当前运行的虚拟机
public int availableProcessors()返回Java虚拟机可用的处理器数
public long totalMemory()返回Java虚拟机中的内存总量
public long freeMemory()返回Java虚拟机中的可用内存
public Process exec(String command)启动某个程序,并返回代表该程序的对象
//demo
public class demo {public static void main(String[] args) throws IOException, InterruptedException {//public static Runtime getRuntime() 返回与当前Java应用程序关联的运行时对象Runtime r = Runtime.getRuntime();//public void exit(int status) 终止当前运行的虚拟机,该参数用作状态代码;按照惯例,非零状态代码表示异常终止//r.exit(0);  //不要使用//public int availableProcessors() 返回Java虚拟机可用的处理器数System.out.println(r.availableProcessors());//public long totalMemory() 返回Java虚拟机中的内存总量//1024 = 1Kb  1024 * 1024 = 1MbSystem.out.println(r.totalMemory());  //返回的是字节System.out.println(r.totalMemory() / 1024.0 +"Kb");System.out.println(r.totalMemory() / 1024.0 /1024.0 +"Mb");//public long freeMemory() 返回Java虚拟机中的可用内存System.out.println(r.freeMemory() );System.out.println(r.freeMemory() / 1024.0 /1024.0 +"MB");//public Process exec(String command) 启动某个程序,并返回代表该程序的对象Process p = r.exec("");  //电脑中QQ程序的地址//r.exec("QQ");  //想要这样直接启动QQ,需要把QQ配置到环境变量Thread.sleep(5000);  //让程序在这里暂停5s再往下走p.destroy();  //销毁(即关闭程序)}
}

十. BigDecimal

        用来解决浮点型运算时,出现结果失真的问题

BigDecimal的常见构造器、常用方法

构造器说明
public BigDecimal(double val)  注意:不推荐用这个将double转换为BIgDecimal
public BigDecimal(String val)将String转换为BIgDecimal
方法名说明
public static BigDecimal valueOf(double val)转换一个double成BIgDecimal
public BigDecimal add(BigDecimal b)加法
public BigDecimal subtract(BigDecimal b)减法
public BigDecimal multiply(BigDecimal b)乘法
public BigDecimal divide(BigDecimal b)除法

public BigDecimal divide(另一个BigDecimal对象,精确几位,舍入模式)

public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)

除法,可以控制精确到小数几位
public double doubleValue()将BigDecimal转换为double
//demo
public class demo {public static void main(String[] args) throws IOException, InterruptedException {System.out.println(0.1+0.2);  //0.30000000000000004  失真System.out.println("=====================");//把他们变成字符串封装成BigDecimal对象来运算double a = 0.1;double b = 0.2;
//public BigDecimal(String val)	将String转换为BIgDecimal//BigDecimal a1 = new BigDecimal(Double.toString(a));//BigDecimal b1 = new BigDecimal(Double.toString(b));//推荐用以下方式:把小数转换成字符串再得到BigDecimal对象来使用(更简洁)BigDecimal a1 = BigDecimal.valueOf(a);BigDecimal b1 = BigDecimal.valueOf(b);BigDecimal c1 = a1.add(b1);BigDecimal c2 = a1.subtract(b1);BigDecimal c3 = a1.multiply(b1);BigDecimal c4 = a1.divide(b1);System.out.println(c1);System.out.println(c2);System.out.println(c3);System.out.println(c4);//除法中如果除不尽,不给精确位数,会报错BigDecimal x = BigDecimal.valueOf(0.1);BigDecimal y = BigDecimal.valueOf(0.3);//System.out.println(x.divide(y)); //报错 没有精确值System.out.println(x.divide(y,2, RoundingMode.HALF_UP));  //0.4//不会写代码的时候用ctrl+alt+空格//public double doubleValue() 将BigDecimal转换为doubledouble m = x.doubleValue();System.out.println(m);}
}

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

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

相关文章

『Linux从入门到精通』第 ㉓ 期 - 管道

文章目录 &#x1f490;专栏导读&#x1f490;文章导读&#x1f427;进程间通信的目的&#x1f427;如何进行进程间通信&#x1f427;进程间通信的分类&#x1f427;管道&#x1f426;什么是管道&#x1f426;管道原理 &#x1f427;实例代码&#x1f427;管道的特点&#x1f4…

Window系统部署Splunk Enterprise并结合内网穿透实现远程访问本地服务

文章目录 前言1. 搭建Splunk Enterprise2. windows 安装 cpolar3. 创建Splunk Enterprise公网访问地址4. 远程访问Splunk Enterprise服务5. 固定远程地址 前言 本文主要介绍如何简单几步&#xff0c;结合cpolar内网穿透工具实现随时随地在任意浏览器&#xff0c;远程访问在本地…

【24最新版PythonPycharm安装教程】小白保姆级别安装教程

今天&#xff0c;我就来教大家一下&#xff0c;如何去安装Python&#xff01; 需要博主打包好的一键激活版Pycharm&&Python也可扫下方直接获取 ​ 1 了解Python Python是一种面向对象的解释型计算机程序设计语言&#xff0c;由荷兰人Guido van Rossum于1989年发明&…

[C++]使用纯opencv去部署yolov9的onnx模型

【介绍】 部署 YOLOv9 ONNX 模型在 OpenCV 的 C 环境中涉及一系列步骤。以下是一个简化的部署方案概述&#xff0c;以及相关的文案。 部署方案概述&#xff1a; 模型准备&#xff1a;首先&#xff0c;你需要确保你有 YOLOv9 的 ONNX 模型文件。这个文件包含了模型的结构和权…

Flutter Gradle下载失败的解决方案

Flutter Gradle可能会由于网络原因下载失败,这个时候我们可以首先下载Gradle&#xff0c;然后再进行配置。具体步骤如下&#xff1a; 第一步&#xff1a;下载对应版本的gradle 可以通过下面地址下载&#xff0c;也可以百度里面搜对应的版本 【极速下载】gradle各版本快速下载地…

【HTML】HTML基础2(一些常用标签)

目录 例子 首先是网页图标 然后是一些常用标签 插入图片 例子 <!DOCTYPE html> <html><head><link rel"icon" href"img/银河护卫队-星爵.png" type"image/x-icon"><meta charset"utf-8"><title>…

如何限制一个账号只在一处登陆

大家好&#xff0c;我是广漂程序员DevinRock&#xff01; 1. 需求分析 前阵子&#xff0c;和问答群里一个前端朋友&#xff0c;随便唠了唠。期间他问了我一个问题&#xff0c;让我印象深刻。 他问的是&#xff0c;限制同一账号只能在一处设备上登录&#xff0c;是如何实现的…

【大厂AI课学习笔记NO.56】(9)模型评测

作者简介&#xff1a;giszz&#xff0c;腾讯云人工智能从业者TCA认证&#xff0c;信息系统项目管理师。 博客地址&#xff1a;https://giszz.blog.csdn.net 声明&#xff1a;本学习笔记来自腾讯云人工智能课程&#xff0c;叠加作者查阅的背景资料、延伸阅读信息&#xff0c;及学…

Python采集学习笔记-request的get请求和post请求

使用http://httpbin.org测试,一个简单的 HTTP 请求和响应服务。(需联网)1.导入requests包 import requests 2.测试get请求 url http://httpbin.org/get par {key1: value1, key2: value2} # 不带参数请求 r1 requests.get(url) # 带参数请求 r2 requests.get(url, paramspa…

甘特图资源视图和任务视图的区别

甘特图(Gantt chart)是一种常用的项目管理工具,用于直观地展示项目的进度和各项任务的时间安排。甘特图包含资源视图和任务视图两种视角。 一个项目的甘特图demo &#xff1a; https://zz-plan.com/share/87f1340286f1343ba5 资源视图主要显示项目中不同资源的分配和利用情况…

植物神经功能紊乱患者,家属应该怎么照顾!

植物神经功能紊乱181-01-317-367&#xff0c;通常被称为植物人状态&#xff0c;是指由严重脑部受损引起的意识丧失、无法自主呼吸、难以醒来或维持清醒状态的一种严重健康状况。植物神经功能紊乱患者通常面临长期卧床、意识不清、无法言语交流等严重问题&#xff0c;需要家属的…

【内推】金山办公 2024届 春季校园招聘

有需要内推的小伙伴吗&#xff1f; 金山办公 各岗位均有 面向应届生春招 QQ群&#xff1a;723529936 内推码&#xff1a;NTASYQI

海外代购系统独立站,商品采集API接口系列

海外代购系统独立站是一个完整的电商平台&#xff0c;专为代购业务设计。这样的系统通常具备商品采集、库存管理、订单处理、支付集成、物流追踪等功能。其中&#xff0c;商品采集是整个系统的基础&#xff0c;而API接口是实现商品采集的关键。 请求示例&#xff0c;API接口接…

使用OpenTelemetry进行监控

工具介绍 注意&#xff1a;该部分介绍摘抄自&#xff1a;搭建高级的性能监控系统(PrometheusGrafanaNode ExporterAlertmanager) - 爱云 Prometheus、Grafana、Node Exporter 和Alertmanager是一组用于监控和可视化系统性能的开源工具。它们通常一起使用&#xff0c;形成一个强…

大地测量学课堂笔记:1、绪论

慕课网址&#xff1a;https://www.icourse163.org/course/WHU-1464124180?fromsearchPage&outVendorzw_mooc_pcssjg_https://www.icourse163.org/course/WHU-1464124180?fromsearchPage&outVendorzw_mooc_pcssjg_ 1. 大地测量学的定义 大地测量学是专门研究精确测量…

【C++精简版回顾】18.文件操作

1.文件操作头文件 2.操作文件所用到的函数 1.文件io 1.头文件 #include<fstream> 2.打开文件 &#xff08;1&#xff09;函数名 文件对象.open &#xff08;2&#xff09;函数参数 /* ios::out 可读 ios::in 可…

使用华为云云函数functiongraph

之前使用腾讯云serverless&#xff0c;但是突然开始收费了。所以改用functiongraph 首先登陆华为云。 目录 1.登录华为云 2.在控制台找到functiongraph并开通 3.添加依赖包&#xff1a; 3.1 制作依赖包 3.2引入依赖包 4.发送请求 4.1直接发送 4.1.1uri 4.1.2 请求头…

“找不到msvcr90.dll无法启动软件如何解决

msvcr90.dll 是一个属于 Microsoft Visual C 2008 Redistributable Package 的动态链接库&#xff08;DLL&#xff09;文件。在Windows操作系统中&#xff0c;许多应用程序特别是那些使用Visual Studio 2008编译器开发的程序&#xff0c;在运行时可能需要调用这个库中的函数和资…

lua调用C++函数

第一步搭建lua的环境. win10 lua环境搭建-CSDN博客 我使用的环境是win10vs2015lua54 先来个最简单的lua调用C函数, 无参数无返回值的 第一步:定义C函数. int CTest(lua_State* L) // 返回值是固定的int类型,返回0表示没有返回参数,返回1表示有一个返回参数 {std::cout &l…

K8S高级篇:138页经典实战案例,图文并茂代码齐全,仅限3天分享

相信很多朋友都听过云原生和容器技术&#xff0c;当然也少不了K8S的大名&#xff0c;在“容器技术革命”中&#xff0c;K8S俨然已经成为容器技术的事实标准&#xff0c;各个知名互联网企业前仆后继地拥抱云原生&#xff0c;争先恐后地把容器和K8S作为战略重心之一。 容器技术发…