Android SELinux:保护您的移动设备安全的关键

Android SELinux:保护您的移动设备安全的关键

1 引言

移动设备在我们的生活中扮演着越来越重要的角色,我们几乎把所有重要的信息都存储在这些设备上。然而,随着移动应用程序的数量不断增加,安全性也变得越来越关键。这就是为什么安卓系统引入了SELinux(Security-Enhanced Linux)的原因。

1.1 SELinux的概念和作用

SELinux是一个强制访问控制(MAC)机制,最初由美国国家安全局(NSA)开发。它被设计用于增强Linux操作系统的安全性,并防止恶意攻击者利用各种漏洞进行未授权访问或提升权限。

SELinux通过实施最小特权原则(Principle of Least Privilege)来限制进程和应用程序的权限。它基于标签和域的概念,为每个进程、文件和对象分配唯一的安全上下文。这样,SELinux可以在运行时强制执行策略,限制进程只能访问其所需的资源和功能。

1.2 移动设备安全的重要性

移动设备存储了大量的敏感信息,包括个人身份、财务数据和机密业务文件等。如果这些信息遭到未经授权的访问或泄露,将会给个人和组织带来巨大的损失。此外,移动设备还面临恶意软件、网络攻击和数据泄漏等威胁。

为了保护我们的移动设备和数据安全,需要采取有效的安全措施。SELinux作为Android系统的一部分,在提供强大的安全保护方面发挥着关键作用。通过实施最小特权原则和强制访问控制,SELinux可以限制应用程序的权限,并防止恶意软件的传播和攻击。

2 SELinux的基本原理

2.1 安全策略和强制访问控制(MAC)模型

在SELinux中,安全策略是指定义了系统如何处理和保护资源的规则集合。这些规则决定了哪些进程可以访问哪些资源,并规定了访问权限的级别。

强制访问控制(MAC)模型是SELinux的核心概念之一。与传统的自由选择访问控制(DAC)模型不同,MAC模型通过强制执行安全策略来确保进程和应用程序只能访问其所需的资源。这种限制是通过使用标签和域的概念来实现的。

2.2 标签和域的概念

SELinux使用标签和域来标识和隔离不同的对象和资源。每个进程、文件和设备都被分配了一个唯一的安全上下文,该上下文包含了标签和域的信息。

标签是一个由多个组成部分组成的字符串,用于描述对象的类型、角色和级别。例如,可以为一个文件分配以下标签:type=app_data,role=user,level=low。这些标签定义了文件的类型、用户角色和安全级别。

域是一组具有相似安全要求和访问权限的对象的集合。它们帮助隔离和保护系统中的不同组件。例如,可以为一个应用程序分配一个独立的域,使其与其他应用程序相互隔离。

2.3 具体的SELinux实现方式

在Android系统中,SELinux使用了一种名为"sepolicy"的安全策略文件来定义安全规则和访问权限。这个文件包含了大量的规则,用于控制进程、应用程序和资源之间的交互。

通过修改sepolicy文件,可以定义哪些进程可以执行哪些操作,以及对哪些资源具有读写权限。这样,即使应用程序被恶意攻击,它也只能在其允许的范围内进行操作,无法越权访问其他资源。

示例代码:

# 修改sepolicy文件以定义安全规则
allow app_data app_file:file { read write };
allow app_process app_data:dir { search };

以上是对SELinux基本原理的介绍。接下来,我们将探讨在Android系统中如何配置和管理SELinux,并进一步了解其在移动设备安全方面的重要性。

3 SELinux在Android中的应用

3.1 Android的安全架构

Android操作系统采用了多层次的安全架构,旨在保护用户数据和系统的完整性。其中关键的一层是SELinux,它通过强制访问控制模型提供了额外的保护层。

Android的安全架构还包括应用沙盒、权限模型和数字签名等机制,以确保应用程序只能访问其所需的资源,并且防止未经授权的访问。

3.2 SELinux在Android中的角色

SELinux在Android系统中扮演着重要的角色,它为每个应用程序和系统组件分配了一个独特的安全上下文。这些上下文包含了标签和域的信息,限制了应用程序能够访问的资源和权限。

