大模型,多模态大模型面试问题【计算图,LLama,交叉熵,SiLU,RLHF】

大模型,多模态大模型面试问题【计算图,LLama,交叉熵,SiLU,RLHF】

  • 问题一:讲一讲计算图中pytorch是什么,TensorFlow是什么?
      • 1. PyTorch
      • 2. TensorFlow
      • 区别总结
  • 问题二:Llama网络结构介绍
  • 问题三:llama和bert比的不同
  • 问题四:gpt3.5支持的最长输入是多少?
  • 问题五:为什么分类用交叉熵不用MSE(从梯度的角度想一下)?
  • 问题六:SiLU介绍一下
      • **1. 定义**
      • **2. 特性**
      • **3. 与其他激活函数的比较**
      • **4. 优势**
      • **5. 使用方法**
      • **6. 应用场景**
      • **7. 注意事项**
      • **8. 总结**
  • 问题七:详细介绍一下RLHF。
  • **RLHF(基于人类反馈的强化学习)详解**
    • **1. 什么是 RLHF?**
    • **2. 背景与动机**
    • **3. RLHF 的核心流程**
      • **3.1 初始模型训练**
      • **3.2 收集人类反馈数据**
      • **3.3 训练奖励模型**
      • **3.4 强化学习优化**
    • **4. 关键组件详解**
      • **4.1 奖励模型(Reward Model)**
      • **4.2 强化学习算法**
    • **5. RLHF 的应用案例**
      • **5.1 自然语言处理**
      • **5.2 内容过滤和审查**
    • **6. RLHF 的优势**
    • **7. 挑战与限制**
      • **7.1 数据收集成本**
      • **7.2 奖励模型的偏差**
      • **7.3 技术复杂性**
    • **8. 未来发展方向**
    • **9. 总结**
    • **参考文献**

问题一:讲一讲计算图中pytorch是什么,TensorFlow是什么?

在计算图领域,PyTorch 和 TensorFlow 是两种主要的深度学习框架,分别提供了动态和静态计算图的构建方式,使得用户能够设计和训练复杂的神经网络模型。

1. PyTorch

  • 动态计算图:PyTorch 使用动态图(Dynamic Computational Graph),每次计算时都会重新构建计算图,使得代码灵活且易于调试。动态图的优势在于可以在运行时根据数据的变化动态调整模型结构,适合一些复杂的模型。
  • Pythonic风格:PyTorch 的接口设计贴近 Python,符合 Python 语言的编程习惯,降低了学习门槛。
  • 流行领域:PyTorch 因灵活性和调试友好,受到研究和实验用户的青睐,特别是在计算机视觉和自然语言处理领域。

2. TensorFlow

  • 静态计算图:TensorFlow 默认使用静态计算图(Static Computational Graph),在运行前定义好计算图结构,在训练和推理时重复使用这个图。这种方式适合大规模的生产环境,图优化的潜力更大。
  • 性能优化:由于静态计算图,TensorFlow 能够对图进行更多的优化,支持更高效的内存分配和分布式计算,适合企业级部署。
  • 应用领域:TensorFlow 在产品化、规模化部署的项目中被广泛应用,拥有较成熟的生态和工具,如 TensorFlow Serving、TensorFlow Lite 等。

区别总结

  • 计算图模式:PyTorch 是动态图,TensorFlow 是静态图(2.0以后支持动态图)。
  • 灵活性和调试性:PyTorch 更加灵活、易调试,TensorFlow 在性能和大规模部署上更有优势。
  • 用户群体:PyTorch 更适合科研和实验,TensorFlow 更适合生产和部署。

总之,PyTorch 更注重代码的动态性和可操作性,而 TensorFlow 强调性能优化和部署灵活性。

问题二:Llama网络结构介绍

绝对位置编码的优点是计算速度快等,缺点是拓展长度比较麻烦,且绝对位置并没有什么实际意义。而相对位置编码对学习token之间的关系很有意义,比如距离的很远的两个token之间的关联大概率很小,使用相对位置编码往往能够获得更好的效果。此外拓展长度也更容易,因为不论context size多长,只需关注最长距离以内的输入即可。相对位置编码的缺点是没有绝对位置编码计算速度快。

