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

Java学习打卡-Day25-注解和反射、Class类

注解(JDK5引入)

什么是注解?
  • Java注解(Annotation),也叫元数据。一种代码级别的说明,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
作用
  • 不是程序,但能对程序做出解释。
  • 还可以被其他程序读取。
格式
  • @+注释名。还可以添加一些参数。
  • 如:@SuppressWarnings(value="unchecked")
如何使用
  • 可以附加在 package、 class、 method、 field 等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。
内置注解(预定义的注解)
  • 以下注解都是java.lang包下的,也就是Java提供的基础注解,我们在使用的时候是不需要导包的!
    • @Override:标记一个方法,该方法打算重写超类中的某一方法。如果被标记的方法并没有实际重写超类中的方法,则编译器会发出错误警告。
    • @Deprecated:可以用在方法,属性,类上,表示不推荐程序员使用,因为有风险或存在更好的选择。
    • @SuppressWarnings:取消一些编译器产生的警告,需要添加参数才能正确使用,这些参数都是已经定义好了的,我们选择性的使用就好了。
    • @SafeVarargs:在声明具有模糊类型(如泛型)的可变参数构造函数或方法时,Java编译器会报unchecked警告。鉴于这些情况,如果程序员断定声明的构造函数和方法的主体不会对其varargs参数执行潜在的不安全的操作,可使用@SafeVarargs进行标记,这样的话,Java编译器就不会报unchecked警告。注意:方法必须是由static或者final修饰的方法!只能用于标记构造函数和方法!只能用在可变长参数的方法上!
      @SafeVarargs
      public static <T> T useVarargs(T... args) {  return args.length > 0 ? args[0] : null;  
      } 
      
    • @FunctionalInterface:被@FunctionalInterface注解标记的类型表明这是一个函数接口。从概念上讲,函数接口只有一个抽象方法。一旦不满足函数接口,就会报错。
元注解
  • 以下注解都来源于java.lang.annotation,元注解只能用来注解其他注解。
    • @Target:用于描述注解的使用范围。如@Target({ElementType.TYPE, ElementType.METHOD}),就代表着其修饰的注解可以用在 接口、类、枚举、注解上、还可以用在方法上!

      @Target(ElementType.TYPE) —— 接口、类、枚举、注解
      @Target(ElementType.FIELD) ——字段、枚举的常量
      @Target(ElementType.METHOD) —— 方法
      @Target(ElementType.PARAMETER) —— 方法参数
      @Target(ElementType.CONSTRUCTOR) —— 构造函数
      @Target(ElementType.LOCAL_VARIABLE) —— 局部变量
      @Target(ElementType.ANNOTATION_TYPE) —— 注解
      @Target(ElementType.PACKAGE) —— 包

    • @Retention:用于描述注解的生命周期,表示需要在什么级别保存该注解信息。

      RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;也就是编译时有效。
      RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;加载时被抛弃。
      RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;一直有效!

    • @Documented:说明该注解将被包含在javadoc中。如果一个注解@A被@Documented标注,那么被@A修饰的类,生成文档时,就会显示该注解@A。

    • @Inherited:如果一个类用上了@Inherited修饰的注解@A,那么其子类也会继承这个注解@A。

自定义注解
  • 使用关键字@interface来声明一个注解。
  • 访问修饰符必须为public,不写默认为pubic。
  • 配置参数:返回类型+参数名+()。返回类型只能是基本类型、Class、String、enum。
  • 注解参数必须要有值,可以通过default来声明参数的默认值。如果没有默认值,则必须赋值。
  • 如果只有一个参数成员,一般参数名为value。

反射

什么是反射?
  • Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。Java注解一旦离开了反射就什么都不是!!!
  • 加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象包含了完整的类的结构信息。这个对象就像一面镜子,透过这个镜子我们可以看到类的结构,所以我们形象的称之为反射。
  • Class对象照镜子后可以得到的信息:某个类的属性、方法、构造器,实现了哪些接口。
功能
  • 在运行时判断任意一个对象所属的类。
  • 在运行时构造任意一个类的对象。
  • 在运行时判断任意一个类所具有的成员变量和方法。
  • 在运行时获取泛型信息。
  • 在运行时调用任意一个对象的成员变量和方法。
  • 在运行时处理注解。
  • 生成动态代理。
优缺点
  • 优点:体现出灵活性,可以实现动态创建和使用对象。
  • 缺点:对性能有影响,使用反射基本上是一种解释操作,这类操作总是慢于直接执行相同的操作。
