## OWASP Top 10等

  • OWASP Top 10:OWASP (Open Worldwide Application Security Project,开放全球应用程序安全项目) Top 10 是一份由全球安全专家定期更新的报告,列出了当前 Web 应用程序面临的十大最关键安全风险。 它是一个广受认可的意识文档,旨在帮助开发人员和安全专业人员识别和缓解常见的安全漏洞。

  • CWE (Common Weakness Enumeration):CWE(通用缺陷枚举)是一个由社区开发的软件和硬件弱点类型的分类系统和列表。 它为不同类型的安全缺陷提供了统一的、可识别的名称和描述,例如缓冲区溢出 (CWE-121) 或不当中和输入导致的跨站脚本 (CWE-79)。

  • SAST (Static Application Security Testing):静态应用安全测试 (SAST) 是一种白盒测试方法,它在不实际执行应用程序的情况下分析其源代码、字节码或二进制代码,以发现潜在的安全漏洞。 SAST 工具可以在软件开发生命周期的早期阶段(如编码和构建阶段)集成,帮助开发人员在代码层面识别和修复问题。

  • DAST (Dynamic Application Security Testing):动态应用安全测试 (DAST) 是一种黑盒测试方法,它在应用程序运行时通过模拟外部攻击来检测安全漏洞。 DAST 工具与正在运行的应用程序交互,发送各种输入并观察其响应,以识别诸如注入缺陷、服务器配置错误等问题,而无需访问源代码。

  • SCA (Software Composition Analysis):软件成分分析 (SCA) 是一种用于识别应用程序中使用的第三方和开源组件及其已知漏洞和许可证合规性问题的技术。 现代软件开发大量依赖开源库,SCA 工具通过扫描代码库,创建软件物料清单 (SBOM),并将这些组件与漏洞数据库进行比较,帮助管理这些依赖项带来的风险。

  • IAST (Interactive Application Security Testing):交互式应用安全测试 (IAST) 是一种结合了 SAST 和 DAST某些方面优势的测试方法。 IAST 工具通常通过在应用程序运行时环境中部署代理或传感器(插桩技术)来实时监控应用程序的内部行为、数据流和代码执行,从而在应用程序与测试工具(手动或自动)交互时识别漏洞。 IAST 能够提供关于漏洞在代码中具体位置的上下文信息,并减少误报。

### 怎么进行?

作为应用安全工程师,不需要从头编写这些应用安全工具 (SAST, DAST, SCA, IAST)本身,也不一定需要为它们编写大量的 Java 或 Python 代码来运行基础扫描。这些工具通常是商业或开源的现成软件。您的主要工作是:

  1. 配置和集成:将这些工具集成到软件开发生命周期 (SDLC) 和 CI/CD 管道中。

  2. 运行和分析:运行扫描,分析工具报告的漏洞。

  3. 漏洞管理:验证漏洞,确定优先级,并与开发团队协作修复。

  4. 规则定制:有时可能需要根据特定需求调整工具的扫描规则或策略,这可能涉及一些脚本编写或特定于工具的配置语言。

这些工具主要关注应用程序的安全性,因此既涉及后端代码(如 Java, Python, C++, Node.js, Ruby, Go),也可能涉及前端代码(如 JavaScript, TypeScript)。

以下是每种工具的解释、情景和可能的代码相关性:

