带你从零学大数据系列之Java篇---第十三章 字符串,2024年最新2024网络安全高级面试题汇总解答

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
img

正文

13.2.2.3. 示例代码

import java.util.Arrays;

/**
 * @Description 字符串常用的非静态方法
 */
public class StringMethod2 {
    public static void main(String[] args) {
        // 1. 字符串的拼接,效率比加号拼接高
        String ret1 = "hello".concat("world");
        System.out.println(ret1);       // helloworld

        // 2. 字符串截取
        String ret2 = "hello world".substring(3);
        System.out.println(ret2);       // lo world
        String ret3 = "hello world".substring(3, 8);
        System.out.println(ret3);       // lo wo
        // *. 字符序列截取
        CharSequence charSequence = "hello world".subSequence(3, 8);
        System.out.println(charSequence);

        // 3. 用新的字符替换原字符串中所有的旧的字符
        String ret4 = "hello world".replace('l', 'L');
        System.out.println(ret4);       // heLLo worLd
        // 4. 用新的字符序列替换原字符串中所有的旧的字符序列
        String ret5 = "hello world".replace("ll", "~");
        System.out.println(ret5);       // he~o world

        // 5. 转成字符数组
        char[] ret6 = "hello world".toCharArray();
        System.out.println(Arrays.toString(ret6));      // [h, e, l, l, o,  , w, o, r, l, d]
        // 6. 转成字节数组
        byte[] ret7 = "hello world".getBytes();
        System.out.println(Arrays.toString(ret7));      // [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]


        // 7. 获取某一个字符在一个字符串中第一次出现的下标。
        int ret8 = "hello world".indexOf('L');
        System.out.println(ret8);                   // 2
        // 8. 获取某一个字符在一个字符串中从fromIndex位开始往后,第一次出现的下标。
        int ret9 = "hello world".indexOf('l', 4);
        System.out.println(ret9);                   // 9
        // 9. 获取某一个字符在一个字符串中最后一次出现的下标。
        int ret10 = "hello world".lastIndexOf('o');
        System.out.println(ret10);                  // 7
        // 10. 获取某一个字符在一个字符串中,从fromIndex位开始往前,最后一次出现的下标
        int ret11 = "hello world".lastIndexOf('o', 5);
        System.out.println(ret11);                  // 4

        // 11. 字符串大小写字母转变
        System.out.println("hello WORLD".toUpperCase());
        System.out.println("hello WORLD".toLowerCase());

        // 12. 判断一个字符串中, 是否包含另外一个字符串。
        System.out.println("hello world".contains("loo"));

        // 需求:判断一个字符串中是否包含某一个字符
        // 答案:或者这个字符在字符串中出现的下标,如果不是-1,说明包含。

        // 13. 判断一个字符串, 是否是以指定的字符串作为开头。
        System.out.println("哈利波特与魔法石.mp4".startsWith("哈利波特"));
        System.out.println("哈利波特与魔法石.mp4".endsWith(".mp4"));

        // 14. 去除一个字符串首尾的空格
        System.out.println("        hello world        ".trim());

        // 15. 判断两个字符串的内容是否相同
        System.out.println("hello world".equals("HELLO WORLD"));
        System.out.println("hello world".equalsIgnoreCase("HELLO WORLD"));  // true

        // 16. 比较两个字符串的大小
        //     > 0: 前面的字符串 > 参数字符串
        //    == 0: 两个字符串大小相等
        //     < 0: 前面的字符串 < 参数字符串

        // 比较逻辑:
        // 依次比较每一位的字符的大小。
        // 如果某一次的字符比较可以分出大小,本次的比较结果将作为整体的字符串的比较结果。

        int result = "hello world".compareTo("hh");
        System.out.println(result);
    }
}
13.2.3. 字符串的静态方法
13.2.3.1. 常用的静态方法

13.2.3.2. 示例代码
/**
 * @Description
 */
public class StringMethod3 {
    public static void main(String[] args) {

        // 将若干个字符串拼接到一起,在拼接的时候,元素与元素之间以指定的分隔符进行分隔
        String str1 = String.join(", ", "lily", "lucy", "uncle wang", "polly");
        System.out.println(str1);

        float score = 100;
        String name ="xiaoming";
        int age = 19;
        // 大家好,我叫xiaoming,今年19岁了,本次考试考了100分。
        /**
         * 常见占位符:
         * %s : 替代字符串       -> %ns: 凑够n位字符串,如果不够,补空格
         * %d : 整型数字占位符    -> %nd: 凑够n位,如果不够补空格。
         * %f : 浮点型数字占位符  -> %.nf: 保留小数点后面指定位的数字
         * %c : 字符型占位符
         */
        String str2 = String.format("大家好,我叫%11s,今年%03d岁了,本次考试考了%.6f分。", name, age, score);
        System.out.println(str2);
    }
}