Class 类
  • Class 类就是一个类,同样继承自Object类。
  • Class 对象不是new出来的,而是由JVM创建的,通过ClassLoader加载某类的Class对象。我们只能通过反射得到。
  • 某个类在JVM中只能有一个Class对象,因为类只加载一次。
  • 一个Class对象对应的是加载到JVM的一个.class文件
  • Class类是反射的根源,任何你想动态加载、运行的类,唯有先获得对应的Class对象。通过Class对象可以得到一个类的完整结构,借助一系列API。
Class 类方法
String str ="com.hspedu.reflection.Person";
//获取到Class对象,?表示不确定的java类型
Class<?> clazz = Class.forName(str);System.out.println(clazz);//输出该clazz是哪个类的Class对象->class com.hspedu.reflection.Person
System.out.println(clazz.getName());//全类名->com.hspedu.reflection.Person
System.out.println(clazz.getPackage().getName());//包名->com.hspedu.reflection
System.out.println(clazz.getClass());//运行类型->class java.lang.ClassObject obj= clazz.newlnstance(); //通过反射创建对象
Field field = clazz.getField("name"); //通过反射获取属性(只能获取公有)
System.out.println(field.get(obj));//输出field.set(obj,"hspedu"); // 通过反射给属性赋值
System.out.println(field.get(obj));//输出Field[] fields = clazz.getFields();//通过反射获取所有属性(只能获取公有)
for(Field f : fields){System.out.println(f.getName());//输出所有属性的名称System.out.println(f.get(obj));//输出所有属性的值
}
Class 对象的获取方式
  • 编译阶段:已知一个类的全类名,且该类在类路径下,可通过Class类的静态方法forName()获取,可能抛出ClassNotFoundException。如:Class cls1 = Class.forName( "java.lang.Cat"); 应用场景:多用于配置文件,读取类全路径,加载类。
  • 类加载阶段:已知具体的类,通过类的.class获取,该方式最为安全可靠,程序性能最高。如:Class cls2 = Cat.class; 应用场景:多用于参数传递,比如通过反射得到对应构造器对象。
  • 运行阶段:已知某个类的实例,调用该实例的getClass()方法获取Class对象。如:Class cls3 = 对象.getClass();应用场景:通过创建好的对象,获取Class对象。
  • 通过类加载器:(1)先得到类加载器 ClassLoader classLoader = 对象.getClass().getclassLoader();(2)通过类加载器得到Class对象Class cls4 = classLoader.loadclass(classAllPath);
  • 对于基本数据类型:Class cls5 = 基本数据类型.class;
  • 对于基本数据类型的包装类:Class cls6 = 包装类.TYPE;

相关文章:

Java学习打卡-Day25-注解和反射、Class类

注解&#xff08;JDK5引入&#xff09; 什么是注解&#xff1f; Java注解&#xff08;Annotation&#xff09;&#xff0c;也叫元数据。一种代码级别的说明&#xff0c;与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面&#xf…...

【愚公系列】《Python网络爬虫从入门到精通》048-验证码识别(滑动拼图验证码)

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...

CMake中add_custom_target用法详解

在 CMake 中&#xff0c;add_custom_target 是一个用于创建自定义构建目标的命令。它主要用于定义一些不生成文件&#xff0c;但需要执行的特定操作&#xff08;比如运行脚本、执行命令、触发其他构建步骤等&#xff09;。以下是它的核心用途和特点&#xff1a; 基本语法 add_…...

埃隆·马斯克如何通过开源创新塑造未来

李升伟 编译 埃隆马斯克的名字在多个行业回响——从电动汽车、太空探索到人工智能及更多领域。虽然许多人关注他革命性的公司&#xff08;如特斯拉、SpaceX、Neuralink和The Boring Company&#xff09;&#xff0c;但较少有人意识到他在开源软件运动中悄然却深远的影响力。本…...

大型语言模型中的工具调用(Function Calling)技术详解

一、引言 随着大型语言模型&#xff08;LLM&#xff09;能力的飞速发展&#xff0c;它们在自然语言理解、文本生成、对话交互等方面展现出了令人惊叹的表现。然而&#xff0c;LLM 本身并不具备执行外部操作的能力&#xff0c;比如访问网页、调用第三方 API、执行精确数学运算等…...

IKBC F108 白色背光普通版说明书

