阅读笔记——《未知协议状态机推断技术研究综述》

  • 【参考文献】盛嘉杰, 牛胜杰, 陈阳, 等. 未知协议状态机推断技术研究综述[J]. 计算机与现代化, 2023 (05): 58.
  • 【注】本文仅为作者个人学习笔记,如有冒犯,请联系作者删除。

摘要

  • 协议逆向工程(PRE)描述了协议的行为逻辑,一般分为协议格式提取和状态机构造2个步骤。
  • 首先,本文介绍PRE的形式化定义和基本原则,并讨论主要领域的具体要求。
  • 其次,分析状态机推理方法,并将其分为3种模式:聚类方法、状态相关方法和轮询状态实体方法,然后从不同的角度比较算法的逆向能力和时间效率。
  • 最后展望协议状态机推理的发展趋势。

目录

摘要

1、引言

2、协议状态机分析

2.1、定义

2.2、应用

3、协议状态机推断算法

3.1、聚类方法

3.2、状态相关字段方法

3.3、轮询状态实体方法

4、状态机算法分析


1、引言

  • 协议是由2个或多个协议实体遵循以完成通信的一组规则,其包含3个基本要素:语法 (Syntax)、语 义 (Semantics)、时序逻辑 (Temporal Logic)。
  • PRE是指在不依赖于协议描述的情况下,通过对协议实体的网络输入输出、系统行为和指令执行流程进行监控和分析,提取协议语法、语义以及同步信息的过程。
  • PRE通常包含2个步骤:协议格式分析和状态机推断。格式分析包括:格式抽取和语义抽取。

2、协议状态机分析

2.1、定义

  • 协议状态机是协议实体之间的交互行为。有限状态机 (FSM)又称为自动状态机,它能自动确定该自动机的输入输出模型,假设存在唯一输入输出模型,那么就称为确定有限状态机 (DFA)
  • 一个DFA通常由六元组 X=(Z,\Omega ,T,q_0,F,U)组成,其中,Z=\left \{ q_0,q_1,q_2,...\right \}是有限状态的集合,\Omega是字母表集合,T为状态迁移函数,q_0为DFA的初始状态,F为接收状态集合,U为拒绝状态集合。
  • 一个协议状态机可以描述为一种DFA的六元组,利用状态转移函数确定状态机的转移,利用初始状态与接受状态集合,作状态机的化简。
  • 协议状态机是协议逆向工程的最后一步,图1为协议逆向工程的总体流程。
  • 协议状态机是协议状态之间通过某些行为特征进行转换的一种描述协议之间关系的模型,它往往呈现出图或者树的结构,节点代表状态,相邻节点间的边则代表不同类型的报文片段,终止状态通常用2个圈进行表示,如图2所示。
    • 在图2中,状态2通过不同的报文片段可以到达状态3或者状态 5,而状态5通过特定的报文片段,则可以到达终止状态6。

2.2、应用

  • 模糊测试
    • 模糊测试,是一种利用测试用例,发现软件或者代码漏洞的技术,在状态机推断完成后,可以在测试用例中应用。
  • 协议重用
    • 协议重用是在了解该协议的基础上,利用一系列手段,达成应用的跨平台和重用的过程。
  • 无线网络对抗
    • 在无线网络对抗中,获取协议规范是很重要的,无线网络在全世界有相当大的规模,不法分子常利用无线网络进行攻击。状态机的分析能够理解该行为是否符合正常行为,避免了一定的损失。

3、协议状态机推断算法

  • 状态相关字段指的是能够标记协议逻辑的报文片段。而许多状态机相关的论文都是基于状态相关字段的处理,所以提取状态相关字段方法的不同也就代表不同的状态机推断方法
  • 协议状态机的构造主要基于通信数据帧中状态相关字段的取值以及它们之间的顺序关系,将获取得到的状态与相关算法结合,能自动生成协议状态机。
  • 对于状态机的创新点,都聚集在提取状态相关字段与状态机优化方向,如图3所示。
  • 协议状态机起始阶段的发展,如图4所示。

