Simulink算法仿真注意事项

news2024/11/18 20:32:43

一、背景

首先,需要区分Simulink仿真和FPGA仿真的区别,即使最终算法可能要落地到FPGA上。

Simulink是MATLAB的一个重要组成部分,主要用于建模、仿真等,它可将理论研究和实践有机的相结合,并且用户不需要书写大量的代码。Simulink具有以下特点:

可视化:Simulink仿真采用交互式开发的方法,操作简单、直观。用户只需要拖拽鼠标即可实现动态系统的仿真。图形化的界面可以避免过多的编程,同时又可以直观的反映仿真的过程。


扩展性强:Simulink有较强的扩展性,用户可以根据自己的需求来编写自己的模块库,建立子系统,封装子系统。


灵活性强:Simulink是一个非常灵活的仿真建模工具,虽然MATLAB为用户提供封装了大量的模块,但是用户在使用的时候也可以修改里面的参数。近年来在各大领域的得到了大量的应用。


而FPGA仿真主要涉及硬件描述语言(如VHDL或Verilog)和专用集成电路(ASIC)设计。它关注的是将设计直接映射到硬件上,并通过硬件描述语言进行建模和验证。与Simulink仿真不同,FPGA仿真更注重于硬件实现和并行处理。

总的来说,Simulink仿真和FPGA仿真在目的、方法和技术上有明显的区别。Simulink更侧重于动态系统建模和仿真,而FPGA仿真更关注于硬件实现和优化。选择使用Simulink还是FPGA仿真取决于具体的应用需求和目标。

此图片来源于网络

 

二、提高Simulink仿真系统的精度和准确性

要提高Simulink仿真系统的精度和准确性,可以采取以下策略:

选择合适的求解器:根据系统的特性选择合适的求解器。例如,如果系统是刚性的,则选择ode5s或ode23t等求解器;如果系统不是刚性的,则可以选择ode45等。求解器的选择对仿真的精度和效率有很大的影响。


确定误差:设置合理的相对误差和绝对误差。相对误差和绝对误差的设置会影响仿真的精度,如果设置得过大,可能会导致仿真结果不准确;如果设置得过小,可能会增加仿真的计算量。因此,需要根据实际情况进行权衡。


调整仿真步长:仿真步长的大小也会影响仿真的精度。一般来说,步长越小,仿真的精度越高,但仿真的计算量也会增加。因此,需要在保证仿真精度的前提下,尽可能地增大步长,以提高仿真的效率。


消除代数环:代数环的存在可能会导致仿真结果的不稳定或不准确。因此,在建立模型时,应尽量避免产生代数环。如果无法避免,可以尝试使用迭代数值技术进行求解,但需要注意迭代过程的收敛性。


使用合适的数据类型:在Simulink中,不同的数据类型有不同的精度和范围。因此,在选择数据类型时,需要根据实际情况进行选择,以保证仿真的精度和准确性。


验证模型:在完成模型的建立后,需要对模型进行验证,以确保模型的正确性和准确性。可以使用实际数据或理论结果对模型进行验证,如果仿真结果与实际数据或理论结果相差较大,则需要对模型进行修正。


总的来说,提高Simulink仿真系统的精度和准确性需要综合考虑多个因素,包括求解器的选择、误差的设置、仿真步长的调整、代数环的消除、数据类型的选择以及模型的验证等。通过合理地设置这些参数和策略,可以有效地提高Simulink仿真系统的精度和准确性。

此图片来源于网络

 

三、时刻防范代数环

在Simulink中,代数环是由模型的输出直接或间接反馈到输入,并在同一个时间步长内需要求解的循环依赖关系。这种依赖关系可能导致数值不稳定或仿真结果不正确。

要判断是否存在代数环,可以采取以下方法:

直接观察模型结构:仔细检查模型的结构,特别是反馈回路。如果输出信号直接或间接地反馈到输入,并且这种反馈在同一时间步长内需要求解,那么可能存在代数环。


利用Simulink的诊断工具:Simulink提供了诊断工具,可以自动检测模型中的代数环。在Simulink的模型窗口中,选择“Diagnostics”选项,并确保“Algebraic Loops”选项被选中。然后运行模型,Simulink会自动检测并报告代数环的存在。


