【JAVA-Day45】Java常用类StringBuffer解析

Java常用类StringBuffer解析

  • Java常用类StringBuffer解析
    • 一、什么是StringBuffer类
    • 二、StringBuffer类的方法
      • 2.1 append方法
      • 2.2 insert方法
      • 2.3 delete方法
      • 2.4 replace方法
      • 2.5 reverse方法
      • 2.6 toString方法
      • 2.7 capacity方法
      • 2.8 length方法
    • 三、StringBuffer类的应用场景
      • 深入了解StringBuffer类的应用场景
        • 1. 字符串拼接
        • 2. 频繁修改字符串内容
        • 3. 循环拼接字符串
        • 4. 字符串反转
        • 5. 多线程环境下的安全性
    • 四、StringBuffer vs. String
      • StringBuffer vs. String:如何选择最适合你的字符串处理方式
        • 1. String(不可变字符串)
        • 2. StringBuffer(可变字符串)
        • 3. StringBuilder(可变字符串,非线程安全)
        • 如何选择?
    • 五、StringBuffer的基本操作:增删改查一览
      • StringBuffer的基本操作:增删改查一览
        • 1. 追加字符串
        • 2. 插入字符串
        • 3. 删除字符
        • 4. 替换字符
        • 5. 颠倒字符串
        • 6. 将StringBuffer转为String
        • 7. 获取容量和长度
    • 六、线程安全与性能优化:StringBuilder与StringBuffer的比较
      • 线程安全与性能优化:StringBuilder与StringBuffer的比较
        • 1. StringBuilder
        • 2. StringBuffer
        • 如何选择?
        • 性能优化策略
    • 七、使用StringBuffer构建高效拼接字符串的最佳实践
      • 使用StringBuffer构建高效拼接字符串的最佳实践
        • 1. 预设容量
        • 2. 使用append()一次拼接
        • 3. 循环拼接优化
        • 4. 使用toString()一次性转换
        • 5. 避免过度拼接
        • 6. 线程安全考虑
    • 八、StringBuffer在多线程环境下的应用与注意事项
      • StringBuffer在多线程环境下的应用与注意事项
        • 1. StringBuffer的线程安全性
        • 2. 注意同步范围
        • 3. 避免过度同步
        • 4. StringBuilder的选择
        • 5. 小心线程间共享
        • 6. 线程安全类的选择
  • 总结
  • 参考资料

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

博主 默语带您 Go to New World.
个人主页—— 默语 的博客👦🏻
《java 面试题大全》
🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭
《MYSQL从入门到精通》数据库是开发者必会基础之一~
🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨

在这里插入图片描述


Java常用类StringBuffer解析

一、什么是StringBuffer类

在Java中,StringBuffer是一个用于处理字符串的类,它允许我们对字符串进行动态操作,如拼接、插入、删除等。

二、StringBuffer类的方法

2.1 append方法

append方法用于将指定的字符串追加到StringBuffer对象的末尾。

StringBuffer strBuffer = new StringBuffer("Hello");
strBuffer.append(" World");
// 现在strBuffer的值为 "Hello World"

2.2 insert方法

insert方法用于在指定位置插入字符串。

StringBuffer strBuffer = new StringBuffer("Hello");
strBuffer.insert(5, " World");
// 现在strBuffer的值为 "Hello World"

2.3 delete方法

delete方法用于删除指定范围内的字符。

StringBuffer strBuffer = new StringBuffer("Hello World");
strBuffer.delete(5, 11);
// 现在strBuffer的值为 "Hello"

2.4 replace方法

replace方法用于替换指定范围内的字符。

StringBuffer strBuffer = new StringBuffer("Hello World");
strBuffer.replace(6, 11, "Java");
// 现在strBuffer的值为 "Hello Java"

2.5 reverse方法

reverse方法用于颠倒字符串。

StringBuffer strBuffer = new StringBuffer("Hello");
strBuffer.reverse();
// 现在strBuffer的值为 "olleH"

2.6 toString方法

toString方法用于将StringBuffer对象转换为字符串。

StringBuffer strBuffer = new StringBuffer("Hello");
String str = strBuffer.toString();
// 现在str的值为 "Hello"

2.7 capacity方法

capacity方法用于获取StringBuffer对象的当前容量。

StringBuffer strBuffer = new StringBuffer();
int capacity = strBuffer.capacity();

2.8 length方法

