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.mzph.cn/news/662852.shtml

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

相关文章

海洋鱼类检测7种YOLOV8NANO

【免费】海洋鱼类检测&#xff0c;7种类型&#xff0c;YOLOV8训练&#xff0c;转换成ONNX&#xff0c;OPENCV调用资源-CSDN文库 采用YOLOV8NANO训练模型&#xff0c;得到PT模型&#xff0c;然后转换成ONNX&#xff0c;供OPENCV的DNN调用&#xff0c;摆脱PYTORCH依赖&#xff0c…

算法设计与分析实验:最短路径算法

一、网络延迟时间 力扣第743题 本题采用最短路径的思想进行求解 1.1 具体思路 &#xff08;1&#xff09;使用邻接表表示有向图&#xff1a;首先&#xff0c;我们可以使用邻接表来表示有向图。邻接表是一种数据结构&#xff0c;用于表示图中顶点的相邻关系。在这个问题中&am…

轻松打造智能化性能测试监控平台:【JMeter+Grafana+Influxdb】的优化整合方案

在当前激烈的市场竞争中&#xff0c;创新和效率成为企业发展的核心要素之一。在这种背景下&#xff0c;如何保证产品和服务的稳定性、可靠性以及高效性就显得尤为重要。 而在软件开发过程中&#xff0c;性能测试是一项不可或缺的环节&#xff0c;它可以有效的评估一个系统、应…

C语言·贪吃蛇游戏(下)

上节我们将要完成贪吃蛇游戏所需的前置知识都学完了&#xff0c;那么这节我们就开始动手写代码了 1. 程序规划 首先我们应该规划好我们的代码文件&#xff0c;设置3个文件&#xff1a;snack.h 用来声明游戏中实现各种功能的函数&#xff0c;snack.c 用来实现函数&#xff0c;t…

探索Web3.0:下一代互联网的新篇章

随着技术的不断演进和社会的持续发展&#xff0c;我们正逐渐迈入Web3.0时代。Web3.0&#xff0c;作为下一代互联网的代名词&#xff0c;不仅仅是技术的进步&#xff0c;更是一种全新的数字化生态系统&#xff0c;其所带来的影响将深刻地改变着我们的生活、工作和交流方式。 什…

Java二维码图片识别

前言 后端识别二维码图片 代码 引入依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.2.1</version></dependency><dependency><groupId>com.google.zxing<…

tuya-open-sdk-for-device使用体验之Windows 下 MSYS2 编译 T2-U 开发板

tuya-open-sdk-for-device 是一款跨芯片平台、操作系统的 IoT 开发框架。它基于通用南向接口设计&#xff0c;支持 Bluetooth、Wi-Fi、Ethernet 等通信协议&#xff0c;提供了物联网开发的核心功能&#xff0c;包括配网&#xff0c;激活&#xff0c;控制&#xff0c;升级等&…

2024美赛A题完整思路代码分析:建立竞争机理方程+遗传算法优化

A题是自由度比较大的场景限定下的模型构建&#xff0c;相对比较容易&#xff0c;核心是找到现有的成熟的数学模型&#xff0c;然后找到合适的数据进行证明得到结论&#xff0c;估计大部分是目标优化问题。&#xff08;不限制专业&#xff09; B题属于较为经典的物理建模&#…

【竞技宝】LOL:Able小炮连续起跳收割战场 OMG2-0轻取TT

北京时间2024年2月2日&#xff0c;英雄联盟LPL2024春季赛在昨天迎来第二周第四个比赛日&#xff0c;本日首场比赛由TT对阵OMG。本场比赛&#xff0c;TT在前中期和OMG有来有回&#xff0c;然而中后期的大龙团战始终不是OMG的对手&#xff0c;最终OMG2-0轻取TT。以下是本场比赛的…

linux vim 异常退出 异常处理 交换文件

交换文件 *.swp 格式 同时是隐藏的 如在vim一个文件&#xff0c; 在没有正常退出&#xff0c; 如直接断开连接 在次编辑这个文件 会出现下图的错误 解决方案&#xff1a; 直接删除这个交换文件即可 rm -fr .zen.txt.swp