SELinux通过强制执行安全策略来保证系统的安全性。它限制了应用程序的行为,防止恶意应用程序获取敏感数据或对系统进行操控。同时,SELinux还可以阻止应用程序之间的相互干扰,提高整个系统的稳定性。

3.3 SELinux在应用程序隔离中的作用

一个关键的安全挑战是确保不同的应用程序之间相互隔离,以防止恶意应用程序获取敏感数据或攻击其他应用程序。SELinux在应用程序隔离方面发挥着重要作用。

通过为每个应用程序分配独立的安全上下文,SELinux确保了应用程序之间的资源隔离和访问控制。这意味着即使一个应用程序被入侵或受到恶意代码的攻击,它也只能在其所允许的范围内进行操作,无法越权访问其他应用程序或系统资源。

示例代码:

// 通过SELinux限制应用程序的访问权限
public void restrictAccess() {SecurityManager securityManager = System.getSecurityManager();if (securityManager != null) {securityManager.checkPermission(new SELinuxPermission("allow_app_access"));}
}

以上是对SELinux在Android中应用的介绍。接下来,我们将讨论如何配置和管理SELinux以提高移动设备的安全性,并总结其在移动应用程序开发中的最佳实践。

4 SELinux策略生成和管理

4.1 策略生成工具和过程

为了生成SELinux策略,Android使用了一个名为"sepolicy"的安全策略文件。这个文件包含了大量的规则,用于定义进程、应用程序和资源之间的访问权限。

在Android中,策略生成工具主要有两个:audit2allow和checkmodule。audit2allow用于将安全审计日志转换为策略规则,checkmodule用于验证和编译策略模块。

策略生成的过程通常包括以下步骤:

  1. 收集安全审计日志:通过监视系统的安全审计日志,记录应用程序和系统组件的访问请求。
  2. 分析安全审计日志:使用audit2allow工具分析安全审计日志,提取出访问请求和相应的安全规则。
  3. 生成策略规则:根据分析结果,生成具体的策略规则并添加到sepolicy文件中。
  4. 验证和编译策略模块:使用checkmodule工具验证策略规则的语法和正确性,并将其编译成可加载的模块。

4.2 SELinux上下文和标签管理

在Android中,每个进程、文件和设备都被分配了一个唯一的安全上下文,其中包含了标签和域的信息。上下文的管理是通过SELinux上下文和标签管理器来实现的。

SELinux上下文和标签管理器提供了一组命令和API,用于查看、修改和管理对象的安全上下文。开发人员可以使用这些工具来为应用程序分配相应的标签,控制其访问权限,并确保应用程序与其他组件的正确隔离。

示例代码:

# 查看文件的安全上下文
ls -Z /data/app/com.example.app# 修改文件的安全上下文
chcon u:object_r:app_data_file:s0 /data/app/com.example.app# 查询应用程序的安全上下文
adb shell ps -Z | grep com.example.app

4.3 OEM定制策略的添加和维护

Android设备制造商通常需要根据其特定的需求和硬件配置对SELinux策略进行定制。为了支持OEM定制策略的添加和维护,Android提供了相应的工具和机制。

OEM可以通过修改sepolicy文件或添加自定义的策略模块来定制SELinux策略。这些定制内容可以包括特定设备的访问规则、硬件驱动程序的权限要求等。

为了确保策略的正确性和完整性,OEM需要进行验证和测试,并遵循Android的最佳实践和安全指南。

以上是对SELinux策略生成和管理的介绍。接下来,我们将讨论如何配置SELinux以提高移动设备的安全性,并总结在Android开发中使用SELinux的一些最佳实践。

5 SELinux的优势和挑战

SELinux作为一种强制访问控制(MAC)机制,在Android系统中提供了强大的安全保护。然而,它也面临着一些挑战。本节将介绍SELinux的优势和挑战,并提供相应的解决方案。

5.1 提供强大的安全保护

SELinux通过强制访问控制策略,限制了应用程序和系统组件之间的访问权限,从而有效地保护了移动设备免受恶意应用程序和攻击的威胁。

  1. 细粒度的访问控制:SELinux可以对每个应用程序、文件和设备进行细粒度的访问控制,通过定义安全上下文和标签来限制其访问权限。这样可以确保应用程序只能访问其所需的资源,防止应用程序跨越边界进行非法操作。

