Java日期的学习篇
关于日期的学习
目录
- 关于日期的学习
- JDK8以前的API
- Date
- Date常用API
- Date的API应用
- SimpleDateFormat
- SimpleDateFormat常用API
- 测试
- 反向格式化(逆操作)
- 测试
- 训练案例
- 需求(秒杀活动)
- 实现
- Calendar
- 需求痛点
- 常见API
- 应用测试
- JDK8及以后的API(修改与新增)
- 为啥学习(推荐使用)
- 新增的API
- Local...(或Local开头)API创建对象的方案
- LocalDate常用API
- LocalTime常用API
- LocalDateTime常用API
- Zone开头的
- Instant(某个时刻/时间戳)API
- DateTimeForMatter(时间格式化器)API
- Period常用API
- Duration常用API
- 拓展
- 时间格式符号
- 参考视频
JDK8以前的API
Date
Date常用API

Date的API应用
测试
package com.xie.time;import java.util.Date;
/*** JDK8以前的日期API* 目标:掌握Data日期类的使用* 重点:* 时间毫秒值 跟 日期对象 之间 的转化关系 要厘清* */
public class DateTest {public static void main(String[] args) {// 创建一个Data的对象,代表的是系统的当前时间信息Date date1 = new Date();System.out.println(date1);// 获取时间毫秒值long times = date1.getTime();System.out.println(times);/** 把时间毫秒值 转换成 日期对象,计算2秒之后的时间* 利用有参构造器进行转化* */times += 2 * 1000;Date date2 = new Date(times);System.out.println(date2);/** 或通过setTime()方法直接进行修改 */Date date3 = new Date();date3.setTime(times);System.out.println(date3);}
}
SimpleDateFormat
SimpleDateFormat常用API
格式化工作示意

测试
package com.xie.time;import java.text.SimpleDateFormat;
import java.util.Date;
/*** 优化Date,对日期格式进行格式化,使用户更加容易识别与接受** 目标:掌握对于SimpleDateFormat的使用* 注:SimpleDateFormat代表简单日期格式化,可以用来 把日期对象、时间毫秒值 格式化成 我们想要的形式* */
public class SimpleDateFormatTest {public static void main(String[] args) {// 获取时间对象及毫秒值Date date1 = new Date();long times = date1.getTime();/** 创建一个格式化对象,分别进行日期对象和时间毫秒值的格式化操作 */// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE a");SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");/** 进行时间对象格式化 */String format1 = sdf.format(date1);System.out.println(format1);/** 进行时间毫秒值格式化 */String format2 = sdf.format(times);System.out.println(format2);}
}
反向格式化(逆操作)

测试
package com.xie.time;import java.text.SimpleDateFormat;
/*** 反向操作,把字符串时间格式 解析成 日期对象* 目标:掌握SimpleDateFormat解析字符串时间 成 日期对象* */
public class SimpleDateFormatTest2 {public static void main(String[] args) throws Exception {// 设计一个字符串时间String dateStr = "2018-10-11 12:12:11";/** 创建简单日期格式化对象* 注:指定的时间格式 必须与 被解析的时间格式一模一样,否则程序会出bug。* */SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 解析并打印输出System.out.println(sdf.parse(dateStr));}
}
训练案例
需求(秒杀活动)

实现
package com.xie.time.case1;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*** 秒杀活动案例* 结果预测:小贾成功,小皮失败* */
public class Shop {public static void main(String[] args) throws ParseException {/** 用变量记录秒杀活动案例开始时间、结束时间、小贾下单时间、小皮下单时间 */String startTime = "2023年11月11日 0:0:0";String endTime = "2023年11月11日 0:10:0";String xj = "2023年11月11日 0:01:18";String xp = "2023年11月11日 0:10:51";/** 创建简单格式化对象,把上面的字符串时间格式 解析成 日期对象 */SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");// 解析成日期对象Date startTimeFormat = sdf.parse(startTime);Date endTimeFormat = sdf.parse(endTime);Date xjFormat = sdf.parse(xj);Date xpFormat = sdf.parse(xp);/** 把日期对象 转化成 时间毫秒值 */long startTimes = startTimeFormat.getTime();long endTimes = endTimeFormat.getTime();long xjTimes = xjFormat.getTime();long xpTimes = xpFormat.getTime();/** 通过时间比对 判断 秒杀操作成功与否 *//*** 小贾* */if (xjTimes >= startTimes && xjTimes <= endTimes) {System.out.println("小贾秒杀成功了~~~");}else {System.out.println("小贾秒杀失败了~~~");}/*** 小皮* */if (xpTimes >= startTimes && xpTimes <= endTimes) {System.out.println("小皮秒杀成功了~~~");}else {System.out.println("小皮秒杀失败了~~~");}}
}
Calendar
需求痛点


常见API

注:Calendar代表的是系统此刻时间对应的日历,通过它可以单独获取、修改时间中的年、月、日、时、分、秒等。
Calendar是可变对象,一旦修改后其对象本身表示的时间将产生变化。
应用测试
package com.xie.time;import java.util.Calendar;
import java.util.Date;
/*** 日历对象的创建及使用* 目标:掌握Calender的使用和特点* */
public class CalenderTest {public static void main(String[] args) {/** 得到系统此刻时间对应的日历对象 并打印输出*/Calendar calendar = Calendar.getInstance();System.out.println(calendar);// 获取日历中的某个信息,并打印输出System.out.println(calendar.get(Calendar.YEAR));System.out.println(calendar.get(Calendar.MONTH));System.out.println(calendar.get(Calendar.DAY_OF_YEAR));System.out.println(calendar.get(Calendar.DAY_OF_MONTH));// 获取日历中记录的日期对象Date date = calendar.getTime();System.out.println(date);// 获取到时间毫秒值long times = calendar.getTimeInMillis();System.out.println(times);System.out.println("---------------分隔符-----------------");/** 修改日历中的某位信息 */// 修改月份为11月,切记是从0开始遍历的calendar.set(Calendar.MONTH, 11);// 修改一年中的第几天 为第几天calendar.set(Calendar.DAY_OF_YEAR, 125);/** 增加或减少计算 */calendar.add(calendar.DAY_OF_YEAR, 100);calendar.add(calendar.DAY_OF_YEAR, -10);calendar.add(Calendar.DAY_OF_MONTH, 6);calendar.add(Calendar.HOUR, 12);// 打印输出查看修改效果System.out.println(calendar);}
}
JDK8及以后的API(修改与新增)
注:很多方法都是返回不可变对象,不同于JDK8之前的
为啥学习(推荐使用)

新增的API


Local…(或Local开头)API创建对象的方案

LocalDate常用API

应用测试
package com.xie.time.local;import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.Month;
/*** LocalDate API应用测试* */
public class LocalDateTest {public static void main(String[] args) {/** 获取本地日期对象(不可变对象,而JDK8之前是可变对象) */LocalDate dateObject = LocalDate.now();System.out.println(dateObject);// 1、获取日期对象中的信息int year = dateObject.getYear();Month month = dateObject.getMonth();int dayOfMonth = dateObject.getDayOfMonth();int dayOfYear = dateObject.getDayOfYear();DayOfWeek dayOfWeek = dateObject.getDayOfWeek();System.out.println(dayOfWeek);int value = dateObject.getDayOfWeek().getValue();System.out.println(value);System.out.println(year);// 2、直接修改某个信息: withYear、withMonth、withDayOfMonth、withDayOfYear/*** 每次修改都会返回一个 新的 日期对象* */System.out.println("------------------------------------");LocalDate dateObject2 = dateObject.withYear(2099);LocalDate dateObject3 = dateObject.withMonth(12);System.out.println("新的年-->" + dateObject2);System.out.println("旧的年-->" + dateObject);System.out.println("新的月-->" + dateObject3);// 3、把某个信息加多少: plusYears、plusMonths、plusDays、plusWeeks/*** 同样,每次修改都会返回一个 新的 日期对象* */System.out.println("================================");LocalDate dateObject4 = dateObject.plusYears(2);System.out.println("加了2年-->" + dateObject4);// 4、把某个信息减多少: minusYears、minusMonths、minusDays、minusWeeks/*** 同样,每次修改都会返回一个 新的 日期对象* */System.out.println("================================");LocalDate dateObject5 = dateObject.minusYears(2);System.out.println("减了2年-->" + dateObject5);LocalDate dateObject6 = dateObject.minusMonths(2);System.out.println("减了2月-->" + dateObject6);// 5、获取指定日期的LocalDate对象: public static LocalDate of(int year,int month, int dayOfMonth)/*** 同样,每次修改都会返回一个 新的 日期对象* */System.out.println("================================");LocalDate dateObject7 = dateObject.of(2099, 12, 1);LocalDate dateObject8 = dateObject.of(2099, 12, 1);System.out.println("指定日期-->" + dateObject7);// 6、判断2个日期对象,是否相等,在前还是在后: equals isBefore isAfter/*** 同样,每次修改都会返回一个 新的 日期对象* */System.out.println("================================");System.out.println(dateObject7.equals(dateObject8));// trueSystem.out.println(dateObject7.isAfter(dateObject));// trueSystem.out.println(dateObject8.isBefore(dateObject));// false}
}
LocalTime常用API

应用测试
package com.xie.time.local;import java.time.LocalTime;
/*** LocalTime API应用测试* */
public class LocalTimeTest {public static void main(String[] args) {/** 获取本地时间对象 */LocalTime time = LocalTime.now();System.out.println(time);// 获取时间对象中的信息int hour = time.getHour();//时int minute = time.getMinute();//分int second = time.getSecond();//秒int nano = time.getNano();//纳秒// 2、修改时间: withHour、withMinute、withSecond、withNanoLocalTime time3 = time.withHour(10);LocalTime time4 = time.withMinute(10);LocalTime time5 = time.withSecond(10);LocalTime time6 = time.withNano(10);// 3、加多少: pLusHours、plusMinutes、plusSeconds、plusNanosLocalTime time7 = time.plusHours(10);LocalTime time8 = time.plusMinutes(10);LocalTime time9 = time.plusSeconds(10);LocalTime time10= time.plusNanos(10);// 4、减多少:minusHours、minusMinutes、minusSeconds、minusNanosLocalTime time11 = time.minusHours(10);LocalTime time12 = time.minusMinutes(10);LocalTime time13 = time.minusSeconds(10);LocalTime time14 = time.minusNanos(10);// 5、获取指定时间的LocalTime对象:// public static LocalTime of(int hour,int minute,int second)LocalTime time15 = LocalTime.of( 12,12 ,12);LocalTime time16 = LocalTime.of(12,12 ,12);// 6、判断2个时间对象,是否相等,在前还是在后:equals isBefore isAfterSystem.out.println(time15.equals(time16));System.out.println(time15.isAfter(time));System.out.println(time5.isBefore(time));}
}
LocalDateTime常用API

应用测试
package com.xie.time.local;import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
/*** LocalDateTime API应用测试* */
public class LocalDateTimeTest {public static void main(String[] args) {/** 获取本地日期时间对象 */LocalDateTime dateTime = LocalDateTime.now();System.out.println(dateTime);// 1、可以获取日期和时间的全部信息int year = dateTime.getYear(); // 年int month = dateTime.getMonthValue(); // 月int day = dateTime.getDayOfMonth(); // 日int dayOfYear = dateTime.getDayOfYear(); // 一年中的第几天int dayOfWeek = dateTime.getDayOfWeek().getValue(); // 获取是周几int hour = dateTime.getHour(); //时int minute = dateTime.getMinute(); //分int second = dateTime.getSecond(); //秒int nano = dateTime.getNano(); //纳秒// 3、加多少:// plusYears plusMonths plusDays plusWeeks plusHours plusMinutes plusSeconds plusNanosLocalDateTime dateTime4 = dateTime.plusYears(2);LocalDateTime dateTime5 = dateTime.plusMinutes(3);// 4、减多少:// minusDays minusYears minusMonths minusWeeks minusHours minusMinutes minusSeconds minusNanosLocalDateTime dateTime6 = dateTime.minusYears(2);LocalDateTime dateTime7 = dateTime.minusMinutes(3);// 5、获取指定日期和时间的LocalDateTime对象:// public static LocalDateTime of(int year, Month month, int dayOfMonth, int hour,// int minute, int second, int nanoOfSecond)LocalDateTime dateTime8 = dateTime.of(2029, 12, 12, 12, 12, 12, 1222);LocalDateTime dateTime9 = dateTime.of(2029, 12, 12, 12, 12, 12, 1222);// 6、 判断2个日期、时间对象,是否相等,在前还是在后:equals、isBefore、isAfterSystem.out.println(dateTime9.equals(dateTime));System.out.println(dateTime9.isAfter(dateTime));System.out.println(dateTime9.isBefore(dateTime));// 7、可以把LocalDateTime 转换成 LocalDate 和 LocalTime// public LocalDate toLocalDate()// public LocalTime toLocalTime()// public static LocalDateTime of(LocalDate date, LocalTime time)System.out.println("================================");LocalDate date = dateTime.toLocalDate();LocalTime time = dateTime.toLocalTime();LocalDateTime dateTime2 = LocalDateTime.of(date, time);System.out.println(dateTime2 + "-->" + date + " && " +time);}
}
Zone开头的

应用测试
package com.xie.time.zone;import java.time.Clock;
import java.time.ZoneId;
import java.time.ZonedDateTime;
/*** 目标:了解时区 和 带时区的时间* */
public class ZoneIdAndZonedDateTimeTest {public static void main(String[] args) {/** 获取系统默认时区 */ZoneId zoneId = ZoneId.systemDefault();System.out.println(zoneId.getId());System.out.println(zoneId);/** 获取Java支持的全部时区Id */System.out.println(ZoneId.getAvailableZoneIds().size());System.out.println(ZoneId.getAvailableZoneIds());/** 把某个时区id 封装成 ZoneId对象 */ZoneId zoneId1 = ZoneId.of("America/New_York");/** 获取某个时区的时间 即先获取ZonedDateTime对象 */ZonedDateTime zonedDateTime = ZonedDateTime.now(zoneId1);System.out.println(zonedDateTime);/** 获取世界标准时间 */System.out.println(ZonedDateTime.now(Clock.systemUTC()));/** 获取 系统 默认时区 的ZonedDateTime对象 */ZonedDateTime now = ZonedDateTime.now();System.out.println(now);}
}
Instant(某个时刻/时间戳)API
注:可以用来记录代码的执行时间,或用于记录用户操作某个事件的时间点。
应用测试
package com.xie.time;import java.time.Instant;
/*** 目标:掌握对Instant的使用* Instant:时间线上的某个时刻/时间戳* */
public class InstantTest {public static void main(String[] args) {/** 创建Instant对象,获取此刻的时间信息 */Instant instant = Instant.now();/** 获取总秒数 */long epochSecond = instant.getEpochSecond();System.out.println(epochSecond);/** 获取不够一秒的纳秒数 */System.out.println(instant.getNano());System.out.println(instant);/** 修改方法使用,示例,许多方法同LocalDateTime对象的 */Instant instant1 = instant.plusNanos(1111);System.out.println(instant1);System.out.println("================================================");// Instant对象的作用:做代码的性能分析,或者记录用户的操作时间点Instant instant2 = Instant.now();// 代码执行。。。Instant instant3 =Instant.now();}
}
DateTimeForMatter(时间格式化器)API



应用测试
package com.xie.time;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;/*** 格式化器* */
public class DateTimeForMatterTest {public static void main(String[] args) {/** 创建 一个 日期时间 格式化器 对象 */DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");/** 获取时间 */LocalDateTime localDateTime1 = LocalDateTime.now();System.out.println(localDateTime1);/** 对时间 进行格式化 正向格式化 */String format1 = dateTimeFormatter.format(localDateTime1);System.out.println(format1);/** 格式化另一种方案,用LocalDateTime对象的方法进行 我们称之为反向格式化,是相较于上面一种的 */String format2 = localDateTime1.format(dateTimeFormatter);System.out.println(format2);/** 解析时间: 解析时间一般使用LocalDateTime提供的解析方法来解析 */// 设置时间String dateStr = "2029年12月12日 12:12:11";LocalDateTime localDateTime2 = LocalDateTime.parse(dateStr, dateTimeFormatter);System.out.println(localDateTime2);}
}
Period常用API

应用测试
package com.xie.time;import java.time.LocalDate;
import java.time.Period;
/*** Period常用API的使用
* */
public class PeriodTest {public static void main(String[] args) {/**通过 指定时间 获取 两个日期对象*/LocalDate startTime = LocalDate.of(2029, 8, 10);LocalDate endTime = LocalDate.of(2035, 12, 20);/** 创建Period对象,封装两个时间点的 日期对象 */Period period = Period.between(startTime, endTime);/** 通过period对象 来获取 两个日期对象 相差的信息 */System.out.println("两者相差 " + period.getYears() + " 年");System.out.println("两者相差 " + period.getMonths() + " 月");System.out.println("两者相差 " + period.getDays() + " 日或天");}
}
Duration常用API

应用测试
package com.xie.time;import java.time.Duration;
import java.time.LocalDateTime;
/*** Duration常用API的使用* */
public class DurationTest {public static void main(String[] args) {/**通过 指定时间 获取 两个日期时间对象*/LocalDateTime startDateTime = LocalDateTime.of(2035, 8, 10, 0, 0, 0);LocalDateTime endDateTime = LocalDateTime.of(2035, 8, 15, 6, 5, 5);// 1、获取Duration对象Duration duration = Duration.between(startDateTime, endDateTime);// 2、获取两个日期时间对象的间隔信息System.out.println("两者相差 " + duration.toDays() + " 天");// 间隔多少天System.out.println("两者相差 " + duration.toHours() + " 小时");// 间隔多少小时System.out.println("两者相差 " + duration.toMinutes() + " 分");// 间隔多少分System.out.println("两者相差 " + duration.getSeconds() + " 秒");// 间隔名少秒System.out.println("两者相差 " + duration.toMillis() + " 毫秒");// 间隔多少毫秒System.out.println("两者相差 " + duration.toNanos() + " 纳秒");// 间隔多少纳秒}
}
拓展
时间格式符号

参考视频
黑马磊哥
相关文章:
Java日期的学习篇
关于日期的学习 目录 关于日期的学习JDK8以前的APIDate Date常用APIDate的API应用 SimpleDateFormatSimpleDateFormat常用API测试 反向格式化(逆操作)测试 训练案例需求(秒杀活动)实现 Calendar需求痛点常见API应用测试 JDK8及以后的API(修改与新增)为啥学习(推荐使用)新增的AP…...
spark on hive
需要提前搭建好hive,并对hive进行配置。 1、将hive的配置文件添加到spark的目录下 cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf2、开启hive的hivemetastore服务 提前创建好启动日志存放路径 mkdir $HIVE_HOME/logStart nohup /usr/local/lib/apache-hi…...
Linux Vi编辑器基础操作指南
Linux Vi编辑器基础操作指南 Linux中的Vi是一个强大的文本编辑器,虽然它有一些陡峭的学习曲线,但一旦掌握了基本操作,它就变得非常高效。以下是Vi编辑器的一些基本用法: 打开Vi编辑器: vi 文件名退出Vi编辑器ÿ…...
WEB3 创建React前端Dapp环境并整合solidity项目,融合项目结构便捷前端拿取合约 Abi
好 各位 经过我们上文 WEB3 solidity 带着大家编写测试代码 操作订单 创建/取消/填充操作 我们自己写了一个测试订单业务的脚本 没想到运行的还挺好的 那么 今天开始 我们就可以开始操作我们前端 Dapp 的一个操作了 在整个过程中 确实是没有我们后端的操作 或者说 我们自己就…...
rust运算
不同类型不能放在一起运算。如果非要计算,必须先强转成一个类型再运算。 一 、数字运算 (一)算术运算 a 10且b 5 名称运算符范例加ab的结果为15减-a-b的结果为5乘*a*b的结果为50除/a / b的结果为2求余%a % b的结果为0 Rust语言不支持自增…...
游戏引擎,脚本管理模块
编辑器中删除脚本,然后立即恢复删除的脚本关系正常编辑器中删除脚本,关掉编辑器,然后只恢复脚本,不恢复meta,然后再打开编辑器关系丢失编辑器中删除脚本,关掉编辑器,然后恢复脚本且恢复meta,然后再打开编辑…...
2023年7月工作经历三
年龄危机 传言:程序员干不过37岁,架构师干不过45岁,总监干不过55岁。我已经43岁了。当总监需要机遇;首下犯错,会扣领导工资;有的公司总监还需要出资。为了方便以后当总监,我还在超音速带过小团…...
1801_codesys产品主样本了解
全部学习汇总: GreyZhang/g_codesys: some codesys learning notes (github.com) 有些技术、学术的成长,氛围也是很重要的。我觉得工业控制,德国做得算是世界上很突出的。而这个巴伐利亚,更是突出中的佼佼者了。从这里的介绍看&am…...
flink的计时器
背景 在flink中,我们经常使用ontimer计时器实现很多逻辑的功能,常见的比如某个传感器温度增加连续超过1分钟的告警输出等,本文就来简单记录下计时器的作用 计时器 ontimer的定义 public void onTimer(long timestamp, OnTimerContext ctx…...
@SpringBootApplication剖析
一、前言 在SpringBoot项目中启动类必须加一个注解SpringBootApplication,今天我们来剖析SpringBootApplication这个注解到底做了些什么。 二、SpringBootApplication简单分析 进入SpringBootApplication源代码如下: 可以看出SpringBootApplication是…...
浅谈wor2vec,RNN,LSTM,Transfermer之间的关系
浅谈wor2vec,RNN,LSTM,Transfermer之间的关系 今天博主谈一谈wor2vec,RNN,LSTM,Transfermer这些方法之间的关系。 首先,我先做一个定位,其实Transfermer是RNN,LSTM&…...
【11】c++设计模式——>单例模式
单例模式是什么 在一个项目中,全局范围内,某个类的实例有且仅有一个(只能new一次),通过这个唯一的实例向其他模块提供数据的全局访问,这种模式就叫单例模式。单例模式的典型应用就是任务队列。 为什么要使…...
深度学习-卷积神经网络-AlexNET
文章目录 前言1.不同卷积神经网络模型的精度2.不同神经网络概述3.卷积神经网络-单通道4.卷积神经网络-多通道5.池化层6.全连接层7.网络架构8.Relu激活函数9.双GPU10.单GPU模型 1.LeNet-52.AlexNet1.架构2.局部响应归一化(VGG中取消了)3.重叠/不重叠池化4…...
人机关系不是物理关系也不是数理关系
人机关系是一种复杂的社会技术系统,涉及到人类和机器、环境之间的相互作用和影响。它不仅限于物理接触和数理规律,同时还包括了思维、情感、意愿等方面的交流和互动。在人机关系中,人类作为使用者和机器作为工具(将来可能会上升到…...
<html dir=ltr>是什么意思?
<html dirltr>的意思是: 文字默认从左到右排列 说明: HTML--超级文本标记语言 dir 属性 -- (文字的)排列方式属性 取值: ltr -- 代表左到右的排列方式 rtl -- 代表右到左的排列方式 默认值:ltr 示例: ltr左到右的对…...
工厂模式:简化对象创建的设计思想 (设计模式 四)
引言 在软件开发中,我们经常需要创建各种对象实例来满足不同的需求。通常情况下,我们会使用new关键字直接实例化对象,但这种方法存在一些问题,比如对象的创建逻辑分散在代码中,难以维护和扩展,同时也违反了…...
【2023最新】微信小程序中微信授权登录功能和退出登录功能实现讲解
文章目录 一、讲解视频二、小程序前端代码三、后端Java代码四、备注 一、讲解视频 教学视频地址: 视频地址 二、小程序前端代码 // pages/profile/profile.js import api from "../../utils/api"; import { myRequest } from "../../utils/reques…...
复习 --- C++运算符重载
.5 运算符重载 运算符重载概念:对已有的运算符重新进行定义,赋予其另外一种功能,以适应不同的数据类型 4.5.1 加号运算符重载 作用:实现两个自定义数据类型相加的运算 1 #include<iostream>2 using namespace std;3 /…...
复习 --- select并发服务器
selectIO多路复用并发服务器,是通过轮询检测文件描述符来实现并发 将内核要检测文件描述符放入集合中,调用select函数,通知内核区检测文件描述符集合中的文件描述符是否准备就绪,即对应的空间中是否有数据 对准备就绪的文件描述…...
程序三高的方法
程序三高的方法 目录概述需求: 设计思路实现思路分析1.1)高并发 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,c…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
