字符串相关知识

目录

一、Java中的字符串

1. 定义与创建

2. 字符串操作

(1)连接

(2)获取长度

(3)查找子串

(4)字符串比较

(5) 字符串转换

(6)Java中的字符串基本操作拓展

一、创建字符串

1. 直接创建字符串常量

2. 使用String类构造函数创建

二、获取字符串信息

1. 获取字符串长度

2. 获取指定位置的字符

三、字符串比较

1. 使用equals()方法比较内容

2. 使用equalsIgnoreCase()方法忽略大小写比较内容

3. 使用compareTo()方法比较字符串大小关系(字典序)

四、字符串查找

1. 查找子串首次出现的位置(indexOf)

2. 查找子串最后一次出现的位置(lastIndexOf)

五、字符串截取

六、字符串替换

1. 使用replace方法替换单个字符

2. 使用replaceAll方法按照正则表达式替换

3. 使用replaceFirst方法替换首次匹配的子串

3.Java中的字符串拓展

1. 不可变性

2. 字符串格式化

3. 字符串池

4. 遍历字符串

5. 正则表达式与字符串

6. 国际化(i18n)与字符串

7. 空字符串与null的区别

8. 字符串编码转换(高级用法)

二、C++中的字符串

1. 定义与创建(C++ 中的std::string)

2. 字符串操作

(1)连接

(2)获取长度

(3)索引和切片(C++中的子串操作)

(4)查找子串

(5) 字符串比较

(5)字符串与字符数组的转换

(6)C++中的字符串基本操作拓展

一、创建字符串

1. 直接初始化

2. 默认初始化

3. 从字符数组初始化

4. 使用部分字符数组初始化

二、获取字符串信息

1. 获取字符串长度

2. 获取指定位置的字符

三、字符串比较

1. 使用比较运算符(==、!=、<、>、<=、>=)

2. 使用compare方法比较字符串大小关系(字典序)

四、字符串查找

1. 查找子串首次出现的位置(find)

2. 查找子串最后一次出现的位置(rfind)

五、字符串截取

1. 使用substr方法截取子串(从指定位置到末尾)

2. 使用substr方法截取指定范围的子串

六、字符串替换

1. 使用replace方法替换单个字符或子串

3.C++中的字符串拓展

1. 内存管理

2. 字符串的迭代器

3. 字符串与数字的转换

4. 原始字符串字面量(C++11引入)

5. 字符串的拼接效率优化

6. 自定义字符串类(进阶概念)

7. C++20中的字符串新特性(如果适用)

8. 字符串与文件操作


以下是Java和C++中的字符串相关知识:

一、Java中的字符串

1. 定义与创建

• 在Java中,字符串是对象。可以使用双引号直接创建字符串常量,例如:String str = "Hello";

• 也可以使用String类的构造函数创建字符串对象,如String str = new String("Hello");,不过直接使用双引号创建字符串更为常用,因为Java会对相同内容的字符串常量进行优化,使其在内存中只有一份。

2. 字符串操作

(1)连接

• 可以使用+运算符连接字符串。例如:String s1 = "Hello"; String s2 = " World"; String result = s1 + s2;

• 也可以使用StringBuilder或StringBuffer类(在需要频繁连接字符串时效率更高)进行连接操作。例如:

• StringBuilder sb = new StringBuilder();

• sb.append("Hello");

• sb.append(" World");

• String result = sb.toString();

(2)获取长度

• 使用length()方法获取字符串的长度。例如:String str = "Hello"; int len = str.length();

• 索引和切片(Java中称为子串操作)

• 使用charAt()方法获取指定索引处的字符,索引从0开始。例如:String str = "Hello"; char c = str.charAt(1);(这里c的值为'e')

• 使用substring()方法获取子串。有两种重载形式:

• substring(int beginIndex):返回从beginIndex开始到字符串末尾的子串。例如:String str = "Hello"; String sub = str.substring(1);(sub的值为"ello")

• substring(int beginIndex, int endIndex):返回从beginIndex开始到endIndex - 1的子串。例如:String str = "Hello"; String sub = str.substring(1, 3);(sub的值为"el")