示例代码:

# 为应用程序分配安全标签
chcon u:object_r:app_data_file:s0 /data/app/com.example.app# 通过SELinux规则限制应用程序的访问权限
allow app_data_file:file { read write };
deny app_data_file:file { getattr open };
  1. 隔离和沙盒化:SELinux还可以将应用程序隔离在各自的安全域中,防止恶意应用程序对其他应用程序和系统进行干扰。这种沙盒化的机制可以有效地限制应用程序的权限和行为,提高整体系统的安全性。

5.2 防止恶意应用程序的扩散

SELinux在Android系统中起到了重要的角色,防止恶意应用程序的扩散和攻击的传播。

  1. 强制执行安全策略:SELinux强制执行安全策略,禁止恶意应用程序进行未授权的访问和操作。即使应用程序本身存在漏洞或被攻击,SELinux仍然可以限制其权限,减少潜在的风险。

  2. 安全审计和监控:SELinux还提供了安全审计功能,可以记录应用程序和系统组件的访问请求和操作。这些审计日志可以用于分析和检测恶意行为,及时采取相应的措施。

5.3 对系统性能的影响和解决方案

尽管SELinux提供了强大的安全保护,但它也可能对系统性能产生一定的影响。这主要体现在策略生成和管理、资源消耗等方面。

  1. 策略生成和管理:策略生成工具和过程可能会占用一定的系统资源和时间。为了减少影响,可以优化策略生成工具的算法和流程,并定期清理无用的策略规则。

  2. 资源消耗:SELinux需要使用一定的内存和处理能力来执行安全策略。在资源受限的移动设备上,这可能会对系统性能产生一定的压力。为了缓解影响,可以调整策略的严格程度,选择更合适的策略模式。

总结:
SELinux作为一种强制访问控制(MAC)机制,在Android系统中提供了强大的安全保护。它通过细粒度的访问控制、隔离和沙盒化等功能,有效地防止恶意应用程序的扩散和攻击的传播。然而,它也面临着一些挑战,如策略生成和管理、资源消耗等方面的影响。通过优化策略生成工具和流程、调整策略的严格程度等解决方案,可以最大程度地发挥SELinux的优势同时降低其对系统性能的影响。

6 SELinux的未来发展

SELinux作为一种强制访问控制(MAC)机制,在保护移动设备和系统安全方面发挥着重要的作用。未来,SELinux将继续发展和改进,以应对不断增长的安全威胁。本节将讨论SELinux未来发展的三个方面:安全性的提升、与其他安全技术的整合以及开源社区的贡献和反馈。

6.1 安全性的不断提升

随着安全威胁的不断演变和增长,SELinux将不断提升其安全性能力,以应对新的攻击和漏洞。以下是一些SELinux未来可能采取的措施:

  1. 改进策略规则:SELinux可以通过加强策略规则和验证机制,提升安全性能力。这包括改进标签定义、访问规则和安全上下文等方面,以减少潜在的漏洞和权限滥用。

  2. 持续的安全审计和监控:SELinux可以加强安全审计和监控功能,持续记录应用程序和系统组件的访问请求和操作。通过分析和检测异常行为,SELinux可以及时采取相应的措施,提升系统的安全性。

示例代码:

# 开启SELinux的审计功能
setenforce 1# 查看SELinux审计日志
cat /var/log/audit/audit.log

6.2 与其他安全技术的整合

为了更好地应对复杂的安全威胁,SELinux将与其他安全技术进行整合,共同构建多层次的安全防护体系。以下是一些可能的整合方式:

  1. 与容器技术的整合:SELinux可以与容器技术(如Docker、Kubernetes)进行整合,提供更强大的容器隔离和沙盒化能力。通过结合SELinux的细粒度访问控制和容器技术的隔离机制,可以更好地保护容器环境和应用程序的安全。

  2. 与人工智能和机器学习的整合:SELinux可以与人工智能和机器学习技术进行整合,实现自动化的安全策略生成和管理。通过分析大量的安全数据和行为模式,SELinux可以自动学习和适应不断变化的安全威胁,提供更智能化的安全防护能力。

6.3 开源社区的贡献和反馈