当我们计算Attention时,RoPE可以变成相对位置编码。

参考Llama网络结构介绍

LLaMA(Large Language Model Meta AI)是Meta(Facebook AI)开发的一个大规模语言模型,专为高效和灵活的生成式任务设计。LLaMA的结构基于Transformer模型,与GPT-3等模型类似,但在优化和训练数据上有不同之处。以下是LLaMA结构的核心特点:

  1. 模型规模与参数分布
    LLaMA模型有不同的参数规模版本(如7B、13B、30B、65B等),适用于多种设备和硬件资源的限制。参数规模越大,模型对知识的掌握和推理能力也越强。

  2. 基于标准Transformer的改进
    LLaMA使用了标准的Transformer架构,包括多层的自注意力和前馈网络层,通过层堆叠来增强语言理解能力。与GPT模型类似,LLaMA使用的架构以高效的自注意力机制处理长序列输入,并进行上下文的建模。

  3. 自回归生成
    LLaMA采用自回归方式生成文本,即逐步生成每个单词的概率分布,通过最大化给定上下文条件下的概率,来产生下一个可能的单词。

  4. 数据集和预训练
    LLaMA在高质量的互联网数据集上进行预训练。不同于GPT-3在大规模互联网数据上的预训练,LLaMA选择了较少但更有代表性的数据,这样在计算资源的使用上更高效。

  5. 优化和训练策略
    Meta在LLaMA的训练中使用了精细化的优化方法,包括混合精度训练(FP16/FP32)和分布式训练框架,以实现更快的收敛速度和资源的有效利用。此举有效降低了训练成本,使得模型更易于扩展。

  6. 高效推理优化
    LLaMA结构中的参数被压缩以提高推理效率,通过如梯度裁剪、权重剪枝等方式减少冗余,提升在推理阶段的响应速度,适合在较低资源硬件上进行推理任务。

这种设计使得LLaMA具备在不同硬件条件下的高效运行能力,并在特定语言任务中展现了较高的表现。

问题三:llama和bert比的不同

LLaMA和BERT在结构设计、训练方式和应用任务上有明显不同。以下是两者的主要区别:

  1. 模型架构设计目标

    • BERT:是一个双向的Transformer模型,主要用于自然语言理解任务,如文本分类、问答和句子对匹配等。它通过Masked Language Modeling (MLM) 任务来学习词汇和上下文的关系。
    • LLaMA:是自回归生成模型,主要用于自然语言生成任务(如文本生成和续写)。LLaMA的目标是最大化生成序列的概率,逐词预测下一个单词,通常适合生成和对话任务。
  2. 训练方式

    • BERT:采用“遮掩词”预训练(MLM),即在训练时随机遮掩部分词汇,模型需要预测这些被遮掩的词。这样BERT可以理解双向上下文关系,因此在填空、推理等理解类任务中表现很好。
    • LLaMA:采用自回归训练,模型仅从左到右依次生成词汇。这样LLaMA在序列生成时可以保持上下文连贯性,更适合生成类任务。
  3. 应用场景

    • BERT:更适合处理自然语言理解类任务(NLP),如情感分析、文本分类、信息检索等。BERT通过理解上下文和挖掘句子间关系,在准确分析文本内容上有优势。
    • LLaMA:更适合自然语言生成(NLG)任务,如文本续写、摘要生成和对话生成等。它以生成自然流畅的长文本为强项。
  4. 双向性 vs 单向性

    • BERT:是双向模型,可以在同一时间关注句子中前后两端的单词,因此上下文理解更全面。
    • LLaMA:是单向模型,仅使用先前的单词生成下一个单词,因此在连贯生成长句子方面更具优势。
  5. 参数规模和效率

    • BERT:一般规模较小,应用在需要快速理解的任务中。
    • LLaMA:有多个参数规模版本(如7B、13B等),更灵活,并优化了推理效率,在大规模生成任务中表现良好。

