Python酷库之旅-第三方库Pandas(076)

目录

一、用法精讲

pandas.DataFrame.to_csv%E5%87%BD%E6%95%B0-toc" style="margin-left:120px;">311、pandas.Series.str.encode方法

311-1、语法

311-2、参数

311-3、功能

311-4、返回值

311-5、说明

311-6、用法

311-6-1、数据准备

311-6-2、代码示例

311-6-3、结果输出

pandas.Series.str.endswith%E6%96%B9%E6%B3%95-toc" style="margin-left:120px;">312、pandas.Series.str.endswith方法

312-1、语法

312-2、参数

312-3、功能

312-4、返回值

312-5、说明

312-6、用法

312-6-1、数据准备

312-6-2、代码示例

312-6-3、结果输出

pandas.Series.str.extract%E6%96%B9%E6%B3%95-toc" style="margin-left:120px;">313、pandas.Series.str.extract方法

313-1、语法

313-2、参数

313-3、功能

313-4、返回值

313-5、说明

313-6、用法

313-6-1、数据准备

313-6-2、代码示例

313-6-3、结果输出

pandas.Series.str.extractall%E6%96%B9%E6%B3%95-toc" style="margin-left:120px;">314、pandas.Series.str.extractall方法

314-1、语法

314-2、参数

314-3、功能

314-4、返回值

314-5、说明

314-5-1、基础字符匹配

314-5​​​​​​​-2、位置匹配

314-5​​​​​​​-3、量词

314-5​​​​​​​-4、字符类

314-5​​​​​​​-5、分组与捕获

314-5​​​​​​​-6、逻辑或

314-5​​​​​​​-7、转义字符

314-5​​​​​​​-8、贪婪与非贪婪匹配

314-6、用法

314-6-1、数据准备

314-6-2、代码示例

314-6-3、结果输出

pandas.Series.str.find%E6%96%B9%E6%B3%95-toc" style="margin-left:120px;">315、pandas.Series.str.find方法

315-1、语法

315-2、参数

315-3、功能

315-4、返回值

315-5、说明

315-6、用法

315-6-1、数据准备

315-6-2、代码示例

315-6-3、结果输出

二、推荐阅读

1、Python筑基之旅

2、Python函数之旅

3、Python算法之旅

4、Python魔法之旅

5、博客个人主页
​​​​​​​

一、用法精讲

pandas.DataFrame.to_csv%E5%87%BD%E6%95%B0">311、pandas.Series.str.encode方法
311-1、语法
python"># 311、pandas.Series.str.encode方法
pandas.Series.str.encode(encoding, errors='strict')
Encode character string in the Series/Index using indicated encoding.Equivalent to str.encode().Parameters:
encoding
str
errors
str, optional
Returns:
Series/Index of objects
311-2、参数

311-2-1、encoding(必须)字符串,指定目标编码类型,如utf-8、ascii、latin-1等等,该参数决定了字符串将被编码为哪种格式。

311-2-2、errors(可选,默认值为'strict')字符串,决定在遇到无法编码的字符时的处理方式,可选值有:

  • 'strict':遇到错误时,抛出UnicodeEncodeError异常。
  • 'ignore':忽略无法编码的字符。
  • 'replace':用?替换无法编码的字符。
  • 'backslashreplace':使用反斜杠转义序列替换无法编码的字符。
  • 'namereplace':使用\N{...}替换无法编码的字符。
311-3、功能

        将字符串编码为字节类型(bytes),这对于处理文本数据时尤其有用,比如在处理需要以特定编码存储或传输的文本时。

311-4、返回值

        返回一个新的Series,其中的每个元素都是原Series中字符串的编码版本,即字节类型(bytes)。

311-5、说明

        无

