Python酷库之旅-比翼双飞情侣库(01)

目录

一、xlrd库的由来

二、xlrd库优缺点

1、优点

1-1、支持多种Excel文件格式

1-2、高效性

1-3、开源性

1-4、简单易用

1-5、良好的兼容性

2、缺点

2-1、对.xlsx格式支持有限

2-2、功能相对单一

2-3、更新和维护频率低

2-4、依赖外部资源

三、xlrd库的版本说明

1、xlrd 1.2.0版本

2、xlrd 2.0.1版本

3、xlrd3(非官方名称)

四、如何学好xlrd库?

1、获取xlrd库的属性和方法

2、获取xlrd库的帮助信息

3、用法精讲

3-1、cellname函数

3-1-1、语法

3-1-2、参数

3-1-3、功能

3-1-4、返回值

3-1-5、说明

3-1-6、用法

3-2、cellnameabs函数

3-2-1、语法

3-2-2、参数

3-2-3、功能

3-2-4、返回值

3-2-5、说明

3-2-6、用法

3-3、colname函数

3-3-1、语法

3-3-2、参数

3-3-3、功能

3-3-4、返回值

3-3-5、说明

3-3-6、用法

五、推荐阅读

1、Python筑基之旅

2、Python函数之旅

3、Python算法之旅

4、Python魔法之旅

5、 博客个人主页

        在Excel中,通常所说的“情侣键”并非官方术语,而是对某些常用且经常成对出现的快捷键的一种形象化的称呼。其中,最为人熟知和广泛使用的“情侣键”是“Ctrl+C”和“Ctrl+V”。

1、Ctrl+C:这个快捷键的作用是“拷贝”或“复制”。当你在Excel中选中某个单元格、一行、一列或整个工作表的内容后,按下Ctrl+C键,这些内容就会被复制到计算机的剪贴板中,等待下一步的粘贴操作。
2、Ctrl+V:这个快捷键的作用是“粘贴”。在你按下Ctrl+C键将内容复制到剪贴板后,可以通过按下Ctrl+V键将这些内容粘贴到Excel中的另一个位置,这两个操作经常是连续进行的,因此Ctrl+C和Ctrl+V就像一对“情侣”,总是成对出现。

        除了这对常见的“情侣键”外,Excel中还有许多其他的快捷键可以帮助用户更高效地完成各种操作。然而,这些快捷键通常并没有像Ctrl+C和Ctrl+V那样形成特定的“情侣”关系。

        然而,今天我不再展开介绍“情侣键”,而是要重点推介Python中的“情侣库”,即xlrd和xlwt两个第三方库。

一、xlrd库的由来

        xlrd库是一种用于在Python中读取Excel文件的库,它的名称中的"xl"代表Excel,"rd"代表读取,其开发者是John Machin(注:库名字符拆分诠释,只是一种猜测)

        xlrd最初是在2005年开始开发的,是基于Python的开源项目(下载:xlrd库官网下载)。

        由于Excel文件在数据处理和分析中的重要性,xlrd库填补了Python在处理Excel文件方面的空白,使得用户可以方便地在Python环境中读取Excel文件的内容,并进行进一步的数据操作和分析。

二、xlrd库

1、优点
1-1、支持多种Excel文件格式

        xlrd库支持多种Excel文件格式,包括`.xls`和`.xlsx`(在旧版本中),这使得无论数据存储在哪种格式的Excel文件中,用户都可以使用xlrd库来读取。


1-2、高效性

        xlrd库使用C语言编写,因此其性能非常高,即使面对非常大的Excel文件,xlrd也可以快速地读取其中的数据。


1-3、开源性

        xlrd是完全开源的,可以在GitHub等平台上找到其源代码,这使得任何人都可以根据自己的需求对其进行修改和扩展。


1-4、简单易用

        xlrd提供了简单直接的API来获取单元格数据、行列数等,使得从Excel文件中读取数据变得简单而高效。


1-5、良好的兼容性

        xlrd库适配多种Python版本,包括Python 2.7(不包括3.0-3.3)或Python 3.4及以上版本,这为用户提供了广泛的兼容性选择。

