深入解析Java泛型:从定义到实战应用
目录
- 🚀前言
- 🤔泛型的定义
- 🐧泛型类
- 🌟泛型接口
- ✍️泛型方法、通配符、上下限
- 💯泛型方法
- 💯 通配符与上下限
- ⚙️通配符(Wildcard)
- ⚙️泛型上下限
- ⚙️应用场景
- 🦜泛型支持的类型
- ⚙️泛型擦除
- 💯包装类
- ⚙️自动装箱与自动拆箱
- ⚙️常用功能
- ⚙️应用场景
🚀前言
大家好!我是 EnigmaCoder。
本文主要介绍java泛型部分,包含泛型的定义、泛型类、泛型接口、泛型方法、通配符、上下限等。
🤔泛型的定义
定义类、接口、方法时,同时声明了一个或者多个类型变量(如:<E>
),则称为泛型类、泛型接口、泛型方法,它们统称为泛型。
例如:
public class ArrayList<E>{...
}
作用:泛型提供了在编译阶段约束所能操作的数据类型,并自动进行检查的能力。这样可以避免强制类型转换,及其可能出现的异常。
代码示例:
public class Test {public static void main(String[] args) {ArrayList <String>list = new ArrayList<String>();list.add("hello");list.add("world");list.add(23);for(String str:list){System.out.println(str);}}
}
- 由于使用了泛型,这段代码中
list.add(23);
会报错,只能使用String
类型。如果不使用泛型,则遍历时需要进行强制类型转换,容易出现异常。- 泛型的本质:把具体的数据类型作为参数传给类型变量。
🐧泛型类
在Java中,泛型类是一种可以操作多种数据类型的类,它通过类型参数化来实现代码的复用和类型安全。泛型类的定义格式如下:
修饰符 class 类名<类型变量,类型变量,...>{
}
注意:类型变量建议用大写的英文字母,常用的有:E、T、K、V
等。
代码示例:
public class Box<T> {private T item;public void setItem(T item) {this.item = item;}public T getItem() {return item;}
}
Box
是一个泛型类,类型参数为T
。item
是Box
类的一个私有成员变量,类型为T
。setItem
方法用于设置item
的值,参数类型为T
。getItem
方法用于获取item
的值,返回类型为T
。
使用场景:
泛型类在需要处理多种数据类型时非常有用,特别是在集合类中。例如,Java
标准库中的ArrayList
、HashMap
等都是泛型类。通过使用泛型类,可以避免类型转换的麻烦,并提高代码的类型安全性。
🌟泛型接口
在Java
中,泛型接口是一种允许在接口定义中使用类型参数的机制。通过使用泛型接口,可以创建更加灵活和可重用的代码,因为它允许接口方法操作多种类型的数据,而不需要为每种类型都编写一个单独的接口。
格式如下:
修饰符 interface 接口<类型变量,类型变量...>{...
}
注意:同样建议使用大写英文字母,如:E、T、K、V
等。
代码示例
:
public interface Box<T> {void add(T item);T get();
}
public class StringBox implements Box<String> {private String item;@Overridepublic void add(String item) {this.item = item;}@Overridepublic String get() {return item;}
}
- 在这个例子中,
StringBox
类实现了Box
接口,并指定类型参数为String
。因此,add
方法接受一个String
类型的参数,get
方法返回一个String
类型的值。- 泛型接口是Java中一种强大的工具,它允许开发者编写更加通用和可重用的代码。通过使用泛型接口,可以避免为每种数据类型编写单独的接口,从而提高代码的灵活性和可维护性。在实际开发中,泛型接口广泛应用于集合框架、回调机制、数据存储等场景。
✍️泛型方法、通配符、上下限
💯泛型方法
泛型方法是Java
中一种强大的特性,它允许在方法中使用类型参数,从而使方法能够处理多种类型的数据,而不需要为每种类型编写单独的方法。泛型方法在集合框架、工具类等场景中广泛应用,能够提高代码的复用性和类型安全性。
格式如下:
修饰符<类型变量,类型变量,...>返回值类型 方法名(形参列表){...
}
代码示例:
public class GenericMethodExample {// 定义一个泛型方法public static <T> void printValue(T value) {System.out.println("Value: " + value);}public static void main(String[] args) {// 调用泛型方法,传入不同类型的参数printValue("Hello, World!"); // 输出: Value: Hello, World!printValue(123); // 输出: Value: 123printValue(3.14); // 输出: Value: 3.14}
}
💯 通配符与上下限
在Java
泛型编程中,通配符和上下限是处理泛型类型的重要概念,它们提供了更灵活的类型处理方式。
⚙️通配符(Wildcard)
通配符用“?
”表示,它可以在使用泛型时代表任意类型。通配符通常用于泛型方法的参数类型或泛型类的类型参数中,以增加代码的灵活性。例如,在定义一个方法时,如果希望该方法能够接受任何类型的List
,可以使用通配符:
public void printList(List<?> list) {for (Object elem : list) {System.out.println(elem);}
}
在这个例子中,List<?>
表示可以接受任何类型的List,无论是List<String>
、List<Integer>
还是其他类型的List。
⚙️泛型上下限
泛型上下限用于限制泛型类型的范围,使得泛型类型更加安全和可控。
- 泛型上限(
Upper Bound
)
泛型上限使用? extends T
表示,其中T
是一个具体的类或接口。它表示泛型类型必须是T
或其子类。例如:
public void processCars(List<? extends Car> cars) {for (Car car : cars) {car.drive();}
}
在这个例子中,List<? extends Car>
表示cars
列表中的元素必须是Car
类或其子类(如SportsCar
或SUV
)。这样可以确保在processCars
方法中,所有元素都至少具有Car
类的方法。
- 泛型下限(
Lower Bound
)
泛型下限使用? super T
表示,其中T
是一个具体的类或接口。它表示泛型类型必须是T
或其父类。例如:
public void addCar(List<? super Car> cars, Car car) {cars.add(car);
}
在这个例子中,List<? super Car>
表示cars
列表中的元素必须是Car
类或其父类(如Vehicle
)。这样可以确保在addCar
方法中,可以向列表中添加Car
对象或其子类对象。
⚙️应用场景
- 通配符:适用于需要处理多种类型但不需要知道具体类型的场景,如通用的集合处理方法。
- 泛型上限:适用于需要限制类型为某个类或其子类的场景,如处理特定类及其子类的集合。
- 泛型下限:适用于需要限制类型为某个类或其父类的场景,如向集合中添加特定类或其子类的对象。
通过合理使用通配符和泛型上下限,可以使泛型代码更加灵活、安全和易于维护。
🦜泛型支持的类型
在Java中,泛型是一种强大的特性,它允许在定义类、接口和方法时使用类型参数。然而,泛型有一个重要的限制:它不支持基本数据类型(如int、char、boolean
等),只能支持对象类型(即引用数据类型,如Integer、String、List
等)。这是因为泛型的实现机制依赖于Java的类型系统,而基本数据类型并不属于对象类型。
⚙️泛型擦除
-
泛型在Java中的实现是通过一种称为“泛型擦除”的机制来完成的。泛型擦除意味着泛型信息只在编译阶段有效,而在编译后的字节码中,所有的泛型类型参数都会被替换为它们的上界(通常是Object类型)。因此,在运行时,泛型类型信息是不可用的。例如,
List<String>
在编译后会被擦除为List<Object>
,这意味着在运行时,你无法通过反射等方式获取到List
中元素的类型信息。 -
这种设计的主要目的是为了保持与
Java
早期版本的兼容性,因为泛型是在Java 5
中引入的,而在此之前,Java
的集合类都是使用Object
类型来存储元素的。
💯包装类
由于泛型不支持基本数据类型,Java提供了包装类(Wrapper Classes)来将基本数据类型包装成对象类型。包装类位于java.lang
包中,每个基本数据类型都有对应的包装类,例如Integer
对应int
,Double
对应double
,Boolean
对应boolean
等。
基本数据类型 | 包装类 | 默认值 | 字节数 | 最小值 | 最大值 |
---|---|---|---|---|---|
byte | Byte | 0 | 1 | -128 | 127 |
short | Short | 0 | 2 | -32,768 | 32,767 |
int | Integer | 0 | 4 | -2,147,483,648 | 2,147,483,647 |
long | Long | 0L | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
float | Float | 0.0F | 4 | 1.4E-45 | 3.4028235E38 |
double | Double | 0.0D | 8 | 4.9E-324 | 1.7976931348623157E308 |
char | Character | '\u0000' | 2 | '\u0000' (0) | '\uffff' (65,535) |
boolean | Boolean | false | - | false | true |
⚙️自动装箱与自动拆箱
Java 5
引入了自动装箱(Autoboxing
)和自动拆箱(Unboxing
)机制,使得基本数据类型和它们的包装类之间的转换更加方便。
-
自动装箱:当需要将一个基本数据类型赋值给一个包装类对象时,Java会自动将基本数据类型转换为对应的包装类对象。例如:
Integer i = 10; // 自动装箱,int 10 被转换为 Integer 对象
-
自动拆箱:当需要将一个包装类对象赋值给一个基本数据类型变量时,Java会自动将包装类对象转换为对应的基本数据类型。例如:
int j = i; // 自动拆箱,Integer 对象 i 被转换为 int 类型
⚙️常用功能
包装类不仅提供了基本数据类型与对象类型之间的转换功能,还提供了一些常用的实用方法:
-
将基本数据类型转换为字符串:每个包装类都提供了
toString()
方法,可以将基本数据类型的数据转换为字符串。例如:int num = 123; String str = Integer.toString(num); // 将 int 转换为字符串 "123"
-
将字符串转换为基本数据类型:包装类还提供了
parseXxx()
方法,可以将字符串类型的数值转换为对应的基本数据类型。例如:String str = "456"; int num = Integer.parseInt(str); // 将字符串 "456" 转换为 int 类型
-
其他实用方法:包装类还提供了一些其他实用方法,如
valueOf()
、compareTo()
、equals()
等,用于处理基本数据类型的比较、转换等操作。
⚙️应用场景
包装类在Java编程中有着广泛的应用,特别是在需要使用泛型或集合类时。例如,当你需要在List
中存储整数时,由于泛型不支持基本数据类型,你必须使用Integer
包装类:
List<Integer> numbers = new ArrayList<>();
numbers.add(10); // 自动装箱,int 10 被转换为 Integer 对象
int firstNumber = numbers.get(0); // 自动拆箱,Integer 对象被转换为 int 类型
此外,包装类在处理数据库操作、网络通信等场景中也经常被使用,因为这些场景通常需要将数据以对象的形式进行传递和处理。
通过使用包装类,Java
程序员可以更加灵活地处理基本数据类型和对象类型之间的转换,从而编写出更加健壮和可维护的代码。
相关文章:
深入解析Java泛型:从定义到实战应用
目录 🚀前言🤔泛型的定义🐧泛型类🌟泛型接口✍️泛型方法、通配符、上下限💯泛型方法💯 通配符与上下限⚙️通配符(Wildcard)⚙️泛型上下限⚙️应用场景 🦜泛型支持的类…...
数据结构:绪论之时间复杂度与空间复杂度
作者主页 失踪人口回归,陆续回三中。 开辟文章新专栏——数据结构,恳请各位大佬批评指正! 文章目录 作者主页 数据结构的基本知识数据:数据元素:数据对象:数据类型:数据结构:逻辑结…...
ARM Linux远程调试
准备 虚拟机既能ping通开发板,又能ping通外网,还要能ping通Windows主机(如果你有上位机通信(tftp、vsftp、ssh)的需求) VMware 添加网络适配器2用作桥接网卡,原有的网络适配器保持为NAT模式 打开虚拟网络编辑器,配置VMnet0为桥接模式,外部连接设置为Realtek PCIe G…...
PostgreSQL 14 pacemaker 高可用集群
核心架构原理 集群组成(典型三节点结构): [Node1] PostgreSQL Pacemaker Corosync pcsd [Node2] PostgreSQL Pacemaker Corosync pcsd [Node3] PostgreSQL Pacemaker Corosync pcsd ↕ ↕ ↕ ← Corosync 多…...
英语学习5.21
Far from sensible 表示“很不明智的”、“离明智相去甚远”。这是一个固定表达,结构是 far from adj.,意思是“根本不……”,常见例子: far from perfect(远非完美) far from acceptable(远…...
实现了TCP的单向通信
1. 客户端代码:Client.java package com.xie.javase.net1;import java.io.*; import java.net.*;public class Client {public static void main(String[] args) {Socket socket = null;BufferedWriter bw = null;try {// 1. 获取本机IP地址对象InetAddress localHost = Inet…...
华为云Flexus+DeepSeek征文 | 基于ModelArts Studio和Cherry Studio快速构建午餐管家助手
目录 一、前言 二、ModelArts Studio(MaaS)介绍与应用场景 2.1ModelArts Studio(MaaS)介绍 2.2 ModelArts Studio(MaaS)使用场景 2.3 开通MaaS服务 2.4 开通DeepSeek-V3商用服务 三、Cherry Studio简介和安…...
Spring AI 1.0 GA 正式发布
Spring AI 1.0 GA 正式发布 快速入门核心特性1. **增强型 LLM(大语言模型)**2. **MCP 协议支持**3. **RAG(检索增强生成)**4. **评估与监控**5. **智能代理(Agents)** 下一步计划 VMware Spring 团队 Mark …...
【计算机网络 第8版】谢希仁编著 第五章运输层 题型总结1 UDP和TCP报文格式
UDP报文 5.13 这一题可以先问AI: 但是问了AI,肯定想知道:这些知识点在书上哪里?怎么这么难找? 没错这题主要是靠IP地址,所以应该在第四章。 P136 P137 省流: 1.UDP的首部格式是8个字节&…...
华为云Flexus+DeepSeek征文 | 基于ModelArts Studio 的 DeepSeek API 实现行业深度搜索和分析
目录 一、前言 二、ModelArts Studio(MaaS)介绍与应用场景 2.1ModelArts Studio(MaaS)介绍 2.2 ModelArts Studio(MaaS)使用场景 2.3 开通MaaS服务 2.4 开通DeepSeek-V3商用服务 三、Deep Research简介和安…...
计算机网络——Session、Cookie 和 Token
在 Web 开发中,Session、Cookie 和 Token 是实现用户会话管理和身份验证的核心技术。它们既有联系,也有明显区别。以下从定义、原理、联系、区别和应用场景等方面详细解析。 一、基本定义与原理 1. Cookie 定义: 是浏览器存储在客户端的小…...
AAOS系列之----简介
一文讲透AAOS架构,点到为止不藏私 📌 AAOS是以一个系统APP的方式集成进安卓系统中,通过在SystemServer中启动其中的Service 📚 1. CarServcie 是如何被启动的? AAOS中的核心服务是CarService,其描述如下: 代码路径如下: android1…...
CTF签到题
1.题目:VmxkMFUxVXhTbkpOU0dSVVZrWktWRlpyVm5kU2JGSnlWbXhhYkdKRlduaFpWVlpoVkcxRmQwMUlhRlpXTTFKUVZXdFZlR05zWkZsaVJrcG9ZbGRvUmxaR1dsZFVhekZIVW14V1lWSlZOVkJVVlZaV1RVWldjbFZzVGxOTlJGWlhWa1pvZDFWdFJuTlRhMVpXVm14YVIxUlVSa2RPYkVweVYyeENWMVpVUlhwV1ZtUjNVMj…...
甲骨文云服务器适合做网站吗
甲骨文云服务器:建网站,它到底是不是“神队友”? 各位想在网上“立门户”的老板、个人创作者们,大家好!现在这年头,没个自己的网站,那感觉就像做生意没个店面、搞创作没个画廊一样,…...
性能测试场景题
题目 针对618,双十一活动的,一个电商系统,如何设计压力测试方案? 参考答案 针对618、双十一等高并发电商大促活动,压力测试方案需覆盖全链路性能瓶颈识别、容量评估和极端场景验证。以下为详细设计框架,…...
数智读书笔记系列033《软件设计的哲学(第2版)》:复杂性管理的艺术
《软件设计的哲学》(A Philosophy of Software Design)书籍简介 作者:约翰奥斯特豪特(John Ousterhout) 出版信息:第2版于2024年11月由人民邮电出版社出版,中文版由茹炳晟、王海鹏翻译。 作者背景 奥斯特豪特是斯坦福大学计算机科学教授、美国国家工程院院士,拥有丰…...
MySQL与Redis数据同步实践与优化
一、数据不一致的典型场景 写入顺序不一致 当业务逻辑需要同时更新数据库和缓存时,若出现"先删缓存后更新DB"或"先更新DB后删缓存"操作失败,会导致缓存与数据库数据版本不一致。 并发读写冲突 高并发场景下可能出现: …...
HarmonyOS 鸿蒙应用开发基础:EventHub,优雅解决跨组件通信难题
EventHub是鸿蒙开发中用于线程内通信的事件中心模块,基于发布订阅模式实现组件间的高效通信。它完美解决了传统回调方式在多层嵌套场景下的痛点,使得组件间的通信更加灵活和易于管理。 核心特性 事件中心机制:通过事件名进行通信,…...
如何解决鸿蒙应用闪退问题
如何解决鸿蒙应用闪退问题 本文是一份面向 ArkTS/JavaScript/C 多语言开发者的综合性排查与优化手册,覆盖 HarmonyOS/OpenHarmony 5.x 时代 常见闪退根因、诊断流程、调试技巧、CI 监控及线上防护方案,力争帮你把 Crash 数量降到 …...
人民日报社主管媒体深度聚焦珈和科技“遥感+AI”农险精准化突破:首创“四维数据贯通”模式 树行业转型新标杆
近日,由人民日报社主管的《中国城市报》对珈和科技与国寿财险湖南省分公司联合打造的农业保险数字化标杆项目进行了深度报道。 作为"遥感AI"技术在农业风险管理领域的创新实践者,珈和科技依托自主构建的覆盖“天-空-地-人”的全维度智慧农业技…...
(1)深度学习基础知识(八股)——常用名词解释
1. FC FC全称是Fully Connect全连接层,也被称为Linear Layer线性层。 它的核心是:每个输入神经元 与 每个输出神经元 都要通过权重连接,适用于将输入特征映射到高维或者低维空间。 数学表示 对于一个输入向量,FC的计算方式是: 是…...
深度学习零基础入门(2)-实战1:激活函数、前向传播和反向传播
一、激活函数 激活函数的作用 激活函数在神经网络中起着至关重要的作用,主要用于引入非线性因素,使得神经网络能够学习和模拟复杂的非线性关系。如果没有激活函数,无论神经网络有多少层,最终都只能表示线性变换,无法…...
LeRobot的机器人控制系统(下)
目的和范围 机器人控制系统是 LeRobot 框架的核心组件,提供用于操作、标定和记录物理机器人数据的接口。该系统支持远程操作、记录演示数据集、重放动作以及在真实机器人上运行已训练的策略。它充当用户、物理机器人硬件和训练流程之间的桥梁。本文介绍机器人控制系…...
Linux Docker安装【再探完美版教程】
Dokcer安装 文章目录 Dokcer安装安装前准备安装前设置yum网络镜像源【重要】查看服务器系统版本以及内核版本查看服务器内核版本安装依赖包:设置阿里云docker-ce镜像源 安装Dockerdocker-ce安装启动docker并设置开机自启配置阿里云镜像测试: Docker概念&…...
Java-根据路径获取JSON字符串的value值
实现内容 入参: 一串json的字符串,根据传入的字符串路径和想要获取此路径下的key值 出参: 此路径下的key的value值 实现原理 采用一层一层获取的方式,判断第一层并且获取第一层的数据,放入到数组中,将该数组放到下一次循环,再获取下一层的数据 实现方法 /*** 根据路径获取…...
【小呆的随机振动力学笔记】随机过程基础【一】
文章目录 1. 随机过程基础1.1 随机过程的概率分布1.2 随机过程的统计特征1.3 平稳随机过程1.4 遍历过程平稳随机过程 1. 随机过程基础 \quad\quad 上一节,我们主要回顾了概率论知识,接下来我们来回顾随机过程基础理论(或者叫随机场࿰…...
Java 内存模型中的读、写屏障
目录 1. 基本概念 1.1、读屏障 (Load Barrier) 1.2、写屏障 (Store Barrier) 1.3、咖啡店例子 2. 常见内存屏障 2.1、volatile 1、缓存可见性 2、指令重排序 3、内存屏障 2.2、final 2.3、synchronized关键字 2.4、手动内存屏障 3、不同屏障类型对比 4、实…...
AI 多 Agent 图形化开发深度解析:iVX IDE 与主流产品技术架构对比研究
随着人工智能技术的发展,软件开发正从手工编码向智能辅助开发演进。在 AI 多 Agent 图形化开发领域,iVX IDE 与 GitHub Copilot、Tabnine、CodeGeeX 等主流产品代表了不同的技术路线。本文从技术架构、功能实现、性能表现、生态建设等维度,对…...
微服务中的 AKF 拆分原则:构建可扩展系统的核心方法论
在数字化浪潮的推动下,互联网应用规模呈指数级增长,传统单体架构逐渐暴露出难以扩展、维护成本高等问题,微服务架构应运而生并成为企业应对复杂业务场景的主流选择。然而,随着业务的不断扩张和用户量的持续增加,如何确…...
MySQL迁移SSL报错
文章记录了之前tdsql迁移IDC过程中遇到的小问题 环境 xboss业务: tdsql未启用SSL, IDC-mysql启用了SSL: 原因分析 1, 迁移前: 因为tdsql未启用ssl, 且应用未显式配置ssl JDBC默认使用非SSL连接,因此可以正…...
Mysql的主从同步
一主一从 IP地址主机名master节点192.168.10.200mysql200slave节点192.168.10.201mysql201 master节点操作 配置文件增加两行参数 [rootmysql200 ~]# tail -n 2 /etc/my.cnf.d/mysql-server.cnf log-bin/mylog/mysql200 server-id200 [rootmysql200 ~]# systemctl restart …...
云原生微服务的前世今生
目录 Part1 时代背景 Part2 何为微服务? Part3 微服务出现的意义 Part4 企业应用 京东:国内电商领域的微服务实践 阿里:微服务在复杂业务场景中的应用 Part5 Istio:服务网格时代的微服务治理中枢 Istio 的技术定位…...
Python之虚拟环境
文章目录 Python之虚拟环境虚拟环境核心概念为什么需要虚拟环境?虚拟环境注意事项 创建虚拟环境使用 venv (Python 3.3 内置)使用 virtualenv (第三方工具,支持Python 2/3)与 venv创建方式的区别Python 版本支持功能与兼容性依赖关系和性能命令行工具创建…...
【Java高阶面经:数据库篇】15. 零停机数据迁移:从双写到一致性校验
一、迁移架构设计:双写+增量同步的三层防护模型 1.1 核心架构流程图 #mermaid-svg-MfnakvBNrtFScrMe {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MfnakvBNrtFScrMe .error-icon{fill:#552222;}#mermaid-svg-Mf…...
车载以太网网络测试-27【SOME/IP-SD简述】
文章目录 1 摘要2 SOME/IP-SD协议介绍2.1 定义与作用2.2 SOMEIP/SD协议通俗易懂的理解2.2.1 SOMEIP/SD协议是什么?2.2.2 通信流程(简化)2.2.3 车载功能示例2.2.4 类比理解 2.3 SOME/IP-SD报文结构2.3.1 Flags2.3.1.1 REBOOT (Bit 7)2.3.1.2 U…...
Ubuntu 22.04上升级Node.js版本
在Ubuntu 22.04上升级Node.js版本有几种方法,推荐使用NVM(Node Version Manager),因为它可以让你轻松管理多个Node.js版本。 方法1: 使用NVM(推荐) 1. 安装NVM # 下载并安装NVM curl -o- https://raw.gi…...
软件设计师“面向对象设计”真题考点分析——求三连
一、考点分值占比与趋势分析 综合知识历年考察统计 年份考题数分值占比考察重点2018334%继承类型、设计原则2019445.3%多态实现、类关系2020556.7%设计模式应用、接口隔离2021334%消息通信、封装特性2022668%开闭原则、组合模式2023556.7%模板方法、适配器模式2024445.3%单一…...
flutter dart 函数语法
以下是 Dart 语言中函数语法的 详细实例说明,涵盖了所有常用写法 基本语法参数类型(必选、可选、命名、默认值)匿名函数、箭头函数高阶函数(函数作为参数/返回值)异步函数(async / await) 1. …...
鸿蒙Flutter实战:24-混合开发详解-4-初始化Flutter
概述 将 Flutter 模块添加至宿主鸿蒙项目中后,接下需要实现页面跳转、消息通信等功能,本文重点介绍如何初始化 Flutter。 项目配置 添加依赖 编辑 ohos_app/oh-package.json 文件 如果通过 Har 包方式引入 Flutter 模块,则需要添加如下内…...
微信小程序之Promise-Promise初始用
我们来尝试使用Promise。 1、需求,做个抽奖的按钮, 抽奖规则: 30%的几率中奖,中奖会提示恭喜恭喜,奖品为10万 RMB 劳斯莱斯优惠券,没中奖会提示再接再厉。 2、先搭界面: <view class&qu…...
工业 / 农业 / AR 场景怎么选?Stereolabs ZED 双目3D相机型号对比与选型建议
Stereolabs ZED 相机系列为视觉感知领域提供了多种创新解决方案,适用于不同应用场景。选择合适的 ZED 相机型号,需综合考虑分辨率、深度感知范围、接口类型等因素。 Stereolabs ZED 相机产品系列概览 ZED:首款立体视觉相机,专为高…...
(Git) 稀疏检出(Sparse Checkout) 拉取指定文件
文章目录 🏭作用🏭指令总览👷core.sparseCheckout👷sparse-checkout 文件 🏭实例演示⭐END🌟交流方式 🏭作用 类似于 .gitignore 进行文件的规则匹配。 一般在需要拉取大型项目指定的某些文件…...
Nginx 部署前端项目dist文件到局域网然后ngrok部署到公网
①项目里面 npm run build 生成的dist文件 ②下载nginx: download 将dist文件夹放入html文件夹中 ③conf修改配置 里面有nginx.conf 文本修改④在此目录下 打开cmd 输入 start nginx.exe 启动代理 ⑤http://localhost:90/index.html即可或者域名换成你的ip地址也可以 …...
【sylar-webserver】9 网络模块
目录 Address 类图 知识点 常用结构体 常用函数 Socket 类图 主要功能 初始化 socket 流程: ByteArray 知识点 zigzag 算法 TLV 编码结构 Stream 类图 Stream 流结构,提供字节流读写接口 SocketStream TcpServer 类图 主要功能 Address…...
野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(四)安装RKNN Toolkit2
RKNN Toolkit2是用来将onnx模型转成rknn专用模型,并可通过RKNN Toolkit Lite2或者RKNPU调用NPU进行加速计算的工具。 一开始我安装很多次都无法成功安装。后来跟售后技术对接,必须是PC平台的Linux环境才可以。我的电脑是windows,所以我需要用…...
第六部分:阶段项目 5:构建 NestJS RESTful API 服务器
现在,是时候将你学到的 NestJS 知识付诸实践,构建一个简单的 RESTful API 服务器了。我们将基于第四阶段的项目(博客文章 API 或任务管理 API),使用 NestJS 的方式重新实现它。 选择以下一个项目: 项目选…...
【工作流】Fastgpt配置豆包模型-火山引擎
V4.9.7 Fastgpt现在不通过oneapi 来配置模型和渠道了, 可以直接在页面进行设置 首先在账号- 模型提供商里面 填入豆包的信息: 渠道名随便填,厂商选豆包, 然后选3个模型,如图所示 如果没有填入模型映射的话是没办法 …...
vite搭建vue3项目及相关配置
1.npm create vite 设置你的项目名,选择框架,选择语言 我此处选的为Vue typescripe 2.按照命令去执行 cd vite-vue3-app 进入项目文件,npm install 安装依赖,npm run dev 运行项目 此处由于node、npm版本导致报错问题如图 在…...
web实验(2)
实验1 搭建nginxssl的加密认证web服务器 第一步:准备工作 # 恢复快照 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootserver ~]# systemctl disable firewalld [rootserver ~]# yum install nginx mod_ssl -y [r…...
数字孪生技术如何重塑能源产业?
近年来,全球能源行业正步入一个前所未有的转型期。一方面,“双碳”目标驱动能源结构向低碳化、清洁化发展;另一方面,新能源比例快速上升,给传统电力系统带来巨大的不确定性。与此同时,数字化浪潮也席卷能源…...