JVM学习-javap解析Class文件

解析字节码的作用
  • 通过反编译生成字节码文件,可以深入了解Java工作机制,但自己分析类文件结构太麻烦,除了第三方的jclasslib工具外,官方提供了javap
  • javap是jdk自带的反解析工具,它的作用是根据class字节码文件,反解析出当前类对应的code区(字节码指令)、局部变量表、异常表、代码行偏移量映射表、常量池等信息
  • 通过局部变量表,可以查看局部变量的作用域范围、所在槽位等信息,甚至可以看到槽位复用信息
java -g操作
  • 解析字节码文件得到的信息中,有些信息(如局部变量表、指令和代码行偏移量映射表、常量池中方法的参数名称等)需要在使用javac编译成class文件时,指定参数才能输出
  • 直接使用javac xx.java,不会生成对应局部变量表等信息,使用javac -g xx.java可以生成相关信息,如使用eclipse或IDEA,默认情况下,在编译时会帮你生成局部变量表,指令和代码偏移量映射表等信息
javap
  • 格式 javap
  • classes是要反编译的class文件
  • 在命令行直接输入javap或javap -help可以看到javap的options有如下选项
    在这里插入图片描述
C:\Users\Administrator\IdeaProjects\jvm\target\classes\com\chapter09>javap -version JavapTest.class
1.8.0_131
Compiled from "JavapTest.java"
public class com.chapter09.JavapTest {boolean flag;protected char gender;public java.lang.String info;public static final int COUNTS;public com.chapter09.JavapTest();int getNum(int);protected char showGender();public void showInfo();static {};
}// -public 显示公共信息
C:\Users\Administrator\IdeaProjects\jvm\target\classes\com\chapter09>javap -public JavapTest.class
Compiled from "JavapTest.java"
public class com.chapter09.JavapTest {public java.lang.String info;public static final int COUNTS;public com.chapter09.JavapTest();public void showInfo();
}
// -protected 
C:\Users\Administrator\IdeaProjects\jvm\target\classes\com\chapter09>javap -protected JavapTest.class
Compiled from "JavapTest.java"
public class com.chapter09.JavapTest {protected char gender;public java.lang.String info;public static final int COUNTS;public com.chapter09.JavapTest();protected char showGender();public void showInfo();
}
// -private || -p  大于或等于private权限
C:\Users\Administrator\IdeaProjects\jvm\target\classes\com\chapter09>javap -private JavapTest.class
Compiled from "JavapTest.java"
public class com.chapter09.JavapTest {private int num;boolean flag;protected char gender;public java.lang.String info;public static final int COUNTS;public com.chapter09.JavapTest();private com.chapter09.JavapTest(boolean);private void methodPrivate();int getNum(int);protected char showGender();public void showInfo();static {};
}
// -package     显示非私有的信息
C:\Users\Administrator\IdeaProjects\jvm\target\classes\com\chapter09>javap -package JavapTest.class
Compiled from "JavapTest.java"
public class com.chapter09.JavapTest {boolean flag;protected char gender;public java.lang.String info;public static final int COUNTS;public com.chapter09.JavapTest();int getNum(int);protected char showGender();public void showInfo();static {};
}
// -sysinfo
C:\Users\Administrator\IdeaProjects\jvm\target\classes\com\chapter09>javap -sysinfo JavapTest.class
Classfile /C:/Users/Administrator/IdeaProjects/jvm/target/classes/com/chapter09/JavapTest.class     //字节码文件路径Last modified 2024-5-27; size 1348 bytes             //日期MD5 checksum 85dc41e7e2e7128d8899b5d131d7975f       //MD5散列Compiled from "JavapTest.java" 
public class com.chapter09.JavapTest {boolean flag;protected char gender;public java.lang.String info;public static final int COUNTS;public com.chapter09.JavapTest();int getNum(int);protected char showGender();public void showInfo();static {};
}
// -constants
C:\Users\Administrator\IdeaProjects\jvm\target\classes\com\chapter09>javap -constants JavapTest.class
Compiled from "JavapTest.java"
public class com.chapter09.JavapTest {boolean flag;protected char gender;public java.lang.String info;public static final int COUNTS = 1;public com.chapter09.JavapTest();int getNum(int);protected char showGender();public void showInfo();static {};
}
// -s 输出内部类型签名
C:\Users\Administrator\IdeaProjects\jvm\target\classes\com\chapter09>javap -s JavapTest.class
Compiled from "JavapTest.java"
public class com.chapter09.JavapTest {boolean flag;descriptor: Zprotected char gender;descriptor: Cpublic java.lang.String info;descriptor: Ljava/lang/String;public static final int COUNTS;descriptor: Ipublic com.chapter09.JavapTest();descriptor: ()Vint getNum(int);descriptor: (I)Iprotected char showGender();descriptor: ()Cpublic void showInfo();descriptor: ()Vstatic {};descriptor: ()V
}
// -l 输出行号和本地变量表
C:\Users\Administrator\IdeaProjects\jvm\target\classes\com\chapter09>javap -l JavapTest.class
Compiled from "JavapTest.java"
public class com.chapter09.JavapTest {boolean flag;protected char gender;public java.lang.String info;public static final int COUNTS;public com.chapter09.JavapTest();LineNumberTable:line 20: 0line 18: 4line 20: 10LocalVariableTable:Start  Length  Slot  Name   Signature0      11     0  this   Lcom/chapter09/JavapTest;int getNum(int);LineNumberTable:line 26: 0LocalVariableTable:Start  Length  Slot  Name   Signature0       7     0  this   Lcom/chapter09/JavapTest;0       7     1     i   Iprotected char showGender();LineNumberTable:line 29: 0LocalVariableTable:Start  Length  Slot  Name   Signature0       5     0  this   Lcom/chapter09/JavapTest;public void showInfo();LineNumberTable:line 32: 0line 33: 3line 34: 30LocalVariableTable:Start  Length  Slot  Name   Signature0      31     0  this   Lcom/chapter09/JavapTest;3      28     1     i   Istatic {};LineNumberTable:line 15: 0line 16: 3LocalVariableTable:Start  Length  Slot  Name   Signature
}
// -c 对代码进行反编译
C:\Users\Administrator\IdeaProjects\jvm\target\classes\com\chapter09>javap -l JavapTest.class
Compiled from "JavapTest.java"
public class com.chapter09.JavapTest {boolean flag;protected char gender;public java.lang.String info;public static final int COUNTS;public com.chapter09.JavapTest();LineNumberTable:line 20: 0line 18: 4line 20: 10LocalVariableTable:Start  Length  Slot  Name   Signature0      11     0  this   Lcom/chapter09/JavapTest;int getNum(int);LineNumberTable:line 26: 0LocalVariableTable:Start  Length  Slot  Name   Signature0       7     0  this   Lcom/chapter09/JavapTest;0       7     1     i   Iprotected char showGender();LineNumberTable:line 29: 0LocalVariableTable:Start  Length  Slot  Name   Signature0       5     0  this   Lcom/chapter09/JavapTest;public void showInfo();LineNumberTable:line 32: 0line 33: 3line 34: 30LocalVariableTable:Start  Length  Slot  Name   Signature0      31     0  this   Lcom/chapter09/JavapTest;3      28     1     i   Istatic {};LineNumberTable:line 15: 0line 16: 3LocalVariableTable:Start  Length  Slot  Name   Signature
}C:\Users\Administrator\IdeaProjects\jvm\target\classes\com\chapter09>javap -c JavapTest.class
Compiled from "JavapTest.java"
public class com.chapter09.JavapTest {boolean flag;protected char gender;public java.lang.String info;public static final int COUNTS;public com.chapter09.JavapTest();Code:0: aload_01: invokespecial #1                  // Method java/lang/Object."<init>":()V4: aload_05: ldc           #2                  // String java7: putfield      #3                  // Field info:Ljava/lang/String;10: returnint getNum(int);Code:0: aload_01: getfield      #5                  // Field num:I4: iload_15: iadd6: ireturnprotected char showGender();Code:0: aload_01: getfield      #6                  // Field gender:C4: ireturnpublic void showInfo();Code:0: bipush        102: istore_13: getstatic     #7                  // Field java/lang/System.out:Ljava/io/PrintStream;6: new           #8                  // class java/lang/StringBuilder9: dup10: invokespecial #9                  // Method java/lang/StringBuilder."<init>":()V13: aload_014: getfield      #3                  // Field info:Ljava/lang/String;17: invokevirtual #10                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;20: iload_121: invokevirtual #11                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;24: invokevirtual #12                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;27: invokevirtual #13                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V30: returnstatic {};Code:0: ldc           #14                 // String www.lotus.com2: astore_03: return
}
// -v 显示最全的字节码反编译数据
C:\Users\Administrator\IdeaProjects\jvm\target\classes\com\chapter09>javap -v JavapTest.class
Classfile /C:/Users/Administrator/IdeaProjects/jvm/target/classes/com/chapter09/JavapTest.class         //位置Last modified 2024-5-27; size 1348 bytes             //日期,大小MD5 checksum 85dc41e7e2e7128d8899b5d131d7975f        //MD5散列值Compiled from "JavapTest.java"
public class com.chapter09.JavapTestminor version: 0                     //副版本号major version: 52                   //主版本号flags: ACC_PUBLIC, ACC_SUPER           //访问标识
Constant pool:#1 = Methodref          #16.#46        // java/lang/Object."<init>":()V#2 = String             #47            // java#3 = Fieldref           #15.#48        // com/chapter09/JavapTest.info:Ljava/lang/String;#4 = Fieldref           #15.#49        // com/chapter09/JavapTest.flag:Z#5 = Fieldref           #15.#50        // com/chapter09/JavapTest.num:I#6 = Fieldref           #15.#51        // com/chapter09/JavapTest.gender:C#7 = Fieldref           #52.#53        // java/lang/System.out:Ljava/io/PrintStream;#8 = Class              #54            // java/lang/StringBuilder#9 = Methodref          #8.#46         // java/lang/StringBuilder."<init>":()V#10 = Methodref          #8.#55         // java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;#11 = Methodref          #8.#56         // java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;#12 = Methodref          #8.#57         // java/lang/StringBuilder.toString:()Ljava/lang/String;#13 = Methodref          #58.#59        // java/io/PrintStream.println:(Ljava/lang/String;)V#14 = String             #60            // www.lotus.com#15 = Class              #61            // com/chapter09/JavapTest#16 = Class              #62            // java/lang/Object#17 = Utf8               num#18 = Utf8               I#19 = Utf8               flag#20 = Utf8               Z#21 = Utf8               gender#22 = Utf8               C#23 = Utf8               info#24 = Utf8               Ljava/lang/String;#25 = Utf8               COUNTS#26 = Utf8               ConstantValue#27 = Integer            1#28 = Utf8               <init>#29 = Utf8               ()V#30 = Utf8               Code#31 = Utf8               LineNumberTable#32 = Utf8               LocalVariableTable#33 = Utf8               this#34 = Utf8               Lcom/chapter09/JavapTest;#35 = Utf8               (Z)V#36 = Utf8               methodPrivate#37 = Utf8               getNum#38 = Utf8               (I)I#39 = Utf8               i#40 = Utf8               showGender#41 = Utf8               ()C#42 = Utf8               showInfo#43 = Utf8               <clinit>#44 = Utf8               SourceFile#45 = Utf8               JavapTest.java#46 = NameAndType        #28:#29        // "<init>":()V#47 = Utf8               java#48 = NameAndType        #23:#24        // info:Ljava/lang/String;#49 = NameAndType        #19:#20        // flag:Z#50 = NameAndType        #17:#18        // num:I#51 = NameAndType        #21:#22        // gender:C#52 = Class              #63            // java/lang/System#53 = NameAndType        #64:#65        // out:Ljava/io/PrintStream;#54 = Utf8               java/lang/StringBuilder#55 = NameAndType        #66:#67        // append:(Ljava/lang/String;)Ljava/lang/StringBuilder;#56 = NameAndType        #66:#68        // append:(I)Ljava/lang/StringBuilder;#57 = NameAndType        #69:#70        // toString:()Ljava/lang/String;#58 = Class              #71            // java/io/PrintStream#59 = NameAndType        #72:#73        // println:(Ljava/lang/String;)V#60 = Utf8               www.lotus.com#61 = Utf8               com/chapter09/JavapTest#62 = Utf8               java/lang/Object#63 = Utf8               java/lang/System#64 = Utf8               out#65 = Utf8               Ljava/io/PrintStream;#66 = Utf8               append#67 = Utf8               (Ljava/lang/String;)Ljava/lang/StringBuilder;#68 = Utf8               (I)Ljava/lang/StringBuilder;#69 = Utf8               toString#70 = Utf8               ()Ljava/lang/String;#71 = Utf8               java/io/PrintStream#72 = Utf8               println#73 = Utf8               (Ljava/lang/String;)V
{ //-----------------------------------------------方法
//字段表集合信息boolean flag;          //字段名descriptor: Z        //字段描述符(字段类型)flags:               //字段访问标识protected char gender;descriptor: Cflags: ACC_PROTECTEDpublic java.lang.String info;descriptor: Ljava/lang/String;flags: ACC_PUBLICpublic static final int COUNTS;descriptor: Iflags: ACC_PUBLIC, ACC_STATIC, ACC_FINALConstantValue: int 1                             //常量字段的属性:ConstantValue,保存常量的值
//-----------------------------------------------方法public com.chapter09.JavapTest();descriptor: ()Vflags: ACC_PUBLICCode:stack=2, locals=1, args_size=10: aload_01: invokespecial #1                  // Method java/lang/Object."<init>":()V4: aload_05: ldc           #2                  // String java7: putfield      #3                  // Field info:Ljava/lang/String;10: returnLineNumberTable:line 20: 0line 18: 4line 20: 10LocalVariableTable:Start  Length  Slot  Name   Signature0      11     0  this   Lcom/chapter09/JavapTest;int getNum(int);descriptor: (I)Iflags:Code:stack=2, locals=2, args_size=20: aload_01: getfield      #5                  // Field num:I4: iload_15: iadd6: ireturnLineNumberTable:line 26: 0LocalVariableTable:Start  Length  Slot  Name   Signature0       7     0  this   Lcom/chapter09/JavapTest;0       7     1     i   Iprotected char showGender();descriptor: ()Cflags: ACC_PROTECTEDCode:stack=1, locals=1, args_size=10: aload_01: getfield      #6                  // Field gender:C4: ireturnLineNumberTable:line 29: 0LocalVariableTable:Start  Length  Slot  Name   Signature0       5     0  this   Lcom/chapter09/JavapTest;public void showInfo();descriptor: ()V                                   //方法描述符:方法的形参列表、返回值类型flags: ACC_PUBLIC                                 //方法的访问标识Code:                                             //方法Code属性stack=3, locals=2, args_size=1                  //stack:操作数栈的最大深度,locals:局部变量表的长度,args_size:方法接收参数的个数//偏移量  操作码        操作数0: bipush        102: istore_13: getstatic     #7 //#7常量表索引                  // Field java/lang/System.out:Ljava/io/PrintStream;6: new           #8                  // class java/lang/StringBuilder9: dup10: invokespecial #9                  // Method java/lang/StringBuilder."<init>":()V13: aload_014: getfield      #3                  // Field info:Ljava/lang/String;17: invokevirtual #10                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;20: iload_121: invokevirtual #11                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;24: invokevirtual #12                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;27: invokevirtual #13                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V30: returnLineNumberTable:             //行号表,当前字节码指令偏移量与Java源程序中代码的行号一一对应关系line 32: 0line 33: 3line 34: 30LocalVariableTable:          //局部变量表,描述内部局部变量的相关信息Start  Length  Slot  Name   Signature0      31     0  this   Lcom/chapter09/JavapTest;3      28     1     i   Istatic {};descriptor: ()Vflags: ACC_STATICCode:stack=1, locals=1, args_size=00: ldc           #14                 // String www.lotus.com2: astore_03: returnLineNumberTable:line 15: 0line 16: 3LocalVariableTable:Start  Length  Slot  Name   Signature
}
SourceFile: "JavapTest.java"                         //附加属性:当前字节码对应的源文件的文件名

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

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

