Java基本数据类型、抽象类和接口、枚举、时间类、String类全面介绍
JAVA基本数据类型知识总结
基本数据类型(Primitive Types)
类型 | 占用字节 | 默认值 | 范围 | 示例 |
---|---|---|---|---|
byte | 1 | 0 | -128 ~ 127 | byte a = 100; |
short | 2 | 0 | -32,768 ~ 32,767 | short b = 2000; |
int | 4 | 0 | -2³¹ ~ 2³¹-1 | int c = 100000; |
long | 8 | 0L | -2⁶³ ~ 2⁶³-1 | long d = 10000000000L; |
float | 4 | 0.0f | ~7位小数 | float e = 3.14f; |
double | 8 | 0.0 | ~15位小数 | double f = 3.1415926; |
char | 2 | '\u0000' | 0 ~ 65535 | char g = 'A'; |
boolean | 1bit(实际依赖JVM) | false | true / false | boolean h = true; |
引用数据类型(Reference Types)
-
类(Class)
-
接口(Interface)
-
数组(Array)
-
枚举(Enum)
-
字符串(String)
数据类型之间的转换
自动类型转换(隐式转换)
小范围 → 大范围(安全)
Java 会自动完成的转换:
byte → short → int → long → float → doublechar ↗
示例:
int a = 10;
long b = a; // int自动转为long
double c = b; // long自动转为double
强制类型转换(显式转换)
大范围 → 小范围(可能丢失精度或溢出)
语法:目标类型 变量名 = (目标类型) 原始值;
示例:
double d = 3.14;
int i = (int) d; // 强制类型转换,结果为3(小数部分丢失)
long l = 10000000000L;
int i2 = (int) l; // 强制转换,有可能溢出
代码展示:
package com.hyh;
/** 基本数据类型转换*/
public class BaseData {private final static int a = 10; // 整型 4个字节private final static long b = 100L; // 长整型 8个字节private final static short c = 5; // 短整型 2个字节private final static byte d = 1; // 字节型 1个字节private final static char e = 'A'; // 字符型 2个字节private final static boolean f = true; // 布尔型 1个字节(Java中布尔类型的大小并不固定,通常为1字节,但在实际内存中可能会有不同的实现方式)private final static float g = 30.5f; // 单精度浮点型 4个字节private final static double h = 20.5; // 双精度浮点型 8个字节
public static void main(String[] args) {//隐示转换 小范围 -> 大范围 byte → short → int → long → float → doublelong x = a;//显示转换 强制类型转换int y = (int) b; // long 转 int//包装数据类型转换 除了包装数据类型以外 其它类型不能直接转换 需借助包装类的构造方法或静态方法Integer intValue = 100; // int 转 Integerint z = intValue; // Integer 转 int
//使用引用类型的方法进行转换String str = String.valueOf(a); // int 转 Stringint num = Integer.parseInt(str); // String 转 int// 输出结果System.out.println("隐式转换后的值: " + x);System.out.println("显示转换后的值: " + y);System.out.println("包装类型转换后的值: " + intValue);System.out.println("转换后的字符串: " + str);System.out.println("从字符串转换回整数: " + num);// 输出基本数据类型的值System.out.println("整型 a: " + a);System.out.println("长整型 b: " + b);System.out.println("短整型 c: " + c);System.out.println("字节型 d: " + d);System.out.println("字符型 e: " + e);System.out.println("布尔型 f: " + f);System.out.println("单精度浮点型 g: " + g);System.out.println("双精度浮点型 h: " + h);}
}
抽象类和接口
抽象类的定义
抽象类是使用 abstract
关键字修饰的类,用于被继承,不能被实例化,通常作为父类使用。
特点:
不能创建抽象类的对象
可以包含:抽象方法 + 普通方法 + 构造方法 + 成员变量
必须由子类继承并实现其全部抽象方法,否则子类也必须是抽象类
接口的定义
接口是一种特殊的类,用于定义一组“规范”或“能力”,使用 interface
关键字定义。
-
接口中默认所有方法是
public abstract
(可省略) -
不能包含构造方法
-
从 Java 8 开始,可以包含:
-
默认方法(default)
-
静态方法(static)
-
-
从 Java 9 开始,可以有 私有方法(private)
抽象类和接口的区别
抽象类 vs 接口的语法规则对比
特性 | 抽象类 | 接口 |
---|---|---|
关键字 | abstract class | interface |
是否可以有抽象方法 | ✅ | ✅ |
是否可以有普通方法 | ✅ | ✅(Java 8 开始用 default ) |
是否可以有构造函数 | ✅ | ❌ |
是否可以有成员变量 | ✅(可以任意类型) | ✅(只能是 public static final 常量) |
多继承支持 | ❌(单继承) | ✅(多实现) |
是否可以被实例化 | ❌ | ❌ |
修饰符 | 类用 abstract ,方法可加 public/protected 等 | 接口默认 public ,方法默认 public abstract |
代码
/** 抽象类*/
public abstract class Animal {//抽象方法public abstract void run();
//普通方法 可以存在普通方法public void speak(){};
//构造方法public Animal(){};
//静态成员变量public static Integer a = 10;
}
/** 接口 多实现*/
public interface Flyable {//成员变量public static int a = 10;
//抽象方法 默认含有 public和abstract修饰符void run();
//普通方法 含有方法体default void speak(){};
//静态方法static void fly() {System.out.println("Flying...");}
}
JAVA常用时间类
旧版时间类(java.util
和 java.text
包)
这些类在 Java 8 之前使用广泛,但存在线程不安全、设计混乱的问题。
类名 | 说明 |
---|---|
java.util.Date | 表示某一个时间点(不包含时区) |
java.util.Calendar | 更加灵活的日期时间类(可对年月日等操作) |
java.text.SimpleDateFormat | 用于格式化和解析日期字符串 |
System.currentTimeMillis() | 返回当前时间戳(毫秒值) |
//JAVA 8之前
Date date = new Date();
System.out.println("当前时间(JAVA 8之前): " +
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf.format(date);
System.out.println("格式化后的时间(JAVA 8之前): " + f
// 当前时间戳
long timeMillis = System.currentTimeMillis();
System.out.println("当前时间戳(毫秒): " + timeM
//时间戳转换为日期
Date dateFromMillis = new Date(timeMillis);
System.out.println("时间戳转换为日期(JAVA 8之前): " + sdf.format(dateFromMillis));
Java 8 新时间 API(推荐,java.time
包)
Java 8 引入了全新的时间 API,灵感来自 Joda-Time,属于现代化设计,线程安全且易用。
类名 | 说明 |
---|---|
LocalDate | 表示日期(年-月-日),无时间 |
LocalTime | 表示时间(时:分:秒),无日期 |
LocalDateTime | 表示日期+时间,无时区 |
ZonedDateTime | 日期时间 + 时区 |
Instant | 时间戳,代表某个瞬时点 |
Period | 用于计算日期间隔(年月日) |
Duration | 用于计算时间间隔(时分秒) |
DateTimeFormatter | 用于格式化/解析日期时间 |
ChronoUnit | 提供通用单位,如 DAYS 、MONTHS |
//JAVA 8之后
LocalDate localDate = LocalDate.now();//只有日期
LocalTime localTime = LocalTime.now();//只有时间
LocalDateTime localDateTime = LocalDateTime.now();//日期+时间
Instant instant = Instant.now();
System.out.println("当前日期(JAVA 8之后)localDate: " + localDate);
System.out.println("当前时间(JAVA 8之后)localTime: " + localTime);
System.out.println("当前日期时间(JAVA 8之后)localDateTime: " + localDateTime);
System.out.println("当前时间戳(JAVA 8之后)instant: " + in
//格式化时间
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = localDateTime.format(dtf);
System.out.println("格式化后的时间(JAVA 8之后) DateTimeFormatter: " + formattedDat
//日期加减
LocalDate localDate1 = LocalDate.now().plusDays(1);// 加一天
LocalDate localDate2 = LocalDate.now().minusDays(1); // 减一天
System.out.println("加一天后的日期(JAVA 8之后): " + localDate1);
System.out.println("减一天后的日期(JAVA 8之后): " + localDate2);
场景推荐
场景 | 建议类 |
---|---|
获取当前日期 | LocalDate.now() |
获取当前时间 | LocalTime.now() |
获取当前时间戳 | Instant.now() 或 System.currentTimeMillis() |
时间加减 | LocalDateTime.plusX() |
时间间隔 | Period (日/月/年)、Duration (时/分/秒) |
格式化/解析 | DateTimeFormatter |
与数据库交互 | java.sql.Timestamp ← 可用 LocalDateTime 替代 |
String常用类
在 Java 中,String
是最常用也是最重要的类之一,它属于 java.lang
包,不需要手动导入。String
提供了大量用于字符串操作的方法,是开发中处理文本的核心工具。
String 的基本特性
特性 | 说明 |
---|---|
不可变性 | 一旦创建,内容不可更改(底层使用 final char[] 实现) |
final 类 | 不能被继承 |
常量池优化 | 字符串字面量存在字符串常量池中,节省内存 |
支持重载的操作符 | 如:+ 用于拼接字符串 |
实现了 Serializable、Comparable、CharSequence 接口 | 支持序列化、比较和字符访问等功能 |
String 的常用构造方法
//字符串的创建
String s1 = "hello"; // 直接字面量(推荐,进入字符串常量池)
String s2 = new String("hello"); // 创建新对象(堆中新的 String 实例)
char[] chars = {'h', 'e', 'l', 'l', 'o'};
String s3 = new String(chars); // 通过字符数组构造
byte[] bytes = {97, 98, 99}; //Ascii码对应的字节数组
String s4 = new String(bytes); // 通过字节数组构造
创建方式对比
创建方式 | 示例 | 存储位置 | 是否放入常量池 | 是否新建对象 | 对象可重用性 | 比较方式 == 是否为 true |
---|---|---|---|---|---|---|
字面量创建 | String s1 = "hello"; | 字符串常量池 | ✅ 是 | ❌ 否(已存在则重用) | ✅ 高 | ✅ 如果常量池中已有 |
new 关键字创建 | String s2 = new String("hello"); | 堆内存 + 常量池 | ✅ 是(底层还是会引用常量池中的字符数组) | ✅ 是(总是新建堆对象) | ❌ | ❌ 与字面量对象比较为 false |
char数组构造 | String s3 = new String(new char[]{'h','e','l','l','o'}); | 堆内存 | ❌ 否 | ✅ 是 | ❌ | ❌ |
byte数组构造 | String s4 = new String(new byte[]{97,98}); | 堆内存 | ❌ 否 | ✅ 是 | ❌ | ❌ |
intern 方法 | String s5 = s2.intern(); | 常量池 | ✅ 是 | ❌ 复用常量池中的对象 | ✅ | ✅ 若常量池中已有相同字面量 |
String 常用方法分类详解
🔎 基本判断类
方法 | 示例 | 说明 |
---|---|---|
isEmpty() | "".isEmpty() | 长度为0则返回true |
isBlank() | " ".isBlank() | Java 11+,判断空格或空字符串 |
equals(String) | str.equals("abc") | 判断内容是否相同 |
equalsIgnoreCase(String) | 忽略大小写比较 |
boolean empty = s1.isEmpty();
boolean equals = s1.equals(s2);// 比较内容是否相同
boolean equalsIgnoreCase = s1.equalsIgnoreCase(s2);
System.out.println("字符串s1是否为空: " + empty);
System.out.println("字符串s1和s2内容是否相同: " + equals);
System.out.println("字符串s1和s2内容是否相同(忽略大小写): " + equalsIgnoreCase);
📐 获取信息类
方法 | 示例 | 说明 |
---|---|---|
length() | str.length() | 返回字符串长度 |
charAt(int) | str.charAt(0) | 获取指定索引的字符 |
indexOf(String) | str.indexOf("a") | 获取第一次出现的下标 |
lastIndexOf(String) | 最后一次出现的下标 |
//获取信息方法
int length = s1.length();
char c = s1.charAt(0);// 获取第一个字符
int i = s1.indexOf("l");// 获取字符 'l' 的索引位置
int i1 = s1.lastIndexOf("l");// 获取字符 'l' 的最后一个索引位置
System.out.println("字符串s1的长度: " + length);
System.out.println("字符串s1的第一个字符: " + c);
System.out.println("字符 'l' 在字符串s1中的第一次出现位置: " + i);
System.out.println("字符 'l' 在字符串s1中的最后一次出现位置: " + i1);
✂️ 字符串截取与分割
方法 | 示例 | 说明 |
---|---|---|
substring(begin) | str.substring(5) | 截取从指定位置到末尾 |
substring(begin, end) | str.substring(0, 5) | 左闭右开区间 |
split(String) | str.split(",") | 根据正则表达式拆分成数组 |
//字符串的切割String substring = s1.substring(2);// 从索引2开始到末尾String substring1 = s1.substring(1, 3); // 从索引1到索引3(不包括3)String[] ls = s1.split("l");// 按照字符 'l' 切割字符串System.out.println("字符串s1从索引2开始的子字符串: " + substring);System.out.println("字符串s1从索引1到索引3的子字符串: " + substring1);System.out.println("字符串s1按照字符 'l' 切割后的结果: " + ls.length);
⚠️ 注意:
split("\\|")
要转义|
,它在正则中是特殊字符。
🔁 字符串替换与匹配
方法 | 示例 | 说明 |
---|---|---|
replace(old, new) | "a-b".replace("-", ":") | 替换字符或字符串 |
replaceAll(regex, new) | 正则替换 | |
matches(regex) | "123".matches("\\d+") | 是否匹配正则表达式 |
contains(String) | str.contains("abc") | 是否包含子串 |
//字符串的替换与匹配String replace = s1.replace("l", "x");// 替换所有 'l' 为 'x'boolean he = s1.contains("he");// 检查字符串是否包含 "he"boolean startsWith = s1.startsWith("he");// 检查字符串是否以 "he" 开头boolean endsWith = s1.endsWith("lo");// 检查字符串是否以 "lo" 结尾System.out.println("字符串s1替换 'l' 为 'x': " + replace);System.out.println("字符串s1是否包含 'he': " + he);System.out.println("字符串s1是否以 'he' 开头: " + startsWith);System.out.println("字符串s1是否以 'lo' 结尾: " + endsWith);
🎨 大小写、去空格等
方法 | 示例 | 说明 |
---|---|---|
toUpperCase() | 转大写 | |
toLowerCase() | 转小写 | |
trim() | 去除首尾空格 | |
strip() | Java 11+,支持 Unicode 空白字符的去除 | |
repeat(n) | Java 11+,重复字符串 |
//大小写 转空格String upperCase = s1.toUpperCase();// 转为大写String lowerCase = upperCase.toLowerCase();// 转为小写String trim = s1.trim(); // 去除首尾空格System.out.println("字符串s1转为大写: " + upperCase);System.out.println("字符串s1转为小写: " + lowerCase);System.out.println("字符串s1去除首尾空格: " + trim);
StringBuilder 与 StringBuffer
类名 | 可变? | 线程安全? | 速度 |
---|---|---|---|
String | 不可变 | 安全 | 慢(频繁拼接时效率低) |
StringBuilder | 可变 | ❌ 不安全 | 快(推荐单线程使用) |
StringBuffer | 可变 | ✅ 安全 | 稍慢(适用于多线程) |
建议:频繁拼接字符串用 StringBuilder
,例如拼接10000个字符串。
StringBuffer sbf = new StringBuffer(s1);StringBuffer appendSbf = sbf.append("world!");
System.out.println("StringBuilder追加字符串: " + appendSbd);System.out.println("StringBuffer追加字符串: " + appendSbf);
枚举类型
枚举的定义
枚举(enum
)是 Java 中一种特殊的类,用于表示一组固定的常量值。它是一种类型安全的替代方案,通常用于代替 public static final
常量。
基本语法
public enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
枚举的特点
特性 | 描述 |
---|---|
类型安全 | 不能传入无效值(编译时检查) |
可用于 switch | 简化代码逻辑 |
本质是类 | 枚举继承 java.lang.Enum |
可定义构造方法、字段、方法 | 和普通类一样扩展能力 |
默认 public static final | 所有枚举值都是常量对象 |
不可继承其他类 | 因为已继承自 Enum 类 |
枚举属性和构造方法
/** 用户状态枚举*/
public enum UserStatus {ACTIVE("Active", "1"),INACTIVE("Inactive", "2"),DELETED("Deleted", "3"),SUSPENDED("Suspended", "4");// 构造方法UserStatus(String status, String code) {this.status = status;this.code = code;}// 获取状态public String getStatus() {return status;}public String getCode() {return code;}private final String status;private final String code;
}
/** 枚举类型 星期*/
public enum DayEnum {MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY;
}
import com.hyh.enums.UserStatus;
import static com.hyh.enums.DayEnum.*;
public class EnumTest {public static void main(String[] args) {//简单枚举打印System.out.println("枚举类型的星期: "+ FRIDAY+ " "+ " "+THURSDAY+" "+" "+WEDNESDAY +" " +" "+ TUESDAY+" "+" "+MONDAY+" "+" "+SUNDAY+" "+" "+SATURDAY);userStatusTest();}//用户状态枚举使用public static void userStatusTest() {System.out.println("用户状态: " + UserStatus.ACTIVE.getStatus() + ", 代码: " + UserStatus.ACTIVE.getCode());}
}
枚举和常量类的区别
特性 | 枚举 | static final 常量 |
---|---|---|
类型安全 | ✅ | ❌(可能误传) |
switch 支持 | ✅ | ❌ |
可扩展字段 | ✅ | ❌ |
面向对象 | ✅ | ❌ |
表达意义 | 清晰 | 相对不清晰 |
相关文章:
Java基本数据类型、抽象类和接口、枚举、时间类、String类全面介绍
JAVA基本数据类型知识总结 基本数据类型(Primitive Types) 类型占用字节默认值范围示例byte10-128 ~ 127byte a 100;short20-32,768 ~ 32,767short b 2000;int40-2 ~ 2-1int c 100000;long80L-2⁶ ~ 2⁶-1long d 10000000000L;float40.0f~7位小数f…...

Spring Boot微服务架构(八):开发之初就引入APM工具监控
使用 APM(Application Performance Management)工具监控 Spring Boot 应用,可以帮助开发者实时追踪性能瓶颈、分析调用链路、监控资源使用情况,并快速定位故障。以下是详细的步骤和常用工具的选择指南: 一、常用 A…...

大规模真实场景 WiFi 感知基准数据集
一段话总结 本文提出CSI-Bench,首个大规模真实场景WiFi感知基准数据集,覆盖26个室内环境、35名用户、16种商用设备,包含461小时有效数据,支持跌倒检测、呼吸监测、定位、运动源识别等单任务及用户身份、活动、 proximity联合标注的多任务学习。通过标准化评估协议和基线模…...

Python实现HPSO-TVAC优化算法优化支持向量机SVC分类模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在当今数据驱动的时代,支持向量机(SVM)作为一种经典的机器学习算法,…...

ck-editor5的研究 (3):初步使用 CKEditor5 的事件系统和API
前言 在上一篇文章中—— ck-editor5的研究(2):对 CKEditor5 进行设计,并封装成一个可用的 vue 组件 ,我已经把 CKEditor5 封装成了一个通用vue组件,并且成功在nuxt中运行,并具备一定的通用性&…...
使用ReactNative加载HarmonyOS Svga动画
这是一款使用ReactNative 加载HarmonyOS Svga动画的播放器插件 三端Svga动画统一使用点击这里 版本:v1.1.5 react-native-ohos-svgaplayer [!TIP] Github 地址 安装与使用 npm npm install react-native-ohos-svgaplayer yarn yarn add react-native-ohos-svgaplayer下面…...

WPS快速排版
论文包括(按顺序):封面(含题目)、摘 要、关键词、Abstract(英文摘要)、Keywords、目录、正文、参考文献、在读期间发表的学术论文及研究成果,致 谢 题目(黑小一加粗&…...

Java实现命令行图书管理系统(附完整源码)
一、项目概述 本文将介绍如何使用Java实现一个基于命令行的图书管理系统。系统支持管理员和普通用户两种角色,提供图书的增删改查、借阅归还等功能。项目采用面向对象设计原则,代码结构清晰,适合Java初学者学习。 二、系统功能架构 graph T…...
使用Docker-NVIDIA-GPU开发配置:解决 Docker NVIDIA 运行时错误方法
问题描述 运行 Docker 命令时,系统提示 docker: Error response from daemon: unknown or invalid runtime name: nvidia,表明 Docker 无法识别 NVIDIA 运行时。这一错误通常出现在使用 --runtime=nvidia 和 --gpus 参数时,意味着 NVIDIA 容器运行时未正确安装或配置。NVID…...
如何更好的理解云计算和云原生?
本文介绍什么是云计算、什么是云原生、怎么理解云相关概念,如有问题,欢迎指正。 一、云计算 定义:云计算是通过互联网(即“云”)按需提供计算资源(如服务器、存储、数据库、网络、软件等)的服…...

【数据结构】顺序表和链表详解(上)
前言:上期我们介绍了算法的复杂度,知道的算法的重要性同时也了解到了评判一个算法的好与坏就去看他的复杂度(主要看时间复杂度),这一期我们就从顺序表和链表开始讲起。 文章目录 一,顺序表1,线性表2,顺序表…...

唯创WT2606B TFT显示灵动方案,重构电子锁人机互动界面,赋能智能门锁全场景交互!
在智能家居的浪潮中,门锁搭载显示屏已成为行业创新的焦点。据行业数据显示,2023年全球智能门锁出货量中,搭载显示屏的型号占比已突破40%,且年复合增长率达25%。而2024年国内智能门锁销量突破2200万套,预计2025年市场规…...
WPF的UI交互基石:数据绑定基础
数据绑定基础 1 Binding的Path属性2 ElementName绑定3 DataContext的作用4 绑定模式(Binding Mode)5 实用技巧集合1. 默认值处理2. 设计时数据3. 绑定验证4. 多级路径监控 6 常见错误排查 数据绑定是WPF的核心特性之一,它实现了界面ÿ…...

智能穿戴新标杆:SD NAND (贴片式SD卡)与 SOC 如何定义 AI 眼镜未来技术路径
目录 一、SD NAND:智能眼镜的“记忆中枢”突破空间限制的存储革命性能与可靠性的双重保障 二、SOC芯片:AI眼镜的“智慧大脑”从性能到能效的全面跃升多模态交互的底层支撑 三、SD NANDSOC:11>2的协同效应数据流水线的高效协同端侧…...
TCP/IP四层模型
TCP/IP四层模型 TCP/IP四层模型将网络通信分为四个层次: 1. 网络接口层:负责计算机与网络硬件间的数据传输,在物理网络上发送/接收数据帧(如以太网、Wi-Fi协议)。 2. 互联网层(网络层)&…...
深入浅出Nacos:微服务架构中的服务发现与配置管理利器
在当今的软件开发领域,随着微服务架构的普及,如何有效地进行服务治理和服务配置管理成为了开发者面临的重要挑战之一。阿里巴巴开源的 Nacos(Dynamic Naming and Configuration Service)应运而生,旨在帮助开发者更轻松地构建云原生应用。本文将详细介绍 Nacos 的核心功能、…...

node_modules包下载不下来
如果项目里面的package-lock.json有resolved ,就指向了包的下载来源,如果这个网址挂了,那npm i 就会一直卡着。而且,在终端去修改 npm的镜像是没有用的 解决办法是:把项目里面的 lock文件 .npmrc都删了 然后重新下载就可以了...

yolo个人深入理解
卷积层的理解,通过云端服务器训练模型,模型构建的重要性,针对极低像素的处理,模型训练召回率提高技巧,卷积层2,4,8,16,32的小模型与大模型的理解 一.关于backbone,neck,head深入理解 1,backbone的主要组成部分是sppf和conv,这是backbone的核心,其中yolov5和yolov8…...
Go语言中的布尔类型详解
布尔类型是Go语言中最基本的数据类型之一,用于表示逻辑值。下面详细介绍Go语言中的布尔类型。 1. 基本概念 Go语言中的布尔类型用关键字bool表示,它只有两个预定义的常量值: true // 真 false // 假 2. 声明布尔变量 var b1 bool …...
三方接口设计注意事项
前言 随着业务系统间集成需求的增加,三方接口设计已成为现代软件架构中的关键环节。一个设计良好的三方接口不仅能够提供稳定可靠的服务,还能确保数据安全、提升系统性能并支持业务的持续发展。 一、设计原则 1. 统一接口原则 三方接口设计应遵循统一…...

从0开始学vue:Element Plus详解
一、核心架构解析二、技术实现指南三、高级特性实现四、性能优化方案五、生态扩展方案六、调试与测试七、版本演进路线 Element Plus 是专为 Vue 3 设计的桌面端 UI 组件库,基于 Vue 3 的 Composition API 重构,在保持与 Element UI 兼容性的同时&#x…...

互联网向左,区块链向右
2008年,中本聪首次提出了比特币的设想,这打开了去中心化的大门。 比特币白皮书清晰的描述了去中心化支付的解决方案,并分别从以下几个方面阐述了他的理念: 一、由转账双方点对点的通讯,而不通过中心化的第三方…...

Python6.1打卡(day33)
DAY 33 MLP神经网络的训练 知识点回顾: 1.PyTorch和cuda的安装 2.查看显卡信息的命令行命令(cmd中使用) 3.cuda的检查 4.简单神经网络的流程 1.数据预处理(归一化、转换成张量) 2.模型的定义 …...
金融全业务场景的系统分层与微服务域架构切分
构建一个支持金融全业务场景的会员账户体系,是一项复杂但极具战略价值的工程。为了支持跨国收付款、供应链金融、信用账户、票据、银行卡发卡等场景,需要采用清晰的分层架构和服务划分策略,确保系统具备可扩展性、合规性、安全性和高可用性。…...
POJO、DTO和VO:Java应用中的三种关键对象详解
在软件开发特别是Java开发中,常常会遇到POJO、DTO和VO这三类对象。它们在不同场景下扮演着重要角色,有助于优化代码结构、增强系统安全性和提升性能。本文将全面解析这三者的定义、区别及常见使用场景,帮助你更好地理解和应用。 1. POJO&…...

论文阅读笔记——Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset
I3D 论文 UCF-101(13000多个视频)和 HMDB-51(7000多个视频)数据集过小,提出了 Kinetics 数据集,并且在其之上预训练之后能够迁移到其他小的数据集。 2DLSTM:使用2D CNN的好处是可以直接从 Ima…...
IDEA,Spring Boot,类路径
在 IDEA 中开发 Spring Boot 项目时,类路径 (classpath) 的正确配置至关重要,它直接影响项目的编译、运行和依赖管理。以下是关于此问题的关键知识点: IDEA 与 Spring Boot 类路径核心概念 类路径定义: 类路径是 JVM 用来搜索类文件 (.class…...

vscode编辑器怎么使用提高开发uVision 项目的效率,如何编译Keil MDK项目?
用vscode编译uVision 项目只需要安装一个Keil Assistant插件,即可用vscode开发“keil 项目”。极大提高开发速度! 1.安装Keil Assistant插件 安装插件成功之后,应该会让安装一个东西,点击安装即可 2.配置安装包路径 3.打开 uVi…...
Beta分布Dirichlet分布
目录 Beta分布Dirichlet分布Beta分布&Dirichlet分布从Dirichlet分布生成Beta样本Beta分布&Dirichlet分布应用 Beta分布 Beta分布是定义在区间 [ 0 , 1 ] [0, 1] [0,1]上的连续概率分布,通常用于模拟概率或比例的随机变量。Beta分布的概率密度函数ÿ…...

AR测量工具:精准测量,多功能集成
在日常生活中,我们常常会遇到需要测量物体长度、距离或角度的情况。无论是装修房屋、制作家具,还是进行户外活动,一个精准的测量工具都能大大提高我们的工作效率。AR测量工具就是这样一款集多种功能于一体的实用测量软件,它利用增…...