作为开源项目,SELinux的发展离不开广大开源社区的贡献和反馈。开源社区可以通过以下方式参与SELinux的发展:

  1. 提交问题和反馈:开源社区成员可以积极提交问题和反馈,包括安全漏洞、性能问题和用户体验等方面。这些反馈将有助于SELinux团队及时发现和修复问题,提高系统的稳定性和安全性。

  2. 参与代码贡献:开源社区成员可以积极参与SELinux的代码开发和改进。他们可以提交新功能、修复漏洞、改进文档等,共同推动SELinux的发展。

  3. 分享经验和最佳实践:开源社区成员可以分享使用SELinux的经验和最佳实践,帮助其他人更好地理解和应用SELinux。这有助于扩大SELinux的影响力和应用范围。

总之,SELinux作为一种强制访问控制(MAC)机制,在移动设备和系统安全方面发挥着重要的作用。未来,SELinux将继续提升其安全性能力,通过改进策略规则和加强安全审计等措施应对安全威胁。同时,SELinux还将与其他安全技术进行整合,构建多层次的安全防护体系,如与容器技术和人工智能的整合。开源社区的贡献和反馈对SELinux的发展至关重要,包括提交问题和反馈、参与代码贡献以及分享经验和最佳实践等。通过共同努力,SELinux将不断发展和完善,提供更强大的安全保护能力。

7. Android SEPolicy

AOSP的sepolicy目录位于system/sepolicy, 包含 Android SELinux 策略配置的核心内容。
它定义了适用于所有设备的 AOSP 服务和应用程序的域和类型。设备特定的策略应该放在一个单独的 device/<vendor>/<board>/sepolicy 子目录下,并链接到策略构建中,如下所述。

7.1 策略生成

每个设备都可以添加额外的策略文件到策略构建中。这些文件中的每一行,包括最后一行,都应该以换行符 (0x0A) 结尾。这将允许文件在构建过程中调用 m4(1) 宏处理器时连接和处理。添加换行符也会使中间文本文件更容易在调试构建失败时进行阅读。文件、服务和属性上下文文件集将自动在每个文件之间插入换行符,因为这些是常见的失败点。

这些设备策略文件可以通过使用 BOARD_VENDOR_SEPOLICY_DIRS 变量进行配置。该变量应该在设备或供应商目录下的 BoardConfig.mk 文件中设置。

BOARD_VENDOR_SEPOLICY_DIRS 包含一个目录列表,用于搜索额外的策略文件。顺序在列表中很重要。例如,如果您在 BOARD_VENDOR_SEPOLICY_DIRS 搜索路径中有 2 个 widget.te 文件实例,则找到的第一个文件(在包含文件的第一个搜索目录中)将首先连接起来。查看 out/target/product/<device>/obj/ETC/vendor_sepolicy.conf_intermediates/vendor_sepolicy.conf 将有助于解决排序问题。

示例 BoardConfig.mk 用法:
从 Tuna 设备的 BoardConfig.mkdevice/samsung/tuna/BoardConfig.mk

    BOARD_VENDOR_SEPOLICY_DIRS += device/samsung/tuna/sepolicy

除了供应商 sepolicy 目录之外,OEM 还可以修改 product 和 system_ext 分区的公共和私有策略:

SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS += device/acme/roadrunner-sepolicy/systemext/public
SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS += device/acme/roadrunner-sepolicy/systemext/private
PRODUCT_PUBLIC_SEPOLICY_DIRS += device/acme/roadrunner-sepolicy/product/public
PRODUCT_PRIVATE_SEPOLICY_DIRS += device/acme/roadrunner-sepolicy/product/private

旧的 BOARD_PLAT_PUBLIC_SEPOLICY_DIRBOARD_PLAT_PRIVATE_SEPOLICY_DIR 变量已被弃用,改为使用 SYSTEM_EXT_*

此外,OEM 还可以指定 BOARD_SEPOLICY_M4DEFS,以在构建过程中传递任意的 m4 定义。定义由形如 macro-name=value 的字符串组成。不能包含空格。这对于构建模块化策略、策略生成、条件文件路径等非常有用。它支持以下文件类型:

  • 所有传递给 checkpolicy*.te 和 SELinux 策略文件
  • file_contexts
  • service_contexts
  • property_contexts
  • keys.conf