观察仿真行为和结果:代数环可能导致仿真过程中出现不稳定的行为或结果。如果观察到异常的仿真行为,如振荡、发散或不合理的输出值,那么应该检查是否存在代数环。


需要注意的是,并非所有的反馈回路都会导致代数环。只有当反馈回路在同一时间步长内需要求解时,才会形成代数环。如果反馈回路中包含延时或离散时间元素,那么可能不会形成代数环。

一旦发现代数环,可以采取以下措施来解决:

重新设计模型结构:尝试重新设计模型的结构,以消除代数环。这可能涉及到改变反馈回路的结构或使用不同的模块来实现相同的功能。


使用延时或离散时间元素:在反馈回路中加入延时或离散时间元素,以打破代数环的循环依赖关系。例如,可以使用延时模块或离散时间积分器来引入延时。


使用迭代方法求解:在某些情况下,可以通过配置迭代求解器来解决代数环问题。这需要在模型设置中启用迭代求解,并设置合适的迭代次数和收敛容差。


总之,判断代数环需要仔细观察模型结构、利用诊断工具以及观察仿真行为和结果。一旦发现代数环,可以采取相应的措施来解决。

四、提高Simulink仿真速度

优化模型结构:简化模型,去除不必要的模块和连接,减少模型的复杂性和计算量。合并和重构模块,使用更高效的模块和算法替代计算密集型或低效的模块。

调整仿真步长:在保证仿真精度的前提下,尽量使用较大的仿真步长。较小的步长虽然可以提高仿真精度,但会增加计算时间和资源消耗。通过合理选择步长,可以在仿真速度和精度之间取得平衡。

并行计算:利用Simulink支持的并行计算功能,将仿真任务分配到多个处理核心上执行。这样可以显著提高仿真速度,特别是对于大型和复杂的模型。

使用硬件加速:考虑使用支持硬件加速的仿真工具或硬件设备,如GPU加速或FPGA加速。这些硬件可以提供更快的计算能力和并行处理能力,从而加快仿真速度。

选择合适的求解器:根据模型的特性选择合适的求解器。不同的求解器在处理不同类型的问题时具有不同的效率和精度。通过调整求解器的设置,如相对误差容限和绝对误差容限,可以进一步平衡仿真速度和精度。

代码生成和优化:利用Simulink的代码生成功能,将模型转换为高效的C/C++代码。对生成的代码进行手动优化或使用编译器优化选项,以提高执行速度和减少资源占用。这可以显著加快仿真速度,特别是对于需要反复运行或实时仿真的情况。

关闭不必要的数据记录:在仿真过程中,关闭不必要的数据记录功能,只记录感兴趣的结果。过多的数据记录会增加计算量和存储需求,从而降低仿真速度。

使用Simulink Accelerator:Simulink Accelerator是MathWorks提供的一种加速仿真的工具。它通过将模型转换为可执行文件,并利用多核处理器进行并行计算,从而加快仿真速度。使用Simulink Accelerator可以显著提高大型和复杂模型的仿真速度。

综上所述,通过优化模型结构、调整仿真步长、并行计算、硬件加速、选择合适的求解器、代码生成和优化、关闭不必要的数据记录以及使用Simulink Accelerator等方法,可以有效提高Simulink仿真系统的仿真速度。在实际应用中,可能需要根据具体情况和仿真需求进行权衡和调整。

五、兼顾Simulink的仿真速度和仿真精度

兼顾Simulink仿真系统的仿真速度和仿真精度是一个需要权衡的问题。以下是一些建议,可以帮助你在仿真速度和仿真精度之间取得平衡:

合理选择仿真步长:
仿真步长是影响仿真速度和精度的关键因素。较小的步长可以提高精度,但会增加计算时间和资源消耗。较大的步长可以加快仿真速度,但可能会降低精度。根据系统的特性和仿真需求,选择一个既能满足精度要求又不会导致过长仿真时间的步长。


优化模型结构:
简化模型,去除不必要的模块和连接,可以降低仿真的计算复杂度,从而提高仿真速度。使用更高效的模块和算法替代计算密集型或低效的模块。


并行计算和硬件加速:
利用Simulink支持的并行计算功能,可以将仿真任务分配到多个处理核心上,从而显著提高仿真速度。考虑使用支持硬件加速的仿真工具或硬件,如GPU加速或FPGA加速。