相关文章

JVM(9):虚拟机性能分析和故障解决工具之jmap工具

1 jmap(Memory Map for Java)作用 一个多功能的命令&#xff0c;它可以生成 java 程序的 dump 文件&#xff0c; 也可以查看堆内对象信息、查看 ClassLoader 的信息以及 finalizer 队列 2 命令格式 jmap [options] 参数解释&#xff1a; 第一个参数&#xff1a;options no…

一个投稿好方法让你的文章早日发表

作为一名单位信息宣传员,我初入此行时,满腔热情,怀揣着传播单位价值、展示团队风采的理想,一头扎进了稿件撰写的海洋。我的目标很简单,就是通过文字的力量,让外界听到我们的声音,感受到我们的活力。然而,理想很丰满,现实却给我上了生动的一课。 起初,我遵循传统路径,选择了一家…

QT安装和配置[安装注意点][QT找不到python27.dll][缩小空间]

安装注意点 本文摘录于&#xff1a;https://blog.csdn.net/Python_0011/article/details/131699443只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 双击"qt-online-installer-windows-x64-4.8.0.exe"文件后输入账号选择如下控…

云原生架构内涵_1.云原生架构定义

1.云原生架构 从技术的角度&#xff0c;云原生架构是基于云原生技术的一组架构原则和设计模式的集合&#xff0c;旨在将云应用中的非业务代码部分进行最大化的剥离&#xff0c;从而让云设施接管应用中原有的大量非功能特性&#xff08;如弹性、韧性、安全、可观测性、灰度等&a…