示例 BoardConfig.mk 用法:

    BOARD_SEPOLICY_M4DEFS += btmodule=foomatic \btdevice=/dev/gps

特定策略文件信息

mac_permissions.xml

mac_permissions.xml 文件用于控制 mmac 解决方案,并将公共的十六进制签名密钥映射到任意 seinfo 字符串。该文件的内容细节可以在文件顶部的注释中找到。前面提到的 seinfo 字符串是在 seapp_contexts 中引用的相同字符串。

值得注意的是,最终处理的版本将剥离注释和空格。这是为了在 system.img 上保留空间。如果想以更人性化的格式查看它,可以使用 tidyxmllint 命令。

insertkeys.py

是一个辅助脚本,用于将 mac_permissions.xml 签名标记中的任意标签映射到 pem 文件中找到的公钥。此脚本需要一组 mac_permissions.xml 文件和配置文件才能运行。有关配置文件 (keys.conf) 的详细信息可以在 keys.conf 子部分中找到。该工具还负责在处理过程中剥离注释和空格。

keys.conf

keys.conf 文件用于控制在 mac_permissions.xml 签名标记中找到的“标签”与在 pem 文件中找到的实际公钥之间的映射。该配置文件通过 m4 处理。

该脚本允许将任何包含在 TARGET_BUILD_VARIANT 中的字符串与特定路径映射到 pem 文件。通常,TARGET_BUILD_VARIANT 是用户、开发或用户调试。此外,可以指定“ALL”以将路径映射到 TARGET_BUILD_VARIANT 中指定的任何字符串。所有标签都会逐字匹配,所有选项都会匹配小写字母。选项会自动转换为小写字母,它们应该以大写字母表示标签和选项,并以 @ 开头。选项参数还可以使用环境变量,例如 $VARIABLE 语法。这通常对于设置位置到发布密钥非常有用。

通常,您需要集成由另一个组织签名的应用程序,并可能需要提取 pem 文件以供 insertkeys/keys.conf 工具使用。可以通过 openssl 提取 pem 格式的公钥。首先需要解压 apk,一旦解压完成,进入 META_INF 目录,然后执行以下命令:

    openssl pkcs7 -inform DER -in CERT.RSA -out CERT.pem -outform PEM  -print_certs

在某些情况下,CERT.RSA 可能具有不同的名称,您需要进行调整。提取 pem 后,您可以重命名它,并配置 keys.confmac_permissions.xml 以获取更改。您必须在文本编辑器中打开生成的 pem 文件并删除剪切线之外的任何内容。否则,会导致 insertkeys.py 抛出编译时问题。

**注意:**pem 文件是 base64 编码的,PackageManagerService、mac_permissions.xml 和 setool 都使用 base16 编码。

8. 结论

8.1 SELinux的重要性和优势

在本文中,我们详细讨论了SELinux的重要性和优势。作为一种强制访问控制(MAC)机制,SELinux为移动设备和系统提供了强大的安全保护能力。通过细粒度的访问控制和策略规则,SELinux可以限制应用程序和用户的权限,并防止未经授权的访问和操作。这可以有效减少恶意软件和攻击者对移动设备的威胁。

SELinux的优势还体现在以下几个方面:

  1. 阻止特权升级:SELinux的强制访问控制机制可以阻止特权升级攻击。即使攻击者成功获取了某个应用程序的权限,他们仍然无法越过SELinux的限制,进而对系统进行更深层次的攻击。

  2. 限制应用程序权限:SELinux可以限制每个应用程序的权限范围,避免应用程序滥用权限。这有助于提高系统的整体安全性,减少潜在的漏洞和攻击面。

  3. 支持多用户环境:SELinux可以在多用户环境中提供更强大的安全隔离和保护。不同用户之间的应用程序和数据可以被有效隔离,避免信息泄露和跨用户攻击。

# 查看SELinux状态
sestatus# 修改指定应用程序的访问策略
semanage permissive -a <application_name># 查看应用程序的安全上下文
ls -Z <file_path>

8.2 移动设备安全的前景进行展望