311-6、用法
311-6-1、数据准备
python">无
311-6-2、代码示例
python"># 311、pandas.Series.str.encode方法
import pandas as pd
s = pd.Series(["hello", "world"])
s_encoded = s.str.encode('utf-8')
print(s_encoded)
311-6-3、结果输出
python"># 311、pandas.Series.str.encode方法
# 0    b'hello'
# 1    b'world'
# dtype: object
pandas.Series.str.endswith%E6%96%B9%E6%B3%95">312、pandas.Series.str.endswith方法
312-1、语法
python"># 312、pandas.Series.str.endswith方法
pandas.Series.str.endswith(pat, na=None)
Test if the end of each string element matches a pattern.Equivalent to str.endswith().Parameters:
pat
str or tuple[str, …]
Character sequence or tuple of strings. Regular expressions are not accepted.na
object, default NaN
Object shown if element tested is not a string. The default depends on dtype of the array. For object-dtype, numpy.nan is used. For StringDtype, pandas.NA is used.Returns:
Series or Index of bool
A Series of booleans indicating whether the given pattern matches the end of each string element.
312-2、参数

312-2-1、pat(必须)字符串或元组,表示要检查的模式,可以是一个字符串或者包含多个字符串的元组,如果字符串元素以这个模式或模式中的任何一个结尾,则返回True。

312-2-2、na(可选,默认值为None)用于指定在字符串数据缺失(即NaN)的情况下返回的值,默认情况下,NaN返回NaN,但你可以指定为True或False,以返回布尔值。

312-3、功能

        检查每个字符串元素是否以指定的模式结尾,该方法在需要过滤或分组字符串数据时非常有用,例如查找以特定字符或子字符串结尾的行。

312-4、返回值

        返回一个布尔类型的Series,其中每个元素的值取决于原Series中的字符串是否以指定的模式结尾,如果是,返回True;否则,返回False。对于缺失值(NaN),返回的值取决于na参数的设置。

312-5、说明

        使用场景:

312-5-1、数据过滤:在处理包含特定后缀的文本数据时,你可以使用该方法进行过滤。例如,如果你有一个包含文件名的Series,并且你只想保留所有以.csv结尾的文件名,那么可以使用此方法。

312-5-2、文本分类:在文本数据分类任务中,可以根据文本的后缀来确定类别。例如,在分析电子邮件时,你可以根据邮件的主题行(subject)是否以某个关键词结尾来判断邮件的类型。

312-5-3、文件类型识别:当你处理包含不同类型文件路径的数据时,可以使用此方法识别并分类不同类型的文件。例如,在一个包含文件路径的Series 中,识别所有的图片文件。

312-5-4、数据清洗:在数据清洗过程中,可能需要删除或处理不符合特定格式的文本数据。使用该方法可以帮助你快速找到并处理这些数据。例如,删除不符合某种标准的条目。

312-5-5、检查和处理缺失值:在处理包含缺失值的字符串数据时,可以结合na参数设置来统一处理这些缺失值。例如,在检查字符串数据时,将缺失值统一处理为False

312-6、用法
312-6-1、数据准备
python">无
312-6-2、代码示例
python"># 312、pandas.Series.str.endswith方法
# 312-1、数据过滤
import pandas as pd
file_names = pd.Series(["data.csv", "report.pdf", "summary.csv", "image.png"])
csv_files = file_names[file_names.str.endswith(".csv")]
print(csv_files, end='\n\n')# 312-2、文本分类
import pandas as pd
subjects = pd.Series(["Meeting tomorrow", "Project update", "Meeting schedule", "Final report"])
is_meeting = subjects.str.endswith("Meeting")
print(is_meeting, end='\n\n')# 312-3、文件类型识别
import pandas as pd
file_paths = pd.Series(["/images/photo.jpg", "/documents/report.docx", "/images/logo.png"])
image_files = file_paths[file_paths.str.endswith((".jpg", ".png"))]
print(image_files, end='\n\n')# 312-4、数据清洗
import pandas as pd
data = pd.Series(["12345", "67890X", "ABCDE", "12345Z"])
clean_data = data[~data.str.endswith("X")]
print(clean_data, end='\n\n')# 312-5、检查和处理缺失值
import pandas as pd
data = pd.Series(["hello", "world", None, "pandas"])
result = data.str.endswith("d", na=False)
print(result)
312-6-3、结果输出
python"># 312、pandas.Series.str.endswith方法
# 312-1、数据过滤
# 0       data.csv
# 2    summary.csv
# dtype: object# 312-2、文本分类
# 0    False
# 1    False
# 2    False
# 3    False
# dtype: bool# 312-3、文件类型识别
# 0    /images/photo.jpg
# 2     /images/logo.png
# dtype: object# 312-4、数据清洗
# 0     12345
# 2     ABCDE
# 3    12345Z
# dtype: object# 312-5、检查和处理缺失值
# 0    False
# 1     True
# 2    False
# 3    False
# dtype: bool
pandas.Series.str.extract%E6%96%B9%E6%B3%95">313、pandas.Series.str.extract方法
313-1、语法
python"># 313、pandas.Series.str.extract方法
pandas.Series.str.extract(pat, flags=0, expand=True)
Extract capture groups in the regex pat as columns in a DataFrame.For each subject string in the Series, extract groups from the first match of regular expression pat.Parameters:
pat
str
Regular expression pattern with capturing groups.flags
int, default 0 (no flags)
Flags from the re module, e.g. re.IGNORECASE, that modify regular expression matching for things like case, spaces, etc. For more details, see re.expand
bool, default True
If True, return DataFrame with one column per capture group. If False, return a Series/Index if there is one capture group or DataFrame if there are multiple capture groups.Returns:
DataFrame or Series or Index
A DataFrame with one row for each subject string, and one column for each group. Any capture group names in regular expression pat will be used for column names; otherwise capture group numbers will be used. The dtype of each result column is always object, even when no match is found. If expand=False and pat has only one capture group, then return a Series (if subject is a Series) or Index (if subject is an Index).
313-2、参数