部分按键白色背光版和新的 RGB 版并不相同。比如灯光控制&#xff0c;新老款会有按键配置冲突的。 IKBC F108 白色背光款&#xff08;普通款&#xff09;按键说明​ ScrLk 倒计时定时器​ 使用 F1~F12 及 1~9 控制时间&#xff0c;设置完成按 Enter 确认&#xff0c;或按 En…...

Microsoft Office 如何启用和正常播放 Flash 控件

对于新安装的 Office 默认是不支持启用 Flash 组件的&#xff0c;Flash 组件会无法播放或者黑屏。 本片文章就带你解决这个问题&#xff0c;相关资料都在下方连接内。前提概要&#xff0c;教程对应的版本是 mso16&#xff0c;即 Office 2016 及更新版本&#xff0c;以及 365 等…...

muduo库源码分析: One Loop Per Thread

One Loop Per Thread的含义就是&#xff0c;一个EventLoop和一个线程唯一绑定&#xff0c;和这个EventLoop有关的&#xff0c;被这个EventLoop管辖的一切操作都必须在这个EventLoop绑定线程中执行 1.在MainEventLoop中&#xff0c;负责新连接建立的操作都要在MainEventLoop线程…...

[ARC196A] Adjacent Delete 题解

假设 n n n 是偶数。如果我们忽略删除相邻数的条件&#xff0c;即可以任选两个数相减&#xff0c;那么答案应该是前 n 2 \frac{n}{2} 2n​ 大的数&#xff08;记作“较大数”&#xff09;的和减去前 n 2 \frac{n}{2} 2n​ 小的数&#xff08;记作“较小数”&#xff09;的和…...

拼团系统设计-人群标签的设计与思考

目录 轻量化人群标签数据采集与Redis BitMap应用 为什么需要人群标签&#xff1f; 设计思路&#xff1a;轻量化人群标签系统 1. 核心目标 2. 技术选型&#xff1a;Redis BitMap 3. 数据链路设计 技术实现&#xff1a;代码级拆解 1. 人群标签任务调度 2. 用户ID与BitMap索引映射…...

【Python] pip制作离线包

制作离线安装包是一种非常实用的方法&#xff0c;尤其是在网络环境受限或需要在多台机器上部署相同环境时。以下是详细的步骤&#xff0c;帮助您创建一个包含所有依赖项的离线安装包&#xff0c;并在后续环境中复用。 步骤 1&#xff1a;准备工具和环境 确保您有一台可以访问互…...

Java学习手册:Java异常处理机制

在Java编程中&#xff0c;异常处理是确保程序健壮性和稳定性的关键机制。异常是指程序运行过程中出现的错误或异常情况&#xff0c;如除以零、文件找不到或网络连接失败等。Java提供了强大的异常处理机制&#xff0c;帮助开发者捕获和处理这些异常情况&#xff0c;从而避免程序…...

[特殊字符] 第十二讲 | 地统计学基础与克里金插值法(Kriging)建模实践

&#x1f4d8; 专栏&#xff1a;科研统计方法实战分享 | 地学/农学人的数据分析工具箱 ✍️ 作者&#xff1a;平常心0715 &#x1f5dd;️ 本讲关键词&#xff1a;Kriging、地统计学、变异函数、空间插值、空间预测、R语言 一、什么是地统计学&#xff1f; 地统计学&#xff0…...

Introducing Machine Learning with SAP Leonardo

Introducing Machine Learning with SAP Leonardo...

软考 系统架构设计师系列知识点之杂项集萃(49)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;48&#xff09; 第76题 某文件管理系统在磁盘上建立了位视图&#xff08;bitmap&#xff09;&#xff0c;记录磁盘的使用情况。若磁盘上物理块的编号依次为&#xff1a;0、1、2、……&#xff1b…...

list容器

1. list 的介绍 list 是序列容器&#xff0c;允许在序列中的任何位置进行O(1)时间复杂度的插入和删除操作以及双向迭代。 list 容器实现为带头结点双向链表&#xff0c;双向链表可以将它们包含的每个元素存储在不同且不相关的存储位置。 2. list 的使用 2.1 构造函数 1.…...

Linux xorg-server 解析(一)- 编译安装Debug版本的xorg-server

一:下载代码 1. 配置源,以Ubuntu24.04 为例( /etc/apt/sources.list.d/ubuntu.sources): 2. apt source xserver-xorg-core 二:编译代码 1. sudo apt build-dep ./ 2. DEB_BUILD_OPTIONS="nostrip" DEB_CFLAGS_SET="-g -O0" dpkg-buildpac…...

VTK使用Render()渲染窗口的相关问题