随着移动设备的普及和依赖程度的增加,对移动设备安全的需求也在不断提升。SELinux作为一种强制访问控制机制,将在移动设备安全中发挥更重要的作用。未来,我们可以期待以下几个方面的发展:

  1. 更细粒度的访问控制:随着移动设备应用程序的复杂性增加,对访问控制的要求也会变得更加细粒度。未来的SELinux将提供更多的策略规则和定制选项,以满足不同应用程序和用户的安全需求。

  2. 强化容器化安全:移动设备上的容器化技术(如Docker、Kubernetes)正在快速发展,未来的SELinux将与这些技术进行更紧密的整合,提供更强大的容器隔离和安全保护能力。

  3. 自适应的安全策略:随着人工智能和机器学习技术的发展,未来的SELinux将能够自动学习和适应不断变化的安全威胁。它可以通过分析大量的安全数据和行为模式,自动生成和调整安全策略,提供更智能化的安全防护能力。

总之,SELinux作为强制访问控制机制在移动设备安全中发挥着重要作用。它可以阻止特权升级攻击、限制应用程序权限,并提供多用户环境下的安全隔离。在未来,我们可以期待SELinux提供更细粒度的访问控制、强化容器化安全以及自适应的安全策略。随着移动设备的普及和安全需求的增加,SELinux将在移动设备安全中扮演更重要的角色。

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

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

相关文章

