Advertisement

网络安全 JavaScript 学习笔记(十一)Math和Date(1),2024年新拿offer

阅读量:

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  1. toString() 方法可以在数字转成字符串的时候给出一个进制数
  • 语法: toString(你要转换的进制)
复制代码
    var num = 100
    console.log(num.toString(2)) // 1100100
    console.log(num.toString(8)) // 144
    console.log(num.toString(16)) // 64
    
    
    
      
      
      
      
      
    
  1. parseInt() 方法能够在将字符串转换为数字的过程中,将其视为特定进制的数值并最终转化为十进制形式。
  • 语法:parseInt(待转换的字符串,指定进制)
复制代码
    var str = 100
    console.log(parseInt(str, 8)) // 64 把 100 当作一个 八进制 的数字转换成 十进制 以后得到的
    console.log(parseInt(str, 16)) // 256 把 100 当作 十六进制 的数字转换成 十进制 以后得到的
    console.log(parseInt(str, 2)) // 4 把 100 当作 二进制 的数字转换成 十进制 以后得到的
    
    
    
      
      
      
      
      
    

Date

  • JavaScript 语言中自带的构造函数,其主要功能是用于获取当前时间信息的

new Date()

当未提供任何参数时,new Date() 默认会生成当前时刻的时间对象。

复制代码
    var time = new Date()
    console.log(time) // 当前时间 Fri Mar 01 2019 13:11:23 GMT+0800 (中国标准时间)
    
    
    
      
      
      
    

当向 new Date() 传递参数时,能够根据所输入的时间信息生成对应的时间对象。

复制代码
    var time = new Date('2019-03-03 13:11:11')
    console.log(time) // Sun Mar 03 2019 13:11:11 GMT+0800 (中国标准时间)
    
    
    
      
      
      
    
  • new Date() 所接受的参数存在多种不同的形式

1、当输入两个数值时,第一个用于表示年份,第二个则用于标识月份

复制代码
    var time = new Date(2019, 00) // 月份从 0 开始计数,0 表示 1月,11 表示 12月
    console.log(time) // Tue Jan 01 2019 00:00:00 GMT+0800 (中国标准时间)
    
    
    
      
      
      
    

2、传输三个数值,其中前两个保持原样,第三个用于标识该月的具体日期,范围为 1 至 31

复制代码
    var time = new Date(2019, 00, 05) 
    console.log(time) // Sat Jan 05 2019 00:00:00 GMT+0800 (中国标准时间)
    
    
    
      
      
      
    

3、传输四个数值,其中前三个保持原样,第四个用于表示当前时刻,范围为 0 至 23

复制代码
    var time = new Date(2019, 00, 05, 22) 
    console.log(time) // Sat Jan 05 2019 22:00:00 GMT+0800 (中国标准时间)
    
    
    
      
      
      
    

4、传递五个数字,前四个保持不变,第五个数字用于表示当前小时的具体分钟数,其取值范围为0至59

复制代码
    var time = new Date(2019, 00, 05, 22, 33) 
    console.log(time) // Sat Jan 05 2019 22:33:00 GMT+0800 (中国标准时间)
    
    
    
      
      
      
    

5、传输六个数字,其中前五个保持不变,第六个用于表示当前分钟所对应的秒数,取值范围为 0 至 59

复制代码
    var time = new Date(2019, 00, 05, 22, 33, 55) 
    console.log(time) // Sat Jan 05 2019 22:33:55 GMT+0800 (中国标准时间)
    
    
    
      
      
      
    

6、输入字符串的表达方式

复制代码
    console.log(new Date('2019')) 
    // Tue Jan 01 2019 08:00:00 GMT+0800 (中国标准时间)
    console.log(new Date('2019-02')) 
    // Fri Feb 01 2019 08:00:00 GMT+0800 (中国标准时间)
    console.log(new Date('2019-02-03')) 
    // Sun Feb 03 2019 08:00:00 GMT+0800 (中国标准时间)
    console.log(new Date('2019-02-03 13:')) 
    // Sun Feb 03 2019 13:00:00 GMT+0800 (中国标准时间)
    console.log(new Date('2019-02-03 13:13:')) 
    // Sun Feb 03 2019 13:13:00 GMT+0800 (中国标准时间)
    console.log(new Date('2019-02-03 13:13:13')) 
    // Sun Feb 03 2019 13:13:13 GMT+0800 (中国标准时间)
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
    

