Python字符串处理深度解析:高级操作技巧、性能优化与实用案例全解

news2024/10/23 15:52:09

在这里插入图片描述

文章目录

    • 前言
    • 💗一、字符串的定义与特点
      • 💘1.1 字符串的定义
        • 1.1.1 单引号和双引号的字符串定义:
        • 1.1.2 三引号定义多行字符串:
      • 💘1.2 特点:
      • 💘1.3 字符串是序列
      • 小结:
    • 💗二、 字符串的索引与切片
      • 💘2.1 字符串的索引
        • 2.1.1 正向索引(从左往右)
        • 2.1.2 反向索引(从右往左)
      • 💘2.2 字符串的切片
        • 2.2.1 基本切片操作
        • 2.2.2 使用步长
        • 2.2.3 反向切片
      • 💘2.3 索引和切片的边界处理
        • 2.3.1 索引超出范围
        • 2.3.2 切片超出范围
      • 💘2.4 切片是新的字符串
      • 💘2.5 负索引与负步长组合
      • 小结:
    • 💗三、 字符串的查找与替换
      • 💘3.1 字符串的查找
        • 3.1.1 `find()` 方法
        • 3.1.2 `rfind()` 方法
        • 3.1.3 `index()` 方法
        • 3.1.4 `rindex()` 方法
        • 3.1.5 `in` 操作符
      • 💘3.2 字符串的替换
        • 3.2.1 `replace()` 方法
        • 3.2.2 替换的注意事项
      • 💘3.3 字符串查找与替换结合的例子
        • 3.3.1 示例:查找并替换字符串
      • 小结
    • 💗四、 字符串的分割与连接
      • 💘4.1 字符串的分割(split)
      • 💘4.2 字符串的连接(join)
      • 小结:
    • 💗五、字符串的规整操作
      • 💘5.1 去除空白字符(strip,lstrip 和 rstrip)
      • 💘5.2 调整大小写(lower,upper,capitalize,title)
      • 💘5.3 去除或替换特定字符(replace)
      • 💘5.4 去除多余的空白字符(split,join)
      • 💘5.5 判断字符串的格式(startswith,endswith)
      • 💘5.6 字符串对齐(center,ljust,rjust)
      • 💘5.7 移除非字母字符(re.sub)
      • 小结
    • 💗六、字符串**统计与长度**:
      • 💘6.1 获取字符串长度(len)
      • 💘6.2 统计子字符串的出现次数(count)
      • 💘6.3 查找子字符串的位置(find,rfind)
      • 💘6.4 统计字符串中的字母、数字或其他类型字符(isalpha,isdigit,isalnum)
      • 💘6.5 统计大写和小写字母的数量(isupper,islower)
      • 💘6.6 统计某些特定字符的次数(collections.Counter)
      • 小结
    • 结语


前言

在Python编程中,字符串(str)是一个非常重要的数据类型,它不仅用于表示文本数据,还广泛应用于各种数据处理和转换任务。字符串作为字符的容器,具有独特的特点和操作方式。本文将详细介绍Python中的str容器,包括其定义、特点、常用操作及代码示例,帮助读者更好地理解和使用字符串。


💗一、字符串的定义与特点

在 Python 中,字符串string)是一种用于表示文本数据的不可变数据类型。它有以下几个特点和定义方式:

💘1.1 字符串的定义

字符串可以通过单引号 '...'、双引号 "..." 或三引号 '''...'''"""...""" 来定义。三引号通常用于定义多行字符串。

1.1.1 单引号和双引号的字符串定义:
str1 = 'Hello, World!'
str2 = "Python is fun!"

print(str1)  # 输出: Hello, World!
print(str2)  # 输出: Python is fun!
1.1.2 三引号定义多行字符串:
multi_line_str = '''This is a
multi-line
string.'''

print(multi_line_str)
# 输出:
# This is a
# multi-line
# string.