2、缺点
2-1、对.xlsx格式支持有限

        在xlrd 1.2.0之后的版本中(大约从2020年开始),xlrd库不再支持`.xlsx`文件格式,这限制了xlrd在新版Excel文件(主要是`.xlsx`格式)上的应用。


2-2、功能相对单一

        xlrd库主要专注于从Excel文件中读取数据,而不提供写入或修改Excel文件的功能,这使得在处理需要写入或修改Excel文件的任务时,用户需要结合其他库(如`openpyxl`或`xlwt`)使用。


2-3、更新和维护频率低

        由于xlrd库主要关注于读取Excel文件的功能,并且随着`.xlsx`格式的普及,其使用范围逐渐缩小,因此,xlrd库的更新和维护频率可能相对较低。


2-4、依赖外部资源

        在某些情况下,xlrd库可能需要依赖外部资源或库来完全发挥其功能,这可能会增加用户在使用xlrd库时的复杂性和不确定性。

        总之,xlrd库在读取Excel文件方面具有高效、开源和简单易用等优点,但在对`.xlsx`格式的支持、功能单一以及更新和维护频率等方面存在一些缺点,用户在选择使用xlrd库时需要根据自己的需求进行权衡和选择。

三、xlrd库的版本说明

        xlrd库适配的Python版本根据库的不同版本而有所不同。以下是针对几个主要版本的说明:

1、xlrd 1.2.0版本

1-1、适配Python>=2.7(不包括3.0-3.3)或Python>=3.4
1-2、该版本支持xlsx文件格式,并且是一个广泛使用的版本,因为它能够处理小到中等大小的Excel文件,并且具有较好的性能表现。

2、xlrd 2.0.1版本

2-1、适配Python>=2.7(不包括3.0-3.5)或Python>=3.6
2-2、该版本不再支持xlsx文件格式仅支持旧版的xls文件格式,因为在xlrd 2.0版本之后,xlrd移除了对xlsx格式的支持。