调整求解器设置:
根据模型的特性选择合适的求解器。不同的求解器在处理不同类型的问题时具有不同的效率和精度。调整求解器的相对误差容限和绝对误差容限,以找到速度和精度之间的平衡。


分阶段仿真:
对于复杂系统,可以采用分阶段仿真的方法。先使用较粗的仿真步长和较低的精度进行初步仿真,以快速获取系统的大致行为。然后在关键区域或感兴趣的时间段内使用更精细的步长和更高的精度进行详细仿真。


代码生成和优化:
利用Simulink的代码生成功能,将模型转换为高效的C/C++代码,然后进行仿真或实时运行。对生成的代码进行手动优化或使用编译器优化选项,以提高执行速度和减少资源占用。


模型验证和校准:
在仿真之前,对模型进行验证,确保模型能够准确反映实际系统的行为。使用实际数据对模型进行校准,以提高模型的精度和可信度。


需要注意的是,仿真速度和仿真精度的权衡取决于具体的仿真需求和系统特性。在实际应用中,可能需要进行多次试验和调整,以找到最适合的平衡点。

六、选择合适的求解器

选择合适的求解器对于确保Simulink仿真系统的准确性、稳定性和效率至关重要。以下是一些建议,以帮助您在选择求解器时做出明智的决策:

首先,需要了解不同求解器的特点:

定步长与变步长求解器:定步长求解器的仿真步长为固定值,没有误差控制机制。步长越小,仿真精度越高,但计算时间也会增加。变步长求解器在仿真过程中会根据需要计算合适的步长,以满足所设定的误差容限。它可以在某些事件(如快速状态变化)发生时减小步长以提高精度,而在状态变化缓慢时增加步长以避免不必要的计算。


连续与离散求解器:连续求解器适用于连续时间模型,通过数值积分计算状态值。离散求解器则用于处理离散时间模型或具有离散事件的模型。


显式与隐式求解器:显式求解器主要用于解决非刚性问题,而隐式求解器则更适用于解决刚性问题。刚性问题通常包含时间尺度差异很大的组件,需要特殊的数值处理方法。


在选择求解器时,可以考虑以下因素:

模型特性:了解您的模型是连续的还是离散的,是否包含刚性组件。这将有助于确定是否需要使用连续求解器、离散求解器或隐式求解器。


仿真精度要求:根据应用场景和精度要求,选择合适的定步长或变步长求解器。一般来说,变步长求解器在保持合理精度的同时能够更快地完成仿真。


计算资源和时间限制:考虑可用的计算资源和时间限制。定步长求解器通常更容易预测仿真时间和资源需求,而变步长求解器可能会根据仿真过程中的情况动态调整计算需求。


求解器稳定性和可靠性:选择经过验证且稳定的求解器,以确保仿真结果的可靠性。MathWorks提供了多种经过优化的求解器供选择。


最后,请注意,在选择求解器后,可能还需要进一步调整求解器的参数(如相对误差容限、绝对误差容限等),以满足特定的仿真需求。通过反复试验和验证,可以找到最适合您模型的求解器设置。

七、常见的仿真问题(持续更新中)

Simulink仿真过程中可能会遇到多种问题,这些问题通常与模型设置、求解器选择、数值稳定性、模块使用等方面有关。以下是一些常见的Simulink仿真问题及其解决方法:

常见问题及解决方法


模型初始化错误
问题:模型在初始化阶段出现错误,如维度不匹配、数据类型不一致等。
解决方法:检查模型中各模块的输入输出维度和数据类型是否匹配,确保所有必要的参数都已正确设置。


数值不稳定性
问题:仿真过程中出现数值不稳定,如结果发散、振荡等。
解决方法:选择合适的求解器和步长,调整模型的数值参数(如刚度、阻尼等),使用更稳定的数值算法。


求解器失败
问题:求解器无法在规定时间内完成仿真或报告失败。
解决方法:减小仿真步长、增加求解器迭代次数或尝试使用不同的求解器。


模块参数错误
问题:模块参数设置不正确,导致仿真结果不符合预期。
解决方法:仔细检查每个模块的参数设置,确保它们符合模型的物理特性和仿真需求。


代数环
问题:模型中存在代数环,导致仿真无法进行。
解决方法:重新设计模型以消除代数环,或使用迭代求解器尝试解决代数环问题。


