MINIO服务器是一款开源的对象存储系统,它模仿了亚马逊的S3云存储服务。在这个场景中,我们将探讨如何使用AWS S3 SDK(Software Development Kit)在C++中实现对MINIO服务器上的文件进行上传和下载。AWS S3 SDK为开发者提供了方便的API接口,可以轻松地在应用程序中集成S3服务。 我们需要理解C++中的对象模型和AWS SDK的使用。AWS SDK for C++提供了一组库,用于与Amazon Web Services进行交互。为了与MINIO服务器通信,我们需要包含相关的头文件并链接SDK库。 1. **初始化SDK**: 在C++程序开始时,我们需要初始化AWS SDK。这通常涉及设置AWS区域、身份验证凭据(Access Key ID和Secret Access Key)以及配置HTTP客户端。 ```cpp #include #include Aws::SDKOptions options; Aws::InitAPI(options); // 设置区域,例如:Aws::Region::US_EAST_1 Aws::Client::ClientConfiguration clientConfig; clientConfig.region = Aws::Region::US_EAST_1; // 创建S3客户端 std::unique_ptr s3Client = std::make_unique(clientConfig); ``` 2. **文件上传**: 使用S3 SDK的`PutObject`函数将本地文件上传到MINIO服务器。这个操作可能需要分片上传,特别是处理大文件时。分片上传可以提高上传效率和容错性。 ```cpp #include #include // 上传文件 void uploadFile(const std::string& bucketName, const std::string& key, const std::string& filePath) { Aws::S3::Model::PutObjectRequest putObjectRequest; putObjectRequest.WithBucket(bucketName).WithKey(key); std::ifstream file(filePath, std::ios::binary); putObjectRequest.SetBody(file); auto outcome = s3Client->PutObject(putObjectRequest); if (!outcome.IsSuccess()) { std::cerr << "Upload failed: " << outcome.GetError().GetMessage() << std::endl; } } ``` 3. **文件下载**: 下载文件则使用`GetObject`函数。同样,如果文件较大,SDK会自动处理分片下载。 ```cpp #include #include // 下载文件 void downloadFile(const std::string& bucketName, const std::string& key, const std::string& outputPath) { Aws::S3::Model::GetObjectRequest getObjectRequest; getObjectRequest.WithBucket(bucketName).WithKey(key); auto outcome = s3Client->GetObject(getObjectRequest); if (outcome.IsSuccess()) { std::ofstream outputFile(outputPath, std::ios::binary); outputFile << outcome.GetResult().GetBody().rdbuf(); outputFile.close(); } else { std::cerr << "Download failed: " << outcome.GetError().GetMessage() << std::endl; } } ``` 4. **分片上传**: 对于大文件,AWS S3 SDK支持Multipart Upload,即将文件分成多个部分并独立上传,然后合并这些部分。这在上传过程中提供了更好的错误恢复能力。 ```cpp #include #include #include // 分片上传 void multipartUpload(const std::string& bucketName, const std::string& key, const std::string& filePath) { // 创建Multipart上传 auto createOutcome = s3Client->CreateMultipartUpload(Aws::S3::Model::CreateMultipartUploadRequest().WithBucket(bucketName).WithKey(key)); if (!createOutcome.IsSuccess()) { std::cerr << "Create Multipart Upload failed: " << createOutcome.GetError().GetMessage() << std::endl; return; } auto uploadId = createOutcome.GetResult().GetUploadId(); // 分片并上传 std::ifstream file(filePath, std::ios::binary); long fileSize = file.seekg(0, std::ios::end).tellg(); file.seekg(0, std::ios::beg); const int partSize = 5 * 1024 * 1024; // 每个部分5MB for (int i = 0; i < fileSize / partSize; ++i) { Aws::S3::Model::UploadPartRequest uploadRequest; uploadRequest.WithBucket(bucketName).WithKey(key).WithUploadId(uploadId); uploadRequest.SetPartNumber(i + 1); uploadRequest.SetBody(std::make_shared(file)); auto uploadOutcome = s3Client->UploadPart(uploadRequest); if (!uploadOutcome.IsSuccess()) { std::cerr << "Upload Part " << i + 1 << " failed: " << uploadOutcome.GetError().GetMessage() << std::endl; return; } } // 完成Multipart上传 std::vector completedParts; for (int i = 0; i < fileSize / partSize; ++i) { completedParts.push_back(Aws::S3::Model::CompletedPart().WithPartNumber(i + 1).WithETag(uploadOutcome.GetResult().GetETag())); } Aws::S3::Model::CompleteMultipartUploadRequest completeRequest; completeRequest.WithBucket(bucketName).WithKey(key).WithUploadId(uploadId).WithCompletedParts(completedParts); auto completeOutcome = s3Client->CompleteMultipartUpload(completeRequest); if (!completeOutcome.IsSuccess()) { std::cerr << "Complete Multipart Upload failed: " << completeOutcome.GetError().GetMessage() << std::endl; } } ``` 请注意,实际应用中需要处理各种错误情况,并确保在完成上传或下载后正确清理资源。在上述代码示例中,我们仅展示了基本的上传和下载流程,实际项目中可能需要进行更复杂的错误处理和状态管理。 总结,MINIO服务器的文件上传和下载可通过AWS S3 SDK在C++中实现,利用SDK提供的功能如`PutObject`、`GetObject`、`CreateMultipartUpload`等,结合适当的错误处理和流操作,可以创建高效且可靠的文件存取程序。同时,对于大文件,分片上传能提供更好的性能和可靠性。
2025-10-25 19:19:05 5KB
1
谷歌官方下载分享 sdk-tools-windows-4333796.zip Windows Platform SDK 148 MB (155,992,763 bytes) SHA256: 1ca0c1474fae419b6b5e6396359259be4dd31469e51381237aa57bf3184f12fd This isn’t an installer, so just pick a folder to unzip it into. You will just find a “tools” folder in the zip. This contains the SDK Manager to install the rest of the Android SDK. I typically unzip it into the folder:
2025-10-24 16:12:55 148.77MB android sdk-tools-window android开发
1
这个是当时3d相机厂家自己提供的sdk,现在好像官网下载不到了。所以这里提供一下。
2025-10-22 20:06:54 7.08MB 3d相机
1
OpenXmlHelper是一个基于OpenXml SDK 2.0的辅助类库,专为处理Microsoft Office文档,特别是Excel工作簿的导入和导出而设计。在本文中,我们将深入探讨OpenXml SDK,OpenXmlHelper的主要功能,以及如何在Visual Studio 2012环境下使用这些工具进行开发。 OpenXml SDK(Software Development Kit)是由Microsoft提供的一个开源工具集,用于读取、创建、修改和保存使用Open XML文件格式的Office文档。Open XML是一种标准的文件格式,被广泛应用于Word、Excel和PowerPoint等Office应用程序。它允许开发者在不依赖Office应用程序的情况下,通过编程方式对文档进行操作。 OpenXmlHelper作为OpenXml SDK的一个扩展,简化了与OpenXml格式交互的复杂性。该帮助类库主要关注Excel的操作,提供了以下关键功能: 1. **Excel导出**:OpenXmlHelper可以将数据结构(如数据表或集合)快速转换为Excel工作簿格式。这在需要批量生成报表或数据分析时非常有用。通过提供自定义模板或自动创建布局,开发者可以轻松控制输出的工作表样式和内容。 2. **Excel导入**:同样,OpenXmlHelper也能从Excel文件中读取数据并将其映射到程序中的对象模型。这对于从用户输入或者已存在的数据文件中加载数据到应用程序非常方便。 3. **源码Demo**:提供的源码示例展示了如何使用OpenXmlHelper来实现上述功能,这对于初学者来说是一份宝贵的参考资料。通过学习这些示例,开发者可以快速掌握OpenXmlHelper的用法,并将其集成到自己的项目中。 在Visual Studio 2012环境下,开发者可以按照以下步骤使用OpenXmlHelper: 1. 安装OpenXml SDK 2.0:需要从Microsoft官方网站下载并安装OpenXml SDK,这会提供必要的dll文件和开发工具。 2. 引入OpenXmlHelper:将OpenXmlHelper类库添加为项目的引用,可以通过NuGet包管理器搜索并安装相关库,或者直接将源码文件添加到项目中。 3. 使用OpenXmlHelper:在代码中实例化OpenXmlHelper对象,然后调用其导出和导入方法,传入相应的数据和文件路径。 4. 调试与测试:利用Visual Studio的调试工具,检查代码执行效果,确保导出和导入的数据正确无误。 5. 自定义与扩展:根据项目需求,可以进一步定制OpenXmlHelper的功能,比如添加新的数据格式支持,优化性能,或者封装更复杂的Excel操作。 OpenXmlHelper是OpenXml SDK的一个强大补充,它极大地简化了开发人员在处理Excel文件时的工作,特别是在数据导入和导出方面。通过学习和应用OpenXmlHelper,开发者能够更高效地实现与Excel文档的交互,提升工作效率。
2025-10-22 09:45:07 8.59MB OpenXml SDK Excel导入 Excel导出
1
Java工商银行SDK开发-银企直连(对接demo)涉及到的是使用Java语言开发工商银行银企直连服务的应用程序接口(API)集成。银企直连是指企业直接通过网络与银行系统相连,实现资金划拨、账务查询等业务操作。这种服务模式可以使企业更高效地管理财务,减少手工处理的工作量,提高资金管理的实时性和准确性。 在进行Java工商银行SDK开发时,开发者需要使用工商银行提供的软件开发工具包(SDK),这个SDK包含了实现银企直连所需的所有类库、接口定义、示例代码以及相关的文档资料。通过SDK,开发者能够获得与工商银行接口对接的标准化程序,以便实现安全、稳定的业务流程自动化。 SDK中通常会包含以下几个关键组件: 1. API接口文档:详细描述了如何使用各个接口进行业务操作,包括请求参数、响应数据格式、接口功能描述、错误码说明等。 2. 类库文件:Java开发者需要将这些类库文件引入到自己的项目中,以便调用SDK提供的方法。 3. 示例代码:为开发者提供实际的编码示例,帮助理解如何使用SDK进行接口调用。 4. 安全机制:包括密钥管理、数字签名、加密传输等,确保交易数据的安全性。 企业使用Java工商银行SDK开发银企直连对接demo,通常需要关注以下几个方面: 1. 集成开发环境(IDE)配置:确保IDE支持Java开发,并配置好SDK相关类库。 2. 对接流程理解:深入理解银企直连的业务流程,包括但不限于登录认证、会话管理、业务请求与响应。 3. 数据处理:处理和转换业务数据,保证数据格式符合接口要求。 4. 异常处理:合理处理可能出现的异常情况,包括网络异常、业务异常等。 5. 安全合规:确保按照银行的安全规范进行开发,包括数据加密、签名验证等。 完成对接后,企业可以实现的功能包括但不限于: - 账户余额查询 - 资金转账 - 对账单查询 - 交易明细查询 在实际开发过程中,开发者需要严格遵循工商银行的开发规范,进行详尽的测试以确保开发的对接demo能够稳定运行。此外,还需要关注对接过程中的合规性问题,确保业务操作符合国家相关法律法规和银行内部规定。 SDK的使用并不是一蹴而就,开发者在开发过程中可能需要反复查阅文档、调试程序,并与银行方的技术支持进行沟通,以确保对接的正确性。 开发者在使用Java工商银行SDK开发银企直连对接demo的过程中,应当不断学习和总结,提高对接效率和质量,以满足企业日益增长的金融业务需求。同时,应关注工商银行的更新公告,及时更新SDK版本,适应可能的接口变更,确保系统的稳定运行。 此外,考虑到开发工作的复杂性,开发团队可能需要跨部门协作,包括前端开发者、后端开发者、测试工程师以及业务分析师等,以保证最终的对接demo能够覆盖全部的业务场景,满足企业的需求。 作为企业信息系统的组成部分,对接demo的稳定性和安全性至关重要。因此,在开发完成后,必须进行充分的测试,并在上线前进行必要的风险评估和合规审查,以确保对接demo的安全、稳定和合规。
2025-10-20 13:59:19 19KB Java 工商银行
1
Apache Groovy 是一个强大的、适用于Java平台的动态语言。它既支持静态类型也支持动态类型的编程,同时拥有多种语言特性,如脚本、面向对象、函数式编程和声明式编程。Groovy 2.4.9版本是对这门语言的一次重要更新,其中包含了诸多改进和新增特性。 Groovy 2.4.9在语法上做了一些优化,比如更好的字符串插值功能和改进的闭包支持。这些改进使得Groovy的语法更加直观、易读和易写。同时,对于函数式编程的支持也得到了增强,比如引入了更多的高阶函数,使得处理集合和数组变得更加方便。 在性能方面,Groovy 2.4.9也做出了显著的改进。通过改进JIT(Just-In-Time)编译器和运行时的优化,Groovy脚本的执行速度得到了提升。这对于使用Groovy进行大规模数据处理和复杂逻辑编写的开发者来说,能够明显感受到执行效率的提升。 在错误处理方面,Groovy 2.4.9增加了一些特性,以帮助开发者更好地管理代码中可能出现的异常。包括改进了异常的捕获和报告机制,以及扩展了异常处理相关的语法糖,使得代码在面对错误时更加健壮和易于维护。 除了语言本身,Groovy的生态系统也非常丰富。它有一个强大的标准库,提供了大量的API和工具来支持日常开发任务。Groovy 2.4.9版本中,标准库得到了进一步的增强,包括对XML处理、日期时间处理、网络编程等方面的API都进行了升级和优化。 Groovy也与Java完全兼容,这意味着Groovy代码可以直接调用Java代码和库。在Groovy 2.4.9版本中,这种互操作性得到了进一步加强,通过Groovy编写的应用程序可以无缝地利用Java生态系统的强大资源。 除此之外,Groovy还拥有一个非常活跃的社区,社区成员定期为语言和生态系统贡献代码。在Groovy 2.4.9的发布过程中,社区开发者也参与了代码审查和测试工作,确保了版本的稳定性和可靠性。 Groovy还广泛地应用于自动化测试领域,尤其是在软件开发中的测试驱动开发(TDD)和行为驱动开发(BDD)。Groovy 2.4.9版本继续强化了对测试框架的支持,提供了更丰富的测试工具和扩展点,帮助开发人员更加高效地编写和维护测试代码。 Groovy被设计为易于学习的语言,它的快速上手和简洁的语法使得初学者可以迅速投入实践。而其深厚的技术积累和面向未来的特性更新,又使得经验丰富的开发者也能从中受益。 Apache Groovy 2.4.9的发布,是一个对语言和生态系统的全面加强,它不仅提升了开发者的编码效率,也增加了语言的健壮性。对于想要探索Java生态的开发者,或者希望在现有Java项目中引入更加灵活和富有表现力的编程方式的开发团队来说,Groovy 2.4.9是一个不容忽视的更新。
2025-10-20 10:08:05 56.04MB
1
MTK7621与MT7628-SDK是MTK(联发科技)推出的应用处理器系统芯片(APSoC)软件开发工具包(SDK)。此SDK的版本为*.*.*.*,相关用户手册标题为《APSoCSDK*.*.*.*User’sManual》,由MediaTek公司发布。 从提供的文件内容中,我们可以了解到关于该SDK的一些关键知识点和注意事项: 1. 版权声明:文档明确指出了版权信息属于MediaTek公司,并且强调拥有该文档并不表示用户有使用、销售、设计或制造其中信息或软件的权利。任何未经MediaTek公司书面同意的复制、发布或泄露都是不允许的。 2. 专有信息和责任免除:文档中的敏感信息和限制性分布说明了所有包含在文档中的资料,如规格、产品特性、数据、源代码、目标代码、计算机程序、图表、电路图、技术知识、笔记、模型、报告、合同、时间表和样本,都属于MediaTek公司的专有信息(Proprietary Information)。MediaTek公司提供这些信息,但不提供任何形式的担保,无论是明示还是暗示。MediaTek公司不承担任何责任,包括但不限于不侵权、适用性、完整性、准确性、适合任何特定目的、功能性和有关专有信息的履行或交易过程中的任何担保。 3. 专有信息的使用限制:MediaTek公司保留了所有专有信息或其中包含的任何知识产权的所有权利、所有权或利益。专有信息不得全部或部分地被反编译、分解、复制、分发、再授权或向第三方披露,除非事先获得MediaTek公司的书面同意。 4. 更新与修订的权利:MediaTek公司保留随时更新或修订专有信息的权利,但不承担通知的义务。 5. 文档的敏感性和限制性:文档中强调包含了敏感信息,并且限制了其分布。 6. 保修和赔偿:文档声明不对专有信息的使用、性能或功能提供任何保证。MediaTek公司不承担因使用专有信息而导致的任何特殊、间接或后续损害的责任。 7. 联系信息:用户若有任何疑问,应当联系MediaTek公司。 需要注意的是,文档内容由于OCR扫描的原因,可能存在个别字识别错误或者漏识别的情况。在阅读和使用文档时,用户应充分理解这些条款和条件,并且在使用SDK时应遵循相应的操作规范和限制。 MTK7621与MT7628-SDK为开发者提供了开发平台和工具以设计和开发基于MTK处理器的解决方案,但开发者在使用该SDK前需要了解相关的法律约束和责任限制。MediaTek公司通过详细的用户手册与版权声明,确保了其知识产权得到保护,并提醒用户合理使用SDK中的资源,避免侵权行为。
2025-10-18 19:12:16 6.85MB
1
在电子海图显示功能的开发中,`Qt` 和 `ArcGIS SDK` 是两种关键的技术栈,它们在地理信息系统(GIS)应用中发挥着重要作用。本文将深入探讨这两个技术以及如何将它们结合来实现电子海图的显示。 `Qt` 是一个跨平台的应用程序开发框架,由 C++ 编写,广泛应用于桌面、移动和嵌入式系统。它提供了丰富的用户界面组件,如窗口、按钮、菜单等,同时也支持自定义图形绘制,这在构建电子海图显示界面时尤其重要。通过 Qt 的图形视图框架(QGraphicsView),开发者可以创建高效且灵活的2D图形渲染,包括地图和海图的展示。 `ArcGIS SDK` 是由 Esri 公司提供的软件开发工具包,专门用于构建地理空间应用程序。它包含了地图操作、地理处理、服务发布等功能,支持多种编程语言,如 .NET、Java 和 Python。在本项目中,ArcGIS SDK 提供了与地图数据交互的能力,包括加载地图服务、图层管理和地理定位等。 将 `Qt` 与 `ArcGIS SDK` 结合,可以实现以下功能: 1. **地图加载**:使用 ArcGIS SDK 加载在线或离线的地图服务,可以是 Esri 提供的公开地图服务,也可以是自定义的地理信息数据。 2. **海图显示**:通过 ArcGIS SDK 的地图图层功能,可以加载特定的海洋底图,展示航海相关的地理信息,如海岸线、航道、水深等。 3. **交互操作**:利用 Qt 的事件处理机制,可以实现地图的缩放、平移、旋转等操作,增强用户体验。 4. **地理定位**:集成 GPS 定位数据,实时更新船只位置,显示在电子海图上,提供导航辅助。 5. **图层管理**:通过 ArcGIS SDK,可以方便地添加、删除和管理不同图层,比如叠加气象信息、航行警告等。 6. **定制化功能**:Qt 允许开发者自定义界面元素,可以设计符合航海需求的控制面板,如航线规划、标记点设置、测量距离等。 7. **数据可视化**:结合 ArcGIS 的地理分析功能,可以对航海数据进行统计和可视化,例如船舶轨迹分析、危险区域预警。 8. **跨平台兼容性**:由于 Qt 的跨平台特性,开发的应用程序可以轻松部署在 Windows、Linux、macOS 或者移动设备上。 结合 `Qt` 和 `ArcGIS SDK` 开发的电子海图显示功能,能够提供专业且全面的海洋信息展示和交互,对于航海安全和效率提升具有显著价值。通过提供的 `bin` 文件,可能是编译好的可执行程序或者库文件,用户可以直接运行体验这个功能强大的应用。在实际开发中,需要具备 C++ 编程基础,熟悉 GIS 相关概念,并对 Qt 和 ArcGIS SDK 的 API 有深入理解。
2025-10-15 10:45:42 64.8MB gis arcgis
1
Gmsh 是一款在科学计算领域广受欢迎的开源三维有限元网格生成器和有限元前处理器。它由C++编写,并配有Python接口,支持多种操作系统,包括Windows。Gmsh可用于多种科学和工程问题的几何建模,网格划分,以及物理场的后处理分析。 Gmsh 的特点包括具备一个易于使用的图形用户界面(GUI),能够处理从简单的几何到复杂的工程几何结构。它还提供了一套完整的API,允许用户进行几何构造,网格生成,以及数据可视化等操作。Gmsh 的网格生成算法特别适合于生成有限元网格,它能够在复杂的几何模型中生成高质量的三角形、四边形、四面体和六面体网格。 Gmsh的最新版本4.14.0中,开发团队增强了软件的功能,提高了效率,优化了用户界面,并修复了部分已知问题。在Gmsh 4.14.0的改进中,包括了对几何建模算法的提升,如对曲线和曲面拟合的改进,以及对网格生成算法的优化,使得网格生成速度更快,质量更高。 Gmsh 提供了强大的脚本功能,用户可以通过编写脚本对软件进行定制化操作,例如使用内置的几何建模语言进行复杂的几何构造,或者使用内置的网格生成器控制网格的生成细节。此外,Gmsh 支持与其他软件工具的集成,如有限元分析软件(FEA),计算流体动力学(CFD)等,方便用户将Gmsh作为网格生成的环节集成到整个分析流程中。 在最新版本中,Gmsh还加强了其插件系统的功能,这允许第三方开发者为Gmsh开发额外的模块和插件,扩展其核心功能。这些插件可以是处理特定类型几何结构的工具,也可以是特定后处理功能的实现。Gmsh的社区活跃,拥有一个广泛的用户和开发者基础,经常有新的插件和功能被贡献到主软件中。 Windows版本的Gmsh特别为该操作系统进行了优化,提供了一个简洁的安装和配置过程,使得用户可以快速开始使用Gmsh进行科学计算和工程设计。其Windows版通常附带了所有必要的依赖库和工具链,无需用户进行复杂的配置。通过gmsh-4.14.0-Windows64-sdk.zip文件包,用户可以获得完整的Gmsh软件开发工具包(SDK),这包括了Gmsh的核心库,示例代码,开发文档以及API参考手册。 SDK工具包对于想要深入了解Gmsh内部机制的开发者来说,是一个宝贵的资源。它可以用来开发自定义的插件,进行二次开发,或者学习Gmsh的工作原理。此外,通过这个SDK,开发者也可以将Gmsh集成到他们的应用程序中,为用户提供更专业的网格生成解决方案。 Gmsh是一个功能强大,高度可定制,且跨平台的网格生成工具,其Windows版本的SDK提供了丰富的资源和工具,为科学家和工程师们提供了一个可靠且高效的网格处理环境。
2025-10-14 16:55:27 40.32MB gmsh
1
一个基于Java的文档查重比对SDK是一套软件开发工具包,它能够为开发者提供文档查重、相似性分析和内容比对等功能,适用于文本内容分析、学术论文审查、知识产权检测以及版权保护等场景。这款SDK采用Java编程语言开发,能够嵌入到各种Java应用程序中,提供灵活的API接口供开发者调用。文档查重比对SDK的核心价值在于能够快速识别出文档中的重复内容,帮助用户判断文本的原创性,避免知识产权侵权,提高工作效率。 文档查重比对SDK的工作原理通常涉及以下几个步骤:SDK会接收需要比对的文档数据,然后对文档内容进行预处理,包括分词、去除标点符号、停用词过滤等;提取文档特征,如关键词、句式结构等,进行初步的内容分析;接着,利用算法比对不同文档之间的相似度,计算文档间文本的重合度;生成查重报告,展示比对结果,指出文档中的重复或相似部分。 在使用文档查重比对SDK时,开发者可以根据自己的需求选择不同的查重策略和算法。常见的算法包括余弦相似度、Jaccard相似度、编辑距离等。每种算法在查重的准确性和速度上都有各自的优势和局限,因此开发者需要根据实际情况进行选择。SDK的使用通常需要一定的编程知识,尤其是在处理文本数据和算法实现方面。 文档查重比对SDK在很多领域都有广泛的应用。在学术领域,它可以帮助审查学术论文的原创性,避免抄袭;在出版行业,它可以用来检查图书内容是否存在重复出版的情况;在互联网公司,它能够辅助内容审核,确保发布的文章、评论等是独一无二的;在企业内部,它可以用来检测员工的工作报告、市场分析文档等是否存在重复内容,提高工作效率和文档质量。 一个基于Java的文档查重比对SDK为开发者提供了一种强大的工具,通过集成高级的文本分析技术,简化了文档查重比对的流程,使得检测文档相似度变得更加高效和准确。它不仅能够节省人力资源,还能在一定程度上防止知识产权的侵犯,具有非常重要的应用价值。
2025-10-14 14:32:14 544KB Java项目
1