当前位置: 首页 > news >正文

轻量级高性能Rust HTTP服务器库Hyperlane,助力现代网络服务开发

轻量级高性能Rust HTTP服务器库Hyperlane,助力现代网络服务开发

Hyperlane是一款专为简化网络服务开发而设计的轻量级、高性能Rust HTTP服务器库。它凭借纯Rust和标准库构建,实现了Windows、Linux和macOS全平台兼容,依托Tokio异步运行时,无需平台特定依赖即可带来无缝网络通信体验,为开发者打造现代Web服务提供了高效便捷的解决方案。

核心功能与特性

Hyperlane支持丰富的功能,能够满足多样化的开发需求。它具备HTTP请求解析与响应构建能力,轻松处理网络请求与返回。支持TCP通信及重定向功能,为基础网络服务提供坚实支撑。同时,提供请求与响应中间件机制,让开发者可以灵活地对请求和响应进行预处理和后处理。还支持WebSocket和Server-Sent Events(SSE),助力实现灵活高效的实时通信场景。

快速上手与使用示例

安装

使用Hyperlane非常简单,只需在终端运行以下命令即可添加该库:

cargo add hyperlane

快速开始项目

我们提供了便捷的快速开始项目,您可以通过以下命令克隆项目:

git clone https://github.com/eastspire/hyperlane-quick-start.git

进入项目后,可参考官方文档进行运行和管理,轻松启动服务。

代码示例

以下是一个完整的使用示例,展示了中间件、路由处理和WebSocket路由等功能的实现:

use hyperlane::*;async fn request_middleware(ctx: Context) {let socket_addr: String = ctx.get_socket_addr_or_default_string().await;ctx.set_response_header(SERVER, HYPERLANE).await.set_response_header(CONNECTION, CONNECTION_KEEP_ALIVE).await.set_response_header(CONTENT_TYPE, content_type_charset(TEXT_PLAIN, UTF8)).await.set_response_header(DATE, gmt()).await.set_response_header("SocketAddr", socket_addr).await;
}async fn response_middleware(ctx: Context) {let _ = ctx.send().await;let request: String = ctx.get_request_string().await;let response: String = ctx.get_response_string().await;ctx.log_info(&request, log_handler).await.log_info(&response, log_handler).await;
}async fn root_route(ctx: Context) {ctx.set_response_status_code(200).await.set_response_body("Hello hyperlane => /").await;
}async fn websocket_route(ctx: Context) {let request_body: Vec<u8> = ctx.get_request_body().await;let _ = ctx.send_response_body(request_body).await;
}#[tokio::main]
async fn main() {let server: Server = Server::new();server.host("0.0.0.0").await;server.port(60000).await;server.enable_nodelay().await;server.log_dir("./logs").await;server.enable_inner_log().await;server.enable_inner_print().await;server.log_size(100_024_000).await;server.http_line_buffer_size(4096).await;server.websocket_buffer_size(4096).await;server.request_middleware(request_middleware).await;server.response_middleware(response_middleware).await;server.route("/", root_route).await;server.route("/websocket", websocket_route).await;let test_string: String = "Hello hyperlane".to_owned();server.route("/test/:text",future_fn!(test_string, |ctx: Context| {let param: RouteParams = ctx.get_route_params().await;println_success!(format!("{:?}", param));println_success!(test_string);panic!("Test panic");}),).await;server.run().await.unwrap();
}

卓越性能表现

Hyperlane在性能方面表现出色,通过以下压测数据可见一斑:

wrk压测(360并发,60s请求)

  • 测试命令:wrk -c360 -d60s http://127.0.0.1:60000/
  • 结果:Hyperlane框架QPS为324323.71,优于Rocket框架、Rust标准库、Gin框架、Go标准库和Node标准库。

ab压测(1000并发,100w请求)

  • 测试命令:ab -n 1000000 -c 1000 -r -k http://127.0.0.1:60000/
  • 结果:Hyperlane框架QPS为307568.90,在同类框架中位居前列。

wrk压测(360并发,60s请求,关闭连接)

  • 测试命令:wrk -c360 -d60s -H "Connection: close" http://127.0.0.1:60000/
  • 结果:Hyperlane框架QPS为51031.27,领先于众多其他框架。

ab压测(1000并发,100w请求,不保持连接)

  • 测试命令:ab -n 1000000 -c 1000 -r http://127.0.0.1:60000/
  • 结果:Hyperlane框架QPS为51554.47,性能表现卓越。

