Java基础十八(正则表达式 + 日期时间)
1. 正则表达式
1.1 普通字符
字符 | 描述 | 示例 |
---|---|---|
[abc] | 匹配 […] 中所有字符 | [hlo] 匹配字符串 "hello world" 中所有的 h l o 字母 |
[^ABC] | 匹配除了 […] 中所有字符 | [hlo] 匹配字符串 "hello world" 中除了 h l o 的所有字母 |
[^a-z] | 匹配除了 […] 中所有字符 | [hlo] 匹配字符串 "hello world" 中除了 a 到 z 的所有字母 |
[A-Z] | [A-Z] 表示一个区间,匹配所有的大写字母 | [A-Z] 匹配字符串 "Hello world" 结果为 H |
1.2 特殊字符
字符 | 描述 | 示例 |
---|---|---|
. | 匹配任意单个字符,除了换行符 | a.b 、1.2 |
* | 匹配前一个字符零次或多次 | go*gle 、colou*r |
+ | 匹配前一个字符一次或多次 | go+gle 、colou+r |
? | 匹配前一个字符零次或一次 | colou?r 、col(o)?r |
| | 表示“或”的意思,用于匹配多个选项中的一个 | apple|orange 、yes|no |
[] | 用于定义字符类,匹配方括号内的任意一个字符 | [aeiou] 、[0-9] |
() | 用于分组,可以改变默认的优先级和应用限定符 | (go)+ 、(abc|def) |
$ | 匹配输入字符串的结尾位置,如果设置了 RepExp 对象的 Multiline 属性,则 $ 也匹配‘\n’或‘\r’ | … |
{ | 标记限定表达式的开始 | … |
| | 指明两项直接的一个选择 | … |
1.3 非打印字符
字符 | 描述 | 示例 |
---|---|---|
\n | 匹配换行符 | Hello\nWorld |
\r | 匹配回车符 | Hello\rWorld |
\t | 匹配制表符 | Hello\tWorld |
\v | 匹配垂直制表符 | Hello\vWorld |
\s | 匹配任意空白字符,包括空格、制表符、换页符等 | Hello World |
\S | 匹配任意非空白字符,不包括换行 | 我暂时不知道 |
\d | 匹配任意数字字符,相当于 [0-9] | 12345 、9am |
\w | 匹配任意字母、数字或下划线字符,相当于 [a-zA-Z0-9_] | hello_world_123 |
1.4 限定符
字符 | 描述 | 示例 |
---|---|---|
* | 匹配前一个字符零次或多次 | go*gle 、colou*r |
+ | 匹配前一个字符一次或多次 | go+gle 、colou+r |
? | 匹配前一个字符零次或一次 | colou?r 、col(o)?r |
{n} | 匹配前一个字符恰好出现 n 次 | go{2}gle 、colou{3}r |
{n,} | 匹配前一个字符至少出现 n 次 | go{2,}gle 、colou{3,}r |
{n,m} | 匹配前一个字符出现 n 到 m 次 | go{2,5}gle 、colou{3,7}r |
1.5 定位符
字符 | 描述 | 示例 |
---|---|---|
^ | 匹配字符串的开头 | ^Hello 、^[A-Z] |
$ | 匹配字符串的结尾 | World$ 、[0-9]$ |
\b | 匹配单词的边界 | \btest\b 、\bword\b |
\B | 匹配非单词边界 | \Btest\B 、\Bword\B |
2. 日期时间
2.1 Date 类方法
Date类位于 java.util
包中,用于表示特定的时间点。
方法 | 描述 |
---|---|
getTime() | 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。 |
toString() | 将日期对象转换为字符串形式。 |
compareTo(Date anotherDate) | 比较两个日期的顺序。返回值为 0 表示相等,大于 0 表示当前日期在参数日期之后,小于 0 表示当前日期在参数日期之前。 |
equals(Object obj) | 检查该日期对象是否等于另一个日期对象。 |
before(Date when) | 检查当前日期是否在指定日期之前。 |
after(Date when) | 检查当前日期是否在指定日期之后。 |
setTime(long time) | 设置日期对象的时间值。 |
例题1 : Date使用
public class DateDemo01 {public static void main(String[] args) {// 创建一个表示当前时间的 Date 对象Date date = new Date();System.out.println(date); // Thu Aug 24 22:35:10 CST 2023// 获取 Date 对象的时间(毫秒数)long timeInMillis = date.getTime();System.out.println(timeInMillis); // 1692887710157// 创建一个指定时间的 Date 对象Date specifiedDate = new Date(1640886000000L);System.out.println(specifiedDate); // Fri Dec 31 01:40:00 CST 2021// 比较两个 Date 对象的时间boolean isBefore = date.before(specifiedDate);boolean isEquals = date.equals(specifiedDate);boolean isAfter = date.after(specifiedDate);System.out.println(isBefore); // falseSystem.out.println(isEquals); // falseSystem.out.println(isAfter); // true}
}
2.2 Calendar 类方法
Calender 类是 java 中用于处理日期和时间的类,位于 java.util
包中。它提供了一种比 Date
类更灵活和功能更强大的日期和时间操作方式。
方法 | 描述 |
---|---|
getTime() | 返回一个表示此 Calendar 时间值(从历元到现在毫秒偏移量)的 Date 对象。 |
get(int field) | 返回给定日历字段的值。 |
set(int field, int value) | 设置给定日历字段的值。 |
add(int field, int amount) | 根据日历的规则,将指定的时间量添加到给定日历字段。 |
roll(int field, int amount) | 根据日历的规则,将给定的时间量添加到给定日历字段,但不更改较大的字段值。 |
getActualMaximum(int field) | 返回指定日历字段的最大值。 |
getActualMinimum(int field) | 返回指定日历字段的最小值。 |
getDisplayName(int field, int style, Locale locale) | 返回给定字段值的本地化表示名称。 |
getFirstDayOfWeek() | 返回一个代表每周的第一天的值。 |
setFirstDayOfWeek(int value) | 设置一星期中的第一天是哪一天。 |
getMinimum(int field) | 返回给定日历字段的最小值。 |
getMaximum(int field) | 返回给定日历字段的最大值。 |
例题2 : Calender使用
import java.util.Calendar;
import java.util.Date;public class CalenderDemo01 {public static void main(String[] args) {// 获取当前时间和日期的 Calender 对象Calendar calendar = Calendar.getInstance();System.out.println(calendar); // java.util.GregorianCalendar[time=1692889224235,areFieldsSet=true,···]// 设置日期为指定的年份、月份和日 1970年2月1日calendar.set(1970, 1, 1);System.out.println(calendar); // java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllField···]// 获取年份int year = calendar.get(Calendar.YEAR);System.out.println(year); // 1970// 获取月份(月份从 0 开始计数)int month = calendar.get(Calendar.MONTH) + 1;System.out.println(month); // 2// 获取当前月份中的第几天int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);System.out.println(dayOfMonth); // 1// 月份加 1calendar.add(Calendar.MONTH, 1);// 输出修改过后的月份System.out.println(calendar.getTime()); // Sun Mar 01 23:00:24 CST 1970// 将 Calender 转换为 Date 对象Date date = calendar.getTime();System.out.println(date); // Sun Mar 01 23:00:24 CST 1970}
}
Calender 和 Date 相互转换
import java.util.Calendar;
import java.util.Date;public class CalenderDeom02 {// 创建一个 Calender 对象public static void main(String[] args) {Calendar calendar = Calendar.getInstance();// 设置日期为指定的日期calendar.set(1970, 0, 1);// 获取当前的日期和时间Date date = calendar.getTime();System.out.println(date); // Thu Jan 01 23:25:45 CST 1970// 将 Calender 转换为 DateDate convertedDate = calendar.getTime();System.out.println(convertedDate); // Thu Jan 01 23:25:45 CST 1970// 创建一个新的 Date 对象Date newDate = new Date(70, 1, 1);// 将 Date 转换为 Calender Calendar convertedCalender = Calendar.getInstance();convertedCalender.setTime(newDate);System.out.println(convertedCalender); // java.util.GregorianCalendar[time=2649600000,areFieldsSet=true,areAllFieldsSet=true...}
}
请注意,尽管 Date 类和 Calendar 类仍然存在于 Java 中,但在 Java 8 及更高版本中,推荐使用新版的日期时间类(如 LocalDate、LocalTime、LocalDateTime)来替代旧版的 Date 和 Calendar 类,因为新版的类更加简洁、易用,并且线程安全。
2.3 SimpleDateFormat 类方法
SimpleDateFormat 类是 Java 中用于日期和时间格式化的类,它位于 java.text
包中。它允许将 Date
对象格式化为指定的日期和时间字符串,或将日期和时间字符串解析为 Date 对象。
方法 | 描述 |
---|---|
SimpleDateFormat(String pattern) | 使用指定的日期模式创建一个 SimpleDateFormat 对象。 |
String format(Date date) | 将给定的 Date 对象格式化为字符串,使用 SimpleDateFormat 的日期模式。 |
Date parse(String source) | 将给定的字符串解析为 Date 对象,使用 SimpleDateFormat 的日期模式。 |
void setLenient(boolean lenient) | 设置解析过程是否宽松,即是否严格遵循日期格式。 |
String toPattern() | 返回当前日期模式。 |
void applyPattern(String pattern) | 使用给定的日期模式更新当前日期模式。 |
DateFormatSymbols getDateFormatSymbols() | 获取与该日期格式化程序相关联的 DateFormatSymbols 对象,用于获取或设置本地化信息(如月名、星期几名等)。 |
void setDateFormatSymbols(DateFormatSymbols newFormatSymbols) | 设置与该日期格式化程序相关联的 DateFormatSymbols 对象,用于设置本地化信息(如月名、星期几名等)。 |
例题3 :SimpleDateFormatExample使用
import java.text.SimpleDateFormat;
import java.util.Date;public class SimpleDateFormatExample {public static void main(String[] args) {Date date = new Date();// 创建 SimpleDateFormat 对象,并指定格式化模式,默认2023/8/25 上午10:59SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a HH:mm:ss:SSS");// 格式化 Date 对象为字符串String formatDate = sdf.format(date);System.out.println(formatDate); // 2023-08-25 上午 11:02:59:178// 解析字符串为 Date 对象String dateString = "1949-10-01 下午 3:30:45:123";try {Date parsedDate = sdf.parse(dateString);System.out.println(parsedDate);} catch (Exception e) {e.printStackTrace();}}
}
2.4 LocalDate 类方法
LocalDate 是 Java 中的一个日期类,它提供了处理日期的方法和功能。LocalDate 类位于 java.time
包中,从 JDK 8
引入。LocalDate 是不可变类型,final 修饰储存值的数组。
方法 | 描述 |
---|---|
static LocalDate now() | 返回当前日期。 |
static LocalDate of(int year, int month, int dayOfMonth) | 根据指定的年、月、日创建一个 LocalDate 对象。 |
int getYear() | 获取日期中的年份。 |
Month getMonth() | 获取日期中的月份,返回一个 Month 枚举对象。 |
int getDayOfMonth() | 获取日期中的月份中的天数。 |
DayOfWeek getDayOfWeek() | 获取日期中的星期几,返回一个 DayOfWeek 枚举对象。 |
LocalDate plusDays(long daysToAdd) | 返回当前日期加上指定天数后的日期。 |
LocalDate minusDays(long daysToSubtract) | 返回当前日期减去指定天数后的日期。 |
boolean isBefore(LocalDate other) | 检查当前日期是否在另一个日期之前。 |
boolean isAfter(LocalDate other) | 检查当前日期是否在另一个日期之后。 |
boolean isEqual(LocalDate other) | 检查当前日期是否等于另一个日期。 |
String format(DateTimeFormatter formatter) | 将日期格式化为指定的字符串格式。 |
例题4 : LocalDate使用
import java.time.LocalDate;
import java.time.Month;
import java.time.format.DateTimeFormatter;public class LocalDateDemo01 {public static void main(String[] args) {// 创建 LocalDate 对象LocalDate today = LocalDate.now(); // 当前日期创建对象System.out.println(today); // 2023-08-25LocalDate specificDate = LocalDate.of(1970, 1, 1); // 指定日期创建对象System.out.println("specificDate" + specificDate); // 1970-01-01// 解析字符串为 LocalDate 对象LocalDate parseDate = LocalDate.parse("1949-10-01");System.out.println("parseDate" + parseDate); // 1949-10-01// 获取日期信息int year = today.getYear();System.out.println("年份" + year); // 年份2023Month month = today.getMonth();System.out.println("月份" + month); // AUGUSTint mon = today.getMonthValue();System.out.println("月份" + mon); // 8int day = today.getDayOfYear(); // 一年中的第几天System.out.println(day); // 237int day1 = today.getDayOfMonth(); // 当月的第多少天System.out.println(day1); // 25// 增加、减少日期LocalDate futureDate = specificDate.plusDays(7);System.out.println("增加日期:" + futureDate); // 增加日期:1970-01-08LocalDate pastDate = specificDate.minusMonths(1);System.out.println("减少日期:" + pastDate); // 减少日期:1969-12-01// 判定日期关系boolean isBefore = specificDate.isBefore(parseDate);System.out.println(isBefore); // falseboolean isAfter = specificDate.isAfter(parseDate);System.out.println(isAfter); // trueboolean isEqual = specificDate.isEqual(parseDate);System.out.println(isEqual); // false// 格式化日期DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");String fomattedDate = specificDate.format(formatter);System.out.println("格式化后的日期" + fomattedDate); // 格式化后的日期1970-01-01}
}
Date 和 LocalDate 相互转换
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;public class DateLocalDateConversionExample {public static void main(String[] args) {//将Date对象转换为LocalDate对象Date date = new Date();LocalDate localDate = dateToLocalDate(date);System.out.println(localDate);// 将LocalDate对象转换为Date对象LocalDate localDate1 = LocalDate.of(1970, 1, 1);Date convertedDate = localDatetoDate(localDate1);System.out.println(convertedDate);}// 将LocalDate对象转换为Date对象private static Date localDatetoDate(LocalDate localDate1) {ZoneId zoneId = ZoneId.systemDefault();return Date.from(localDate1.atStartOfDay(zoneId).toInstant());}// 将Date对象转换为LocalDate对象private static LocalDate dateToLocalDate(Date date) {ZoneId zoneId = ZoneId.systemDefault();return date.toInstant().atZone(zoneId).toLocalDate();}
}
2.5 LocalTime 类方法
LocalTime 是 Java 中的一个时间类,它提供了处理时间的方法和功能。LocalDate 类位于 java.time
包中,从 JDK 8
引入。LocalTime 是不可变类型,final 修饰储存值的数组。
方法 | 描述 |
---|---|
static LocalTime now() | 返回当前时间。 |
static LocalTime of(int hour, int minute) | 根据指定的小时和分钟创建一个 LocalTime 对象。 |
int getHour() | 获取时间中的小时数。 |
int getMinute() | 获取时间中的分钟数。 |
int getSecond() | 获取时间中的秒数。 |
LocalTime plusHours(long hoursToAdd) | 返回当前时间加上指定小时数后的时间。 |
LocalTime minusHours(long hoursToSubtract) | 返回当前时间减去指定小时数后的时间。 |
LocalTime plusMinutes(long minutesToAdd) | 返回当前时间加上指定分钟数后的时间。 |
LocalTime minusMinutes(long minutesToSubtract) | 返回当前时间减去指定分钟数后的时间。 |
LocalTime plusSeconds(long secondsToAdd) | 返回当前时间加上指定秒数后的时间。 |
LocalTime minusSeconds(long secondsToSubtract) | 返回当前时间减去指定秒数后的时间。 |
boolean isBefore(LocalTime other) | 检查当前时间是否在另一个时间之前。 |
boolean isAfter(LocalTime other) | 检查当前时间是否在另一个时间之后。 |
boolean isEqual(LocalTime other) | 检查当前时间是否等于另一个时间。 |
String format(DateTimeFormatter formatter) | 将时间格式化为指定的字符串格式。 |
例题5 : LocalTime使用
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;public class LocalTimeDemo01 {public static void main(String[] args) {// 创建 LocalTime 对象LocalTime now = LocalTime.now();System.out.println("当前时间" + now); // 当前时间19:56:31.828827500LocalTime specificTime = LocalTime.of(14, 30);System.out.println("指定时间" + specificTime); // 指定时间14:30// 解析字符串为 loCalTime 对象LocalTime parsedTime = LocalTime.parse("08:45:30");System.out.println("解析后的时间" + parsedTime); // 解析后的时间08:45:30// 获取时间信息int hour = now.getHour();System.out.println("小时数" + hour); // 小时数19int minute = now.getMinute();System.out.println("分钟数" + minute); // 分钟数56int second = now.getSecond();System.out.println("秒数" + second); // 秒数31// 增加、减少时间LocalTime futureTime = now.plusHours(3);System.out.println("未来时间:" + futureTime); // 未来时间:22:56:31.828827500LocalTime pastTime = now.minusMinutes(15);System.out.println("过去时间:" + pastTime); // 过去时间:19:41:31.828827500// 判定时间关系boolean isBefore = now.isBefore(specificTime);System.out.println(isBefore); // falseboolean isEqusl = pastTime.equals(futureTime);System.out.println(isEqusl); // falseboolean isAfter = pastTime.isAfter(futureTime);System.out.println(isAfter); // false// 格式化时间DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");String formattedTime = now.format(formatter);System.out.println(formattedTime); // 19:56:31}
}
在判定日期时间关系中,日期是否相等为
isEqual()
,时间为equals()
。
2.6 LocalDateTime 类方法
LocalDateTime 是 Java 中的一个日期时间类,LocalDate 类位于 java.time
包中,从 JDK 8
引入。它结合了 LocalDate
和 LocalTime
的功能,用于表示日期和时间的组合。
方法 | 描述 |
---|---|
static LocalDateTime now() | 返回当前日期和时间。 |
static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute) | 根据指定的年、月、日、小时和分钟创建一个 LocalDateTime 对象。 |
LocalDate toLocalDate() | 获取 LocalDateTime 对象中的日期部分,返回一个 LocalDate 对象。 |
LocalTime toLocalTime() | 获取 LocalDateTime 对象中的时间部分,返回一个 LocalTime 对象。 |
int getYear() | 获取日期时间中的年份。 |
Month getMonth() | 获取日期时间中的月份,返回一个 Month 枚举对象。 |
int getDayOfMonth() | 获取日期时间中的月份中的天数。 |
int getHour() | 获取时间中的小时数。 |
int getMinute() | 获取时间中的分钟数。 |
LocalDateTime plusDays(long daysToAdd) | 返回当前日期时间加上指定天数后的日期时间。 |
LocalDateTime minusDays(long daysToSubtract) | 返回当前日期时间减去指定天数后的日期时间。 |
LocalDateTime plusHours(long hoursToAdd) | 返回当前日期时间加上指定小时数后的日期时间。 |
LocalDateTime minusHours(long hoursToSubtract) | 返回当前日期时间减去指定小时数后的日期时间。 |
LocalDateTime plusMinutes(long minutesToAdd) | 返回当前日期时间加上指定分钟数后的日期时间。 |
LocalDateTime minusMinutes(long minutesToSubtract) | 返回当前日期时间减去指定分钟数后的日期时间。 |
LocalDateTime plusSeconds(long secondsToAdd) | 返回当前日期时间加上指定秒数后的日期时间。 |
LocalDateTime minusSeconds(long secondsToSubtract) | 返回当前日期时间减去指定秒数后的日期时间。 |
boolean isBefore(LocalDateTime other) | 检查当前日期时间是否在另一个日期时间之前。 |
boolean isAfter(LocalDateTime other) | 检查当前日期时间是否在另一个日期时间之后。 |
boolean isEqual(LocalDateTime other) | 检查当前日期时间是否等于另一个日期时间。 |
String format(DateTimeFormatter formatter) | 将日期时间格式化为指定的字符串格式。 |
例题6 : LocalDateTime使用
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class LocalDateTimeDemo {public static void main(String[] args) {// 创建 LocalDateTime 对象LocalDateTime now = LocalDateTime.now();LocalDateTime specificDateTime = LocalDateTime.of(1949, 10, 1, 14, 20);System.out.println("指定日期时间" + specificDateTime); // 指定日期时间1949-10-01T14:20// 解析字符串为 LocalDateTime 对象LocalDateTime parsedDateTime = LocalDateTime.parse("1970-01-01T09:00:00");System.out.println("解析后的日期时间" + parsedDateTime); // 解析后的日期时间1970-01-01T09:00// 获取日期时间信息LocalDate date = specificDateTime.toLocalDate();System.out.println("日期部分" + date); // 日期部分1949-10-01int year = specificDateTime.getYear();System.out.println("年份" + year); // 年份1949int minute = specificDateTime.getMinute();System.out.println("分钟数" + minute); // 分钟数20// 减少、增加日期时间LocalDateTime futureDateTime = specificDateTime.plusDays(7).plusHours(3);System.out.println("增加日期时间" + futureDateTime); // 增加日期时间1949-10-08T17:20// 判定日期时间关系boolean isEqual = parsedDateTime.isEqual(specificDateTime);System.out.println(isEqual); // false// 格式化日期时间DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");String formattedDateTime = parsedDateTime.format(formatter);System.out.println("格式化后的日期时间为" + formattedDateTime); // 格式化后的日期时间为1970-01-01 09:00:00:000}
}
相关文章:

Java基础十八(正则表达式 + 日期时间)
1. 正则表达式 1.1 普通字符 字符描述示例[abc]匹配 […] 中所有字符[hlo] 匹配字符串 "hello world" 中所有的 h l o 字母[^ABC]匹配除了 […] 中所有字符[hlo] 匹配字符串 "hello world" 中除了 h l o 的所有字母[^a-z]匹配除了 […] 中所有字符[hlo] 匹…...

Linux C 多进程编程(面试考点)
嵌入式开发为什么要移植操作系统? 1.减小软硬件的耦合度,提高软件的移植性 2. 操作系统提供很多库和工具(QT Open CV),提高开发效率 3.操作系统提供多任务机制,______________________? (提高C…...

c++一级
与7无关的数 #include<iostream> #include<iomanip> using namespace std; int main() { int n,a,sum0,c0; cin>>n; for(int i1;i<n;i){ if(i%7!0){ ai; c0; …...

Code Lab - 34
GAT里面有一些地方看的不是太懂(GAT里Multi Attention的具体做法),暂时找了参考代码,留一个疑问 1. 一个通用的GNN Stack import torch_geometric import torch import torch_scatter import torch.nn as nn import torch.nn.fun…...

后端返回文件流,前端怎么导出、下载(8种方法可实现)
在前端导出和下载后端返回的文件流时,可以使用以下几种方法: 使用window.open()方法: 在前端使用window.open()方法打开一个新的窗口或标签页,并将后端返回的文件流作为URL传递给该方法。浏览器会自动下载该文件。例如:…...

什么是 ThreadLocal?
ThreadLocal 是 Java 中的一个类,用于在多线程环境下,为每个线程提供独立的变量副本。每个线程可以通过 ThreadLocal 存储和获取数据,而不会影响其他线程的数据。这在某些情况下非常有用,特别是当多个线程需要访问共享数据,但又希望保持数据的隔离性时。 ThreadLocal 主要…...

CANOCO5.0实现冗余分析(RDA)最详细步骤
在地理及生态领域会常使用RDA分析,RDA的实现路径也有很多,今天介绍一下CANOCO软件的实现方法。 1.软件安装 时间调整到2010年 2.数据处理 得有不同的物种或者样点数值,再加上环境因子数据。 3.软件运行 4.结果解读 结果解读主要把握这几点…...

【tkinter 专栏】掷骰子游戏
文章目录 前言本章内容导图1. 需求分析2. 系统功能结构3. 设计流程4. 系统开发环境5. 系统预览6. 窗口布局7. 功能实现用户和电脑选择骰子的点数大小摇骰子过程实现判断游戏结果单击开始按钮进行游戏源代码汇总前言 本专栏将参考《Python GUI 设计 tkinter 从入门到实践》书籍…...

19 NAT穿透|python高级
文章目录 网络通信过程NAT穿透 python高级GIL锁深拷贝与浅拷贝私有化import导入模块工厂模式多继承以及 MRO 顺序烧脑题property属性property装饰器property类属性 魔法属性\_\_doc\_\_\_\_module\_\_ 和 \_\_class\_\_\_\_init\_\_\_\_del\_\_\_\_call\_\_\_\_dict\_\_\_\_str…...

2023常见前端面试题
以下是一些2023年秋招常见的前端面试题及其答案: 1. 请解释一下什么是前端开发? 前端开发是指使用HTML、CSS和JavaScript等技术来构建网页和用户界面的过程。前端开发人员负责将设计师提供的视觉设计转化为可交互的网页,并确保网页在不同设备…...

登录校验-JWT令牌-生成和校验
目录 JWT-生成 具体代码 运行结果如下 JWT-校验 具体代码 运行结果如下 小结 JWT-生成 具体代码 /*** 测试JWT令牌的生成*/Testpublic void TestJWT() {// 设置自定义内容Map<String, Object> claims new HashMap<>();claims.put("id", 1);claims…...

GIT 常用指令
基础指令 $ git init #初始化仓库,在该文件夹创建的为workspace$ git add . #已暂存 [.通配符,全部添加]$ git commit -m "log add file" #提交到仓库,并写了日志 ”log add file“$ git status #查看状态,可查看被修改的文件…...

多目标优化
https://zhuanlan.zhihu.com/p/158705342 概念 单目标优化只有一个优化目标,所以可以比较其好坏。 但是多目标优化,在需要优化多个目标时,容易存在目标之间的冲突,一个目标的优化是以其他目标劣化为代价的,所以我们要…...

odoo的优势
plus,主要是为了能尽早通过开发者审核,加入到chatgpt4 api的开发中去,接入到我们odoo aiCenter中。4的回答,明显比3.5的更聪明了。 可能是由于国内的特殊情况吧,我们的chatgpt模块很受欢迎,我也被问了不少…...

Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【三】
😀前言 本篇博文是关于Spring Boot(Vue3ElementPlusAxiosMyBatisPlusSpring Boot 前后端分离)【三】的分享,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我…...

Kali 软件管理
kali 更新 1. 查看发行版本 ┌──(root㉿kali)-[~] └─# lsb_release -a No LSB modules are available. Distributor ID: Kali Description: Kali GNU/Linux Rolling Release: 2023.2 Codename: kali-rolling2. 查看内核版本 ┌──(root㉿kali)-[~] └─…...

加油站【贪心算法】
加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas 和…...

java八股文面试[多线程]——死锁、活锁、饥饿
DCL双重锁:TODO 如何预防死锁: 如何查看线程死锁: 知识来源: 【2023年面试】描述一下线程安全活跃态问题,以及竞态条件_哔哩哔哩_bilibili 【2023年面试】如何预防死锁_哔哩哔哩_bilibili 【并发与线程】阿里一面&…...

设计模式——装饰器模式
装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 装饰器模式通过将对象包装在装饰器类中,以便动态…...

①matlab的命令掌握
目录 输入命令 命名变量 保存和加载变量 使用内置的函数和常量 输入命令 1.您可以通过在命令行窗口中 MATLAB 提示符 (>>) 后输入命令 任务 使用命令 3*5 将数值 3 和 5 相乘。 答案 3*5 2.除非另有指定,否则 MATLAB 会将计算结果存储在一个名为 ans…...

MySQL----索引
一、索引的概念 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于c语言的链表通过指针指向数据记录的内存地址)。使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该…...

秒杀系统的业务流程以及优化方案(实现异步秒杀)
先看基本的业务流程 那么我们可以看到整个流程都是一个线程来完成的,这样的话耗时还是很长的,那么可不可以采用多线程去实现呢? 首先我们要思考怎么对业务进行拆分,可以想象一个我们去饭店点餐,会有前台接待ÿ…...

Java实现根据商品ID获取1688商品详情跨境属性数据,1688商品重量数据接口,1688API接口封装方法
要通过1688的API获取商品详情跨境属性数据,您可以使用1688开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例,展示如何通过1688开放平台API获取商品详情属性数据接口: 首先,确保您已注册成为1688开放平台的开发者…...

前端面试的性能优化部分(14)每天10个小知识点
目录 系列文章目录前端面试的性能优化部分(1)每天10个小知识点前端面试的性能优化部分(2)每天10个小知识点前端面试的性能优化部分(3)每天10个小知识点前端面试的性能优化部分(4)每天…...

Uniapp笔记(六)uniapp基础
一、腾讯地图 1、uniapp地图渲染 <template><view><map class"map" :longitude"longitude" :latitude"latitude"></map></view> </template> <script>export default {data() {return {longitude:1…...

C++ sort函数用法
sort函数是C标准库中的一个排序算法,头文件是algorithm,用于对容器中的元素进行排序。它可以对任何可排序的容器(如数组、向量、列表等)进行排序。 有以下四个基本用法: 1. 自定义排序规则:可以通过提供自…...

电子仓库预测水浸事件,他怎么做到的?
仓库环境中水浸事件可能导致严重的损失,不仅对货物造成损害,还可能影响设备的正常运行甚至威胁安全。 因此,为了应对这一挑战,引入一套完善的仓库水浸监控系统成为了不可或缺的措施。 客户案例 广东某电子公司是一家领先的电子设…...

CMake调用第三方库的两种方法
为了让连接器搜索到库路径,一般有两种方法 link_directories命令 使用步骤## 在add_executable或add_library前引入第三方库 # 1.引入第三方库,${THIRD_PARTY_PREFIX}为用户定义的第三方库目录 link_directories(${THIRD_PARTY_PREFIX}/lib) # 2.增加第三方库头文…...

Django基础7——用户认证系统、Session管理、CSRF安全防护机制
文章目录 一、用户认证系统二、案例:登陆认证2.1 平台登入2.2 平台登出2.3 login_required装饰器 三、Django Session管理3.1 Django使用Session3.1.1 Cookie用法3.1.2 Session用法 3.2 案例:用户登录认证 四、Django CSRF安全防护机制 一、用户认证系统…...

基于流计算 Oceanus(Flink) CDC 做好数据集成场景
由于第一次做实时,所以踩坑比较多,见谅(测试环境用的flink),小公司没有用到hadoop组件 一、踩坑记录 1:本地代码的flink版本是flink1.15.4,生产环境是flink1.16.1,在使用侧输出流时报错,需要使用以下写法,需要使用Si…...