313-2-1、pat(必须)一个正则表达式模式,用于指定要提取的内容,模式中可以包含一个或多个捕获组(用括号()包围的部分),这些捕获组中的内容将被提取。

313-2-2、flags(可选,默认值为0)正则表达式的标志,用于控制正则表达式的行为,常用的标志包括:

  • re.IGNORECASEre.I忽略大小写匹配
  • re.MULTILINEre.M多行匹配模式
  • re.DOTALLre.S让点号.匹配包括换行符在内的所有字符

313-2-3、expand(可选,默认值为True)布尔值,如果expand=True,方法返回一个DataFrame,其中每个捕获组对应一个列;如果expand=False,且模式包含一个捕获组,则返回一个Series,否则返回一个DataFrame。

313-3、功能

        用于从每个字符串元素中提取匹配正则表达式模式的内容,该方法对数据清洗和特定格式信息提取非常有用。

313-4、返回值

        返回DataFrame或Series,取决于expand参数和正则表达式模式中捕获组的数量:如果expand=True,总是返回DataFrame;如果expand=False且模式只有一个捕获组,返回Series;如果有多个捕获组,则返回DataFrame。

313-5、说明

        使用场景:

313-5-1、从字符串中提取结构化信息:数据集中有一列包含“John Smith”这样的姓名字符串,你需要将名字和姓氏分别存储在不同的列中。例如,从一列包含姓名的字符串中分别提取名字和姓氏。

313-5-2、处理日期时间格式:数据集中有一列日期字符串,如“2024-08-12”,你可能只想提取年份或月份,用于后续分析。例如,从日期字符串中提取年、月、日。

313-5-3、提取ID或代码信息:从产品代码字符串中提取特定部分。例如,数据中有一列产品代码“ABC-123-XZ”,你需要从中提取“123”作为产品ID。

313-5-4、解析日志或错误信息:你可能在分析服务器日志时,需要提取特定的错误代码来统计不同类型错误的发生频率。例如,从日志字符串中提取错误代码或消息。

313-5-5、数据清洗:数据集中包含不规则的地址信息,通过正则表达式提取特定部分,方便后续的标准化处理。例如,从一组地址字符串中提取邮政编码或城市名称。

313-5-6、正则表达式模式匹配:数据中有一列包含多种信息混合在一起,如“Order #1234: Item X - $567”,你需要提取订单号和金额。例如,从混合字符串中提取包含特定模式的信息。

313-5-7、分割文本字段:类似于从“Name: John; Age: 30; Gender: Male”中提取“John”、“30”、“Male”这些信息。例如,从包含多个字段的字符串中提取每个字段。

