【量化交易编程源码】【夜播源码搭建】【聚合码系统源码】quic 源码

时间:2024-12-28 19:36:41 来源:nodejs项目demo源码 分类:娱乐

1.quic Դ?源码?
2.linux源码解读(三十二):dpdk原理概述(一)
3.Nginx 1.25配置QUIC和HTTP/3
4.不常见的内存与流量取证 -- WMCTF 2022 1!5!
5.几种常见的长连接实现方案
6.新一代网络协议有哪些

quic 源码

quic Դ??

       集成电路(IC)电子专业术语英汉对照加注解

       电子专业英语术语

       ★rchitecture(结构):可编程集成电路系列的通用逻辑结构。

       ★ASIC(Application Specific Integrated Circuit-专用集成电路):适合于某一单一用途的源码集成电路产品。

       ★ATE(Automatic Test EQUIPment-自动测试设备):能够自动测试组装电路板和用于莱迪思 ISP 器件编程的源码设备。

       ★BGA(Ball Grid Array-球栅阵列):以球型引脚焊接工艺为特征的源码一类集成电路封装。可以提高可加工性,源码减小尺寸和厚度,源码量化交易编程源码改善了噪声特性,源码提高了功耗管理特性。源码

       ★Boolean Equation(逻辑方程):基于逻辑代数的源码文本设计输入方法。

       ★Boundary Scan Test(边界扫描测试):板级测试的源码趋势。为实现先进的源码技术所需要的多管脚器件提供了较低的测试和制造成本。

       ★Cell-Based PLD(基于单元的源码可编程逻辑器件):混合型可编程逻辑器件结构,将标准的源码复杂的可编程逻辑器件(CPLD)和特殊功能的模块组合到一块芯片上。

       ★CMOS(Complementary Metal Oxide Semiconductor-互补金属氧化物半导体):先进的源码集成电路★加工工艺技术,具有高集成、源码低成本、低能耗和高性能等特征。CMOS 是现在高密度可编程逻辑器件(PLD)的理想工艺技术。

       ★CPLD(Complex Programmable Logic Device-复杂可编程逻辑器件):高密度的可编程逻辑器件,包含通过一个中央全局布线区连接的宏单元。这种结构提供高速度和可预测的性能。是实现高速逻辑的理想结构。理想的可编程技术是 E2CMOS?。

       ★Density (密度):表示集成在一个芯片上的逻辑数量,单位是门(gate)。密度越高,门越多,也意味着越复杂。

       ★Design Simulation(设计仿真):明确一个设计是否与要求的功能和时序相一致的过程。

       ★E2CMOS?(Electrically Erasable CMOS-电子可擦除互补金属氧化物半导体):莱迪思专用工艺。基于其具有继承性、可重复编程和可测试性等特点,因此是一种可编程逻辑器件(PLD)的理想工艺技术。

       ★EBR(Embedded BLOCk RAM-嵌入模块RAM):在 ORCA 现场可编程门阵列(FPGA)中的 RAM 单元,可配置成 RAM、只读存储器(ROM)、先入先出(FIFO)、内容地址存储器(CAM)等。

       ★EDA(Electronic Design Automation-电子设计自动化):即通常所谓的电子线路辅助设计软件。

       ★EPIC (Editor for Programmable Integrated Circuit-可编程集成电路编辑器):一种包含在 ★ORCA Foundry 中的低级别的图型编辑器,可用于 ORCA 设计中比特级的编辑。

       ★Explore Tool(探索工具):莱迪思的新创造,包括 ispDS+HDL 综合优化逻辑适配器。探索工具为用户提供了一个简单的图形化界面进行编译器的综合控制。设计者只需要简单地点击鼠标,就可以管理编译器的设置,执行一个设计中的类似于多批处理的编译。

       ★Fmax:信号的最高频率。芯片在每秒内产生逻辑功能的最多次数。

       ★FAE(Field Application Engineer-现场应用工程师):在现场为客户提供技术支持的工程师。

       ★Fabless:能够设计,销售,通过与硅片制造商联合以转包的方式实现硅片加工的一类半导体公司。

       ★Fitter(适配器):在将一个设计放置到目标可编程器件之前,用来优化和分割一个逻辑设计的夜播源码搭建软件。

       ★Foundry:硅片生产线,也称为 fab。 FPGA(Field Programmable Gate Array-现场可编程门阵列):高密度 PLD 包括通过分布式可编程阵列开关连接的小逻辑单元。这种结构在性能和功能容量上会产生统计变化结果,但是可提供高寄存器数。可编程性是通过典型的易失的 SRAM 或反熔丝工艺一次可编程提供的。

       ★"Foundry" :一种用于ORCA 现场可编程门阵列(FPGA)和现场可编程单芯片系统(FPSC)的软件系统。

       ★FPGA(Field Programmable Gate Array-现场可编程门阵列):含有小逻辑单元的高密度 PLD,这些逻辑单元通过一个分布式的阵列可编程开关而连接。这种体系结构随着性能和功能容量不同而产生统计上的不同结果,但是提供的寄存器数量多。其可编程性很典型地通过易失 SRAM 或者一次性可编程的反熔丝来体现。

       ★FPSC(Field Programmable System-on-a-Chip-现场可编程单芯片系统):新一代可编程器件用于连接 FPGA 门和嵌入的 ASIC 宏单元,从而形成一芯片上系统的解决方案。

       ★GAL? (Generic Array Logic-通用阵列逻辑):由莱迪思半导体公司发明的低密度器件系统。

       ★Gate(门):最基本的逻辑元素,门数越多意味着密度越高。

       ★Gate Array(门阵列):通过逻辑单元阵列连接的集成电路。由生产厂家定制,一般会导致非再生工程(NRE)消耗和一些设计冗余。

       ★GLB(Generic Logic BLOCk-通用逻辑块):莱迪思半导体的高密度 ispPSI?器件的标准逻辑块。每一个 GLB 可实现包含输入、输出的大部分逻辑功能。

       ★GRP(Global Routing Pool-全局布线池):专有的连接结构。能够使 GLBs 的输出或 I/O 单元输入与 GLBs 的输入连接。莱迪思的 GRP 提供快速,可预测速度的完全连接。

       ★High Density PLD(高密度可编程逻辑器件):超过 门的 PLD。

       ★I/O Cell(Input/Output Cell-输入/输出单元):从器件引脚接收输入信号或提供输出信号的逻辑单元。

       ★ISPTM(In-System Programmability-在系统可编程):由莱迪思首先推出,莱迪思 ISP 产品可以在系统电路板上实现编程和重复编程。ISP 产品给可编程逻辑器件带来了革命性的变化。它极大地缩短了产品投放市场的时间和产品的成本。还提供能够对在现场安装的系统进行更新的能力。

       ★ispATETM:完整的软件包使自动测试设备能够实现:

       1)利用莱迪思 ISP 器件进行电路板测试和

       2)编程 ISP 器件。

       ★ispVM EMBEDDEDTM:莱迪思半导体专用软件由 C 源代码算法组成,用这些算法来执行控制编程莱迪思 ISP 器件的所有功能。代码可以被集成到用户系统中,允许经由板上的微处理器或者微控制器直接编程 ISP 器件。

       ★ispDaisy Chain Download SOFtware (isp菊花链下载软件):莱迪思半导体专用器件下载包,提供同时对多个在电路板上的器件编程的功能。

       ★ispDSTM:莱迪思半导体专用基于 Windows 的软件开发系统。设计者可以通过简单的逻辑公式或莱迪思 - HDL 开发电路,然后通过集成的功能仿真器检验电路的功能。整个工具包提供一套从设计到实现的方便的、低成本和简单易用的工具。

       ★ispDS+TM:莱迪思半导体兼容第三方HDL综合的优化逻辑适配器,支持PC和工作站平台。IspDS+ 集成了第三方 CAE 软件的设计入口和使用莱迪思适配器进行验证,由此提供了一个功能强大、完整的开发解决方案。第三方 CAE 软件环境包括:Cadence, Date I/O-Synario,Exemplar Logic,聚合码系统源码ISDATA, Logical Devices,Mentor Graphics,OrCAD, Synopsys,Synplicity 和 Viewlogic。

       ★isPGAL?:具有在系统可编程特性的 GAL 器件

       ★ispGDSTM:莱迪思半导体专用的 ISP 开关矩阵被用于信号布线和 DIP 开关替换。

       ★ispGDXTM:ISP 类数字交叉点系列的信号接口和布线器件。

       ★ispHDLTM:莱迪思开发系统,包括功能强大的 VHDL 和 Verilog HDL 语言和柔性的在系统可编程。完整的系统包括:集成了 Synario, Synplicity 和 Viewlogic 的综合工具,提供莱迪思 ispDS+ HDL 综合优化逻辑适配器。

       ★ispLSI?:莱迪思性能领先的 CPLD 产品系列的名称。世界上最快的高密度产品,提供非易失的,在系统可编程能力和非并行系统性能。

       ★ispPAC?:莱迪思唯一的可编程模拟电路系列的名称。世界上第一个真正的可编程模拟产品,提供无与伦比的所见即所得(WYSIYG)逻辑设计结果。

       ★ispSTREAMTM:JEDEC 文件转化为位封装格式,节省原文件1/8 的存储空间。

       ★ispTATM:莱迪思静态时序分析器,是 ispDS+ HDL 综合优化逻辑适配器的组成部分。包括所有的功能。使用方便,节省了大量时序分析的代价。设计者可以通过时序分析器方便地获得任何莱迪思 ISP 器件的引脚到引脚的时序细节。通过一个展开清单格式方便地查看结果。

       ★ispVHDLTM:莱迪思开发系统。包括功能强大的 VHDL 语言和灵活的在系统可编程。完整的系统工具包括 Synopsys,Synplicity 和 Viewlogic,加上 ispDS+ HDL 综合优化逻辑适配器。

       ★ispVM System:莱迪思半导体第二代器件下载工具。是基于能够提供多供应商的可编程支持的便携式虚拟机概念设计的。提高了性能,增强了功能。

       ★JEDEC file(JEDEC 文件):用于对 ispLSI 器件编程的工业标准模式信息。

       ★JTAG(Joint Test Action Group-联合测试行动组):一系列在主板加工过程中的对主板和芯片级进行功能验证的标准。

       ★Logic(逻辑):集成电路的三个基本组成部分之一:微处理器内存和逻辑。逻辑是用来进行数据操作和控制功能的。

       ★Low Density PLD(低密度可编程逻辑器件):小于 门的 PLD,也称作 SPLD。

       ★LUT (Look-Up Table-查找表):一种在 PFU 中的器件结构元素,用于组合逻辑和存储。基本上是静态存储器(SRAM)单元。

       ★Macrocell(宏单元):逻辑单元组,包括基本的产品逻辑和附加的功能:如存储单元、通路控制、极性和反馈路径。

       ★MPI(MicroprocesSOr Interface-微处理器接口):ORCA 4 系列 FPGA 的器件结构特征,使 FPGA 作为随动或外围器件与 PowerQUIC mP 接口。

       ★OLMC(Output Logic Macrocell-输出逻辑宏单元):D 触发器,福州麻将组件源码在输入端具有一个异或门,每一个 GLB 输出可以任意配置成组合或寄存器输出。

       ★ORCA(Optimized Reconfigurable Cell Array-经过优化的可被重新配置的单元阵列):一种莱迪思的 FPGA 器件。

       ★ORP(Output Routing Pool-输出布线池):ORP 完成从 GLB 输出到 I/O 单元的信号布线。I/O 单元将信号配置成输出或双向引脚。这种结构在分配、锁定 I/O 引脚和信号出入器件的布线时提供了很大的灵活性。

       ★PAC(Programmable Analog Circuit-可编程模拟器件):模拟集成电路可以被用户编程实现各种形式的传递函数。

       ★PFU(Programmable Function Unit-可编程功能单元):在 ORCA 器件的PLC中的单元,可用来实现组合逻辑、存储、及寄存器功能。

       ★PIC (Programmable I/O Cell-可编程 I/O 单元):在 ORCA FPGA 器件上的一组四个 PIO。PIC 还包含充足的布线路由选择资源。

       ★Pin(引脚):集成电路上的金属连接点用来:

       1)从集成电路板上接收和发送电信号;

       2)将集成电路连接到电路板上。

       ★PIO(Programmable I/O Cell-可编程I/O单元):在 ORCA FPGA 器件内部的结构元素,用于控制实际的输入及输出功能。

       ★PLC(Programmable Logic Cell-可编程逻辑单元):这些单元是 ORCA FPGA 器件中的心脏部分,他们被均匀地分配在 ORCA FPGA 器件中,包括逻辑、布线、和补充逻辑互连单元(SLIC)。

       ★PLD(Programmable Logic Device-可编程逻辑器件):数字集成电路,能够被用户编程执行各种功能的逻辑操作。包括:SPLDs, CPLDs 和 FPGAS。

       ★Process Techonology(工艺技术):用来将空白的硅晶片转换成包含成百上千个芯片的硅片加工工艺。通常按技术(如:E2CMOS)和线宽 (如:0. 微米)分类。

       ★Programmer(编程器):通过插座实现传统 PLD 编程的独立电子设备。莱迪思 ISP 器件不需要编程器。

       ★Schematic Capture(原理图输入器):设计输入的图形化方法。

       ★SCUBA(SOFtware Compiler for User Programmable Arrays-用户可编程阵列综合编译器):包含于 ORCA Foundry 内部的一种软件工具,用于生成 ORCA 特有的可用参数表示的诸如存储的宏单元。

       ★SLIC (Supplemental Logic Interconnect Cell-补充逻辑相互连接单元):包含于每一个 PLC 中,它们有类似 PLD 结构的三态、存储解码、及宽逻辑功能。

       ★SPLD(SPLD-简单可编程逻辑器件):小于 门的 PLD,也称作低密度 PLD。

       ★SWL(SOFt-Wired Lookup Table-软连接查找表):在 ORCA PFU 的查找表之间的快速、可编程连接,适用于很宽的组合功能。

       ★Tpd:传输延时符号,一个变化了的输入信号引起一个输出信号变化所需的时间。

       ★TQFP(Thin Quad Flat PACk-薄四方扁平封装):一种集成电路的封装类型,能够极大地减少芯片在电路板上的占用的空间。TQFP 是小空间应用的理想选择,如:PCMCIA 卡。

       ★UltraMOS?:莱迪思半导体专用加工工艺技术。

       ★Verilog HDL:一个专用的、高级的、基于文本的设计输入语言。

       ★VHDL:VHSIC 硬件描述语言,高级的62授权平台源码基于文本的设计输入语言。