13.3. StringBuffer和StringBuilder类

13.3.1. 概念

都是用来操作字符串的类。

字符串都是常量, 所有的操作字符串的方法, 都不能直接修改字符串本身。 如果我们需要得到修改之后的结果, 需要接收返回值。

StringBuffer和StringBuilder不是字符串类, 是用来操作字符串的类。 在类中维护了一个字符串的属性, 这些字符串操作类中的方法, 可以直接修改这个属性的值。 对于使用方来说, 可以不去通过返回值获取操作的结果。

在StringBuffer或者StringBuilder类中, 维护了一个字符数组。 这些类中所有的操作方法, 都是对这个字符数组进行的操作。

13.3.2. 常用方法

13.3.3. 示例代码
/**
 * @Description
 */
public class Test {
    public static void main(String[] args) {
        // 1. 构造方法
        StringBuilder sb = new StringBuilder("hello world");

        // 2. 增: 在一个字符串后面拼接其他的字符串
        sb.append('!');

        // 3. 增: 在指定的下标位插入一条数据
        sb.insert(3, "AAAAA");

        // 4. 删: 删除字符串中的 [start, end) 范围内的数据
        sb.delete(3, 5);

        // 5. 删: 删除指定位的字符
        sb.deleteCharAt(6);

        // 6. 截取一部分的字符串,这个操作不会修改到自己,如果希望得到截取的部分,需要接收返回值。
        String sub = sb.substring(4, 6);

        // 7. 替换,将字符串中 [start, end) 范围内的数据替换成指定的字符串
        sb.replace(3, 6, "l");

        // 8. 修改指定下标位的字符
        sb.setCharAt(0, 'H');

        // 9. 将字符串前后翻转
        sb.reverse();

        System.out.println(sb);
    }
}
13.3.4. 区别

StringBuffer和StringBuilder从功能上来讲, 是一模一样的。 但是他们两者还是有区别的:

  • StringBuffer是线程安全的。
  • StringBuilder是线程不安全的。

使用场景:

  • 当处于多线程的环境中, 多个线程同时操作这个对象, 此时使用StringBuffer。
  • 当没有处于多线程环境中, 只有一个线程来操作这个对象, 此时使用StringBuilder。
13.3.5. 备注

但凡是涉及到字符串操作的使用场景, 特别是在循环中对字符串进行的操作。 一定不要使用字符串的方法, 用StringBuffer或者StringBuilder的方法来做。

由于字符串本身是不可变的, 所以String类所有的修改操作, 其实都是在方法内实例化了一个新的字符串对象, 存储拼接之后的新的字符串的地址, 返回这个新的字符串。 如果操作比较频繁, 就意味着有大量的临时字符串被实例化、被销毁, 效率极低。 StringBuffer、StringBuilder不同, 在内部维护了一个字符数组, 所有的操作都是围绕这个字符数组进行的操作。 当需要转成字符串的时候, 才会调用 toString() 方法进行转换。 当频繁用到字符串操作的时候, 没有中间的临时的字符串出现, 效率较高。

/**
 * @Description String、StringBuffer、StringBuilder 拼接效率比较
 */
public class Test2 {
    public static void main(String[] args) {
        // 需求: 进行字符串的拼接 100000 次。

        String str = "";
        StringBuffer buffer = new StringBuffer();
        StringBuilder builder = new StringBuilder();

        int times = 100000;

        // String类的拼接
        long time0 = System.currentTimeMillis();
        for (int i = 0; i < times; i++) {
            str += i;
        }
        long time1 = System.currentTimeMillis();

        // StringBuffer的拼接
        for (int i = 0; i < times; i++) {
            buffer.append(i);
        }
        long time2 = System.currentTimeMillis();




本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。


最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。


最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。


![](https://img-blog.csdnimg.cn/img_convert/311903982dea1d8a5d2c98fc271b5b41.jpeg)



### 学习路线图


 其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。


相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。


![](https://img-blog.csdnimg.cn/img_convert/1ddfaf7dc5879b1120e31fafa1ad4dc7.jpeg)


#### 网络安全工具箱


当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份**我自己整理的网络安全入门工具以及使用教程和实战。**


![](https://img-blog.csdnimg.cn/img_convert/bcd1787ce996787388468bb227d8f959.jpeg)


#### 项目实战


最后就是项目实战,这里带来的是**SRC资料&HW资料**,毕竟实战是检验真理的唯一标准嘛~


![](https://img-blog.csdnimg.cn/img_convert/35fc46df24091ce3c9a5032a9919b755.jpeg)


#### 面试题


归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

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

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
![img](https://img-blog.csdnimg.cn/img_convert/2ea4cf909d973357983aa4feed3fc592.png)

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



#### 面试题


归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

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

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
[外链图片转存中...(img-bSTBH0gr-1713595241998)]

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

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值