二、智能体强化学习——深度强化学习核心算法
2.1 DQN 系列及其改进
2.1.1 背景与动机
在经典强化学习中(如 Q-Learning),如果状态空间或动作空间非常大乃至连续,那么用一个表格来存储 Q ( s , a ) Q(s,a) Q(s,a) 不再可行。为了解决该问题,可以使用神经网络来逼近 Q Q Q 函数,这就是 深度 Q 网络(Deep Q-Network,DQN) 的核心思想。
- 论文起源:DQN 由 DeepMind 团队提出(Mnih et al., 2013 & 2015),利用卷积神经网络来从原始像素(如 Atari 游戏画面)中学习特征,并输出各动作的 Q 值,大幅度提升了在 Atari 游戏上的表现。
- 核心要点:
- 用一个神经网络 Q ( s , a ; θ ) Q(s,a;\theta) Q(s,a;θ) 近似 Q 值;
- 通过最小化时序差分 (TD) 误差来更新 θ \theta θ。
Q 函数的神经网络逼近
对于离散动作环境,网络的输出层通常有 ∣ A ∣ |\mathcal{A}| ∣A∣ 个神经元,每个输出对应一个动作的 Q 值 Q ( s , a ) Q(s,a) Q(s,a)。输入为状态 s s s(可能是图像或其他向量),通过多层感知机 (MLP) 或卷积神经网络 (CNN) 获取特征后输出 Q 值。
2.1.2 DQN 原理与伪代码
(1) 关键改进:Experience Replay 与 Target Network
-
Experience Replay(经验回放)
- 将 Agent 与环境交互得到的经验 ( s , a , r , s ′ ) (s, a, r, s') (s,a,r,s′) 存储在一个 Replay Buffer 中;
- 每次训练时,从该 Buffer 中随机采样一个批量(mini-batch)数据进行梯度更新;
- 好处:
- 让样本分布更加独立同分布 (i.i.d.),打破连续时间步样本的相关性;
- 提高数据效率,能够反复使用历史数据进行训练。
-
Target Network(目标网络)
- DQN 中存在“自举 (bootstrapping)”:在更新 Q 值时,需要用到下一时刻的 Q 值;
- 如果使用同一个网络同时执行动作选择和目标计算,可能导致训练不稳定;
- 解决方案:维持一个“目标网络” Q ^ ( s , a ; θ − ) \hat{Q}(s,a;\theta^-) Q^(s,a;θ−),周期性(或软更新)将在线网络的参数 θ \theta θ 复制到 θ − \theta^- θ−;
- 当计算 TD 目标时,用的是目标网络的 Q 值,不随在线网络每次更新而变化过快。
(2) DQN 的核心更新公式
对于某条经验 ( s , a , r , s ′ ) (s, a, r, s') (s,a,r,s′),DQN 的 TD 目标 (Target) 为
y = r + γ max a ′ Q ^ ( s ′ , a ′ ; θ − ) \LARGE y = r + \gamma \max_{a'} \hat{Q}(s', a'; \theta^-) y=r+γa′maxQ^(s′,a′;θ−)
其中 Q ^ \hat{Q} Q^ 是目标网络。DQN 的损失函数为
L ( θ ) = E ( s , a , r , s ′ ) ∼ D [ ( y − Q ( s , a ; θ ) ) 2 ] \LARGE L(\theta) = \mathbb{E}_{(s,a,r,s')\sim \mathcal{D}} \Big[ \big( y - Q(s,a;\theta) \big)^2 \Big] L(θ)=E(s,a,r,s′)∼D[(y−Q(s,a;θ))2]
通过反向传播对 θ \theta θ 做梯度下降,最小化此均方误差。
(3) DQN 伪代码示例
以下是一段简化的伪代码流程:
Initialize Q network with random weights θ
Initialize target network with the same weights θ^- ← θ
Initialize replay buffer Dfor episode in 1 to max_episodes:s = env.reset()done = Falsewhile not done:# 1. epsilon-greedy 策略if random() < epsilon:a = random actionelse:a = argmax(Q(s, ·; θ))# 2. 与环境交互s_next, r, done, info = env.step(a)# 3. 存储经验D.append((s, a, r, s_next, done))# 4. 训练if len(D) > batch_size:# 4.1 从 D 中随机采样batch = sample(D, batch_size)(s_batch, a_batch, r_batch, s_next_batch, done_batch) = transform(batch)# 4.2 计算目标 yy = r_batch + γ * max(Q(s_next_batch, a'; θ^-), axis=1) * (1 - done_batch)# 4.3 计算当前 Q(s,a;θ),并最小化均方误差loss = MSE(Q(s_batch, a_batch; θ), y)do gradient descent on θ# 5. 每隔 C 步更新目标网络if step % C == 0:θ^- ← θ# 状态前移s = s_next# 6. 衰减 epsilonepsilon = max(epsilon_min, epsilon * epsilon_decay)
2.1.3 DQN 的改进算法
-
Double DQN
- 在计算 max a ′ Q ( s ′ , a ′ ) \max_{a'} Q(s',a') maxa′Q(s′,a′) 时会产生过估计问题;
- Double Q-Learning 思想:将动作选择与动作评估分别在两个网络中完成:
a ∗ = arg max a ′ Q ( s ′ , a ′ ; θ ) , y = r + γ Q ^ ( s ′ , a ∗ ; θ − ) \LARGE \begin{array}{l} a^* = \arg\max_{a'}Q(s',a';\theta), \\ y = r + \gamma \hat{Q}\big(s', a^*; \theta^-\big) \end{array} a∗=argmaxa′Q(s′,a′;θ),y=r+γQ^(s′,a∗;θ−) - 这样能够有效减小 Q 值的过估计偏差。
-
Dueling DQN
- 将网络拆分为状态价值函数 V ( s ) V(s) V(s) 和优势函数 A ( s , a ) A(s,a) A(s,a) 两个分支:
Q ( s , a ) = V ( s ) + A ( s , a ) − 1 ∣ A ∣ ∑ a ′ A ( s , a ′ ) \LARGE Q(s,a) = V(s) + A(s,a) - \frac{1}{|\mathcal{A}|}\sum_{a'}A(s,a') Q(s,a)=V(s)+A(s,a)−∣A∣1a′∑A(s,a′) - 能让网络更好地学习状态本身的价值,在某些情况下提升训练效率。
- 将网络拆分为状态价值函数 V ( s ) V(s) V(s) 和优势函数 A ( s , a ) A(s,a) A(s,a) 两个分支:
-
优先级回放(Prioritized Replay)
- 经验回放中,TD 误差较大的样本往往更有学习价值;
- 给每条经验分配一个“优先级” p i = ∣ δ i ∣ + ϵ p_i = | \delta_i | + \epsilon pi=∣δi∣+ϵ( δ i \delta_i δi 为 TD 误差);
- 采样时,根据 p i p_i pi 的大小进行加权随机采样,让高 TD 误差样本被更多关注;
- 注意需对更新进行重要性采样修正 (IS weights),以保证无偏性。
-
Rainbow DQN
- 将Double DQN、Dueling DQN、优先级回放、NoisyNet、Categorical DQN 等多种改进技术结合在一起,进一步增强效果。
2.2 Policy Gradient 系列
在 Q-Learning 类方法中,我们先估计 Q 值,然后通过贪心或近贪心选择动作;而策略梯度方法则直接对策略函数 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s) 参数化并通过梯度上升来最大化期望回报。这类方法对连续动作空间尤其有效。
2.2.1 基本策略梯度(REINFORCE)
(1) 思想概述
- 策略 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s) 是一个可微分的函数(如神经网络),输出在状态 s s s 时选择动作 a a a 的概率;
- 目标:最大化期望回报
J ( θ ) = E τ ∼ π θ [ ∑ t = 0 T r t ] \LARGE J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^{T} r_t \right] J(θ)=Eτ∼πθ t=0∑Trt
其中 τ \tau τ 表示整个轨迹 e p i s o d e episode episode; - 核心:利用梯度上升, θ ← θ + α ∇ θ J ( θ ) \theta \leftarrow \theta + \alpha \nabla_\theta J(\theta) θ←θ+α∇θJ(θ)。
(2) REINFORCE 算法公式
对策略梯度的一个常见推导是:
∇ θ J ( θ ) = E τ ∼ π θ [ ∑ t = 0 T ∇ θ log π θ ( a t ∣ s t ) ⋅ G t ] \LARGE \nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t \right] ∇θJ(θ)=Eτ∼πθ t=0∑T∇θlogπθ(at∣st)⋅Gt
其中 G t G_t Gt 是从时刻 t t t 开始的折扣回报(Return)。在实现中,常见做法是采样多个完整的episode,计算每个时间步的 log π θ ( a t ∣ s t ) \log \pi_\theta(a_t|s_t) logπθ(at∣st) 累积,再加权更新。
(3) REINFORCE 的特点
- 优点:实现简单;可以处理连续或离散动作空间;适用于高维输出;
- 缺点:方差大,收敛速度慢;需要对整条轨迹进行采样。
2.2.2 Actor-Critic 框架
为了降低纯策略梯度方法的高方差,在更新策略时引入价值函数的基线(Baseline)。这就带来了Actor-Critic框架。
- Actor:表示策略网络 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s),输出动作概率(或连续动作的均值、方差等);
- Critic:表示价值网络 V ω ( s ) V^\omega(s) Vω(s) 或 Q ω ( s , a ) Q^\omega(s,a) Qω(s,a),用来评价当前策略的好坏。
(1) 基本思想
- 策略梯度中,如果我们用 G t − b t G_t - b_t Gt−bt 来取代 G t G_t Gt,只要 b t b_t bt 与动作无关,就不改变无偏性,可降低方差;
- 常见做法: b t b_t bt 用价值函数 V ω ( s t ) V^\omega(s_t) Vω(st) 近似;
- 这样,Critic 网络去学习一个状态价值函数或动作价值函数;Actor 在更新时参考 Critic 给出的基线或优势函数,减小更新的方差。
(2) A2C / A3C
- A2C(Advantage Actor-Critic):使用“优势函数” A ( s t , a t ) = Q ( s t , a t ) − V ( s t ) A(s_t,a_t) = Q(s_t,a_t) - V(s_t) A(st,at)=Q(st,at)−V(st) 来衡量某个动作相对平均水平的好坏;
- A3C(Asynchronous Advantage Actor-Critic):多线程/多进程异步采样,每个线程都有自己的 Actor 和 Critic,与环境交互并计算梯度,再将梯度同步到全局参数中;
- 优点:并行采样,效率更高;在当年的硬件条件下显著加速了训练。
(3) Actor-Critic 伪代码示例(单线程简化)
Initialize Actor πθ, Critic Vω
for episode in 1 to max_episodes:s = env.reset()done = Falsewhile not done:# 1. 从策略网络中采样动作a = sample from πθ(a|s)s_next, r, done, info = env.step(a)# 2. Critic 计算 TD 误差 δV_s = Vω(s)V_s_next = Vω(s_next) if not done else 0δ = r + γ * V_s_next - V_s# 3. 更新 CriticL_critic = δ^2ω ← ω - α_critic ∇ω L_critic# 4. 更新 ActorL_actor = - δ * log πθ(a|s) # 这是一种简化形式θ ← θ - α_actor ∇θ L_actors = s_next
2.3 高级算法
对于更复杂的场景,如连续动作或高维动作的控制,我们需要更先进的算法来保证训练的稳定性和效率。下面介绍几种主流算法:DDPG、TD3、PPO、SAC。
2.3.1 DDPG(Deep Deterministic Policy Gradient)
(1) 适用场景与思路
- 场景:连续动作空间(如机器人关节控制)。
- 核心思想:结合 Actor-Critic 思路,Actor 输出确定性动作(而非动作分布),Critic 学习 Q ω ( s , a ) Q^\omega(s,a) Qω(s,a)。
- 学习目标:最小化 Critic 给出的负 Q 值,让 Actor 朝着“使 Q 值更高的方向”更新。
(2) 算法要点
- Actor 网络 μ θ ( s ) \mu_\theta(s) μθ(s) ,输入状态输出一个确定性动作;
- Critic 网络 Q ω ( s , a ) Q^\omega(s,a) Qω(s,a),输入状态-动作,输出对应 Q 值;
- Replay Buffer + Target Network(类似 DQN)减少不稳定性;
- 更新:
- Critic 更新:最小化 TD 误差
L ( ω ) = ( r + γ Q ω ( s ′ , μ θ ( s ′ ) ) − Q ω ( s , a ) ) 2 \LARGE L(\omega) = \big(r + \gamma Q^\omega(s', \mu_\theta(s')) - Q^\omega(s,a)\big)^2 L(ω)=(r+γQω(s′,μθ(s′))−Qω(s,a))2 - Actor 更新:基于策略梯度
∇ θ J ≈ E [ ∇ a Q ω ( s , a ) ∣ a = μ θ ( s ) ∇ θ μ θ ( s ) ] \LARGE \nabla_\theta J \approx \mathbb{E}\left[\nabla_a Q^\omega(s,a)\big|_{a=\mu_\theta(s)} \nabla_\theta \mu_\theta(s)\right] ∇θJ≈E[∇aQω(s,a) a=μθ(s)∇θμθ(s)] - 同步目标网络的做法与 DQN 类似。
- Critic 更新:最小化 TD 误差
(3) 优势与局限
- 优势:适合连续动作;在一些机器人控制场景有良好表现;
- 局限:训练不稳定;对超参数和初始化较敏感;容易陷入局部最优或碰到多步预测误差累积。
2.3.2 TD3(Twin Delayed DDPG)
- 目的:解决 DDPG 中 Critic 的过估计问题与训练不稳定;
- 双 Critic:类似 Double DQN 的思想,两个独立的 Critic 网络取最小 Q 值作为目标,降低过估计;
- 延迟更新:Actor 网络的参数更新频率低于 Critic,先让 Critic 更充分地学习;
- 目标平滑:在下一个状态动作上加噪声,以减少因函数不平滑引起的过高估计;
- 综合这些改进,使 TD3 在连续控制任务上比 DDPG 更鲁棒。
2.3.3 PPO(Proximal Policy Optimization)
(1) 算法动机
- 场景:On-policy 策略梯度算法,兼具易实现、稳定和高效的特性;
- 问题:直接进行策略梯度更新,步长较大时会毁掉之前学到的策略,引发不稳定。
- 解决:PPO 在更新时约束新旧策略的差异,不使策略迭代步太大。
(2) 算法核心
- 使用**剪切(clipping)**的目标函数,限制更新幅度;
- 定义概率比
r t ( θ ) = π θ ( a t ∣ s t ) π θ old ( a t ∣ s t ) \LARGE r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_\text{old}}(a_t|s_t)} rt(θ)=πθold(at∣st)πθ(at∣st)
然后在优化时将其裁剪在一定范围内(如 [1- ϵ \epsilon ϵ, 1+ ϵ \epsilon ϵ]); - 这样可以兼顾:
- 收益提升(策略改进)
- 稳定性(不让新旧策略差别过大)
(3) 实践效果
- PPO 是当前深度强化学习中最常用的 on-policy 算法之一;
- 实现和调参相对友好,在 MuJoCo 或许多学术竞赛任务中表现出色。
2.3.4 SAC(Soft Actor-Critic)
(1) 核心理念:熵正则化
- SAC 是一种 off-policy 的 Actor-Critic 算法;
- 目标不仅是最大化回报,还要最大化策略的熵(entropy),鼓励策略尽量保持随机,以提升探索能力、提高鲁棒性;
- 通过在目标中加入熵项 α H ( π ( ⋅ ∣ s ) ) \alpha \mathcal{H}(\pi(\cdot|s)) αH(π(⋅∣s)),来平衡“高回报”与“高熵”之间的关系。
(2) 算法结构
- Actor:输出动作分布参数(高斯分布的均值、方差);
- Critic:有两个 Q 网络(双 Critic),取较小值来抑制过估计;
- 温度系数 α \alpha α:控制熵奖励权重,可以固定或自适应调参;
- off-policy:从 Replay Buffer 采样。
(3) 优势
- 稳定收敛:利用双 Critic + 目标平滑 + 熵正则;
- 高探索:让策略在训练前期保持足够随机,减少早期陷入局部最优;
- 在许多连续控制任务中性能优异,且收敛更稳定。
总结与对比
| 算法 | 特点 | 适用场景 | 优缺点 |
|---|---|---|---|
| DQN | 离散动作;用 NN 逼近 Q 值;Experience Replay & Target Network | Atari、离散控制 | 易实现;对离散动作较好;对连续动作需改进;存在过估计等问题 |
| Double DQN | DQN 改进,解决过估计 | 与 DQN 相同 | 减小过估计,训练更稳定 |
| Dueling DQN | 拆分状态价值和优势函数 | 与 DQN 相同 | 对无关动作时能更好提取状态价值 |
| Prioritized Replay | 根据 TD 误差进行优先级采样 | 与 DQN 相同 | 数据利用率高,但需重要性采样修正 |
| Policy Gradient (REINFORCE) | 直接对策略参数化,梯度上升 | 可处理离散或连续动作 | 实现简单;方差大,收敛慢 |
| Actor-Critic (A2C/A3C) | 策略网络 + 价值网络,降低方差 | 常用在并行、多线程场景 | 训练速度快,易于扩展;可能仍有不稳定 |
| DDPG | 基于 Actor-Critic,用确定性策略处理连续动作 | 机器人控制、模拟仿真等连续任务 | 适合连续动作;易陷入不稳定,需 carefully 调参 |
| TD3 | 双 Critic + 延迟更新 + 目标平滑,改进 DDPG | 与 DDPG 同 | 更鲁棒,减少过估计;实现稍复杂 |
| PPO | On-policy,使用剪切损失保证策略改进稳定 | 机器人、游戏等多种场景 | 易实现、效果好;在学术及工业上均较常用 |
| SAC | Off-policy,熵正则化,鼓励探索 | 连续动作、高维控制 | 收敛稳定,探索充分;在许多基准任务中效果出色 |
通过上表,我们可以看到离散动作环境通常用 DQN 系列(或 Policy Gradient 的离散版),而连续动作环境往往使用 DDPG/TD3/PPO/SAC 等。具体选择哪种算法,一般需要根据环境特征、数据采集方式(on-policy 或 off-policy)、以及对稳定性和采样效率的要求做综合考量。
总结
- DQN 系列:适用于离散动作。DQN 引入 Experience Replay、Target Network,后续演化出 Double DQN、Dueling DQN、优先级回放、Rainbow 等。
- Policy Gradient 系列:适用于离散或连续动作,直接对策略进行参数化:
- 基本策略梯度(REINFORCE)概念最简单,但方差大;
- Actor-Critic 引入价值函数基线,降低方差,衍生出 A2C/A3C 等多线程并行方式。
- 高级算法:
- DDPG、TD3:典型的 off-policy Actor-Critic,用于连续动作;
- PPO:on-policy 策略梯度,带剪切损失,稳定性好;
- SAC:off-policy,双 Critic + 熵正则,探索充分、表现稳定。
掌握了深度强化学习主流算法的基本原理、核心公式和核心实现细节,并能够在常见基准环境(如 OpenAI Gym、Atari、MuJoCo 等)上独立训练和测试这些算法。这为后续在多智能体强化学习、人机协作指挥决策等更复杂场景的扩展奠定了坚实基础。
相关文章:
二、智能体强化学习——深度强化学习核心算法
2.1 DQN 系列及其改进 2.1.1 背景与动机 在经典强化学习中(如 Q-Learning),如果状态空间或动作空间非常大乃至连续,那么用一个表格来存储 Q ( s , a ) Q(s,a) Q(s,a) 不再可行。为了解决该问题,可以使用神经网络来逼…...
Mysql--架构篇--存储引擎InnoDB(内存结构,磁盘结构,存储结构,日志管理,锁机制,事务并发控制等)
MySQL是一个多存储引擎的数据库管理系统,支持多种不同的存储引擎。每种存储引擎都有其独特的特性、优势和适用场景。选择合适的存储引擎对于优化数据库性能、确保数据完整性和满足业务需求至关重要。 注:在同一个Mysql的数据库中,对于不同的表…...
JVM实战—13.OOM的生产案例
大纲 1.每秒仅上百请求的系统为何会OOM(RPC超时时间设置过长导致QPS翻几倍) 2.Jetty服务器的NIO机制如何导致堆外内存溢出(S区太小 禁NIO的显式GC) 3.一次微服务架构下的RPC调用引发的OOM故障排查实践(MAT案例) 4.一次没有WHERE条件的SQL语句引发的OOM问题排查实践(使用MA…...
client-go 的 QPS 和 Burst 限速
1. 什么是 QPS 和 Burst ? 在 kubernetes client-go 中,QPS 和 Burst 是用于控制客户端与 Kubernetes API 交互速率的两个关键参数: QPS (Queries Per Second) 定义:表示每秒允许发送的请求数量,即限速器的平滑速率…...
使用docker-compose安装Redis的主从+哨兵模式
必看 本文是一主二从一哨兵模式;其余的单机/集群/多哨兵模式的话,不在本文... 本文的环境主要是:应用app在本地,redis在云服务器上; 图解 图如下:这个图很重要; 之所以要这样画图࿰…...
数据结构(Java版)第七期:LinkedList与链表(二)
专栏:数据结构(Java版) 个人主页:手握风云 一、链表的实现(补) 接上一期,下面我们要实现删除所有值为key的元素,这时候有的老铁就会想用我们上一期中讲到的remove方法,循环使用remove方法&#…...
ant-design-vue 1.X 通过id获取a-input组件失败
1.ant-design-vue 1.X 问题描述 当我在a-form组件中,以v-decorator指令绑定表单组件时,无法根据我设置的verify-code-input获取元素 <a-input type"text" id"verify-code-input" class"paIpt":placeholder"$t(…...
Flutter:吸顶效果
在分页中,实现tab吸顶。 TDNavBar的screenAdaptation: true, 开启屏幕适配。 该属性已自动对不同手机状态栏高度进行适配。我们只需关注如何实现吸顶。 view import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import p…...
MATLAB语言的数据类型
MATLAB语言的数据类型详解 MATLAB(矩阵实验室)是一种广泛应用于科学计算、数据分析、算法开发及模型构建的高性能语言和环境。MATLAB的强大之处不仅在于其丰富的数学工具和可视化功能,还有其灵活多变的数据类型。这篇文章将详细介绍MATLAB中…...
priority_queue优先队列
目录 1. 最短路径算法(Dijkstra算法) 应用场景: 优先队列的作用: 2. 最小生成树算法(Prim算法) 应用场景: 优先队列的作用: 3. 哈夫曼编码(Huffman Coding&#x…...
HarmonyOS 鸿蒙Next 预览pdf文件
HarmonyOS 鸿蒙Next 预览pdf文件 1、使用filePreview 2、使用web组件 在线pdf(网址是直接下载的,不是直接可以预览的),先下载再预览 import media from ohos.multimedia.media;import web_webview from ohos.web.webview;import …...
vscode开启调试模式,结合Delve调试器调试golang项目详细步骤
1.前期准备 (1).在vs code中的扩展程序中搜索并安装Go扩展程序 (2).安装 Delve 调试器 go install github.com/go-delve/delve/cmd/dlvlatest (3).打开vs code的命令面板,输入Go: Install/Update Tools,并单击该命令执行,安装或更新Go语…...
身份鉴权(PHP)(小迪网络安全笔记~
免责声明:本文章仅用于交流学习,因文章内容而产生的任何违法&未授权行为,与文章作者无关!!! 附:完整笔记目录~ ps:本人小白,笔记均在个人理解基础上整理,…...
【git】-初始git
一、什么是版本控制? 二、Git的安装 三、掌握Linux常用命令 四、Git基本操作 1、提交代码 2、查看历史提交 3、版本回退 一、什么是版本控制? 版本控制是一种用于记录文件或项目内容变化的系统。它通过版本标识和版本历史记录来管理不同版本&#…...
CSS 盒模型
盒模型 CSS盒模型是网页布局的核心概念之一,它描述了网页元素的物理结构和元素内容与周围元素之间的关系。根据W3C规范,每个HTML元素都被视为一个矩形盒子,这个盒子由以下四个部分组成: 内容区(Content areaÿ…...
[0405].第05节:搭建Redis主从架构
Redis学习大纲 一、3主3从的集群配置: 1.1.集群规划 1.分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下: 2.每组是一主一从&#x…...
6 分布式限流框架
限流的作用 在API对外互联网开放的情况下,是无法控制调用方的行为的。当遇到请求激增或者黑客攻击的情况下,会导致接口占用大量的服务器资源,使得接口响应效率的降低或者超时,更或者导致服务器宕机。 限流是指对应用服务进行限制…...
sosadmin相关命令
sosadmin命令 以下是本人翻译的官方文档,如有不对,还请指出,引用请标明出处。 原本有个对应表可以跳转的,但是CSDN的这个[](#)跳转好像不太一样,必须得用html标签,就懒得改了。 sosadmin help 用法 sosadm…...
关于大数据的基础知识(四)——大数据的意义与趋势
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于大数据的基础知识(四&a…...
【EI,Scopus检索 | 往届均已检索见刊】第四届智能系统、通信与计算机网络国际学术会议(ISCCN 2025)
重要信息: 大会官网:更多详情【论文投稿】 截稿时间:以官网信息为准 大会时间:2025年2月21-23日 接受/拒稿通知:投稿后3-5个工作日内 收录检索:EI,Scopus 出版信息: 本会议所有…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
大模型智能体核心技术:CoT与ReAct深度解析
**导读:**在当今AI技术快速发展的背景下,大模型的推理能力和可解释性成为业界关注的焦点。本文深入解析了两项核心技术:CoT(思维链)和ReAct(推理与行动),这两种方法正在重新定义大模…...
Redis专题-实战篇一-基于Session和Redis实现登录业务
GitHub项目地址:https://github.com/whltaoin/redisLearningProject_hm-dianping 基于Session实现登录业务功能提交版本码:e34399f 基于Redis实现登录业务提交版本码:60bf740 一、导入黑马点评后端项目 项目架构图 1. 前期阶段2. 后续阶段导…...
Faiss vs Milvus 深度对比:向量数据库技术选型指南
Faiss vs Milvus 深度对比:向量数据库技术选型指南 引言:向量数据库的时代抉择 在AI应用爆发的今天,企业和开发者面临着如何存储和检索海量向量数据的重大技术选择。作为当前最受关注的两大解决方案,Faiss和Milvus代表了两种不同…...
