当前位置: 首页 > news >正文

深度学习学习笔记

目录

摘要

Abstracts

简介

Hourglass Module(Hourglass 模块)

网络结构

Intermediate Supervision(中间监督)

训练过程细节

评测结果

摘要

本周阅读了《Stacked Hourglass Networks for Human Pose Estimation》,作者在人体姿态估计问题上提出了一种沙漏型的网络结构。特征在所有尺度上进行处理,并整合,以最有效地捕捉与身体相关的各种空间关系。作者展示了,重复进行自底向上和自顶向下的处理,并配合中间监督对提升网络的性能至关重要。作者将该架构称为 “堆叠沙漏” ,该网络连续执行池化和上采样的步骤,最终产生一组预测。该方法在FLIC 数据集和MP Ⅱ数据集上的实现了当时最优的结果。

Abstracts

Reading "Stacked Hourglass Networks for Human Pose Estimation" this week, the authors propose an hourglass-type network architecture on the problem of human pose estimation. Features are processed at all scales and integrated to most effectively capture the various spatial relationships associated with the body. The authors show that repeated bottom-up and top-down processing, combined with intermediate supervision, is critical to improving the performance of the network. The authors refer to this architecture as a "stacked hourglass". The network performs the steps of pooling and upper envelope continuously, resulting in a set of predictions.
This method achieves the best results on FLIC data set and MP ⅱ data set.

简介

理解人类的姿态对于一些高级的任务比如行为识别来说特别重要,而且也是一些人机交互任务的基础。作者提出了一种新的网络结构Stacked Hourglass Networks来对人体的姿态进行识别,这个网络结构能够捕获并整合图像所有尺度的信息。之所以称这种网络为Stacked Hourglass Networks,主要是它长得很像堆叠起来的沙漏,如下图所示:

这种堆叠在一起的Hourglass模块结构是对称的,bottom-up过程将图片从高分辨率降到低分辨率,top-down过程将图片从低分辨率升到高分辨率,这种网络结构包含了许多pooling和upsampling的步骤,pooling可以将图片降到一个很低的分辨率,upsampling可以结合多个分辨率的特征。

下面介绍具体的网络结构。

Hourglass Module(Hourglass 模块)

Hourglass模块设计的初衷就是为了捕捉每个尺度下的信息,因为捕捉像脸,手这些部分的时候需要局部的特征,而最后对人体姿态进行预测的时候又需要整体的信息。为了捕获图片在多个尺度下的特征,通常的做法是使用多个pipeline分别单独处理不同尺度下的信息,然后再网络的后面部分再组合这些特征,而作者使用的方法就是用带有skip layers的单个pipeline来保存每个尺度下的空间信息。

在Hourglass模块中,卷积和max pooling被用来将特征降到一个很低的分辨率,在每一个max pooling步骤中,网络产生分支并在原来提前池化的分辨率下使用更多的卷积,当到达最低的分辨率的时候,网络开始upsample并结合不同尺度下的特征。这里upsample(上采样)采用的方法是最邻近插值,之后再将两个特征集按元素位置相加。

当到达输出分辨率的时候,再接两个1×1的卷积层来进行最后的预测,网络的输出是一组heatmap,对于给定的heatmap,网络预测在每个像素处存在关节的概率。

网络结构

Residual Module

Fig.3中的每个方框都由下面这样的残差块组成:

Residual Module

上图的残差块是论文中的原图,描述的不够详细,自己看了下源代码之后,画出了如下图所示的Residual Module:

贴出一段作者提供的关于Residual Module的源代码:

local conv = nnlib.SpatialConvolution
local batchnorm = nn.SpatialBatchNormalization
local relu = nnlib.ReLU-- Main convolutional block
local function convBlock(numIn,numOut)return nn.Sequential():add(batchnorm(numIn)):add(relu(true)):add(conv(numIn,numOut/2,1,1)):add(batchnorm(numOut/2)):add(relu(true)):add(conv(numOut/2,numOut/2,3,3,1,1,1,1)):add(batchnorm(numOut/2)):add(relu(true)):add(conv(numOut/2,numOut,1,1))
end-- Skip layer
local function skipLayer(numIn,numOut)if numIn == numOut thenreturn nn.Identity()elsereturn nn.Sequential():add(conv(numIn,numOut,1,1))end
end-- Residual block
function Residual(numIn,numOut)return nn.Sequential():add(nn.ConcatTable():add(convBlock(numIn,numOut)):add(skipLayer(numIn,numOut))):add(nn.CAddTable(true))
end

Hourglass Module

Hourglass Module由上面的Residual Module组成,由于它是一个递归的结构,所以可以定义一个阶数来表示递归的层数,首先来看一下一阶的Hourglass Module:

上图中的Max pool代表下采样,Res代表上面介绍的Residual Module,Up Sample代表上采样。多阶的Hourglass Module就是将上图虚线框中的块递归地替换为一阶Hourglass Module,由于作者在实验中使用的是4阶的Hourglass Moudle,所以我们画出了4阶的Hourglass Module的示意图:

整体结构

网络输入的图片分辨率为256×256,在hourglass模块中的最大分辨率为64×64,整个网络最开始要经过一个7×7的步长为2的卷积层,之后再经过一个残差块和Max pooling层使得分辨率从256降到64。下面贴出作者提供的整个网络结构的源代码:

paths.dofile('layers/Residual.lua')local function hourglass(n, f, inp)-- Upper branchlocal up1 = inpfor i = 1,opt.nModules do up1 = Residual(f,f)(up1) end-- Lower branchlocal low1 = nnlib.SpatialMaxPooling(2,2,2,2)(inp)for i = 1,opt.nModules do low1 = Residual(f,f)(low1) endlocal low2if n > 1 then low2 = hourglass(n-1,f,low1)elselow2 = low1for i = 1,opt.nModules do low2 = Residual(f,f)(low2) endendlocal low3 = low2for i = 1,opt.nModules do low3 = Residual(f,f)(low3) endlocal up2 = nn.SpatialUpSamplingNearest(2)(low3)-- Bring two branches togetherreturn nn.CAddTable()({up1,up2})
endlocal function lin(numIn,numOut,inp)-- Apply 1x1 convolution, stride 1, no paddinglocal l = nnlib.SpatialConvolution(numIn,numOut,1,1,1,1,0,0)(inp)return nnlib.ReLU(true)(nn.SpatialBatchNormalization(numOut)(l))
endfunction createModel()local inp = nn.Identity()()-- Initial processing of the imagelocal cnv1_ = nnlib.SpatialConvolution(3,64,7,7,2,2,3,3)(inp)           -- 128local cnv1 = nnlib.ReLU(true)(nn.SpatialBatchNormalization(64)(cnv1_))local r1 = Residual(64,128)(cnv1)local pool = nnlib.SpatialMaxPooling(2,2,2,2)(r1)                       -- 64local r4 = Residual(128,128)(pool)local r5 = Residual(128,opt.nFeats)(r4)local out = {}local inter = r5for i = 1,opt.nStack dolocal hg = hourglass(4,opt.nFeats,inter)-- Residual layers at output resolutionlocal ll = hgfor j = 1,opt.nModules do ll = Residual(opt.nFeats,opt.nFeats)(ll) end-- Linear layer to produce first set of predictionsll = lin(opt.nFeats,opt.nFeats,ll)-- Predicted heatmapslocal tmpOut = nnlib.SpatialConvolution(opt.nFeats,ref.nOutChannels,1,1,1,1,0,0)(ll)table.insert(out,tmpOut)-- Add predictions backif i < opt.nStack thenlocal ll_ = nnlib.SpatialConvolution(opt.nFeats,opt.nFeats,1,1,1,1,0,0)(ll)local tmpOut_ = nnlib.SpatialConvolution(ref.nOutChannels,opt.nFeats,1,1,1,1,0,0)(tmpOut)inter = nn.CAddTable()({inter, ll_, tmpOut_})endend-- Final modellocal model = nn.gModule({inp}, out)return modelend