💘1.2 特点:

  • 不可变性:字符串一旦创建,其内容就不能被修改。对字符串的任何修改操作都会生成一个新的字符串,而原来的字符串保持不变。
  • 支持索引和切片:字符串可以通过索引来访问单个字符,索引从 0 开始。也可以通过切片操作来获取字符串的子串。
  • 支持多种字符串操作:Python 提供了多种内置方法来操作字符串,如拼接、查找、替换等。
  • 支持遍历:可以使用 for 循环遍历字符串中的每个字符。
  • 支持多种格式化方式
    • Python 提供了多种字符串格式化方式,用于将变量插入字符串中:
      • 使用 % 格式化符
      • 使用 str.format() 方法
      • 使用 f-string(Python 3.6 及以上版本)

💘1.3 字符串是序列

字符串可以看作是字符的序列,因此可以执行所有适用于序列的操作,如拼接、乘法(重复)、成员检查等。

s = "abc"

# 拼接
s2 = s + "def"
print(s2)  # 输出: abcdef

# 乘法(重复)
s3 = s * 3
print(s3)  # 输出: abcabcabc

# 成员检查
print("a" in s)  # 输出: True
print("z" in s)  # 输出: False

小结:

  • 字符串的定义:可以使用单引号、双引号或三引号。
  • 不可变性:字符串一旦创建,不能修改。
  • 索引和切片:可以通过索引访问字符,通过切片获取子串。
  • 常见操作:支持拼接、查找、替换等。
  • 遍历:可以使用 for 循环遍历每个字符。
  • 格式化:支持 % 格式化符、str.format() 和 f-string。

💗二、 字符串的索引与切片

在 Python 中,字符串的索引切片是非常常用的操作,允许你访问、提取和操作字符串中的字符和子字符串。字符串是字符的序列,因此可以使用索引和切片来获取字符串的特定部分。

💘2.1 字符串的索引

字符串中的每个字符都有一个唯一的索引,索引从 0 开始。可以通过索引访问字符串中的单个字符。

2.1.1 正向索引(从左往右)

正向索引从 0 开始,0 对应第一个字符,1 对应第二个字符,以此类推。

s = "Python"

# 通过正向索引访问字符
print(s[0])  # 输出: P
print(s[1])  # 输出: y
print(s[5])  # 输出: n
2.1.2 反向索引(从右往左)

反向索引从 -1 开始,-1 对应最后一个字符,-2 对应倒数第二个字符,以此类推。

s = "Python"

# 通过反向索引访问字符
print(s[-1])  # 输出: n
print(s[-2])  # 输出: o
print(s[-6])  # 输出: P

💘2.2 字符串的切片

切片操作允许你通过索引范围来提取字符串中的子字符串。切片语法为:

s[start:end:step]
  • start:切片的起始位置(包含),如果省略,默认为字符串的开头。
  • end:切片的结束位置(不包含),如果省略,默认为字符串的末尾。
  • step:步长(可选),默认为 1,如果为负数,表示反向切片。
2.2.1 基本切片操作
s = "Python"

# 获取从索引 1 到索引 4 之间的子串 (索引 4 不包含)
print(s[1:4])  # 输出: yth

# 获取从索引 2 到结尾的子串
print(s[2:])  # 输出: thon

# 获取从开头到索引 3 的子串 (索引 3 不包含)
print(s[:3])  # 输出: Pyt

# 获取整个字符串
print(s[:])  # 输出: Python
2.2.2 使用步长

步长表示每次切片时跨越的字符数。默认情况下,步长为 1,即逐字符切片。你可以设置不同的步长来实现更多功能。

s = "Python"

# 步长为 2,表示每隔一个字符取一个
print(s[0:6:2])  # 输出: Pto

# 反向切片,步长为负数
print(s[::-1])  # 输出: nohtyP (字符串反转)
2.2.3 反向切片

如果步长是负数,则表示从右向左进行切片。例如:

s = "Python"

# 反向切片,从倒数第二个字符到第一个字符
print(s[-2::-1])  # 输出: ohtyP

💘2.3 索引和切片的边界处理

2.3.1 索引超出范围