3.1、聚类方法

  • 依据:报文格式的相似度
  • 聚类方法的具体任务:
    • 按照聚类结果给每一条报文分配对应类型的标签,最终能得到初始协议状态机。
    • 根据不同的协议状态机化简算法,对初始状态机进行化简,得到最终协议状态机。
  • 聚类方法存在的问题:
    • 该方法会受到聚类算法本身复杂度的限制,并且在聚类过程中,生成几个簇(报文类型的种类)也是该算法需要自行解决的问题。
    • 聚类方法能将语法相同的报文聚合在一起,但是对于语义相同的报文,并不能实现聚集。
  • 以下是各个聚类方法的具体介绍。
    • PEXT是一种协议状态机的推断方法,并写成了工具。该方法首先利用了LCSS方法把获取到的报文进行聚类,其次用群集标识标记每个数据包,并将数据包的报文分开成为单独的流。最后定义了相同顺序的序列归纳于同一个状态,最大公共非重叠字串大于2作为筛选条件这一规则,将报文组合为一个状态,按照上述方法提取了状态机。此方法还利用了 “pull-out”与“pull-in”将状态机进行化简,此方法的缺点在于阈值需要手动设置,并且划分的单独流会形成冗余。
    • Antunes提出了ReverX方法,此方法分为3个步骤:第一个步骤对每个状态的访问次数进行标注,利用了摩尔化简公式对状态机进行化简,最终得到了普适化状态机;第二个步骤对报文包的头部信息聚类,比如网络地址信息,这里有个约束,对报文选取的时间间隔不大于1h;第三个步骤通过因果关系与等价关系对状态机约减,最终得到真实情况的状态机。 此方法缺点在于仅对文本协议有效,二进制协议效果较差。图5为ReverX方法生成的FTP状态机。【ANTUNES J,NEVES N,VERISSIMO P. Reverse engineering of protocols from network traces[C]// The 18th Working Conference on Reverse Engineering. 2011:169-178.】
    • Comparetti利用了动态污点分析与程序上下文比对信息实现了自动提取状态机技术,主要分为会话分析与报文聚类2个阶段。在第一个阶段中,记录了动态污点分析得到的执行踪迹,并按照格式划分报文,再推断报文格式。在第二个阶段中,利用了PAM聚类算法进行分类,并提出了3种相似性,使推断更为合理。再构建了初始状态机。最后采用Exbar算 法对相似的状态进行合并,确定了最小状态机。但是该算法未考虑当会话数量较多,状态机化简会有大量比较操作,这会降低算法的性能。【COMPARETTI P M,WONDRACEK G,KRUEGEL C,et al. Prospex: Protocol specification extraction[C]// The 30th IEEE Symposium on Security and Privacy Berkeley. 2009: 110-125.】
    • 王辰等人针对现有状态机推断算法忽略了协议系统的输入与输出关系,提出了一种基于状态融合的协议状态机推断方法。此方法依据会话样本集,构建EPTT形式的初始状态机。EPTT实质是一种聚类, 将相同前缀序列聚集在一起。然后进行状态匹配与融合,融合过程以EPTT作为原始Blue-Fringe算法的输入,并对相似度的计算规则做了些补充,最后按 照相似度从高到低排列进行融合。此方法虽然考虑 到了协议间的输入与输出关系,但是协议关键字提取设定的阈值需要手动确定,这会加大协议关键字的不确定性。【王辰,吴礼发,洪征,等 . 一种基于状态融合的协议状态机推断方法[J]. 解放军理工大学学报(自然科学版), 2015,16(4):322-329.】
    • Wang 等人在文献中提出了概率状态机这一 概念并提出了PEXT方法,图6是此方法的流程图。【Wang Y, Zhang Z, Yao D, et al. Inferring protocol state machine from network traces: a probabilistic approach[C]//Applied Cryptography and Network Security: 9th International Conference, ACNS 2011, Nerja, Spain, June 7-10, 2011. Proceedings 9. Springer Berlin Heidelberg, 2011: 1-18.】
      • 图6方法主要分为以下几个步骤:首先获取协议报文的格式。作者通过搜索频繁出现的字符串,提取协议格式报文,并利用了双样本K-S测试求出最小字段长度,得到了协议格式报文。其次推断协议状态消息。利用PAM算法将报文头聚类得到集群,目的是对协议格式的报文进行分组,作者把集群的中心看作协议的状态。作者利用阈值消除无效的状态类型对,计算转移概率,构建成状态机。但是也存在着一些局限性,需要自己确定阈值,也没有考虑语义信息。
    • 王军针对APTA树的化简做了一些改进,提出了EDSM的状态机逆向方法。该方法首先构建一颗APTA树,该树用来存储报文信息,相同的报文字段汇集在一个节点上,不同的则作为左右节点分散。这里的APTA树,实际上也是一种聚类的方式。然后对Prospex的启发式算法做了改进,充分考虑到字段之间的依赖关系,利用元组的方式对状态进行标注。最后利用了EDSM算法对状态进行合并,此方法使用事件驱动的状态合并方法按照搜索策略进行状态的合并。通过遍历一个红-蓝框架,并将红蓝节点进行改变的方式,将状态进行合并,最终得到协议状态机。 此方法虽然解决了Prospex的字段依赖的问题,但是仍然存在一些缺陷,APTA树过于庞大,这会大大影响状态机推断的时间复杂度。【王军 . 基于 EDSM 的二进制协议状态机逆向[D]. 哈尔滨:哈尔滨工业大学,2016.】