画个图吧:

图中的4阶Hourglass Module就是前面讲的4阶Hourglass Module,可以看到整个网络还是挺庞大的,图中的渐变红色块就是加入了中间监督的地方,即在此处使用loss函数,下面讲一下中间监督。

注意,上面的整体网络结构图中中间监督的地方输出的通道数为16是针对于MPII Human Pose这个数据集,因为该数据集将人体划分为16个关节点,具体参见 人体姿态估计数据集整理(Pose Estimation/Keypoint)

Intermediate Supervision(中间监督)

作者在整个网络结构中堆叠了许多hourglass模块,从而使得网络能够不断重复自底向上和自顶向下的过程,作者提到采用这种结构的关键是要使用中间监督来对每一个hourglass模块进行预测,即对中间的heatmaps计算损失。

关于中间监督的位置,作者在文中也进行了讨论。大多数高阶特征仅在较低的分辨率下出现,除非在上采样最后。如果在网络进行上采样后进行监督,则无法在更大的全局上下文中重新评估这些特征;如果我们希望网络能够进行最佳的预测,那么这些预测就不应该在一个局部范围内进行。

由于hourglass模块整合了局部和全局的信息,若想要网络在早期进行预测,则需要它对图片有一个高层次的理解即使只是整个网络的一部分。最终,作者将中间监督设计在如下图所示位置:

The network splits and produces a set of heatmaps (outlined in blue) where a loss can be applied. A 1x1 convolution remaps the heatmaps to match the number of channels of the intermediate features. These are added together along with the features from the preceding hourglass.

在整个网络中,作者共使用了8个hourglass模块,需要注意的是,这些hourglass模块的权重不是共享的,并且所有的模块都基于相同的ground truth添加了损失函数。下面介绍训练过程的细节。

关于中间监督loss的计算,论文中是这么说的:

Predictions are generated after passing through each hourglass where the network has had an opportunity to process features at both local and global contexts. Subsequent hourglass modules allow these high level features to be processed again to further evaluate and reassess higher order spatial relationships.

所以,每个Hourglass Module的loss是单独计算的,这样使得后面的Hourglass Module能够更好地再评估。

训练过程细节

作者在FLIC和MPII Human Pose数据集上进行了训练与评估。这篇论文只能用于单人姿态检测,但是在一张图片中经常有多个人,解决办法就是只对图片正中心的人物进行训练。将目标人物裁剪到正中心后再将输入图片resize到256×256。为了进行数据增量,作者将图片进行了旋转(+/-30度)、scaling(.75-1.25)。

网络使用RMSprop进行优化,学习率为2.5e-4. 测试的时候使用原图及其翻转的版本进行预测,结果取平均值。网络对于关节点的预测是heatmap的最大激活值。损失函数使用均方误差(Mean Squared Error,MSE)来比较预测的heatmap与ground truth的heatmap(在节点中心周围使用2D高斯分布,标准差为1)

为了提高高精度阈值的性能,在转换回图像的原始坐标空间之前,预测在其下一个最高邻居的方向上偏移四分之一像素。

评测结果

评测指标采用的是标准的PCK指标(Percentage of Correct Keypoints),这个指标指出了检测结果关键点落在ground truth的标准化距离之内的比例。对于FLIC数据集来说,距离按躯干大小标准化,对于MPII数据集来说,距离按头的大小标准化。

FLIC上的评测结果

MPII上的评测结果

关于中间监督的位置,作者也进行了对比实验,结果如下图所示:

可以看到结果最好的是HG-Int,即在最终输出分辨率之前的两个最高分辨率上进行上采样后应用中间监督。

关于hourglass模块使用的个数,作者也进行了对比实验,分别采用2、4、8个堆叠的hourglass模块进行对比实验,结果如下所示:

首先,为了探索堆叠沙漏设计的效果,必须证明性能的变化是架构形状的函数,而不是更大、更深网络容量的增加导致的。为了做出比较,作者将八个沙漏模块堆叠在一起组成基准网络,每个沙漏仅有一个残差块。通过打乱层的顺序来改变网络排列。减少沙漏的数量将导致每个沙漏容量的增加。比如,一个网络堆叠了四个沙漏,那么每个分辨率下将有两个连续的残差块(或者两个沙漏以及四个残差块)。如图所示。所有网络具有相同数量的参数和层数,只有在使用更多中间监督时才有些微差别。

相关文章:

深度学习学习笔记

目录 摘要 Abstracts 简介 Hourglass Module&#xff08;Hourglass 模块&#xff09; 网络结构 Intermediate Supervision&#xff08;中间监督&#xff09; 训练过程细节 评测结果 摘要 本周阅读了《Stacked Hourglass Networks for Human Pose Estimation》&#xf…...

小米运维面试题及参考答案(80道面试题)

请讲解一下 linux top 后进程的状态 在 Linux 系统中,使用top命令可以查看系统中正在运行的进程的相关信息,进程通常有以下几种状态: 运行(R):表示进程正在 CPU 上运行或者正在运行队列中等待运行。处于运行状态的进程正在积极地使用 CPU 资源来执行其任务。睡眠(S):进…...

动态多目标优化:基于可学习预测的动态多目标进化算法(DIP-DMOEA)求解CEC2018(DF1-DF14),提供MATLAB代码

一、DIP-DMOEA介绍 基于可学习预测的动态多目标进化算法&#xff08;Learning-Based Directional Improvement Prediction for Dynamic Multiobjective Optimization&#xff0c;DIP-DMOEA&#xff09;是2024年提出的一种动态多目标进化算法&#xff0c;核心在于利用神经网络学…...

第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学B组

由于官方没有公布题目的数据, 所以代码仅供参考 1. 移动距离 题目链接&#xff1a;P12130 [蓝桥杯 2025 省 B] 移动距离 - 洛谷 【问题描述】 小明初始在二维平面的原点&#xff0c;他想前往坐标 (233, 666)。在移动过程中&#xff0c;他 只能采用以下两种移动方式&#xf…...

《Nature Methods》新算法|MARBLE利用几何深度学习解释神经群体动力学

一、写在前面 本次分享的是2025年2月发布于《Nature Methods》的题为"MARBLE:interpretable representations of neural population dynamics using geometric deep learning"的文章。在神经科学和机器学习领域交汇的今天&#xff0c;我们不断探索如何从复杂的神经活…...

【力扣hot100题】(093)最长公共子序列

还算是挺简单的一题。 维护二维数组代表截至至两个字符串的某个位置&#xff0c;前面的最长公共子序列长度。 状态转移方程就是当两字符相等是&#xff0c;取俩位置前一个的值加一&#xff0c;否则就直接等于俩位置前一个值。 class Solution { public:int longestCommonSub…...

(打卡)794. 高精度除法

C&#xff1a; Python&#xff1a; aint(input()) bint(input()) print(a//b) print(a%b)...

网络5 TCP/IP 虚拟机桥接模式、NAT、仅主机模式

TCP/IP模型 用于局域网和广域网&#xff1b;多个协议&#xff1b;每一层呼叫下一层&#xff1b;四层&#xff1b;通用标准 TCP/IP模型 OSI七层模型 应用层 应用层 表示层 会话层 传输层 传输层 网络层 网络层 链路层 数据链路层 物理层 链路层&#xff1a;传数据帧&#xff0…...

GPU虚拟化技术在深度学习集群中的应用实践

一、深度学习集群的算力困境 某些985高校AI实验室曾面临典型算力管理难题&#xff1a;其配备的4台8卡A100服务器&#xff08;总价值超300万元&#xff09;实际利用率仅38%。学生提交的PyTorch任务常因GPU抢占导致训练中断&#xff0c;而部分研究组独占显卡却仅运行Jupyter Not…...

