#Java-JDK7、8的时间相关类,包装类
1. JDK7-Date类
我们先来看时间的相关知识点
-
世界标准时间:
格林尼治时间/格林威治时间(Greenwich Mean Time)简称GMT。目前世界标准时间(UTC)已经替换为:原子钟 -
中国标准时间: 世界标准时间+8小时
时间单位换算:
-
1秒=1000毫秒
-
1毫秒=1000微秒
-
1微秒=1000纳秒
Date类
Date类是一个JDK写好的Javabean类,用来描述时间,精确到毫秒。
- 利用空参构造创建的对象,默认表示系统当前时间。
- 利用有参构造创建的对象,表示指定的时间。
我们给出一些常用的方法和构造方法:
- 构造方法
| 方法 | 说明 |
|---|---|
| public Date() | 创建Date对象,表示当前时间 |
| public Date(long date) | 创建Date对象,表示指定时间 |
- 成员方法
| 方法 | 说明 |
|---|---|
| public void setTime(long time) | 设置/修改毫秒值 |
| public long getTime() | 获取时间对象的毫秒值 |
代码示例:
Date d1 = new Date();
System.out.println(d1);
//表示一个指定的时间
Date d2 = new Date(1000L);
System.out.println(d2);
//设置一个时间
d2.setTime(1000L);//从时间原点开始设置
System.out.println(d2);
//获取当前时间的毫秒值
long time = d2.getTime();//返回值为long类型
System.out.println(time);
输出结果为:

这里给上其他例子:
- 获取时间原点一年以后的时间
- 随机创建两个时间对象并比较
代码示例:
System.out.println("--------------------");
//时间原点一年以后的时间
long time1 = 1000L * 60 * 60 * 24 * 365;
Date d3 = new Date(time1);
System.out.println(d3);
System.out.println("--------------------");
//获取两个随机时间
Random r = new Random();
Date d4 = new Date(Math.abs(r.nextInt()));
Date d5 = new Date(Math.abs(r.nextInt()));
System.out.println(d4);
System.out.println(d5);
//时间的比较使用gettime方法即可
2. JDK7-SimpleDateFormat类
这个类主要有两个作用:
- 把时间变成我们想要的格式
- 把字符串表示的时间变成Date对象
下面我们介绍构造方法和常用的成员方法:
#构造方法
public SimpleDateFormat() : 默认格式
public SimpleDateFormat(String pattern) : 指定格式
#成员方法
public final String format(Date date) : 格式化(日期对象->字符串)
public Date parse(String source) : 解析(字符串->日期对象)
public SimpleDateFormat(String pattern)中的pattern是这个类的一个成员变量,表述时间的格式。
- 如果使用空参构造那么格式化的时候就会是:年/月/日/ 上午/下午 时:分:秒
- 使用带参数构造方法:传入格式
传入的格式:(常用格式-来自黑马程序员)