length方法用于获取StringBuffer对象的当前长度。

StringBuffer strBuffer = new StringBuffer("Hello");
int length = strBuffer.length();
// length的值为 5

三、StringBuffer类的应用场景

在实际开发中,我们可以根据具体情况选择使用StringBuffer来处理字符串,特别是当涉及大量字符串拼接或者频繁修改字符串内容时,StringBuffer会比直接使用String更为高效。


深入了解StringBuffer类的应用场景

在实际的Java开发中,StringBuffer类扮演着重要的角色,特别是在处理大量字符串拼接或频繁修改字符串内容的情况下。让我们深入探讨一下StringBuffer的实际应用场景以及它为何比直接使用String更为高效。

1. 字符串拼接

StringBuffer在字符串拼接方面非常高效。当需要拼接多个字符串时,使用StringBuffer可以避免多次创建新的String对象,从而节省内存开销。

StringBuffer strBuffer = new StringBuffer();
strBuffer.append("Hello");
strBuffer.append(" World");
// 现在strBuffer的值为 "Hello World"
2. 频繁修改字符串内容

如果需要在已有的字符串中进行频繁的修改、插入、删除等操作,使用StringBuffer是一个明智的选择。它允许我们在原有字符串的基础上进行动态操作,避免了创建大量临时的String对象。

StringBuffer strBuffer = new StringBuffer("Hello World");
strBuffer.delete(5, 11);
// 现在strBuffer的值为 "Hello"
3. 循环拼接字符串

在循环中拼接字符串时,使用StringBuffer比直接使用String效率更高,因为直接拼接会导致大量的String对象创建和销毁,而StringBuffer可以避免这种情况。

StringBuffer strBuffer = new StringBuffer();
for (int i = 0; i < 1000; i++) {strBuffer.append("Number ").append(i).append(", ");
}
String result = strBuffer.toString();
4. 字符串反转

StringBuffer提供了reverse()方法可以很方便地反转字符串,这在某些场景下非常有用。

StringBuffer strBuffer = new StringBuffer("Hello");
strBuffer.reverse();
// 现在strBuffer的值为 "olleH"
5. 多线程环境下的安全性

在多线程环境下,StringBuffer是线程安全的,可以保证多个线程对字符串的操作不会出现问题。因此,在需要在多线程环境下进行字符串操作时,选择StringBuffer是一个可靠的选择。

总结:StringBuffer在许多场景下都能发挥重要作用,特别是在需要对字符串进行频繁操作的情况下,它比直接使用String更为高效。熟练掌握StringBuffer的应用场景将使得你能够更加灵活和高效地处理字符串。

在实际项目中,根据具体情况选择使用String或StringBuffer是很重要的。理解它们的特点以及在何时使用它们,将使得你的程序更具性能和效率。

四、StringBuffer vs. String

在不同情况下,我们需要权衡使用StringBuffer或String;

StringBuffer vs. String:如何选择最适合你的字符串处理方式

在Java中,String和StringBuffer都是处理字符串的重要工具,但它们有着不同的特点和适用场景。让我们深入比较它们,以便在不同情况下做出明智的选择。

1. String(不可变字符串)
  • 特点:String对象是不可变的,一旦创建,就不能被修改。任何对String的操作都会返回一个新的String对象。
  • 适用场景:当你处理的字符串不需要被频繁修改时,String是一个不错的选择,比如存储常量、配置信息等。
String str = "Hello";
str = str + " World"; // 这里会创建一个新的String对象
2. StringBuffer(可变字符串)
  • 特点:StringBuffer对象是可变的,可以在已有字符串的基础上进行动态操作,比如拼接、插入、删除等。
  • 适用场景:当你需要频繁修改字符串内容时,使用StringBuffer会比直接使用String更为高效,比如在循环中拼接字符串、频繁的插入、删除操作等。
StringBuffer strBuffer = new StringBuffer("Hello");
strBuffer.append(" World"); // 在原有字符串的基础上进行操作,不会创建新对象
3. StringBuilder(可变字符串,非线程安全)
  • 特点:与StringBuffer类似,但StringBuilder不提供同步功能,因此在单线程环境下,StringBuilder的性能可能更高。
  • 适用场景:在单线程环境下,当你需要频繁修改字符串内容时,StringBuilder是一个更为高效的选择。