从零实现基于扩散模型的文本到视频生成系统:技术详解与Pytorch代码实现

本文详细介绍了基于扩散模型构建的文本到视频生成系统&#xff0c;展示了在MSRV-TT和Shutterstock视频标注数据集上训练的模型输出结果。以下是模型在不同提示词下的生成示例。 首先展示一些模型生成效果展示 提示词&#xff1a;“A person holding a camera”&#xff08;训练…...

每天学一个 Linux 命令(14):cat

Linux 文件查看与合并命令:cat cat(全称 concatenate)是 Linux 中用于查看文件内容、合并文件或创建简单文件的基础命令。它操作简单但功能灵活,是日常文件处理的常用工具。 1. 命令作用 查看文件内容:直接输出文件内容到终端。合并文件:将多个文件内容合并输出或保存到…...

05--MQTT物联网协议

一、MQTT的概念 MQTT 协议快速入门 2025&#xff1a;基础知识和实用教程 | EMQ 1.MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级、基于发布-订阅模式的消息传输协议&#xff0c;适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它…...

免费下载 | 2025天津大学:智能制造与数字孪生技术:面向可持续制造方向发展

一、新一代智能制造模式下的思考 当代智能制造的发展阶段 智能制造定义&#xff1a;智能制造是基于新一代信息通信技术与先进制造技术深度融合&#xff0c;贯穿于设计、生产、管理、服务等制造活动的各个环节&#xff0c;具有自感知、自学习、自决策、自执行、自适应等功能的新…...

考研单词笔记 2025.04.12

aware a知道的&#xff0c;意识到的&#xff0c;警觉的 awareness n意识&#xff0c;了解&#xff0c;觉察 conscious a有意识的&#xff0c;意识到的&#xff0c;有意的&#xff0c;刻意的&#xff0c;神志清醒的&#xff0c;慎重的&#xff0c;关注的 unconscious a无意识…...

八股总结(Java)持续更新!

八股总结&#xff08;java&#xff09; ArrayList和LinkedList有什么区别 ArrayList底层是动态数组&#xff0c;LinkedList底层是双向链表&#xff1b;前者利于随机访问&#xff0c;后者利于头尾插入&#xff1b;前者内存连续分配&#xff0c;后者通过指针连接多块不连续的内存…...

SpringBoot3快速入门笔记

springboot3简介 SpringBoot 帮我们简单、快速地创建一个独立的、生产级别的 Spring 应用&#xff08;说明&#xff1a;SpringBoot底层是Spring&#xff09; 大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术 特性&#xff1a; ● 快速创建…...

vue3中,element-plus中el-input的v-model和value的用法示例

el-input的v-model&#xff0c;邦定响应式变量 <el-col :span"6"><el-form-item label"检验类别" prop"verifyType"><el-input v-model"applyAllInfo.applyBasicInfo.verifyTypeName" readonly /></el-form-item…...

python求π近似值

【问题描述】用公式π/4≈1-1/31/5-1/7..1/(2*N-1).求圆周率PI的近似值。 从键盘输入一个整数N值&#xff0c;利用上述公式计算出π的近似值&#xff0c;然后输出π值&#xff0c;保留小数后8位。 【样例输入】1000 【样例输出】3.14059265 def countpi(N):p0040nowid0for i i…...

Gerapy二次开发:搜索器组件设计开发与应用(Vue父子组件通信)

搜索器组件设计开发与应用 写在前面搜索器字段定义与样式设计具体实现components/Search.vuedeploy/Index.vue后端views.py运行效果总结欢迎加入Gerapy二次开发教程专栏! 本专栏专为新手开发者精心策划了一系列内容,旨在引领你深入探索Gerapy框架的二次迭代之旅。 本专栏将全…...

深入解析Python爬虫技术:从基础到实战的功能工具开发指南