转自个人博客&#xff1a;VTK使用Render()渲染窗口的相关问题 1. VTK更新数据但窗口不更新 问题&#xff1a;在对窗口内的数据进行更新后&#xff0c;VTK窗口不会立即更新&#xff0c;需要鼠标等交互后才会更新。 解决办法&#xff1a;对数据更新后&#xff0c;对VTK窗口也要…...

基于php的成绩分析和预警与预测网站(源码+lw+部署文档+讲解),源码可白嫖!

摘要 人类现已迈入二十一世纪&#xff0c;科学技术日新月异&#xff0c;经济、资讯等各方面都有了非常大的进步&#xff0c;尤其是资讯与网络技术的飞速发展&#xff0c;对政治、经济、军事、文化、教育等各方面都有了极大的影响。 利用电脑网络的这些便利&#xff0c;发展一套…...

文档检索技术详解 (Document Retriever)

一、文档检索的定义与核心概念 文档检索&#xff08;Document Retriever&#xff09;是一种信息检索技术&#xff0c;旨在从大量未结构化或半结构化文档中快速找到与特定查询相关的文档或信息。文档检索通常以在线&#xff08;online&#xff09;方式运行&#xff0c;能够实时…...

大模型SFT用chat版还是base版 SFT后灾难性遗忘怎么办

大模型SFT用chat版还是base版 进行 SFT 时&#xff0c;基座模型选用 Chat 还是 Base 模型&#xff1f; 选 Base 还是 Chat 模型&#xff0c;首先先熟悉 Base 和 Chat 是两种不同的大模型&#xff0c;它们在训练数据、应用场景和模型特性上有所区别。 在训练数据方面&#xf…...

【生活相关-日语-日本-东京-搬家后-瓦斯申请(2)-办理手续】

【生活相关-日语-日本-东京-搬家后-瓦斯申请&#xff08;2&#xff09;-办理手续】 1、前言2、情况说明&#xff08;1&#xff09;他人代办&#xff08;2&#xff09;打电话&#xff08;3&#xff09;网络申请&#xff08;4&#xff09;你将会面临什么&#xff0c;主要步骤&…...

matplotlib数据展示

目录 一、绘制直方图 1、简单直方图 2、绘制横向直方图 3、绘制堆叠直方图 4、对比直方图 二、折线图与散点图 三、绘制饼图 四、雷达图 1、简单雷达图 2、多层雷达图 五、总和 在前面的学习中&#xff0c;我们能够使用一些库进行数据的整合&#xff0c;收集&#x…...

三维激光测量助力企业检测效率提升3倍

智能制造与数字化浪潮席卷下&#xff0c;三维扫描技术已成为工业检测领域不可或缺的工具。面对传统检测手段的精度瓶颈与效率局限&#xff0c;三维扫描仪&#xff0c;以毫米级精度、非接触式测量与超高速扫描三大核心优势&#xff0c;为汽车制造、航空航天、消费电子等行业的品…...

基于RISC-V内核的嵌入式系统在机器人关节控制中的应用研究

摘要 随着机器人技术的飞速发展&#xff0c;关节控制作为机器人系统中的关键环节&#xff0c;对机器人的性能和稳定性起着至关重要的作用。传统的关节控制多采用基于ARM或DSP的嵌入式系统&#xff0c;但RISC-V架构的兴起为机器人关节控制提供了新的选择。本文结合多个基于RISC…...

斯库拉集团介绍

斯库拉集团有限公司坐落于世界自由贸易圣地,国际金融服务中心英属维京群岛BVI. 旗下有香港斯库拉集团(香港主板 上市公司),斯库拉环球国际控股集团 (香港主板上市企业),斯库拉国际贸易 有限公司(斯库拉集团有限公司),新加坡斯库拉集团有限公司,德国斯库拉集团有限公司,新西…...

运用instanceof判断Animal a是否为Dog类和是否为cat类

//Animal类&#xff08;狗和猫的父类&#xff09; public class Animal {private String color;private int age;public Animal(String color, int age) {this.color color;this.age age;}public Animal() {}public String getColor() {return color;}public void setColor…...

蓝桥杯嵌入式考前模块总结

一.RTC 使用RTC直接再cubeMX中配置启动时钟和日历 如第六届省赛 想要让RTC的秒每隔一秒递增1需要在时钟树界面观察RTC的主频 由于RTC时钟主频为32KHZ将异步预分频计数器的值设为31&#xff0c;将同步预分频计数器的值设为999这样就可以将RTC的时钟信号分频为1HZ达到1秒自增的…...