StringBuilder strBuilder = new StringBuilder("Hello");
strBuilder.append(" World"); // 在原有字符串的基础上进行操作,不会创建新对象
如何选择?
  • 如果你的字符串不需要被修改,而只是被读取,那么使用String是一个不错的选择。
  • 如果你需要频繁修改字符串内容,特别是在循环中进行拼接或者频繁的插入、删除操作,那么选择StringBuffer或StringBuilder会更高效,具体选择哪一个取决于是否需要线程安全性。

小提示: 在单线程环境下,StringBuilder的性能比StringBuffer略高,因此在不需要线程安全的情况下,可以考虑使用StringBuilder。

总结:String和StringBuffer(或StringBuilder)在不同的场景下都有各自的优势,了解它们的特点以及适用场景,能够帮助你在实际开发中做出明智的选择,从而提升程序的性能和效率。

五、StringBuffer的基本操作:增删改查一览

深入了解StringBuffer的基本操作,包括追加、插入、删除、替换等。


StringBuffer的基本操作:增删改查一览

StringBuffer类是Java中一个重要的工具,它允许我们在已有字符串的基础上进行动态操作,包括追加、插入、删除、替换等。让我们深入了解StringBuffer的基本操作。

1. 追加字符串

使用append()方法可以将新的字符串内容追加到StringBuffer对象的末尾。

StringBuffer strBuffer = new StringBuffer("Hello");
strBuffer.append(" World");
// 现在strBuffer的值为 "Hello World"
2. 插入字符串

使用insert()方法,在指定位置插入新的字符串内容。

StringBuffer strBuffer = new StringBuffer("Hello");
strBuffer.insert(5, " World");
// 现在strBuffer的值为 "Hello World"
3. 删除字符

使用delete()方法可以删除指定范围内的字符。

StringBuffer strBuffer = new StringBuffer("Hello World");
strBuffer.delete(5, 11);
// 现在strBuffer的值为 "Hello"
4. 替换字符

使用replace()方法可以替换指定范围内的字符。

StringBuffer strBuffer = new StringBuffer("Hello World");
strBuffer.replace(6, 11, "Java");
// 现在strBuffer的值为 "Hello Java"
5. 颠倒字符串

使用reverse()方法可以颠倒字符串。

StringBuffer strBuffer = new StringBuffer("Hello");
strBuffer.reverse();
// 现在strBuffer的值为 "olleH"
6. 将StringBuffer转为String

使用toString()方法,可以将StringBuffer对象转为普通的String对象。

StringBuffer strBuffer = new StringBuffer("Hello");
String str = strBuffer.toString();
// 现在str的值为 "Hello"
7. 获取容量和长度

使用capacity()方法可以获取StringBuffer对象的当前容量,而length()方法则可以获取其当前长度。

StringBuffer strBuffer = new StringBuffer("Hello");
int capacity = strBuffer.capacity(); // 获取容量
int length = strBuffer.length(); // 获取长度

通过掌握这些基本操作,你可以更灵活地使用StringBuffer类来处理字符串,无论是进行拼接、插入、删除还是替换,都可以得心应手。

六、线程安全与性能优化:StringBuilder与StringBuffer的比较

探讨在多线程环境下使用StringBuilder和StringBuffer的区别,以及性能优化的策略。


线程安全与性能优化:StringBuilder与StringBuffer的比较

在多线程环境下,字符串操作的线程安全性是一个重要的考虑因素。Java提供了两个类来处理可变字符串:StringBuilder和StringBuffer。让我们来探讨它们之间的区别以及在多线程环境下的最佳实践。

1. StringBuilder
  • 特点:StringBuilder是一个可变的字符串类,与StringBuffer类似,但它不提供同步功能,因此在单线程环境下,StringBuilder的性能可能会更高。
  • 适用场景:在单线程环境下,当你需要频繁修改字符串内容时,StringBuilder是一个更为高效的选择。
StringBuilder strBuilder = new StringBuilder("Hello");
strBuilder.append(" World"); // 在原有字符串的基础上进行操作,不会创建新对象
2. StringBuffer
  • 特点:StringBuffer是一个可变的字符串类,与StringBuilder类似,但它提供了同步功能,可以保证多个线程对字符串的操作不会出现问题。
  • 适用场景:在多线程环境下,当你需要保证线程安全性时,选择StringBuffer是一个可靠的选择。