一、引言:Python 爬虫技术的核心价值 在数据驱动的时代,网络爬虫作为获取公开数据的重要工具,正发挥着越来越关键的作用。Python 凭借其简洁的语法、丰富的生态工具以及强大的扩展性,成为爬虫开发的首选语言。根据 Stack Overflow 2024 年开发者调查,68% 的专业爬虫开发者…...

Python爬虫-爬取全球股市涨跌幅和涨跌额数据

前言 本文是该专栏的第52篇,后面会持续分享python爬虫干货知识,记得关注。 本文中,笔者将基于Python爬虫,实现批量采集全球股市行情(亚洲,美洲,欧非,其他等)的各股市“涨跌幅”以及“涨跌额”数据。 具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。…...

【NLP 59、大模型应用 —— BPE 算法】

你和生生不息的河流&#xff0c;生动了我人生中的美好瞬间 —— 25.4.11 一、词表的构造问题 为了nlp模型训练&#xff0c;词表&#xff08;字表&#xff09;是必要的 统计训练语料中的所有字符&#xff08;或词&#xff09;是一种做法&#xff0c;但是容易出现一些问题&…...

SQL基础入门:从CRUD到JOIN再到索引(通俗易懂版)

一、为什么需要SQL&#xff1f; 想象你在管理一个图书馆&#xff1a; 传统方法&#xff1a;手动记录每本书的位置、借阅者、归还日期SQL方法&#xff1a;用数据库系统自动管理&#xff0c;快速查询《Java编程思想》在哪个书架 SQL&#xff08;Structured Query Language&…...

系统编程1(进程的概念与原理)

进程的概念与原理 计算机组成部分一般遵循冯诺依曼结构&#xff0c;也就是由控制器、运算器、存储器、输入设备、输出设备五个部分组成。 ⦁ 程序的编译 一般在编写出程序之后&#xff0c;并不能直接运行&#xff0c;而是需要把程序通过编译器进行编译&#xff0c;生成可执行…...

Git基础知识

Git基础知识 目录 一、Git简介 1.1 什么是Git&#xff1f;1.2 基本概念1.3 Git与其他版本控制系统的区别 二、Git安装与配置 2.1 安装Git2.2 基础配置2.3 高级配置2.4 多账户配置 三、基本操作 3.1 创建仓库3.2 基本工作流3.3 分支操作3.4 查看历史 四、高级操作 4.1 撤销修改…...

【Flink运行时架构】核心组件

在Flink的运行架构中&#xff0c;有两大比较重要的组件&#xff1a;作业管理器&#xff08;JobManager&#xff09;和任务管理器&#xff08;TaskManager&#xff09;。 Flink的作业提交与任务处理时的系统如下图所示。 其中&#xff0c;客户端并不是处理系统的一部分&#xff…...

【区块链安全 | 第四十篇】合约审计之delegatecall(二)

文章目录 漏洞代码代码分析攻击流程攻击代码前文重现修复建议审计思路 在阅读本文之前&#xff0c;请确保已先行阅读&#xff1a;【区块链安全 | 第三十九篇】合约审计之delegatecall&#xff08;一&#xff09; 漏洞代码 存在一漏洞代码如下&#xff1a; // 库合约&#xf…...

Redis实现分布式定时任务

设计思路 任务表示&#xff1a;每个任务通过一个特定格式的键来表示。键名可以包含任务ID等信息&#xff0c;值可以是任务的具体内容或指向任务详情的引用。过期机制&#xff1a;利用Redis的EXPIRE命令为任务设置过期时间&#xff0c;当到达设定的时间点时&#xff0c;Redis会…...

ERC20合约的基本调用

文章目录 ERC20合约的基本调用合约功能compile.js 代码读取文件 进行合约编译获取二进制对象导出对象 index.js 代码编译合约读取私钥设置收款账户构造 web3 对象获取账户地址获取 abi 和 bin创建合约交易部署合约构造转账交易验证转账后余额 测试项目目录执行查询 ERC20合约的…...

『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解