内存不足
问题:仿真过程中出现内存溢出或不足的错误。
解决方法:优化模型结构,减少不必要的计算和数据存储;增加系统内存或升级硬件。


仿真速度慢
问题:仿真速度过慢,无法满足实时或快速仿真的需求。
解决方法:优化模型结构,使用并行计算或硬件加速,选择合适的求解器和步长。


结果不准确
问题:仿真结果与预期或理论值存在较大偏差。
解决方法:验证模型的正确性,检查输入数据和参数是否准确,调整求解器设置以提高精度。


模块缺失或版本不兼容
问题:模型中使用的模块在新版本的Simulink中不存在或不兼容。
解决方法:更新或替换不兼容的模块,确保使用的Simulink版本与模型兼容。


路径或文件名问题
问题:模型文件或依赖文件的路径、名称包含非标准字符或过长,导致仿真失败。
解决方法:简化文件路径和名称,避免使用特殊字符或过长的文件名。


通用解决策略:


模型验证:在开始仿真之前,验证模型的逻辑和物理正确性。


逐步调试:对于复杂模型,逐个模块或子系统进行调试,以定位问题所在。


查看和理解错误消息:Simulink会生成详细的错误和警告消息,仔细阅读并理解这些消息是解决问题的关键。


使用Simulink的诊断工具:利用Simulink提供的诊断工具来检测和解决问题。


查阅文档和社区资源:参考MathWorks的官方文档,搜索相关论坛和社区以获取帮助和解决方案。


持续学习和实践:随着Simulink和相关技术的不断发展,持续学习和实践是避免和解决仿真问题的有效途径。

八、团队协作仿真

多人协作的Simulink仿真工作需要落地一套仿真规范,以确保团队成员之间的工作协调一致,提高仿真效率,减少错误和不必要的返工。以下是一些建议来落地仿真规范:

统一建模标准:
制定并遵循统一的建模标准,包括模块命名规则、参数设置约定、信号和变量命名约定等。
使用标准化的模块库和工具箱,避免不同成员使用不同的模块或自定义函数导致的不一致性。


版本控制:
利用版本控制系统(如Git)管理Simulink模型和相关文件。
每次修改模型时,都要提交更改并附加清晰的更改说明,以便于追踪和审查。


模块化设计:
鼓励采用模块化设计,将复杂系统分解为较小的、可重用的子模块。
每个子模块应有明确的输入和输出接口,以及清晰的文档说明。


代码审查:
实施代码审查制度,定期由团队成员互相审查对方的模型代码。
审查内容包括模型结构、参数设置、求解器选择、仿真结果等。


仿真测试与验证:
制定仿真测试计划,包括单元测试、集成测试和系统测试。
使用自动化测试工具来执行测试,并生成测试报告。
验证仿真结果与实际系统或理论预期的一致性。


文档编写与维护:
为每个模型编写详细的文档,包括模型描述、输入输出说明、关键参数解释、仿真步骤和结果分析等。
维护一个集中的文档库,确保所有成员都能方便地访问最新版本的文档。


培训与知识共享:
定期组织Simulink培训会议,提高团队成员的建模和仿真技能。
鼓励团队成员分享仿真经验、最佳实践和问题解决技巧。


持续改进:
定期收集团队成员在仿真过程中遇到的问题和建议。
根据反馈调整仿真规范,并更新到团队共享文档中。
鼓励团队成员参与仿真规范的制定和改进过程。
通过落地这些仿真规范,可以促进多人协作的Simulink仿真工作的标准化、规范化和高效化,提高团队的整体仿真能力和项目质量。

确保Simulink规范的有效性是一个持续的过程,涉及规范的制定、实施、监控和更新。以下是一些关键步骤和策略,可以帮助确保Simulink规范的有效性:

明确目标与需求:
在制定规范之初,明确规范的目标和要解决的具体问题。
与项目团队成员沟通,确保规范能够满足实际工作的需要。


制定全面的规范:
涵盖模型结构、命名规则、参数设置、模块使用、数据类型、注释和文档等方面。
借鉴行业最佳实践和标准,确保规范的广泛适用性和前瞻性。


培训与沟通:
对团队成员进行规范的培训,确保他们理解并能够遵循规范。
定期组织沟通会议,讨论规范实施中遇到的问题和改进建议。