将日期字符串格式化成指定内容

例如,所获取的时间字符串形式为 Sun Feb 03 2019 13:13:13 GMT+0800 (中国标准时间),若需从中提取年份信息,则需采用字符串截取的方式实现。然而,当前 JavaScript 已内置多种方法,可便捷地提取其中的特定内容。

getFullYear

getFullYear() 方法用于从特定字符串中提取对应的年份信息

复制代码
    var time = new Date(2019, 03, 03, 08, 00, 22)
    console.log(time.getFullYear()) // 2019
    
    
    
      
      
      
    

getMonth

getMonth() 方法用于识别特定字符串中所包含的月份信息

复制代码
    var time = new Date(2019, 03, 03, 08, 00, 22)
    console.log(time.getMonth()) // 3
    
    
    
      
      
      
    
    • 此处需要特别留意的一个细节
      • 月份的计数方式是以 0 作为起始点
      • 其中 0 对应的是 1月,1 对应的是 2月,以此类推

getDate

getDate() 方法用于获取指定字符串中所表示日期的天数信息

复制代码
    var time = new Date(2019, 03, 03, 08, 00, 22)
    console.log(time.getDate()) // 3
    
    
    
      
      
      
    

getHours

getHours() 方法用于获取指定字符串中所表示时间的小时部分。

复制代码
    var time = new Date(2019, 03, 03, 08, 00, 22)
    console.log(time.getHours()) // 8
    
    
    
      
      
      
    

getMinutes

getMinutes() 方法用于获取指定字符串中所表示的分钟数

复制代码
    var time = new Date(2019, 03, 03, 08, 00, 22)
    console.log(time.getMinutes()) // 0
    
    
    
      
      
      
    

getSeconds函数功能解析

getSeconds() 方法用于获取指定字符串中所表示时间的秒数部分

复制代码
    var time = new Date(2019, 03, 03, 08, 00, 22)
    console.log(time.getSeconds()) // 22
    
    
    
      
      
      
    

getDay

getDay() 方法用于获取特定字符串所对应日期在一周中的具体位置,其中周日被定义为 0,周六则对应数值 6

复制代码
    var time = new Date(2019, 03, 08, 08, 00, 22)
    console.log(time.getDay()) // 1
    
    
    
      
      
      
    

getTime函数实现与优化

getTime() 方法用于获取从 格林威治时间 起算至当前执行时刻所经过的毫秒数值

复制代码
    var time = new Date(2019, 03, 08, 08, 00, 22)
    console.log(time.getTime()) // 1554681622000
    
    
    
      
      
      
    

获取时间差

  • 表示计算两个时间点之间的间隔时长
    • 在 JavaScript 中,无法直接对时间进行减法运算
    • 需要借助特定的处理方式
    • 在计算机编程领域,存在一个具有特殊意义的时间节点,即 1970年01月01日00时00分00秒
    • 这一时刻被称作 格林威治时间
    • 在所有编程系统中,该时间节点是统一的,并且 格林威治时间 对应的数值为 0
    • 自从 格林威治时间 起始,每经过1毫秒,对应的数值将增加1
    • 因此可以获取任意某一时刻与 格林威治时间 相隔的毫秒数值
    • 接下来通过两个毫秒数值的差值,即可计算出两个时间节点之间的毫秒差
    • 最终利用这一毫秒差值来推算出精确的时间信息

计算时间差

  • 例如:接下来我们对 2019-01-01 00:00:002019-01-03 04:55:34 这一时间段的持续时长进行计算

1、首先需要确定这两个时间节点对应的 格林威治时间 的毫秒数值

复制代码
    var time1 = new Date('2019-01-01 00:00:00')
    var time2 = new Date('2019-01-03 04:55:34')
    ​
    time1 = time1.getTime()
    time2 = time2.getTime()
    ​
    console.log(time1) // 1546272000000
    console.log(time2) // 1546462534000
    
    
    
      
      
      
      
      
      
      
      
      
    

2、通过计算两个时间点之间的差值,可以得出它们之间间隔的毫秒数值。

