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

[Java]反射、String类补充

目录

1、反射定义

2、用途(了解)

3、反射相关的类

4、Class类(反射机制的起源)

4.1、相关方法

5、反射示例

5.1、获取Class对象

5.2、反射的使用

6、反射优点和缺点

7、String类补充

7.1、创建对象的思考

8、字符串常量池

9、再谈String对象创建

10、intern方法


1、反射定义

Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制

反射基本信息:

Java程序中许多对象在运行时会出现两种类型:运行时类型(RTTI)和编译时类型,例如Person p = new Student();这句代码中p在编译时类型为Person,运行时类型为Student。程序需要在运行时发现对象和类的真实 信息。而通过使用反射程序就能判断出该对象和类属于哪些类

2、用途(了解)

1. 在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法 。

2. 反射最重要的用途就是开发各种通用框架,比如在spring中,我们将所有的类Bean交给spring容器管理,无 论是XML配置Bean还是注解配置,当我们从容器中获取Bean来依赖注入时,容器会读取配置,而配置中给的 就是类的信息,spring根据这些信息,需要创建那些Bean,spring就动态的创建这些类。

3、反射相关的类

4、Class类(反射机制的起源)

Class类:代表类的实体,在运行的Java应用程序中表示类和接口

Java文件被编译后,生成了.class文件,JVM此时就要去解读.class文件 ,被编译后的Java文件.class也被JVM解析为一个对象,这个对象就是 java.lang.Class .这样当程序在运行时,每个java文件就最终变成了Class类对象的一个实例。

我们通过Java的反射机制应用到这个实例,就可以去获得甚至去添加改变这个类的属性和动作,使得这个类成为一个动态的类

4.1、相关方法

(重要)常用获得类相关的方法

(重要)常用获得类中属性相关的方法(以下方法返回值为Field)

(了解)获得类中注解相关的方法(以下方法返回值为Constructor)

(重要)获得类中方法相关的方法(以下方法返回值为Method)

5、反射示例

以Student类为例