如果你尝试访问超出字符串范围的索引,会抛出 IndexError

s = "Python"

# 访问超出范围的索引
# print(s[10])  # 将抛出 IndexError: string index out of range
2.3.2 切片超出范围

如果切片的范围超出字符串的边界,Python 不会抛出错误,而是自动调整到有效范围。

s = "Python"

# 切片范围超出字符串长度
print(s[2:100])  # 输出: thon (自动调整为 s[2:])

💘2.4 切片是新的字符串

需要注意的是,切片操作返回的是一个新的字符串,并不修改原始字符串。

s = "Python"
new_s = s[:3]

print(new_s)  # 输出: Pyt
print(s)      # 输出: Python (原字符串不变)

💘2.5 负索引与负步长组合

负索引可以与负步长一起使用,实现从右向左的反向切片。

s = "Python"

# 从倒数第二个字符到第二个字符(索引 1)反向切片
print(s[-2:0:-1])  # 输出: ohty

小结:

  • 索引:可以通过正向(从 0 开始)或反向(从 -1 开始)索引来访问字符串中的字符。
  • 切片:通过指定 start:end:step 来获取子字符串。start 是起始索引,end 是结束索引(不包含),step 是步长(可正可负)。
  • 边界处理:超出索引范围会抛出错误,而切片超出范围时会自动调整。
  • 切片返回新的字符串:切片操作会返回一个新的字符串,不会修改原字符串。

💗三、 字符串的查找与替换

在 Python 中,字符串的查找替换是非常常见的操作。Python 提供了多个方法来查找子字符串和替换字符串中的内容,下面是具体的操作方式:

💘3.1 字符串的查找

Python 提供了多种方法来查找子字符串在另一个字符串中的位置或是否存在。

3.1.1 find() 方法

find() 方法用于在字符串中查找子字符串,返回子字符串首次出现的起始索引。如果未找到子字符串,则返回 -1

s = "Hello, Python!"

# 查找子字符串 "Python"
index = s.find("Python")
print(index)  # 输出: 7 ("Python" 在索引 7 处开始)

# 查找不存在的子字符串
index = s.find("Java")
print(index)  # 输出: -1 (表示未找到)
3.1.2 rfind() 方法

rfind() 方法与 find() 类似,但它从字符串的末尾开始查找,返回子字符串最后一次出现的索引。

s = "Hello, Python, Python!"

# 查找子字符串 "Python" 的最后一次出现位置
index = s.rfind("Python")
print(index)  # 输出: 14 (最后一个 "Python" 的索引)
3.1.3 index() 方法

index() 方法与 find() 类似,返回子字符串首次出现的索引。如果未找到子字符串,则会抛出 ValueError 异常。

s = "Hello, Python!"

# 查找子字符串 "Python"
index = s.index("Python")
print(index)  # 输出: 7

# 查找不存在的子字符串
# index = s.index("Java")  # 将抛出 ValueError
3.1.4 rindex() 方法

rindex() 方法与 rfind() 类似,但如果子字符串未找到,则会抛出 ValueError 异常。

s = "Hello, Python, Python!"

# 查找子字符串 "Python" 的最后一次出现位置
index = s.rindex("Python")
print(index)  # 输出: 14

# 查找不存在的子字符串
# index = s.rindex("Java")  # 将抛出 ValueError
3.1.5 in 操作符

in 操作符用于判断某个子字符串是否存在于字符串中,返回 TrueFalse

s = "Hello, Python!"

# 判断子字符串是否存在
print("Python" in s)  # 输出: True
print("Java" in s)    # 输出: False

💘3.2 字符串的替换

替换字符串中的子字符串可以使用 replace() 方法。

3.2.1 replace() 方法

replace() 方法用于将字符串中的某个子字符串替换为另一个字符串。可以指定替换的次数,默认情况下会替换所有匹配的子字符串。

s = "Hello, Python, Python!"

# 替换所有的 "Python" 为 "Java"
new_s = s.replace("Python", "Java")
print(new_s)  # 输出: Hello, Java, Java!