总结来说,BERT是更适合文本理解的双向模型,而LLaMA则是更适合文本生成的自回归模型。

问题四:gpt3.5支持的最长输入是多少?

GPT-3.5支持的最长输入长度为4096个token,大约相当于3000-3500个单词,具体数量视文本的词汇和结构而定。

另外,OpenAI还推出了更高容量的GPT-4模型,有两个版本:

  • GPT-4-8k:支持最多 8192个token
  • GPT-4-32k:支持最多 32768个token

这些较大的上下文窗口更适合长文档处理、复杂对话和信息检索任务。

问题五:为什么分类用交叉熵不用MSE(从梯度的角度想一下)?

在分类任务中,我们通常使用交叉熵损失函数而不是均方误差(MSE),这与梯度的性质密切相关。下面从梯度的角度解释原因。

1. 均方误差(MSE)在分类中的问题:

对于二分类问题,假设模型的输出经过Sigmoid激活函数,得到预测值 y ^ = σ ( z ) \hat{y} = \sigma(z) y^=σ(z),其中 z z z 是网络的线性输出。

使用 MSE 损失函数:
L MSE = 1 2 ( y ^ − y ) 2 L_{\text{MSE}} = \frac{1}{2} (\hat{y} - y)^2 LMSE=21(y^y)2

计算损失对 z z z 的梯度:
∂ L MSE ∂ z = ( y ^ − y ) ⋅ ∂ y ^ ∂ z = ( y ^ − y ) ⋅ y ^ ( 1 − y ^ ) \frac{\partial L_{\text{MSE}}}{\partial z} = (\hat{y} - y) \cdot \frac{\partial \hat{y}}{\partial z} = (\hat{y} - y) \cdot \hat{y}(1 - \hat{y}) zLMSE=(y^y)zy^=(y^y)y^(1y^)

注意到梯度中有 y ^ ( 1 − y ^ ) \hat{y}(1 - \hat{y}) y^(1y^) 项。当 y ^ \hat{y} y^ 接近 0 或 1(即 z z z 的绝对值较大)时, y ^ ( 1 − y ^ ) \hat{y}(1 - \hat{y}) y^(1y^) 将非常小,导致梯度消失。这会使得模型学习变得非常缓慢,因为参数更新的步长变得极小。

2. 交叉熵在分类中的优势:

使用二元交叉熵损失函数:
L CE = − [ y ln ⁡ ( y ^ ) + ( 1 − y ) ln ⁡ ( 1 − y ^ ) ] L_{\text{CE}} = - [ y \ln(\hat{y}) + (1 - y) \ln(1 - \hat{y}) ] LCE=[yln(y^)+(1y)ln(1y^)]

计算损失对 z z z 的梯度:
∂ L CE ∂ z = y ^ − y \frac{\partial L_{\text{CE}}}{\partial z} = \hat{y} - y zLCE=y^y

这里,梯度仅仅是预测值与真实值的差,没有 y ^ ( 1 − y ^ ) \hat{y}(1 - \hat{y}) y^(1y^) 项。这意味着即使在 y ^ \hat{y} y^ 接近 0 或 1 时,梯度仍然保持较大,不会出现梯度消失的问题。

3. 梯度对比与影响:

  • MSE 梯度: 包含 y ^ ( 1 − y ^ ) \hat{y}(1 - \hat{y}) y^(1y^),在输出饱和时梯度趋近于零。
  • 交叉熵梯度: 仅为 y ^ − y \hat{y} - y y^y,在整个激活函数输出范围内都能保持有效的梯度。

4. 结论:

从梯度的角度来看,交叉熵损失函数在分类任务中提供了更稳定和有效的梯度信号,避免了由于激活函数饱和导致的梯度消失问题。这使得模型能够更快速、更可靠地学习,从而在分类任务中取得更好的性能。

因此,我们在分类任务中更倾向于使用交叉熵损失函数,而不是均方误差。

问题六:SiLU介绍一下