package demo1;class Student {//私有属性nameprivate String name = "bit";//公有属性agepublic int age = 18;//不带参数的构造方法public Student(){System.out.println("Student()");}private Student(String name,int age) {this.name = name;this.age = age;System.out.println("Student(String,name)");}private void eat(){System.out.println("i am eat");}public void sleep(){System.out.println("i am pig");}private void function(String str) {System.out.println(str);}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}

5.1、获取Class对象

在反射之前,我们需要做的第一步就是先拿到当前需要反射的类的Class对象,然后通过Class对象的核心方法,达到反射的目的,即:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息。

(推荐前两种,不推荐第三种)
第一种,使用 Class.forName("类的全路径名"); 静态方法。
前提:已明确类的全路径名。


第二种,使用 .class 方法。
说明:仅适合在编译前就已经明确要操作的 Class


第三种,使用类对象的 getClass() 方法

c1、c2、c3都是同一个对象,得出结论:Class对象只有一个

5.2、反射的使用

依旧反射上面的Student类

注意:所有和反射相关的包都在 import java.lang.reflect 包下面

1. 创建对象

2. 反射私有的构造方法

3. 反射私有属性  (name)

4. 反射私有方法  (function)

6、反射优点和缺点

优点:
1. 对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法
2. 增加程序的灵活性和扩展性,降低耦合性,提高自适应能力
3. 反射已经运用在了很多流行框架如:Struts、Hibernate、Spring 等等。


缺点:
1. 使用反射会有效率问题。会导致程序效率降低。比如说,为了调用一个方法,调用了五个方法,五个方法才相当于一个方法,效率必然不高。具体参考这里:http://www.imooc.com/article/293679
2. 反射技术绕过了源代码的技术,因而会带来维护问题。反射代码比相应的直接代码更复杂


7、String类补充

7.1、创建对象的思考

下面两种创建String对象的方式相同吗?

上述程序创建方式类似,为什么s1和s2引用的是同一个对象,而s3和s4不是呢?

在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、 更节省内存,Java为8种基本数据类型和String类都提供了常量池

为了节省存储空间以及程序的运行效率,Java中引入了:
1. Class文件常量池:每个.Java源文件编译后生成.Class文件中会保存当前类中的字面常量以及符号信息
2. 运行时常量池:在.Class文件被加载时,.Class文件中的常量池被加载到内存中称为运行时常量池,运行时常量池每个类都有一份
3. 字符串常量池

8、字符串常量池

字符串常量池在JVM中是StringTable类,实际是一个固定大小的HashTable(哈希表),不同JDK版本下字符串常量池的位置以及默认大小是不同的:

9、再谈String对象创建

String对象创建的底层逻辑:String s3 = new String("world");

只要是双引号引起来的都会存放在常量中

1. 当s1创建完成后,再创建s2,先去常量池查找是否有当前这个字符串,如果有,会把常量池中这个对象的地址给到s2。这样一来,s1和s2都指向了同一个对象,所以打印 s1==s2 的返回值一定为true


2. 创建 s3 = new String("world"),首先在常量池中查找是否有world这个字符串,没有就跟 s1 一样就存放到常量池中;再创建一个新对象 s4 = new String("world"),首先在常量池中找到了world这个字符串,此时会new一个新的String对象,然后把存放world字符串的地址给到新对象的 value


结论:

1. 常量池中有,就用常量池里的;常量池中没有,就把它放到常量池

2. 只要是new的对象,都是唯一的。

通过上面例子可以看出:使用常量串创建String类型对象的效率更高,而且更节省空间。

也可以将创建的字符串对象通过 intern 方式添加进字符串常量池中。

10、intern方法

先分析这段代码

它的底层存储:

1. 创建 s1= new String(ch),参数ch不是双引号引起来的,所以不放到常量池,它的存储方式是:new一个新对象,其中的value指向拷贝后的新数组

2. s2 = "abc",abc是双引号引起来的,所以放到常量池;

3. 综上,s1和s2没有任何关系,所以这段代码的结果为false

intern方法:让s1所指向的对象入池;如果常量池中存在,就不入池

s1入池后,创建s2 = "abc",在常量池找到了这个字符串,最终s1和s2指向的是同一个对象,所以加上intern方法后,代码执行结果为true

public static void main(String[] args) {char[] ch = new char[]{'a', 'b', 'c'};String s1 = new String(ch); // s1对象并不在常量池中//s1.intern(); // s1.intern();调用之后,会将s1对象的引用放入到常量池中String s2 = "abc"; // "abc" 在常量池中存在了,s2创建时直接用常量池中"abc"的引用System.out.println(s1 == s2);
}
// 输出false
// 将上述方法打开之后,就会输出true

相关文章:

[Java]反射、String类补充

目录 1、反射定义 2、用途(了解) 3、反射相关的类 4、Class类(反射机制的起源) 4.1、相关方法 5、反射示例 5.1、获取Class对象 5.2、反射的使用 6、反射优点和缺点 7、String类补充 7.1、创建对象的思考 8、字符串常量池 9、再谈String对象创建 10、intern方法 …...

word表格批量操作——宏

word中所有表格代码 这个是表格的模板代码 Sub 表格通用代码() For i ActiveDocument.Tables.Count To 1 Step -1ActiveDocument.Tables (i) Next End Sub1、根据内容自动调整表格 Sub 表格适用内容() For i ActiveDocument.Tables.Count To 1 Step -1ActiveDocument.Tabl…...

eSTK.me

eSTK.me 调用 USIM 卡的 Applet 实现在 iOS 内自助切换 Profile。写卡仍然需要借助硬件读卡器或者兼容 eSIM 的 Android 手机。支持国行 iPhone。 eSTK.me(固件 v2.x 及以后的版本)基于 ETSI 的 Bearer Independent Protocol (BIP) 协议,使…...

四级英语备考指南

一、引言 大学英语四级考试是对大学生英语综合能力的一次重要检验。无论是为了学业要求,还是提升自身竞争力,顺利通过四级考试都有着重要意义。本文将为大家详细介绍四级英语的备考策略,帮助大家高效备考,取得理想成绩。 二、了…...

Java Web 之 互联网协议 100问

HTTP是什么? HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的协议之一,用于在客户端(如浏览器)和服务器之间传输数据。它是 Web 通信的基础,支持浏览器访…...

【单倍型理解及计算系列之二】单倍型基本概念以及其与遗传定位中Bin的定义区别

问题:如何理解单倍型,与遗传定位中Bin的定义区别: 简而言之:就是单倍型是基于LD,通常为连锁不平衡(LD)较高的区域形成。但bin是人为划分的,如以固定SNP数量/固定长度设置&#xff0…...

ArcPy Mapping 模块基础

在地理信息系统(GIS)的应用中,地图制作是一个非常重要的环节。无论是生成用于展示的静态地图,还是动态更新的地图服务,都需要高效且灵活的工具来实现。ArcPy 提供了强大的mapping模块,可以帮助用户自动化地…...

AcWing 11:背包问题求方案数 ← 0-1背包

【题目来源】 https://www.acwing.com/problem/content/11/ 【题目描述】 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总…...

Redis增删改查

### 进入redis控制台 redis-cli --raw #加上raw,防止中文乱码### 增 127.0.0.1:6379> LPUSH list0 "hello" #增加一个list 1 127.0.0.1:6379> LRANGE list0 0 -1 #查看list hello### 删 127.0.0.1:6379> DEL list0 #删除list 1 127.0.0.1:6379> LRANG…...

多道程序和多任务操作系统区别

多道程序 vs. 多道任务:对比分析 ✅ 共同点 方面共同特征核心机制都依赖于进程/任务切换执行需求实现多个程序或任务"并发"执行系统支持都需要操作系统的支持(如调度算法、内存管理)本质目标提高资源利用率(CPU不空转…...

【MySQL】MySQL建立索引不知道注意什么?

基本原则: 1.选择性原则: 选择高选择性的列建立索引(该列有大量不同的值) 2.适度原则:不是越多越好,每个索引都会增加写入开销 列选择注意事项: 1.常用查询条件列:WHERE字句中频繁使用的列 2.连接操作列…...

区块链木材业务服务平台:商贸物流新变革

区块链木材业务服务平台:商贸物流新变革 在全球商贸物流行业不断发展的当下,木材贸易作为其中重要的一环,面临着诸多挑战。区块链木材业务服务平台的出现,为木材商贸物流领域带来了全新的解决方案,正逐步引领行业走向…...

【AI提示词】经济学家

提示说明 经济学家致力于提供深入的经济分析和预测,帮助用户理解经济趋势、政策影响以及市场动态。他们通过专业的经济模型和数据分析,为用户在投资、决策等方面提供指导。 提示词 # 角色 经济学家## 注意 1. 经济学家专家需要具备深入分析经济现象的…...

C++用于保留浮点数的两位小数,使用宏定义方法(可兼容低版本Visual Studio)

文章目录 一、 描述二、 样例二、 结果输出 一、 描述 这个宏定义(可放入.h头文件里)使用基本的数学运算,几乎兼容所有版本的VS,以下可对正数做四舍五入: #define ROUND_TO_TWO(x) ( (floor((x) * 100 0.5) / 100) …...

kimi+deepseek制作PPT

文章目录 KIMI简介一、基本信息二、核心特点三、服务理念 Deepseek简介PPT关键词提示 KIMI简介 KIMI官网:Kimi - 会推理解析,能深度思考的AI助手 一、基本信息 名称 :KIMI开发团队 :月之暗面科技有限公司上线时间 :…...

Linux-进度条小程序

1. 回车和换行的差异 在输出文本时,回车和换行符的作用是非常不同的。了解它们的行为有助于我们控制输出的方式。 回车(\r):回车符将光标移到当前行的开头,但并不会自动换行。它的作用是覆盖当前行的内容。 换行&…...

Day2—3:前端项目uniapp壁纸实战

接下来我们做一个专题精选 <view class"theme"><common-title><template #name>专题精选</template><template #custom><navigator url"" class"more">More</navigator></template></common…...

什么是超类实体和派生属性

在数据库设计&#xff08;尤其是实体-关系模型&#xff08;ER模型&#xff09;&#xff09;和面向对象建模中&#xff0c;超类实体和派生属性是两个重要的概念&#xff0c;分别用于描述实体间的继承关系和属性的动态计算特性。以下是它们的详细解释和对比&#xff1a; 一、超类…...

性能比拼: Elixir vs Go(第二轮)

本内容是对知名性能评测博主 Anton Putra Elixir vs Go (Golang) Performance Benchmark (Round 2) 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 这是第二轮关于 Elixir 和 Go 的对比测试。我收到了一份来自 Elixir 创作者的 Pull Request &#xff0c;并且我认为…...

微信、抖音、小红书emoji符号大全

1、Emoji 日常符号 &#x1f463;&#x1f440;&#x1f441;️&#x1f444;&#x1f48b;&#x1f442;&#x1f9bb;&#x1f443;&#x1f445;&#x1f9e0;&#x1fac0;&#x1fac1;&#x1f9b7;&#x1f9b4;&#x1f4aa;&#x1f9be;&#x1f9bf;&#x1f9b5;&a…...

【大模型】 LangChain框架 -LangChain实现问答系统

LangChain 介绍与使用方法 1. 什么是 LangChain&#xff1f;2. LangChain 的主要功能3. 如何使用 LangChain&#xff1f;3.1 环境准备3.2 基本使用示例3.2.1 简单的问答系统3.2.2 结合外部工具 3.3 高级用法 4. 常见问题及解决方法4.1 安装问题4.2 运行问题4.3 性能问题 5. 实战…...

k8s安装kubeadm

使用kubeadm安装部署k8s集群 目前生产部署Kubernetes 集群主要有两种方式&#xff1a; kubeadm Kubeadm 是一个K8s 部署工具&#xff0c;提供kubeadm init 和kubeadm join&#xff0c;用于快速部署Kubernetes 集群。 官方地址&#xff1a;https://kubernetes.io/docs/refer…...

五、小白如何用Pygame制作一款跑酷类游戏(主角跳跃和滑行动作的实现)

五、小白如何用Pygame制作一款跑酷类游戏&#xff08;主角跳跃和滑行动作的实现&#xff09; 文章目录 五、小白如何用Pygame制作一款跑酷类游戏&#xff08;主角跳跃和滑行动作的实现&#xff09;前言一、添加主角的跳跃和滑行图片素材二、代码部分1.在走路状态时按下按键发生…...

LLM MCP模型上下文协议快速入门(for Java)

什么是MCP Model Control Protocol&#xff08;MCP&#xff09;是由AI研究机构Anthropic在2023年第二季度首次提出的新型协议规范&#xff0c;旨在解决大语言模型LLM应用中的上下文管理难题。作为LLM交互领域的创新标准&#xff0c;MCP协议在发布后短短一年内已进行了多次更新…...

CTF--秋名山车神

一、原网页&#xff1a; 二、步骤&#xff1a; 1.尝试用计算器计算&#xff1a; 计算器溢出&#xff0c;无法正常计算 2.使用python计算&#xff1a; 得出计算结果为&#xff1a;1864710043732437134701060769 3.多次刷新页面&#xff1a; 发现变量为value&#xff0c;要用pos…...

Windows桌面图标变白的解决方案

一、问题原因 桌面图标变白通常是由于系统图标缓存文件&#xff08;IconCache.db&#xff09;损坏或系统图表示现异常导致。图标缓存是Windows用于存储应用程序和文件夹图标图像的临时文件&#xff0c;当该文件损坏或系统未正确更新缓存时&#xff0c;图标会因无法加载原始图像…...

Linux学习——信号量

1.头文件-semaphore.h 2.信号量类型 sem_t sem; 加强版的互斥锁&#xff0c;是并行的 3.主要函数 初始化信号量 sem_init(sem_t *sem,int pshared,unsigned int value); 第一个参数 信号量类型 第二个参数 0-线程同步 1-进程同步 …...

蓝桥杯 蜗牛 动态规划

16.蜗牛 - 蓝桥云课https://www.lanqiao.cn/problems/4985/learning/?page1&first_category_id1&second_category_id3&sortdifficulty&asc1&tags%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92,%E9%80%92%E6%8E%A8,01%E8%83%8C%E5%8C%85,%E5%8C%BA%E9%97%B4DP,%E6…...

FiftyOne 管理数据

FiftyOne 管理数据 下载安装FiftyOne https://docs.voxel51.com/ 下载 coco-2017 使用 FiftyOne 查看 import fiftyone as fo import fiftyone.zoo as foz# 自定义路径 - 修改这些变量以匹配你的环境 image_path /media/wmx/ws3/AI/data/coco2017/train2017 annotations_…...

解决echarts饼图label显示不全的问题

解决办法 添加如下配置&#xff1a; labelLayout: {hideOverlap: false},...

2000-2017年各省城市天然气供气总量数据

2000-2017年各省城市天然气供气总量数据 1、时间&#xff1a;2000-2017年 2、来源&#xff1a;国家统计局、能源年鉴 3、指标&#xff1a;行政区划代码、城市、年份、城市天然气供气总量 4、范围&#xff1a;31省 5、指标说明&#xff1a;城市天然气供气总量是指在一定时间…...

Linux教程-常用命令系列二

文章目录 1. 系统管理常用命令1. useradd - 创建用户账户功能基本用法常用选项示例 2. passwd - 管理用户密码功能基本用法常用选项示例 3. kill - 终止进程功能基本用法常用信号示例 4. date - 显示和设置系统时间功能基本用法常用选项时间格式示例 5. bc - 高精度计算器功能基…...

苍穹外卖(菜品管理)

菜品管理 公共字段自动填充 实现思路 代码开发 自定义注解 AutoFill 自定义切面 AutoFillAspect 完善自定义切面 AutoFillAspect 的 autoFill 方法 在Mapper接口的方法上加入 AutoFill 注解 将业务层为公共字段赋值的代码注释掉 功能测试 新增菜品 需求分析和…...

Cril 截取字段-生成hostname

有些event 是不规则,需要用regular express 来加工一下, 下面说一下sample 数据: 2021-10-26 17:00:12 PDT sample log data from host eagle1 2021-10-26 17:00:12 PDT sample log data from host eagle2 2021-10-26 17:00:12 PDT sample log data from host eagle3 2021…...

免费将AI生成图像放大4倍的方法

有些人不需要任何高级工具和花哨的技巧;他们只需要一种简单的方法来提升图像分辨率而不损失任何质量 — 今天,我们将学习如何做到这一点。 生成AI图像最大的问题之一是什么?最终结果通常分辨率非常低。 这会导致很多不同的问题,特别是对于那些想要在内容或项目中使用这些…...

Map和Set相关练习

目录 1、只出现一次的数字 2、宝石与石头 3、坏键盘打字 4、复制带随机指针的链表 5、大量数据去重 6、大量数据重复次数 7、前K个高频单词 1、只出现一次的数字 oj&#xff1a;136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 1. 使用…...

移动自动化测试-appium

app自动化介绍 工具说明 主流工具 app自动化执行原理 app类型&#xff08;技术&#xff09; 环境搭建 所需环境 JDKandroid-sdkappium模拟器 1、JDK安装 说明&#xff1a;为什么要安装JDK&#xff1f; 安卓应用或开发工具是使用JAVA语言开发&#xff0c;必须使用jdk。…...

一个项目中多个Composer的使用方法

composer是依赖管理工具。 有时我们会在一个项目中使用到多个composer&#xff0c;且每个版本不同。 前提&#xff1a;例如项目xyz根目录vendor中存在阿里云的对应代码。我现在需要再composer腾讯云短信发送的SDK。 1、随便找个位置新建文件夹&#xff0c;存储腾讯云短信发送…...

Qt项目实现对西门子PLC的读写操作(snap7)——C++

实际项目中需要用到对西门子PLC进行通讯&#xff0c;故进行记录&#xff0c;方便后续回顾复习 实现功能&#xff1a; ①PLC连接与断开 ②往PLC指定位置读写操作&#xff08;bit、real、string&#xff09; PLC中的real相当于C中的float&#xff0c;4字节&#xff0c;32bit 1&…...

Python字典深度解析:高效键值对数据管理指南

一、字典核心概念解析 1. 字典定义与特征 字典&#xff08;Dictionary&#xff09;是Python中​​基于哈希表实现​​的无序可变容器&#xff0c;通过键值对存储数据&#xff0c;具有以下核心特性&#xff1a; ​​键值对结构​​&#xff1a;{key: value}形式存储数据​​快…...

Java虚拟机面试题:垃圾收集(下)

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

9 C 语言变量详解:声明与定于、初始化与赋值、printf 输出与 scanf 输入、关键字、标识符命名规范

1 初识变量 1.1 变量的意义 在程序设计中&#xff0c;变量是程序中不可或缺的组成单位&#xff0c;最基本的存储单元。它如同现实生活中的容器&#xff0c;用于临时或长期保存各种类型的数据&#xff0c;为程序提供灵活的数据操作能力。 以选购手机为例&#xff0c;手机的各项…...

释放 Mac 存储空间:Ollama 模型迁移到外接 NVMe 磁盘

目录 背景一、准备工作1. 确认外接 NVMe 已挂载2. 创建模型目录 二、迁移已有模型数据&#xff08;可选&#xff09;三、配置模型目录1. 设置环境变量2. 使用软链接&#xff08;强烈推荐&#xff09; 四、测试是否成功 背景 在本地运行 Ollama 时&#xff0c;模型数据默认保存…...

spring-batch批处理框架(1)

学习链接 SpringBatch高效批处理框架详解及实战演练 spring-batch批处理框架(1) spring-batch批处理框架(2) spring batch官方文档 spring batch官方示例代码 - github 文章目录 学习链接一、课程目标课程目标课程内容前置知识适合人群 二、Spring Batch简介2.1 何为批处理…...

MCP系列:权限管理与隐私保护

前言 随着模型上下文协议(MCP)的广泛应用,安全性问题也逐步突显。在前几篇文章中,我们已经探讨了MCP的基本概念、技术架构、实践应用以及工具调用机制。本篇文章将聚焦于MCP的安全性考量,包括权限管理、隐私保护以及风险缓解策略。 对于企业和开发者而言,了解如何保障M…...

【25软考网工笔记】第二章(7)多路复用技术

目录 一、多路复用技术 1. 频分复用FDM 1&#xff09;频分复用的基本概念 2&#xff09;频分复用与相关技术 3&#xff09;注意事项与扩展 2. 时分复用 1&#xff09;同步时分复用 2&#xff09;统计时分复用 3&#xff09;同步时分复用与统计时分复用的对比 4&#…...

任意文字+即梦3.0的海报设计Prompt

即梦3.0版本发布后&#xff0c;对文字的呈现能力得到了极大的提升&#xff0c;网上也出现了各种文章教大家怎么写提示词。 但是你有没有发现一个问题&#xff0c;好的提示词是需要艺术细胞的&#xff0c;只有那些浸淫设计领域的专家总结的提示词才算上乘。 就像是给你一个主题…...

自动化测试相关协议深度剖析及A2A、MCP协议自动化测试应用展望

一、不同协议底层逻辑关联分析 1. OPENAPI协议 OPENAPI 协议核心在于定义 API 的规范结构&#xff0c;它使用 YAML 或 JSON 格式来描述 API 的端点、请求参数、响应格式等信息。其底层逻辑是构建一个清晰、标准化的 API 描述文档&#xff0c;方便不同的客户端和服务端进行对接…...

零基础上手Python数据分析 (18):Matplotlib 基础绘图 - 让数据“开口说话”

写在前面 —— 告别枯燥数字,拥抱可视化力量,掌握 Matplotlib 绘图基础 欢迎来到 “高效数据分析实战指南:Python零基础入门” 专栏! 经过前面 Pandas 模块的学习和实战演练,我们已经掌握了使用 Python 和 Pandas 进行数据处理、清洗、整合、分析的核心技能。 我们能够从…...

[特殊字符] AI 大模型的 Prompt Engineering 原理:从基础到源码实践

&#x1f31f; 引言&#xff1a;Prompt Engineering - AI 大模型的"魔法咒语" 在 AI 大模型蓬勃发展的当下&#xff0c;它们展现出令人惊叹的语言处理能力&#xff0c;从文本生成到智能问答&#xff0c;从机器翻译到代码编写&#xff0c;几乎涵盖了自然语言处理的各…...