# 只替换一次
new_s = s.replace("Python", "Java", 1)
print(new_s)  # 输出: Hello, Java, Python!
3.2.2 替换的注意事项
  • replace() 方法返回的是新的字符串,它不会修改原始字符串,因为字符串是不可变的。
s = "Hello, Python!"
new_s = s.replace("Python", "Java")

print(s)      # 原字符串未改变,输出: Hello, Python!
print(new_s)  # 新字符串,输出: Hello, Java!

💘3.3 字符串查找与替换结合的例子

我们可以结合字符串查找与替换操作来进行更复杂的字符串处理。

3.3.1 示例:查找并替换字符串
s = "I love programming in Python. Python is great!"

# 查找字符串 "Python" 的出现位置
index = s.find("Python")
if index != -1:
    print(f"'Python' 第一次出现在索引 {index}")
else:
    print("没有找到 'Python'")

# 将 "Python" 替换为 "Java"
new_s = s.replace("Python", "Java")
print(new_s)  # 输出: I love programming in Java. Java is great!

小结

  • 查找方法:

    • find():返回子字符串首次出现的索引,未找到返回 -1
    • rfind():从右向左查找,返回子字符串最后一次出现的索引,未找到返回 -1
    • index():与 find() 类似,但未找到时抛出 ValueError
    • rindex():与 rfind() 类似,但未找到时抛出 ValueError
    • in 操作符:判断子字符串是否存在,返回 TrueFalse
  • 替换方法:

    • replace():将字符串中的子字符串替换为另一个字符串,可以指定替换的次数,默认替换所有匹配项。

💗四、 字符串的分割与连接

在 Python 中,字符串的分割和连接是非常常见的操作。你可以使用 split() 方法将字符串按特定的分隔符拆分成列表,使用 join() 方法将多个字符串连接成一个字符串。

💘4.1 字符串的分割(split)

split() 可以按指定的分隔符将字符串拆分成一个字符串列表。

语法:

str.split(separator, maxsplit)
  • separator: 指定分隔符,默认为空格(如果未提供)。
  • maxsplit: 可选参数,指定最多分割的次数。如果不指定,则分割所有匹配项。

示例:

text = "Python is a powerful language"
words = text.split()  # 默认使用空格分割
print(words)
# 输出: ['Python', 'is', 'a', 'powerful', 'language']

# 使用逗号分割
csv_text = "apple,banana,cherry"
fruits = csv_text.split(',')
print(fruits)
# 输出: ['apple', 'banana', 'cherry']

# 限制分割次数
limited_split = csv_text.split(',', maxsplit=1)
print(limited_split)
# 输出: ['apple', 'banana,cherry']

💘4.2 字符串的连接(join)

join() 是将一个可迭代对象(如列表、元组)中的元素连接成一个字符串。分隔符就是调用 join() 的字符串。

语法:

'separator'.join(iterable)
  • separator: 指定用于分隔元素的字符串。
  • iterable: 一个可迭代对象(如列表或元组),其中的元素必须是字符串。

示例:

# 将列表中的单词用空格连接成句子
words = ['Python', 'is', 'a', 'powerful', 'language']
sentence = ' '.join(words)
print(sentence)
# 输出: 'Python is a powerful language'

# 使用逗号连接
csv_text = ','.join(fruits)
print(csv_text)
# 输出: 'apple,banana,cherry'

小结:

  • 使用 split() 可以按照指定分隔符将字符串分割为列表。
  • 使用 join() 可以将列表中的字符串元素按照指定的分隔符连接成一个新的字符串。

💗五、字符串的规整操作

在 Python 中,进行字符串的规整操作(也称为字符串的标准化或清理)通常包括去除多余的空白字符、调整大小写、去除特殊字符、替换或删除不需要的部分等。以下是一些常用的字符串规整方法。