1. SAST (Static Application Security Testing - 静态应用安全测试)
1. SAST(静态应用安全测试-静态应用安全测试)

  • 工作原理:在不运行代码的情况下分析应用程序的源代码、字节码或二进制代码,以查找潜在的安全漏洞。

  • 编程语言相关性:直接分析代码,因此与编写应用程序的语言强相关(例如,针对 Java 代码的 SAST 工具,针对 Python 代码的 SAST 工具等)。

  • 用户是否写代码

    • 通常不需要:您主要是配置工具,指定要扫描的代码库,然后运行扫描。

    • 可能需要

      • 编写自定义规则:某些 SAST 工具允许用户编写自定义规则来查找特定类型的漏洞或符合组织编码规范的问题。这可能需要使用工具特定的规则语言或通用脚本语言。

      • 集成脚本:将 SAST 工具集成到 CI/CD 管道(如 Jenkins, GitLab CI)时,可能需要编写脚本(如 Groovy, YAML, Shell 脚本)。

  • 情景与例子

    • 情景:开发人员提交了一段 Java Spring Boot 后端代码。CI/CD 管道自动触发 SAST 工具(如 SonarQube, Checkmarx, Veracode)对新代码进行扫描。

    • SAST 工具可能发现的漏洞(示例 - Java SQL 注入)

            // 易受攻击的代码 (Java)
      String userId = request.getParameter("userId");
      String query = "SELECT * FROM users WHERE id = '" + userId + "'"; // SQL注入漏洞
      Statement stmt = connection.createStatement();
      ResultSet rs = stmt.executeQuery(query);

      SAST 工具会标记 query 字符串的构建方式存在 SQL 注入风险,因为它直接拼接了用户输入。应用安全工程师会审查这个发现,确认其有效性,并建议开发人员使用参数化查询 (PreparedStatement) 来修复。

2. DAST (Dynamic Application Security Testing - 动态应用安全测试)

  • 工作原理:在应用程序运行时,通过模拟攻击者的行为从外部测试应用程序,发送恶意输入并观察响应,以发现漏洞。

  • 编程语言相关性:DAST 工具本身是语言无关的,因为它测试的是正在运行的应用程序的外部行为(通常是 Web 应用或 API)。它不关心应用程序是用什么语言编写的。

  • 用户是否写代码

    • 通常不需要:您配置工具指向目标应用程序的 URL,设置扫描范围、认证凭据(如果需要)等。

    • 可能需要

      • 自定义测试脚本:对于复杂场景或特定业务逻辑的测试,某些 DAST 工具(如 OWASP ZAP, Burp Suite Pro)允许用户编写脚本(通常使用 Python, JavaScript 或工具内置脚本语言)来定制测试请求或自动化特定攻击。

      • 认证脚本:如果应用程序有复杂的登录机制,可能需要编写脚本来帮助 DAST 工具进行身份验证。

  • 情景与例子

    • 情景:一个新的 Web 应用程序版本已部署到测试环境。应用安全工程师使用 DAST 工具(如 OWASP ZAP, Burp Suite Pro, Acunetix)对该应用程序进行扫描,以查找常见的 Web 漏洞,如 XSS、CSRF、SQL 注入等。

    • DAST 工具可能尝试的攻击(示例 - XSS 载荷)
      DAST 工具可能会向应用程序的输入字段(如搜索框、评论区)提交类似以下的载荷:

            <script>alert('XSS')</script>

3. SCA (Software Composition Analysis - 软件成分分析)
3.SCA(Software Composition Analysis——软件成分分析)

  • 工作原理:分析应用程序使用的第三方和开源组件(库、框架),以识别已知的漏洞、许可证合规性问题。

  • 编程语言相关性:与项目构建和依赖管理系统相关。例如,分析 Java 项目的 pom.xml (Maven) 或 build.gradle (Gradle),Python 项目的 requirements.txt 或 Pipfile,JavaScript 项目的 package.json。

  • 用户是否写代码

    • 通常不需要:您配置工具扫描项目的依赖文件或构建输出。

    • 可能需要

      • 集成脚本:将 SCA 工具(如 OWASP Dependency-Check, Snyk, Black Duck)集成到 CI/CD 管道。
        集成脚本:将 SCA 工具(如 OWASP Dependency-Check、Snyk、Black Duck)集成到 CI/CD 管道。

  • 情景与例子

    • 情景:一个 Python 后端项目使用了很多开源库。在构建过程中,SCA 工具会自动扫描项目的 requirements.txt 文件。

    • SCA 工具可能发现的问题(示例 - Python requirements.txt)
      假设 requirements.txt 中有:  比喻 requirements.txt 中有:

            requests==2.18.0
      Django==2.0.0

      SCA 工具会检查这些库的特定版本是否存在已知的 CVE(Common Vulnerabilities and Exposures)。如果 requests==2.18.0 有一个已知的安全漏洞,SCA 工具会报告它,并建议升级到修复了该漏洞的版本。应用安全工程师会评估风险并推动更新。