3.2、状态相关字段方法

  • 依据:协议报文中通常会有相关报文片段能标识该报文的协议逻辑,例如TCP协议的ACK、FIN等标志位可以作为该报文的状态相关字段。
  • 任务
    • 按照协议本身性质,用规则或者统计学方法提取出协议状态相关字段。
    • 按照不同的方式,将状态相关字段结合数据结构构建出初始协议状态机。
    • 是根据不同的协议状态机化简算法,例如启发式算法,对初始状态机进行化简,得到最终协议状态机。
  • 解决的问题
    • 解决聚类方法能识别语法相同的报文,但忽略了语义相同报文的问题。
    • 根据统计学或者数据挖掘的理论,去寻找状态相关字段的方法,不会有聚类方法中存在报文类型种类不确定性的问题,所以它能够更加精确地表示报文的状态。
  • 存在的问题
    • 对于规则的定义依赖较大,规则定义的恰不恰当,直接会影响到状态相关字段方法的准 确性。
  • 以下是各个状态相关字段方法的具体介绍。
    • Trifilo等人针对 PEXT 方法状态标注不足做出了改进并提出了一种 BFS 方法。该方法首先根据相关字段在不同会话中能表现出相似的行为这种特点,识别出协议报文中最相关的字段。其次运用了“状态分裂算法”对状态进行了定义与转换,主要分为 3 个步骤:1)初始状态机的构造。由于相关字段状态的值相同,但是有可能状态不同,进行了二进制数的标注。 2)分裂。使用时间窗去检查相同值代表的不同状态,与初始创建的状态机进行比较,创建新的状态机。3) 修剪。将不存在的转换都删除。但是此方法也存在一些缺点,方法只能体现出包含字节的相似度,不能体现一定的逻辑关系。【TRIFILO A,BURSCHKA S,BIERSACK E. Traffic to pro⁃ tocol reverse engineering[C]// IEEE Symposium on Com⁃ putational Intelligence for Security and Defense Applica⁃ tions,.2009:1-8.】
    • 孟凡治等人为了解决 BFS方法所存在的处理协议帧时有未对齐报文字段的缺陷,提出了一种新的解决方案。该方案在提取协议状态相关字段前,利用了改进的渐进多序列对比算法将报文字段对齐。在提取状态相关字段步骤时,根据同一个协议的不同通信通常有相似的行为逻辑这一特点,将对齐的报文字段利用字段取值分布的方式去计算对齐好的多条报 文字段的取值,将这个取值称之为DV,DV为0时,为协议报文的固定字段,所以舍弃,最后选择 DV 中最小的值当作状态相关字段。最后该方法根据时序关系,将状态机进行重构,最终将不同的协议状态图合并,得到完整的协议状态机转移图。该方法虽然解决了BFS未对齐报文字段的问题,但是仍然有一些缺陷,没有考虑一些报文字段的顺序性,忽视了字段与字段间的联系。【孟凡治,刘渊,张春瑞,等 . 基于状态相关字段识别的未知二进制协议状态机逆向方法[J]. 电讯技术,2015,55 (4):372-378.】
    • 闫小勇等人对目前构建前缀树庞大和提取相关字段没有顺序性问题,提出了 BSMISRF 算法。该算法舍弃了 VDV 算法,采用了最长公共子序列寻找状态相关字节,体现序列元素的顺序相似性。再利用邻接表构建初始状态机,减少了APTA树的大量比较操作。最后是状态机的化简,分为 2 个步骤,第一个步骤为确定转移概率,将异常会话删除。第二个步骤利用出入度将状态机进行化简,把并列的状态合成为 一个状态。但是也存在一些局限性,当存在大量会话时,异常会话删除会耗时耗力,而且此方法对字段切分的准确度要求较高。此方法实例如图7所示。【闫小勇,李青,莫有权. 基于状态相关字段的二进制协议状态机推断[J]. 计算机工程,2019,45(7):126-133.】
    • 方敏之为了解决 VDV 方法与 BSMISRF 方法没有考虑到状态字段的时间顺序性与不同会话之间的行为逻辑相似性这个问题,提出了LSISF方法。该方法在状态相关字段提取方面分为了2个步骤,第一个步骤利用 LSISF 方法计算出每个字段的不同取值之间的平均编辑距离,然后设置阈值,选取比阈值小的字段作为候选状态字段;第二个步骤计算出每个字 段的权重与各个会话不同包中同一字段方差的均值 (Average of the Distribution of Variances,VDA),然后通过计算V值也就是VDA与字段权重的比值来筛选出状态相关字段。其次在获取状态相关字段基础上,根据状态转移矩阵生成概率状态机。此方法最后 通过协议状态存在顺序与并列的关系,对协议状态机进行化简。方法虽然解决了 APTA 树过于庞大与 BSMISRF 方法的问题,但是对与一些较少、不固定的报文字段而言,计算 VDA 的方式得到的状态相关字段会比较不准确。【方敏之. 基于流量行为二进制协议逆向分析方法研究与实现[D]. 南京:东南大学,2021.】
    • 黄笑言等人在文献中利用统计学理论与时序关系构建出状态转换图,首先在语义关键字提取方法中设置了3个步骤,第一个步骤通过分隔符划为一个个文本块 token,第二个步骤考察关键字在会话集的分布特征识别语义关键字,第三个步骤发现关键字在报文的偏移特征,可以验证提取的语义关键字是否正确。其次利用邻接矩阵表示各个报文类型序列之间 的关系,若报文类型序列的顺序是一致的,合并成一个状态转换,再通过强顺序约束关系的状态标注、会话必经路径的状态标注、对可选出现的报文类型集进行状态标注方法进行状态机构建。但是此方法也存在一些局限性,只通过报文类型序列相同进行状态转换不太全面,会话数较多时,构建邻接矩阵比较复杂。【黄笑言,陈性元,祝宁,等 . 基于状态标注的协议状态机逆向方法[J]. 计算机应用,2013,33(12):3486-3489.】
    • Lin 等人针对现有的协议状态推断方法模型都没有注意到可以实时捕获报文的特点,基于 EFSM 提出了一种 ReFSM 方法,该方法由 3 个步骤构成:1) 消息类型识别。消息类型识别模块使用 Apriori关键 字分析来提取协议关键字,并在通过K-means算法将消息分组之前确定聚类数,每个组被视为不同的消息类型。2)FSM 构造和语义推导。通过构建 PTA 树接受所有协议会话,并使用 K-尾合并算法化简协议状态机。3)提取包含观察到的消息中消息字段值的子数据集,以便进一步分析以搜索报文中字段的相关性,由此推导的结果用于在EFSM中的每个转换。最 后通过比较生成的a树与b树是否有相同的结构完成 状态机的合并操作。虽然此方法在状态相关字段提取方面,将状态相关字段方法与聚类方法相结合,对提取出的协议状态相关字段的精确度有了很大的提高,但是仍然有状态爆炸的问题。【LIN Y R,LAI Y K,BUI Q T,et al. ReFSM: Reverse engi⁃ neering from protocol packet traces to test generation by ex⁃ tended finite state machines[J]. Journal of Network and Computer Applications,2020,171:102819.】
    • Sun 等人提出了一种新的状态机建模方法随机协议有限状态传感器(Stochastic Protocol finitestate Transducer,SPT),SPT 的主要职责是描述消息交互关系并分析记录会话中的行为概率分布。该模型配备了统计信息,也能够预测后续行为。其设计了一种名为Sptia PL的SPT学习方法,第一步处理初始报文,并提取状态相关字段,提取状态相关字段的方法时基于 3 种假设,第一,认为状态相关字段在协议的头部;第二,状态相关字段为单个字段;第三,相同报文字段具有较强的统计相关性。然后通过 MIS 计 算每个报文字段的值,MIS 较高则为状态相关字段, 再按照时间顺序组成报文序列;第二步通过一系列分析从报文序列重建 SPT 模型,包括模型构建、状态合并和在渐进学习过程中计算概率。最后,可以获得描述未知协议行为逻辑的SPT模型,并用于分析其消息交互特征或预测其未来的消息或行为。在状态机化简时,运用了测试状态兼容性的方法,将状态进行合并。虽然此方法的时间复杂度(O(n))与空间复杂度 (O(n))是最优的,解决了状态爆炸的问题,但是此方法在复杂的网络状况下,比如存在异常报文或者攻击报文的状态位并没有携带在报文的头部,那么此方法会失效。【SUN F H,WANG S,ZHANG H L. A progressive learning method on unknown protocol behaviors[J]. Journal of Net⁃ work and Computer Applications,2022,197(2):103249.】