SILU(Sigmoid-Weighted Linear Unit)激活函数

在机器学习,特别是深度学习中,激活函数是神经网络的重要组成部分。SILU(Sigmoid-Weighted Linear Unit),也称为 SiLU,是一种新兴的激活函数,旨在提高神经网络的性能。


1. 定义

SILU 激活函数的数学表达式为:

SiLU ( x ) = x ⋅ σ ( x ) \text{SiLU}(x) = x \cdot \sigma(x) SiLU(x)=xσ(x)

其中, σ ( x ) \sigma(x) σ(x) 是 Sigmoid 函数:

σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1

因此,SiLU 等于输入 x x x 乘以其 Sigmoid 激活值。


2. 特性

  • 平滑性: SiLU 是连续可导的平滑函数,有助于梯度传播和优化过程。
  • 非线性: 通过引入非线性,有助于神经网络学习复杂的模式。
  • 自门控机制: 输入 x x x 同时影响幅值和激活状态,实现了自适应的门控效果。
  • 输出范围: x x x 趋近于负无穷大时, SiLU ( x ) \text{SiLU}(x) SiLU(x) 接近 0;当 x x x 趋近于正无穷大时, SiLU ( x ) \text{SiLU}(x) SiLU(x) 接近 x x x

3. 与其他激活函数的比较

  • 与 ReLU: ReLU(Rectified Linear Unit)在 x < 0 x < 0 x<0 时输出为 0,而 SiLU 在 x < 0 x < 0 x<0 时仍有小的负输出,避免了 ReLU 的“死亡神经元”问题。
  • 与 Swish: Swish 激活函数形式为 Swish ( x ) = x ⋅ σ ( β x ) \text{Swish}(x) = x \cdot \sigma(\beta x) Swish(x)=xσ(βx)。当 β = 1 \beta = 1 β=1 时,Swish 就是 SiLU。因此,SiLU 可以看作是 Swish 的特殊情况。LLaMA没有使用ReLU,而是使用了SwiGLU,有时也被称为SiLU。
  • 与其他激活函数: 相比 ELU、Leaky ReLU 等,SiLU 提供了更平滑的曲线,有助于模型的泛化能力。
    在这里插入图片描述

4. 优势

  • 提升模型性能: 实验表明,在某些任务中,使用 SiLU 可以提高模型的准确率和收敛速度。
  • 稳定的梯度: 平滑的性质使梯度更新更稳定,减少了梯度消失或爆炸的风险。
  • 自适应性: 自门控机制使激活函数能够根据输入动态调整,有利于捕获复杂的模式。

5. 使用方法

在深度学习框架中,如 PyTorch 和 TensorFlow,都支持 SiLU 激活函数。

在 PyTorch 中:

import torch.nn.functional as F# 在前向传播中使用 SiLU
def forward(self, x):x = F.silu(x)return x

在 TensorFlow 中:

import tensorflow as tf# 在构建模型时使用 SiLU
x = tf.keras.layers.Activation('swish')(x)

6. 应用场景

  • 计算机视觉: 在图像分类和目标检测任务中,SiLU 可提高模型的识别能力。
  • 自然语言处理: 在序列建模和文本生成任务中,使用 SiLU 有助于捕获复杂的语言模式。
  • 强化学习: 在策略网络和价值网络中,SiLU 可提供更稳定的训练过程。

7. 注意事项

  • 计算成本: 由于涉及到指数计算,SiLU 的计算量略高于 ReLU,需要在资源受限的环境中权衡。
  • 实验验证: 虽然 SiLU 有诸多优势,但在实际应用中,最好通过实验验证其效果是否优于其他激活函数。

8. 总结

SILU(SiLU)激活函数结合了线性和非线性特性,提供了平滑且自适应的激活机制。其独特的优势使其在深度学习的各种任务中展现出良好的性能,是值得关注和尝试的激活函数。

问题七:详细介绍一下RLHF。

RLHF(基于人类反馈的强化学习)详解


1. 什么是 RLHF?

