密码学——密码学概述、分类、加密技术(山东省大数据职称考试)

 大数据分析应用-初级

第一部分 基础知识

       一、大数据法律法规、政策文件、相关标准

       二、计算机基础知识

       三、信息化基础知识

       四、密码学

       五、大数据安全

       六、数据库系统

       七、数据仓库.

第二部分 专业知识

       一、大数据技术与应用

       二、大数据分析模型

       三、数据科学


密码学

  • 大数据分析应用-初级
  • 前言
  • 一、密码学概述
  • 二、密码学分类
  • 三、加密技术
  • 练习题目


前言

密码学

(一)密码学概述

1、了解密码学发展史、密码学概念。

(二)密码学分类

1、了解密码学的分类,包括按时间、按密钥、按密码体制和按明文处理方法分类等。

(三)加密技术

1、了解古典密码学、对称密码算法、非对称密码算法、哈希算法、散列函数(MD5算法)、数字签名技术。

2、掌握软件与硬件加密技术。


一、密码学概述

密码学概念:

密码学(Cryptology)是一门研究密码保护通信手段的科学,属于应用数学的范畴,包括加密理论与解密理论。密码学技术可以使消息的内容对(除发送者和接收者以外)的所有人保密,可以使接收者验证消息的正确性

密码学发展史:

1. 古典密码学阶段(古代至1949年)

古典密码学主要基于替换和置换这两种核心手段。替换是指明文中的每一个字符被替换成密文中的另一个字符;置换是密文和明文字母保持相同,但顺序被打乱

这一时期出现了多种加密方法,如斯巴达的“塞塔式密码”、凯撒密码、维吉尼亚密码、滚筒密码、掩格密码以及圆盘密码等。这些密码技术更像是一门艺术,其数据的安全基于算法的保密,密码学专家是凭知觉和信念来进行密码设计和分析,而不是推理和证明。

2. 近代密码学阶段(1949年至1975年)

1949年,香农发表了《保密系统的通信理论》,为对称密码系统建立了理论基础,从此密码学成为一门科学。

20世纪70年代,随着计算机科学的蓬勃发展,密码学得到了新的概念和工具,如快速电子计算机和现代数学方法。

Arthur Scherbius于1919年设计出了历史上最著名的密码机——德国的Enigma机,它在二战期间被广泛使用,但也引发了加密与破译的激烈对抗。

近代密码发展中一个重要突破是“数据加密标准”(DES)的出现,它使密码学得以从政府走向民间,并在金融等商业领域广泛使用

3. 现代密码学阶段(1976年至今)

1976年,W.Diffie和M.Hellman在发表的文章“密码学的新方向”中首次公开提出了公钥密码(Public-key Cryptography)的概念。公钥密码的提出实现了加密密钥和解密密钥之间的独立,解决了对称密码体制中通信双方必须共享密钥的问题,在密码学界具有划时代的意义。

1977年,美国麻省理工学院提出第一个公钥加密算法RSA算法,之后ElGamal、椭圆曲线、双线性对等公钥密码相继被提出,密码学真正进入了一个新的发展时期。

现代密码学技术得到蓬勃发展,密码学技术趋于标准化,并广泛应用于金融、民生、教育、电子商务、物联网、工业制造等领域。

二、密码学分类

按时间分类

  • 古典密码:古典密码主要以字符为基本加密单元,用于早期的保密通信。
  • 现代密码:现代密码以信息块(多个字符)为基本的加密单元,采用更复杂的算法和密钥管理机制,以提高保密性和安全性。

按密钥分类

  • 对称密钥:又称单钥密码或私钥密码,指加密密钥与解密密钥相同。这种密码体制运算速度快,适用于大数据量的加密,但密钥管理相对困难。
  • 非对称密钥:又称双钥密码或公钥密码,指加密密钥与解密密钥不同。其中,加密密钥(公钥)可以公开,而解密密钥(私钥)需要保密。非对称密钥密码体制解决了密钥分发和不可否认性的问题,但运算速度相对较慢。

按密码体制分类

  • 对称密码体制:如上文所述,加密和解密使用相同的密钥。
  • 非对称密码体制:如上文所述,加密和解密使用不同的密钥。