什么是Capto刀柄,一起来认识一下

大家好&#xff0c;今天咱们不聊齿轮&#xff0c;说一说一款刀柄的相关内容。目前&#xff0c;高速加工中心的主轴转速可以达到10,000——50,000r /min &#xff0c;极大地提高了生产率。高速加工工具系统的主要作用是保证刀具在机床主轴中的精确定位&#xff0c;将主轴的运动和…

车辆工程计算机编程:深度探索与未来挑战

车辆工程计算机编程&#xff1a;深度探索与未来挑战 随着科技的不断进步&#xff0c;车辆工程领域与计算机编程的交融日益紧密&#xff0c;为行业发展注入了新的活力。然而&#xff0c;对于许多人来说&#xff0c;车辆工程计算机编程究竟学什么&#xff0c;仍是一个充满困惑和…

【C++刷题】优选算法——递归第四辑

记忆化搜索篇 什么是记忆化搜索&#xff1f; 带 备忘录 的递归 如何实现记忆化搜索&#xff1f; a.添加一个备忘录 <可变参数&#xff0c;返回值>b.每次递归返回的时候&#xff0c;把结果放到备忘录里c.每次递归进入的时候&#xff0c;先查看一下备忘录 记忆化搜索 vs 常…

对于个人而言,大数据时代如何更好地管理自己的信息?