(3)查找子串

• 使用indexOf()方法查找子串首次出现的位置,若找到则返回索引值,否则返回 - 1。例如:String str = "Hello World"; int pos = str.indexOf("World");(pos的值为6)

• 还有lastIndexOf()方法用于查找子串最后一次出现的位置。

(4)字符串比较

• 使用equals()方法比较两个字符串的内容是否相等。例如:String s1 = "Hello"; String s2 = new String("Hello"); boolean isEqual = s1.equals(s2);(isEqual的值为true)

• 注意不要使用==来比较字符串内容,==在Java中比较的是对象的引用(内存地址),除非是比较字符串常量(因为Java对相同内容的字符串常量优化为同一对象)。

(5) 字符串转换

• 可以使用getBytes()方法将字符串转换为字节数组(例如在进行网络传输或文件存储时),默认使用平台的字符编码。例如:String str = "Hello"; byte[] bytes = str.getBytes();

• 使用toCharArray()方法将字符串转换为字符数组。例如:String str = "Hello"; char[] charArray = str.toCharArray();

(6)Java中的字符串基本操作拓展

一、创建字符串
1. 直接创建字符串常量

• 使用双引号创建字符串常量是最常见的方式。例如:String str1 = "Hello, World!";这种方式创建的字符串会被存储在字符串池中(如果池中不存在相同内容的字符串)。

2. 使用String类构造函数创建

• 可以从字符数组创建字符串。例如:char[] charArray = {'H', 'e', 'l', 'l', 'o'}; String str2 = new String(charArray);

• 也可以指定字符数组的一部分来创建字符串。例如:char[] charArray = {'H', 'e', 'l', 'l', 'o'}; String str3 = new String(charArray, 1, 3); // 从索引1开始取3个字符,结果为 "ell"

二、获取字符串信息
1. 获取字符串长度

• 使用length()方法。例如:String str = "Hello"; int len = str.length(); // len的值为5

2. 获取指定位置的字符

• 使用charAt()方法。例如:String str = "Hello"; char c = str.charAt(1); // c的值为 'e'

三、字符串比较
1. 使用equals()方法比较内容

• 例如:String s1 = "Hello"; String s2 = new String("Hello"); boolean isEqual = s1.equals(s2); // isEqual为true

2. 使用equalsIgnoreCase()方法忽略大小写比较内容

• 例如:String s1 = "Hello"; String s2 = "hello"; boolean isEqualIgnoreCase = s1.equalsIgnoreCase(s2); // isEqualIgnoreCase为true

3. 使用compareTo()方法比较字符串大小关系(字典序)

• 例如:String s1 = "Apple"; String s2 = "Banana"; int result = s1.compareTo(s2); // result为负数,因为 "Apple" 在字典序中排在 "Banana" 之前

四、字符串查找
1. 查找子串首次出现的位置(indexOf)

• 例如:String str = "Hello, World!"; int pos = str.indexOf("World"); // pos的值为7

• 还可以指定从哪个索引位置开始查找。例如:int pos2 = str.indexOf("o", 5); // 从索引5开始查找字符 'o' 的位置

2. 查找子串最后一次出现的位置(lastIndexOf)

• 例如:String str = "Hello, World, Hello"; int pos = str.lastIndexOf("Hello"); // pos的值为13

五、字符串截取

1. 使用substring方法截取子串(从指定位置到末尾)

• 例如:String str = "Hello, World!"; String sub1 = str.substring(7); // sub1的值为 "World!"

2. 使用substring方法截取指定范围的子串

• 例如:String str = "Hello, World!"; String sub2 = str.substring(0, 5); // sub2的值为 "Hello"

六、字符串替换
1. 使用replace方法替换单个字符

• 例如:String str = "Hello"; String newStr = str.replace('l', 'p'); // newStr的值为 "Heppo"

2. 使用replaceAll方法按照正则表达式替换

• 例如:String str = "Hello123"; String newStr = str.replaceAll("\\d", "X"); // newStr的值为 "HelloXXX",将所有数字替换为 'X'

3. 使用replaceFirst方法替换首次匹配的子串