313-5-8、数据验证与清理:数据集中包含电子邮件地址,你需要验证格式是否正确,并分离用户名和域名部分进行分析。例如,验证电子邮件格式,并提取用户名和域名。

313-6、用法
313-6-1、数据准备
python">无
313-6-2、代码示例
python"># 313、pandas.Series.str.extract方法
#313-1、从字符串中提取结构化信息
import pandas as pd
# 创建一个包含姓名的DataFrame
df = pd.DataFrame({'full_name': ['John Smith', 'Jane Doe', 'Alice Johnson']
})
# 使用str.extract()方法提取名字和姓氏
df[['first_name', 'last_name']] = df['full_name'].str.extract(r'(\w+)\s+(\w+)')
print(df, end='\n\n')#313-2、处理日期时间格式
import pandas as pd
# 创建一个包含日期的DataFrame
df = pd.DataFrame({'date': ['2024-08-12', '2023-07-11', '2022-06-10']
})
# 提取年、月、日
df[['year', 'month', 'day']] = df['date'].str.extract(r'(\d{4})-(\d{2})-(\d{2})')
print(df, end='\n\n')#313-3、提取ID或代码信息
import pandas as pd
# 创建一个包含产品代码的DataFrame
df = pd.DataFrame({'product_code': ['ABC-123-XZ', 'DEF-456-YZ', 'GHI-789-WX']
})
# 提取产品ID
df['product_id'] = df['product_code'].str.extract(r'-(\d+)-')
print(df, end='\n\n')#313-4、解析日志或错误信息
import pandas as pd
# 创建一个包含日志信息的DataFrame
df = pd.DataFrame({'log': ['Error: 404 Not Found', 'Error: 500 Internal Server Error', 'Error: 403 Forbidden']
})
# 提取错误代码
df['error_code'] = df['log'].str.extract(r'Error: (\d{3})')
print(df, end='\n\n')#313-5、数据清洗
import pandas as pd
# 创建一个包含地址信息的DataFrame
df = pd.DataFrame({'address': ['123 Main St, Springfield, IL 62704', '456 Elm St, Shelbyville, IL 61561']
})
# 提取邮政编码
df['postal_code'] = df['address'].str.extract(r'(\d{5})')
print(df, end='\n\n')#313-6、正则表达式模式匹配
import pandas as pd
# 创建一个包含混合信息的DataFrame
df = pd.DataFrame({'order_info': ['Order #1234: Item X - $567', 'Order #5678: Item Y - $890']
})
# 提取订单号和金额
df[['order_number', 'amount']] = df['order_info'].str.extract(r'Order #(\d+): .* - \$(\d+)')
print(df, end='\n\n')#313-7、分割文本字段
import pandas as pd
# 创建一个包含多个字段的字符串DataFrame
df = pd.DataFrame({'info': ['Name: John; Age: 30; Gender: Male', 'Name: Jane; Age: 25; Gender: Female']
})
# 提取名字、年龄、性别
df[['name', 'age', 'gender']] = df['info'].str.extract(r'Name: (\w+); Age: (\d+); Gender: (\w+)')
print(df, end='\n\n')#313-8、数据验证与清理
import pandas as pd
# 创建一个包含电子邮件的DataFrame
df = pd.DataFrame({'email': ['john.smith@example.com', 'jane.doe@domain.org']
})
# 提取用户名和域名
df[['username', 'domain']] = df['email'].str.extract(r'([^@]+)@(.+)')
print(df)
313-6-3、结果输出
python"># 313、pandas.Series.str.extract方法
#313-1、从字符串中提取结构化信息
#        full_name first_name last_name
# 0     John Smith       John     Smith
# 1       Jane Doe       Jane       Doe
# 2  Alice Johnson      Alice   Johnson#313-2、处理日期时间格式
#          date  year month day
# 0  2024-08-12  2024    08  12
# 1  2023-07-11  2023    07  11
# 2  2022-06-10  2022    06  10#313-3、提取ID或代码信息
#   product_code product_id
# 0   ABC-123-XZ        123
# 1   DEF-456-YZ        456
# 2   GHI-789-WX        789#313-4、解析日志或错误信息
#                                 log error_code
# 0              Error: 404 Not Found        404
# 1  Error: 500 Internal Server Error        500
# 2              Error: 403 Forbidden        403#313-5、数据清洗
#                               address postal_code
# 0  123 Main St, Springfield, IL 62704       62704
# 1   456 Elm St, Shelbyville, IL 61561       61561#313-6、正则表达式模式匹配
#                    order_info order_number amount
# 0  Order #1234: Item X - $567         1234    567
# 1  Order #5678: Item Y - $890         5678    890#313-7、分割文本字段
#                                   info  name age  gender
# 0    Name: John; Age: 30; Gender: Male  John  30    Male
# 1  Name: Jane; Age: 25; Gender: Female  Jane  25  Female#313-8、数据验证与清理
#                     email    username       domain
# 0  john.smith@example.com  john.smith  example.com
# 1     jane.doe@domain.org    jane.doe   domain.org
pandas.Series.str.extractall%E6%96%B9%E6%B3%95">314、pandas.Series.str.extractall方法
314-1、语法
python"># 314、pandas.Series.str.extractall方法
pandas.Series.str.extractall(pat, flags=0)
Extract capture groups in the regex pat as columns in DataFrame.For each subject string in the Series, extract groups from all matches of regular expression pat. When each subject string in the Series has exactly one match, extractall(pat).xs(0, level=’match’) is the same as extract(pat).Parameters:
pat
str
Regular expression pattern with capturing groups.flags
int, default 0 (no flags)
A re module flag, for example re.IGNORECASE. These allow to modify regular expression matching for things like case, spaces, etc. Multiple flags can be combined with the bitwise OR operator, for example re.IGNORECASE | re.MULTILINE.Returns:
DataFrame
A DataFrame with one row for each match, and one column for each group. Its rows have a MultiIndex with first levels that come from the subject Series. The last level is named ‘match’ and indexes the matches in each item of the Series. Any capture group names in regular expression pat will be used for column names; otherwise capture group numbers will be used.
314-2、参数

