[论文阅读] (37)CCS21 DeepAID:基于深度学习的异常检测(解释)
祝大家新春快乐,蛇年吉祥!
《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期待与您前行,加油。
该文是贵大0624团队论文学习笔记,分享者陈超帆同学,未来我们每周至少分享一篇论文笔记。前一篇博客介绍了Computers & Security2022的MPSAutodetect,提出基于堆叠去噪自编码器的恶意Powershell脚本检测模型。这篇文章将带来CCS’21清华大学的DeepAID,提出一种基于深度学习的异常检测模型,一个能够有效融合深度学习优势与可解释性机制,且具备良好适应性和扩展性的系统。本文将无监督模型的解释聚焦于寻找异常偏离正常数据的原因,使深度学习模型在安全领域的应用更具可解释性;并以 Distiller 用 FSM 整合专家知识与反馈,独特设计实现规则匹配、泛化及未知威胁检测,提升系统性能。由于我们还在不断成长和学习中,写得不好的地方还请海涵。希望这篇文章对您有所帮助,这些大佬真值得我们学习。fighting!
- 欢迎关注作者新建的『网络攻防和AI安全之家』知识星球(文章末尾)
原文作者:Dongqi Han, Zhiliang Wang, Wenqi Chen, et al.
原文标题:DeepAID: Interpreting and Improving Deep Learning-based Anomaly Detection in Security Applications
原文链接:https://dl.acm.org/doi/pdf/10.1145/3460120.3484589
发表会议:CCS 2021
笔记作者:贵大0624团队 陈超帆
一.摘要
无监督深度学习(DL)技术已被广泛应用于各种与安全相关的异常检测应用中,这是因为深度神经网络(DNN)具有检测不可预见威胁的巨大潜力和卓越性能。 然而,由于缺乏可解释性,DL 模型在实践中的应用遇到了主要障碍。 遗憾的是,现有的解释方法是针对有监督学习模型和/或非安全领域提出的,无法适应无监督 DL 模型,也无法满足安全领域的特殊要求。
本文提出了 DeepAID,这是一个通用框架,旨在解释安全领域中基于 DL 的异常检测系统,以及在解释的基础上提高这些系统的实用性。 文章首先为无监督 DNNs 提出了一种新颖的解释方法,即针对安全领域提出并解决具有特殊约束条件的精心设计的优化问题。 然后,文章基于所提出的解释器和基于模型的扩展 Distiller 提供了几种应用,通过解决特定领域的问题来改进安全系统。文章将 DeepAID 应用于三类与安全相关的异常检测系统,并广泛评估了DeepAID的解释器与具有代表性的先前作品。 实验结果表明,DeepAID 可以为无监督 DL 模型提供高质量的解释,同时满足安全领域的一些特殊要求。文章还提供了几个用例,说明 DeepAID 可以帮助安全操作员理解模型决策、诊断系统错误、向模型提供反馈并减少误报。
二.引言及前置知识
1.评估的安全系统
文章使用了三个安全系统Kitsune、DeepLog 和 GLGV来评估所提出的解释和改进方案。
- Kitsune使用的数据集主要来源于物联网(IoT)网络。这些数据集用于训练和评估基于表格数据的 Kitsune 系统在网络入侵检测方面的性能。地址:https://github.com/HuskyDG/magisk-files/releases
- DeepLog使用由 Hadoop 文件系统日志的关键数字序列组成的HDFS 数据集。通过对 HDFS 日志数据的分析,DeepLog 系统可以识别出不符合正常时间序列模式的异常情况,从而帮助检测和诊断文件系统中的问题。地址:https://github.com/Thijsvanede/DeepLog
- GLGV使用收集了真实内部计算机网络 58 天内的大量多源事件的 LANL - CMSCSE 数据集。GLGV 系统基于图数据,利用该数据集检测高级持续性威胁(APT)活动中的横向移动,通过构建认证图并分析图中的节点和边的关系来识别异常的认证行为。
代表性的深度学习解释器如下:
- 比较了多种代表性的深度学习解释器(包括 DeepAID)在支持无监督学习Support Unsupervised、不同数据类型、稳定性Stable、效率Efficient和鲁棒性Robust等方面的特性。可以看出DeepAID 在支持无监督学习、适应多种数据类型以及在稳定性、效率和鲁棒性方面都具有优势。
2.前置知识
(1)深度学习模型的可解释性问题
(2)为什么要用有限状态机(FSM)?
异常检测系统现有工作:
- 基于重建的方法:利用深度学习模型(如自编码器 Autoencoder)对正常数据进行学习和重建,通过计算输入数据与重建数据之间的差异(如重建误差 RMSE)来检测异常。
- 基于分类的方法:将异常检测视为分类问题,通过训练分类模型来区分正常和异常数据。这些模型学习正常数据的特征和模式,将不符合这些模式的数据分类为异常。
现有工作的不足:
- 缺乏对异常的有效解释:现有的深度学习异常检测方法大多仅关注检测精度,而忽略了解释能力,难以建立对系统决策的信任,也不利于根据异常情况采取针对性的措施。
- 不适用无监督学习:现有针对深度学习模型的解释方法主要针对有监督学习模型和非安全领域,不适用于无监督深度学习模型在安全领域的应用。
- 模型可扩展性和适应性差:许多现有模型在面对新的异常类型或数据分布变化时,难以快速适应和扩展。
因此,开发一个能够有效融合深度学习优势与可解释性机制,且具备良好适应性和扩展性的系统迫在眉睫。研究需求:
- 异常检测框架不仅能够准确检测异常,还能为检测结果提供有效的解释。
- 模型能够不断学习和更新,快速适应新出现的异常模式或数据分布的变化。
三.本文框架
本文设计的框架如下图所示:
- 左侧是原始数据(如网络流量、系统日志等)的来源,这些数据通常是非结构化的,无法直接输入深度学习模型。因此,需要经过预处理和特征工程,将其转换为适合模型处理的格式(如表格、时间序列或图结构),然后输入到基于深度学习的异常检测系统中。
- 右边部分突出了 DeepAID 的两个核心模块,即Interpreter和Distiller。Interpreter 专注于为无监督深度学习模型中的异常提供解释,通过特定的技术和算法,帮助安全从业者理解异常发生的原因;Distiller 则作为基于 Interpreter 解释结果的扩展,进一步将这些解释和专家反馈提炼为有限状态机(FSM)模型,以提高安全系统的实用性,使其更易于理解、调试和优化。
本文的研究目标及创新点:
- 设计解决安全系统决策理解、诊断调整、误报减少等问题。
- 数据类型针对性处理:针对表格、时间序列和图数据这三种不同的数据类型,分别设计了独特的解释方法。
- 提升系统可解释性与实用性:将无监督模型的解释聚焦于寻找异常偏离正常数据的原因使深度学习模型在安全领域的应用更具可解释性。
- 模型的可扩展性:以 Distiller 用 FSM 整合专家知识与反馈,独特设计实现规则匹配、泛化及未知威胁检测,提升系统性能。
四.具体实现
1.DeepAID 的工作流程
具体工作流程如下图所示:
(1)第一部分,该系统的数据输入。
基于深度学习的异常检测系统对输入数据(如网络流量、系统日志等)进行处理,将对应的异常数据输入到 DeepAID 的 Interpreter 模块。
(2)第二部分,基于 Interpreter 结果的决策与操作。
Interpreter模块根据数据类型(表格、时间序列或图)采用相应的基于无监督的模型解释方法(即对于给定的异常Xo,inter找到一个被视为正常的参考x*,关注异常偏离正常数据的原因并给出解释),再将这些解释以一种直观且易于理解的方式呈现给安全操作员。
安全操作员根据 Interpreter 提供的解释来判断模型决策是否合理。如果解释合理且符合他们对系统行为的预期,那么他们可以初步建立对模型决策的信任。除了理解已知的异常情况,Interpreter 还可能揭示一些之前未被发现或未被明确理解的系统行为模式或异常特征,这有助于发现潜在的安全风险或新的攻击模式。当解释结果不合理或与预期不符时,安全操作员可以利用这些信息深入诊断系统中可能存在的错误。例如,可能发现特征提取过程中的问题、模型过拟合或欠拟合现象,或者是数据本身存在的偏差等。
(3)第三部分,Distiller模块更新规则。
如果 Interpreter 的解释被认为是合理的,安全操作员可以进一步将这些解释结果提供给专家进行审查。专家根据自己的专业知识和经验,对解释结果给出反馈,这些反馈可以是对异常类型的确认、对系统行为的新见解,或者是对模型改进的建议等。这些反馈信息被输入到 Distiller 模块中。
Distiller 再根据专家反馈,将其转化为系统可以理解和应用的规则,并更新系统的内部模型(如有限状态机 FSM 模型)。DeepAID 还可以通过 Distiller 来帮助减少误报。当系统检测到一个异常并被标记为可能的误报时,Distiller 可以根据之前积累的规则和反馈信息,对该异常进行进一步的分析和判断。如果根据现有知识可以确定该异常为误报,系统可以采取相应的措施,如调整检测阈值、优化模型参数或改进特征工程等,以减少类似误报的出现。
2.Distiller工作流程
Deep AID 中的 Distiller 模型是由两个有限状态机构成。图 3 展示了 Distiller 模型的两个有限状态机如何协同实现对异常解释的建模以及根据专家反馈进行决策的过程。将解释向量(x°~ x )的每个维度的值范围划分为M个等长区间,这样总共会产生M×N个状态,其中N是特征维度数量。例如,如果有5个特征维度(N=5),并且每个维度的值范围被划分为3个区间(M=3),那么第一个FSM就会有3×5=15个状态。
接着介绍这两个FSM分别对应的状态转移:
- 第一个 FSM 主要负责对异常解释进行建模,通过将异常解释映射到特定的状态序列,捕捉异常在不同特征维度上的特征模式。如果某个特征维度对异常判断的影响较大(即有效性高),那么它所对应的状态在转移过程中会更优先被考虑,而有效性较低的状态则在后续步骤中被涉及。也就是图3中的黑色箭头。
- 第二个 FSM 则专注于建立从异常解释到专家反馈的映射关系。一旦确定了异常解释在第一个FSM中的状态序列,就可以直接根据这个状态序列转移到对应的专家反馈状态,从而将异常解释与专家知识结合。
- 当第一个 FSM 确定了异常解释的状态序列后,第二个 FSM 根据这个状态序列直接转移到相应的专家反馈状态,从而实现将专家知识引入系统决策过程。
图4则是在实际的工作中,Distiller是如何根据专家反馈对规则进行迭代更新。过滤器Distiller根据专家反馈更新规则的流程如下:
- ①初始化阶段(Empty Distiller):开始时,Distiller处于初始状态,没有任何已有的规则和反馈信息。
- ②更新规则(Update 1st rule):当分析师遇到异常A1(例如IP扫描)时,首先通过DeepAID的解释器获取其解释()。分析师根据自己的理解和经验将A1标记为“Scanning”,这就形成了一条新的规则(s1s2s3->r1)。③ 然后,Distiller根据这条规则更新其内部的两个有限状态机(FSM)的转移矩阵。在第一个FSM中,将与异常A1的解释向量对应的状态映射到新的反馈状态“Scanning”(r1),并更新相关的转移概率(按照重要性s1s2s3进行排序连接。由于此时s1s2s3仅仅被关联到Scanning攻击上,没有其他的可能性,所以概率都为1)。相同的在第二个FSM中,也相应地建立从到的转移关系。
- ③第一次测试异常(Test two anomalies):接着对异常A1和A2进行测试。对于A1,其解释向量首先被映射到第一个FSM中的状态序列s1s2s3。然后,根据两个FSM中的转移概率,计算A1与各个反馈状态的匹配概率。在这个例子中,由于之前刚刚更新了规则,使得从s1s2s3到“Scanning”()的转移概率很高,所以计算得出,这意味着Distiller非常确定A1属于“Scanning”类型的异常,与分析师的标记一致。对于A2,其解释向量映射到状态序列s4s5s3,计算得到概率为0.33,这表明A2与“Scanning”有一定的相似性,但匹配概率相对较低。这说明即使A2与A1不完全相同,但基于Distiller学习到的规则,它也能识别出A2可能具有类似的异常特征。
- ④第二次更新规则(Update 2nd rule):分析师进一步分析A2,发现它实际上是“Port Scan”类型的异常,于是再次更新Distiller的规则,将A2的解释向量对应的状态s4s5s3映射到新的反馈状态“Port Scan”(r2),并更新两个FSM中的相应转移关系。
- ⑤第二次测试异常(Test two anomalies):再次对A1和A2进行测试时,对于A1,映射到r1攻击的概率变成了0.83,因为s3同样可能出现在r2的特征序列中。而对于A2,现在计算映射到r2的攻击的概率变成了0.83,因为s3同样可能出现在r1的特征序列中。
五.实验评估
1.数据集
- Kitsune:使用的数据集主要来源于物联网(IoT)网络。这些数据集用于训练和评估基于表格数据的 Kitsune 系统在网络入侵检测方面的性能。
https://github.com/HuskyDG/magisk-files/releases - DeepLog:使用由 Hadoop 文件系统日志的关键数字序列组成的HDFS 数据集。通过对 HDFS 日志数据的分析,DeepLog 系统可以识别出不符合正常时间序列模式的异常情况,从而帮助检测和诊断文件系统中的问题。
https://github.com/Thijsvanede/DeepLog - GLGV: 使用收集了真实内部计算机网络 58 天内的大量多源事件的 LANL - CMSCSE 数据集。GLGV 系统基于图数据,利用该数据集检测高级持续性威胁(APT)活动中的横向移动,通过构建认证图并分析图中的节点和边的关系来识别异常的认证行为。
2.Interpreter效率&准确性表现
图6是不同解释器在解释 2000 个异常时的运行时间对比,实验结果表明DeepAID 和 DeepLIFT 在效率方面比其他方法快至少两个数量级。
图8展示的是在 Kitsune 系统处理 Mirai 僵尸网络流量时,发现了一些具有极高重建误差(RMSE)的假阳性(FP)情况。通过 DeepAID 的解释器的解释结果(如以表 3 © 为代表)中发现,解释器认为这些 FP 主要是由与协方差(cov.)或皮尔逊相关系数(pcc.)相关的过大特征值引起的。
随后,研究人员修改了特征提取算法,经过改进后,Kitsune 系统中的 FP 数量大幅减少(降低了 94.92%),同时对真正异常的检测影响较小(仅下降了 0.17%)。这充分证明了 DeepAID 的解释器在帮助诊断系统错误、定位问题根源以及指导改进措施方面的有效性。
3.Interpreter基于距离的攻击鲁棒性评估
图12是分别改变解释维度和改变攻击尺度下的Interpreter鲁棒性表现,其中图(a)是在改变解释维度时的实验结果,实验结果表明DeepAID 解释器在 L0 攻击下表现出很高的鲁棒性且在 L2 攻击下也表现出较强的鲁棒性。图(b)则是在改变攻击尺度时的实验结果,实验结果表明DeepAID 对 L0 攻击的鲁棒性不受攻击尺度的显著影响且对 L2 攻击具有一定的鲁棒性
4.Distiller可靠性评估
表4是基于 Distiller 的可靠检测性能评估,从表4中可以看出,在DeepAID加持下的Kitsune模型在处理多类数据时,无论是在已知类别分类的准确性( f1-micro、f1-macro)还是在未知威胁检测能力(UACC)上,均表现出色,并且在泛化能力(f1-micro、f1-macro)方面远超baseline方法。
当K值取值较大时模型的表现更好,且当K=15时,UACC 达到 > 98%,而未使用 DeepAID 的 Kitsune 系统本身在检测未知威胁方面能力较弱(UACC = 0.28)。这表明 DeepAID 通过 Distiller 能够显著提高系统对未知威胁的检测能力,使其能够更好地应对新型攻击,增强了系统的安全性和可靠性。
5.DeepAID重训模型减少误报
通过重新训练深度学习模型来减少误报的实验结果,DeepAID 在降低误报率方面的表现远远优于随机选择方法。在较低的重新训练比例下,DeepAID 就能实现较高的误报率减少量,这充分体现出它能够更精准地识别出那些致使模型产生误报的关键样本。
六.总结及个人感受
本文提出并验证了DeepAID模型,具体贡献如下:
- 提出了 DeepAID 这一通用框架,包含 Interpreter 和 Distiller 两个关键技术。Interpreter 通过优化带特殊约束的目标函数,能为无监督 DNN 提供高保真、可读、稳定、鲁棒且高效的解释,有效满足了安全领域的特殊需求。
- 通过在三种安全相关的异常检测系统上应用和评估,证明了 DeepAID 能为基于深度学习的安全应用提供高质量解释,并且在理解模型决策、发现新知识、诊断错误和减少误报等方面表现出色,显著提升了安全系统的实用性。
本文作者提出了未来该方向工作的重点:
- 进一步研究 DeepAID 的对抗鲁棒性。当前主要针对优化和距离攻击进行了评估,但仍可能受到其他攻击(如模型中毒、搜索过程劫持、制造特殊异常破坏简洁性等)的影响,需探索应对更多攻击类型的方法,增强框架的安全性。
- 扩展 Distiller 到其他数据类型。当前主要针对表格数据实现了 Distiller,未来需将其扩展到时间序列、图数据等其他类型,以提升框架在不同数据场景下的应用能力。
可解释性工作是各领域的研究重点,本文通过将有限状态机引入异常检测是一个亮点,读者可以详细研究具体过程(Interpreter和Distiller)。同时,本文设计详细的对比实验,值得我们学习,但遗憾表格、时间序列、图数据仅使用了表格进行实验,还有部分工作需要完善。未来,我们小组希望结合部分优势进行深入研究。
最后,祝大家新春快乐,阖家幸福,感谢这一年来大家的陪伴!
2024年4月28日是Eastmount的安全星球——『网络攻防和AI安全之家』正式创建和运营的日子,该星球目前主营业务为 安全零基础答疑、安全技术分享、AI安全技术分享、AI安全论文交流、威胁情报每日推送、网络攻防技术总结、系统安全技术实战、面试求职、安全考研考博、简历修改及润色、学术交流及答疑、人脉触达、认知提升等。下面是星球的新人券,欢迎新老博友和朋友加入,一起分享更多安全知识,比较良心的星球,非常适合初学者和换安全专业的读者学习。
目前收到了很多博友、朋友和老师的支持和点赞,尤其是一些看了我文章多年的老粉,购买来感谢,真的很感动,类目。未来,我将分享更多高质量文章,更多安全干货,真心帮助到大家。虽然起步晚,但贵在坚持,像十多年如一日的博客分享那样,脚踏实地,只争朝夕。继续加油,再次感谢!
(By:Eastmount 2025-01-28 周二夜于贵阳 http://blog.csdn.net/eastmount/ )
前文赏析:
- [论文阅读] (01)拿什么来拯救我的拖延症?初学者如何提升编程兴趣及LATEX入门详解
- [论文阅读] (02)SP2019-Neural Cleanse: Identifying and Mitigating Backdoor Attacks in DNN
- [论文阅读] (03)清华张超老师 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing
- [论文阅读] (04)人工智能真的安全吗?浙大团队外滩大会分享AI对抗样本技术
- [论文阅读] (05)NLP知识总结及NLP论文撰写之道——Pvop老师
- [论文阅读] (06)万字详解什么是生成对抗网络GAN?经典论文及案例普及
- [论文阅读] (07)RAID2020 Cyber Threat Intelligence Modeling Based on Heterogeneous GCN
- [论文阅读] (08)NDSS2020 UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats
- [论文阅读] (09)S&P2019 HOLMES Real-time APT Detection through Correlation of Suspicious Information Flow
- [论文阅读] (10)基于溯源图的APT攻击检测安全顶会总结
- [论文阅读] (11)ACE算法和暗通道先验图像去雾算法(Rizzi | 何恺明老师)
- [论文阅读] (12)英文论文引言introduction如何撰写及精句摘抄——以入侵检测系统(IDS)为例
- [论文阅读] (13)英文论文模型设计(Model Design)如何撰写及精句摘抄——以入侵检测系统(IDS)为例
- [论文阅读] (14)英文论文实验评估(Evaluation)如何撰写及精句摘抄(上)——以入侵检测系统(IDS)为例
- [论文阅读] (15)英文SCI论文审稿意见及应对策略学习笔记总结
- [论文阅读] (16)Powershell恶意代码检测论文总结及抽象语法树(AST)提取
- [论文阅读] (17)CCS2019 针对PowerShell脚本的轻量级去混淆和语义感知攻击检测
- [论文阅读] (18)英文论文Model Design和Overview如何撰写及精句摘抄——以系统AI安全顶会为例
- [论文阅读] (19)英文论文Evaluation(实验数据集、指标和环境)如何描述及精句摘抄——以系统AI安全顶会为例
- [论文阅读] (20)USENIXSec21 DeepReflect:通过二进制重构发现恶意功能(恶意代码ROI分析经典)
- [论文阅读] (21)S&P21 Survivalism: Systematic Analysis of Windows Malware Living-Off-The-Land (经典离地攻击)
- [论文阅读] (22)图神经网络及认知推理总结和普及-清华唐杰老师
- [论文阅读] (23)恶意代码作者溯源(去匿名化)经典论文阅读:二进制和源代码对比
- [论文阅读] (24)向量表征:从Word2vec和Doc2vec到Deepwalk和Graph2vec,再到Asm2vec和Log2vec(一)
- [论文阅读] (25)向量表征经典之DeepWalk:从Word2vec到DeepWalk,再到Asm2vec和Log2vec(二)
- [论文阅读] (26)基于Excel可视化分析的论文实验图表绘制总结——以电影市场为例
- [论文阅读] (27)AAAI20 Order Matters: 二进制代码相似性检测(腾讯科恩实验室)
- [论文阅读] (28)李沐老师视频学习——1.研究的艺术·跟读者建立联系
- [论文阅读] (29)李沐老师视频学习——2.研究的艺术·明白问题的重要性
- [论文阅读] (30)李沐老师视频学习——3.研究的艺术·讲好故事和论点
- [论文阅读] (31)李沐老师视频学习——4.研究的艺术·理由、论据和担保
- [论文阅读] (32)南洋理工大学刘杨教授——网络空间安全和AIGC整合之道学习笔记及强推(InForSec)
- [论文阅读] (33)NDSS2024 Summer系统安全和恶意代码分析方向相关论文汇总
- [论文阅读] (34)EWAS2024 基于SGDC的轻量级入侵检测系统
- [论文阅读] (35)TIFS24 MEGR-APT:基于攻击表示学习的高效内存APT猎杀系统
- [论文阅读] (36)C&S22 MPSAutodetect:基于自编码器的恶意Powershell脚本检测模型
- [论文阅读] (37)CCS21 DeepAID:基于深度学习的异常检测(解释)
相关文章:
[论文阅读] (37)CCS21 DeepAID:基于深度学习的异常检测(解释)
祝大家新春快乐,蛇年吉祥! 《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正࿰…...
常见端口的攻击思路
端口号端口说明攻击方向21/22/69FTP/TFTP文件传输协议匿名上传/下载、嗅探、爆破2049NFS服务配置不当139Sanba服务爆破、远程代码执行389Ldap目录访问协议注入、匿名访问、弱口令22SSH远程连接爆破、SSH映射隧道搭建、文件传输23Telnet远程连接爆破、嗅探、弱口令3389RDP远程桌…...
复古壁纸中棕色系和米色系哪个更受欢迎?
根据最新的搜索结果,我们可以看到棕色系和米色系在复古壁纸设计中都非常受欢迎。以下是对这两种颜色系受欢迎程度的分析: 棕色系 受欢迎程度:棕色系在复古壁纸中非常受欢迎,因为它能够营造出温暖、质朴和自然的氛围。棕色系的壁纸…...
RocketMQ消息是如何存储的?
大家好,我是锋哥。今天分享关于【RocketMQ消息是如何存储的?】面试题。希望对大家有帮助; RocketMQ消息是如何存储的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RocketMQ 使用了一个高性能、分布式的消息存储架构…...
在FreeBSD下安装Ollama并体验DeepSeek r1大模型
在FreeBSD下安装Ollama并体验DeepSeek r1大模型 在FreeBSD下安装Ollama 直接使用pkg安装即可: sudo pkg install ollama 安装完成后,提示: You installed ollama: the AI model runner. To run ollama, plese open 2 terminals. 1. In t…...
[250128] Apache HTTP Server 2.4.63 发布 | Arm 发布首个芯片系统架构的公开规范
目录 Apache HTTP Server 2.4.63 发布,十五年创新成果!Arm 发布首个芯片系统架构的公开规范 Apache HTTP Server 2.4.63 发布,十五年创新成果! Apache 软件基金会和 Apache HTTP Server 项目组自豪地宣布 Apache HTTP Server 2.4…...
为什么要学习rust
内存管理:对于我来说,我就喜欢它的内存管理。我做了一个webapi,取100万行数据,导出到xlsx,再把这个xlsx文件发送给前端。分别用了java、c#、go和rust进行了相同的操作。只有rust做到了,启动时8MB内存&#…...
Linux进程调度与等待:背后的机制与实现
个人主页:chian-ocean 文章专栏-Linux 前言: 当一个进程发起某种操作(如I/O请求、信号、锁的获取等),但该操作需要的资源暂时不可用时,进程会被操作系统挂起,进入“等待队列”或“阻塞状态”。…...
Linux任务管理与守护进程
文章目录 🍅任务管理进程组概念作业概念会话概念相关操作前台进程&后台进程jobsfgbgps命令查看指定的选项 🫒守护进程守护进程的概念作用守护进程的查看守护进程的创建原生创建守护进程调用daemon函数创建守护进程模拟实现daemon函数 🍅任…...
《Trustzone/TEE/安全从入门到精通-标准版》
CSDN学院课程连接:https://edu.csdn.net/course/detail/39573 讲师介绍 拥有 12 年手机安全、汽车安全、芯片安全开发经验,擅长 Trustzone/TEE/ 安全的设计与开发,对 ARM 架构的安全领域有着深入的研究和丰富的实践经验,能够将复杂的安全知识和处理器架构知识进行系统整…...
java 字符串日期字段格式化前端显示
在 Java 应用程序中,如果你有一个字符串类型的日期字段,并希望将其格式化后显示在前端,可以通过多种方式实现。这通常涉及到在后端将字符串转换为 Date 或 LocalDateTime 等对象,然后使用适当的注解或配置来确保它们以正确的格式序…...
LabVIEW橡胶动态特性测试系统
本文介绍了一个利用LabVIEW软件和NI高速数据采集设备构建的橡胶动态特性测试系统。该系统实现了橡胶材料动态性能的精确测量,并通过虚拟仪器技术,提高了测试数据的处理效率和准确性。系统支持实时数据处理和多种信号的动态分析,适用于工业和科…...
deepseek-r1 本地部署
deepseek 最近太火了 1:环境 win10 cpu 6c 内存 16G 2: 部署 1>首先下载ollama 官网:https://ollama.com ollama 安装在c盘 模型可以配置下载到其他盘 OLLAMA_MODELS D:\Ollama 2>下载模型并运行 ollama run deepseek-r1:<标签> 1.5b 7b 8…...
28. 【.NET 8 实战--孢子记账--从单体到微服务】--简易报表--报表定时器与报表数据修正
这篇文章是《.NET 8 实战–孢子记账–从单体到微服务》系列专栏的《单体应用》专栏的最后一片和开发有关的文章。在这片文章中我们一起来实现一个数据统计的功能:报表数据汇总。这个功能为用户查看月度、年度、季度报表提供数据支持。 一、需求 数据统计方面&…...
具身智能技术趋势
参考: 【北京大学-董豪】具身智能技术趋势分析 2024.8 回答了具身智能技术G3、G4的必要性,以及真实数据、仿真数据、互联网数据之间的关系 具身智能趋势 趋势:寻求一个通用路径实现所有的上肢操作 要求:① 低成本 ② 拓展到所有…...
JavaScript逆向高阶指南:突破基础,掌握核心逆向技术
JavaScript逆向高阶指南:突破基础,掌握核心逆向技术 JavaScript逆向工程是Web开发者和安全分析师的核心竞争力。无论是解析混淆代码、分析压缩脚本,还是逆向Web应用架构,掌握高阶逆向技术都将助您深入理解复杂JavaScript逻辑。本…...
C#面试常考随笔6:ArrayList和 List的主要区别?
在 C# 中,ArrayList和List<T>(泛型列表)都可用于存储一组对象。推荐优先使用List<T>,因为它具有更好的类型安全性、性能和语法简洁性,并且提供了更丰富的功能。只有在需要与旧代码兼容或存储不同类型对象的…...
【数据结构】 并查集 + 路径压缩与按秩合并 python
目录 前言模板朴素实现路径压缩按秩合并按树高为秩按节点数为秩 总结 前言 并查集的基本实现通常使用森林来表示不同的集合,每个集合用一棵树表示,树的每个节点有一个指向其父节点的指针。 如果一个节点是它自己的父节点,那么它就是该集合的代…...
使用 Redis List 和 Pub/Sub 实现简单的消息队列
使用 Redis List 和 Pub/Sub 实现简单的消息队列 Redis 本身不是专门的消息队列系统,但它提供了多种数据结构(如 List、Pub/Sub、Stream)来实现消息队列功能。根据不同的业务需求,可以选择不同的方式: 在 Redis 中&a…...
aerodrome交易所读合约分析
池地址 0xb2cc224c1c9fee385f8ad6a55b4d94e92359dc59token0 0x4200000000000000000000000000000000000006token1 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913tickSpacing 100stakedLiquidity 4579376109215388530 snapshotCumulativesInside tickLower tickUpperslot0 …...
mybatis(112/134)
多对一 第一种方法: 一的表参数设置: <association property"clazz" javaType"Clazz"> <id property"cid" column"cid"/> <result property"cname" column"cname"/> <…...
Node.js与MySQL模块结合:打造安全高效的用户信息管理系统
摘要 本文探讨使用Node.js构建前端项目并导入MySQL模块创建数据库连接对象的方法。文中讲解了共享数据库连接对象,定义SQL语句查询和更新用户信息(排除密码字段以保护隐私),以及根据用户ID更新基本信息、重置密码和更新头像的具体…...
【C++】设计模式详解:单例模式
文章目录 Ⅰ. 设计一个类,不允许被拷贝Ⅱ. 请设计一个类,只能在堆上创建对象Ⅲ. 请设计一个类,只能在栈上创建对象Ⅳ. 请设计一个类,不能被继承Ⅴ. 请设计一个类,只能创建一个对象(单例模式)&am…...
在ubuntu下一键安装 Open WebUI
该脚本用于自动化安装 Open WebUI,并支持以下功能: 可选跳过 Ollama 安装:通过 --no-ollama 参数跳过 Ollama 的安装。自动清理旧目录:如果安装目录 (~/open-webui) 已存在,脚本会自动删除旧目录并重新安装。完整的依…...
【某大厂一面】数组和链表区别
在 Java 中,数组(Array)和链表(LinkedList)是两种常见的数据结构,它们在存储和操作方式上有显著的区别。了解它们的差异有助于选择适合特定应用场景的结构。下面是数组和链表之间的详细比较。 1. 存储结构…...
MySQL常用数据类型和表的操作
文章目录 (一)常用数据类型1.数值类2.字符串类型3.二进制类型4.日期类型 (二)表的操作1查看指定库中所有表2.创建表3.查看表结构和查看表的创建语句4.修改表5.删除表 (三)总代码 (一)常用数据类型 1.数值类 BIT([M]) 大小:bit M表示每个数的位数,取值范围为1~64,若…...
深入 Rollup:从入门到精通(三)Rollup CLI命令行实战
准备阶段:初始化项目 初始化项目,这里使用的是pnpm,也可以使用yarn或者npm # npm npm init -y # yarn yarn init -y # pnpm pnpm init安装rollup # npm npm install rollup -D # yarn yarn add rollup -D # pnpm pnpm install rollup -D在…...
3.日常英语笔记
screening discrepancies 筛选差异 The team found some screening discrepancies in the data. 团队在数据筛选中发现了些差异。 Don’t tug at it ,or it will fall over and crush you. tug 拉,拽,拖 He tugged the door open with all his might…...
sqlite3 学习笔记
文章目录 前言SQL的概念与表格相关的操作i.创建表格(增)ii 删除表格(删)iii 更改表格(改)iv 查询表格(查) 与记录相关的操作i 插入记录ii 删除记录iii 查询记录iv 修改记录 Linux中使…...
C++ | 红黑树
前言 本篇博客讲解c中数据结构红黑树,看这篇博客之前请先去看: C | AVL树_c avl树能有重复节点吗-CSDN博客 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青…...
使用Ollama 在Ubuntu运行deepseek大模型:以DeepSeek-coder为例
DeepSeek大模型这几天冲上热搜啦! 咱们来亲身感受下DeepSeek模型的魅力吧! 整个操作流程非常简单方便,只需要2步,先安装Ollama,然后执行大模型即可。 安装Ollama 在Ubuntu下安装Ollama非常简单,直接sna…...
詳細講一下RN(React Native)中的列表組件FlatList和SectionList
1. FlatList 基礎使用 import React from react; import { View, Text, FlatList, StyleSheet } from react-native;export const SimpleListDemo: React.FC () > {// 1. 準備數據const data [{ id: 1, title: 項目 1 },{ id: 2, title: 項目 2 },{ id: 3, title: 項目 3…...
《深度揭秘:TPU张量计算架构如何重塑深度学习运算》
在深度学习领域,计算性能始终是推动技术发展的关键因素。从传统CPU到GPU,再到如今大放异彩的TPU(张量处理单元),每一次硬件架构的革新都为深度学习带来了质的飞跃。今天,就让我们深入探讨TPU的张量计算架构…...
QT使用eigen
QT使用eigen 1. 下载eigen https://eigen.tuxfamily.org/index.php?titleMain_Page#Download 下载后解压 2. QT引入eigen eigen源码好像只有头文件,因此只需要引入头文件就好了 qt新建项目后。修改pro文件. INCLUDEPATH E:\222078\qt\eigen-3.4.0\eigen-3.…...
工业“MCU+AI”
随着工业4.0的推进,传统工业设备正向智能化和自动化方向转型。这要求设备具备更高的算力、更强的实时处理能力以及支持AI算法的能力,以应对工业机器人、电机控制、预测性维护等复杂应用场景。 近年来越来越多的芯片厂商纷纷推出工业“MCUAI”产品&#…...
【Linux】Linux C判断两个IPv6地址是否有包含关系
功能说明 要判断两个 IPv6 地址是否具有包含关系,包括前缀的比较,可以通过以下步骤实现: 解析 IPv6 地址和前缀:将两个 IPv6 地址和它们的前缀长度解析为二进制形式。生成掩码:根据前缀长度生成掩码。按位比较&#…...
多模态论文笔记——TECO
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细解读多模态论文TECO(Temporally Consistent Transformer),即时间一致变换器,是一种用于视频生成的创新模型&…...
AI学习(vscode+deepseek+cline)
1、网页生成不成功时,直接根据提示让模型替你解决问题 2、http://localhost:3000 拒绝链接时,cmd输入命令InetMgr,网站右键新建-配置你的网页代码物理地址,这里我还输入本机登录名及密码了,并把端口地址由默认80修改为…...
物业软件推动物业行业数字化转型 实现高效管理和优质客户体验
内容概要 在当今高速发展的数字化时代,物业软件的出现不仅使物业管理变得更加高效,也为行业转型提供了强大的支持。通过整合多种功能,物业软件显著提升了管理效率和客户体验。例如,在线收费和停车管理功能,让业主享受…...
WGCLOUD使用手册 - 登录验证码如何设置
登录页面默认是不用输入验证码的,但是我们也可以根据自己的实际场景,配置登录页面显示验证码,要求用户输入 提示:您需要需要升级到v3.5.3或以上版本,才可以支持此功能 我们在server配置文件里找到配置项vercodeCheck&…...
C# 9.0记录类型:解锁开发效率的魔法密码
一、引言:记录类型的神奇登场 在 C# 的编程世界中,数据结构就像是构建软件大厦的基石,其重要性不言而喻。然而,传统的数据结构定义方式,尤其是在处理简单的数据承载对象时,常常显得繁琐复杂。例如…...
Python 函数魔法书:基础、范例、避坑、测验与项目实战
Python 函数魔法书:基础、范例、避坑、测验与项目实战 内容简介 本系列文章是为 Python3 学习者精心设计的一套全面、实用的学习指南,旨在帮助读者从基础入门到项目实战,全面提升编程能力。文章结构由 5 个版块组成,内容层层递进…...
Unbutu虚拟机+eclipse+CDT编译调试环境搭建
问题1: 安装CDT,直接Help->eclipse Market space-> 搜cdt , install,等待重启即可. 问题2:C变量不识别vector ’could not be resolved 这是库的头文件没加好,右键Properties->C Build->Enviroment,增加…...
项目部署(springboot项目)
1、安装Nginx,并开启 2、前端项目打包:npm run build:prod--->dist 3、后端项目打包:install--->xxx.jar 4、开放需要的端口号:比如我的后端项目端口号为8282,则需要防火墙和服务器同时开发8282端口 5、将di…...
Spring MVC拦截器
文章目录 1. 拦截器(interceptor)的作用2. 拦截器和过滤器区别3. 拦截器是快速入门 1. 拦截器(interceptor)的作用 Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。 将拦截器按一定的顺序联结成一条链,这条…...
Nginx 路由匹配(Nginx Route Matching)
从小白到高手:深入Nginx 路由匹配 在现代互联网应用中,Nginx 作为一款高性能的 Web 服务器,因其灵活性和高效性而广泛应用于各类网站和服务。Nginx 的路由匹配规则是其核心功能之一,负责决定如何处理传入的请求。通过这些规则&am…...
基于RIP的MGRE实验
实验拓扑 实验要求 按照图示配置IP地址配置静态路由协议,搞通公网配置MGRE VPNNHRP的配置配置RIP路由协议来传递两端私网路由测试全网通 实验配置 1、配置IP地址 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 15.0.0.1 24 [R1]int LoopBack 0 [R1-LoopBack0]i…...
Spring Boot 中的事件发布与监听:深入理解 ApplicationEventPublisher(附Demo)
目录 前言1. 基本知识2. Demo3. 实战代码 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 基本的Java知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全&am…...
【Java基础-41.5】深入解析Java异常链:构建清晰的错误追踪体系
在Java编程中,异常处理是保证程序健壮性和可维护性的重要部分。然而,在实际开发中,异常往往不是孤立发生的,而是由一系列相关的异常引发的。为了更好地理解和处理这种复杂的异常场景,Java引入了 异常链(Exc…...
STM32使用VScode开发
文章目录 Makefile形式创建项目新建stm项目下载stm32cubemx新建项目IED makefile保存到本地arm gcc是编译的工具链G++配置编译Cmake +vscode +MSYS2方式bilibiliMSYS2 统一环境配置mingw32-make -> makewindows环境变量Cmake CmakeListnijia 编译输出elfCMAKE_GENERATOR查询…...