• 例如:String str = "Hello, World, Hello"; String newStr = str.replaceFirst("Hello", "Hi"); // newStr的值为 "Hi, World, Hello"

3.Java中的字符串拓展

1. 不可变性

• 在Java中,String对象是不可变的。一旦创建,就不能修改其内容。例如:

• String str = "Hello";

• 当执行str = str + " World";时,实际上是创建了一个新的String对象,而原有的"Hello"对象并没有被修改。这一特性使得字符串在多线程环境下使用更加安全,但在频繁修改字符串内容的情况下,可能会导致性能问题(可以使用StringBuilder或StringBuffer来解决)。

2. 字符串格式化

• Java提供了String.format()方法用于格式化字符串,类似于C语言中的printf风格的格式化。例如:

• int num = 10;

• String formatted = String.format("The number is %d", num);

• 支持的格式化符号有%d(整数)、%f(浮点数)、%s(字符串)等,还可以指定格式化的宽度、精度等参数,如String.format("%.2f", 3.14159)会将浮点数格式化为保留两位小数的字符串。

3. 字符串池

• Java为了提高性能和节省内存,维护了一个字符串池。当使用双引号创建字符串常量时,JVM会首先在字符串池中查找是否已经存在相同内容的字符串,如果存在,则直接返回该字符串的引用;如果不存在,则创建一个新的字符串对象并放入字符串池中。例如:

• String s1 = "Hello";

• String s2 = "Hello";

• 这里s1和s2实际上指向字符串池中的同一个对象,可以使用==进行比较(因为它们是同一个对象的引用),并且这种比较方式在比较字符串常量时是有效的,但对于使用new创建的字符串对象则不适用(因为new总是创建一个新的对象实例)。

4. 遍历字符串

• 可以使用for - each循环遍历字符串中的字符。例如:

• String str = "Hello";

• for (char c : str) {

• System.out.println(c);

• }

• 也可以使用传统的for循环结合charAt()方法进行遍历:

• for (int i = 0; i < str.length(); i++) {

• char c = str.charAt(i);

• System.out.println(c);

• }

5. 正则表达式与字符串

• Java中的String类提供了一些与正则表达式相关的方法。例如,matches()方法用于判断字符串是否匹配某个正则表达式模式。

• String str = "12345";

• boolean isNumeric = str.matches("\\d+"); // 判断是否全是数字,这里isNumeric为true

• split()方法可以根据正则表达式来分割字符串。

• String text = "apple,banana,cherry";

• String[] parts = text.split(","); // 按照逗号分割字符串,得到一个包含"apple"、"banana"和"cherry"的数组

• replaceAll()方法使用正则表达式替换字符串中的部分内容。

• String input = "Hello, world!";

• String output = input.replaceAll("world", "Java"); // 将"world"替换为"Java",得到"Hello, Java!"

6. 国际化(i18n)与字符串

• Java通过java.util.ResourceBundle类支持国际化。可以将不同语言版本的字符串存储在资源文件(通常是.properties文件)中。

• 例如,有一个messages.properties文件包含默认语言(如英语)的字符串:greeting=Hello,和一个messages_fr.properties文件包含法语版本的字符串:greeting=Bonjour。

• 在代码中,可以这样使用:

• ResourceBundle bundle = ResourceBundle.getBundle("messages", Locale.getDefault());

• String greeting = bundle.getString("greeting");

7. 空字符串与null的区别

• 在Java中,空字符串""是一个长度为0的有效字符串对象,而null表示没有字符串对象的引用。

• 在处理字符串时需要注意区分这两种情况。例如:

• String str1 = "";

• String str2 = null;

• 当调用str1.length()时会返回0,而调用str2.length()会抛出NullPointerException。

8. 字符串编码转换(高级用法)

• 如果需要在不同的字符编码之间进行转换,可以使用java.nio.charset.Charset类。

• 例如,将UTF - 8编码的字节数组转换为字符串:

• byte[] utf8Bytes = { - 17, - 65, - 67, 72, 101, 108, 108, 111};

• Charset utf8Charset = Charset.forName("UTF - 8");