StringBuffer strBuffer = new StringBuffer("Hello");
strBuffer.append(" World"); // 在原有字符串的基础上进行操作,不会创建新对象
如何选择?
  • 如果在单线程环境下,并且你需要频繁修改字符串内容,那么使用StringBuilder会更高效。
  • 如果在多线程环境下,或者你需要保证线程安全性,那么选择StringBuffer是一个可靠的选择。
性能优化策略
  1. 避免过度拼接:尽量避免在循环中频繁进行字符串拼接操作,可以先将所有字符串放入集合中,最后使用一次性的拼接操作。
List<String> stringList = new ArrayList<>();
for (int i = 0; i < 1000; i++) {stringList.add("Number " + i);
}
String result = String.join(", ", stringList);
  1. 预设容量:在已知字符串的大致长度时,可以通过设置StringBuilder或StringBuffer的初始容量,避免多次扩容。
StringBuilder strBuilder = new StringBuilder(100); // 设置初始容量为100
  1. 合理使用append():将所有的append操作放在一个代码块中,避免频繁调用append()方法。
StringBuilder strBuilder = new StringBuilder();
strBuilder.append("Hello").append(" World");

通过合理地选择和使用StringBuilder和StringBuffer,以及遵循性能优化策略,你能够在字符串操作中取得更好的性能表现,从而提升程序的效率。

七、使用StringBuffer构建高效拼接字符串的最佳实践

分享一些在实际项目中使用StringBuffer构建高效拼接字符串的最佳实践,提升程序的性能。


使用StringBuffer构建高效拼接字符串的最佳实践

在实际项目中,高效地拼接字符串是非常重要的,特别是当涉及大量字符串操作时。以下是一些使用StringBuffer构建高效拼接字符串的最佳实践:

1. 预设容量

在创建StringBuffer对象时,如果你已经知道了字符串的大致长度,可以通过设置初始容量来避免多次扩容。

StringBuffer strBuffer = new StringBuffer(100); // 设置初始容量为100
2. 使用append()一次拼接

将所有的append操作放在一个代码块中,避免频繁调用append()方法。

StringBuffer strBuffer = new StringBuffer();
strBuffer.append("Hello").append(" World"); // 一次性拼接
3. 循环拼接优化

在循环中拼接字符串时,避免每次迭代都创建新的String对象,而是将字符串先放入集合中,最后使用一次性的拼接操作。

List<String> stringList = new ArrayList<>();
for (int i = 0; i < 1000; i++) {stringList.add("Number " + i);
}
String result = String.join(", ", stringList);
4. 使用toString()一次性转换

当所有的拼接操作完成后,使用一次性的toString()方法将StringBuffer对象转为String。

StringBuffer strBuffer = new StringBuffer();
strBuffer.append("Hello").append(" World");
String result = strBuffer.toString(); // 一次性转换为String
5. 避免过度拼接

避免在循环中频繁进行字符串拼接操作,可以先将所有字符串放入集合中,最后使用一次性的拼接操作。

List<String> stringList = new ArrayList<>();
for (int i = 0; i < 1000; i++) {stringList.add("Number " + i);
}
String result = String.join(", ", stringList);
6. 线程安全考虑

如果在多线程环境下进行字符串操作,并且需要保证线程安全性,选择StringBuffer是一个可靠的选择。

StringBuffer strBuffer = new StringBuffer();
// 在多线程环境下进行操作

通过合理地使用StringBuffer,并结合上述最佳实践,你能够在实际项目中构建高效的字符串拼接操作,从而提升程序的性能和效率。

八、StringBuffer在多线程环境下的应用与注意事项

了解在多线程环境下如何正确使用StringBuffer,以及需要注意的线程安全问题。


StringBuffer在多线程环境下的应用与注意事项

在多线程环境下,保证线程安全是至关重要的。让我们探讨一下在多线程环境下如何正确使用StringBuffer,并注意一些需要特别关注的线程安全问题。

1. StringBuffer的线程安全性

StringBuffer是一个线程安全的类,它提供了内部的同步机制,可以保证多个线程对字符串的操作不会发生冲突。

StringBuffer strBuffer = new StringBuffer();
// 在多线程环境下进行操作
2. 注意同步范围

虽然StringBuffer是线程安全的,但是在某些情况下,我们可能需要自行进行同步控制,特别是在多个操作之间的情况下。

synchronized (strBuffer) {// 在这个代码块中进行操作
}
3. 避免过度同步