linux源码解读(三十二):dpdk原理概述(一)

       Linux源码解析(三十二):深入理解DPDK原理(一)

       几十年来,随着技术的发展,传统操作系统和网络架构在处理某些业务需求时已显得力不从心。为降低修改底层操作系统的高昂成本,人们开始在应用层寻求解决方案,如协程和QUIC等。然而,一个主要问题在于基于内核的网络数据IO,其繁琐的处理流程引发了效率低下和性能损耗。

       传统网络开发中,数据收发依赖于内核的receive和send函数,经过一系列步骤:网卡接收数据、硬件中断通知、数据复制到内存、内核线程处理、协议栈层层剥开,最终传递给应用层。这种长链式处理方式带来了一系列问题,如上下文切换和协议栈开销。

       为打破这种限制,Linux引入了UIO(用户空间接口设备)机制,允许用户空间直接控制网卡,跳过内核协议栈,从而大大简化了数据处理流程。UIO设备提供文件接口,通过mmap映射内存,允许用户直接操作设备数据,实现绕过内核控制网络I/O的设想。

       DPDK(Data Plane Development Kit)正是利用了UIO的优点,如Huge Page大页技术减少TLB miss,内存池优化内存管理,Ring无锁环设计提高并发性能,以及PMD poll-mode驱动避免中断带来的开销。它采用轮询而非中断处理模式,实现零拷贝、低系统调用、减少上下文切换等优势。

       DPDK还注重内存分配和CPU亲和性,通过NUMA内存优化减少跨节点访问,提高性能,并利用CPU亲和性避免缓存失效,提升执行效率。学习DPDK,可以深入理解高性能网络编程和虚拟化领域的技术,更多资源可通过相关学习群获取。

       深入了解DPDK原理,可以从一系列资源开始,如腾讯云博客、CSDN博客、B站视频和LWN文章,以及Chowdera的DPDK示例和腾讯云的DPDK内存池讲解。

       源:cnblogs.com/thesevenths...