《汽车电器与电子技术》实验报告

SRS系统结构原理与故障检测诊断 车辆上为什么要配安全气囊&#xff1f;——解析汽车被动安全的关键防线 一、安全气囊的核心作用&#xff1a;应对高速碰撞的“救命缓冲垫” 车辆在高速碰撞时&#xff08;如正面碰撞、侧面碰撞&#xff09;&#xff0c;人体会因惯性以极高速度…...

小刚说C语言刷题——第22讲 二维数组

昨天我们讲了一维数组&#xff0c;今天我们来讲二维数组。 1.定义 二维数组是指在数组名后跟两个方括号的数组。 2.语法格式 数据类型 数组名[下标][下标] 例如&#xff1a;int a[5][9];//表示5行9列的数组 3.访问二维数组元素 格式&#xff1a;数组名[行坐标][列坐标]…...

04--网络属性设置与多路复用

一、TCP可靠性分析 二、 scoket 属性设置 1、socket 属性设置表 NAMEgetsockopt, setsockopt - get and set options on sockets获取 和 设置 套接字属性 SYNOPSIS#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int getsockopt(int so…...

AI大模型从0到1记录学习 day17

第 2 章 数据结构与算法基础 2.1 数据结构基础 2.1.1 什么是数据结构 数据结构是为了高效访问数据而设计出的一种数据的组织和存储方式。更具体的说&#xff0c;一个数据结构包含一个数据元素的集合、数据元素之间的关系以及访问和操作数据的方法。 像前面我们接触到的list、se…...

scanf函数功能与使用详解

【DeepSeek提问】 解释一下下面这段话&#xff1a; 函数scanf()是从标准输入流 stdin (标准输入设备&#xff0c; 一般指键盘)中读内容的通用子程序&#xff0c;可以按说明的格式读入多个字符&#xff0c;并保存在对应地址的变量中。 scanf函数返回成功读入的数据项数&#xf…...

使用Python从零开始构建端到端文本到图像 Transformer大模型

简介&#xff1a;通过特征向量从文本生成图像 回顾&#xff1a;多模态 Transformer 在使用Python从零实现一个端到端多模态 Transformer大模型中&#xff0c;我们调整了字符级 Transformer 以处理图像&#xff08;通过 ResNet 特征&#xff09;和文本提示&#xff0c;用于视觉…...

NDT和ICP构建点云地图 |【点云建图、Ubuntu、ROS】

### 本博客记录学习NDT&#xff0c;ICP构建点云地图的实验过程&#xff0c;参考的以下两篇博客&#xff1a; 无人驾驶汽车系统入门&#xff08;十三&#xff09;——正态分布变换&#xff08;NDT&#xff09;配准与无人车定位_settransformationepsilon-CSDN博客 PCL中点云配…...

第 1 篇✅ 用 AI 编程之前,你得先搞清楚你和 AI 是啥关系

程序员不是被替代的,是要学会主导 AI 的人 🧠 那些把 AI 当兄弟的程序员,后来都踩了坑 最近的一次线下开发者聚会,我们聊到“AI 编程”,现场笑声不断,也点醒了不少人。 有个朋友说: “我让 AI 写一个 Web 服务,它写得飞快,我一激动就上线了,结果上线后一堆坑,日志…...

Android Jetpack Compose 高级开发核心技术

Android Compose 高级技术总结 1. 性能优化 1.1 状态管理优化 状态提升原则&#xff1a;将状态提升到共享的最近共同父组件derivedStateOf&#xff1a;当需要基于多个状态计算派生状态时使用 val scrollState rememberScrollState() val showButton by remember {derivedS…...

Go小技巧易错点100例(二十五)

本期分享&#xff1a; 1. 使用atomic包实现无锁并发控制 2. Gin框架的中间件机制 3. 搞懂nil切片和空切片 使用atomic包实现无锁并发控制 sync/atomic包提供了原子操作&#xff0c;用于在多goroutine环境下安全地操作共享变量&#xff0c;避免使用锁带来的性能开销。 代码…...

如何用海伦公式快速判断点在直线的哪一侧

一、海伦公式的定义与推导 1. 海伦公式的定义 海伦公式&#xff08;Heron’s Formula&#xff09;是用于计算三角形面积的一种方法&#xff0c;适用于已知三角形三边长度的情况。公式如下&#xff1a; S s ( s − a ) ( s − b ) ( s − c ) S \sqrt{s(s - a)(s - b)(s - c…...

【异常处理】Clion IDE中cmake时头文件找不到 头文件飘红