• String str = new String(utf8Bytes, utf8Charset);

二、C++中的字符串

1. 定义与创建(C++ 中的std::string)

• 在C++中,可以使用std::string类型来处理字符串。需要包含<string>头文件。例如:#include <string>,然后可以创建字符串对象,如std::string str = "Hello";

• 也可以使用构造函数创建空字符串或从字符数组创建字符串,如std::string str1;(创建空字符串),char arr[] = "Hello"; std::string str2(arr);

2. 字符串操作

(1)连接

• 可以使用+运算符连接std::string对象和字符串字面量或其他std::string对象。例如:std::string s1 = "Hello"; std::string s2 = " World"; std::string result = s1 + s2;

• 还可以使用append()方法来连接字符串。例如:std::string s1 = "Hello"; std::string s2 = " World"; s1.append(s2);

(2)获取长度

• 使用length()或size()方法获取字符串的长度。例如:std::string str = "Hello"; int len = str.length();或者int len = str.size();

(3)索引和切片(C++中的子串操作)

• 可以使用[]运算符访问字符串中的单个字符,索引从0开始。例如:std::string str = "Hello"; char c = str[1];(这里c的值为'e')

• 使用substr()方法获取子串。例如:std::string str = "Hello World"; std::string sub = str.substr(6);(sub的值为"World"),也可以指定长度,如std::string sub = str.substr(0, 5);(sub的值为"Hello")

(4)查找子串

• 使用find()方法查找子串首次出现的位置,若找到则返回索引值,否则返回std::string::npos。例如:std::string str = "Hello World"; size_t pos = str.find("World");

(5) 字符串比较

• 可以使用==、!=、<、>、<=、>=等运算符比较std::string对象。例如:std::string s1 = "Hello"; std::string s2 = "Hello"; bool isEqual = s1 == s2;


(5)字符串与字符数组的转换

• 从std::string转换为字符数组:可以使用c_str()方法,它返回一个指向以空字符结尾的C - 风格字符串(字符数组)的指针。例如:std::string str = "Hello"; const char* cstr = str.c_str();

• 从字符数组创建std::string对象如前面所述,可以直接使用构造函数或者赋值操作。例如:char arr[] = "Hello"; std::string str(arr);

(6)C++中的字符串基本操作拓展

一、创建字符串
1. 直接初始化

• 使用std::string类型,直接用字符串常量初始化。例如:std::string str1 = "Hello";

2. 默认初始化

• 例如:std::string str2; 创建一个空字符串。

3. 从字符数组初始化

• 例如:char arr[] = "Hello"; std::string str3(arr);

4. 使用部分字符数组初始化

• 例如:char arr[] = "Hello"; std::string str4(arr, 1, 3); // 从索引1开始取3个字符,结果为 "ell"

二、获取字符串信息
1. 获取字符串长度

• 使用length()或size()方法,它们是等效的。例如:std::string str = "Hello"; size_t len = str.length(); // len的值为5

2. 获取指定位置的字符

• 使用[]运算符。例如:std::string str = "Hello"; char c = str[1]; // c的值为 'e'

三、字符串比较
1. 使用比较运算符(==、!=、<、>、<=、>=)

• 例如:std::string s1 = "Hello"; std::string s2 = "Hello"; bool isEqual = s1 == s2; // isEqual为true

2. 使用compare方法比较字符串大小关系(字典序)

• 例如:std::string s1 = "Apple"; std::string s2 = "Banana"; int result = s1.compare(s2); // result为负数,因为 "Apple" 在字典序中排在 "Banana" 之前

四、字符串查找
1. 查找子串首次出现的位置(find)

• 例如:std::string str = "Hello, World!"; size_t pos = str.find("World"); // pos的值为7

• 还可以指定从哪个索引位置开始查找。例如:size_t pos2 = str.find("o", 5); // 从索引5开始查找字符 'o' 的位置

2. 查找子串最后一次出现的位置(rfind)

• 例如:std::string str = "Hello, World, Hello"; size_t pos = str.rfind("Hello"); // pos的值为13

五、字符串截取
1. 使用substr方法截取子串(从指定位置到末尾)