过度的同步会导致性能下降,因此只在必要的情况下进行同步控制,避免对整个操作进行同步。

4. StringBuilder的选择

在单线程环境下,如果不需要保证线程安全,可以考虑使用StringBuilder代替StringBuffer,因为StringBuilder不提供同步功能,可能会略微提高性能。

StringBuilder strBuilder = new StringBuilder();
5. 小心线程间共享

如果多个线程共享同一个StringBuffer实例,请确保对它进行正确的同步控制,以避免出现意外的错误。

6. 线程安全类的选择

除了StringBuffer,Java还提供了StringBuilder(非线程安全)和String(不可变),根据具体情况选择最适合的类。

通过正确地使用StringBuffer,并注意上述的线程安全问题,你能够在多线程环境下安全地进行字符串操作,保证程序的稳定性和正确性。

总结

通过本篇文章的学习,我们深入了解了Java中常用类StringBuffer的各种方法及其应用场景。同时,我们也比较了StringBuffer与String的不同之处,并分享了一些在实际开发中的最佳实践。希望本文能够对你在Java字符串处理中提供有价值的指导。

参考资料

  1. Oracle官方文档:StringBuffer
  2. Bloch, J., Gafter, N., … & Wadler, P. (2001). Effective Java. Addison-Wesley.

在这里插入图片描述


🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

如对本文内容有任何疑问、建议或意见,请联系作者,作者将尽力回复并改进📓;(联系微信:Solitudemind )

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/107438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

选择适合自身业务的HTTP代理有哪些因素决定?

相信对很多爬虫工作者和数据采集的企业来说&#xff0c;如何选购适合自己业务的HTTP代理是一个特别特别困扰的选题&#xff0c;市面上那么多HTTP代理厂商&#xff0c;好像这家有这些缺点&#xff0c;转头又看到另外一家的缺点&#xff0c;要找一家心仪的仿佛大海捞针。今天我们…

【音视频|ALSA】SS528开发板编译Linux内核ALSA驱动、移植alsa-lib、采集与播放usb耳机声音

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

二、深度测试(Z Test)

1.是什么 ①从渲染管线出发 ②书面上理解 所谓深度测试&#xff0c;就是针对当前对象在屏幕上&#xff08;更准确的说是frame buffer&#xff09;对应的像素点&#xff0c;讲对象自身的深度值与当前该像素点缓存的深度值进行比较&#xff0c;如果通过了&#xff0c;本对象再改…

使用 Github Actions 工作流自动部署 Github Pages

GitHub-Actions actions顾名思义就是一堆动作&#xff0c;是一个持续集成服务&#xff0c;持续集成包含了拉代码、运行测试、编译代码、登录远程服务器&#xff0c;发布到第三方服务等等的操作&#xff0c;GitHub将这些操作称为actions。 概念&#xff1a;Workflows, Events,…

【Java学习之道】网络编程的基本概念

引言 这一章我们将一同进入网络编程的世界。在开始学习网络编程之前&#xff0c;我们需要先了解一些基本概念。那么&#xff0c;我们就从“什么是网络编程”这个问题开始吧。 一、网络编程的基本概念 1.1 什么是网络编程 网络编程&#xff0c;顾名思义&#xff0c;就是利用…

【算法-动态规划】完全背包问题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

使用vue3+element-ui plus 快速构建后台管理模板

一、安装 vue3 脚手架 npm create vuelatestcd vue-ui-template #切换到刚刚创建好的vue项目根目录中 npm install #下载项目所需要的依赖包 npm run dev #启动运行项目服务项目启动后&#xff0c;默认页面显示如下&#xff1a; 二、安装element-ui plus 官网链接&#xff1a;…

Vue-3.0路由

生活中的路由&#xff1a;设备和ip的映射关系 路由就是一种映射关系 Vue中路由&#xff1a;路径和组件的映射关系&#xff0c;根据路由就能知道不同路径的&#xff0c;应该匹配渲染哪个组件 VueRouter的介绍 作用&#xff1a;修改地址栏路径时&#xff0c;切换显示匹配的组…

idea中父工程Project创建

1.file-->new-->Project 2.选择maven包和JavaSDK 3.填写项目名&#xff0c;选择文件目录&#xff0c;项目包等 4.配置maven tip&#xff1a;约定>配置>编码 5.设置项目编码 6.注解生效激活&#xff0c;便于项目中使用注解 7.Java编译版本选择8 8.File Type 过滤&a…