按明文处理方法分类

  • 分组密码:加密时将明文分成固定长度的组,用同一密钥和算法对每组进行加密,输出也是固定长度的密文。分组密码多用于网络加密。
  • 流密码:也称序列密码,对明文进行连续处理,每次处理一个字符或字节,生成相应的密文。流密码适用于实时通信等需要连续处理的场景。

此外,密码学还可以从其他角度进行分类,如按保密内容算法分类,可以分为受限制算法(算法的保密性基于对算法的保密)和基于密钥算法(算法的保密性基于对密钥的保密);按安全目标分类,可以分为保密体制(主要保证信息不被攻击者窃取)和认证体制(主要保证信息源不被假冒以及信息发送和接受方的身份真实性)。

三、加密技术

1.古典密码学:

      定义与原理:古典密码学是密码学发展早期阶段的技术,主要通过简单的替换或置换操作来隐藏明文信息。替换密码是将明文中的每个字符按照一定规则替换为其他字符,如凯撒密码,它将字母表中的字母按照固定的位移量进行替换。置换密码则是改变明文中字符的位置顺序,比如栅栏密码,把明文按一定规律分组后重新排列组合得到密文。

      示例与局限性:以凯撒密码为例,如果设定位移量为 3,字母 A 就会被替换成 D,B 替换成 E,以此类推。但这种密码很容易被破解,因为它的密钥空间(可能的密钥数量)较小,对于有一定规律的文本,通过简单的频率分析(统计密文中每个字母出现的频率,与正常语言中字母频率对比)就可以猜出加密规则。

2.对称密码算法:

        定义与原理:对称密码算法也叫单钥密码算法,加密和解密使用相同的密钥。发送方和接收方需要事先共享密钥,加密时通过特定的算法将明文和密钥一起运算得到密文,解密时则使用相同的密钥和对应的解密算法把密文还原为明文。

       应用场景与安全性:它的加密和解密速度相对较快,适用于对大量数据进行加密,如在本地硬盘数据加密、企业内部网络数据传输加密等场景广泛应用。然而,其安全性依赖于密钥的保密性,密钥管理是一个关键问题。因为在多个用户通信的情况下,需要安全地分发和存储大量的密钥。常见的对称密码算法包括DES、IDEA、AES、BlowFish、Twofish等。其中,AES(高级加密标准)是最常见的对称密码算法之一,被广泛应用于各种安全通信和存储系统中。

3.非对称密码算法

       定义与原理:非对称密码算法又称为双钥密码算法,加密和解密使用不同的密钥,分别是公钥和私钥。公钥可以公开,任何人都可以使用公钥对信息进行加密,但只有拥有私钥的人才能解密。其原理基于数学难题,如 RSA 算法是基于大整数分解问题。

       应用场景与优势:主要用于密钥交换、数字签名等场景。在电子商务和电子政务等领域发挥重要作用,例如在网上银行中,银行将公钥公开,客户用公钥加密账户信息等敏感数据发送给银行,银行用私钥解密,这种方式解决了对称密码算法中密钥分发的难题,同时还可以提供身份认证功能。常见的非对称密码算法包括RSA、DSA、ECC等。其中,RSA是最著名的非对称密码算法之一,被广泛应用于数字签名、密钥交换等领域。

4.哈希算法与散列函数(以 MD5 算法为例)

        定义与原理哈希算法(也称散列算法)是一种将任意长度的数据映射为固定长度的散列值(也叫哈希值)的算法(该过程不可逆)。散列函数是哈希算法的具体实现。散列函数的主要特点是:

  1. 查找速度较快:给定明文和哈希算法,在有限时间和有限资源内能计算出哈希值。
  2. 不可逆:哈希算法是一种单向密码体制,即它是一个从明文到密文的不可逆的映射。只有加密过程,没有解密过程(在理论上无法从哈希值反推出原始数据)。
  3. 输入敏感:如果散列一段明文,哪怕只更改该段落的一个字母,随后的哈希值都将产生不同的结果。

      MD5算法是一种具体的哈希算法实现,它接收任意长度的输入数据,并通过一系列复杂的数学运算生成一个128位的哈希值。MD5算法以512位数据块为单位来处理输入信息,将输入信息划分为若干个512位的数据块,如果最后一块不足512位,会进行填充处理。在处理过程中,MD5算法会进行四轮循环运算,每轮包含16步操作,这些操作涉及到布尔函数(如与、或、非等逻辑运算)、加法运算和移位操作等。

       应用场景与局限性:主要用于数据完整性验证和数字签名等。比如在文件下载过程中,网站可以提供文件的 MD5 值,用户下载后可以自行计算文件的 MD5 值并与网站提供的进行对比,如果相同则说明文件在传输过程中没有被篡改。然而,MD5 存在安全隐患,由于其算法结构的一些弱点,已经可以通过碰撞攻击(找到两个不同的输入产生相同的 MD5 值)来破解它,在高安全要求的场景下逐渐被更安全的哈希算法如 SHA - 256 等替代。MD5算法的应用非常广泛,包括安全加密、唯一标识、数据校验等。然而,由于MD5算法的安全性问题(如碰撞问题),在一些对安全性要求较高的场合(如金融领域、重要信息系统等),MD5已经被更安全的哈希算法所替代