314-2-1、pat(必须)字符串,一个包含正则表达式模式的字符串,该模式用于定义要匹配的文本片段,正则表达式中使用的捕获组(圆括号())用于提取匹配的子字符串,该方法会返回所有匹配的捕获组。

314-2-2、flags(可选,默认值为0)正则表达式的标志,用于控制正则表达式的行为,常用的标志包括:

  • re.IGNORECASEre.I忽略大小写匹配
  • re.MULTILINEre.M多行匹配模式
  • re.DOTALLre.S让点号.匹配包括换行符在内的所有字符
314-3、功能

        用于在一个SeriesDataFrame对象的每个字符串元素中,根据给定的正则表达式pat提取所有匹配的子字符串。与str.extract()方法不同,extractall()提取的是所有匹配项,而不仅仅是第一个匹配项。

314-4、返回值

        返回值是一个DataFrame,它包含了从字符串中提取的所有匹配项,这个DataFrame的特点如下:

  1. 行索引(MultiIndex)

    • 第一个级别是原始数据的索引,这个索引指示了每一行对应于原始数据的哪一个元素。
    • 第二个级别是一个整数索引,表示每个原始字符串中匹配到的第几个子串(从0开始计数)。
    • 如果正则表达式中有捕获组(即括号()),则返回的 DataFrame 的每一列对应一个捕获组。
    • 如果正则表达式中没有命名捕获组,列的名称将是整数(0、1、2……),依次对应捕获组的顺序。
    • 如果使用了命名捕获组,那么返回的DataFrame中的列将以这些名称命名。
314-5、说明

        常见正则表达式规则清单:

314-5-1、基础字符匹配
  • .:匹配任意单个字符(除了换行符)。
  • \w:匹配任意字母、数字或下划线(相当于[a-zA-Z0-9_])。
  • \W:匹配任意非字母、数字或下划线字符(相当于[^a-zA-Z0-9_])。
  • \d:匹配任意数字(相当于[0-9])。
  • \D:匹配任意非数字字符(相当于[^0-9])。
  • \s:匹配任意空白字符(空格、制表符等)。
  • \S:匹配任意非空白字符。