3.3、轮询状态实体方法

  • 依据:推断过程中需要和协议实体交互来指导推断。
  • 方法:利用请求询问和应答2个机制,结合正例样本集与负例样本集生成初始协议状态机。正例样本集表示与协议状态交互后,能够接受的报文;反例样本集表示与协议状态交互后,不能够接受的报文。
  • 轮询状态实体方法能够实时与协议实体进行交互,生成的协议状态机是不断地向协议实体进行交流而得到最终的协议状态机
  • 优点:能够更加精确地生成协议状态机。
  • 存在问题:需要生成大量的询问,增加了时间复杂度;获取反例样本集困难。
  • 以下是各个轮询状态实体方法的具体介绍。
    • Angluin提出了一种新的解决方案,对状态实体进行轮询的方法。L*算法假设存在一个Oracle,并在此基础上可以回答等价询问(equivalence query)与 成员询问(membership query)。L*算法通过修改一张观察表,记录请求询问的结果,当结果为 1 则确定该状态,否则淘汰。membership query 构建一个连续的观察表,再生成一个候选状态机,最后通过等价询问,也是该文中所提的猜想,若一致,则终止判断,否则提供反例。【ANGLUIN D. Learning regular sets from queries and coun⁃ terexamples[J]. Information and Computation,1987,75(2): 87-106.】此外等价询问使用 Valiant提出的近似识别标准,利用随机抽样,消除了T*最小充分性假 设的限制。但是,此方法也存在一些缺点,此方法会产生大量的询问,效率过低,把报文当作相互独立的符号,忽略了报文之间的相关性。【VALIANT L G. A theory of the learnable[J]. Communica⁃ tions of the ACM,1984,27(11):1134-1142.】
    • 潘雁等人为了解决子类型无法对多个报文组合进行变异的问题,提出了一种渐进式的协议状态机主动推断方法。此方法考虑到字母表太大而导致算法性能降低的情况,首先将报文进行预处理,循环的将报文转换成类型序列放入字母表中,并结合映射器推断初始状态机;然后针对已有的数据中大多数为正常报文数据,异常报文数据缺失的情况,将报文通过整数叠加、字节翻转等方式,变异正常的报文;最后利用了基于前缀匹配的预响应机制,减少与协议实体互动的次数。但是此方法也存在一些问题,虽然用变异的手段扩充了样本的多样性,但是样本空间的扩大对协议状态机生成的时间效率而言,是大大的提高了。【潘雁,林伟,祝跃飞. 渐进式的协议状态机主动推断方法 [J/OL]. 网 络 与 信 息 安 全 学 报 ,2022(2022-05-09) [2022-05-30]. https://kns.cnki.net/kcms2/article/abstract? v=3uoqIhG8C45S0n9fL2suRadTyEVl2pW9UrhTDCdPD66 Sr0yZ-At6r3ZZ0-X5GzOOL6Lq-Z3hGgLSWHH-XlVloJx 0BboRkqHq&uniplatform=NZKPT.】