3、xlrd3(非官方名称)

        xlrd3是xlrd的开源扩展库,提供了对xlsx文件格式的支持,然而,请注意,xlrd3并不是xlrd的官方名称(下载:https://github.com/Dragon2fly/xlrd3)。

四、如何学好xlrd库?

1、获取xlrd库的属性和方法

        用print()和dir()两个函数获取xlrd库所有属性和方法的列表

# ['Book', 'FILE_FORMAT_DESCRIPTIONS', 'FMLA_TYPE_ARRAY', 'FMLA_TYPE_CELL', 'FMLA_TYPE_COND_FMT', 'FMLA_TYPE_DATA_VAL',
# 'FMLA_TYPE_NAME', 'FMLA_TYPE_SHARED', 'Operand', 'PEEK_SIZE', 'Ref3D', 'XLDateError', 'XLRDError', 'XLS_SIGNATURE',
# 'XL_CELL_BLANK', 'XL_CELL_BOOLEAN', 'XL_CELL_DATE', 'XL_CELL_EMPTY', 'XL_CELL_ERROR', 'XL_CELL_NUMBER', 'XL_CELL_TEXT', 'ZIP_SIGNATURE', 
# '__VERSION__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', 
# '__spec__', '__version__', 
# 'biff_text_from_num', 'biffh', 'book', 'cellname', 'cellnameabs', 'colname', 'compdoc', 'count_records', 'decompile_formula', 
# 'dump', 'dump_formula', 'empty_cell', 'error_text_from_code', 'evaluate_name_formula', 'formatting', 'formula', 'info', 
# 'inspect_format', 'oBOOL', 'oERR', 'oNUM', 'oREF', 'oREL', 'oSTRG', 'oUNK', 'okind_dict', 'open_workbook', 'open_workbook_xls', 
# 'os', 'pprint', 'rangename3d', 'rangename3drel', 'sheet', 'sys', 'timemachine', 'xldate', 'xldate_as_datetime', 'xldate_as_tuple', 'zipfile']
2、获取xlrd库的帮助信息

        用help()函数获取xlrd库的帮助信息

Help on package xlrd:

NAME
    xlrd

DESCRIPTION
    # Copyright (c) 2005-2012 Stephen John Machin, Lingfo Pty Ltd
    # This module is part of the xlrd package, which is released under a
    # BSD-style licence.

PACKAGE CONTENTS
    biffh
    book
    compdoc
    formatting
    formula
    info
    sheet
    timemachine
    xldate

FUNCTIONS
    count_records(filename, outfile=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)
        For debugging and analysis: summarise the file's BIFF records.
        ie: produce a sorted file of ``(record_name, count)``.
        
        :param filename: The path to the file to be summarised.
        :param outfile: An open file, to which the summary is written.
    
    dump(filename, outfile=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, unnumbered=False)
        For debugging: dump an XLS file's BIFF records in char & hex.
        
        :param filename: The path to the file to be dumped.
        :param outfile: An open file, to which the dump is written.
        :param unnumbered: If true, omit offsets (for meaningful diffs).
    
    inspect_format(path=None, content=None)
        Inspect the content at the supplied path or the :class:`bytes` content provided
        and return the file's type as a :class:`str`, or ``None`` if it cannot
        be determined.
        
        :param path:
          A :class:`string <str>` path containing the content to inspect.
          ``~`` will be expanded.
        
        :param content:
          The :class:`bytes` content to inspect.
        
        :returns:
           A :class:`str`, or ``None`` if the format cannot be determined.
           The return value can always be looked up in :data:`FILE_FORMAT_DESCRIPTIONS`
           to return a human-readable description of the format found.
    
    open_workbook(filename=None, logfile=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, verbosity=0, use_mmap=True, file_contents=None, encoding_override=None, formatting_info=False, on_demand=False, ragged_rows=False, ignore_workbook_corruption=False)
        Open a spreadsheet file for data extraction.
        
        :param filename: The path to the spreadsheet file to be opened.
        
        :param logfile: An open file to which messages and diagnostics are written.
        
        :param verbosity: Increases the volume of trace material written to the
                          logfile.
        
        :param use_mmap:
        
          Whether to use the mmap module is determined heuristically.
          Use this arg to override the result.
        
          Current heuristic: mmap is used if it exists.
        
        :param file_contents:
        
          A string or an :class:`mmap.mmap` object or some other behave-alike
          object. If ``file_contents`` is supplied, ``filename`` will not be used,
          except (possibly) in messages.
        
        :param encoding_override:
        
          Used to overcome missing or bad codepage information
          in older-version files. See :doc:`unicode`.
        
        :param formatting_info:
        
          The default is ``False``, which saves memory.
          In this case, "Blank" cells, which are those with their own formatting
          information but no data, are treated as empty by ignoring the file's
          ``BLANK`` and ``MULBLANK`` records.
          This cuts off any bottom or right "margin" of rows of empty or blank
          cells.
          Only :meth:`~xlrd.sheet.Sheet.cell_value` and
          :meth:`~xlrd.sheet.Sheet.cell_type` are available.
        
          When ``True``, formatting information will be read from the spreadsheet
          file. This provides all cells, including empty and blank cells.
          Formatting information is available for each cell.
        
          Note that this will raise a NotImplementedError when used with an
          xlsx file.
        
        :param on_demand:
        
          Governs whether sheets are all loaded initially or when demanded
          by the caller. See :doc:`on_demand`.
        
        :param ragged_rows:
        
          The default of ``False`` means all rows are padded out with empty cells so
          that all rows have the same size as found in
          :attr:`~xlrd.sheet.Sheet.ncols`.
        
          ``True`` means that there are no empty cells at the ends of rows.
          This can result in substantial memory savings if rows are of widely
          varying sizes. See also the :meth:`~xlrd.sheet.Sheet.row_len` method.
        
        
        :param ignore_workbook_corruption:
        
          This option allows to read corrupted workbooks.
          When ``False`` you may face CompDocError: Workbook corruption.
          When ``True`` that exception will be ignored.
        
        :returns: An instance of the :class:`~xlrd.book.Book` class.

DATA
    FILE_FORMAT_DESCRIPTIONS = {'xls': 'Excel xls', 'xlsb': 'Excel 2007 xl...
    FMLA_TYPE_ARRAY = 4
    FMLA_TYPE_CELL = 1
    FMLA_TYPE_COND_FMT = 8
    FMLA_TYPE_DATA_VAL = 16
    FMLA_TYPE_NAME = 32
    FMLA_TYPE_SHARED = 2
    PEEK_SIZE = 8
    XLS_SIGNATURE = b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1'
    XL_CELL_BLANK = 6
    XL_CELL_BOOLEAN = 4
    XL_CELL_DATE = 3
    XL_CELL_EMPTY = 0
    XL_CELL_ERROR = 5
    XL_CELL_NUMBER = 2
    XL_CELL_TEXT = 1
    ZIP_SIGNATURE = b'PK\x03\x04'
    __VERSION__ = '2.0.1'
    biff_text_from_num = {0: '(not BIFF)', 20: '2.0', 21: '2.1', 30: '3', ...
    empty_cell = empty:''
    error_text_from_code = {0: '#NULL!', 7: '#DIV/0!', 15: '#VALUE!', 23: ...
    oBOOL = 3
    oERR = 4
    oNUM = 2
    oREF = -1
    oREL = -2
    oSTRG = 1
    oUNK = 0
    okind_dict = {-2: 'oREL', -1: 'oREF', 0: 'oUNK', 1: 'oSTRG', 2: 'oNUM'...

VERSION
    2.0.1

FILE
    e:\python_workspace\pythonproject\lib\site-packages\xlrd\__init__.py
3、用法精讲
3-1、cellname函数
3-1-1、语法
cellname(rowx, colx)
    Utility function: ``(5, 7)`` => ``'H6'``
3-1-2、参数

3-1-2-1、rowx(必须)一个整数,表示行号,其中row英文“行”之意。

3-1-2-2、colx(必须)一个整数,表示列号,其中col为英文column的缩写,表示“列”之意。

3-1-3、功能

         将行号(rowx)和列号(colx)转换为 Excel 单元格名称(如 A1)。

3-1-4、返回值

        返回一个Excel单元格的名称。

3-1-5、说明

        无

3-1-6、用法
# 1、cellname函数
import xlrd
def cellname(rowx, colx):
    """
    将行号(rowx)和列号(colx)转换为Excel单元格名称(如A1)
    """
    # 创建一个列表来保存列号的每一位(针对多位数的情况,如AA,AB,...)
    col_letters = []
    while colx > 0:
        # 取当前位的值(0-25),并转换为对应的字母
        col_letters.append(chr(65 + colx % 26))
        # 除以26取整数部分,用于下一轮循环
        colx //= 26
    # 反转列表以得到正确的顺序(如AB应为B在前,A在后)
    col_letters.reverse()
    # 将行号转换为字符串并拼接列号字符串,得到单元格名称
    return ''.join(col_letters) + str(rowx + 1)  # 行号从1开始
if __name__ == '__main__':
    # 读取Excel文件,可根据自身文件的实际路径做调整,如我的路径为:E:\360Downloads\test.xls
    workbook = xlrd.open_workbook(r'E:\360Downloads\test.xls')
    # sheet = workbook.sheet_by_index(0)  # 假设使用第一个工作表
    sheet = workbook.sheet_by_name('test1') # 也可以按名称指定要操作的工作表,注意,只需要指定工作表名,而不是带后缀的文件名
    # 假设我们要获取第2行第3列的单元格名称和内容
    rowx = 1  # 注意:行号在编程中通常从0开始,这里rowx=1,表示为引用工作表的第2行
    colx = 2  # 注意:列号在编程中通常从0开始,这里colx=2,表示为引用工作表的第3列
    # 获取单元格名称
    cell_name = cellname(rowx, colx)
    # 获取单元格内容
    cell_value = sheet.cell_value(rowx, colx)
    # 打印结果
    print(f"The name of the cell is: {cell_name}")
    print(f"The value of the cell is: {cell_value}")
3-2、cellnameabs函数
3-2-1、语法
cellnameabs(rowx, colx, r1c1=0)
    Utility function: ``(5, 7)`` => ``'$H$6'``
3-2-2、参数

3-2-2-1、rowx(必须)一个整数,表示行号,其中row英文“行”之意。

3-2-2-2、colx(必须)一个整数,表示列号,其中col为英文column的缩写,表示“列”之意。

3-2-2-3、r1c1(可选)表示是否更改Excel公式引用单元格的方式,默认为0,即用字母代表列,用数字代表行的方式。

3-2-3、功能

        将行号(rowx)和列号(colx)转换为Excel单元格的绝对引用名称(如$A$1)。

3-2-4、返回值

        返回一个处于绝对引用状态的单元格名称,如$H$6。

3-2-5、说明

3-2-5-1、r1c1=0:用字母代表列,用数字代表行的方式。

3-2-5-2、r1c1=1:行列都使用数字的方式。

3-2-6、用法
# 2、cellnameabs函数
import xlrd
def cellnameabs(rowx, colx, r1c1=0):
    """
    将行号(rowx)和列号(colx)转换为Excel单元格的绝对引用名称(如$A$1)
    """
    # 将列号转换为对应的列字母(A,B,C,...)
    col_letters = ''
    colx += 1  # Excel的列是从1开始的,编程时通常从0开始
    while colx:
        colx, remainder = divmod(colx - 1, 26)
        col_letters = chr(65 + remainder) + col_letters
    # 拼接行号和列字母,并在前后加上$符号表示绝对引用
    return '$' + col_letters + '$' + str(rowx + 1)  # 行号从1开始
if __name__ == '__main__':
    # 读取Excel文件,可根据自身文件的实际路径做调整,如我的路径为:E:\360Downloads\test.xls
    workbook = xlrd.open_workbook(r'E:\360Downloads\test.xls')
    # sheet = workbook.sheet_by_index(0)  # 假设使用第一个工作表
    sheet = workbook.sheet_by_name('test1')  # 也可以按名称指定要操作的工作表,注意,只需要指定工作表名,而不是带后缀的文件名
    # 假设我们要获取第2行第3列的单元格的绝对引用名称和内容
    rowx = 1  # 注意:行号在编程中通常从0开始,这里rowx=1,表示为引用工作表的第2行
    colx = 2  # 注意:列号在编程中通常从0开始,这里colx=2,表示为引用工作表的第3列
    # 获取单元格的绝对引用名称
    cell_ref = cellnameabs(rowx, colx)
    # 获取单元格内容
    cell_value = sheet.cell_value(rowx, colx)
    # 打印结果
    print(f"The absolute reference of the cell is: {cell_ref}")
    print(f"The value of the cell is: {cell_value}")
3-3、colname函数
3-3-1、语法
colname(colx)
    Utility function: ``7`` => ``'H'``, ``27`` => ``'AB'``
3-3-2、参数

3-3-2-1、colx(必须)一个整数,表示列号,其中col为英文column的缩写,表示“列”之意。

3-3-3、功能

        将列索引(从0开始)转换为Excel列名(如A, B, C, ...)。

3-3-4、返回值

        返回一个字符串,表示符合条件的Excel列名。

3-3-5、说明

        无

3-3-6、用法
# 3、colname函数
import xlrd
import string
# 自定义函数,将列索引转换为Excel列名
def colname(colx, names=string.ascii_uppercase):
    """Convert a 0-based column number to an Excel-style column name."""
    if colx < 0:
        raise ValueError("Column number must be non-negative")
    if colx < 26:
        return names[colx]
    else:
        div, mod = divmod(colx, 26)
        return colname(div - 1, names) + names[mod]
if __name__ == '__main__':
    # 打开Excel文件,可根据自身文件的实际路径做调整,如我的路径为:E:\360Downloads\test.xls
    workbook = xlrd.open_workbook(r'E:\360Downloads\test.xls')
    # sheet = workbook.sheet_by_index(0)  # 假设使用第一个工作表
    sheet = workbook.sheet_by_name('test1')  # 也可以按名称指定要操作的工作表,注意,只需要指定工作表名,而不是带后缀的文件名
    # 假设我们要获取第3列的列名(注意:列索引从0开始)
    colx = 2
    # 使用自定义函数获取列名
    col_name = colname(colx)
    # 打印结果
    print(f"The name of column {colx + 1} (Excel column number) is: {col_name}")
    # 另外,你也可以获取该列中特定行的值作为示例
    rowx = 1  # 假设我们获取第一行的值
    cell_value = sheet.cell_value(rowx, colx)
    print(f"The value in cell ({col_name}{rowx + 1}) is: {cell_value}")

五、推荐阅读

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1 机器人软件开发学习所需通用技术栈(一)

机器人软件工程师技术路线&#xff08;如有缺失&#xff0c;欢迎补充&#xff09; 1. 机器人软件开发工程师技术路线 1.1 基础知识 C/C编程&#xff1a;掌握C/C语言基础&#xff0c;包括数据结构、算法、内存管理等。操作系统&#xff1a;了解Linux或Windows等操作系统的基本…

程序固化——FPGA学习笔记6

一、固化文件介绍 BIN:一般是由Vivado软件编译产生的&#xff0c;存储在特定目录下的二进制文件 MCS:一般通过VivadoGUl界面操作或者TCL命令生成&#xff0c;MCS文件里包含了BIN文件的内容&#xff0c;除此之外&#xff0c;每行的开始有地址信息&#xff0c;最后一个Byte是CRC校…

Java---BigInteger和BigDecimal和枚举

1.简介 1.BigInteger可以支持任意长度的整数 2.BigDecimal可以支持任意精度的浮点数 3.用来做精确计算 2.创建方式 new BigInteger(); new BigInteger(参数1,进制)&#xff1a;可以将不同进制转成10进制显示 new BigDecimal(); BigInteger.valueOf(); BigDecimal.valueOf();…

吴恩达2022机器学习专项课程C2W3:实验Lab_01模型评估与选择

这里写目录标题 导入模块与实验环境配置回归1.构建并可视化数据集2.分割数据集3.重新绘制数据集3.特征缩放4.评估模型&#xff1a;计算训练集的误差5.评估模型&#xff1a;计算交叉验证集的误差 添加多项式1.构建多项式特征集2.缩放特征3.使用标准化的计训练集和交叉验证集&…

搭建一个简单的深度神经网络

目录 一、引入所需要的库 二、制作数据集 三、搭建神经网络 四、训练网络 五、测试网络 本博客实验环境为jupyter 一、引入所需要的库 torch库是核心&#xff0c;其中torch.nn 提供了搭建网络所需的所有组件&#xff0c;nn即神经网络。matplotlib类似与matlab&#xff0…

136G全国1m土地覆盖数据

数据是GIS的血液&#xff01; 我们现在为你分享一个136G的全国土地覆盖数据&#xff0c;该数据的分辨率为1米&#xff0c;你可以在文末查看领取方法。 数据概况 为满足对更精确地感知国土面积的需求&#xff0c;来自武汉大学和中国地质⼤学的团队利用低成本的激光扫描仪&…

SAP CS01/CS02/CS03 BOM创建维护删除BAPI使用及增强改造

BOM创建维护删除相关BAPI的使用代码参考示例&#xff0c;客户电脑只能远程桌面&#xff0c;代码没法复制粘贴出来&#xff0c;只能贴图。 创建及修改BAPI: CSAP_MAT_BOM_MAINTAIN。 删除BAPI: CSAP_MAT_BOM_DELETE。 改造BAPI: CSAP_MAT_BOM_MAINTAIN 改造点1&#xff1a;拷…

[LitCTF 2023]Virginia(变异凯撒)

题目&#xff1a; 首先利用网站进行维吉尼亚解密&#xff08;第一段和第二段密钥不同&#xff0c;两段无关&#xff0c;可只解密第二段&#xff09; 第二段解密结果&#xff1a; Please send this message to those people who mean something to you,to those who have touch…

雪球产品可能要远离普通人了

最近有消息说&#xff0c;在年初发生大规模敲入事件后&#xff0c;雪球产品的购买门槛可能从300w提升至1000w。 那么在这个时间&#xff0c;了解一下雪球产品到底是什么&#xff0c;运行原理是什么。 第一种 经典雪球 经典雪球比较容易理解&#xff0c;设定好了固定的敲出条件…

Java从放弃到继续放弃

并发编程 为什么需要多线程&#xff1f; 由于硬件的发展&#xff0c;CPU的核数增多&#xff0c;如果仍然使用单线程对CPU资源会造成浪费。同时&#xff0c;单线程也会出现阻塞的问题。所以&#xff0c;选择向多线程转变。 多线程的使用使得程序能够并行计算&#xff0c;提高计…

HTTPS请求阶段图解分析

HTTPS请求阶段分析 请求阶段分析 请求阶段分析 一个完整、无任何缓存、未复用连接的 HTTPS 请求需要经过以下几个阶段&#xff1a; DNS 域名解析、TCP 握手、SSL 握手、服务器处理、内容传输。 一个 HTTPS 请求共需要 5 个 RTT 1 RTT&#xff08;域名解析&#xff09; 1 RTT…

当你的AirPods没声音或有异常时怎么办?这里提供几个解决办法

你的AirPods听起来比以前安静吗?一个AirPod的声音比另一个大吗?这里有一些技巧可以帮助你提高音量,消除与音量相关的问题。 调整AirPods的音量 在我们深入研究修复AirPods的更技术性方法之前,让我们先检查一下它们是否处于最佳音量水平,并在你尝试更改音量时正确响应。如…

C语言入门系列:变量 —— 存储数据的容器

1. 变量及其作用 想象一下&#xff0c;你正在编写一个程序来记录学生的成绩。你需要一个地方来暂时存放这些成绩&#xff0c;这就是变量的用武之地。 变量不仅可以存储数值&#xff0c;还能保存字符、布尔值等多种数据类型&#xff0c;使你的程序能够处理多样化的信息。 代码…

vue3中使用defineProps、defineEmits和defineExpose

一、defineProps 父组件通过 v-bind 绑定一个数据&#xff0c;然后子组件通过 defineProps 接受传过来的值。 父组件&#xff1a; <template><StudyDefineProps :title"title" /> </template><script setup lang"ts"> import { r…

如何设置EVM/IMA密钥即如何生成签名密钥和证书

为生成和使用签名密钥来配置 IMA&#xff0c;以下是详细步骤&#xff0c;包括如何生成签名密钥和证书。 1. 生成签名密钥和证书 首先&#xff0c;我们需要一个私钥和一个自签名证书。我们将使用 OpenSSL 来生成这些密钥和证书。 生成私钥 openssl genpkey -algorithm RSA -…

k8s之HPA,命名空间资源限制

一、HPA 的相关知识 HPA&#xff08;Horizontal Pod Autoscaling&#xff09;Pod 水平自动伸缩&#xff0c;Kubernetes 有一个 HPA 的资源&#xff0c;HPA 可以根据 CPU 利用率自动伸缩一个 Replication Controller、Deployment 或者Replica Set 中的 Pod 数量。 &#xff08;…

idea ctrl+shift+f 全局搜索失效的解決方法

一定是輸入法的問題&#xff0c;而且是簡繁輸入快捷鍵的問題 你看我按了ctrlshiftf 之后直接打出来繁体字了。微软拼音的解决方法如下&#xff1a; 打开微软拼音输入法设置 关闭它

【稳定检索/投稿优惠】2024年心理健康与社会科学国际会议(MHSS 2024)

2024 International Conference on Mental Health and Social Sciences 2024年心理健康与社会科学国际会议 【会议信息】 会议简称&#xff1a;MHSS 2024截稿时间&#xff1a;点击查看大会地点&#xff1a;中国三亚会议官网&#xff1a;www.icmhss.com会议邮箱&#xff1a;mhs…

刷代码随想录有感(101):动态规划——有障碍的最短路径

题干&#xff1a; 代码&#xff1a; class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m obstacleGrid.size();int n obstacleGrid[0].size();if(obstacleGrid[0][0] 1 || obstacleGrid[m - 1][n - 1] 1)r…

python-docx初探——如何用python新建world—添加段落、标题、表格

python-docx初探&#x1f680; 在项目中需要用到使用代码来编写一些结构化的文档&#xff0c;所以这里就需要涉及到一些需要用代码写world的一些工作&#xff0c;经过简单了解&#xff0c;python操作world最主要使用的就是python-docx文档&#xff0c;所以这次就先学一下这个库…