Android14之Selinux报错:unknown type qemu_device at token (一百八十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

PyTorch使用

前言 系统环境&#xff1a;win10 使用Anaconda&#xff0c;Anaconda的安装自行百度。 conda 23.7.4 目录 前言 创建虚拟环境 1、查看当前有哪些虚拟环境 2、创建虚拟环境pytorch 3、激活及关闭pytorch虚拟环境 4、删除pytorch虚拟环境 使用yolov5测试 1、切换至yolo…

ubuntu离线安装k8s

目录 一、前期准备 二、安装前配置 三、安装docker 四、安装cri-dockerd 五、部署k8s master节点 六、整合kubectl与cri-dockerd 七、网络等插件安装 八、常见问题及解决方法 一、前期准备 ①ubuntu系统 本地已安装ubuntu系统&#xff0c;lsb_release -a命令查看版本信…

《vtk9 book》 官方web版 第3章 - 计算机图形基础 (2 / 6)

3.4 表面特性 当光线穿过空间时&#xff0c;其中一些光线会与我们的物体相交。当这种情况发生时&#xff0c;光线会与物体表面相互作用&#xff0c;产生一种颜色。部分由此产生的颜色实际上并不是由直接光线产生的&#xff0c;而是来自其他物体反射或散射的环境光。环境光照模型…

物联网与智慧景区的未来:机遇与挑战并存

随着科技的不断发展&#xff0c;物联网技术在智慧景区中的应用越来越广泛&#xff0c;为旅游业带来了巨大的变革。然而&#xff0c;在物联网与智慧景区的未来发展中&#xff0c;机遇与挑战并存。本文将探讨物联网与智慧景区面临的机遇和挑战&#xff0c;并提出应对措施&#xf…

Spring框架——主流框架

文章目录 Spring(轻量级容器框架)Spring 学习的核心内容-一图胜千言IOC 控制反转 的开发模式Spring快速入门Spring容器剖析手动开发- 简单的 Spring 基于 XML 配置的程序课堂练习 Spring 管理 Bean-IOCSpring 配置/管理 bean 介绍Bean 管理包括两方面: Bean 配置方式基于 xml 文…

网络空间内生安全数学基础(2)——编码信道数学模型

目录 &#xff08;零&#xff09;这篇博客在干什么&#xff08;一&#xff09;内生安全与香农信道编码定理&#xff08;二&#xff09;基本定义&#xff08;三&#xff09;编码信道存在定理&#xff08;三.壹&#xff09;编码信道存在第一定理&#xff08;三.贰&#xff09;编码…

[python] 过年燃放烟花

目录 新年祝福语 一、作品展示 二、作品所用资源 三、代码与资源说明 四、代码库 五、完整代码 六、总结 新年祝福语 岁月总是悄然流转&#xff0c;让人感叹时间的飞逝&#xff0c;转眼间又快到了中国传统的新年&#xff08;龙年&#xff09;。 回首过去&#xf…

LLM - Qwen-72B LoRA 训练与推理实战

目录 一.引言 二.模型简介 1.Qwen-Model 总览 2.Qwen-Chat-72B - PreTrain - Tokenizer - Base Line - SFT / RLHF 3.Qwen-72 模型架构 - Config.json - c_attn/c_proj - Attention Forward - ROPE - Qwen MLP - Qwen Block 三.QLoRA 与 Infer 实战 1.SFT 指…

JavaScript鼠标拖放(Drag and Drop)

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 拖放是现代界面不可或缺的交互方式之一。本文将介绍如何用JavaScript…

【蓝桥杯冲冲冲】 [SCOI2005] 骑士精神

蓝桥杯备赛 | 洛谷做题打卡day28 文章目录 蓝桥杯备赛 | 洛谷做题打卡day28[SCOI2005] 骑士精神题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示题解代码我的一些话[SCOI2005] 骑士精神 题目描述 输入格式 第一行有一个正整数 T T T( T ≤ 10

随机森林超参数的网格优化(机器学习的精华--调参)

随机森林超参数的网格优化&#xff08;机器学习的精华–调参&#xff09; 随机森林各个参数对算法的影响 影响力参数⭐⭐⭐⭐⭐几乎总是具有巨大影响力n_estimators&#xff08;整体学习能力&#xff09;max_depth&#xff08;粗剪枝&#xff09;max_features&#xff08;随机…

系统架构设计师考试大纲2023

一、 考试方式&#xff08;机考&#xff09; 考试采取科目连考、 分批次考试的方式&#xff0c; 连考的第一个科目作答结束交卷完成后自动进 入第二个科目&#xff0c; 第一个科目节余的时长可为第二个科目使用。 高级资格&#xff1a; 综合知识科目考试时长 150 分钟&#xff…

使用goland IDE编写go windows ui

最近突发奇想&#xff0c;想实现一款工作节奏的提示安排小闹钟。那首先解决的就是UI。本人擅长go语言。那go在windows ui的探索肯定有人做过了吧。一查还真有&#xff0c;通过知乎&#xff0c;csdn等查到目前支持最好的就是walk库了。那走起试试。 一、拷贝go代码 将官网例子…

idea中找到所有的TODO

idea中找到所有的TODO &#xff08;1&#xff09;快捷键 Alt6 &#xff08;2&#xff09;View -> Tool Windows -> TODO

kafka客户端生产者消费者kafka可视化工具(可生产和消费消息)

点击下载《kafka客户端生产者消费者kafka可视化工具&#xff08;可生产和消费消息&#xff09;》 1. 前言 因在工作中经常有用到kafka做消息的收发&#xff0c;每次调试过程中&#xff0c;经常需要查看接收的消息内容以及人为发送消息&#xff0c;从网上搜寻了一下&#xff0…

css1基础选择器

大纲 一.标签选择器 比较简单&#xff0c;前面直接写目标标签 二.类选择器 应用 例子 三.多类名选择器&#xff08;调用时中间用空格隔开&#xff09; 四.id选择器 应用 五.通配符选择器 应用 六.总结

OpenResty 安装

安装OpenResty 1.安装 首先你的Linux虚拟机必须联网 1&#xff09;安装开发库 首先要安装OpenResty的依赖开发库&#xff0c;执行命令&#xff1a; yum install -y pcre-devel openssl-devel gcc --skip-broken2&#xff09;安装OpenResty仓库 你可以在你的 CentOS 系统中…

VUE开发记录

1、VUE模板传递参数到JS方法 <select-language :value"item.language" change"selectLanguage($event, key)"></select-language>selectLanguage(value, key){console.log(value, key) }, 2、Element框架el-form-item自定义label和内容 <…

2024 年 5 款适用于免费 iPhone 数据恢复的工具软件

搜索一下&#xff0c;你会发现许多付费或免费的iPhone数据恢复工具声称它们可以帮助你以很高的成功率找回所有丢失的数据。然而&#xff0c;这正是问题所在。真的很难做出选择。为了进一步帮助您解决数据丢失问题&#xff0c;我们在此列出了 5 款最好的免费 iPhone 恢复软件供您…