在大数据时代&#xff0c;管理个人信息变得尤为重要。以下是几个建议来更好地管理个人信息&#xff1a; 认识和了解自己的数字足迹&#xff1a;了解自己在互联网上的活动&#xff0c;包括浏览历史、社交媒体和在线购物数据等。通过查阅自己的帐户设置和隐私选项&#xff0c;可以…

golang信号通知 signal.Notify NotifyContext完整示例

在看示例之前有必要先看看Go程序中信号的默认行为&#xff0c; go中信号的默认行为如下&#xff1a; SIGHUP、SIGINT或SIGTERM信号会导致程序退出。SIGQUIT、SIGILL、SIGTRAP、SIGABRT、SIGSTKFLT、SIGEMT或SIGSYS信号会导致程序退出并进行堆栈转储。SIGTSTP、SIGTTIN或SIGT…

使用Nginx作为反向代理实现MQTT内外网通信

使用Nginx作为反向代理实现MQTT内外网通信 步骤1: 安装Nginx 确保你的服务器上已安装Nginx。如果未安装&#xff0c;可以通过以下命令在Ubuntu上安装Nginx&#xff1a; sudo apt update sudo apt install nginx步骤2: 配置Nginx 编辑Nginx的配置文件&#xff0c;通常是/etc…

全面掌握Prompt提示词技巧