代码示例:
//1.利用空参构造创建SimpleDateFormat对象,默认格式
SimpleDateFormat sdf1 = new SimpleDateFormat();
Date d1 = new Date(OL);
String str1 = sdf1.format(d1);|
System.out.println(str1);//1970/1/1 1:48:00
//2.利用带参构造创建SimpleDateFormat对象,指定格式
SimpleDateFormat sdf2 = new SimpleDateFormat(pattern:"yyyy|MM]ddHH:mm:ssEE");
String str2 = sdf2.format(d1);
System.out.println(str2);//1970年01月01日 08:00:00
parse(String source) : 字符串->时间对象
//1.定义一个字符串表示时间
String str = "2023-11-11 11:11:11";
//2.利用空参构造创建SimpleDateFormat对象
//细节:
//创建对象的格式要跟字符串的格式完全一致
SimpleDateFormat sdf = new SimpleDateFormat( pattern: "yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(str);
//3.打印结果
System.out.println(date.getTime());//1699672271000
3.JDK7-Calendar类
Calendar代表了系统当前时间的日历对象,可以单独修改、获取时间中的年,月,日
细节:Calendar是一个抽象类,不能直接创建对象。
获取Calendar日历类对象的方法
public static Calendar getInstance() 获取当前时间的日历对象的子类对象
常用方法:
| 方法名 | 说明 |
|---|---|
| public final Date getTime() | 获取日期对象 |
| public final setTime(Date date) | 给日历设置日期对象 |
| public long getTimeInMillis() | 拿到时间毫秒值 |
| public void setTimeInMillis(long millis) | 给日历设置时间毫秒值 |
| public int get(int field) | 取日历中的某个字段信息 |
| public void set(int field, int value) | 修改日历的某个字段信息 |
| public void add(int field, int amount) | 为某个字段增加/减少指定的值 |
- 获取日历对象
- 细节: Calendar是一个抽象类,不能直接new,而是通过一个静态方法获取到子类对象
- 会根据系统的不同时区来获取不同的日历对象,默认表示当前时间。
- 把会把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放到一个数组当中
Calendar c = Calendar.getInstance();
- 修改一下日历代表的时间
Date d = new Date(OL);
c.setTime(d);
System.out.println(c);
3.get(int field)
首先我们要知道在日历对象数组中数字的意义:
- 月份:范围0~11 如果获取出来的是0.那么实际上是1月。
- 星期: 数字表示略有不同
- 1(星期日)
- 2(星期一)
- 3(星期二)
- 4(星期三)
- 5(星期四)
- 6(星期五)
- 7(星期六)
方法的参数field值为:0,1,2,3,4,5,6,,,16
其中:
- 0 - 纪元
- 1 - 年
- 2 - 月
- 3 - 一年中的第几周
- 4 - 一个月中的第几周
- 5 - 一个月中的第几天
- …
代码示例:
Calendar c = Calendar.getInstance();
System.out.println(c);
System.out.println(c.get(1) + "年" + (c.get(2) + 1) + "月" + c.get(5) + "日");
输出结果为:2024年11月29日
注意:这里月份加一:
(c.get(2) + 1)
set(int field, int value)和add(int field, int amount)
使用获取的日历对象调用
在set方法中,field 表示的和上面get方法中的 field一样
后面value表示要修改的值
在add方法中field表示和上述相同,amount表示要增加或者删去的数。
- 要注意的时月份在编译器中的范围是:0-11
- amount为正数表示增加,为负数表示减少
3.JDK8相关时间类
a.为什么要学习JDK8的时间类
- JDK8 的时间类相比于JDK7 在代码上更为简洁和方便
- 更为的安全,JDK8的时间日期对象都是不可变的,解决了多线程环境下导致的环境安全问题
b.JDK8时间相关类的分类
我们按照对比JDK7时间类的方法进行分类:
- 和JDK7中的
Date类相照应:ZoneId:时区Instant:时间戳ZoneDateTime:带时区的时间
- 和
SimpleDateFormat相对应DateTimeFormatter:用于时间格式化和解析
- 和
Calendar类相对应LocalDate:年、月、日LocalTime:时、分、秒LocalDateTime:年、月、日、时、分、秒
- 工具类
Duration: 用于计算两个“时间”间隔(秒,纳秒)Period: 用于计算两个“日期”间隔(年、月、日)ChronoUnit: 用于计算两个“日期”间隔(使用范围更广,要熟练掌握)
c.类的成员方法
-
ZoneIdstatic Set<String> getAvailableZoneIds()———获取Java中支持的所有时区static ZoneId systemDefault()———获取系统默认时区static ZoneId of(String zoneId)——获取一个指定时区
代码示例:
//获取所有时区
Set<String> zoneIds = ZoneId.getAvailableZoneIds();
System.out.println(zoneIds);
//获取当前系统默认时区
ZoneId systemDefault = ZoneId.systemDefault();
System.out.println(systemDefault);
//获取一个指定时区
ZoneId of = ZoneId.of("US/Indiana-Starke");
System.out.println(of);
值得注意的是getAvailableZoneIds()的返回类型是一个集合,这个集合的泛型式String
当然对于第二个默认时区我们可以在电脑的设置上进行修改
- 时间戳
Instant
时间戳获取的式标准时间不带时区
| 方法 | 说明 |
|---|---|
| static Instant now( ) | 获取当前时间的Instant对象(标准时间) |
| static Instant ofXxxx(long epochMilli) | 根据(秒/毫秒/纳秒)获取Instant对象 |
| ZonedDateTime atZone(ZoneId zone) | 指定时区 |
| boolean isXxx(Instant otherInstant) | 判断系列的方法 |
| Instant minusXxx(long millisToSubtract) | 减少时间系列的方法 |
| Instant plusXxx(long millisToSubtract) | 增加时间系列的方法 |
上面的
Xxxx表示这个方法有很多的不同的类型
我们给出代码示例:
Instant now = Instant.now();
System.out.println(now);
//根据传入的时间获取对象(相对于时间原点)
Instant instant = Instant.ofEpochMilli(1000L);
Instant instant1 = Instant.ofEpochSecond(1L);
Instant instant2 = Instant.ofEpochSecond(1L, 1000000000L);
System.out.println(instant);
System.out.println(instant1);
System.out.println(instant2);
//获取指定时区的时间戳
ZonedDateTime zonedDateTime = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
//1.返回类型式zonedDateTime
//2.需要Instant对象调用
//3.传入的参数式zoneId类型的时区
System.out.println(zonedDateTime);
//判断时间前后
boolean after = instant.isAfter(instant1);
boolean before = instant.isBefore(instant2);
System.out.println(after);
System.out.println(before);
//减少时间
Instant instant3 = instant.minusSeconds(1L);
System.out.println(instant);
System.out.println(instant3);
ZoneDateTime:带时区的时间
方法:
| 方法 | 说明 |
|---|---|
| static ZonedDateTime now() | 获取当前时间的ZonedDateTime对象(带时区) |
| static ZonedDateTime ofXxxx( ) | 获取指定时间的ZonedDateTime对象(带时区) |
| ZonedDateTime withXxx(时间) | 修改时间系列的方法 |
| ZonedDateTime minusXxx(时间) | 减少时间系列的方法 |
| ZonedDateTime plusXxx(时间) | 增加时间系列的方法 |
需要我么注意的是有一个和Instant搭配的用法,我们前面也讲过:
//获取指定时区的时间戳
ZonedDateTime zonedDateTime = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
//1.返回类型式zonedDateTime
//2.需要Instant对象调用
//3.传入的参数式zoneId类型的时区
System.out.println(zonedDateTime);
同时修改时间的方法可以针对性的修改年份、月份、时、秒等
Instant和ZoneDateTime都是时间对象,主要区别在于前者时获取标准时间对象,后者表示带时区的时间对象
DateTimeFormatter:用于时间格式化和解析
| 方法 | 说明 |
|---|---|
| static DateTimeFormatter ofPattern(格式) | 获取格式对象 |
| String format(时间对象) | 按照指定方式格式化 |
代码示例:
//获取时间对象
ZonedDateTime time = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
// 解析/格式化器
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm: ss EE a");
// 格式化
System.out.println(dtf1.format(time));
LocalDateTime及相关
| 方法名 | 说明 |
|---|---|
| static XXX now() | 获取当前时间的对象 |
| static XXX of(. . . ) | 获取指定时间的对象 |
| get开头的方法 | 获取日历中的年、月、日、时、分、秒等信息 |
| isBefore, isAfter | 比较两个 LocalDate |
| with开头的 | 修改时间系列的方法 |
| minus开头的 | 减少时间系列的方法 |
| plus开头的 | 增加时间系列的方法 |
同时LocalDateTime可以转换成LocalDate和LocalTime

方法:
| 方法名 | 说明 |
|---|---|
| public LocalDate toLocalDate() | LocalDateTime转换成一个LocalDate对象 |
| public LocalTime toLocalTime() | LocalDateTime转换成一个LocalTime对象 |
4.包装类
a.什么是包装类
包装类是基本数据类型对应的引用数据类型(对象)
使用包装类是为了数据的统一,因为只有引用数据类型才能使用集合,也只有类才可以使用Object来接收数据
public void show(Object obj){//代码
}
实际上内存原理是:
- 使用一个类的成员变量来记录数值
- 操作数据的方法
内存图:

b. 包装类的分类
| 基本数据类型 | 包装类 |
|---|---|
| byte | Byte |
| short | Short |
| char | Character |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
只有int和char的包装类命名比较特殊,其他都是首字母大写
c.创建一个包装类对象
1.JDK5之前的创建方法
| 方法 | 说明 |
|---|---|
| public Integer(int value) | 根据传递的整数创建一个Integer对象 |
| public Integer(String s) | 根据传递的字符串创建一个Integer对象 |
| public static Integer valueOf(int i) | 根据传递的整数创建一个Integer对象 |
| public static Integer valueOf(String s) | 根据传递的字符串创建一个Integer对象 |
| public static Integer valueOf(String s, int radix) | 根据传递的字符串和进制创建一个Integer对象 |
上面的方法中两个构造方法和三个静态方法,我们介绍它们的区别
Integer i1 = new Integer(1);
Integer i2 = new Integer("2");
//
Integer i3 = Integer.valueOf(1);
Integer i4 = Integer.valueOf("3");
Integer i5 = Integer.valueOf("123", 8);
System.out.println(i1);
System.out.println(i2);
System.out.println("---------------");
System.out.println(i3);
System.out.println(i4);
System.out.println(i5);
- 在Java内部对
valueof进行了优化,传入的数值在-128 ~ 127之间时会返回一个固定的对象,对象的地址值是固定的 - 而使用构造方法
new是一定会创建一个新的对象
当然这都是过时的方法,现在不常用了
2. 当前创建包装类对象
我们使用上述的方法创建的包装类在进行运算的时候比较麻烦需要经历以下步骤:
- 把包装类转换为基本数据类型
- 使用基本数据类型进行运算
- 把运算的结果转换为包装类型
在JDK5之后,Java做了优化,把上述的过程直接在底层实现了。我们可以直接使用包装类进行赋值
Integer i = 10;
Integer j = 11;
Integer sum = i + j;
d.Integer类成员方法详解
| 方法 | 说明 |
|---|---|
| public static String toBinaryString(int i) | 得到二进制 |
| public static String toOctalString(int i) | 得到八进制 |
| public static String toHexString(int i) | 得到十六进制 |
| public static int parseInt(String s) | 将字符串类型的整数转成int类型的整数 |
前面三种方法的返回值都是String类型,原因:
- 用基本数据类型长度可能不够
- 返回二进制时候返回的值可能是负数。例如:01101,但是基本数据类型0不可以作为开头
这里详细讲一下字符串转换:
int i = Integer.parseInt( s: "123");
System.out.println(i);
System.out.println(i + 1);//124
String str = "true";
boolean b = Boolean.parseBoolean(str);
System.out.println(b);
java是一种强类型语言(每种数据在java中都有各自的数据类型)在计算的时候,如果不是同一种数据类型,是无法直接计算的。
值得注意的是parseInt(String s)的两点:
- 在类型转换的时候,括号中的参数只能是数字不能是其他,否则代码会报错
- 8种包装类当中,除了Character都有对应的parseXxx的方法,进行类型转换
e.键盘录入nextLine
我们之前使用Scanner对象进行键盘录入的时候会有一点的弊端:
- 比如:nextInt, nextDouble, next等
- 在进行录入的时候如果遇到空格, 回车,制表符时候就停止了
所以在以后我们建议使用nextLine:可以录入一整行的数据,遇到回车停止
- 返回值是
String类型 - 可以使用类型转换的方法,把录入的
String类型的数据转换为我们需要的数据
代码示例:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串");
String s = scanner.nextLine();
int i = Integer.parseInt(s);
System.out.println(i);
相关文章:
#Java-JDK7、8的时间相关类,包装类
1. JDK7-Date类 我们先来看时间的相关知识点 世界标准时间: 格林尼治时间/格林威治时间(Greenwich Mean Time)简称GMT。目前世界标准时间(UTC)已经替换为:原子钟中国标准时间: 世界标准时间8小时 时间单位换算: 1秒1000毫秒 1毫秒1000微秒 1微秒1000纳秒 Date类 Date类…...
tc 命令
Windows Network Shaper目前只能在win10及以下版本使用,在github上有源码。 iperf 是一个网络性能测试工具,可以测试网络带宽和延迟。 webrtc M96版本的GCC sudo tc qdisc del dev eth1 root //关闭限速 sudo tc qdisc add dev eth1 root handle 1: ht…...
基于Java Springboot 协同过滤算法音乐推荐系统
一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue2、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA 数据库&#x…...
MyBatis框架-关联映射
MyBatis关联映射-一对一 1.1 实体关系 实体–数据实体,实体关系指的就是数据与数据之间的关系 例如:订单和商品,用户和角色 实体关系分为以下四种: **一对一关联:**用户表和用户详情表 数据表关系: 主键关…...
Web开发技术栈选择指南
互联网时代的蓬勃发展,让越来越多人投身软件开发领域。面对前端和后端的选择,很多初学者往往陷入迷茫。让我们一起深入了解这两个领域的特点,帮助你做出最适合自己的选择。 在互联网发展的早期,前端开发主要负责页面布局和简单的…...
工具类的魔力:深入理解 Java 的 String、Math 和 Arrays
Java 提供了许多实用的工具类,帮助开发者简化代码,提升效率。这些工具类包含了各种常见的操作,比如字符串处理、数学计算、数组操作等。掌握这些工具类的高效使用方法,不仅能让你写出更简洁、优雅的代码,还能在性能上有…...
Linux下一次性关闭多个同名进程
要一次性关闭多个同名的 Python 进程,例如: 你可以使用以下几种方法。在执行这些操作之前,请务必确认这些进程确实是你希望终止的,以避免意外关闭其他重要的进程。 方法一:使用 pkill 命令 pkill 是一个用于根据名称…...
记录一些虚拟机桥接网络,windows网络遇到的小问题
1 virtual box 桥接的虚拟系统无 ipv4 地址 https://blog.csdn.net/qq_44847649/article/details/122582954 原因是 wlan 无线网卡没开共享给 virtual box host only (之前用过 vmware 也类似) 2 无法两台 windows10 物理机无法相互 ping 通 https://blog.csdn.net/qq_35…...
MATLAB —— 机械臂工作空间,可达性分析
系列文章目录 前言 本示例展示了如何使用可操作性指数对不同类型的机械手进行工作空间分析。工作空间分析是一种有用的工具,可用于确定机器人工作空间中最容易改变末端效应器位置和方向的区域。本示例的重点是利用不同的可操控性指数类型来分析各种机械手的工作空间。了解工作…...
18:(标准库)DMA二:DMA+串口收发数据
DMA串口收发数据 1、DMA串口发送数据2、DMA中断串口接收定长数据包3、串口空闲中断DMA接收不定长数据包4、串口空闲中断DMA接收不定长数据包DMA发送数据包 1、DMA串口发送数据 当串口的波特率大于115200时,可以通过DMA1进行数据搬运,以防止数据的丢失。如…...
【C++】 算术操作符与数据类型溢出详解
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯C 算术操作符详解基本算术操作符整数除法与取模行为类型转换在算术运算中的作用自增与自减操作符 💯数值溢出:当值超出类型范围时数据类型的取值范围…...
柔性芯片:实现万物互联的催化剂
物联网 (IoT) 市场已经非常成熟,麦肯锡预测,物联网将再创高峰,到 2030 年将达到 12.5 万亿美元的估值。然而,万物互联 (IoE) 的愿景尚未实现,即由数十亿台智能互联设备组成,提供大规模洞察和效率。 究竟是…...
FFmpeg 简介与编译
1. ffmpeg 简介: FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移…...
低代码与微服务融合在医疗集团中的补充应用探究
摘要 本论文深入探讨了低代码与微服务融合在医疗系统集群中的应用。分析了其优势,包括提高开发效率、降低技术门槛、灵活适应需求变化和易于维护扩展等;阐述了面临的挑战,如数据安全与隐私保护、技术应用复杂性等;并展望了其在医…...
速盾:高防cdn的搜索引擎回源是什么?
高防CDN(Content Delivery Network)是一种用于加速网站访问速度和增加安全性的服务,它通过将静态和动态内容缓存在全球分布的服务器上,从而将用户请求的响应时间降至最低,并提供有效的防御攻击的能力。在实际使用过程中…...
减少电路和配电系统谐波的五种方法
K 级变压器 ANSI 标准 C57.110-1986 定义了 K 系数来评估电路消耗多少谐波电流并确定该谐波电流的热效应。根据电路 K 系数,变压器按 K 等级制造。值得注意的是,K 级变压器不会减少谐波。K 等级表示变压器承受谐波有害影响的相对能力。K级变压器增加了铁…...
基于Java Springboot Vue3图书管理系统
一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue3、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA 数据库&#x…...
vue-cli项目质量约束配置
同步发布于我的网站 🚀 package.json scriptslint-stageddevDependencies git-hooksno-eslintdevDependencies - scssdevDependencies - lessengines pre-commit.eslintrc.js.stylelintrc scssless vue.config.jsREADME.md package.json scripts "scripts&…...
第七课 Unity编辑器创建的资源优化_UI篇(UGUI)
上期我们学习了简单的Scene优化,接下来我们继续编辑器创建资源的UGUI优化 UI篇(UGUI) 优化UGUI应从哪些方面入手? 可以从CPU和GPU两方面考虑,CPU方面,避免触发或减少Canvas的Rebuild和Rebatch,…...
【docker】docker build上下文
什么是 Docker Build 上下文? 在 Docker 中,构建上下文(Build Context) 是指在执行 docker build 命令时,Docker 会发送给 Docker 引擎的所有文件和目录的集合。构建上下文包含了 Dockerfile 和用于构建镜像的所有文件…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