4. IAST (Interactive Application Security Testing - 交互式应用安全测试)

  • 工作原理:结合了 SAST 和 DAST 的一些特点。IAST 工具通过在应用程序运行时部署代理或传感器(插桩技术)来监控应用程序的内部行为、数据流和代码执行,从而在应用程序与测试工具(手动或自动)交互时识别漏洞。

  • 编程语言相关性:IAST 代理通常需要针对特定的运行时环境和语言(如 Java JVM, .NET CLR, Python 解释器, Node.js)。

  • 用户是否写代码

    • 通常不需要:主要工作是配置和部署 IAST 代理到应用程序服务器或运行时环境中。

    • 可能需要:配置脚本:为特定应用服务器或框架配置代理。

  • 情景与例子

    • 情景:一个 Java Web 应用程序在测试环境中运行,QA 团队正在对其进行功能测试。IAST 代理(如 Contrast Security, Checkmarx IAST)已部署到该应用程序的 JVM 中。

    • IAST 工具如何工作(概念性)
      当 QA 测试人员与应用程序交互时(例如,提交一个表单),IAST 代理会监控数据如何从用户输入流向后端代码,以及代码如何处理这些数据。
      如果用户输入 test' OR '1'='1 被用于构建一个 SQL 查询,并且 IAST 代理检测到这个输入未经适当清理就直接传递给了数据库执行层,它就能识别出这是一个 SQL 注入漏洞,并能提供精确到代码行号的上下文信息。