本文综合介绍了Prompt提示词的各种技巧&#xff0c;包括高级提示工程技术、设计提示的通用技巧、优化prompt的十个技巧、AI提示词网站合集、提示工程指南以及ChatGPT提示词技巧等&#xff0c;旨在帮助读者深入理解和应用这些技巧&#xff0c;提高与AI模型的交互效率和质量。 文…

C++ 类模板 函数模板

类模板 #include <bits/stdc.h> using namespace std; //多少变量就写多少个 template<typename T1, typename T2> class Cat { public:Cat(){}Cat(T1 name, T2 age){this->age age;this->name name;}void print(){cout << this->name << …

Python脚本启动应用并输入账号或密码

一、简介 如果每天要启动某个软件还要输入账号密码登录的需求的话&#xff0c;可以参考本文章&#xff1b; 二、Python环境 环境&#xff1a;Python3.11 已经在Windows电脑中配置Python环境变量&#xff0c;且配置了pipd的环境变量&#xff1b; 三、安装模块 安装所需要的…

计算机毕业设计 | SpringBoot招投标系统 任务发布网站(附源码)

1&#xff0c;绪论 在市场范围内&#xff0c;任务发布网站很受欢迎&#xff0c;有很多开发者以及其他领域的牛人&#xff0c;更倾向于选择工作时间、工作场景更自由的零工市场寻求零散单子来补贴家用。 如今市场上&#xff0c;任务发布网站鱼龙混杂&#xff0c;用户需要找一个…