314-5​​​​​​​-2、位置匹配
  • ^:匹配字符串的开头。
  • $:匹配字符串的结尾。
  • \b:匹配单词边界(词的开头或结尾)。
  • \B:匹配非单词边界。
314-5​​​​​​​-3、量词
  • *:匹配前一个字符0次或多次。
  • +:匹配前一个字符1次或多次。
  • ?:匹配前一个字符0次或1次(可选匹配)。
  • {n}:精确匹配前一个字符 n 次。
  • {n,}:匹配前一个字符至少n次。
  • {n,m}:匹配前一个字符至少n次且至多m次。
314-5​​​​​​​-4、字符类
  • [abc]:匹配a、b或c中的任意一个字符。
  • [^abc]:匹配除a、b、c 之外的任意字符。
  • [a-z]:匹配从a到z范围内的任意字符。
314-5​​​​​​​-5、分组与捕获
  • (abc):将abc作为一个捕获组,匹配字符串'abc'。
  • (?:abc):非捕获组,匹配'abc'但不进行捕获。
  • (?P<name>abc):命名捕获组,将匹配的'abc'捕获到name组中。
314-5​​​​​​​-6、逻辑或
  • a|b:匹配a或b。
314-5​​​​​​​-7、转义字符
  • \:用于转义特殊字符。例如,\.匹配一个点,而不是任意字符。
314-5​​​​​​​-8、贪婪与非贪婪匹配
  • 默认情况下,*+?{} 是贪婪的,即尽可能多地匹配。
  • 在量词后加上?(如 *?+?{n,m}?)使其变为非贪婪模式,只匹配尽可能少的字符。
314-6、用法
314-6-1、数据准备
python">无
314-6-2、代码示例
python"># 314、pandas.Series.str.extractall方法
import pandas as pd
# 创建一个包含订单信息的Series
s = pd.Series(['Order #1234: $567', 'Order #5678: $890'])
# 使用extractall提取订单号和金额
result = s.str.extractall(r'Order #(\d+): \$(\d+)')
print(result)
314-6-3、结果输出
python"># 314、pandas.Series.str.extractall方法
#             0    1
#   match           
# 0 0      1234  567
# 1 0      5678  890
pandas.Series.str.find%E6%96%B9%E6%B3%95">315、pandas.Series.str.find方法
315-1、语法
python"># 315、pandas.Series.str.find方法
pandas.Series.str.find(sub, start=0, end=None)
Return lowest indexes in each strings in the Series/Index.Each of returned indexes corresponds to the position where the substring is fully contained between [start:end]. Return -1 on failure. Equivalent to standard str.find().Parameters:
sub
str
Substring being searched.start
int
Left edge index.end
int
Right edge index.Returns:
Series or Index of int.
315-2、参数

315-2-1、sub(必须)字符串,表示要查找的子字符串,该方法会在Series的每个字符串元素中寻找这个子字符串。

315-2-2、start(可选,默认值为0)整数,表示查找的起始位置(以字符索引为基准)。默认为0,即从字符串的开头开始查找。

315-2-3、end(可选,默认值为None)整数,表示查找的结束位置(以字符索引为基准)。默认为None,即查找到字符串的结尾。如果指定了end,则查找会在该索引前停止。

315-3、功能

        查找子字符串sub在Series的每个字符串元素中的第一次出现的位置。如果找到了子字符串,则返回其在字符串中的第一个字符的索引;如果未找到,则返回-1。

315-4、返回值

        返回一个整数类型的Series,其中每个元素表示子字符串sub在对应原始字符串中的起始索引,如果某个字符串中未找到子字符串,则对应位置返回-1。

315-5、说明

        无

315-6、用法
315-6-1、数据准备
python">无
315-6-2、代码示例
python"># 315、pandas.Series.str.find方法
import pandas as pd
# 创建一个Series
s = pd.Series(["apple", "banana", "cherry", "date"])
# 查找'a'在每个字符串中的位置
result = s.str.find('a')
print(result)
315-6-3、结果输出
python"># 315、pandas.Series.str.find方法
# 0    0
# 1    1
# 2   -1
# 3    1
# dtype: int64