### OWASP Top 10有什么

  • 注入 (Injection):如果 OAuth 2.0 的授权服务器或客户端在处理重定向 URI (redirect_uri)、授权码 (authorization code)、访问令牌 (access token) 或其他参数时,没有对用户可控的输入进行严格的验证和清理,就可能受到注入攻击(如 SQL 注入、XSS 注入到错误页面等)。
    • 服务器端请求伪造 (SSRF):在某些 OAuth 2.0 流程中,如果服务器端需要根据客户端提供的参数(如重定向 URI 的一部分)去请求外部资源,且未做充分验证,可能导致 SSRF 漏洞。

    • 身份验证和授权失败 (Identification and Authentication Failures):虽然 OAuth 2.0 主要关注授权,但它通常与身份验证机制(如 OpenID Connect)结合使用。如果底层的身份验证机制薄弱,或者在 OAuth 2.0 流程中(如授权码许可流程)对客户端的身份验证不足,都可能导致安全问题。例如,授权码被窃取并在没有 PKCE (Proof Key for Code Exchange) 保护的情况下被恶意客户端使用。

    • 安全配置错误 (Security Misconfiguration):OAuth 2.0 的安全依赖于正确的配置。例如,授权服务器的端点(如授权端点、令牌端点)配置不当(如允许不安全的 HTTP、支持弱加密算法、重定向 URI 校验不严格允许开放重定向),或者客户端密钥 (client secret) 管理不善(如硬编码在客户端代码中、通过不安全的渠道传输)都属于安全配置错误。

    • 失效的访问控制 (Broken Access Control):OAuth 2.0 依赖于正确的范围 (scope) 管理和令牌验证。如果范围检查不严格,或者令牌(特别是访问令牌和刷新令牌)的存储、传输或验证过程存在漏洞(例如,令牌泄露、令牌未绑定到客户端、刷新令牌策略过于宽松),就可能导致攻击者越权访问受保护的资源。

    • CWE 提供了更细致的软件弱点分类。OWASP Top 10 中的每一项都可以映射到多个具体的 CWE。例如,“注入”可能对应 CWE-89 (SQL Injection)、CWE-79 (Cross-site Scripting) 等。在分析 OAuth 2.0 实现的安全性时,CWE 可以帮助更精确地描述和定位具体的代码缺陷。

  • SAST, DAST, SCA, IAST 与 OAuth 2.0 的关系:这些是用于发现和预防上述漏洞的工具和技术。

    • SAST (静态应用安全测试):可以用来分析实现 OAuth 2.0 流程的授权服务器、资源服务器和客户端应用程序的源代码。SAST 工具可以帮助发现编码层面的问题,例如:

      • 不安全的重定向 URI 处理逻辑。

      • 硬编码的客户端密钥或敏感信息。

      • 令牌验证逻辑中的缺陷。

      • 对输入参数(如 state 参数)的校验不足。

    • DAST (动态应用安全测试):可以在 OAuth 2.0 系统运行时进行测试,模拟攻击者的行为。DAST 工具可以尝试:

      • 操纵重定向 URI 看是否能实现开放重定向或窃取授权码/令牌。

      • 测试令牌端点是否容易受到暴力破解或参数篡改攻击。

      • 检查 state 参数是否能有效防止 CSRF 攻击。

      • 探测已知的 OAuth 2.0 漏洞模式。

    • SCA (软件成分分析):OAuth 2.0 的实现通常会依赖许多第三方库,例如用于处理 JWT (JSON Web Tokens)、HTTP 请求、加密操作等的库。SCA 工具可以扫描这些依赖项,识别其中已知的安全漏洞。如果 OAuth 2.0 实现依赖了一个存在漏洞的 JWT 库,那么整个授权流程的安全性就可能受到威胁。

    • IAST (交互式应用安全测试):可以在 OAuth 2.0 交互过程中,通过在应用程序运行时部署代理或传感器来监控内部数据流和代码执行。IAST 能够更精确地定位漏洞,例如在处理授权请求、令牌交换或令牌验证时发现数据泄露、逻辑错误或不安全的 API 调用。

  • ## Hadoop, Spark, Hive 的关系
    Hadoop, Spark, Hive 的关系
    • Hadoop:是一个基础的分布式系统架构,主要包含两大部分:HDFS (Hadoop Distributed File System) 用于分布式存储海量数据,以及 YARN (Yet Another Resource Negotiator) 用于集群资源管理和任务调度。早期 Hadoop 还包含 MapReduce 作为其核心计算框架。Hadoop 是大数据生态系统的基石。

    • Hive:是构建在 Hadoop 之上的数据仓库工具。它提供了一种类 SQL 的查询语言(HiveQL),允许用户查询和分析存储在 HDFS 或其他兼容存储系统(如 HBase)中的大规模数据集。Hive 会将 HiveQL 查询转换为 MapReduce任务(或其他计算引擎如 Spark 或 Tez 的任务)来执行。Hive 本身不存储数据,也不执行计算,它依赖 HDFS 进行存储,依赖计算引擎进行实际的数据处理。

    • Spark:是一个快速、通用、可扩展的集群计算系统。与 Hadoop MapReduce 主要进行批处理不同,Spark 支持多种计算模式,包括批处理、交互式查询 (Spark SQL)、实时流处理 (Spark Streaming/Structured Streaming)、机器学习 (MLlib) 和图计算 (GraphX)。Spark 的一个主要特点是基于内存计算,这使得它在许多情况下比 MapReduce 更快。Spark 可以从多种数据源读取数据,包括 HDFS、HBase、Cassandra 以及 Hive 表等,并可以将计算结果写回这些系统。

    三者关系总结

    • Hadoop 提供了分布式存储 (HDFS) 和资源管理 (YARN) 的基础平台。

    • Hive 利用 Hadoop HDFS 进行数据存储,并提供 SQL 接口将查询转换为底层的计算任务(如 MapReduce 或 Spark)。

    • Spark 是一个更先进、更快速的计算引擎,可以独立运行,也可以运行在 YARN 之上,并且可以处理存储在 HDFS 或 Hive 表中的数据。Spark 也可以作为 Hive 的一个执行引擎 (Hive on Spark)。

  • 它们与 SQL 的关系

    • Hadoop (HDFS/MapReduce):本身不直接提供 SQL 接口。MapReduce 是一种编程模型,需要用 Java、Python 等语言编写特定的 Map 和 Reduce 函数。

    • Hive:核心功能之一就是提供类 SQL (HiveQL) 的接口。用户可以使用熟悉的 SQL 语法来查询和操作数据,Hive 负责将这些 SQL 语句转换为底层的分布式计算任务。这大大降低了使用 Hadoop 生态系统进行数据分析的门槛。

    • Spark:包含一个名为 Spark SQL 的模块,它允许用户使用 SQL 或 DataFrame API 来处理结构化数据。Spark SQL 可以读取和写入多种数据源,包括 Hive 表。这意味着你可以用 SQL 查询 Hive 中的数据,并利用 Spark 的高性能计算能力。Spark SQL 兼容大部分 HiveQL 语法。

  • 情景下的例子

    假设一家电商公司需要分析其用户的购买行为,数据存储在HDFS中。

    1. 数据存储 (Hadoop HDFS)

      • 用户的原始日志数据(如点击流、订单记录等)以大规模文件的形式存储在 Hadoop HDFS 集群中。HDFS 负责将这些大文件切分成数据块,并分布式地存储在多个服务器节点上,确保数据的可靠性和可扩展性。

    2. 数据结构化与查询 (Hive)

      • 数据工程师使用 Hive 在 HDFS 的原始数据之上创建外部表 (External Table),定义数据的结构(schema),例如 orders 表包含 order_id, user_id, product_id, order_time, amount 等字段。

      • 业务分析师或数据科学家可以使用 HiveQL (类似 SQL 的语言) 来查询这些表,例如:

              SELECT product_id, COUNT(*) as purchase_count
        FROM orders
        WHERE order_time >= '2024-01-01' AND order_time < '2024-02-01'
        GROUP BY product_id
        ORDER BY purchase_count DESC
        LIMIT 10;

        这个查询会找出2024年1月份销量最高的前10个产品。Hive 会将这个 SQL 查询转换成一个或多个 MapReduce 任务(或者如果配置了,会转换成 Spark 任务)在 Hadoop 集群上执行。

    3. 高性能计算与复杂分析 (Spark)

      • 对于更复杂的分析任务,或者需要更高性能的场景(例如,迭代式的机器学习模型训练,或交互式数据探索),数据科学家可能会使用 Spark。

      • Spark SQL:可以直接读取 Hive 表或 HDFS 上的数据,并执行 SQL 查询,利用 Spark 的内存计算优势获得更快的查询速度。

              # 使用 PySpark
        from pyspark.sql import SparkSessionspark = SparkSession.builder.appName("PurchaseAnalysis").enableHiveSupport().getOrCreate()top_products_df = spark.sql("""SELECT product_id, COUNT(*) as purchase_countFROM ordersWHERE order_time >= '2024-01-01' AND order_time < '2024-02-01'GROUP BY product_idORDER BY purchase_count DESCLIMIT 10
        """)
        top_products_df.show()
        IGNORE_WHEN_COPYING_START
        忽略复制开始时
        content_copydownload
        Use code with caution.
        谨慎使用代码。Python
        IGNORE_WHEN_COPYING_END
      • Spark MLlib:数据科学家可以使用 Spark MLlib 库,基于 orders 表和其他用户数据(如用户画像表,也可能存储在 Hive 中)来训练一个产品推荐模型。这个过程可能涉及多次迭代计算和复杂的数据转换,Spark 的内存计算能力对此非常有利。

      • Spark Streaming:如果公司需要实时分析订单流,例如实时检测欺诈订单,可以使用 Spark Streaming 或 Structured Streaming 直接处理来自消息队列(如 Kafka)的实时订单数据,并进行即时分析和预警。

    在这个情景中:

    • Hadoop (HDFS) 充当了底层的大规模数据存储平台。

    • Hive 提供了一个方便的 SQL 接口,用于对存储在 HDFS 上的数据进行批处理查询和数据仓库管理。

    • Spark 则作为一个更强大的计算引擎,可以用于加速 SQL 查询 (Spark SQL),执行复杂的机器学习任务 (MLlib),或进行实时数据处理 (Spark Streaming),并且可以与 Hive 和 HDFS 无缝集成。

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

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