• 例如:std::string str = "Hello, World!"; std::string sub1 = str.substr(7); // sub1的值为 "World!"

2. 使用substr方法截取指定范围的子串

• 例如:std::string str = "Hello, World!"; std::string sub2 = str.substr(0, 5); // sub2的值为 "Hello"

六、字符串替换
1. 使用replace方法替换单个字符或子串

• 例如:std::string str = "Hello"; str.replace(1, 1, "p"); // 将索引1处的字符替换为 'p',结果为 "Hepo"

• 例如:std::string str = "Hello, World"; str.replace(str.find("World"), 5, "Universe"); // 将 "World" 替换为 "Universe",结果为 "Hello, Universe"

3.C++中的字符串拓展

1. 内存管理

• 与Java不同,C++中的std::string对象需要考虑内存管理。不过,std::string类内部已经对内存进行了有效的管理。当字符串的长度发生变化时(如连接、追加操作),std::string会自动重新分配足够的内存来容纳新的内容。例如:

• std::string str = "Hello";

• str = str + " World";

• 在这个过程中,std::string类会处理内存的重新分配,以确保能够存储新的字符串内容。

2. 字符串的迭代器

• 可以使用迭代器来遍历std::string对象。例如:

• std::string str = "Hello";

• for (std::string::iterator it = str.begin(); it!= str.end(); ++it) {

• std::cout << *it;

• }

• 也可以使用基于范围的for循环(C++11引入),这是一种更简洁的遍历方式:

• std::string str = "Hello";

• for (char c : str) {

• std::cout << c;

• }

3. 字符串与数字的转换

• 字符串转数字

• 对于将字符串转换为整数,可以使用std::stoi(转换为int)、std::stol(转换为long)等函数。例如:

• std::string numStr = "123";

• int num = std::stoi(numStr);

• 对于浮点数,可以使用std::stof(转换为float)、std::stod(转换为double)等函数。

• 数字转字符串

• 可以使用std::to_string函数将数字转换为字符串。例如:

• int num = 123;

• std::string numStr = std::to_string(num);

4. 原始字符串字面量(C++11引入)

• C++11提供了原始字符串字面量的支持,这对于处理包含特殊字符(如反斜杠、双引号等)的字符串非常有用。原始字符串字面量以R"(开始,以)"结束。例如:

• std::string rawStr = R"(This is a "raw" string \ with special characters.)";

• 在这个字符串中,特殊字符不需要进行转义处理,与普通字符串字面量相比,更方便地表示复杂的字符串内容。

5. 字符串的拼接效率优化

• 当使用+运算符多次拼接std::string时,每次拼接都会创建一个新的临时对象,这可能会导致性能问题。为了提高效率,可以使用std::ostringstream。

• 例如:

• #include <sstream>

• std::ostringstream oss;

• oss << "Hello";

• oss << " World";

• std::string result = oss.str();

6. 自定义字符串类(进阶概念)

• 在C++中,可以根据需求自定义字符串类。需要考虑内存管理、字符存储方式(如动态数组)、字符串操作方法(如连接、查找、比较等)的实现。

• 例如,一个简单的自定义字符串类的部分实现:
class MyString {
private:
    char* data;
    size_t length;
public:
    MyString();
    MyString(const char* str);
    ~MyString();
    MyString operator+(const MyString& other);
    bool operator==(const MyString& other);
    // 其他方法定义...
};


7. C++20中的字符串新特性(如果适用)

• C++20引入了一些新的字符串相关特性。例如,std::format函数提供了更强大和类型安全的格式化功能,类似于Python中的格式化字符串。

• int num = 42;

• std::string formatted = std::format("The number is {}", num);

• 它还支持更复杂的格式化选项,如格式化对齐、填充等。

8. 字符串与文件操作

• 在C++中,std::string经常与文件操作结合使用。例如,使用std::ifstream读取文件内容到std::string对象。
#include <iostream>
#include <fstream>
#include <sstream>
int main() {
    std::ifstream file("test.txt");
    std::stringstream buffer;
    buffer << file.rdbuf();
    std::string fileContent = buffer.str();
    std::cout << fileContent << std::endl;
    return 0;
}
• 同样,也可以使用std::ofstream将std::string内容写入文件。

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

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