5.数字签名技术

       定义与原理:数字签名是一种用于验证消息来源和完整性的技术。发送方使用自己的私钥对消息进行签名操作,生成数字签名,接收方可以使用发送方的公钥来验证数字签名。签名过程通常结合哈希算法,先对消息计算哈希值,然后用私钥对哈希值进行加密得到数字签名。验证时,接收方先计算收到消息的哈希值,再用发送方公钥解密数字签名得到原始哈希值,比较两者是否一致来判断消息是否被篡改和是否来自声称的发送者。

       应用场景与重要性在电子合同、电子文档审批等场景中至关重要。它提供了不可否认性,确保发送方不能否认发送过该消息,同时保证了消息的完整性,防止消息在传输过程中被篡改,从而保障了电子通信的安全性和可信度。

软件加密技术

原理:

      软件加密主要是通过编程的方式,利用加密算法对数据进行处理。它将加密算法以软件代码的形式实现,在软件运行过程中,对需要保护的数据进行加密和解密操作。例如,在一个文档编辑软件中,可以通过软件加密技术对文档内容进行加密,当用户保存文档时,软件会使用特定的加密算法(如 AES 等)和用户设置的密钥将文档内容转换为密文进行存储。

常见加密方法:

       对称密钥加密软件实现:利用对称密钥算法(如 AES、DES 等)在软件层面进行加密。例如,AES 算法在软件中实现时,会将数据分成固定长度的块(如 128 位),然后通过多轮的字节替换、行移位、列混合和轮密钥加等操作,使用相同的密钥进行加密和解密。这种方法加密和解密速度相对较快,适合对大量数据进行加密。

        非对称密钥加密软件实现:基于非对称密钥算法(如 RSA 等)实现软件加密。软件使用公钥和私钥对数据进行加密和解密。例如,在数字签名软件中,发送方使用自己的私钥对文件的哈希值进行加密生成数字签名,接收方使用发送方的公钥进行验证。这种方法在密钥管理和身份认证方面有优势,但加密和解密速度比对称密钥算法慢。

        代码混淆与加密:为了防止软件本身的算法被破解,还可以对软件代码进行混淆和加密。代码混淆是通过改变代码的结构和逻辑,使攻击者难以理解代码的真实意图。例如,将变量名替换为无意义的字符,打乱函数的执行顺序等。软件代码加密则是直接对可执行文件或脚本进行加密,在运行时再解密,增加了软件逆向分析的难度。

应用场景:

       数据保护:用于保护各种类型的数据,如企业的财务数据、个人的隐私文件等。例如,数据库管理系统可以使用软件加密技术对存储在数据库中的敏感数据进行加密,防止数据泄露。

       软件授权与版权保护:通过软件加密可以实现软件的授权管理。例如,软件开发者可以使用加密技术对软件的许可证进行加密,用户只有在获得合法的解密密钥(许可证密钥)后才能正常使用软件,这样可以防止软件盗版。

硬件加密技术

原理:

       硬件加密是将加密功能集成到专门的硬件设备中,如加密芯片、加密狗等。这些硬件设备内部包含了加密算法的实现电路和存储密钥的安全区域。在进行加密操作时,数据被发送到硬件设备中,由硬件设备内部的电路使用存储的密钥和加密算法进行加密处理,密文再返回给外部设备。由于密钥存储在硬件的安全区域,并且加密过程在硬件内部完成,大大提高了加密的安全性。