二、推荐阅读

1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页

http://www.ppmy.cn/server/99454.html

相关文章

Java中XML的解析

第一章 XML概述 1.1 XML介绍 1.1.1 什么是XML XML 指可扩展标记语言&#xff08;EXtensible Markup Language&#xff09; XML 是一种标记语言&#xff0c;很类似 HTML&#xff0c;HTML文件也是XML文档 XML 的设计宗旨是传输数据&#xff0c;而非显示数据 XML 标签没有被预…

【C++】C++的内存处理 --- 智能指针

只有经历地狱般的磨炼&#xff0c; 才能练出创造天堂的力量 &#xff1b; 只有流过血的手指&#xff0c; 才能弹出世间的绝唱 。 --- 泰戈尔 --- 开始使用C智能指针 1 前言2 智能指针2.1 什么是智能指针2.2 C库中的智能指针2.3 循环指向问题与weak_ptr2.4 自定义删除器 3 …

【计算机网络——internet结构和ISP】

internet结构&#xff1a;网络的网络 端系统通过ISP接入internet&#xff0c;ISP提供有线或者无线接入方式&#xff0c;接入ISP不一定是当地电信局&#xff0c;电缆公司&#xff0c;也可以是大学为老师学生或者公司为雇员……。 ISP&#xff0c;internet and 端系统关系&…

【HBZ分享】Mysql索引的失效场景 以及 创建索引失败报错的原因