💘5.1 去除空白字符(strip,lstrip 和 rstrip)

  • strip():去除字符串开头和结尾的空白字符(包括空格、换行符 \n、制表符 \t 等)。
  • lstrip():只去除字符串开头的空白字符。
  • rstrip():只去除字符串结尾的空白字符。

示例:

text = "   Hello, Python!   \n"
print(text.strip())   # 去除开头和结尾的空白字符
# 输出: "Hello, Python!"

print(text.lstrip())  # 去除开头的空白字符
# 输出: "Hello, Python!   \n"

print(text.rstrip())  # 去除结尾的空白字符
# 输出: "   Hello, Python!"

💘5.2 调整大小写(lower,upper,capitalize,title)

  • lower():将所有字符转换为小写。
  • upper():将所有字符转换为大写。
  • capitalize():将第一个字符转换为大写,其他字符转换为小写。
  • title():将每个单词的首字母大写,其他字母小写。

示例:

text = "hello, PYTHON!"
print(text.lower())        # 转换为小写
# 输出: "hello, python!"

print(text.upper())        # 转换为大写
# 输出: "HELLO, PYTHON!"

print(text.capitalize())   # 首字母大写,其他字母小写
# 输出: "Hello, python!"

print(text.title())        # 每个单词的首字母大写
# 输出: "Hello, Python!"

💘5.3 去除或替换特定字符(replace)

replace() 可以用来将字符串中的某个子字符串替换为另一个字符串。

语法:

str.replace(old, new, count)
  • old: 要替换的旧子字符串。
  • new: 替换成的新子字符串。
  • count: 可选参数,表示最多替换多少次。如果不指定,默认替换所有匹配项。

示例:

text = "Hello, Python! Python is fun."
new_text = text.replace("Python", "Java")
print(new_text)
# 输出: "Hello, Java! Java is fun."

# 只替换一次
new_text_once = text.replace("Python", "Java", 1)
print(new_text_once)
# 输出: "Hello, Java! Python is fun."

💘5.4 去除多余的空白字符(split,join)

有时字符串中可能包含多余的空格(如多个连续的空格),可以通过以下方法将多余的空格去掉。

可以使用 split() 将字符串按空白字符分割成单词,然后再用 join() 将这些单词按单个空格连接起来。

示例:

text = "Hello,   Python!   How  are  you?"
normalized_text = ' '.join(text.split())
print(normalized_text)
# 输出: "Hello, Python! How are you?"

💘5.5 判断字符串的格式(startswith,endswith)

  • startswith():检查字符串是否以指定的子字符串开头。
  • endswith():检查字符串是否以指定的子字符串结尾。

示例:

text = "Hello, Python!"
print(text.startswith("Hello"))  # 检查是否以 "Hello" 开头
# 输出: True

print(text.endswith("!"))        # 检查是否以 "!" 结尾
# 输出: True

💘5.6 字符串对齐(center,ljust,rjust)

  • center(width):返回一个指定宽度的字符串,原字符串居中,并在两侧用指定的字符填充。
  • ljust(width):返回一个指定宽度的字符串,原字符串左对齐,并在右侧填充字符。
  • rjust(width):返回一个指定宽度的字符串,原字符串右对齐,并在左侧填充字符。

示例:

text = "Python"
print(text.center(10, '-'))  # 居中,两侧填充 "-"
# 输出: "--Python--"

print(text.ljust(10, '-'))   # 左对齐,右侧填充 "-"
# 输出: "Python----"

print(text.rjust(10, '-'))   # 右对齐,左侧填充 "-"
# 输出: "----Python"

💘5.7 移除非字母字符(re.sub)

使用正则表达式可以有效地移除字符串中的非字母字符。

import re

text = "Hello, Python! It's fun."
cleaned_text = re.sub(r'[^A-Za-z\s]', '', text)
print(cleaned_text)
# 输出: "Hello Python Its fun"

小结

  • 去除空白字符:strip()lstrip()rstrip()
  • 调整大小写:lower()upper()capitalize()title()
  • 替换子字符串:replace()
  • 去除多余空格:split()join() 组合使用
  • 判断字符串格式:startswith()endswith()
  • 字符串对齐:center()ljust()rjust()
  • 移除非字母字符:使用正则表达式 re.sub()