4、状态机算法分析

  • 状态机推断的算法较少,近几年来关于状态机推断方面的重大创新也较罕见,表1从几个方面对本文所提的状态机方法进行了对比。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】—— lambda表达式

目录 (一)应用场景 (二)lambda 语法 (三)示例分析 (四)lambda参数形式 4.1 无参数 4.2 一个参数 4.3 默认参数 4.4 可变参数 :*args 4.5 可变参数 :…

需求响应+配网重构!含高比例新能源和用户需求响应的配电网重构程序代码!

前言 配电网重构作为配电网优化运行的手段之一,通过改变配电网的拓扑结构,以达到降低网损、改善电压分布、提升系统的可靠性与经济性等目的。近年来,随着全球能源消耗快速增长以及环境的日趋恶化,清洁能源飞速发展,分…

orin部署tensorrt、cuda、cudnn、pytorch

绝大部分参考https://blog.csdn.net/qq_41336087/article/details/129661850 非orin可以参考https://blog.csdn.net/JineD/article/details/131201121 报错显卡驱动安装535没法安装、原始是和l4t-cuda的部分文件冲突 Options marked [*] produce a lot of output - pipe it th…

基于SSM的“酒店管理系统”的设计与实现(源码+数据库+文档)

基于SSM的“酒店管理系统”的设计与实现(源码数据库文档) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 首页 管理员登录页面 用户管理页面 客房信息查询 酒店详细信息 后台…