相关文章

NY197NY205美光闪存固态NY218NY226

NY197NY205美光闪存固态NY218NY226 美光科技作为全球领先的半导体存储解决方案供应商&#xff0c;其闪存固态硬盘&#xff08;SSD&#xff09;产品线一直备受业界关注。NY197、NY205、NY218和NY226是美光近期推出的几款重要固态硬盘型号&#xff0c;它们在性能、容量和适用场景…

MinHook 对.NET底层的 SendMessage 拦截真实案例反思

一&#xff1a;背景 1. 讲故事 上一篇我们说到了 minhook 的一个简单使用&#xff0c;这一篇给大家分享一个 minhook 在 dump 分析中的实战&#xff0c;先看下面的线程栈。 0:044> ~~[138c]s win32u!NtUserMessageCall0x14: 00007ffc5c891184 c3 ret 0:061&g…

qt配合海康工业相机取图开发

1.最近开发海康工业相机&#xff0c;做取图demo 2.在MVS运行目录下找到Development文件夹&#xff0c;找到下图两个文件夹一个是头文件一个是库文件 3.引用到qt项目中 4.下面是头文件跟源文件 头文件 #ifndef MVSCAMERA_H #define MVSCAMERA_H#include <QObject> #incl…

JavaScript基础学习与应用(后端了解部分)