实施与监控:
在实际项目中强制实施规范,确保所有新建和修改的模型都符合规范。
使用版本控制系统跟踪模型的更改历史,确保每次更改都有记录。
定期进行代码审查和模型审计,检查是否符合规范,并及时纠正偏差。


提供支持工具:
利用Simulink自带的检查工具或开发自定义脚本来自动化规范检查过程。
提供模板和示例模型,帮助团队成员快速上手并遵循规范。


收集反馈与持续改进:
鼓励团队成员提供反馈,包括规范实施中的难点、不一致之处或改进建议。
定期评估规范的有效性,根据反馈和项目经验进行必要的修订和更新。


强调文化与意识:
培养团队文化,强调遵循规范的重要性及其对项目质量和效率的影响。
提高团队成员的规范意识,使其成为一种自觉的行为习惯。


外部审查与认证:
如果可能,考虑邀请外部专家进行规范的审查和认证。
这可以增加规范的可信度和团队的信心,同时也可能带来新的改进建议。


通过以上策略的实施,可以大大提高Simulink规范的有效性,促进团队合作的顺利进行,提高仿真工作的质量和效率。

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

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

相关文章

⭐北邮复试刷题LCR 037. 行星碰撞__栈 (力扣119经典题变种挑战)

LCR 037. 行星碰撞 给定一个整数数组 asteroids,表示在同一行的小行星。 对于数组中的每一个元素,其绝对值表示小行星的大小,正负表示小行星的移动方向(正表示向右移动,负表示向左移动)。每一颗小行星以相…

Elasticsearch:使用 ELSER v2 进行语义搜索