复制代码
    var differenceTime = time2 - time1
    console.log(differenceTime) // 190534000
    
    
    
      
      
      
    

目前我们已经得出两个时间节点之间的毫秒差值

3、将所计算出的毫秒数值转换为具体的时间形式

    • 首先确定包含多少个完整的天数
      • 因为一个标准日的毫秒总量为 1000 * 60 * 60 * 24
      • 将总毫秒数值除以单日对应的毫秒总量,即可得出完整的天数
复制代码
    var time1 = new Date('2019-01-01 00:00:00')
    var time2 = new Date('2019-01-03 04:55:34')
    time1 = time1.getTime()
    time2 = time2.getTime()
    var differenceTime = time2 - time1
    ​
    // 计算整的天数
    var day = differenceTime / (1000 * 60 * 60 * 24) // 2.20525462962963
    day = Math.ceil(day) // 2
    
    
    
      
      
      
      
      
      
      
      
      
      
    

由于计算结果中包含小数形式的天数,因此我们采取向下取整的方式,以获取完整的天数数量

  • differenceTime 中减去两天对应的毫秒数值后,剩余部分即为不足一天的毫秒数值
  • 接下来,通过该不足一天的毫秒数值来推算其中包含多少小时
  • 已知一小时的标准毫秒数为 1000 * 60 * 60
  • 将不足一天的毫秒数值除以每小时对应的毫秒数,即可得出具体的小时数量
复制代码
    var time1 = new Date('2019-01-01 00:00:00')
    var time2 = new Date('2019-01-03 04:55:34')
    time1 = time1.getTime()
    time2 = time2.getTime()
    var differenceTime = time2 - time1
    ​
    // 计算整的天数
    var day = differenceTime / (1000 * 60 * 60 * 24) // 2.20525462962963
    day = Math.floor(day) // 2
    ​
    // 计算整的小时数
    var afterHours = differenceTime - (1000 * 60 * 60 * 24 * 2)
    var hours = afterHours / (1000 * 60 * 60)
    hours = Math.floor(hours) // 4
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    

与前述情况类似,我们需要执行向下取整操作

  • 同样地,通过 afterHours - 4小时所对应的毫秒数值,余下部分即为不足一小时的毫秒数
  • 接下来,利用这部分不足一小时的毫秒数值来计算其中包含多少分钟
  • 已知一分钟等于 1000 * 60 毫秒
  • 将不足一小时的毫秒数值除以一分钟对应的毫秒数,即可得出具体的分钟数

是否仍有朋友不清楚网络安全面试前是否可以提前进行刷题?耗时一周整理出的160+网络安全面试题目,正值金九银十之际,助你在面试中脱颖而出!

王岚嵚工程师面试题(附带答案),只能为各位提供到此为止的帮助!如果能够正确回答其中70%的问题,在寻找一份安全相关的工作时,应当不会遇到太大困难。

对于拥有1-3年工作经验、计划跳槽的朋友们而言,这同样是一份非常有价值的复习资料!

【完整版获取方式请见文章末尾!!

由于涉及内容数量庞大,无法逐一进行截图展示。

黑客学习资源推荐

最后为各位提供一套完整的网络安全学习资源,旨在为有志于深入该领域的学习者提供一定的支持与帮助!

针对从未涉足网络安全领域的初学者,我们特别制定了详尽的学习发展路径图。这套路线图堪称最为严谨且系统化的学习框架,只要依照这一总体方向进行学习,必将取得良好的成效。

😝如需获取相关资料,欢迎主动联系获取~

1️⃣零基础入门

学习路径构建与优化

针对尚未涉足网络安全领域的学习者,我们特别制定了详尽的学习发展路径图。这套方案堪称最为严谨且结构完整的知识体系,只要依照这一总体框架进行学习,便能够确保取得良好的学习成效。

image

② 路线对应学习视频

此外,每条成长路径所对应的板块均配备了相应的视频资源:

image-20231025112050764

2️⃣视频配套工具&国内外网安书籍、文档

① 工具

② 视频

image1

书籍相关研究

image2

该资源具有一定的敏感性,相关信息尚未完整呈现,如需获取请前往最下方位置进行查阅。

在这里插入图片描述
在这里插入图片描述

简历模板设计与应用

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

全部评论 (0)

还没有任何评论哟~