『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解 Pod 结构 每个 Pod 中都可以包含一个或者多个容器&#xff0c;这些容器可以分为两类 用户程序所在的容器&#xff0c;数量可多可少Pause 容器&#xff0c;这是每个 Pod 都会有的一个根容器&#xff0c;它的作用有两个 可…...

【React框架】什么是 Vite?如何使用vite自动生成react的目录?

什么是 Vite&#xff1f; Vite 是一个基于原生 ES Modules 开发的前端构建工具&#xff0c;由 Evan You&#xff08;Vue 的作者&#xff09;开发。它最大的特点包括&#xff1a; 极速冷启动&#xff1a;因为利用了浏览器原生的 ES Modules&#xff0c;所以在开发时无需等待整…...

JS实现文件点击或者拖拽上传

B站看到了渡一大师课的切片&#xff0c;自己实现了一下&#xff0c;做下记录 效果展示 分为上传前、上传中和上传后 实现 分为两步 界面交互网络请求 源码如下 upload.html <!DOCTYPE html> <html lang"zh-CN"><head><meta charset&q…...

【Vue #3】指令补充样式绑定

一、指令修饰符 Vue 的指令修饰符&#xff08;Directive Modifiers&#xff09;是 Vue 模板语法中的重要特性&#xff0c;它们以半角句号 . 开头&#xff0c;用于对指令的绑定行为进行特殊处理 修饰符作用如下&#xff1a; 简化事件处理&#xff08;如阻止默认行为、停止冒泡…...

Vue.js组件安全工程化演进:从防御体系构建到安全性能融合

——百万级流量场景下的安全组件架构与源码级解决方案 文章目录 总起&#xff1a;安全工程化的组件革命 分论&#xff1a; 一、现存组件架构的七宗罪与安全改造路径   1.1 组件生态安全赤字现状   1.2 架构级安全缺陷深度剖析   1.3 性能与安全的死亡螺旋 二、百万级…...

LINUX基础 [二] - Linux常见指令

目录 &#x1f4bb;前言 &#x1f4bb;指令 &#x1f3ae;ls指令 &#x1f3ae;pwd指令 &#x1f3ae;whoami指令 &#x1f3ae;cd指令 &#x1f3ae;clear指令 &#x1f3ae;touch指令 &#x1f3ae;mkdir指令 &#x1f3ae;rmdir指令 &#x1f3ae;rm指令 &#…...

Linux进阶命令

目录 一、touch 1. 基本语法 2. 常用选项 二、which 1. 基本语法 2. 主要功能 3. 常用选项 三、find 1. 基本语法 2. 常用选项和表达式 四、more 1. 基本语法 2. 常用操作 3. 对比 more 和 less 五、grep 1. 基本语法 2. 常用选项 六、wc 1. 基本语法 2. 常…...

【Spring Boot 过滤器】

文章目录 前言一、什么是过滤器 Filter&#xff1f;二、Spring Boot 中使用 Filter 的方式1. 使用 Component 注解2. 使用 FilterRegistrationBean 显式注册 三、自定义过滤器示例1. 引入必要依赖2. 创建一个自定义 Filter3. 使用 FilterRegistrationBean 显式注册 四、多个 Fi…...

SPI通讯的软硬件NSS SSM SSI

学习自记&#xff1a; 1. NSS&#xff08;Slave Select&#xff0c;从设备选择&#xff09;​​ ​​功能​​&#xff1a; NSS是SPI通信中用于选择从设备的信号线。主设备通过拉低NSS信号选中某个从设备&#xff0c;使其参与通信。通信结束后&#xff0c;主设备释放NSS&#…...

Java基础:集合List、Map、Set(超详细版)

集合体系概述 Collection常用方法 补充&#xff1a;addAll() Collection的遍历方式 迭代器 增强for&#xff08;空集合可以&#xff0c;null不可以&#xff09; lambda 集合对象存储对象原理 遍历方式的区别 List集合 特点、特有方法 遍历方式 &#xff08;同上&#xff09…...

vue+leaflet 区域划分_反向遮罩层