社区与支持

Hyperlane基于MIT许可证授权,欢迎广大开发者贡献代码。您可以通过提交issue或创建pull request的方式参与项目建设。如有任何疑问或建议,请联系作者:root@ltpp.vip。

如果您正在寻找一款高效、易用且性能强劲的Rust HTTP服务器库,Hyperlane将是您的不二之选,快来体验吧!

GitHub地址
API文档
快速开始文档

推荐几款学习编程的免费平台

免费在线开发平台(https://docs.ltpp.vip/LTPP/)

       探索编程世界的新天地,为学生和开发者精心打造的编程平台,现已盛大开启!这个平台汇集了近4000道精心设计的编程题目,覆盖了C、C++、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3以及C#等众多编程语言,为您的编程学习之旅提供了一个全面而丰富的实践环境。       
      在这里,您不仅可以查看自己的代码记录,还能轻松地在云端保存和运行代码,让编程变得更加便捷。平台还提供了私聊和群聊功能,让您可以与同行们无障碍交流,分享文件,共同进步。不仅如此,您还可以通过阅读文章、参与问答板块和在线商店,进一步拓展您的知识边界。
       为了提升您的编程技能,平台还设有每日一题、精选题单以及激动人心的编程竞赛,这些都是备考编程考试的绝佳资源。更令人兴奋的是,您还可以自定义系统UI,选择视频或图片作为背景,打造一个完全个性化的编码环境,让您的编程之旅既有趣又充满挑战。

免费公益服务器(https://docs.ltpp.vip/LTPP-SHARE/linux.html)

       作为开发者或学生,您是否经常因为搭建和维护编程环境而感到头疼?现在,您不必再为此烦恼,因为一款全新的免费公共服务器已经为您解决了所有问题。这款服务器内置了多种编程语言的编程环境,并且配备了功能强大的在线版VS Code,让您可以随时随地在线编写代码,无需进行任何复杂的配置。
随时随地,云端编码
       无论您身在何处,只要有网络连接,就可以通过浏览器访问这款公共服务器,开始您的编程之旅。这种云端编码的便利性,让您的学习或开发工作不再受限于特定的设备或环境。
丰富的编程语言支持
       服务器支持包括C、C++、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3以及C#等在内的多种主流编程语言,满足不同开发者和学生的需求。无论您是初学者还是资深开发者,都能找到适合自己的编程环境。
在线版VS Code,高效开发
       内置的在线版VS Code提供了与本地VS Code相似的编辑体验,包括代码高亮、智能提示、代码调试等功能,让您即使在云端也能享受到高效的开发体验。
数据隐私和安全提醒
       虽然服务器是免费的,但为了保护您的数据隐私和安全,我们建议您不要上传任何敏感或重要的数据。这款服务器更适合用于学习和实验,而非存储重要信息。

免费公益MYSQL(https://docs.ltpp.vip/LTPP-SHARE/mysql.html)

       作为一名开发者或学生,数据库环境的搭建和维护往往是一个复杂且耗时的过程。但不用担心,现在有一款免费的MySQL服务器,专为解决您的烦恼而设计,让数据库的使用变得简单而高效。
性能卓越,满足需求
       虽然它是免费的,但性能绝不打折。服务器提供了稳定且高效的数据库服务,能够满足大多数开发和学习场景的需求。
在线phpMyAdmin,管理更便捷
       内置的在线phpMyAdmin管理面板,提供了一个直观且功能强大的用户界面,让您可以轻松地查看、编辑和管理数据库。
数据隐私提醒,安全第一
       正如您所知,这是一项公共资源,因此我们强烈建议不要上传任何敏感或重要的数据。请将此服务器仅用于学习和实验目的,以确保您的数据安全。

免费在线WEB代码编辑器(https://docs.ltpp.vip/LTPP-WEB-IDE/)

       无论你是开发者还是学生,编程环境的搭建和管理可能会占用你宝贵的时间和精力。现在,有一款强大的免费在线代码编辑器,支持多种编程语言,让您可以随时随地编写和运行代码,提升编程效率,专注于创意和开发。
多语言支持,无缝切换
       这款在线代码编辑器支持包括C、C++、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3以及C#在内的多种编程语言,无论您的项目需要哪种语言,都能在这里找到支持。
在线运行,快速定位问题
       您可以在编写代码的同时,即时运行并查看结果,快速定位并解决问题,提高开发效率。
代码高亮与智能提示
       编辑器提供代码高亮和智能提示功能,帮助您更快地编写代码,减少错误,提升编码质量。

免费二维码生成器(https://docs.ltpp.vip/LTPP-QRCODE/)

       二维码(QR Code)是一种二维条码,能够存储更多信息,并且可以通过智能手机等设备快速扫描识别。它广泛应用于各种场景,如:
企业宣传
       企业可以通过二维码分享公司网站、产品信息、服务介绍等。
活动推广
       活动组织者可以创建二维码,参与者扫描后可以直接访问活动详情、报名链接或获取电子门票。
个人信息分享
       个人可以生成包含联系方式、社交媒体链接、个人简历等信息的二维码。
电子商务
       商家使用二维码进行商品追踪、促销活动、在线支付等。
教育
       教师可以创建二维码,学生扫描后可以直接访问学习资料或在线课程。
交通出行
       二维码用于公共交通的票务系统,乘客扫描二维码即可进出站或支付车费。        功能强大的二维码生成器通常具备用户界面友好,操作简单,即使是初学者也能快速上手和生成的二维码可以在各种设备和操作系统上扫描识别的特点。

相关文章:

轻量级高性能Rust HTTP服务器库Hyperlane,助力现代网络服务开发

轻量级高性能Rust HTTP服务器库Hyperlane&#xff0c;助力现代网络服务开发 Hyperlane是一款专为简化网络服务开发而设计的轻量级、高性能Rust HTTP服务器库。它凭借纯Rust和标准库构建&#xff0c;实现了Windows、Linux和macOS全平台兼容&#xff0c;依托Tokio异步运行时&…...

PCB设计实践(二十四)PCB设计时如何避免EMI

PCB设计中避免电磁干扰&#xff08;EMI&#xff09;是一项涉及电路架构、布局布线、材料选择及制造工艺的系统工程。本文从设计原理到工程实践&#xff0c;系统阐述EMI产生机制及综合抑制策略&#xff0c;覆盖高频信号控制、接地优化、屏蔽技术等核心维度&#xff0c;为高密度、…...

VRRP 协议

一、前言 最近被问到一个VRRP的网络协议&#xff0c;一开始我是蒙蔽的状态&#xff0c;至于什么是VRRP&#xff0c;我后面查了一下&#xff0c;因为对于网络这方面我也不是很精通&#xff0c;见谅&#xff01; VRRP&#xff0c;全称叫虚拟路由冗余协议&#xff0c;是我孤陋寡闻…...

年度工作计划总结述职报告PPT模版一组分享

工作计划总结述职报告PPT模版&#xff1a;工作计划述职报告PPT模版https://pan.quark.cn/s/fba40a5e87da 第一套PPT模版是医院年度工作计划的封面页&#xff0c;有蓝橙配色、医院标题、年度工作计划的大字、英文副标题、汇报人信息和右上角的医院logo区域&#xff0c;右侧还有医…...

【容易坑】mybatis中使用if标签比较两个字符串是否相等

资料都来自于网络&#xff0c;这里只是记录一下&#xff0c;仅供参考 现象 上传参数确实为3&#xff0c;但是到了sql中还是2&#xff0c;很纳闷&#xff0c;确定不是上送参数的问题 问题解决 问题的关键点就在于为啥偏偏是2身上&#xff0c;仔细看一下sql语句&#xff0c;这个…...

AI与产品架构设计(7):实时数据驱动下的AI架构设计:从流数据到智能决策

实时数据驱动下的AI架构设计&#xff1a;从流数据到智能决策 一、引言&#xff1a;从静态智能到流式智能的革命性跨越 在AI演进的历程中&#xff0c;我们正经历着从"数据仓库时代"向"数据流时代"的范式迁移。传统AI系统依赖的离线批处理模式&#xff0c;…...

测试W5500的第4步_使用ioLibrary库创建UDP客户端和服务器端

从下载网络测试工具&#xff0c;经常会区分UDP客户端和UDP服务器端。其实这么区分&#xff0c;是不正确的。它区分&#xff0c;是因为担心使用的人不会配置&#xff0c;这是它这么设计的原因。 UDP(User Datagram Protocol&#xff0c;用户数据报协议)是一种简单的,无连接的传…...

六台升降台完整的限位保护逻辑

一、限位保护的核心逻辑 以下是实现限位保护功能的关键代码&#xff0c;集成在主控制程序中&#xff1a; // // 限位保护处理 - 集成在主程序中 // FOR i : 1 TO 6 DO// 读取限位状态&#xff08;从变频器状态字获取&#xff09;Lifts[i].UpperLimit : (Lifts[i].StatusWord …...

腾讯位置服务地点搜索开发指南

概述 提供多种搜索功能&#xff1a; 指定城市/区域搜索&#xff1a;如在北京搜索景点。新增高级参数&#xff1a;支持获取车站、机场、园区等较大范围地点的子点和出入口热度&#xff0c;辅助用户选择准确目的地。周边搜索&#xff1a;如&#xff0c;搜索颐和园附近半径500米内…...

101个α因子#12

(sign(delta(volume, 1)) * (-1 * delta(close, 1)))worldquant brain平台上调整后的语法&#xff1a; (sign(ts_delta(volume, 1)) * (-1 * ts_delta(close, 1)))这个alpha因子的逻辑可以分为以下几个步骤&#xff1a; 1. 计算成交量的变化方向&#xff1a;sign(ts_delta(vol…...

opencv_version_win32

很多人发了opencv的编译方法&#xff0c;很少见到启动和关闭了那些模块&#xff0c;现在发个WIN64 opencv编译后的信息。 执行opencv_version_win32.exe 因为显卡较老 2060 super, NVIDIA GPU arch: 75 80 86 87 89 90。至于更高的反本没有显卡因此不知道。 BLAS库使用效率较高…...

Flask 路由装饰器:从 URL 到视图函数的优雅映射

前置知识&#xff0c;关于Python装饰器的语法&#xff0c;链接&#xff1a;Python 装饰器&#xff1a;从“语法糖”到“代码神器”的深度解析 1、路由装饰器的功能&#xff1a;给 URL 贴 “功能标签” 在 Flask 开发中&#xff0c;你一定见过这样的代码&#xff1a; from fla…...

动态规划3、悟到核心

题目引入&#xff1a; #include <iostream> #include <queue> #include <vector> #include <tuple> #include <algorithm> #include <cstring> using namespace std;// dp[i]考虑前i家店能收获的最大价值 // 面对第i家店铺&#xff0c;你可…...

VLM-MPC:自动驾驶中模型预测控制器增强视觉-语言模型

《VLM-MPC: Model Predictive Controller Augmented Vision Language Model for Autonomous Driving》2024年8月发表&#xff0c;来自威斯康星大学的论文。 受视觉语言模型&#xff08;VLM&#xff09;的紧急推理能力及其提高自动驾驶系统可理解性的潜力的启发&#xff0c;本文…...

HTTP/HTTPS 协议浅解

文章目录 一、HTTP 协议&#xff08;一&#xff09;定义&#xff08;二&#xff09;特点&#xff08;三&#xff09;应用场景&#xff08;四&#xff09;优势&#xff08;五&#xff09;劣势 二、HTTPS 协议&#xff08;一&#xff09;定义&#xff08;二&#xff09;特点&…...

Ajax快速入门教程

输入java时&#xff0c;页面并没有刷新但是下面自动联想出了跟java有关的东西&#xff0c;像这种就叫异步交互 它不会妨碍你的输入&#xff0c;同时还能够同步进行对于java相关联想词的推送 发送异步请求需要借助工具axios 引入axios&#xff0c;可以直接在scripts中引入 get和…...

如何在Java中处理PDF文档(教程)

在开发文档管理系统、自动化工具或商业应用程序时&#xff0c;Java开发者常需处理PDF文档的编辑需求。无论是添加页面、调整内容尺寸、插入水印还是添加注释&#xff0c;选择一套可靠易用的Java PDF开发工具包至关重要。 JPedal&#xff08;Java PDF开发工具包&#xff09;的新…...

springcloud集成seata报错Error creating bean with name ‘globalTransactionScanner‘

1. pom文件引入依赖 <!-- seata --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId></dependency> 2. 报错 3. 在启动配置中添加一行配置: --add-opensjava.base/j…...

使用 OpenCV 实现哈哈镜效果:让图像“扭曲起来”!

在计算机视觉和图像处理领域&#xff0c;OpenCV 提供了非常强大的图像几何变换能力&#xff0c;不仅可以用于纠正图像&#xff0c;还能制造各种“有趣”的视觉效果。今天&#xff0c;我们就来实现一个经典的“哈哈镜”效果&#xff0c;让图像像在游乐园里一样被拉伸、压缩、扭曲…...

pikachu靶场 暴力破解

学习中参考的博客如下 pikachu靶场暴力破解专题-CSDN博客 1&#xff0c;基于表单的暴力破解 出现了一个登录页面 解题步骤&#xff1a;抓包&#xff0c;发到bp里&#xff0c;右键发到Intruder&#xff0c;因为有两个位置要爆破&#xff0c;所以选择集群炸弹攻击&#xff…...

鸿蒙开发:应用上架第三篇,配置签名信息打出上架包

前言 本文基于Api13 经过前面两篇文章&#xff0c;我们获取到了密钥和证书请求文件以及最终的发布证书和发布证书Profile文件&#xff0c;可以说&#xff0c;所有的签名信息文件&#xff0c;我们都已经完成了&#xff0c;正所谓&#xff0c;万事俱备只欠东风&#xff0c;这篇文…...

基于R语言的贝叶斯网络模型实践技术应用:开启科研新视角

在现代科研领域&#xff0c;变量间的因果关系推断是生态学、环境科学、医学等多学科研究的核心问题。然而&#xff0c;传统的统计学方法往往只能揭示变量间的相关关系&#xff0c;而非因果关系。贝叶斯网络作为一种结合图论与统计学理论的新型模型&#xff0c;不仅能够统合多种…...

第五章 GPT模块配置

由于GPT配置需要和Irq和Mcu进行配合设置(GPT可以由芯片外设中的GTM和GPT12实现,这次是以GTM为实现)。 1 GTM外设时钟配置 首先需要对MCU组件进行配置,配置GTM的时钟,需要参照GTM的CMU时钟树。 下图时钟树的CLS0_CLK为MCU(McuClockSettingConfig_0中的 McuSTMFrequency )f…...

虚拟机NAT模式获取不到ip

虚拟机NAT模式获取不到ip 如图所示 解决方案&#xff1a; 先查看NetworkManager是否启动 systemctl status NetworkManager如果没启动就启动一遍 使用DHCP手动获取一遍ip sudo dhclient ens33成功得到ip 这是后遇到了另一个问题&#xff0c;ip释放后&#xff0c;不能自动…...

Docker的网络介绍

网络简单介绍 在介绍 Docker 的网络模式之前&#xff0c;先简单说下我们在使用 Vmware 虚拟机中的网络模式&#xff0c;形成对比&#xff0c;更好理解。 1、Vmware 中的网络模式 1.1、VMnet0&#xff08;桥接模式&#xff09; 虚拟机通过宿主机的物理网卡直接连接到外部网络…...

Nginx负载均衡配置详解

在Nginx中配置负载均衡主要通过 upstream 模块实现,结合反向代理将请求分发到多个后端服务器。以下是详细配置步骤和案例解析: 一、基础配置 1. 配置语法 http {upstream backend_servers {# 负载均衡策略server backend1.example.com;server backend2.example.com;server …...

关于 Web 漏洞原理与利用:4. 文件上传漏洞

定义&#xff1a;文件上传漏洞是指应用程序允许用户上传文件&#xff0c;但没有严格校验上传文件的类型、内容、路径等属性&#xff0c;导致攻击者可以上传并执行恶意代码。 绕过方式&#xff1a; 前端绕过 1. 前端限制的原理 前端限制上传文件类型的常见方式有三种&#xf…...

(6)python爬虫--selenium

文章目录 前言一、初识selenium二、安装selenium2.1 查看chrome版本并禁止chrome自动更新2.1.1 查看chrome版本2.1.2 禁止chrome更新自动更新 2.2 安装对应版本的驱动程序2.3安装selenium包 三、selenium关于浏览器的使用3.1 创建浏览器、设置、打开3.2 打开/关闭网页及浏览器3…...

MCU 上电不启动的常见原因分析与排查思路

在开发过程中&#xff0c;“MCU 上电不运行”是我们经常遇到的问题之一。但客户对此类问题的描述往往较为模糊&#xff0c;仅简单表示“产品不工作”或“怀疑 MCU 没有运行”&#xff0c;这给我们现场排查带来了较大的挑战。即便工程师到达现场&#xff0c;往往也无法迅速定位问…...

Spark Core 源码关键环节的深度解析

以下是对 Spark Core 源码关键环节的深度解析&#xff0c;包括核心组件启动与调度机制、Shuffle与调度系统、RDD高级机制。每个环节都细化到具体方法、逻辑、源码片段&#xff0c;附有流程图思路与速记口诀&#xff0c;便于记忆和理解。 一、核心组件启动与调度机制 1. RpcEnv…...

net Core》》包与库 LibMan、NPM

LibMan 资料 NPM 资料 在 Visual Studio 中使用 npm package.json 保存之后 vs会自动下载的。 注意&#xff1a;如果您没有看到 node_modules 文件夹&#xff0c;请确保在 Visual Studio 解决方案资源管理器中启用了“显示所有文件”选项 要卸载该库&#xff0c;您只需从 …...

数学建模,机器决策人建模

目录 数学建模 微分方程 动态系统建模 时间序列分析 概述 指数衰减 随机漂移 总结 曲线拟合 最优化方法 梯度下降法 概率建模&#xff08;如贝叶斯建模、马尔可夫过程、MDP/POMDP&#xff09; 等 贝叶斯建模 贝叶斯定理 优势 马尔可夫过程 马尔可夫过程的分类…...

FFmpeg中使用Android Content协议打开文件设备

引言 随着Android 10引入的Scoped Storage&#xff08;分区存储&#xff09;机制&#xff0c;传统的文件访问方式发生了重大变化。FFmpeg作为强大的多媒体处理工具&#xff0c;也在不断适应Android平台的演进。本文将介绍如何在FFmpeg 7.0版本中使用Android content协议直接访…...

SQL查询, 响应体临时字段报: Unknown column ‘data_json_map‘ in ‘field list‘

Overridepublic AjaxResult list(AgentPageReqVO pageReqVO, Integer pageNo, Integer pageSize) {// 1. 查询数据库获取代理列表List<AgentDO> list agentMapper.selectPage(pageReqVO).getList();// 如果结果为空&#xff0c;直接返回空分页结果if (CollectionUtils.i…...

OpenCv高阶(十四)——LBPH人脸识别

文章目录 前言一、LBPH原理1. LBP&#xff08;局部二值模式&#xff09;特征提取2. 图像分块处理3. 生成直方图4. 人脸识别&#xff08;匹配阶段&#xff09;5. LBPH的特点6. 变种与优化 二、LBPH人脸识别简单实现&#xff08;一&#xff09;LBPH人脸识别1、图像读取&#xff0…...

C#开发利器:SharpBoxesCore全解析

SharpBoxesCore 是一个基于 C# 的开源开发工具库&#xff0c;旨在为开发者提供一系列常用功能模块和辅助类&#xff0c;以提高开发效率、减少重复代码编写&#xff0c;并增强项目的可维护性和扩展性。该库集成了多种实用工具类和通用扩展方法&#xff0c;适用于桌面应用、Web 项…...

回表是数据库概念,还是mysql的概念?

主键索引没有列&#xff0c;根据耳机索引去查主键索引&#xff0c;又没有查表&#xff0c;为啥叫回表呢&#xff1f; “回表”这个词&#xff0c;其实算是数据库里的一个通用概念&#xff0c;不过它最常见的应用场景是在 MySQL 的 InnoDB 引擎里&#xff0c;所以很多人一提起回…...

49、c# 能⽤foreach 遍历访问的对象需满足什么条件?

在 C# 中&#xff0c;要使用 foreach 循环遍历一个对象&#xff0c;该对象必须满足以下条件之一&#xff1a; 1. 实现 IEnumerable 或 IEnumerable 接口 非泛型版本&#xff1a;System.Collections.IEnumerable public class MyCollection : IEnumerable {private int[] _da…...

DL00987-基于深度学习YOLOv11的红外鸟类目标检测含完整数据集

提升科研能力&#xff0c;精准识别红外鸟类目标&#xff01; 完整代码数据集见文末 针对科研人员&#xff0c;尤其是研究生们&#xff0c;是否在鸟类目标检测中遇到过数据不够精准、处理困难等问题&#xff1f;现在&#xff0c;我们为你提供一款基于深度学习YOLOv11的红外鸟类…...

07 接口自动化-用例管理框架之pytest单元测试框架

文章目录 一、pytest用例管理框架&#xff08;单元测试框架&#xff09;二、pytest简介三、pytest的最基本的测试用例的规则四、运行方式1.主函数方式2.命令行方式3.通过pytest.ini的配置文件运行 五、pytest 默认执行测试用例的顺序六、跳过测试用例1.无条件跳过 pytest.mark.…...

Flutter 中 build 方法为何写在 StatefulWidget 的 State 类中

Flutter 中 build 方法为何写在 StatefulWidget 的 State 类中 在 Flutter 中&#xff0c;build 方法被设计在 StatefulWidget 的 State 类中而非 StatefulWidget 类本身&#xff0c;这种设计基于几个重要的架构原则和实际考量&#xff1a; 1. 核心设计原因 1.1 生命周期管理…...

多技术栈 iOS 项目的性能调试实战:从 Flutter 到 Unity(含 KeyMob 工具实测)

多技术栈 iOS 项目的性能调试实战&#xff1a;从 Flutter 到 Unity 随着移动端开发日趋多元化&#xff0c;iOS 项目中纯 Objective-C/Swift 已不再是唯一选择。越来越多团队采用 Flutter、React Native、Unity、WebView 混合等方案构建 App。这种“技术栈混合”带来灵活性的同…...

Base64加密解密

Base64 是一种基于 64 个可打印字符来表示二进制数据的编码方式&#xff0c;常用于需要通过文本协议传输二进制数据的场景&#xff08;如 URL、邮件&#xff09;。以下是不同场景下生成 Base64 编码的方法&#xff1a; 一、编程语言实现 Python import base64# 字符串转Base…...

程序设计基础----排序(2)

1、冒泡排序 #include <stdio.h>#define N 1000 int arr[N];/* 对长度为n的数组arr执行冒泡排序 */ void bubbleSort(int arr[], int n);/* 打印长度为n的数组arr */ void printArray(int arr[], int n);void swap(int *xp, int *yp) {int temp *xp;*xp *yp;*yp temp…...

C++:vector容器

vector容器与array容器相似&#xff0c;但vector容器是动态的&#xff0c;可以自动扩容。 使用方法和一些注意如下&#xff1a; #include<iostream> #include<vector> using namespace std;int main() {vector<char> vec { a,b,c,d };vec[4] e;//不能以此…...

十四、Hive 视图 Lateral View

作者&#xff1a;IvanCodes 日期&#xff1a;2025年5月20日 专栏&#xff1a;Hive教程 在Hive中&#xff0c;我们经常需要以不同于原始表结构的方式查看或处理数据。为了简化复杂查询、提供数据抽象&#xff0c;以及处理复杂数据类型&#xff08;如数组或Map&#xff09;&#…...

Frp Dockr Mysql内网映射

用 FRP 远程暴露 Mac mini 上的 Docker-MySQL&#xff08;含 Ubuntu frps 安装和 macOS 客户端配置&#xff09; 一、环境说明 服务器&#xff08;公网&#xff09;&#xff1a;Ubuntu 22.04 frps内网设备&#xff1a;macOS (Mac mini) frpc Docker MySQL目标&#xff1a;…...

PHP 扇形的面积(Area of a Circular Sector)

圆形扇区或圆形扇区是圆盘上由两个半径和一个圆弧围成的部分&#xff0c;其中较小的区域称为小扇区&#xff0c;较大的区域称为大扇区。让我们看看这个图&#xff0c;试着找出扇区&#xff1a; 在该图中&#xff0c;绿色阴影部分是扇形&#xff0c;“r”是半径&#xff0c;“th…...

物业后勤小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的物业后勤小程序源码&#xff0c;它为物业管理提供了高效便捷的解决方案。 该源码功能丰富&#xff0c;涵盖房屋认证、家人认证&#xff0c;保障社区居住安全&#xff1b;支持报事报修、装修申请&#xff0c;方便业主与物业沟通&#xff1b;还…...

git基础操作

当远程仓库迁移到一个新的组下面时&#xff0c;你需要在本地仓库中更新远程仓库的URL&#xff0c;以便与新的远程仓库关联。以下是详细步骤&#xff1a; 获取新的远程仓库URL&#xff1a; 首先&#xff0c;你需要从GitLab或相关平台获取新组下的仓库的新URL。通常&#xff0c;仓…...