唐墓惊现石椁,文物预防性保护系统未雨绸缪

一、文物保护的急需解决和科技的支持 陕西省考古学会近日宣布&#xff0c;考古团队在西安揭开了唐睿宗李旦孙媳妇薛柔顺墓的神秘面纱&#xff0c;其中出土的一具完整石椁&#xff0c;雕刻精湛、线条流畅&#xff0c;实属罕见珍宝。唐代石椁本就稀少&#xff0c;此次发现更是为…

RK3588开发板Ubuntu与开发板使用U盘互传

1 将 U 盘(U 盘的格式必须为 FAT32 格式&#xff0c;大小在 32G 以下)插到开发板的 usb 接口&#xff0c;串口打印信息如下所示&#xff0c;U 盘的设备节点是/dev/sdb4。U 盘的设备节点不是固定的&#xff0c;根据实际情况来查看设备节点。 2 输入以下命令挂载 U 盘&#xff0c…

Leetcode—2670. 找出不同元素数目差数组【简单】

2024每日刷题&#xff08;一零七&#xff09; Leetcode—2670. 找出不同元素数目差数组 哈希表实现代码 class Solution { public:vector<int> distinctDifferenceArray(vector<int>& nums) {unordered_set<int> s;int n nums.size();vector<int&g…

Qwen-VL 技术报告总结

感谢如此优秀的开源工作,仓库链接 Qwen-VL 权重分为 Qwen-VL && Qwen-VL-Chat,区别文档稍后介绍 训练过程 在第一阶段中主要使用224X224分辨率训练,训练数据主要来源是公开数据集,经过清洗,数据总量大约是1.4B,中文数据和英文j训练目标是视觉语言和文本语言对齐。…

docker集成 nacos/nacos-server (包括踩的坑)

tips 这边需要的数据库我已经安装好了&#xff0c;所以数据库的安装这边已经省略了 拉取镜像&#xff08;这边使用nacos1.4.1作为例子&#xff09; docker pull nacos/nacos-server:1.4.1创建映射的文件夹 (conf存放配置文件&#xff0c;logs存放日志文件) mkdir -p /data/n…

MySQL索引的原理和SQL优化策略

1. 索引 在InnoDB存储引擎中&#xff0c;索引分为聚簇索引和辅助索引两种类型。 聚簇索引是指基于表的主键构建的索引&#xff0c;它决定了表中数据的物理存储顺序。也就是说&#xff0c;聚簇索引中的键值按照主键的顺序来排序&#xff0c;并且每个叶子节点存储的是整个表行的…

HAL库配置PWM模式

一、什么是PWM 脉冲宽度调制(PWM)&#xff0c;是英文“Pulse Width Modulation”的缩写&#xff0c;简称脉宽调制。通过控制高低电平在一个周期内的占比从而输出一定的电压。 向上计数原理介绍 ​PWM的一个周期 定时器从0开始向上计数 当0-t1段,定时器计数器TIMx_CNT值小于…

直播团队职责

一、内容策划 直播团队的内容策划人员是整个直播活动的核心&#xff0c;他们需要负责策划直播的主题、内容、形式以及时间安排等。同时&#xff0c;他们还需要负责邀请嘉宾、安排活动等&#xff0c;确保直播内容丰富、有趣、有价值。 二、主播管理 主播是直播活动的关键人物…

unity WebGL发布游戏生成WebGL

1.unty Hub中安装WEBGL支持 2.项目平台的切换 color space需要根据项目选择 ColorSpace&#xff0c;是指玩家设置的颜色空间。 伽马颜色空间是历史悠久的标准格式&#xff0c;但线性颜色空间渲染可提供更精确的结果。 具体区别&#xff1a;ColorSpace 3.由于没有自己服务器…

壹[1],Xamarin开发环境配置

1&#xff0c;环境 VS2022 注&#xff1a; 1&#xff0c;本来计划使用AndroidStudio&#xff0c;但是也是一堆莫名的配置让人搞得很神伤&#xff0c;还是回归C#。 2&#xff0c;MAUI操作类似&#xff0c;但是很多错误解来解去&#xff0c;且调试起来很卡。 3&#xff0c;最…