一、Java基础入门
1.1 第一个Java程序
public class HelloWorld {` `public static void main(String[] args) {` `System.out.println("Hello World!");` `}``}
要点解析:
•public class:声明一个公共类•main方法:程序的入口点•System.out.println:打印输出•每条语句以分号结束
1.2 变量与数据类型
public class DataTypeDemo {` `public static void main(String[] args) {` `// 基本数据类型` `int age = 25; // 整数` `double height = 1.75; // 小数` `char gender = '男'; // 字符` `boolean isStudent = true; // 布尔值`` ` `// 引用数据类型` `String name = "小明"; // 字符串` `int[] scores = {90, 85, 92}; // 数组`` ` `// 输出变量值` `System.out.println("姓名:" + name);` `System.out.println("年龄:" + age);` `System.out.println("身高:" + height + "m");` `}``}
二、面向对象编程
2.1 类和对象
public class Student {` `// 属性` `private String name;` `private int age;` `private String[] courses;`` ` `// 构造方法` `public Student(String name, int age) {` `this.name = name;` `this.age = age;` `this.courses = new String[0];` `}`` ` `// Getter和Setter方法` `public String getName() { return name; }` `public void setName(String name) { this.name = name; }` `public int getAge() { return age; }` `public void setAge(int age) { this.age = age; }`` ` `// 其他方法` `public void addCourse(String course) {` `String[] newCourses = new String[courses.length + 1];` `System.arraycopy(courses, 0, newCourses, 0, courses.length);` `newCourses[courses.length] = course;` `courses = newCourses;` `}`` ` `public void study() {` `System.out.println(name + "正在学习");` `}``}
2.2 继承和多态
// 父类``public class Animal {` `protected String name;`` ` `public Animal(String name) {` `this.name = name;` `}`` ` `public void makeSound() {` `System.out.println("动物发出声音");` `}``}`` ``// 子类``public class Dog extends Animal {` `public Dog(String name) {` `super(name);` `}`` ` `@Override` `public void makeSound() {` `System.out.println(name + "汪汪叫");` `}`` ` `public void fetch() {` `System.out.println(name + "在接飞盘");` `}``}
三、常用工具和技巧
3.1 字符串处理
public class StringDemo {` `public static void main(String[] args) {` `String str = "Hello, Java!";`` ` `// 字符串操作` `System.out.println("长度:" + str.length());` `System.out.println("大写:" + str.toUpperCase());` `System.out.println("小写:" + str.toLowerCase());` `System.out.println("包含Java?" + str.contains("Java"));`` ` `// 字符串分割` `String names = "张三,李四,王五";` `String[] nameArray = names.split(",");` `for (String name : nameArray) {` `System.out.println(name);` `}`` ` `// 字符串格式化` `String format = String.format("姓名:%s,年龄:%d", "小明", 18);` `System.out.println(format);` `}``}
3.2 集合框架
public class CollectionDemo {` `public static void main(String[] args) {` `// ArrayList使用` `List<String> nameList = new ArrayList<>();` `nameList.add("张三");` `nameList.add("李四");` `nameList.add("王五");`` ` `// HashSet使用` `Set<String> uniqueNames = new HashSet<>();` `uniqueNames.add("张三");` `uniqueNames.add("张三"); // 重复元素不会添加`` ` `// HashMap使用` `Map<String, Integer> scoreMap = new HashMap<>();` `scoreMap.put("张三", 90);` `scoreMap.put("李四", 85);`` ` `// 遍历集合` `System.out.println("List遍历:");` `for (String name : nameList) {` `System.out.println(name);` `}`` ` `System.out.println("\nMap遍历:");` `for (Map.Entry<String, Integer> entry : scoreMap.entrySet()) {` `System.out.println(entry.getKey() + ": " + entry.getValue());` `}` `}``}
四、文件操作和IO
4.1 文件读写
public class FileDemo {` `public static void main(String[] args) {` `// 写文件` `try (BufferedWriter writer = new BufferedWriter(` `new FileWriter("test.txt"))) {` `writer.write("Hello, Java!");` `writer.newLine();` `writer.write("文件操作示例");` `} catch (IOException e) {` `e.printStackTrace();` `}`` ` `// 读文件` `try (BufferedReader reader = new BufferedReader(` `new FileReader("test.txt"))) {` `String line;` `while ((line = reader.readLine()) != null) {` `System.out.println(line);` `}` `} catch (IOException e) {` `e.printStackTrace();` `}` `}``}
4.2 异常处理
public class ExceptionDemo {` `public static double divide(int a, int b) throws Exception {` `if (b == 0) {` `throw new Exception("除数不能为0");` `}` `return (double) a / b;` `}`` ` `public static void main(String[] args) {` `try {` `double result = divide(10, 0);` `System.out.println("结果:" + result);` `} catch (Exception e) {` `System.out.println("发生错误:" + e.getMessage());` `} finally {` `System.out.println("程序执行完毕");` `}` `}``}
五、实用项目示例
5.1 简单计算器
import java.util.Scanner;`` ``public class Calculator {` `public static void main(String[] args) {` `Scanner scanner = new Scanner(System.in);`` ` `while (true) {` `System.out.println("\n简单计算器");` `System.out.println("1. 加法");` `System.out.println("2. 减法");` `System.out.println("3. 乘法");` `System.out.println("4. 除法");` `System.out.println("5. 退出");`` ` `System.out.print("请选择操作(1-5):");` `int choice = scanner.nextInt();`` ` `if (choice == 5) break;`` ` `if (choice >= 1 && choice <= 4) {` `System.out.print("输入第一个数:");` `double num1 = scanner.nextDouble();` `System.out.print("输入第二个数:");` `double num2 = scanner.nextDouble();`` ` `double result = 0;` `switch (choice) {` `case 1:` `result = num1 + num2;` `System.out.printf("%.2f + %.2f = %.2f\n",` `num1, num2, result);` `break;` `case 2:` `result = num1 - num2;` `System.out.printf("%.2f - %.2f = %.2f\n",` `num1, num2, result);` `break;` `case 3:` `result = num1 * num2;` `System.out.printf("%.2f * %.2f = %.2f\n",` `num1, num2, result);` `break;` `case 4:` `if (num2 != 0) {` `result = num1 / num2;` `System.out.printf("%.2f / %.2f = %.2f\n",` `num1, num2, result);` `} else {` `System.out.println("错误:除数不能为0");` `}` `break;` `}` `} else {` `System.out.println("无效的选择,请重试");` `}` `}`` ` `System.out.println("感谢使用,再见!");` `}``}
5.2 学生管理系统
import java.util.*;`` ``class Student {` `private String id;` `private String name;` `private int age;` `private Map<String, Integer> scores;`` ` `public Student(String id, String name, int age) {` `this.id = id;` `this.name = name;` `this.age = age;` `this.scores = new HashMap<>();` `}`` ` `// getter和setter方法` `public String getId() { return id; }` `public String getName() { return name; }` `public int getAge() { return age; }`` ` `public void addScore(String subject, int score) {` `scores.put(subject, score);` `}`` ` `public double getAverageScore() {` `if (scores.isEmpty()) return 0;` `int sum = scores.values().stream()` `.mapToInt(Integer::intValue)` `.sum();` `return (double) sum / scores.size();` `}`` ` `@Override` `public String toString() {` `return String.format("学号:%s,姓名:%s,年龄:%d,平均分:%.2f",` `id, name, age, getAverageScore());` `}``}`` ``public class StudentManagementSystem {` `private Map<String, Student> students = new HashMap<>();` `private Scanner scanner = new Scanner(System.in);`` ` `public void run() {` `while (true) {` `showMenu();` `int choice = scanner.nextInt();` `scanner.nextLine(); // 消费换行符`` ` `switch (choice) {` `case 1:` `addStudent();` `break;` `case 2:` `removeStudent();` `break;` `case 3:` `addScore();` `break;` `case 4:` `showAllStudents();` `break;` `case 5:` `return;` `default:` `System.out.println("无效的选择,请重试");` `}` `}` `}`` ` `private void showMenu() {` `System.out.println("\n学生管理系统");` `System.out.println("1. 添加学生");` `System.out.println("2. 删除学生");` `System.out.println("3. 录入成绩");` `System.out.println("4. 查看所有学生");` `System.out.println("5. 退出");` `System.out.print("请选择操作(1-5):");` `}`` ` `private void addStudent() {` `System.out.print("输入学号:");` `String id = scanner.nextLine();` `System.out.print("输入姓名:");` `String name = scanner.nextLine();` `System.out.print("输入年龄:");` `int age = scanner.nextInt();`` ` `students.put(id, new Student(id, name, age));` `System.out.println("学生添加成功!");` `}`` ` `private void removeStudent() {` `System.out.print("输入要删除的学生学号:");` `String id = scanner.nextLine();` `if (students.remove(id) != null) {` `System.out.println("学生删除成功!");` `} else {` `System.out.println("未找到该学生");` `}` `}`` ` `private void addScore() {` `System.out.print("输入学生学号:");` `String id = scanner.nextLine();` `Student student = students.get(id);`` ` `if (student != null) {` `System.out.print("输入科目:");` `String subject = scanner.nextLine();` `System.out.print("输入分数:");` `int score = scanner.nextInt();`` ` `student.addScore(subject, score);` `System.out.println("成绩录入成功!");` `} else {` `System.out.println("未找到该学生");` `}` `}`` ` `private void showAllStudents() {` `if (students.isEmpty()) {` `System.out.println("暂无学生信息");` `return;` `}`` ` `System.out.println("\n所有学生信息:");` `students.values().forEach(System.out::println);` `}`` ` `public static void main(String[] args) {` `new StudentManagementSystem().run();` `}``}
学习建议
1.循序渐进:按顺序学习,打好基础2.多动手:编程需要大量实践3.先理解后记忆:理解原理比死记硬背重要4.做项目:通过实际项目加深理解5.查阅文档:养成查看官方文档的习惯
重要概念:
•面向对象的三大特性:封装、继承、多态•集合框架的使用•异常处理机制•文件操作和IO流•常用类库的使用
常见问题解决:
1.编译错误:检查语法2.运行时异常:做好异常处理3.逻辑错误:使用调试工具4.性能问题:注意代码优化
计算机热门就业方向
从目前市场情况来讲,网络安全的就业前景是非常不错的,2022年的统计数据,网络安全专业的缺口已经增长到140万人。
1、就业岗位多,发展方向广
①就业环境:网络安全可以在计算机科学与技术、信息通信、电子商务、互联网金融、电子政务等领域从事相关工作,还可以在政府机关事业单位、银行、保险、证券等金融机构,电信、传媒等行业从事相关工作。
②就业岗位:网络安全工程师、渗透测试工程师、代码审计工程师、等级保护工程师、安全运维工程师、安全运营工程师、安全服务工程师等。
2、薪资待遇可观,提升较快
作为一个新兴行业,网络安全人才的市场需求远远大于供给,企业想真正招到人才,就必须在薪酬福利上有足够的竞争优势。因此,网络安全领域的薪资近年来也呈现稳步增长的态势。
根据工信部发布的《网络安全产业人才发展报告》显示,网络安全人才平均年薪为21.28万元,整体薪资水平较高。数据显示,网络安全人才年薪主要集中在10-20万元,占比40.62%,与往年持平;其次是20-30万元,占比为38.43%,较2020年占比19.48%有显著提高;而年薪在10万以下人才占比由2020年的19.74%下降至2022年的9.08%。由此可见,网络安全行业作为新兴赛道,尚在快速发展阶段,从业人员薪资水平提升较快,也显示出网络安全行业相对更重视人才留存。
3、职业发展空间大
从网络安全专业学习的主要内容来看,包括linux运维、Python开发、渗透测试、代码审计、等级保护、应急响应、风险评估等。可见该网络安全专业的技术性很强,具有鲜明的专业特点,是一门能够学到真正技术的工科类专业之一。
因此,在职业发展上,网络安全专业除了就业岗位众多之外,由于专业技术性较强,在工作单位将处于技术核心骨干地位,职业发展空间很大。
盘点网络安全的岗位汇总
0****1
岗位一:渗透测试工程师
**岗位释义:**模拟黑客攻击,利用黑客技术,挖掘漏洞,提出修复建议。有些大厂,例如奇安信,甚至会将渗透岗位分为红蓝两方,对候选人的技术要求比较高,大部分刚入行的新人,也将渗透岗位作为后期的发展目标。
岗位职责:
-
负责对客户网络、系统、应用进行渗透测试、安全评估和安全加固
-
在出现网络攻击或安全事件时,提供应急响应服务,帮助用户恢复系统及调查取证
-
针对客户网络架构,建议合理的网络安全解决方案
**工作难度:**5颗星
薪资现状:
0****2
岗位二:安全运维工程师
**岗位释义:**维护网络系统的正常、安全运行,如果受到黑客攻击,则需要进行应急响应和入侵排查安全加固。很多刚毕业入行的新人,基本都从运维做起。
岗位职责:
-
日常终端维护,操作系统安装加固
-
完成网络安全设备故障排查、处置
-
完成相关管理制度文档的编写和提交
**工作难度:**3颗星
薪资现状:
0****3
岗位三:安全运营工程师
**岗位释义:**在运维的基础上,高效可持续地不断提升企业的安全防御能力。
岗位职责:
-
负责监控、扫描等各类安全策略的制定和优化
-
负责信息安全事件的应急响应
-
参与网络安全评估工作、安全加固工作和监控等等
**工作难度:**3颗星
薪资现状:
0****4
岗位四:安全开发工程师
**岗位释义:**顾名思义,对安全产品及平台、策略等进行开发工作。
岗位职责:
-
负责网络安全产品的系统技术设计、代码开发与实现、单元测试、静态检查、本地构建等工作;
-
参与公司其他产品的系统技术设计以及研发工作。
**工作难度:**5颗星
薪资现状:
0****5
岗位五:等保测评工程师
**岗位释义:**等保测评也叫等级保护测评,主要负责开展信息安全等级保护测评、信息安全风险评估、应急响应、信息安全咨询等工作 。
岗位职责:
-
网络安全等级保护测评项目实施;
-
Web渗透测试、操作系统安全加固等安全项目实施配合
**工作难度:**3颗星
薪资现状:
0****6
岗位六:安全研究工程师
**岗位释义:**网络安全领域的研究人才。
岗位职责:
-
跟踪和分析国内外安全事件、发展趋势和解决方案
-
承担或参与创新型课题研究
-
参与项目方案设计,组织推动项目落实,完成研究内容、
-
负责网络安全关键技术攻关和安全工具研发
**工作难度:**5颗星
薪资现状:
0****7
岗位七:漏洞挖掘工程师
**岗位释义:**主要从事逆向、软件分析、漏洞挖掘工作
岗位职责:
-
通过模拟实施特定方法所获得的结果,评估计算机网络系统安全状况;
-
通过特定技术的实施,寻找网络安全漏洞,发现但不利用漏洞。
**工作难度:**5颗星
薪资现状:
0****8
岗位八:安全管理工程师
**岗位释义:**负责信息安全相关流程、规范、标准的制定和评审,负责公司整体安全体系建设。
岗位职责:
-
全业务系统网络安全技术体系的规划和建设,优化网络安全架构;
-
负责网络安全相关流程、规范、标准的指定和评审,高效处置突发事件;
-
负责网络安全防护系统的建设,提升网络安全保障水平;
**工作难度:**4颗星
0****9
岗位九:应急响应工程师
**岗位释义:**主要负责信息安全事件应急响应、攻击溯源、取证分析工作,参与应急响应、攻击溯源、取证分析技术的研究,提升整体重大信息安全事件应急处置能力。
岗位职责:
-
负责信息安全事件应急响应、攻击溯源、取证分析工作;
-
对安全事件的应急处置进行经验总结,开展应急响应培训;
-
负责各业务系统的上线前安全测试(黑盒白盒)及渗透测试工作;
-
参与应急响应、攻击溯源、取证分析技术的研究,提升整体重大信息安全事件应急处置能力。
-
跟踪国内外安全热点事件、主流安全漏洞、威胁情报、黑灰产动态并进行分析研究,形成应对方案;
**工作难度:**4颗星
薪酬现状:
10
岗位十:数据安全工程师
**岗位释义:**主要对公司的数据安全的日常维护和管理工作,确保公司数据安全。
岗位职责:
-
负责数据安全日常维护和管理工作,包括数据安全审核、数据安全事件的监控与响应、安全合规的审计与调查等;
-
负责数据安全标准规范的制定和管理,包括数据安全需求识别、风险分析、数据分级分类、数据脱敏、数据流转、泄露防护、权限管控等;推进相关安全管控策略在平台落地、执行。
-
负责开展与数据全生命周期管理有关的各项数据安全工作;
-
负责跨平台、跨地域数据传输、交互等数据安全方案制定与落地
-
定期组织开展数据安全自评工作,发现潜在数据安全风险,制定相应的管控措施,并推进落实整改。
**工作难度:**4颗星
薪酬现状:
题外话
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我们和网安大厂360共同研发的的网安视频教程,之前都是内部资源,专业方面绝对可以秒杀国内99%的机构和个人教学!全网独一份,你不可能在网上找到这么专业的教程。
内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识,而且包含了中级的各种渗透技术,并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频,200多G的资源,不用担心学不全。
因篇幅有限,仅展示部分资料,需要见下图即可前往获取
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
侵权,请联系删除。