常见加密设备及方法:

        加密芯片:加密芯片是一种高度集成的硬件加密设备。它可以实现多种加密算法,并且具有很高的安全性。例如,在一些高端智能手机中,会内置加密芯片来保护用户的数据(如指纹信息、支付信息等)。加密芯片内部有专门的密钥存储区域,采用物理防护措施(如防篡改封装)来防止密钥泄露,同时,芯片内的加密电路可以快速地执行加密和解密操作。

        加密狗:加密狗是一种外置的硬件加密设备,通常通过 USB 接口等方式与计算机相连软件开发者可以将软件的关键部分(如加密算法和密钥)存储在加密狗中,软件在运行时需要与加密狗进行交互才能正常工作。例如,一些专业的设计软件使用加密狗来进行软件授权,用户只有插入合法的加密狗,软件才能启动并使用全部功能,这有效地防止了软件的非法复制和使用。

应用场景:

       金融安全领域:在银行卡、U 盾等设备中广泛应用。例如,U 盾内部有加密芯片,存储着用户的数字证书和私钥。当用户进行网上银行转账等操作时,U 盾会使用内部的加密电路和存储的密钥对交易数据进行数字签名等加密操作,确保交易的安全性和用户身份的真实性。

       企业数据安全:企业可以使用硬件加密设备来保护重要的数据服务器。例如,在服务器的硬盘阵列中加入硬件加密模块,对存储的数据进行加密,防止数据被非法访问,即使硬盘被盗,没有正确的密钥也无法读取数据。

软件加密与硬件加密的比较

  1. 安全性硬件加密由于在硬件层面操作,通常认为更安全,不易受到恶意软件的攻击。而软件加密则可能受到操作系统漏洞或底层硬件性能的影响。
  2. 成本硬件加密设备可能需要额外的购买和维护成本,而软件加密则通常成本较低,易于部署。
  3. 灵活性软件加密可以更容易地更新和升级,以适应新的加密标准和算法。而硬件加密则需要更换硬件设备或进行专门的升级操作。
  4. 性能硬件加密通常提供更高的性能,尤其是在处理大量数据时。而软件加密则可能受到计算机性能的限制。

       综上所述,软件加密和硬件加密各有其优势和局限。在实际应用中,应根据具体需求和安全要求选择合适的加密技术。例如,在需要高安全性和稳定性的场合下,可以选择硬件加密;而在成本预算有限或需要频繁更新加密算法的情况下,则可以选择软件加密。


练习题目

一、单选题

  1. 密码学中,用于隐藏信息原始含义的转换后信息被称为( )
    A. 明文
    B. 密文
    C. 密钥
    D. 密码协议
    答案:B。解析:明文是未加密的原始信息,密文是将明文通过特定的算法和密钥转换后的信息,用于隐藏原文含义;密钥是用于加解密算法的秘密参数;密码协议是使用密码技术的通信协议。

  2. 以下哪个时期标志着密码学从古典向现代转变的关键阶段( )
    A. 19 世纪末 - 20 世纪初
    B. 第一次世界大战期间
    C. 第二次世界大战期间
    D. 20 世纪 70 年代
    答案:A。解析:19 世纪末 - 20 世纪初,随着计算机技术和数学理论的初步发展,密码学开始从基于简单手工操作的古典密码学向依赖复杂数学算法和计算机技术的现代密码学转变。

  3. 对称密钥密码体制中,如果密钥长度为 128 位,那么理论上密钥的可能组合数量是( )
    A. 2^{​{128}}
    B. 128^{​{2}}
    C. 10^{​{128}}
    D. 2\times 128
    答案:A。解析:对于 n 位的二进制密钥,其可能的组合数量是2^{​{n}},所以 128 位密钥的可能组合数量是2^{​{128}}

  4. 下列哪种古典密码方式是通过改变字符位置顺序来加密的( )
    A. 凯撒密码
    B. 替换密码
    C. 栅栏密码
    D. 仿射密码
    答案:C。解析:凯撒密码和仿射密码属于替换密码,是用其他字符替换明文字符;栅栏密码是将明文字符分组后改变位置顺序,属于置换密码。

  5. 以下哪种算法主要用于验证数据完整性和数字签名( )
    A. 对称密码算法
    B. 非对称密码算法
    C. 哈希算法
    D. 序列密码算法
    答案:C。解析:哈希算法将任意长度的数据映射为固定长度的散列值,主要用于验证数据完整性和数字签名;对称密码算法用于加密和解密数据;非对称密码算法用于密钥交换和数字签名等多种功能;序列密码算法是一种加密方式,重点在加密数据而不是验证完整性。

  6. 在非对称密钥密码体制中,公钥用于( )
    A. 解密
    B. 签名
    C. 加密
    D. 验证签名
    答案:C。解析:在非对称密钥密码体制中,公钥用于加密,私钥用于解密和签名,验证签名也是使用公钥。

  7. MD5 算法产生的散列值长度是( )
    A. 128 位
    B. 160 位
    C. 256 位
    D. 512 位
    答案:A。解析:MD5 算法产生的散列值长度是 128 位。

  8. 软件加密中,代码混淆的主要目的是( )
    A. 提高软件运行速度
    B. 减小软件体积
    C. 防止软件算法被破解
    D. 增加软件功能
    答案:C。解析:代码混淆是通过改变代码的结构和逻辑,使攻击者难以理解代码的真实意图,主要目的是防止软件算法被破解。

  9. 以下硬件加密设备中,常用于高端智能手机保护用户数据的是( )
    A. 加密狗
    B. 加密芯片
    C. U 盾
    D. 硬盘加密模块
    答案:B。解析:加密芯片可集成到智能手机中,用于保护用户的数据,如指纹信息、支付信息等;加密狗主要用于软件授权;U 盾主要用于网上银行等金融操作;硬盘加密模块用于服务器或计算机硬盘数据加密。

  10. 在密码体制分类中,将明文逐位与密钥流运算的是( )
    A. 分组密码
    B. 序列密码
    C. 公钥密码
    D. 哈希密码
    答案:B。解析:序列密码(流密码)将明文逐位地与密钥流进行运算;分组密码是将明文划分成固定长度的组进行加密;公钥密码是基于非对称密钥的密码系统;哈希密码主要用于生成散列值,不是加密明文的方式。