rmxprt转换的3D模型只有一半?---模大狮模型网

在3D建模和渲染的工作流程中,我们经常需要用到各种转换工具来兼容不同平台或软件之间的模型格式。rmxprt(或其他类似的模型转换工具)就是其中的一种,它能够将模型从一种格式转换为另一种格式。然而,有时在转换过程中可能会遇到一些问题&#…

工作中的冲突,职场人士应如何化解

在职场中,冲突和分歧是不可避免的现象。它们可能来源于工作分配不均、目标不一致、价值观差异或个性不合等。面对这些冲突和分歧,我们需要具备有效的冲突管理技巧来化解问题,以维持团队的和谐与工作效率。 分析冲突的原因至关重要。通常来说&…

StringMVC

目录 一,MVC定义 二,SpringMVC的基本使用 2.1建立连接 - RequestMapping("/...") ​编辑 2.2请求 1.传递单个参数 2.传递多个参数 3.传递对象 4.参数重命名 5.传递数组 6. 传递集合 7.传递JSON数据 8. 获取url中数据 9. 传递文…

uniapp+canvas实现逐字手写效果

在移动端使用 UniApp 进行逐字手写的功能。用户可以在一个 inputCanvas 上书写单个字,然后在特定时间后将这个字添加到 outputCanvas 上,形成一个逐字的手写效果。用户还可以保存整幅图像或者撤销上一个添加的字。 初始化 Canvas: 使用 uni.c…