如何查看mysql某个表具有的索引 show INDEX from [表名]创建索引失败的场景 及 原因 假设有一张表如下: 使用utf8mb4的字符编码 CREATE TABLE api_case (id bigint unsigned NOT NULL AUTO_INCREMENT,name varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci N…

虚拟机vmware新建虚拟机无法从物理机连接问题排查

1.vmware的虚拟机设置里面添加桥接模式&#xff0c;添加后重启机器 2.检查服务里面是否将vmware相关服务全部开启 计算机 -- 管理 -- 服务 如果不是running状态&#xff0c;就右键开启服务 3.检查网路状态 控制面板 -- 网络和互联网 -- 网络和共享中心 -- 改变适配器设置 如…

【前端学习笔记】CSS基础三

一、CSS变量 CSS变量&#xff0c;也称为CSS自定义属性&#xff0c;是CSS3的一部分&#xff0c;允许开发者在CSS中定义和使用变量。这些变量可以存储值&#xff0c;然后在整个文档中重复使用这些值。使用CSS变量可以提高样式表的可维护性&#xff0c;并且使得主题和设计变量的更…

lvs详解及实例配置

目录 1.什么是负载均衡 1.1为什么用负载均衡 1.2.负载均衡类型 1.2.1.四层负载均衡 1.2.2.七层负载均衡 1.3 四层和七层的区别 2.LVS介绍 2.1LVS 的优势与不足 2.2LVS 核心组件和专业术语 3.ipvsadm命令 4.LVS集群中的增删改 4.1.管理集群服务中的增删改 4.2.管理集…

【Python】基础语法介绍

目录 一、标识符和关键字 二、注释 三、缩进 四、输入和输出 五、字符串操作 六、基本数据类型 七、复合数据类型 7.1 列表 7.2 元组 7.3 字典 7.4 集合 八、数据类型转换 九、运算符 8.1 算术运算符 8.2 比较运算符 8.3 赋值运算符 8.4 位运算符 8.5 逻辑运…

pikachu 之CSRF(跨站请求伪造)get和post型

CSRF&#xff08;跨站请求伪造&#xff09; 概念 跨站请求伪造&#xff08;Cross-Site Request Forgery&#xff0c;简称CSRF&#xff09;是一种攻击方式&#xff0c;攻击者通过伪造用户的请求&#xff0c;欺骗受害者在不知情的情况下执行不想要的操作。这种攻击利用了用户已经…

LabView多界面子VI同时运行

有朋友问我LabView如何调用多个界面VI同时工作&#xff0c;其实说穿了很简单&#xff0c;我们我们平时调用驱动、算法、控件等等时都相当于在同时调用多个子VI工作&#xff0c;只不过多了个界面而已。 只有几点需要注意&#xff1a; 1、每个子VI处于不同的线程&#xff1b; 2、…

C# .NET Framework的特殊委托

C# .NET Framework的特殊委托 .NET Framework中定义了几种特殊的委托类型&#xff0c;以简化委托的使用。以下是一些常用的特殊委托类型&#xff1a; Predicate<T> 这是一个返回布尔值的委托&#xff0c;接受一个类型为T的参数。常用于定义过滤条件。 using System; …

Threejs实现鼠标控制相机+键盘控制模型+点击指定点控制模型移动

1.前言 Threejs实现鼠标控制相机功能,键盘控制模型功能,点击指定点控制模型移动功能 键盘使用WASD控制模型移动效果图: 鼠标移动可控制相机的位置控制模型移动到指定点效果图: 2.功能拆分 根据以上效果图,可以得到以下三个主要实现的功能 鼠标移动可以使相机跟随通过键…

Spring——Second

DI依赖注入 作用&#xff1a;将springIOC容器所创建的各个组件&#xff0c;使用DI的语法进行关联&#xff0c;耦合 DI数据类型 基本类型与StringJavaBean复杂类型&#xff08;List set array map properties&#xff09;【构造注入不支持】 DI实现方式 set注入构造注入…

分布式与微服务详解

1. 单机架构 只有一台机器&#xff0c;这个机器负责所有的工作 &#xff08;这里假定一个电商网站&#xff09; 现在大部分公司的产品都是单机架构 。 2. 分布式架构 一台机器的硬件资源是有限的&#xff0c;服务器处理请求是需要占用硬件资源的&#xff0c;如果业务增长&a…

工业互联网标识解析行业应用实训室解决方案

一、工业互联网概述 1.1 工业互联网定义 工业互联网是一种将先进的信息通信技术与工业系统深度融合的新型工业生态系统。它通过物联网 (IoT)、大数据、云计算、边缘计算、人工智能 (AI) 等现代信息技术手段&#xff0c;实现生产设备、生产线、供应链乃至整个制造过程的全面连…

Spring Boot 3 新特性

Spring Boot 3 带来了许多新特性和改进&#xff0c;这些特性主要围绕提升性能、简化配置、增强的安全性以及支持更现代的Java和库版本。以下是一些Spring Boot 3的关键特性&#xff1a; 支持Java 17和更高版本&#xff1a; Spring Boot 3 官方支持Java 17&#xff0c;并且由于J…

搭建高可用OpenStack(Queen版)集群(十一)之OpenStack集成ceph服务

一、OpenStack集成ceph服务 一&#xff09;Openstack集成Ceph准备 1、OpenStack存储知识 1、OpenStack数据存储分类 Openstack环境中&#xff0c;数据存储可分为临时性存储与永久性存储。 临时性存储&#xff1a;主要由本地文件系统提供&#xff0c;并主要用于nova虚拟机的本地…

MyBatis-Plus 简介

在这篇介绍性文章中&#xff0c;我们探讨 MyBatis-Plus - 流行的 MyBatis 框架的扩展&#xff0c;它包含许多开发人员友好的、在数据库上执行 CRUD 操作的方法。 MyBatis是一种流行的开源持久性框架&#xff0c;它提供了 JDBC 和 Hibernate 的替代方案。 在本文中&#xff0c…

33-PCB导入及常见导入报错问题解决

1.第一种导入方式&#xff1a; 在原理图界面&#xff1a;选择第一个 2.第二种导入方式 在PCB界面&#xff1a;选择Import Changes 3.不勾选Add Rooms 4.导入过程中出现此图 这是原理图和PCB相互比较后的结果&#xff0c;表面有43出不同的地方&#xff0c; 先不管&#xf…

了解babel的作用、原理、基本使用,为什么有babel,以及在webpack中的babel-loader

一、为什么有babel&#xff1f; babel是一个工具链&#xff0c;如今大多数的浏览器都支持es6的语法和特性&#xff0c;但难免有些旧版本的浏览器是不支持的&#xff0c;为了兼容这些旧版本的浏览器&#xff0c;有了babel这一个 JavaScript 编译器。它能为我们做一些事情&#…