本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。
最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。
最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。
学习路线图
其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。
相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。
网络安全工具箱
当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。
项目实战
最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~
面试题
归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
系列文章目录
JavaSE基础-(1)面向对象特征
JavaSE基础-(2)Java基础语法:Hello World
JavaSE基础-(3)类和对象
JavaSE基础-(4)数据类型
JavaSE基础-(5)流程控制
JavaSE基础-(6)异常处理
JavaSE基础-(7)修饰符
ps:以上文章属于博主 菜菜bu菜 专栏 《今天开始学Java》| 欢迎关注收藏哟~
JavaSE基础-(2)Java基础语法:Hello World
一、第一个Java程序
Hello World 用java来跟世界说你好
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World"); // 输出 Hello World
}
}
static是比较难以理解的一个关键字,在《Java编程思想》有一句话: “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途”。简单来说,被static修饰的不需要依赖于任何对象就可以进行访问。
来源于:RUNOOB.COM
但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。
二、基本语法
为增强程序可读性,Java有以下的约定:
- 类、接口:通常使用名词,且单词首字母要大写(例:HelloWorld )
- 方法:通常使用动词,首字母小写,其后用大写分割每个单词(驼峰法:eatFoodFunction)
- 常量:全部大写,单词之间用下划线分割(例:PI )
- 变量:通常用名词,其后用大写分割每个单词,避免$符号
同时要注意以下几点:
- 大小写敏感,Hello与hello在java中是不一样的
- 不能使用关键字
- 见名知意!尽量一看到变量名就知道这个变量代表什么意思
- 源文件的文件名与公共类名一致,并保存为.java
- java中基本数据类型:char 2字节(在字符串中一个英文字符或者数字、英文符号等占一个字节)
- 静态导入:当使用同一包下静态方法较多时,可以采用静态导入的方法
- 构造函数不能使用递归
- 递归函数可以有返回值也可以没有
- 任何类都可以声明为抽象
- 注意:一个类只能具有“ final”,“ abstract”和“ public”作为修饰符
- 数字是指0~9,字母指大小写英文字母、下划线(_)和美元符号($),也可以是Unicode字符集中的字符,如汉字
- 包(其实就是文件夹,用于对类进行管理):全部小写,多级包用点隔开。一般公司域名反写
- 不要使用中文汉字!
- 多敲多思考!!!
三、Java注释
Java 支持单行以及多行注释,注释中的字符将被 Java 编译器忽略。
实例:
/\*\*
\* 多行注释
\* @Author:菜菜bu菜
\*/
//单行注释:这是一个Java入门程序
public class HelloWorld {
public static void main(String[] args) {
/\* 这个也是单行注释 输出 Hello World\*/
System.out.println("Hello World");
}
}
四、关键字&标识符
关键字概念及特征
概念:
- Java关键字是事先定义好的对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。
特征:
- 完全小写
- 在高级编译器当中有特殊颜色,例如在增强版记事本中(例如Notepad++)有特殊颜色
关键字大全
java中有50个关键字和3个保留字,均不能用来命名标识符,分别是
关键字:
关键字 | 说明 | 关键字 | 说明 | 关键字 | 说明 | 关键字 | 说明 | 关键字 | 说明 |
---|---|---|---|---|---|---|---|---|---|
private | 私有的 | protected | 受保护的 | public | 公共的 | default | 默认 | abstract | 声明抽象 |
class | 声明类 | extends | 继承 | final | 最终的 | implements | 实现(接口) | interface | 声明接口 |
native | 原生方法(非 Java 实现) | new | 创建 | static | 静态 | strictfp | 精准 | synchronized | 线程 |
transient | 短暂 | volatile | 易失 | break | 跳出循环 | case | switch 选择 | continue | 继续 |
default | 默认 | do | 执行 | else | 否则 | for | 循环 | if | 如果 |
instanceof | 实例 | return | 返回 | switch | 根据值选择执行 | while | 循环 | assert | 断言表达式是否为真 |
catch | 捕捉异常 | finally | 有没有异常都执行 | throw | 抛出一个异常对象 | throws | 声明一个异常可能被抛出 | try | 捕获异常 |
import | 引入 | package | 包 | boolean | 布尔型 | byte | 字节型 | char | 字符型 |
double | 双精度浮点 | float | 单精度浮点 | int | 整型 | long | 长整型 | short | 短整型 |
super | 父类 | this | 该类 | void | 无返回值 | goto | 关键字 | const | 关键字 |
保留字:true、false、null,保留字是java预留的关键字
标识符是什么
凡是可以由自己命名的地方都称为标识符.
- 例: 项目名 ,包名 ,类名 .方法名
标识符命名规范
- ① 不能是关键字
- ② 所有标识符必须由一个字母(a~z 或 A~Z)或数字0-9,$和_
- ③ 不能以数字开头
- ④ 区分大小写,驼峰命名:FirstName、UserName
- ⑤ 包名全部小写,类名全部大驼峰式
- ⑥ 见名知意
例如:项目名:writetest 包名:com.cai.test 类名:TestDemo
五、常量&变量
常量:程序运行过程中不会改变的量。(字符 ‘b’、字符串 ‘abc’、整数 1、布尔 true|false)
变量:运行过程中可以改变的量。(局部变量、类变量(静态变量)、成员变量(非静态变量))
作用域 : 从定义变量的一行开始,一直到直接所属的大括号结束。
基本数据类型
类型 | 字节数 | 最大存储数据量 | 数据范围 |
---|---|---|---|
byte | 8位 | 255 | -128~127 |
short | 16位 | 65536 | -32768~32767 |
int | 32位 | 2的32次方减1 | -2的31次方到+2的31次方减1 |
long | 64位 | 2的64次方减1 | -2的63次方到+2的63次方减1 |
float | 32位 | 3.4e-45~1.4e38 | 直接赋值时必须在数字后加上f或F |
double | 64位 | 4.9e-324~1.8e308 | 赋值时可以加d或D也可以不加 |
boolean | 1位 | 默认值是 false | 只有true和false两个取值 |
char | 16位 | 存储Unicode码 | 用单引号赋值 |
数据类型转换
自动类型转换(隐式):代码不需要进行特殊处理,自动完成,小到大
long num1 = 2021112;
强制类型转换(显式):代码需要进行特殊的格式处理,不能自动完成,大到小
int num=(int)2021112;
注意:
- 1.强制类型转换有可能发生精度损失、数据溢出。
- 2.byte / short / char这三种类型都可以发生数学运算,例如加法“+”.
- 3.byte/short/char这三种类型在运算的时候,都会被首先向上提升成为int类型,然后再计算。符合ASCII编码表。
六、运算符&表达式
算术运算符
算术运算符:常见的四则运算符、自增、自减,它们的作用和在数学中的作用一样。
运算符 | 描述 | 例子 |
---|---|---|
+ | 加 | 1+1-2 |
* | 减 | 2-1=1 |
* | 乘 | 2*5=10 |
/ | 除 | 10/2=5 |
++ | 自增 | int a=1;a++ or ++a =2 |
– | 自减 | int a=1;–a or a-- =0 |
% | 取余 - 左操作数除以右操作数的余数 | 24%=3 |
实例:
public class Test1{
public static void main(String[] args){
int a = 3;
int b = 3;
int x = 2\*++a;
int y = 2\*b++;
System.out.println("自增运算符前缀运算后a="+a+",x="+x);
System.out.println("自增运算符后缀运算后b="+b+",y="+y);
}
}
结果:
自增运算符前缀运算后a=4,x=8
自增运算符后缀运算后b=4,y=6
关系运算符
关系运算符:关系运算符有6种关系,分别为小于、大于、小于等于、大于等于、等于、不等于。比较的结果是一个布尔值( true 或 false )。
运算符 | 描述 | 例子 | 结果 |
---|---|---|---|
> | 大于 | 2>1 | true |
>= | 大于等于 | 2>=1 | true |
< | 小于 | 2<1 | false |
<= | 小于等于 | 2<=1 | true |
== | 等于 | 2==1 | false |
!= | 不等于 | 2!=1 | true |
逻辑运算符
逻辑运算符:主要用于进行逻辑运算,连接两个Boolean值,代表两个条件。
假设布尔变量A为真,变量B为假
运算符 | 描述 | 例子 | 结果 |
---|---|---|---|
&& | 与 | (A && B) | false |
II | 或 | (AIIB) | true |
! | 非 | !(A && B) | true |
^ | 异或 | 2<=1 | (A ^ B) |
异或:有且只能有一个为true
实例:
public class Test2 {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b));
System.out.println("a || b = " + (a||b) );
System.out.println("!(a && b) = " + !(a && b));
System.out.println("(a^b) = " + (a ^ b));
}
}
结果:
a && b = false
a || b = true
!(a && b) = true
(a^b) = true
赋值运算符
赋值运算符:基本的赋值运算符是“=”。他的优先级别低于其他的运算符,所以对该运算符往往最后读取。
运算符 | 描述 | 例子 | 结果 |
---|---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B | 将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A | 等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A | 等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A | 等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A | C 与 A 同类型时等价于 C = C / A(%)= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
<< = | 左移位赋值运算符 | C << = 2 | 等价于C = C << 2 |
>> = | 右移位赋值运算符 | C >> = 2 | 等价于C = C >> 2 |
&= | 按位与赋值运算符 | C&= 2 | 等价于C = C&2 |
^ = | 按位异或赋值操作符 | C ^ = 2 | 等价于C = C ^ 2 |
I= | 按位或赋值操作符 | C I= 2 | 等价于C = C I2 |
位运算符
位运算符:位操作是程序设计中对位模式按位或二进制数的一元和二元操作。在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。
运算符 | 描述 | 例子 | 结果 |
---|---|---|---|
& | 如果相对应位都是1,则结果为1,否则为0 | (A&B) | -得到12,即0000 1100 |
I | 如果相对应位都是 0,则结果为 0,否则为 1 | - (A | B) |
^ | -如果相对应位值相同,则结果为0,否则为1 | -(A ^ B) | -得到49,即 0011 0001 |
〜 | -按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | -(〜A) | -得到-61,即1100 0011 |
<< | -按位左移运算符。左操作数按位左移右操作数指定的位数 | -A << 2 | -得到240,即 1111 0000 |
>> | -按位右移运算符。左操作数按位右移右操作数指定的位数 | -A >> 2 | -得到15即 1111 |
>>> | -按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充 | - A>>>2 | -得到15即0000 1111 |
实例:
//来源https://www.runoob.com/java/java-operators.html
public class Test2 {
public static void main(String[] args) {
int a = 60; /\* 60 = 0011 1100 \*/
int b = 13; /\* 13 = 0000 1101 \*/
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
***93道网络安全面试题***
![](https://img-blog.csdnimg.cn/img_convert/6679c89ccd849f9504c48bb02882ef8d.png)
![](https://img-blog.csdnimg.cn/img_convert/07ce1a919614bde78921fb2f8ddf0c2f.png)
![](https://img-blog.csdnimg.cn/img_convert/44238619c3ba2d672b5b8dc4a529b01d.png)
内容实在太多,不一一截图了
### 黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
😝朋友们如果有需要的话,可以联系领取~
#### 1️⃣零基础入门
##### ① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的**学习成长路线图**。可以说是**最科学最系统的学习路线**,大家跟着这个大的方向学习准没问题。
![image](https://img-blog.csdnimg.cn/img_convert/acb3c4714e29498573a58a3c79c775da.gif#pic_center)
##### ② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
![image-20231025112050764](https://img-blog.csdnimg.cn/874ad4fd3dbe4f6bb3bff17885655014.png#pic_center)
#### 2️⃣视频配套工具&国内外网安书籍、文档
##### ① 工具
![](https://img-blog.csdnimg.cn/img_convert/d3f08d9a26927e48b1332a38401b3369.png#pic_center)
##### ② 视频
![image1](https://img-blog.csdnimg.cn/img_convert/f18acc028dc224b7ace77f2e260ba222.png#pic_center)
##### ③ 书籍
![image2](https://img-blog.csdnimg.cn/img_convert/769b7e13b39771b3a6e4397753dab12e.png#pic_center)
资源较为敏感,未展示全面,需要的最下面获取
![在这里插入图片描述](https://img-blog.csdnimg.cn/e4f9ac066e8c485f8407a99619f9c5b5.png#pic_center)![在这里插入图片描述](https://img-blog.csdnimg.cn/111f5462e7df433b981dc2430bb9ad39.png#pic_center)
##### ② 简历模板
![在这里插入图片描述](https://img-blog.csdnimg.cn/504b8be96bfa4dfb8befc2af49aabfa2.png#pic_center)
**因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆**
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**