💗六、字符串统计与长度

在 Python 中,统计字符串中的字符或子字符串的出现次数、获取字符串的长度等操作非常常用。下面我将介绍如何进行这些操作。

💘6.1 获取字符串长度(len)

len() 函数用于返回字符串中字符的总数,包括空格和特殊字符。

示例:

text = "Hello, Python!"
length = len(text)
print(length)
# 输出: 14

💘6.2 统计子字符串的出现次数(count)

count() 方法用于统计指定子字符串在字符串中出现的次数。

语法:

str.count(substring, start, end)
  • substring: 要统计的子字符串。
  • start: 可选参数,指定开始查找的索引位置。
  • end: 可选参数,指定结束查找的索引位置(不包括该索引位置)。

示例:

text = "Python is fun, and Python is powerful."
count_python = text.count("Python")
print(count_python)
# 输出: 2

# 指定搜索范围,统计 "is" 在索引 10 到 30 之间出现的次数
count_is = text.count("is", 10, 30)
print(count_is)
# 输出: 1

💘6.3 查找子字符串的位置(find,rfind)

  • find():返回子字符串第一次出现的索引,如果未找到则返回 -1
  • rfind():从右边开始查找子字符串,返回最后一次出现的索引。

语法:

str.find(substring, start, end)
str.rfind(substring, start, end)
  • substring: 要查找的子字符串。
  • start: 可选参数,指定开始查找的索引位置。
  • end: 可选参数,指定结束查找的索引位置。

示例:

text = "Python is fun, and Python is powerful."
first_python = text.find("Python")
print(first_python)
# 输出: 0 (第一次出现 "Python" 的位置)

last_python = text.rfind("Python")
print(last_python)
# 输出: 18 (最后一次出现 "Python" 的位置)

💘6.4 统计字符串中的字母、数字或其他类型字符(isalpha,isdigit,isalnum)

  • isalpha():检查字符串是否只包含字母。
  • isdigit():检查字符串是否只包含数字。
  • isalnum():检查字符串是否只包含字母和数字。

示例:

text = "Python123"

# 判断是否全为字母
print(text.isalpha())
# 输出: False

# 判断是否全为数字
print(text.isdigit())
# 输出: False

# 判断是否只包含字母和数字
print(text.isalnum())
# 输出: True

如果你需要统计字符串中不同类型字符(如字母、数字、空格等)的数量,可以结合条件判断和循环来实现。

示例: 统计字符串中字母、数字和空格的数量

text = "Python 3.9 is awesome!"
letters = digits = spaces = others = 0

for char in text:
    if char.isalpha():
        letters += 1
    elif char.isdigit():
        digits += 1
    elif char.isspace():
        spaces += 1
    else:
        others += 1

print(f"字母: {letters}, 数字: {digits}, 空格: {spaces}, 其他字符: {others}")
# 输出: 字母: 15, 数字: 2, 空格: 3, 其他字符: 2

💘6.5 统计大写和小写字母的数量(isupper,islower)

如果你想分别统计字符串中的大写字母和小写字母,可以使用 isupper()islower() 方法。

示例:

text = "Hello, Python!"
uppercase = lowercase = 0

for char in text:
    if char.isupper():
        uppercase += 1
    elif char.islower():
        lowercase += 1

print(f"大写字母: {uppercase}, 小写字母: {lowercase}")
# 输出: 大写字母: 2, 小写字母: 10

💘6.6 统计某些特定字符的次数(collections.Counter)

你可以使用 collections.Counter 来统计字符串中每个字符出现的次数,这在处理大量字符时非常高效。

from collections import Counter

text = "Hello, Python!"
char_count = Counter(text)
print(char_count)
# 输出: Counter({' ': 2, 'o': 2, 'H': 1, 'e': 1, 'l': 2, ',': 1, 'P': 1, 'y': 1, 't': 1, 'h': 1, 'n': 1, '!': 1})