RLHF(Reinforcement Learning from Human Feedback),即基于人类反馈的强化学习,是一种结合强化学习和人类反馈的信息来训练机器学习模型的方法。其核心思想是利用人类的偏好和反馈来指导模型的训练,使其生成更符合人类期望的输出。


2. 背景与动机

传统的机器学习模型通常依赖于预先标注的数据进行训练。然而,在许多复杂的任务中,例如自然语言生成、对话系统和内容过滤等,难以获得高质量的标注数据,或者标注成本过高。此外,模型可能会学到与人类期望不一致的行为。

RLHF 的引入旨在解决以下问题:

  • 提高模型输出的质量和可靠性:通过人类反馈,模型能够更好地理解什么是“好的”输出。
  • 减少有害或不恰当内容的生成:在人类反馈的指导下,模型可以避免生成不符合道德或法律规范的内容。
  • 增强模型的可控性:人类可以通过反馈直接影响模型的行为,使其朝着期望的方向发展。

3. RLHF 的核心流程

RLHF 的训练过程通常包括以下几个步骤:

3.1 初始模型训练

首先,使用传统的有监督学习方法,利用已有的数据对模型进行初始训练。这一步旨在让模型具备基本的任务能力,例如生成语法正确的句子。

3.2 收集人类反馈数据

在人类反馈阶段,需要:

  • 构建对比数据集:让模型生成多个候选输出(如回复或文本段落)。
  • 人类评估:人类评估者对这些候选输出进行比较,选择他们认为更好的一个。

3.3 训练奖励模型

利用收集的人类偏好数据,训练一个奖励模型,该模型能够根据输入和输出对模型的行为进行打分,反映人类的偏好。

3.4 强化学习优化

使用强化学习算法(如 Proximal Policy Optimization,PPO),在奖励模型的指导下,对初始模型进行进一步优化。目标是最大化模型在奖励模型下的期望回报。


4. 关键组件详解

4.1 奖励模型(Reward Model)

  • 作用:模拟人类对模型输出的偏好,给出一个评分,指导模型优化。
  • 训练方法:利用人类反馈的比较数据,训练一个模型,使其能够预测人类更偏好的输出。

4.2 强化学习算法

  • PPO(近端策略优化):一种常用的强化学习算法,适用于大规模模型的训练,具有稳定性和高效性。
  • 目标函数:通过最大化奖励模型给出的评分,优化模型的参数。

5. RLHF 的应用案例

5.1 自然语言处理

  • 对话系统:如 OpenAI 的 ChatGPT,通过 RLHF,让模型生成更符合人类期望的回复。
  • 机器翻译:利用人类反馈,提高翻译的准确性和流畅性。

5.2 内容过滤和审查

  • 有害内容检测:模型通过人类反馈,学习识别并避免生成不当内容。
  • 个性化推荐:根据用户的反馈,调整推荐系统的输出,更符合用户喜好。

6. RLHF 的优势

  • 提高模型输出质量:直接利用人类的偏好,生成更符合预期的结果。
  • 减少不当行为:通过人类反馈,模型可以避免生成有害或不恰当的内容。
  • 增强可解释性:奖励模型的引入,使得模型的优化目标更透明。

7. 挑战与限制

7.1 数据收集成本

  • 人力资源需求高:需要大量的人类评估者参与数据收集,成本较高。

7.2 奖励模型的偏差

  • 主观性:人类的偏好具有主观性,可能引入偏差。
  • 泛化能力:奖励模型可能在未见过的数据上表现不佳,影响模型优化。

7.3 技术复杂性

  • 训练难度:结合强化学习和监督学习,训练过程复杂,需解决稳定性和效率问题。

8. 未来发展方向

  • 自动化反馈机制:研究如何利用用户行为数据,减少对显式人类反馈的依赖。
  • 多模态 RLHF:将 RLHF 扩展到图像、音频等多模态任务中。
  • 公平性和道德性:加强对模型偏差的监控,确保模型输出符合伦理规范。

9. 总结