每日一题《leetcode--1472.设计浏览器历史记录》

https://leetcode.cn/problems/design-browser-history/ 这里我是用双栈实现前进和后退。 #define URL_SIZE 21 #define STACK_SIZE 5000typedef struct {char *BackStack[STACK_SIZE]; //回退栈char *ForwardStack[STACK_SIZE]; //前进栈int BackTop; //回退栈的栈顶下标…

3D瓦片地图组件上线|提供DEM数据接入,全方位呈现三维地图地形!

在用户调研中,我们了解到很多用户自身的可视化项目,需要在垂直空间上表现一些业务,例如:3D地形效果,数据底板建设等,而传统的地图效果不满足此用户需求。瓦片地图能够无限加载大地图,以更三维的…

云端升级,智能适配——LDR6282,USB-C接口显示器的最佳选择

华为MateView USB-C接口显示器技术深度解析与科普 随着科技的飞速发展,终端显示产品也迎来了全新的变革。在众多更新迭代中,华为MateView显示器凭借其独特的USB-C接口设计,为用户带来了前所未有的便捷体验。本文将带您深入探索这款显示器的技…

uniapp开发vue3监听右滑返回操作,返回到指定页面

想要在uniapp框架中监听左滑或者右滑手势,需要使用touchstart和touchend两个api,因为没有原生的左右滑监听api,所以我们只能依靠这两个api来获取滑动开始时候的x坐标和滑动结束后的x坐标做比对,右滑的话,结束时候的x坐…

Flutter 页面布局 Flex Expanded弹性布局

题记 —— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天。 什么是弹性布局(Flex)? 弹性布局(Flex)是一种基于弹性盒子模型的布局方式,类…

【如何让论文中摘要后面的内容不出现在目录中】

首先选择摘要二字,设置为一级标题,然后选择摘要后面的内容设置为正文样式,再选择这一部分看一下是不是都是正文大纲级别,如果是那就可以了。 具体流程如下 1、选择摘要二字,设置为一级标题样式 2、选择摘要后面的文…

Springboot零星知识点1

1、请求路径的组成 2、多个环境配置文件 3、对 自定义的属性 增加文字描述,而且IDEA不会警告 4、读取属性值的两种方式 5、东东

TP6 模型批量插入获取插入的自增ID

在TP框架中,数据插入 添加一条数据,返回添加成功的条数 $data [foo > bar, bar > foo]; Db::name(user)->save($data); // 或者 Db::name(user)->insert($data); 批量添加 $data [[foo > bar, bar > foo],[foo > bar1, bar > foo1],[…

【管理咨询宝藏112】波士顿现场精益生产及运营管理整体优化方案

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏112】波士顿现场精益生产及运营管理整体优化方案 【格式】PDF版本 【关键词】波士顿咨询、精益生产、运营提升 【核心观点】 - 家电市场的发展要…

推荐几款新手学习编程的网站

免费在线开发平台 介绍一款编程平台,专为学生和开发者量身打造!平台拥有近4000道编程题目,支持多种编程语言(包括C、C、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3和C#),为您提供全面的学…

蓝桥杯-数三角(ac代码时间复杂度分析)

问题描述 小明在二维坐标系中放置了 ( n ) 个点,他想在其中选出一个包含三个点的子集,这三个点能组成三角形。然而这样的方案太多了,他决定只选择那些可以组成等腰三角形的方案。请帮他计算出一共有多少种选法可以组成等腰三角形&#xff1f…

dubbo复习:(7)使用sentinel对dubbo服务进行限流

一、下载sentinel-dashboard 并启动 java -Dserver.port8080 -Dcsp.sentinel.dashboard.serverlocalhost:8080 -Dproject.namesentinel-dashboard -jar sentinel-dashboard.jar二、在spring boot应用中增加sentinel相关依赖 <dependency><groupId>com.alibaba.csp…