相关文章

Python pyppeteer 与playwright 模拟浏览器请求 部署服务器遇到的坑

在服务器部署遇到的问题 在服务器上部署后如果遇到代码执行卡主问题 通过debug 显示 代码到 browser await launch(headlessFalse)卡主了 ,由于服务器没有浏览器的图形化环境,所以只能将修改为无头浏览器的模式启动 browser await launch(headlessTrue) async def crawling…

FPGA IP 和 开源 HDL 一般去哪找?

在FPGA开发的世界中&#xff0c;IP核和HDL模块是构建复杂数字系统的基石。它们如同乐高积木&#xff0c;让开发者能够快速搭建和重用经过验证的电路功能。但你是否曾感到迷茫&#xff0c;不知道从哪里寻找这些宝贵的资源&#xff1f;本文将为你揭开寻找FPGA IP核和HDL模块资源的…

Tesla T4 P2P测试

Tesla T4 P2P测试 一.测试环境二.测试步骤1.获取设备信息2.查看PCIE拓扑结构3.选择9B、9E这二张4.查看逻辑设备ID5.设置环境变量(需要用逻辑设备ID,通过UUID跟smi看到的物理ID关联)6.不同地址的原子操作2.P2P与非P2P的性能差异3.GPU带宽测试 Tesla T4 P2P测试 通过物理ID找到逻…

2024PT展,现场精华

9月25-27日&#xff0c;2024年国际信息通信展&#xff08;简称PT展&#xff09;在北京国家会议中心召开。 小枣君去了现场&#xff0c;也拍了一些照片&#xff0c;特此分享给大家。 会场离“奥林匹克公园”地铁站很近&#xff1a; Logo设计得还是挺好看的&#xff1a; 熟悉的场…

一区黏菌算法+双向深度学习+注意力机制!SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测

一区黏菌算法双向深度学习注意力机制&#xff01;SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测 目录 一区黏菌算法双向深度学习注意力机制&#xff01;SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元…

探索机器人快换盘技术的未来之路:智能化与协作的革新

在当今快速发展的科技时代&#xff0c;机器人已成为众多领域不可或缺的得力助手。其中&#xff0c;机器人快换盘技术作为提升机器人灵活性和应用广度的重要技术&#xff0c;正经历着前所未有的变革与创新。下面请随我们一起深入探讨这一技术的未来发展趋势。 一、人工智能&…

数据工程师岗位常见面试问题-2(附回答)

数据工程师已成为科技行业最重要的角色之一&#xff0c;是组织构建数据基础设施的骨干。随着企业越来越依赖数据驱动的决策&#xff0c;对成熟数据工程师的需求会不断上升。如果您正在准备数据工程师面试&#xff0c;那么应该掌握常见的数据工程师面试问题&#xff1a;包括工作…

Flink Lookup Join的工作原理、性能优化和应用场景

目录 1 Flink Lookup Join的工作原理 1.1 数据流处理与维表关联 1.2 键值对查询 1.3 数据时效性与准确性 2 Flink Lookup Join的实现方法 2.1 SQL语句编写 2.2 系统架构与数据流 3 Flink Lookup Join的性能优化 3.1 数据存储与索引 3.2 连接算法优化 3.3 资源配置与…

第19周JavaWeb编程实战-MyBatis实现OA系统 1-OA系统

办公OA系统项目开发 课程简介 本课程将通过慕课办公OA平台的开发&#xff0c;讲解实际项目开发中必须掌握的技能和设计技巧。课程分为三个主要阶段&#xff1a; 需求说明及环境准备&#xff1a; 基于RBAC的访问控制模块开发&#xff1a; 多级请假审批流程开发&#xff1a; …

matlab-对比两张图片的HSV分量的差值并形成直方图