如图所示是我的clion项目目录 我自定义的data_structure.h和func_declaration.h在unit_test.c中无法检索到 cmakelists.txt配置文件如下所示&#xff1a; cmake_minimum_required(VERSION 3.30) project(noc C) #设置头文件的目录 include_directories(${CMAKE_SOURCE_DIR}/…...

自动驾驶技术关键技术梳理

一、硬件 1、 传感器系统设计主要注意以下几个问题&#xff1a; 1.时间同步 一般包括多传感器之间时钟同源、帧同步触发的问题。首先要解决时钟同源问题&#xff0c;然后为了帧同步触发&#xff0c;可以让所有传感器整秒触发。常用GPS&#xff08;最多分2路&#xff09;给激光雷…...

MySQL索引介绍

索引的定义 扇区&#xff1a;磁盘存储的最小单位&#xff0c;扇区一般大小为512Byte。磁盘块&#xff1a;文件系统与磁盘交互的的最小单位&#xff08;计算机系统读写磁盘的最小单位&#xff09;&#xff0c;一个磁盘块由连续几个&#xff08;2^n&#xff09;扇区组成&#xf…...

2025认证杯一阶段各题需要使用的模型或算法(冲刺阶段)

A题&#xff08;小行星轨迹预测&#xff09; 问题一&#xff1a;三角测量法、最小二乘法、空间几何算法、最优化方法 问题二&#xff1a;Gauss/Laplace轨道确定方法、差分校正法、数值积分算法&#xff08;如Runge-Kutta法&#xff09;、卡尔曼滤波器 B题&#xff08;谣言在…...

每天学一个 Linux 命令(13):touch

Linux 文件管理命令:touch touch 是 Linux 中一个简单但高频使用的命令,主要用于创建空文件或修改文件的时间戳(访问时间、修改时间)。它是文件管理和脚本操作的实用工具。 1. 命令作用 创建空文件:快速生成一个或多个空白文件。更新时间戳:修改文件的访问时间(Access …...

Flutter常用组件实践

Flutter常用组件实践 1、MaterialApp 和 Center(组件居中)2、Scaffold3、Container(容器)4、BoxDecoration(装饰器)5、Column(纵向布局)及Icon(图标)6、Column/Row(横向/横向布局)+CloseButton/BackButton/IconButton(简单按钮)7、Expanded和Flexible8、Stack和Po…...

Python 实现最小插件框架

文章目录 Python 实现最小插件框架1. 基础实现项目结构plugin_base.py - 插件基类plugins/hello.py - 示例插件1plugins/goodbye.py - 示例插件2main.py - 主程序 2. 更高级的特性扩展2.1 插件配置支持2.2 插件依赖管理2.3 插件热加载 3. 使用 setuptools 的入口点发现插件3.1 …...

AUTOSAR_SWS_MemoryDriver图解

AUTOSAR 存储驱动程序&#xff08;Memory Driver&#xff09;详解 AUTOSAR存储驱动规范 - 技术解析与架构详解 目录 1. 概述2. Memory Driver架构设计 2.1 整体架构 3. Memory Driver核心组件4. 作业管理5. Memory Driver错误处理6. 时序流程7. 配置与设置8. 总结 1. 概述 A…...

AI结合VBA提升EXCEL办公效率尝试

文章目录 前言一、开始VBA编程二、主要代码三、添加到所有EXCEL四、运行效果五、AI扩展 前言 EXCEL右击菜单添加一个选项&#xff0c;点击执行自己逻辑的功能。 然后让DeepSeek帮我把我的想法生成VBA代码 一、开始VBA编程 我的excel主菜单没有’开发工具‘ 选项&#xff0c;…...

Python中NumPy的索引和切片

在数据科学和科学计算领域&#xff0c;NumPy是一个功能强大且广泛使用的Python库。它提供了高效的多维数组对象以及丰富的数组操作函数&#xff0c;其中索引和切片是NumPy的核心功能之一。通过灵活运用索引和切片操作&#xff0c;我们可以轻松访问和操作数组中的元素&#xff0…...

普通通话CSFB方式(2g/3g)

一、CSFB的触发条件 当模块&#xff08;或手机&#xff09;驻留在 4G LTE网络 时&#xff0c;若发生以下事件&#xff0c;会触发CSFB流程&#xff1a; 主叫场景&#xff1a;用户主动拨打电话。被叫场景&#xff1a;接收到来电&#xff08;MT Call&#xff09;。紧急呼叫&…...