二、多选题

  1. 密码学按时间分类包括( )
    A. 古代密码学
    B. 古典密码学
    C. 近代密码学
    D. 现代密码学
    答案:BD。解析:密码学按时间分为古典密码学(古代到 19 世纪末)和现代密码学(20 世纪初至今)。

  2. 对称密钥密码体制的优点有( )
    A. 加密和解密速度快
    B. 密钥管理相对简单
    C. 适用于大量数据加密
    D. 提供身份认证功能
    答案:AC。解析:对称密钥密码体制加密和解密速度快,适用于大量数据加密;但其密钥管理困难,不直接提供身份认证功能。

  3. 以下属于古典密码学替换密码的有( )
    A. 简单替换密码
    B. 维吉尼亚密码
    C. 希尔密码
    D. 置换密码
    答案:ABC。解析:简单替换密码、维吉尼亚密码、希尔密码都属于替换密码,是将明文字符替换为其他字符来加密;置换密码是改变字符位置顺序,不属于替换密码。

  4. 哈希算法的应用场景包括( )
    A. 数据完整性检查
    B. 数字签名
    C. 密码存储
    D. 数据加密
    答案:ABC。解析:哈希算法主要用于数据完整性检查、数字签名和密码存储(存储密码的哈希值而不是明文密码),它一般不用于数据加密,因为哈希是单向的,很难从哈希值还原出原始数据。

  5. 软件加密技术的实现方式包括( )
    A. 对称密钥加密软件实现
    B. 非对称密钥加密软件实现
    C. 代码混淆与加密
    D. 硬件绑定软件加密
    答案:ABC。解析:软件加密技术可以通过对称密钥加密软件实现、非对称密钥加密软件实现以及代码混淆与加密来实现;硬件绑定软件加密不是软件加密技术本身的实现方式,而是涉及软件与硬件结合的加密方式。

  6. 硬件加密技术的优势有( )
    A. 安全性高
    B. 加密速度快
    C. 密钥存储安全
    D. 便于软件升级
    答案:ABC。解析:硬件加密技术将加密功能集成到硬件设备中,具有安全性高(如采用物理防护措施防止密钥泄露)、加密速度快(硬件电路执行加密操作)、密钥存储安全(有专门的安全区域存储密钥)等优势;硬件加密设备可能会对软件升级有一定限制,并不一定便于软件升级。