leaflet 区域划分_遮罩层 geojson在线生成器网址:(https://datav.aliyun.com/portal/school/atlas/area_selector) 点击前往阿里云geojson生成器 效果图: 实现下面效果,只需要把addSateLayer函数的调用取消掉就好了. //添加遮罩层代码function addMask() {var latlngs;var fe…...

聊一聊原子操作和弱内存序

1、原子操作概念 在并发编程中&#xff0c;原子操作&#xff08;Atomic Operation&#xff09;是实现线程安全的基础机制之一。从宏观上看&#xff0c;原子操作是“不可中断”的单元&#xff0c;但若深入微观层面&#xff0c;其本质是由底层处理器提供的一组特殊指令来保证其原…...

免费送源码:Java+ssm+MySQL 校园二手书销售平台设计与实现 计算机毕业设计原创定制

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对校园二手书销售平台等问题&#xff0c;对校…...

DAPP实战篇:使用ethersjs连接智能合约并输入地址查询该地址余额

本系列目录 专栏:区块链入门到放弃查看目录-CSDN博客文章浏览阅读400次。为了方便查看将本专栏的所有内容列出目录,按照顺序查看即可。后续也会在此规划一下后续内容,因此如果遇到不能点击的,代表还没有更新。声明:文中所出观点大多数源于笔者多年开发经验所总结,如果你…...

14.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--CAP

CAP 是一款专为 .NET 生态设计的开源框架&#xff0c;其核心目标是解决微服务中跨服务数据一致性问题。在分布式系统中&#xff0c;传统事务无法跨服务保证数据一致性&#xff0c;CAP 通过本地事务与消息记录绑定&#xff0c;再利用消息中间件&#xff08;如 RabbitMQ、Kafka 等…...

智能资源管理机制-重传机制

一、发送端资源管理的核心机制 1. 滑动窗口&#xff08;Sliding Window&#xff09; 这是TCP协议的核心优化设计&#xff1a; 窗口动态滑动&#xff1a;发送端不需要保留所有已发送的分组&#xff0c;只需维护一个"发送窗口"窗口大小&#xff1a;由接收方通告的接…...

【Linux网络与网络编程】08.传输层协议 UDP

传输层协议负责将数据从发送端传输到接收端。 一、再谈端口号 端口号标识了一个主机上进行通信的不同的应用程序。在 TCP/IP 协议中&#xff0c;用 "源IP"&#xff0c;"源端口号"&#xff0c;"目的 IP"&#xff0c;"目的端口号"&…...

局域网下ESP32-S3 LED灯的UDP控制

在局域网下通过IP地址控制ESP32-S3上的LED&#xff0c;可以使用UDP或TCP协议。以下是一个基于UDP协议的完整示例&#xff0c;包括ESP32-S3的服务器代码和一个简单的Python客户端代码。 ESP32-S3 服务器代码 import socket import time import network import machineled Non…...

call、bind、apply

call、bind、apply它们三个都是函数的方法&#xff0c;都可以用于改变this的指向问题。 var person "liangxiao" let obj {name:"张三",say:function() {console.log(this.name);} }obj.say(); setTimeout(function() {obj.say(); },1000) obj.say()打…...

Redis 哨兵模式 搭建

1 . 哨兵模式拓扑 与 简介 本文介绍如何搭建 单主双从 多哨兵模式的搭建 哨兵有12个作用 。通过发送命令&#xff0c;让Redis服务器返回监控其运行状态&#xff0c;包括主服务器和从服务器。 当哨兵监测到master宕机&#xff0c;会自动将slave切换成master&#xff0c;然后通过…...

客户端负载均衡与服务器端负载均衡详解

客户端负载均衡与服务器端负载均衡详解 1. 客户端负载均衡&#xff08;Client-Side Load Balancing&#xff09; 核心概念 定义&#xff1a;负载均衡逻辑在客户端实现&#xff0c;客户端主动选择目标服务实例。典型场景&#xff1a;微服务内部调用&#xff08;如Spring Cloud…...