(原创)从右到左排列RecycleView的数据

问题的提出 当我们写一个Recycleview时&#xff0c;默认的效果大概是这样的&#xff1a; 当然&#xff0c;我们也可以用表格布局管理器GridLayoutManager做成这样&#xff1a; 可以看到&#xff0c;默认的绘制方向是&#xff1a; 从左到右&#xff0c;从上到下 那么问题来了…

STM32系列(HAL库)——F103C8T6通过HC-SR04超声波模块实现测距

一、模块资料 &#xff08;1&#xff09;模块简介 超声波是振动频率高于20kHz的机械波。它具有频率高、波长短、绕射现象小、方向性好、能够成为射线而定向传播等特点。HC-SRO4是一款尺寸完全兼容老版本&#xff0c;增加UART和IIC功能的开放式超声波测距模块,默认条件下,软件…

执行普罗米修斯插件mysqld_exporter出现闪退问题如何解决?

运行 mysqld_exporter.exe 文件闪退的问题可能是由于配置文件或环境变量设置不正确导致的。 检查配置文件 my.cnf&#xff1a; 打开 my.cnf 文件&#xff0c;确保其中的配置项正确无误&#xff0c;尤其是 MySQL 数据库的连接信息。配置示例&#xff1a;[client] useryour_mysql…

如何评价 OpenAI 最新发布支持实时语音对话的模型GPT-4o?OpenAI发完GTP-4o,国内大模型行业还有哪些机会?

文章目录 OpenAI发完GTP-4o&#xff0c;国内大模型行业还有哪些机会&#xff1f;详细了解一下OpenAI最新发布的支持实时语音对话的模型GPT-4o国内大模型如何寻找发展机会&#xff1f;想要发展技术必须要创新与追赶或许应用场景拓展也是一种出路产业生态构建 ChatGPT 问世才 17 …

阿里妈妈->创意图片生成

数智商业技术2.0时代的新「三驾马车」,阿里妈妈郑波谈如何把握生成式大模型ACM\x26#39;23 中国图灵大会 SIGAI China 论坛上,阿里妈妈及闲鱼 CTO 郑波分享关于数智商业技术的洞见。他认为在这轮生成式 AI 大模型的驱动下,数智商业技术将进入 2.0 时代,其中知识驱动、逻辑推…

创建数据库数据插入、更新与删除

创建数据库和创建表 一、实验目的 &#xff08;1&#xff09;熟悉和掌握数据库的创建和连接方法&#xff1b; &#xff08;2&#xff09;熟悉和掌握数据库表的建立、修改和删除&#xff1b; &#xff08;3&#xff09;加深对表的实体完整性、参照完整性和用户自定义完整性的…