# 统计某个特定字符的次数
print(char_count['o'])  # 输出: 2

小结

  • 获取字符串长度: 使用 len() 函数。
  • 统计子字符串出现次数: 使用 count() 方法。
  • 查找子字符串位置: 使用 find()rfind() 方法。
  • 统计字符串中的字母、数字、空格等: 可以使用 isalpha()isdigit() 等方法。
  • 统计大写和小写字母: 使用 isupper()islower() 方法。
  • 统计字符频率: 使用 collections.Counter 高效统计每个字符出现的次数。

结语

字符串是Python中非常重要的数据类型,具有不可变性、有序性和序列类型等特点。通过索引、切片、查找、替换、分割、连接、规整操作以及统计和长度计算等常用操作,我们可以高效地处理和转换字符串数据。本文详细介绍了字符串的定义、特点和常用操作,并提供了丰富的代码示例,希望能帮助读者更好地理解和使用Python中的字符串。
在这里插入图片描述

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,17的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是17前进的动力!

在这里插入图片描述

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

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

相关文章

软件设计模式------抽象工厂模式

抽象工厂模式(Abstract Factory Pattern),又称Kit模式,属于对象创建型模式。 一:先理解两个概念: (1)产品等级结构: 即产品的继承结构。 通俗来讲,就是不同品…

【计算机网络 - 基础问题】每日 3 题(四十九)

✍个人博客:https://blog.csdn.net/Newin2020?typeblog 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞…

如何通过智能T0算法增加持仓收益?

第一:什么是智能T0算法?什么是智能T0算法?简单来说,就是基于用户原有的股票持仓,针对同一标的,配合智能T0算法,每天全自动操作,高抛低吸,抓取行情波动价差。操作后每日持…

MySQL的安装(windows,Centos,ubuntu)

目录 在Windows下安装MySQL数据库 在Centos下安装MySQL数据库 在ubuntu下安装MySQL数据库 在Windows下安装MySQL数据库 安装程序的下载地址: https://dev.mysql.com/downloads/ 点击之后就会出现下面的页面 接下来根据安装提示进行操作即可 在Centos下安装MySQL数据库 1.确认…

VMware中Ubuntu安装

VMware官网:https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion 先在官网下载VMware,一直根据默认点下一步就好了,记得更改安装地址哦,否则默认下在C盘里。 先下载好Ubuntu映像文件:https://…

No.18 笔记 | XXE(XML 外部实体注入)漏洞原理、分类、利用及防御整理