Nginx 1.配置QUIC和HTTP/3

       Nginx 1.版本及后续已正式支持QUIC和HTTP/3协议,这得益于其对SSL库的优化,如BoringSSL,它专为HTTP3和QUIC设计,提供了更好的性能和功能。从1..0版本开始,Linux环境下的二进制包已内置了这些协议支持,尽管仍处于实验阶段,但用户可自行配置和编译以启用。

       在配置过程中,Nginx官方文档nginx.org/en/docs/quic提供了三种SSL库选项,推荐使用BoringSSL、LibreSSL或QuicTLS以充分利用QUIC和HTTP/3特性。若不选择这些专用库,Nginx可能在某些特性上受限。

       要安装BoringSSL,确保使用cmake3以上版本,并安装相关依赖。接下来,下载Nginx源码包,进行编译安装。安装完成后,你需要检查Nginx模块配置,并启动服务器以验证HTTP3是否已生效。由于浏览器对HTTP3的支持尚不广泛,可以使用网站来测试你的站点是否支持HTTP3。

       截止到年1月,Nginx的最新版本为1..3,确保在最新的版本基础上进行配置和测试。

不常见的内存与流量取证 -- WMCTF 1!5!

       面对不常见的内存与流量取证挑战,WMCTF 1!5 题目中的特殊内存镜像让常用取证软件如取证大师和 vol 遇到了难题。当发现内存镜像无法被这些软件识别时,想到了万年前发现的神器——尸解(Autopsy)。尽管尸解识别不出镜像类型,但利用其基础的关键词搜索功能,最终还是找到了解决之道。题目附件提供了一个快捷方式,引导大家进行取证。

       首先,使用 wireshark 分析流量,发现大量的QUIC加密流量和HTTP流量,随后升级到websocket。在流量分析中,客户机与服务端的websocket流量引起了注意。值得注意的是,流量中包含了一个flag,以及可能的加密或编码内容,预示着复杂的加密逻辑。

       为了进一步解析流量,将过滤条件设置为websocket并导出为json格式。使用命令行工具进行剪切和解析,获取关键信息。尽管内存镜像无法直接打开,但通过尸解工具,创建案件、编写受害者信息和导入内存镜像,完成了初步分析。

       在内存分析中,通过搜索字符串WMCTF{ ,发现疑似假flag与Go源码,揭示了服务端收信逻辑的一部分。关键字搜索发现缺失的flag部分,并结合已知信息,最终解出了完整的flag。在深入分析中,利用尸解工具的关键词搜索和数据单元分析,定位到关键内存位置,解出了逆向算法,使得flag的完整解出成为可能。

       尸解工具在解析和搜索字符串方面表现出色,提供了全面的搜索功能,包括正则搜索、大小写不敏感搜索以及匹配特定字符串,极大地简化了取证过程。在与队友和其它队伍的交流中,发现大家普遍使用VOL取证大师、strings和二进制编辑器等工具,对于国外的优秀工具了解不足,因此,尸解作为一种强大的取证工具,值得更广泛地使用和推广。

       本文旨在分享WMCTF 1!5题目中的取证经验,强调了尸解工具在复杂取证场景中的应用,提醒读者在技术交流和分享时遵守网络安全相关法律法规,避免非法活动。希望本文能够为网络安全领域的同行提供有价值的参考和启发。

几种常见的长连接实现方案

       长连接的概念涉及多个领域,包括HTTP持久连接、TCP、UDP、QUIC、WebSocket等协议。它们共同建立的是一个数据通路,可以持续收发信息。其中,微信在年开源的Mars项目,因其在长连接架构中的应用而广为人知。Mars作为客户端,还需要与服务端配合使用。

       国内大厂的网关团队普遍提供了长连接服务。这些服务包括消息推送、消息广播、多协议切换、HTTP代理、多接入点容灾等功能,适用于即时通讯、弹幕、互动游戏、竞拍等多种业务场景。大厂如阿里的ACCS和美团的Shark等,提供了相关功能的公开资料。

       长连接主要解决数据的实时性问题。首先,它解决了数据推送的问题。例如,通过手机厂商提供的离线消息推送通道,实现APP与厂商服务的连接,确保消息在APP后端发送后,能迅速推送给用户。其次,长连接优化了API请求,尤其是在国内网络质量良好的情况下,代理HTTP(S)请求是性价比较高的方案。移动端网络库中添加拦截逻辑,将请求参数封装成底层报文,通过全双工数据通路发送给网关,网关组装为HTTP请求,内网发送给业务服务器,最后封装后回传至对应数据通道。

       一个完整的HTTPS请求步骤涉及多个环节,任何环节的错误都可能导致请求失败。例如,DNS污染、解析错误、慢响应、山区或海外用户导致的数据包往返延迟、握手过程复杂、证书过大、超时配置不合理、包过小导致慢启动等。以RTT为ms为例,采用TCP+TLS 1.2建立连接需要至少ms,打开TLS会话复用需要ms,采用TCP+TLS 1.3首次请求ms即可连接,复用为ms,QUIC协议首次为ms,复用为0ms。在弱网环境下,RTT可能更差,协议优化能带来更好的响应速度。

       本文是长连接技术方案的上篇,详细介绍了公开的业界长连接技术。下篇将探讨如何根据业务需求选择合适的长连接技术方案。目前,我们已经实现的长连接方案已完全开源,欢迎获取所有源代码。

新一代网络协议有哪些

       新一代网络协议主要有HTTP/3协议、IPv6协议以及MQTT协议等。

       HTTP/3协议是近年来互联网技术领域的重要突破。该协议致力于解决传统HTTP/2协议存在的问题,比如排队延迟和卡顿等。HTTP/3协议采用了全新的传输层协议QUIC作为其基础,这使得它能够在不同网络环境下提供更加稳定和快速的体验。它进一步提高了网页加载速度和实时通信的效率,特别是在高延迟和不稳定网络环境中表现更为出色。

       IPv6协议是互联网协议(IP协议)的最新版本,也是目前使用最为广泛的网络协议之一。相较于之前的IPv4协议,IPv6具有更大的地址空间,可以容纳更多的设备连接到互联网。此外,IPv6还提供了更好的移动性和安全性,能够支持更多新的服务和应用,满足了当前互联网快速发展的需求。

       MQTT协议在物联网领域有着广泛的应用。该协议具有轻量级、开放源代码、消息格式灵活等特点,能够支持机器对机器(M2M)的通讯需求。在数据传输过程中,MQTT协议可以有效地减小通讯的复杂性并提高稳定性,尤其在低带宽和不稳定网络环境中表现得尤为出色。随着物联网技术的快速发展,MQTT协议已成为一种重要的新兴网络协议。

       以上所述的新一代网络协议,都是针对当前互联网技术的特点和需求进行设计的,它们为互联网的发展提供了强有力的技术支持。

RUST web框架axum快速入门教程2

       在上一篇文章中,我们探讨了axum获取参数的方法。现在,我们将深入探讨axum如何构建响应内容。如果您对axum的请求参数处理还不够熟悉,可以查阅我之前的文章:youerning.top/post/axum...

       常见的响应内容分为两类:HTML和JSON。它们对应的Content-Type分别是text/html和application/json。前者通常用于直接渲染前端页面,并常与模板引擎库(如askama)配合使用;后者主要用于接口开发,以便后端与各种前端都能兼容。

       本文使用的依赖项包括:

       HTML响应:

       若只是返回静态内容,则显得较为无趣。通常情况下,我们会结合模板引擎来使用。

       需要注意的是:askama默认模板位于当前目录的templates目录下,因此需要指定templates/目录前缀。

       hello.html的内容如下:

       使用curl请求的结果如下:

       askama的模板语法与Jinja2的语法基本一致,但也会有一些不同之处,这主要是由其实现语言的特点所决定的。详细信息可以查看:djc.github.io/askama/te...

       JSON响应:

       以下是一些常用的代码示例:

       json3到json4的结果相同,这里简单展示一下对应的请求和响应。

       如果查看Json的源代码,会发现它只接受一个约束,即serde的Serialize trait。这是一个代表可序列化的trait,至于如何序列化,Json对象会负责处理。这里简单展示一下对应的源代码。

       因此,一些数据库的model可以通过#[derive(Serialize)]来实现Serialize,这样就可以方便地将查询到的数据结果返回给前端。

       状态码:

       到目前为止,我们已经能够处理大部分的响应,但还有一个问题尚未解决,那就是如何指定状态码。我们不可能总是将响应码设置为。默认情况下,如果只返回一个实现IntoResponse trait的对象,状态码都是。

       axum当然会考虑到这种情况,因此我们可以返回一个元组而非返回单个对象。元组的第一个对象是状态码,下面是一个简单的例子。

       这个例子比较简单,就不展示对应的请求和响应了。

       静态文件:

       到目前为止,我们已经解决了web开发中的多数响应相关的问题。那么,如何提供静态文件呢?例如,响应CSS、JS等静态资源文件。虽然Rust有一个强大的include_str宏,但手动实现这个功能还是显得有些无趣。因此,axum应该有相关的支持,或者说大多数web框架都支持这一点。不过,axum支持静态文件的方式与其他Rust web框架有所不同。

       axum与其他Rust web框架的一个很大不同之处在于,它基于tokio和tower技术栈。也就是说,它可以从这两者那里继承很多优势,例如tower的中间件服务。这些中间件包括但不限于超时、重连、重试等。

       tower是一个模块化和可复用的库,提供了一套很棒的请求-响应模型,可以用来开发健壮的网络客户端和服务端。

       上面的例子就是将本地的templates目录映射到服务端的/templates。

       小结:

       除了本文提到的响应,axum其实还支持很多常用的响应类型,如Redirect、SSE等。这应该能够满足大部分需求。如果不行的话,可以自己实现IntoResponse。

       参考链接:

       原文链接:youerning.top/axum/quic...