JavaScript JavaScript原名liveScrip,由美国网景公司开发的一种用于对网页操作的脚本语言 脚本语言:(不需要编译 sql html css)由某种解释器直接解释运行的 JavaScript是一种解释性的脚本语言 JavaScript是网页的行为,可以为网页提供各种行为(图片操作) JavaScript一般一对…

Linux环境下安装和使用RAPIDS平台的cudf和cuml - pip 安装方法

‌ cuDF 和 cuML 是 RAPIDS平台 的两个核心组件&#xff0c;它们共同构成了RAPIDS平台的主要功能 1.linux环境下pip安装 pip install cuml-cu1224.6.0 --extra-index-urlhttps://pypi.nvidia.com 安装过程中可能会提示缺少包之类的&#xff0c;按提示进行包的缺失安装 2.安装…

基于 Redis 的幂等性设计:SpringBoot @Async 在高并发 MySQL 日志存储中的应用

一、问题描述 在高并发场景下,大量设备实时上报状态数据,需要异步保存到MySQL,同时需要解决幂等性校验和线程池耗尽问题。 二、解决方案 1. 幂等性控制 作用:确保同一请求无论执行多少次,结果都一致,避免重复处理。 实现方式: 唯一标识:设备ID + 时间戳组合Redis原…

ELK日志采集系统

ELK 日志采集系统指的是由 Elasticsearch、Logstash 和 Kibana 三个核心开源软件组成的套件&#xff0c;用于集中式日志的采集、处理、存储、搜索、分析和可视化。它现在更常被称为 Elastic Stack&#xff0c;因为其组件生态已经扩展&#xff08;尤其是引入了 Beats&#xff09…

什么是音频?

引言&#xff1a;声音的本质 什么是音频&#xff1f;振动与感知 音频&#xff0c;在其最核心的层面&#xff0c;即是我们通常所说的声音。它起源于物体的振动。这些振动扰动了其周围的介质&#xff08;例如空气或水&#xff09;&#xff0c;在介质中产生了微小的压力变化&…

接口 RESTful 中的超媒体:REST 架构的灵魂驱动

在 RESTful 架构中&#xff0c;** 超媒体&#xff08;Hypermedia&#xff09;** 是一个核心概念&#xff0c;它体现了 REST 的 “表述性状态转移&#xff08;Representational State Transfer&#xff09;” 的本质&#xff0c;也是区分 “真 RESTful API” 与 “伪 RESTful AP…

centos clamav 扫描及告警配置

centos clamav 扫描及告警配置 1 下载1.1官网下载1.2 在线下载2 配置3 扫描3.1 更新病毒库3.2 扫描4 告警4.1 安装 Postfix4.2 安装mail邮件工具4.3 配置4.4 发送告警邮箱信息5 定时配置(cronie)5.1 定时更新病毒库5.2 定时扫描1 下载 1.1官网下载 官网下载地址,下载rpm包…

华为WLAN概述知识点及案例试题