RLHF(基于人类反馈的强化学习)是一种有效的模型优化方法,通过融合人类的偏好信息,显著提高了模型的性能和可控性。尽管面临一些挑战,但随着技术的进步和应用的拓展,RLHF 在人工智能领域具有广阔的前景。


参考文献

  • Christiano, P., Leike, J., Brown, T., et al. (2017). Deep Reinforcement Learning from Human Preferences.
  • OpenAI. (2022). ChatGPT: Optimizing Language Models for Dialogue.
  • Ziegler, D., Stiennon, N., Wu, J., et al. (2019). Fine-Tuning Language Models from Human Preferences.

创作不易,观众老爷们请留步… 动起可爱的小手,点个赞再走呗 (๑◕ܫ←๑)
欢迎大家关注笔者,你的关注是我持续更博的最大动力


原创文章,转载告知,盗版必究



在这里插入图片描述


在这里插入图片描述
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AIGC】2024-arXiv-Lumiere:视频生成的时空扩散模型

2024-arXiv-Lumiere: A Space-Time Diffusion Model for Video Generation Lumiere&#xff1a;视频生成的时空扩散模型摘要1. 引言2. 相关工作3. Lumiere3.1 时空 U-Net (STUnet)3.2 空间超分辨率的多重扩散 4. 应用4.1 风格化生成4.2 条件生成 5. 评估和比较5.1 定性评估5.2 …

如何使用python完成最简单的数据预测?

数据预测是数据科学和机器学习中的一个重要领域。通过分析历史数据,我们可以预测未来的趋势和结果。 本文将介绍如何使用Python进行最简单的数据预测,包括基本的概念、常用的库和一个简单的代码示例。 1. 数据预测的基本概念 数据预测是利用历史数据来预测未来事件的过程。…

k8s集群 ceph rbd 存储动态扩容

k8s 集群 rbd 扩容有两种方法&#xff0c;如下所示 通过StorageClass自动扩容 # kubectl get sc csi-rbd-sc -oyaml|grep allowVolumeExpansion allowVolumeExpansion: true如果搜索有如上字段&#xff0c;说明是可以自动扩容的&#xff0c;修改对应要扩容的 PVC容量&#xf…

如何通过接口版本控制实现向后兼容

目录 引言接口版本控制策略实现方案最佳实践常见问题与解决方案总结与建议 1. 引言 在微服务架构中&#xff0c;接口的版本控制是一个不可回避的话题。如何在保持系统稳定性的同时&#xff0c;实现接口的平滑升级&#xff1f;如何确保新版本的发布不会影响现有用户&#xff…

隨筆 20241025 Kafka数据一致性的韭菜比喻

在Kafka中&#xff0c;数据一致性是通过Leader和Follower副本之间的协调来实现的。为了更容易理解这个复杂的概念&#xff0c;我们可以用韭菜作为比喻。 韭菜的角色 Leader韭菜&#xff1a;代表数据的主导者&#xff0c;它负责更新和维护最新的数据。Follower韭菜&#xff1a…

【CPN TOOLS建模学习】设置变迁的属性

使用Tab键在属性之间进行切换 与一个变迁相关联的四个铭文&#xff0c;均为可选项&#xff1a; 变迁名称守卫(Guard)时间代码段 变迁延迟必须是一个正整数表达式。该表达式前面加上&#xff0c;这意味着时间铭文的形式为 delayexpr。在添加时间铭文之前&#xff0c;铭文的默…

uniapp 如何调用音频