三、判断题

  1. 古典密码学的加密方法在现代已经完全没有应用价值。( )
    答案:错误。解析:虽然现代密码学技术先进,但古典密码学的一些基本思想和简单加密方式在某些简单场景或教学等领域仍有一定价值。

  2. 非对称密钥密码体制中,加密和解密速度比对称密钥密码体制快。( )
    答案:错误。解析:非对称密钥密码体制加密和解密速度相对较慢,对称密钥密码体制加密和解密速度快。

  3. 只要哈希算法产生的散列值相同,那么原始数据一定相同。( )
    答案:正确。解析:哈希算法的特点是对于给定的数据能产生唯一固定长度的散列值,如果散列值相同,理论上原始数据相同,但目前一些哈希算法可能受到碰撞攻击的影响。

  4. 软件加密技术比硬件加密技术安全性更高。( )
    答案:错误。解析:硬件加密技术通常具有更高的安全性,因为它将加密功能集成在专门的硬件设备中,有物理防护措施防止密钥泄露等优势。

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

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

相关文章

Android Studio、JDK、AGP、Gradle、kotlin-gradle-plugin 兼容性问题

文章目录 问题:解决办法:gradle与 java的版本兼容AGP与Gradle的版本兼容kotlin 与 jvm 的版本兼容KGP、Gradle、AGP兼容关系kotlin 与 java 的编译版本配置 问题: 你从githb上clone了一个项目,本地跑的时候,各种报错。…

ChatGPT搜索全新升级,向全体用户开放,近屿智能助力AI行业发展

12月17日,OpenAI在第八天直播中正式宣布ChatGPT搜索功能全面升级,并即日起对所有ChatGPT用户开放。此次更新不仅带来了显著的性能提升,还引入了多项突破性功能,如更快的搜索速度、全新的地图体验以及YouTube视频嵌入,为…

VSCode编辑+GCC for ARM交叉编译工具链+CMake构建+OpenOCD调试(基于STM32的标准库/HAL库)

