给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
网络安全面试题
绿盟护网行动
还有大家最喜欢的黑客技术
网络安全源码合集+工具包
所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
3. 常用API方法
当我们构造出来一个Date对象之后,就可以使用它的一些API方法进行时间的操作了,这些常用的API方法如下:
序号 | 方法和描述 |
---|---|
boolean after(Date date) | 若调用该方法的Date对象,在指定的日期之后,则返回true,否则返回false。 |
boolean before(Date date) | 若调用此方法的Date对象,在指定的日期之前,则返回true,否则返回false。 |
int compareTo(Date date) | 比较调用此方法的Date对象和指定的日期。若两者相等则返回0,若该对象在指定日期之前则返回负数,若该对象在指定日期之后则返回正数。 |
boolean equals(Object date) | 若调用该方法的Date对象,和指定日期相等时则返回true,否则返回false。 |
long getTime( ) | 返回自1970年1月1日 00:00:00 GMT以来的毫秒数。 |
void setTime(long time) | 用从1970年1月1日00:00:00 以后的time毫秒数,设置时间和日期。 |
String toString( ) | 把该Date对象转换成dow mon dd hh:mm:ss zzz yyyy格式的字符串,其中dow是指一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。 |
4. 使用方法
4.1 基本使用
接下来我们先通过一个简单的案例,来演示一下Date的基本用法。
import java.util.Date;
public class Demo01 {
public static void main(String[] args) {
//获取当前时间的时间戳
long currentTimeMillis = System.currentTimeMillis();
System.out.println("时间戳="+currentTimeMillis);
//获取当前时间对象
Date date=new Date();
//Sat Feb 11 12:04:03 IRKT 2023
System.out.println("当前时间="+date);
//转为字符串:Sat Feb 11 12:04:03 IRKT 2023
System.out.println("当前时间="+date.toString());
//转换为本地时区:2023年2月11日 下午12:04:03
System.out.println("当前时间,Locale="+date.toLocaleString());
//转换为GMT时区:11 Feb 2023 04:04:03 GMT
System.out.println("当前时间,GMT="+date.toGMTString());
}
}
如果我们想获取当前时间的时间戳,可以使用System.currentTimeMillis()方法。构造出Date对象之后,我们可以直接打印该对象,就能展示出当前时间,但是这个格式并不一定符合我们中国人的阅读习惯,后面我们可以对日期进行格式化操作。
4.2 其他用法
除了上面这些基本用法之外,Date还有其他的一些用法。
import java.util.Date;
public class Demo01 {
public static void main(String[] args) {
//获取当前时间对象
Date date=new Date();
//获取年月日
System.out.println("年="+(date.getYear() + 1900)); // 必须加上1900
System.out.println("月="+(date.getMonth() + 1)); // 0~11,必须加上1
System.out.println("日="+date.getDate()); // 1~31,不能加1
System.out.println("时="+date.getHours()); // 0~23
System.out.println("分="+date.getMinutes()); // 0~59,不能加1
System.out.println("秒="+date.getSeconds()); // 0~59,不能加1
System.out.println("时间戳="+date.getTime()); // 时间戳,毫秒值
//计算自己已经活了多少天,1990年01月31日
//构造对象的另一个方法,已过时。year:要减去1900,月份从0开始,0-11;日期是1-31
Date d1 = new Date(1990-1900, 2-1, 31);
Date d2 = new Date();
long time = d2.getTime() - d1.getTime();
System.out.println("已活天数="+time/1000/60/60/24);
}
}
另外我们还要注意,getYear()方法返回的年份必须加上1900;getMonth()方法返回的月份是0-11,分别表示1-12月,所以要加1;而getDate()方法返回的日期范围是1~31,就不能加1。
在打印本地时区表示的日期和时间时,不同的计算机可能会有不同的展示结果,后面我们可以使用SimpleDateFormat设置出我们想要的日期时间格式。
4.3 统计时间差
有时候我们要统计某个功能的执行时间,此时就可以用该功能结束时的时间,减去开始时的时间,得到一个时间差,这就是该功能的执行时间。
import java.util.Date;
public class Demo03 {
public static void main(String[] args) {
//获取当前时间对象
//开始时间
Date startDate=new Date();
for(int i=0;i<100000;i++) {
System.out.println("循环次数"+i);
}
//结束时间
Date endDate=new Date();
//计算时间差
long time = endDate.getTime() - startDate.getTime();
System.out.println("10w次循环的执行时间是 "+time+" 毫秒");
}
}
三. Calendar日历类
1. 简介
Calendar类是Java时间类Date的扩展。
相比Date,它拥有更强大的功能,主要是多了可以做简单日期和时间运算的功能,且在实现方式上也比Date类更复杂一些。Calendar可以用来计算日期,比如说计算下个月的日期,或者两个月前的日期等。
Calendar类
是一个抽象类,我们在实际使用时需要实现特定的子类,一般使用getInstance()
方法创建即可。Calendar
类有几个主要的子类,包括java.util.GregorianCalendar和java.util.TimeZone
。其中GregorianCalendar
类提供了标准的日历系统,可以用来计算未来或过去某天的日期。TimeZone类则可以用来在不同的时区之间,转换日期和时间。
2. Calendar常量字段
Calendar中有以下几个常用的常量字段,用于表示不同的意义。
常量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份 |
Calendar.DATE | 日期 |
Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |
Calendar.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期几 |
3. Calendar常用方法
除了以上常用的常量字段之外,Calendar还有一些常用的方法,如下表所示:
方法 | 描述 |
---|---|
void add(int field, int amount) | 根据日历的规则,为给定的日历字段 field 添加或减去指定的时间量 amount |
boolean after(Object when) | 判断此 Calendar 表示的时间是否在指定时间 when 之后,并返回判断结果 |
boolean before(Object when) | 判断此 Calendar 表示的时间是否在指定时间 when 之前,并返回判断结果 |
void clear() | 清空 Calendar 中的日期时间值 |
int compareTo(Calendar anotherCalendar) | 比较两个 Calendar 对象表示的时间值(从格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒至现在的毫秒偏移量),大则返回 1,小则返回 -1,相等返回 0 |
int get(int field) | 返回指定日历字段的值 |
int getActualMaximum(int field) | 返回指定日历字段可能拥有的最大值 |
int getActualMinimum(int field) | 返回指定日历字段可能拥有的最小值 |
int getFirstDayOfWeek() | 获取一星期的第一天。根据不同的国家地区,返回不同的值 |
static Calendar getInstance() | 使用默认时区和语言坏境获得一个日历 |
static Calendar getInstance(TimeZone zone) | 使用指定时区和默认语言环境获得一个日历 |
static Calendar getInstance(TimeZone zone,Locale aLocale) | 使用指定时区和语言环境获得一个日历 |
Date getTime() | 返回一个表示此 Calendar 时间值(从格林威治时间1970 年 01 月 01 日 00 时 00 分 00 秒至现在的毫秒偏移量)的 Date 对象 |
long getTimeInMillis() | 返回此 Calendar 的时间值,以毫秒为单位 |
void set(int field, int value) | 为指定的日历字段设置给定值 |
void set(int year, int month, int date) | 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值 |
void set(int year, int month, int date, int hourOfDay,int minute, int second) | 设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、 MINUTE 和 SECOND 的值 |
void setFirstDayOfWeek(int value) | 设置一星期的第一天是哪一天 |
void setTimeInMillis(long millis) | 用给定的 long 值设置此 Calendar 的当前时间值 |
Calendar对象可以调用set()方法将日历翻到任何一个时间,当参数 year取负数时表示是公元前。调用 get()方法可以获取年、月、日等时间信息,field参数的值是前面讲过的Calendar静态常量。
4. 构建Calendar对象
Calendar类是抽象类,所以我们不能通过new的方式来构建Calendar对象。在实际使用时,我们一般是要实现特定的子类,经常是使用getInstance()方法进行创建。
import java.util.Calendar;
public class Demo04 {
public static void main(String[] args) {
//默认是当前日期
Calendar c1 = Calendar.getInstance();
System.out.println("c1="+c1);
//创建一个代表2023年2月2日的Calendar对象
Calendar c2 = Calendar.getInstance();
c2.set(2023, 2-1, 2);
System.out.println("c2="+c2);
}
}
5. 获取当前时间
获取到Calendar对象之后,我们可以获取到当前日期对象的年月日时分秒等信息。
import java.util.Calendar;
public class Demo05 {
public static void main(String[] args) {
// 获取当前时间
Calendar c = Calendar.getInstance();
int y = c.get(Calendar.YEAR);
//月份要加1
int m = 1 + c.get(Calendar.MONTH);
int d = c.get(Calendar.DAY_OF_MONTH);
int w = c.get(Calendar.DAY_OF_WEEK);
int hh = c.get(Calendar.HOUR_OF_DAY);
int mm = c.get(Calendar.MINUTE);
int ss = c.get(Calendar.SECOND);
int ms = c.get(Calendar.MILLISECOND);
//2023-2-11 7 18:10:59.847
System.out.println(y + "-" + m + "-" + d + " " + w + " " + hh + ":" + mm + ":" + ss + "." + ms);
}
}
我们要注意,Calendar是通过get()方法获取年月日等信息的,其中返回的年份不必转换,返回的月份仍要加1,返回的星期要特别注意,1~7分别表示周日、周一、……周六。
6. 设置时间
我们通过Calendar.getInstance()方法获取到Calendar对象后,获取到的其实就是当前时间。如果我们想设置某个特定的日期和时间,需要先用clear()方法清除掉之前所有的字段。
import java.util.Calendar;
public class Demo06 {
public static void main(String[] args) {
// 设置时间
Calendar c = Calendar.getInstance();
// 清除所有
c.clear();
// 设置2023年
c.set(Calendar.YEAR, 2023);
// 设置2月(0~11)
c.set(Calendar.MONTH, 1);
// 设置2日
c.set(Calendar.DATE, 2);
// 设置时间
c.set(Calendar.HOUR_OF_DAY, 21);
c.set(Calendar.MINUTE, 22);
c.set(Calendar.SECOND, 23);
//Thu Feb 02 21:22:23 IRKT 2023
System.out.println("date="+c.getTime());
}
}
我们可以利用Calendar.getTime()方法,将一个Calendar对象转换成Date对象,后面我们就可以用SimpleDateFormat进行格式化操作了。
四. GregorianCalendar类
1. 简介
Java中除了有Calendar类实现了公历日历,还有一个子类GregorianCalendar。在GregorianCalendar类中,定义了两个字段:AD和BC,分别代表公历定义的两个时代。GregorianCalendar中的属性和方法与Calendar类似,壹哥就不再赘述了,接下来我们直接通过一个案例来进行展示其用法。
2. 基本用法
这里我们设计一个案例,来判断当前年份是闰年还是平年。
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
…(img-7rGcZqKC-1715695232133)]
[外链图片转存中…(img-RZPfjuvI-1715695232133)]
[外链图片转存中…(img-Jiegwwbk-1715695232133)]
[外链图片转存中…(img-7PN1JUq5-1715695232134)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新