php74 安装sodium

下载编译安装libsodium wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable.tar.gz tar -zxf libsodium-1.0.18-stable.tar.gz cd libsodium-stable ./configure --without-libsodium make && make check sudo make install下载编译安装…

ChatGPT DALL-E 3的系统提示词大全

每当给出图像的描述时&#xff0c;使用dalle来创建图像&#xff0c;然后用纯文本总结用于生成图像的提示。如果用户没有要求创建特定数量的图像&#xff0c;默认创建四个标题&#xff0c;这些标题应尽可能多样化。发送给Dalle的所有标题都必须遵循以下策略&#xff1a;1.如果描…

GitLab 502问题解决方案

由于最近 gitlab 切换到另一台服务器上部署的 gitlab 后&#xff0c;经常出现 502。平时重启 gitlab 后都能解决&#xff0c;今天突然重启多次后都还是 502&#xff08;重启日志是正常的&#xff09;&#xff0c;遂通过 gitlab-ctl tail 查看日志进行排查。 gitlab-ctl tail通…

到底什么是5G-R?

近日&#xff0c;工信部向中国国家铁路集团有限公司&#xff08;以下简称“国铁集团”&#xff09;批复5G-R试验频率的消息&#xff0c;引起了行业内的广泛关注。 究竟什么是5G-R&#xff1f;为什么工信部会在此时批复5G-R的试验频率&#xff1f; 今天&#xff0c;小枣君就通过…

让ChatGPT等模型学会自主思考!开创性技术“自主认知”框架

ChatGPT、百度文心一言、Bard等大语言模型展现出了超强的创造能力&#xff0c;加速了生成式AI的应用进程。但AI模型只能基于训练数据执行各种任务&#xff0c;无法像人类一样利用生活知识、过往经验用于复杂的推理和决策。 例如&#xff0c;在玩游戏时&#xff0c;人类可以利用…

Python 控制语句

目录 1 选择结构1.1 单分支选择结构1.2 条件表达式详解1.3 条件表达式中&#xff0c;不能有赋值操作符“”1.4 双分支选择结构1.5 三元条件运算符1.6 多分支选择结构1.7 选择结构嵌套 2 循环结构2.1 while循环2.2 for循环和可迭代对象遍历2.3 可迭代对象2.4 range对象2.5 嵌套循…

2023年淘宝天猫双11红包领取活时间什么时候开始领天猫淘宝双十一红包优惠券?

2023年淘宝天猫双11红包领取活动开始与结束时间 2023年10月24日20:00开始领取至11月11日23:59结束&#xff1b; 2023年淘宝天猫双11红包活动使用开始与结束时间 第一波&#xff1a;2023年10月31日20:00开始使用至11月3日23:59 第二波&#xff1a;2023年11月10日20:00开始使用…

【Linux】使用timer_create()创建定时器发送信号并使用sigaction()处理信号

0x00 前言 最后更新时间&#xff1a;2023-10-16 0x01 主要函数及结构体介绍 1.sigaction函数 #include <signal.h> int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);功能&#xff1a; 用于改变进程接收到特定信号后的行为。 参数…

华为eNSP配置专题-ACL的配置

文章目录 华为eNSP配置专题-ACL的配置1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、基本终端构成和连接2.2、各终端基本配置2.2.1、PC1和PC2的配置2.2.2、模拟互联网的路由器的配置2.2.3、财务部服务器的配置2.2.4、路由器AR1的配置 2.3、让各网段能够ping通互联…

ESP8266 Node Mcu开发板连接WIFI并上报数据到MQTT服务器——物联网应用开发

一、前言 本文主要介绍关于ESP8266 Node Mcu开发板如何连接WIFI并将本地采集的数据上传到MQTT服务器中。 大家调试可以使用MQTTBox 二、WIFI连接 首先&#xff0c;导入WIFI连接所需的头文件&#xff0c;引入所需库。 #include <ESP8266WiFi.h> 声明字符串常量&#xff0…

Vue项目路由加前缀

Vue项目路由加前缀 vue-cli3.0配置 1&#xff09;静态资源前缀 vue.config.js /module.exports 配置 publicPath&#xff1a;“/前缀” 2&#xff09;路由前缀 route/index.js export default new Router({ base:”/前缀" , }) 参考文章&#xff1a;https://blog.csd…