本文以【STM32F103ZET6】单片机作为示例来进行演示,标准库/HAL库的工程是通用的,修改CMakeLists.txt里面的源文件和头文件引用部分即可。 更多细节请参考【VSCode编辑GCC for ARM交叉编译工具链Makefile构建OpenOCD调试(基于STM32的标准库&am…

ResNet网络:深度学习中的革命性架构

目录 ​编辑 引言 ResNet网络的特点 1. 残差块(Residual Block) 2. 恒等映射(Identity Mapping) 3. 深层网络训练 4. Batch Normalization 5. 全局平均池化 6. 灵活的结构 ResNet的应用案例 ResNet的研究进展 实战案例…

Axure9设置画布固定

在使用AxureRP9设计原型时,如果遇到画布在拖动时变得难以控制,可以尝试在Windows系统中通过‘文件’>‘首选项’,或在Mac系统中通过‘AxureRP9’>‘偏好设置’进行设置,以稳定画布的行为。 现象 页面底层的画布&#xff0…

景联文科技入选中国信通院发布的“人工智能数据标注产业图谱”

近日,由中国信息通信研究院、中国人工智能产业发展联盟牵头,联合中国电信集团、沈阳市数据局、保定高新区等70多家单位编制完成并发布《人工智能数据标注产业图谱》。景联文科技作为人工智能产业关键环节的代表企业,入选图谱中技术服务板块。…

ESlint代码规范,手动与自动修复

规范说明 规则参考 - ESLint - 插件化的 JavaScript 代码检查工具 规范说明 ​ ​ 可看到是main.js文件报错分别是第三行第30个字符,以及第七行第一个字符 后面则是规范说明,可以根据说明查找相应的规范 一.手动修正 ctrl f 可以搜索 二.自动修正 …

一条线上的点

给你一个数组 points &#xff0c;其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 提示&#xff1a; 1 < points.length < 300points[i].length 2-104 < xi, yi < 104points 中的所有点 互不相同 解析&#xff1a;使用斜…

wxpython图形用户界面编程

wxpython图形用户界面编程 一、wxpython的基础 1.1 wxpython的基础 作为图形用户界面开发工具包 wxPython&#xff0c;主要提供了如下 GUI 内容&#xff1a; 窗口。控件。事件处理。布局管理。 1.2 wxpython的类层次机构 1.3 wxpython的安装 Windows 和 macOS 平台安装&a…

【优选算法篇】位运算小课堂:从入门到精通的奇妙之旅(上篇)

文章目录 须知 &#x1f4ac; 欢迎讨论&#xff1a;如果你在学习过程中有任何问题或想法&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习。你的支持是我继续创作的动力&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;觉得这篇文章对你有帮助吗&#xff1…

pytest入门九:feature

fixture是pytest特有的功能&#xff0c;用以在测试执行前和执行后进行必要的准备和清理工作。使用pytest.fixture标识&#xff0c;定义在函数前面。在你编写测试函数的时候&#xff0c;你可以将此函数名称做为传入参数&#xff0c;pytest将会以依赖注入方式&#xff0c;将该函数…

Day9 神经网络的偏导数基础

多变量函数与神经网络 在神经网络中&#xff0c;我们经常遇到多变量函数。这些函数通常描述了网络的输入、权重、偏置与输出之间的关系。例如&#xff0c;一个简单的神经元输出可以表示为&#xff1a; z f ( w 1 x 1 w 2 x 2 … w n x n b ) z f(w_1x_1 w_2x_2 \ldots…

sg-exam:Star 2.2k,一套完善的在线教育平台,支持在线考试、在线学习,教育项目用它就没有错~~

​嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 sg-exam是一个基于Java语言的在线考试系统&#xff0c;它集成了试卷管理、试题管理、考试安排、在线作答、自动阅卷等功能。该项目旨在帮助教育机构…

ArkTS中string和String/number和Number类型大小写的区别

ArkTS和TypeScript类似&#xff0c;string 和 String&#xff0c;number 和 Number 之间有一些重要的区别&#xff1a; 基本类型与对象类型 基本类型 (string, number)&#xff1a; string 和 number 是基本数据类型&#xff0c;用于表示原始值。例如&#xff1a;let str: str…

Ubuntu22.04切换gcc版本教程

在编译安装程序的时候,由于gcc版本过高,导致编译无法通过,需要降低gcc版本。 一、安装gcc版本 根据自己的需求安装gcc版本。 sudo apt update sudo apt install gcc-10 g++-10二、切换gcc版本 sudo update-alternatives --install /usr/bin/gcc gcc

c++领域展开第四幕——类和对象(上篇收尾 this指针、c++和c语言的初步对比)超详细!!!!

文章目录 前言一、this指针二、c和c语言的初步对比总结 前言 上篇我们初步学习了类的基本概念以及实例化 今天我们来学习类的构造以及析构还有类的默认成员函数&#xff0c;类和对象这一部分都会有点难 跟着我一起来吧 一、this指针 Date类中有 Init 与 Print 两个成员函数&…

python | linux | ModuleNotFoundError: No module named ‘WFlib‘ |找不到模块

问题&#xff1a; (base) beautyby521-7:~/Website-Fingerprinting-Library-master$ bash scripts/NetCLR.sh Traceback (most recent call last):File "/home/beauty/Website-Fingerprinting-Library-master/exp/pretrain.py", line 8, in <module>from WFli…

联发科MTK8788_MT8788安卓核心板安兔兔跑分_安卓主板方案商

MT8788安卓核心板具有集成的蓝牙、fm、WLAN和gps模块&#xff0c;是一个高度集成的基带平台&#xff0c;包括调制解调器和应用处理子系统&#xff0c;启用LTE/LTE-A和C2K智能设备应用程序。该芯片集成了工作在2.0GHz的ARM Cortex-A73、最高可达2.0GHz的ARM Cortex-A53和功能强大…

云计算HCIP-OpenStack02

书接上回&#xff1a; 云计算HCIP-OpenStack01-CSDN博客 7.OpenStack核心服务 7.1Horizon&#xff1a;界面管理服务 Horizon提供了OpenStack中基于web界面的管理控制页面&#xff0c;用户或者是管理员都需要通过该服务进行OpenStack的访问和控制 界面管理服务需要依赖于keyston…

ElasticSearch的自动补全功能(拼音分词器、自定义分词器、DSL实现自动补全查询、RestAPI实现自动补全查询)

文章目录 1. 什么是自动补全2. 拼音分词器2.1 初识拼音分词器2.2 下载拼音分词器2.3 安装拼音分词器2.4 测试拼音分词器 3. 自定义分词器3.1 拼音分词器存在的问题3.2 分词器&#xff08;analyzer&#xff09;的组成3.3 如何自定义分词器3.4 拼音分词器的可选参数3.5 配置自定义…