一、XXE 漏洞概述 (一)定义 XXE(XML 外部实体注入)漏洞源于 XML 解析器对外部实体的不当处理,攻击者借此注入恶意 XML 实体,可实现敏感文件读取、远程命令执行和内网渗透等危险操作。 (二&am…

[含文档+PPT+源码等]精品基于Nodejs实现的水果批发市场管理系统的设计与实现

基于Node.js实现的水果批发市场管理系统的设计与实现背景,可以从以下几个方面进行阐述: 一、行业背景与市场需求 水果批发市场的重要性: 水果批发市场作为农产品流通的重要环节,承载着从生产者到消费者之间的桥梁作用。它的运营效…

传统园区与智慧园区:现代化发展的差异和优势

传统园区和智慧园区代表着城市发展不同阶段的产物,两者在功能、管理、环境等多个方面存在显著差异。通过对传统园区和智慧园区进行对比,可以清晰地看到智慧园区的诸多优势所在。 1. 功能对比: 传统园区通常以简单的生产、办公和商业为主要功…

1.深入理解MySQL索引底层数据结构与算法

文章目录 索引的概念数据结构二叉树红黑树B-B两者的区别 Hash 引擎数据所在位置对应关系MyISAMInnoDB 索引主键聚集索引非聚集索引联合索引 如有写的不对的请指正。 索引的概念 索引是帮助MySQL高效获取数据的排好序的数据结构 数据结构 网址: https://www.cs.us…

Kafka-设计思想-2

一、消息传递语义 现在我们对生产者和消费者的工作方式有了一些了解,让我们讨论一下Kafka在生产者和消费者之间提供的语义保证。 1、最多发送一次:会造成数据丢失 2、至少发送一次:会造成数据重复消费 3、只发送一次:我们想要的效…

MDB收款适配器MDBPOS

LETPOS精简版MDBPOS(直接连接MDB协议的刷卡器,按照设定价格收款,输出脉冲) 通过串口设定价格,脉冲宽度。 有人刷卡,扣款成功,输出脉冲,使用简单 适合把MDB协议的刷卡器连接到脉冲投…

【算法】归并排序概念及例题运用

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

小程序视频SDK解决方案,提供个性化开发和特效定制设计

美摄科技作为视频处理技术的领航者,深知在这一变革中,每一个细微的创新都能激发无限可能。因此,我们精心打造了一套小程序视频SDK解决方案,旨在满足不同行业、不同规模客户的多元化需求,携手共创视频内容的璀璨未来。 …

这几次比赛题解

因为考虑到再看&#xff0c;所以将所有题目都做成了pdf格式 梦熊十三连测 T1 这道题其实什么也不用想&#xff0c;就按照题目给的意思来打代码就行&#xff0c;这就有40分可以拿。懒人做法 #include<bits/stdc.h> using namespace std; typedef long long ll; ll read…

中航资本:股票显示缺口什么意思啊?股票有缺口一定会补吗?

股票显现缺口什么意思啊&#xff1f; 股票显现缺口是指股票在运行进程中&#xff0c;忽然上涨或许下跌使股价远离上一个交易日收盘价的状况&#xff0c;也便是股票当天的开盘价格和股票前一个交易日的收盘价格违背崎岖很大。在K线图中&#xff0c;缺口表现为股价在持续动摇中有…

MT-Pref数据集:包含18种语言的18k实例,涵盖多个领域。实验表明它能有效提升Tower模型在WMT23和FLORES基准测试中的翻译质量。

2024-10-10&#xff0c;由电信研究所、里斯本大学等联合创建MT-Pref数据集&#xff0c;它包含18种语言方向的18k实例&#xff0c;覆盖了2022年后的多个领域文本。通过在WMT23和FLORES基准测试上的实验&#xff0c;我们展示了使用MT-Pref数据集对Tower模型进行对齐可以显著提高翻…

React实现购物车功能

今日学习React的useReducer&#xff0c;实现了一个购物车功能 文章目录 目录 效果展示 逻辑代码 CSS代码 效果展示 逻辑代码 import {useReducer} from "react"; import ./index.css; import { message} from antd;export function ShoppingCount(){// 初始化购…

钡铼技术边缘计算2DIN2DO工业无线路由器R40A

R40A不仅具备了传统工业无线路由器的基本功能&#xff0c;如4G网络连接、稳定的数据传输等&#xff0c;还创新性地整合了可编程逻辑控制器&#xff08;PLC&#xff09;功能、多种工业协议转换能力以及数据采集终端的功能。 强大的边缘计算能力 随着物联网技术的发展&#xff…

STM32_实验5_中断实验

通过外部中断来检测四个按键按下的状态&#xff1a; WK_UP 控制蜂鸣器响和停 KEY0 控制 LED_R 互斥点亮 KEY1 控制 LED_G 互斥点亮 KEY2 控制 LED_B 互斥点亮。 中断的基本概念&#xff1a; 中断请求&#xff08;IRQ&#xff09;&#xff1a; 当发生某个特定事件&#xff08;例…

如何通过谷歌外推占据搜索引擎首页?

外贸企业在推广过程中&#xff0c;如何在谷歌搜索引擎中占据有利位置&#xff0c;获取更多曝光&#xff0c;GLB谷歌霸屏服务就可以派上用场。它通过高效的品牌外推策略&#xff0c;可以让你的企业信息在谷歌中实现“霸屏”效果&#xff0c;特别是长尾关键词的全面覆盖 很多企业…