[论文阅读] (36)CS22 MPSAutodetect:基于自编码器的恶意Powershell脚本检测模型
《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期待与您前行,加油。
该文是贵大0624团队论文学习笔记,分享者姚迪同学,未来我们每周至少分享一篇论文笔记。前一篇博客介绍了TIFS’24 基于攻击表示学习的高效内存APT猎杀系统(MEGR-APT)。这篇文章将带来Computers & Security2022的MPSAutodetect,提出一种基于堆叠去噪自编码器的恶意Powershell脚本检测模型。本文首次结合SDA(自编码器)来提取PowerShell脚本的关键特征,并使用XGBoost进行分类。由于我们还在不断成长和学习中,写得不好的地方还请海涵。希望这篇文章对您有所帮助,这些大佬真值得我们学习。fighting!
- 欢迎关注作者新建的『网络攻防和AI安全之家』知识星球(文章末尾)
原文作者:Amal Alahmadi, Norah Alkhraan, Wojdan BinSaeedan
原文标题:MPS Autodetect: A Malicious Powershell Script Detection Model Based on Stacked Denoising Auto-Encoder
原文链接:https://www.sciencedirect.com/science/article/pii/S0167404822000578
发表会议:Computers & Security 2022
笔记作者:贵大0624团队 姚迪
一.摘要
PowerShell是一个用于自动化管理任务的重要工具。它是一个预安装在Windows机器上的开源工具,可以在许多其他操作系统上访问。管理员通常使用PowerShell来执行一系列典型的管理任务,例如添加和删除帐户、编辑组以及访问难以找到的用户信息。
然而,研究人员最近发现PowerShell被用来执行各种攻击。这些攻击利用PowerShell的大量属性来访问特权信息,获得对整个机器的控制或在组织中传播。由于这些恶意脚本的混淆性和复杂性,检测成本高昂且困难重重。
在这里,我们提出了恶意PowerShell脚本自动检测(MPSAutodetect),这是一种依靠机器学习技术检测恶意PowerShell脚本的检测模型。 我们的模型是通过使用堆叠去噪自编码器(sda)来提取有意义的特征而构建的。这些有价值的、容易获得的特征被输入到极端梯度增强(XGBoost)分类器中。收集了两个实质性的数据集(已标记和未标记),以监督和半监督的方式训练和测试MPSAutodetect。该数据集包含恶意和良性混淆脚本。实验结果表明,无论从SDA中提取的特征如何,监督方法都能获得更好的检测效果,其真阳性率显著达到98%,假阳性率低至0.6%。因此,对MPSAutodetect的分析表明,该模型在没有手动特征工程的麻烦过程中取得了令人满意的性能。
二.引言及前置知识
PowerShell是一种流行且功能强大的面向对象脚本语言和命令行shell,预安装在Windows机器上。它允许管理员和用户在操作系统上操纵和运行命令。最近,许多报告表明,网络犯罪分子已经利用PowerShell的能力来实施攻击。
与Power-Shell相关的最常见攻击是Livingoff The Land攻击(离地攻击)。这种攻击是指利用系统的本地工具来攻击自身,攻击者使用自动现成的工具反复混淆脚本,导致检测方案面临更大的挑战。此外,大多数PowerShell日志记录在默认情况下是禁用的。因此,恶意的脚本很容易传播。同时,PowerShell命令和文件不会写入磁盘。网络犯罪分子利用这一漏洞几乎没有留下任何活动痕迹供法医分析。
什么是PowerShell?
PowerShell 是一种跨平台的任务自动化解决方案,由命令行 shell、脚本语言和配置管理框架组成。
什么是autoencoder?
autoencoder是一种无监督的学习算法,主要用于数据的降维或者特征的抽取,在深度学习中,autoencoder可用于在训练阶段开始前,确定权重矩阵W的初始值。自动编码器是一种无监督的数据维度压缩和数据特征表达方法。在大部分提到自动编码器的场合,压缩和解压缩的函数是通过神经网络实现。
- 隐藏层从输入到隐藏层即为Encoder(编码器),从隐藏层到输出即为Decoder(解码器)。
powershell检测系统现有工作:
- 利用机器学习算法提出了一个字符级深度神经网络该网络的构建和训练是为了在字符级别检测恶意脚本。考虑使用统一长度的字符来构建字符级的one-hot编码表示脚本。这种向量表示被输入到许多卷积神经网络(CNN)配置以及传统的自然语言处理(NLP)检测器中
- 提出了一种使用混合特征检测恶意PowerShell脚本的方法。他们专注于可以从脚本中提取的特征类型,其中在使用FastText进行脚本嵌入的同时呈现了许多手动提取的特征。从恶意程度的角度分析了这些单个特征之间的差异。特征集合被输入到随机森林分类器中
现有方法的局限:
- 攻击复杂性与检测难度的增加,检测成本高昂且困难重重;
- 恶意脚本种类繁多,行为模式和特征差异很大,使得统一检测模型的泛化能力受到限制;
- 传统方法通常需要手动提取特征,这一过程复杂且耗时,难以应对不断变化的恶意脚本技术。
本文贡献可以总结如下:
- 提出恶意PowerShell脚本自动检测(MPSAutodetect),这是一个使用机器学习算法检测恶意PowerShell脚本的模型,同时消除了手动查找特征的过程。MPSAutodetect依赖于SdA从PowerShell脚本中提取有意义的特征。
- 整合了强大的XGBoost分类算法,利用从SdA结构中获得的特征。以两种方式实现MPSAutodetect,比较监督和半监督方法的效率。
- 通过定义四个具有不同恶意对良性脚本解释比率的数据集来验证模型的效率。用于训练和评估模型的数据集语料库包含混淆的脚本,本质上赋予MPSAutodetect识别PowerShell脚本的能力,即使它具有复杂的形式。
三.本文模型
1.总体架构
MPSAutodetect整体框架如下图所示:
- PowerShell预处理
- Auto-Encoder模型提取特征
- 梯度增强及分类预测
2.PowerShell预处理
PowerShell是一种面向对象的脚本语言,具有跨平台的命令行shell。它可以与net、COM、WMI和XML对象一起工作,这使PowerShell命令行与其他命令行区别开来PowerShell中的命令称为cmdlet,它具有动词-名词语法。
攻击者利用PowerShell的原因有很多,主要是因为它提供了对重要操作系统功能的访问。预处理算法如下:
3.Auto-Encoder
堆叠自编码器(Stacked denoising auto-encoder,SDA)结构如下所示:
- 构建单层自编码器
- 逐层堆叠训练
- 反向解码器构建
该结构以一种方式降低了维数, 即将x维的输入编码为h维表示,同时在对输入进行解码之前保持h < x。这个h维表示层被称为瓶颈层,将编码器与解码器结构分开。当SdA用于特征提取时,这一层非常有价值。在这种情况下,省略 了重建过程(解码器),并从这个瓶颈层中提取特征。
4.XGBoost
XGBoost全称为eXtreme Gradient Boosting,本文利用其进行识别恶意Powershell。
四.实验评估
1.数据集
PowerShellGallery
- 该数据集由5463个良性脚本和6609个恶意脚本和命令组成,这些脚本和命令是在MPSAutode-tect的训练和测试期间使用的。重要的是,该语料库包含来自恶意类和良性类的混淆脚本,允许MPSAutodetect对实际的脚本表示进行训练。该数据集的构建是为了以监督的方式训练和测试模型。
- https://www.powershellgallery.com
Github
- 提供的一些未标记脚本来构建半监督算法,这是通过实现无监督预训练和微调来实现的。未标记的数据集由40,765个脚本组成。
- https://www.github.com
2.实验结果分析
(1)在不同类型的噪声对MPSAutodetect效率的对比
当噪声因子为0.5时,高斯噪声的AUC值最高,为0.974;高斯噪声被证明比随机噪声产生更好的性能。
(2)在不同深度和单元尺寸对MPSAutodetect模型性能对比
1024个单位代表数据集的维度,产生了0. 990 AUC分数;单位大小的减小可能会导致维度过于模糊,导致模型表现不佳。
(3)在XGBoost分类器不同参数对比
参数调优是优化分类器性能的关键部分,它可以提高MPSAutodet ect的效率
XGBoost参数对模型性能有显著影响。综合调整这些参数,可显著优化模型的性能和鲁棒性。
- eta参数:控制学习率,较小值(如0.1)提高AUC分数,优化模型精度。
- colsample_bytree参数:控制特征采样比例,合适的值(如0.8)可提升分类器稳定性和AUC分数。
- alpha和lambda参数:正则化项防止过拟合,默认值1和0效果最佳
(4)在不同数据集上监督和半监督运行对比
监督和半监督两种方法的AUC值都很高,分别为0.991和0.980,但监督模型优于半监督模型。当数据集比率相对均匀时,半监督方法表现优异。
性能比较如下表所示:
五.总结及个人感受
本文提出并验证了 MPSAutodetect模型,来确定这些脚本的恶意性。
- 该模型利用SdA架构来提取分类所需的特征,实现特征提取方法以帮助简化检测过程的工作
- 该模型以监督和半监督的方式实现,旨在利用未标记脚本的可用性
- 有监督的MPSAutodetect模型显示出令人满意的结果,低0.6%的FPR和高98%的TPR
本文作者提出了未来该方向工作的重点:
- 收集更多的恶意样本,以确保该模型对攻击技术不断变化的行为保持有效
- 研究将这种方法扩展到用不同编程语言编写的攻击中
- 计划增加脚本恶意软件家族分类的特殊性,并评估是否可以检测到新恶意软件家族的引入
2024年4月28日是Eastmount的安全星球——『网络攻防和AI安全之家』正式创建和运营的日子,该星球目前主营业务为 安全零基础答疑、安全技术分享、AI安全技术分享、AI安全论文交流、威胁情报每日推送、网络攻防技术总结、系统安全技术实战、面试求职、安全考研考博、简历修改及润色、学术交流及答疑、人脉触达、认知提升等。下面是星球的新人券,欢迎新老博友和朋友加入,一起分享更多安全知识,比较良心的星球,非常适合初学者和换安全专业的读者学习。
目前收到了很多博友、朋友和老师的支持和点赞,尤其是一些看了我文章多年的老粉,购买来感谢,真的很感动,类目。未来,我将分享更多高质量文章,更多安全干货,真心帮助到大家。虽然起步晚,但贵在坚持,像十多年如一日的博客分享那样,脚踏实地,只争朝夕。继续加油,再次感谢!
(By:Eastmount 2025-01-20 周四夜于贵阳 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脚本检测模型
相关文章:

[论文阅读] (36)CS22 MPSAutodetect:基于自编码器的恶意Powershell脚本检测模型
《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期…...

【Maui】下拉框的实现,绑定键值对
文章目录 前言一、问题描述二、解决方案三、软件开发(源码)3.1 创建模型3.2 视图界面3.3 控制器逻辑层 四、项目展示 前言 .NET 多平台应用 UI (.NET MA…...

Oracle 深入学习 Part 14:Managing Password Security and Resources(管理密码安全性和资源)
Profiles Profile 是一个以名称标识的集合,用于管理 密码 和 资源限制。 每个用户都对应一个profiles,可以通过 CREATE USER 或 ALTER USER 命令分配给用户。 Profiles 可以启用或禁用。 Profiles 可以关联到默认的 DEFAULT Profile。 密码管理&…...

C语言:位段
位段的内存分配: 1. 位段的成员可以是 int unsigned int signed int 或者是char (属于整形家族)类型 2. 位段的空间上是按照需要以4个字节( 类型 int )或者1个字节( char )的方式来开辟的。 3. 位段涉及…...

MPLS VPN 原理与配置
一.简介 MPLS,称之为多协议标签交换,在九十年代中期被提出来,用于解决传统IP报文依赖查表转发而产生的瓶颈,现多用于VPN技术,MPLS报头封装在数据链路层之上,网络层之下。本文为结合了华为技术和新华三技术…...

稳定的通信桥梁,CCLINKIE转ModbusTCP网关实现AGV运输的光速效应
三菱PLC与AGV机器人搬运车通过稳联技术协议转换网关建立通信 一、现场情况概述 - 三菱PLC:使用CC-Link IE协议进行通信。 - AGV机器人搬运车:使用Modbus TCP协议进行通信。 - 协议转换网关:使用稳联技术的协议转换网关将PLC和AGV连接…...
Leetcode 3428. Maximum and Minimum Sums of at Most Size K Subsequences
Leetcode 3428. Maximum and Minimum Sums of at Most Size K Subsequences 1. 解题思路2. 代码实现 题目链接:3428. Maximum and Minimum Sums of at Most Size K Subsequences 1. 解题思路 这一题不需要连续性,因此我们就是考虑取得子串长度为别为1…...
第2章:Python TDD构建Dollar类基础
写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…...
【算法学习笔记】34:扩展欧几里得算法
裴蜀定理 描述 对于任意正整数 a a a、 b b b,一定存在整数系数 x x x, y y y,使得: a x b y g c d ( a , b ) ax by gcd(a, b) axbygcd(a,b) 并且 g c d ( a , b ) gcd(a, b) gcd(a,b)是对于任意的系数 x x x和 y y y放在…...
云原生周刊:K8s 生产环境架构设计及成本分析
开源项目推荐 KubeZoneNet KubeZoneNet 旨在帮助监控和优化 Kubernetes 集群中的跨可用区(Cross-Zone)网络流量。这个项目提供了一种简便的方式来跟踪和分析 Kubernetes 集群中跨不同可用区的通信,帮助用户优化集群的网络架构、提高资源利用…...

WGAN - 瓦萨斯坦生成对抗网络
1. 背景与问题 生成对抗网络(Generative Adversarial Networks, GANs)是由Ian Goodfellow等人于2014年提出的一种深度学习模型。它包括两个主要部分:生成器(Generator)和判别器(Discriminator)…...

海量数据的处理
一般来说都是针对数据量特别大,内存有限制的。 第一类:topk问题 比如,在海量数据中找前50大的数据怎么办? 方法一:使用小顶堆,用小顶堆维护这50个元素,当有新元素到来时,直接与堆…...
区块链的数学基础:核心原理与应用解析
引言 区块链技术作为分布式账本系统,成功地解决了传统中心化系统中的信任问题。其背后隐藏着复杂而精妙的数学原理,包括密码学、哈希函数、数字签名、椭圆曲线、零知识证明等。这些数学工具不仅为区块链提供了安全保障,也为智能合约和去中心…...
1.5 GPT 模型家族全解析:从 GPT-1 到 GPT-4 的演进与创新
GPT 模型家族全解析:从 GPT-1 到 GPT-4 的演进与创新 随着人工智能技术的飞速发展,GPT(Generative Pre-trained Transformer)模型家族已经成为了现代自然语言处理(NLP)领域的标杆。从初代的 GPT-1 到最新的 GPT-4,每一代模型的发布都标志着人工智能技术的一个飞跃,并推…...

自动驾驶之DriveMM: All-in-One Large Multimodal Model for Autonomous Driving
1. 写在前面 工作之后,主要从事于偏工程比较多的内容, 很少有机会读论文了,但2025年,由于之前有些算法的背景, 后面可能会接触一些多模态大模型相关的工作,所以又调头有点往算法的方向偏移, 而算法呢,很重要的一点就是阅读论文。2025年,再拾起论文这块的工作。 今天…...

Spring Boot 配置(官网文档解读)
目录 摘要 Spring Boot 配置加载顺序 配置文件加载顺序 Spring Boot 配置加载方式 Value Value 注解简单示例 ConfigurationProperties 启动 ConfigurationProperties ConfigurationProperties 验证 ConfigurationProperties 与 Value 对比 Autowired Autowired 自…...

SparkSQL数据源与数据存储
文章目录 1. 大数据分析流程2. Spark SQL数据源2.1 SparkSQL常见数据源2.2 SparkSQL支持的文本格式2.3 加载外部数据源步骤 3. 本地文件系统加载数据3.1 本地文件系统加载JSON格式数据3.1.1 概述3.1.2 案例演示 3.2 本地文件系统加载CSV格式数据3.2.1 概述3.2.2 案例演示 3.3 本…...

【BQ3568HM开发板】开箱测试
引言 很荣幸入选了“电子发烧友”的贝启科技BQ3568HM开源鸿蒙开发板评测活动,上周在出差,今天才有机会开箱一下开发板,简单测试一下。 开机测试 插上电源开机后,系统显示的是润和的DAYU的logo,看来厂商提供的软件包…...
3D 模型格式转换之 STP 转 STL 深度解析
在 3D 模型的多元世界中,格式如同语言,不同格式适用于不同场景。STP 和 STL 是两种常见格式,本文将深入剖析 STP 转 STL 的相关内容。 一、STP 与 STL 格式基础 (一)STP 格式剖析 STP,即标准交换格式&am…...

MySQL数据库的数据文件保存在哪?MySQL数据存在哪里
在安装好MySQL数据库使用一段时间后,会产生许多的数据库和数据。那这些数据库的数据文件存放在本地文件夹的什么位置呢 一、默认位置 一般来说MySQL数据库的数据文件都是存放在data文件夹之中,但是根据使用的存储引擎不同,产生的一些文件也…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...

【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...