在我之前的文章 “Elasticsearch:使用 ELSER 进行语义搜索”,我们展示了如何使用 ELESR v1 来进行语义搜索。在使用 ELSER 之前,我们必须注意的是: 重要:虽然 ELSER V2 已正式发布,但 ELSER V1 仍处于 [预览…

基于Jenkins实现的CI/CD方案

基于Jenkins实现的CI/CD方案 前言 最近基于Jenkins的基座,搭建了一套适用于我们项目小组的持续集成环境。现在把流程整理分享出来,希望可以给大家提供一些帮助和思路。 使用到的组件和版本 组件名称组件版本作用Harbor2.7.3镜像仓库Jenkins2.319.2持…

【鸿蒙系统学习笔记】网络请求

一、介绍 资料来自官网:文档中心 网络管理模块主要提供以下功能: HTTP数据请求:通过HTTP发起一个数据请求。WebSocket连接:使用WebSocket建立服务器与客户端的双向连接。Socket连接:通过Socket进行数据传输。 日常…

Adobe将类ChatGPT集成到PDF中

2月21日,全球多媒体巨头Adobe在官网宣布,推出生成式AI助手AI Assistant,并将其集成在Reader 和Acrobat 两款PDF阅读器中。 据悉,AI Assistant的功能与ChatGPT相似,可以基于PDF文档提供摘要、核心见解、基于文档内容&a…

[bing]“gang调度 Kubernetes的并发控制和一致性机制“论点的对应的源码分析

你是一位K8S专家。请分析在Kubernates(https://github.com/kubernetes/kubernetes.git)项目和调度coscheduling(https://github.com/kubernetes-sigs/scheduler-plugins/tree/master/pkg/coscheduling) 插件中支撑"PodGroup的管理和调度决策涉及到对…

​Fruity Loops Studio21.2.3软件中文版官方功能介绍

​Fruity Loops Studio 21.2 软件功能介绍 一、概述 Fruity Loops Studio,现更名为FL Studio,是一款由Image-Line公司开发的数字音频工作站(DAW)。该软件广泛用于音乐创作、编曲、录音、混音和制作。FL Studio 21.2是其近期的一…

ARMv8-AArch64 的异常处理模型详解之异常向量表vector tables

目录 一,AArch64 异常向量表 二,栈指针以及SP寄存器的选择 三,从异常返回 一,AArch64 异常向量表 异常向量表(vector tables)是一组存放于普通内存(normal memory)空间的&#xf…

JavaWeb——002JS Vue快速入门

目录 一、JS快速入门​编辑 1、什么是JavaScript?​编辑 2、JS引入方式​编辑 2.1、示例代码 3、JS基础语法 3.1、书写语法 3.2、变量​编辑 3.3、数据类型 3.4、运算符​编辑 3.5、流程控制语句​编辑 4、JS函数 4.1、第一种函数定义方式 function funcName(参数…

什么是数组

目录 概念 案例 有变量,为什么还要数组? 概念 数组就是一个容器,用来存一批同种类型的数据。 案例 有变量,为什么还要数组? 1、假设用变量解决时间点名的需求 代码繁琐:大量变量的定义。 实现需求繁琐…

linux platform架构下I2C接口驱动开发

目录 概述 1 认识I2C协议 1.1 初识I2C 1.2 I2C物理层 1.3 I2C协议分析 1.3.1 Start、Stop、ACK 信号 1.3.2 I2C协议的操作流程 1.3.3 操作I2C注意的问题 2 linux platform驱动开发 2.1 更新设备树 2.1.1 添加驱动节点 2.1.2 编译.dts 2.1.3 更新板卡中的.dtb 2.2 …

Win11蓝屏开不了机进入安全模式的快速方法

最近,很多使用Win11电脑的用户都在反映自己遇到了蓝屏问题,这时候想通过进入系统的安全模式,来解决电脑蓝屏的问题,却不知道进入安全模式的具体操作方法,下面给大家介绍最简单快速的进入方法,帮助大家轻松解…

NDK的log.h使用__android_log_print报错app:buildCMakeDebug[x86_64]

org.gradle.api.tasks.TaskExecutionException: Execution failed for task :app:buildCMakeDebug[x86_64] 重点是 Execution failed for task :app:buildCMakeDebug[x86_64]. 我的代码&#xff1a; #include <android/log.h> #define LOG_TAG "MyJNI" #d…

游戏同步+游戏中的网络模块

原文链接&#xff1a;游戏开发入门&#xff08;九&#xff09;游戏同步技术_游戏数据同步机制流程怎么开发-CSDN博客 游戏开发入门&#xff08;十&#xff09;游戏中的网络模块_游戏开发组网-CSDN博客 3.同步技术的基本常识&#xff1a; a.同步给谁&#xff1f;某个用户&…

二叉树基础知识总结

目录 二叉树基础知识 概念 : 根节点的五个形态 : 特殊的二叉树 满二叉树 : 完全二叉树 : 二叉搜索树 : 平衡二叉搜索树 : 二叉树的性质 : 二叉树的存储结构 二叉树的顺序存储结构 二叉树的链式存储结构 二叉树的遍历方式 : 基础概念 前中后遍历 层序遍历 :…

解决Ultra 5 125H处理器核显使用solidworks卡顿问题

硬件环境&#xff1a;机械革命 无界14pro Ultra 5 125H 软件环境&#xff1a;windows11 solidworks2023 现象&#xff1a;在使用solidworks作图时&#xff0c;软件卡顿&#xff0c;鼠标无法拖动模型 解决办法&#xff1a; 1&#xff0c;下载并安装solidworks官方给出的修补程…

c语言经典测试题2

1.题1 我们来思考一下它的结果是什么&#xff1f; 我们来分析一下&#xff1a;\\是转义为字符\&#xff0c;\123表示的是一个八进制&#xff0c;算一个字符&#xff0c;\t算一个字符&#xff0c;加上\0&#xff0c;应该有13个&#xff0c;但是strlen只计算\0前的字符个数。所以…

3个脚本练习

1.判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 1.下载mailx服务并设置 yum install mailx -y vim /etc/mail.rc 将下列内容写入文件末尾即可 ​​​​​​​set from自己邮箱qq.…

【计算机网络】socket 网络套接字

网络套接字 一、端口号1. 认识端口号2. socket 二、认识TCP协议和UDP协议1. TCP协议2. UDP协议 三、网络字节序四、socket 编程1. socket 常见API2. sockaddr 结构3. 编写 UDP 服务器&#xff08;1&#xff09;socket()&#xff08;2&#xff09;bind()&#xff08;3&#xff0…

SQL注入之DNSLog外带注入

一、认识&#xff1a; 什么是dnslog呢&#xff1f; DNS就是域名解析服务&#xff0c;把一个域名转换成对应的IP地址&#xff0c;转换完成之后&#xff0c;DNS服务器就会有一个日志记录本次转换的时间、域名、域名对应的ip、请求方的一些信息&#xff0c;这个日志就叫DNSLog。…