uniapp调用音频 button点击 <view><button click"startPlay">开始播放</button></view>方法实现 startPlay() { const innerAudioContext uni.createInnerAudioContext();innerAudioContext.src /static/sounds/oqc.mp3;innerAudioContex…

【Mac】Homebrew

1、Homebrew 简介 官网地址&#xff1a;https://brew.sh Homebrew 是一款Mac OS平台下的软件包管理工具&#xff0c;拥有安装、卸载、更新、查看、搜索等很多实用的功能。 Homebrew 主要有四个部分组成: brew、homebrew-core 、homebrew-bottles、homebrew-cask。 源说明br…

标准正态分布的数据 tensorflow 实现正态分布图,python 编程,数据分析和人工智能...

登录后复制 import tensorflow as tfimport matplotlib.pyplot as plt# 设置随机种子以获得可重复的结果tf.random.set_seed(42)# 生成正态分布的数据# mean0 和 stddev1 表示生成标准正态分布的数据# shape(1000,) 表示生成1000个数据点data tf.random.normal(mean0, stddev1…

005 IP地址的分类

拓扑结构如下 两台主机处于同一个网关下&#xff0c;通过ping命令检测&#xff0c;可以连通 &nbps; 拓扑结构如下 使用ping 检查两台电脑是否相通, 因为网络号不一样&#xff0c;表示两台电脑不在同一个网络&#xff0c;因此无法连通 拓扑结构如下 不在同一网络的PC要相…

thinkphp6 redis 哈希存储方式以及操作函数(笔记)

逻辑&#xff1a;如果redis里没有指定表数据就进行存储再输出&#xff0c;如果有就直接输出&#xff0c;代码优化后几万条数据从数据库入redis也是三四秒的时间&#xff0c;数据以json方式存储&#xff1a;key用于数据ID 跟数据库数据ID同步&#xff0c;value用于存储整个字段包…

HTML--浮动布局练习

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>/* 整个浏览器页…

后台管理系统的通用权限解决方案(二)SpringBoot整合Swagger Springfox实现接口日志文档

文章目录 1 Swagger介绍2 Swagger常用注解3 Swagger使用案例 1 Swagger介绍 使用Swagger&#xff0c;我们只需要按照它的规范去定义接口及接口相关的信息&#xff0c;再通过Swagger衍生出来的一系列项目和工具&#xff0c;就可以做到生成各种格式的接口文档&#xff0c;生成多…

【Spring框架】Spring框架的开发方式

目录 Spring框架开发方式前言具体案例导入依赖创建数据库表结构创建实体类编写持久层接口和实现类编写业务层接口和实现类配置文件的编写 IoC注解开发注解开发入门&#xff08;半注解&#xff09;IoC常用注解Spring纯注解方式开发 Spring整合JUnit测试 Spring框架开发方式 前言…

Redis数据安全_持久化机制

由于Redis的数据都存放在内存中&#xff0c;如果没有配置持久化&#xff0c;Redis重启后数据就全丢失了&#xff0c;于是需要开启Redis的持久化功能&#xff0c;将数据保存到磁盘上&#xff0c;当Redis重启后&#xff0c;可以从磁盘中恢复数据。 持久化机制概述 对于Redis而言…

Golang | Leetcode Golang题解之第519题随机翻转矩阵

题目&#xff1a; 题解&#xff1a; type Solution struct {m, n, total intmp map[int]int }func Constructor(m, n int) Solution {return Solution{m, n, m * n, map[int]int{}} }func (s *Solution) Flip() (ans []int) {x : rand.Intn(s.total)s.total--if y, o…

【电子通识】四线制电阻屏怎么判断是哪一路出现异常?

在文章【电子通识】四线电阻屏原理中我们聊了一下四线电阻屏触摸的原理,如电阻屏结构、如何计算坐标等方面。 那么在实际的问题分析中,如果是屏硬件问题,那我们如何去判断到底是X还是Y出现异常或是说X+还是X-,是Y+还是Y-出现问题呢? 首先要知道,XY轴为什么会出问题,其实…

高效文本编辑与导航:Vim中的三种基本模式及粘滞位的深度解析

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

推荐一款开源的免费PDF编辑工具:CubePDF Utility

CubePDF Utility是一款功能强大的开源免费PDF编辑器&#xff0c;它采用了基于缩略图的界面设计&#xff0c;为用户提供了直观且高效的PDF编辑体验。该软件特别针对那些希望以简单直观方式编辑 PDF 文件的用户而设计&#xff0c;支持多种操作&#xff0c;如合并、提取、拆分、更…