%对比两张图片的HSV分量的差值并形成直方图&#xff0c;改个路径就能用&#xff0c;图片分辨率要一致 close all; clear all; clc; I1imread(E:\test\resources\image\1.jpg); I2imread(E:\test\resources\image\2.jpg); HSV1 rgb2ntsc(I1); HSV2 rgb2ntsc(I2); %HSV,HSV 代…

Android Webview和ScrollView冲突和WebView使用总结

1.因为Webview和ScrollView都用滑动事件&#xff0c;导致webview很难被滑动&#xff0c;即使被滑动了一点也非常不顺畅2.解决滑动冲突问题后发现&#xff0c;如果webview嵌套的html中含有轮播图等还是有问题。 使用自定义ScrollWebView解决这个问题 public class ScrollWebVi…

<<迷雾>> 第 4 章 电子计算机发明的前夜 示例电路

莫尔斯电报示意图 info::操作说明 鼠标单击开关切换开合状态 通电后, 线圈产生磁力从而将铁片开关(衔铁臂)吸引下来 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch04-01-morse-te…

Shopline对接需要注意的问题

Shopline对接是一项复杂而细致的工作&#xff0c;为了确保对接的顺利进行&#xff0c;并保证系统的稳定性和可靠性&#xff0c;需要注意以下几个方面。 1.API文档的详细阅读 功能理解&#xff1a; 仔细阅读Shopline提供的API文档&#xff0c;全面了解每个接口的功能、参数、返…

AI学习指南深度学习篇-Adadelta的Python实践

AI学习指南深度学习篇-Adadelta的Python实践 深度学习是人工智能领域的一个重要分支&#xff0c;近年来在各个领域都取得了显著的成就。在深度学习的模型训练中&#xff0c;优化算法起着至关重要的作用&#xff0c;其中Adadelta是一种常用的优化算法之一。本篇博客将使用Pytho…

初始docker以及docker的基本使用!!!

文章目录 虚拟化技术Docker/podman 命令通用命令查看docker 当前版本管理docker运行 镜像操作[image]列出本地所有镜像拉取镜像删除镜像把docker中的镜像打包成文件把镜像文件加载到docker中上传镜像 容器操作[container]创建容器docker run的参数选项列出所有容器启动容器停止…

JavaScript 中的闭包的形成及使用场景

JavaScript 中的闭包 闭包&#xff08;Closure&#xff09; 是 JavaScript 中一个非常重要且独特的概念&#xff0c;它指的是 函数能够记住并访问其词法作用域内的变量&#xff0c;即使这个函数在其词法作用域之外执行。 通俗地说&#xff0c;闭包是 一个函数可以“记住”它在…

安防区域保护:无线电干扰设备技术详解

在安防区域保护中&#xff0c;无线电干扰设备技术扮演着重要角色&#xff0c;它主要用于通过发射特定频率的无线电波来干扰无人机或其他无线电设备的通信链路、导航信号或控制信号&#xff0c;以达到削弱、阻断甚至控制这些设备运行的目的。以下是对无线电干扰设备技术的详细解…

EditText 设置imeOptions事件监听无效问题

在EditText获取焦点的时候&#xff0c;给软键盘右下角按键添加事件事件监听&#xff0c;发现出现setOnEditorActionListener事件监听无效的问题。 EditText设置 imeOptions表示为搜索事件&#xff0c;软键盘弹出时&#xff0c;右下角显示为搜索字样而不是换行符 android:sin…

【GAN】生成对抗网络Generative Adversarial Networks理解摘要

【Pytorch】生成对抗网络实战_pytorch生成对抗网络-CSDN博客 【损失函数】KL散度与交叉熵理解-CSDN博客 [1406.2661] Generative Adversarial Networks (arxiv.org) GAN本质是对抗或者说竞争&#xff0c;通过生成器和鉴别器的竞争获取有效地结果&#xff0c;换句话说&#xff0…

每日一练 2024.9.29(2)

目录 解题思路与代码实现 题目分析 一、解题策略 关键步骤&#xff1a; 二、代码实现 三、代码解析 四、复杂度分析 五、运行示例 示例1&#xff1a; 示例2&#xff1a; 六、总结 解题思路与代码实现 题目分析 这道题目要求我们找到字符串列表 strs 中的相似字符组…