目录 &#x1f4d8; 华为WLAN概述知识点及案例总结✅ 一、WLAN技术背景&#x1f4cc; 为什么需要WLAN&#xff1f;&#x1f4cc; 应用趋势&#xff1a; ✅ 二、WLAN基本概念&#x1f4cc; WLAN定义&#x1f4cb; IEEE 802.11与Wi-Fi标准演进&#x1f4cb; 发展趋势&#xff08;…

MultiTalk 是一种音频驱动的多人对话视频生成模型

TL;DR&#xff1a;MultiTalk 是一种音频驱动的多人对话视频生成。它支持多人对话&#x1f4ac;、唱&#x1f3a4;歌、交互控制和&#x1f46c;卡通&#x1f64a;的视频创建。 视频演示 001.mp4 004.mp4 003.mp4 002.mp4 005.mp4 006.mp4 003.mp4 002.mp4…

实现无缝连接:EtherNet/IP转CANopen网关助力汽车制造智能化未来

在如今这个高度自动化的汽车制造行业&#xff0c;设备之间的互操作性变得越来越重要&#xff0c;在一条自动化装配线上&#xff0c;贝加莱的PLC和CANopen伺服驱动器以及通过EtherNet/IP转CANopen网关&#xff08;稳联技术的WL-EIP-COP&#xff09;紧密合作&#xff0c;带来了精…

音视频之H.264的句法和语义

系列文章&#xff1a; 1、音视频之视频压缩技术及数字视频综述 2、音视频之视频压缩编码的基本原理 3、音视频之H.264/AVC编码器原理 4、音视频之H.264的句法和语义 在编码器输出的码流中&#xff0c;数据的基本单位是句法元素。每个句法元素由若干比特组成&#xff0c;它表…

M - 中位数

Description 给定一个长度为 NN 的非负整数序列 AA&#xff0c;对于前奇数项求中位数。 Input 第一行一个正整数 NN。 第二行 NN 个正整数 A1…NA1…N​。 Output 共 ⌊N12⌋⌊2N1​⌋ 行&#xff0c;第 ii 行为 A1…2i−1A1…2i−1​ 的中位数。 Sample 1 InputcopyOu…

医疗耗材领域LCS4110R加密芯片应用

医疗器械和医美器械应用广泛&#xff0c;需求增加&#xff0c;发展迅速。医疗器械和医美器械的使用关系到人民群众的健康安全&#xff0c;以至于生命安全。假冒伪劣器械产品的混入导致对患者的健康危害&#xff0c;同时也损害了设备厂商的利益。防复制加密认证芯片LCS4110R应用…

数据结构与算法:贪心(一)

前言 有一说一贪心的题目真的ex,想不到就是想不到…… 一、贪心 贪心就是通过在过程中每次达到局部最优,从而在最后实现整体最优。贪心的题目经常要用到排序和堆。 越打cf越能感受到贪心的奇妙,很吃状态和灵感。解题的过程中往往依赖举大量例子,然后进行总结和归纳,然…

5、Spring AI(MCPServer+MCPClient+Ollama)开发环境搭建_第一篇

前言&#xff1a; 该开发环境是在 3、后端持久化&#xff08;SpringBoot3.5.0MybatisPlus3.5.5mysql8.4.0&#xff09;环境搭建 上进行改造的&#xff0c;用到了后端持久化&#xff0c;主要改造的地方为数据库把email字段改为height&#xff08;身高&#xff09;&#xff0c;…

个典型的 Java 泛型在反序列化场景下“类型擦除 + 无法推断具体类型”导致的隐性 Bug

今天遇到一个问题&#xff1a;一个典型的 Java 泛型在反序列化场景下“类型擦除 无法推断具体类型”导致的隐性 Bug&#xff0c;尤其是在 RPC&#xff08;如 Dubbo、Feign 等&#xff09;和 本地 JVM 内直连调用共存时&#xff0c;这种问题会显现得非常明显。 A 服务暴露了一…

开发指南121-微服务的弹性伸缩

平台的后台服务表现形式就是各种各样的微服务。微服务可以部署在不同的机器上。单一服务的伸缩很简单&#xff1a; 部署在不同机器上&#xff0c;直接启动关闭即可。 部署在同一机器上&#xff0c;可以复制为多个不同目录&#xff0c;其中jar包&#xff0c;启动文件是完全一样…