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

嵌入式学习笔记-杂七杂八

文章目录

    • 连续波光纤耦合激光器
      • 工作原理
      • 主要特点
      • 应用领域
      • 设计考虑因素
    • 数值孔径(Numerical Aperture,简称NA)
      • 数值孔径的定义
      • 数值孔径的意义
      • 数值孔径的计算示例
      • 数值孔径与光纤
    • 四象限探测器检测目标方法
      • 四象限划分
      • 检测目标的步骤
        • 1. 数据采集
        • 2. 坐标转换
        • 3. 四象限判断
        • 4. 目标位置识别
        • 5. 目标跟踪与响应
        • 代码示例(基于传感器数据)
    • Wiener 滤波
      • 维纳滤波的基本原理
        • 1. 目标函数:最小化均方误差(MSE)
        • 2. 频域表示
      • 图像去噪
      • 维纳滤波的优势与限制
      • 优势:
      • 限制:
      • Wiener 滤波的实现
      • 代码说明:
    • LM2596S DC-DC 降压电源
      • LM2596S 的特点:
      • LM2596S模块的元器件

连续波光纤耦合激光器

连续波光纤耦合激光器(CW Fiber-coupled Laser)是一种利用光纤传输激光输出的激光器。其特点是输出的激光为连续波(Continuous Wave,CW)形式,即激光的输出功率是稳定和持续的,没有明显的脉冲特征。这种激光器通常用于精密加工、传感、医疗等多个领域,具有高稳定性和良好的光束质量。

工作原理

连续波光纤耦合激光器的基本原理是通过光纤将激光从激光源传输到目标位置。光纤耦合技术使得激光器具有更高的输出效率、光束质量和方向性。其工作过程大致可以分为以下几个步骤:

  1. 激光源:激光器本身通常是半导体激光器、固体激光器或气体激光器等。激光源通过电流或光源激发介质,使其发射出特定波长的激光。

  2. 光纤耦合:激光通过耦合系统(例如透镜、反射镜等)导入光纤中。耦合的过程需要确保光纤能够有效地接收到激光源的输出,并将光传输到输出端。

  3. 光纤传输:光纤作为光的传输通道,传输过程中几乎没有能量损失,因此能够保证激光输出的稳定性。通过光纤,激光可以被精确地传输到需要的位置。

  4. 输出激光:最终,激光通过光纤输出端口传递到目标区域。由于光纤的特殊结构,激光的输出通常具有较小的光斑和较高的光束质量。

主要特点

  1. 高稳定性:连续波光纤耦合激光器能够提供稳定的输出功率,适合精密控制和长时间运行。

  2. 良好的光束质量:光纤传输过程中能够保持较高的光束质量,适合对光束质量有要求的应用。

  3. 紧凑性:光纤耦合激光器的结构相对紧凑,易于集成进各种设备中。

  4. 高效率:通过光纤传输,激光损耗较低,系统整体效率较高。

  5. 较强的抗干扰能力:光纤本身对电磁干扰不敏感,因此能够保证在复杂环境下正常工作。

应用领域

  1. 精密加工:在材料加工、激光切割、激光焊接等领域,连续波光纤耦合激光器可以提供高精度、高功率的激光输出,广泛应用于金属、陶瓷等材料的加工。

  2. 激光扫描与传感:在激光扫描、三维成像、激光雷达(LiDAR)等应用中,光纤耦合激光器提供稳定的激光输出,用于高精度测量。

  3. 医疗领域:在激光治疗、激光手术等医疗领域,连续波激光器被用于组织切割、消融等操作,具有较高的精准性和可控性。

  4. 通信与研究:在光通信领域,光纤耦合激光器被广泛用于信号传输和实验研究。

设计考虑因素

在设计连续波光纤耦合激光器时,需要考虑以下几个因素:

  1. 光纤匹配:选择适合的光纤和耦合方式,确保激光器的输出能够有效耦合入光纤。

  2. 功率控制:设计适当的驱动电路和温控系统,确保激光器输出的功率稳定且可调。

  3. 热管理:激光器工作时会产生大量热量,良好的热管理系统能够防止激光器过热,确保长时间稳定运行。

  4. 波长选择:根据应用需求选择适当的激光波长,光纤的传输性能和耦合效率也会随波长的不同而有所变化。

  5. 光束质量:确保激光器的输出光束具有良好的质量,以适应精密加工或高精度测量的需求。

数值孔径(Numerical Aperture,简称NA)

数值孔径(NA)是描述光学系统,特别是显微镜、光纤等光学设备的光学性能的重要参数。它表征了光学系统能够接收或发射光的能力,即系统的光学聚焦能力与分辨率的关系。

数值孔径的定义

数值孔径是由光学系统的物镜(或光纤的核心)与透镜的光学特性共同决定的,它是一个无单位的数值,定义如下:

N A = n sin ⁡ θ NA = n \sin \theta NA=nsinθ

其中:

  • n n n 是介质的折射率,通常是物镜与物体之间的介质(如空气、水、油等)的折射率。
  • θ \theta θ 是物镜半角(或入射光束的最大半角),即光线从物镜的中心轴到边缘所形成的角度。

数值孔径的意义

  1. 光学系统的聚焦能力:数值孔径越大,光学系统的聚焦能力越强,能够集中更多的光线,形成更小的焦点。因此,NA越大,系统的分辨率通常也会更高。

  2. 光纤的传输能力:在光纤通信中,NA反映了光纤核心能够接受的光线角度范围。较大的NA表示光纤可以接受更多不同角度的光线,传输效率和带宽也更高。

  3. 分辨率与物镜性能:数值孔径与分辨率相关。分辨率 R R R 与NA之间的关系为:

    R = λ 2 × N A R = \frac{\lambda}{2 \times NA} R=2×NAλ

    其中, λ \lambda λ 是使用的光的波长。可以看到,数值孔径越大,分辨率越高。

数值孔径的计算示例

假设我们有一个在空气中工作的物镜,折射率 n = 1.0 n = 1.0 n=1.0,入射角度为 3 0 ∘ 30^\circ 30,那么数值孔径NA为:

N A = 1.0 × sin ⁡ ( 3 0 ∘ ) = 1.0 × 0.5 = 0.5 NA = 1.0 \times \sin(30^\circ) = 1.0 \times 0.5 = 0.5 NA=1.0×sin(30)=1.0×0.5=0.5

若这个系统使用的是水作为介质,其折射率通常为 n = 1.33 n = 1.33 n=1.33,那么:

N A = 1.33 × sin ⁡ ( 3 0 ∘ ) = 1.33 × 0.5 = 0.665 NA = 1.33 \times \sin(30^\circ) = 1.33 \times 0.5 = 0.665 NA=1.33×sin(30)=1.33×0.5=0.665

可以看出,水介质下的数值孔径比空气中的数值孔径更大,表明水介质下的物镜能够聚焦更多的光线,从而提供更高的分辨率。

数值孔径与光纤

在光纤中,数值孔径的作用是决定光纤的接受角度(或模式)的能力。光纤的NA越大,可以接收到更多不同方向的光线,从而能够支持更多的传播模式,这对于多模光纤尤其重要。

对于光纤,数值孔径也由其核心和包层的折射率差异决定,通常使用如下公式计算:

N A = n 1 2 − n 2 2 NA = \sqrt{n_1^2 - n_2^2} NA=n12n22

其中:

  • n 1 n_1 n1 是光纤核心的折射率。
  • n 2 n_2 n2 是光纤包层的折射率。

四象限探测器检测目标方法

四象限探测器(Quadrant Detector),又是一个唬人的名词,本质上就是看物体运动到从哪个象限到哪个象限,判断是哪个方向。

四象限探测器通过将检测区域划分为四个象限(上下左右四个部分),根据目标的分布位置来判断目标是否存在以及其大致位置。

四象限划分

我们通常将平面坐标系的原点 ( 0 , 0 ) (0, 0) (0,0) 放置在检测区域的中心,基于此将区域划分为四个象限,分别为:

  • 第一象限:右上, x > 0 , y > 0 x > 0, y > 0 x>0,y>0
  • 第二象限:左上, x < 0 , y > 0 x < 0, y > 0 x<0,y>0
  • 第三象限:左下, x < 0 , y < 0 x < 0, y < 0 x<0,y<0
  • 第四象限:右下, x > 0 , y < 0 x > 0, y < 0 x>0,y<0

通过这种划分,探测器可以分别检测目标是否处于某个象限,并根据这些信息来判断目标的方位和移动方向。

检测目标的步骤

1. 数据采集

首先,通过传感器(如红外传感器、激光雷达、相机等)采集目标的位置信息。这些传感器可以通过测量与目标之间的距离、角度或者其他相关特征来获取目标的位置数据。

  • 如果使用图像处理方法,可以通过摄像头获取目标的图像信息。
  • 如果使用激光雷达,可以通过点云数据或反射信号获得目标在空间中的坐标。
2. 坐标转换

将目标的坐标数据转换为平面坐标系中的 x , y x, y x,y 坐标。对于激光雷达或其他传感器采集的数据,可能需要根据传感器的角度和距离计算出目标的实际位置。

例如,假设有一个距离 d d d 和角度 θ \theta θ,则可以通过极坐标转直角坐标来得到目标的 x , y x, y x,y 坐标:

x = d ⋅ cos ⁡ ( θ ) x = d \cdot \cos(\theta) x=dcos(θ)
y = d ⋅ sin ⁡ ( θ ) y = d \cdot \sin(\theta) y=dsin(θ)

3. 四象限判断

根据得到的 x , y x, y x,y 坐标,判断目标所在的象限:

  • 第一象限 x > 0 , y > 0 x > 0, y > 0 x>0,y>0
  • 第二象限 x < 0 , y > 0 x < 0, y > 0 x<0,y>0
  • 第三象限 x < 0 , y < 0 x < 0, y < 0 x<0,y<0
  • 第四象限 x > 0 , y < 0 x > 0, y < 0 x>0,y<0

如果目标的坐标满足某个象限的条件,说明目标位于该象限内。

4. 目标位置识别

通过四象限的划分,可以判断目标的相对位置。如果目标穿越某一象限的边界,探测器可以进一步识别目标的移动方向。

例如,若目标从第一象限移动到第二象限,则说明目标向左移动。如果目标从第一象限进入第四象限,则说明目标向下移动。

5. 目标跟踪与响应

若探测器用于实时跟踪目标,可以通过连续采集和计算目标的位置变化来持续判断其位置和方向,进行相应的操作。对于一些自动化系统,可以根据目标所在的象限来做出相应的决策,如改变机器人方向、触发某些操作等。

代码示例(基于传感器数据)

假设我们已经获取了目标的 x x x y y y 坐标,以下是一个简单的C语言代码示例来判断目标是否位于四象限中的某一象限:

#include <stdio.h>// 判断目标所在的象限
void detectQuadrant(float x, float y) {if (x > 0 && y > 0) {printf("目标在第一象限\n");} else if (x < 0 && y > 0) {printf("目标在第二象限\n");} else if (x < 0 && y < 0) {printf("目标在第三象限\n");} else if (x > 0 && y < 0) {printf("目标在第四象限\n");} else if (x == 0 && y != 0) {printf("目标在Y轴上\n");} else if (y == 0 && x != 0) {printf("目标在X轴上\n");} else {printf("目标在原点\n");}
}int main() {float x, y;// 输入目标坐标printf("请输入目标的X坐标:");scanf("%f", &x);printf("请输入目标的Y坐标:");scanf("%f", &y);// 判断目标所在的象限detectQuadrant(x, y);return 0;
}

Wiener 滤波

Wiener 滤波(维纳滤波)是一种基于统计学的滤波方法,广泛应用于信号处理和图像处理等领域,旨在通过最小化均方误差(MSE)来估计信号或图像中的噪声并进行去噪处理。Wiener 滤波器的核心思想是根据信号和噪声的统计特性,构建一个最佳的滤波器,从而达到降噪的目的。

维纳滤波的基本原理

Wiener 滤波的目标是通过某种方式估计原始信号 x ( n ) x(n) x(n)(或图像中的清晰图像)并消除其中的噪声。给定噪声信号 y ( n ) y(n) y(n),维纳滤波的目标是根据已知的信号与噪声的统计特性,构建一个最优的滤波器 H ( f ) H(f) H(f),使得输出信号 z ( n ) z(n) z(n) 尽可能接近原始信号 x ( n ) x(n) x(n),并且最小化输出信号与原始信号之间的均方误差。

1. 目标函数:最小化均方误差(MSE)

Wiener 滤波的核心是最小化均方误差(MSE),即:

J = E [ ( x ( n ) − z ( n ) ) 2 ] J = E[(x(n) - z(n))^2] J=E[(x(n)z(n))2]

其中, x ( n ) x(n) x(n) 是原始信号, z ( n ) z(n) z(n) 是滤波后的信号, E [ ⋅ ] E[\cdot] E[] 表示期望值操作。Wiener 滤波器的目标是选择一个滤波器 H ( f ) H(f) H(f),使得该误差最小化。

2. 频域表示

在频域中,Wiener 滤波器的理想形式为:

H ( f ) = S x ( f ) S x ( f ) + S n ( f ) H(f) = \frac{S_x(f)}{S_x(f) + S_n(f)} H(f)=Sx(f)+Sn(f)Sx(f)

其中, S x ( f ) S_x(f) Sx(f) 是原始信号的功率谱密度, S n ( f ) S_n(f) Sn(f) 是噪声的功率谱密度。该公式的含义是,Wiener 滤波器的增益在信号强时较大,在噪声较强时较小,从而能够有效抑制噪声。

图像去噪

在图像处理中,Wiener 滤波常用于去除图像中的高斯噪声。假设原始图像 f ( x , y ) f(x, y) f(x,y) 和噪声图像 g ( x , y ) g(x, y) g(x,y) 之间的关系如下:

g ( x , y ) = f ( x , y ) + n ( x , y ) g(x, y) = f(x, y) + n(x, y) g(x,y)=f(x,y)+n(x,y)

其中, n ( x , y ) n(x, y) n(x,y) 是添加到图像中的噪声。Wiener 滤波器通过以下公式对图像进行去噪:

f ^ ( x , y ) = ∑ u , v h ( u , v ) g ( x − u , y − v ) \hat{f}(x, y) = \sum_{u, v} h(u, v) g(x-u, y-v) f^(x,y)=u,vh(u,v)g(xu,yv)

其中, h ( u , v ) h(u, v) h(u,v) 是 Wiener 滤波器核函数, f ^ ( x , y ) \hat{f}(x, y) f^(x,y) 是滤波后的图像。

维纳滤波的优势与限制

优势:

  1. 最小化均方误差:Wiener 滤波通过统计学方法,能够找到最优的滤波器,从而使得去噪效果最好,能最大限度地保留信号。
  2. 自适应性:Wiener 滤波器能够根据信号和噪声的统计特性自动调整滤波参数,具有较强的自适应性。
  3. 广泛应用:适用于各种信号和图像去噪任务,特别是对高斯噪声有良好的效果。

限制:

  1. 需要先验知识:Wiener 滤波需要了解信号和噪声的功率谱密度。若噪声模型不准确,可能导致滤波效果不佳。
  2. 计算复杂度较高:计算信号和噪声的功率谱密度以及实现频域滤波可能需要较高的计算资源。
  3. 对非高斯噪声的效果不佳:Wiener 滤波主要适用于高斯噪声,对于其他类型的噪声(如椒盐噪声),效果可能不如预期。

Wiener 滤波的实现

以下是一个基于Python的Wiener滤波实现代码示例,用于图像去噪:

import numpy as np
import cv2
from scipy.signal import convolve2ddef wiener_filter(img, noise_var, signal_var):"""实现Wiener滤波器用于图像去噪:param img: 输入的噪声图像:param noise_var: 噪声的方差:param signal_var: 信号的方差:return: 去噪后的图像"""# 获取图像的大小rows, cols = img.shape  # 获取图像的行数和列数# 对输入图像进行二维快速傅里叶变换(FFT)fft_img = np.fft.fft2(img)  # 将图像转换到频域fft_img_conj = np.conj(fft_img)  # 计算图像的共轭复数(对于频域滤波,通常使用共轭)# 计算信号的功率谱密度(Power Spectral Density,PSD)signal_psd = np.abs(fft_img) ** 2 / (rows * cols)  # 图像的功率谱(幅度的平方),并归一化到单位面积# 计算噪声的功率谱密度,噪声功率谱假设是一个常数noise_psd = noise_var * np.ones_like(signal_psd)  # 噪声的功率谱密度,假设噪声方差为常数# 计算Wiener滤波器的频域传递函数H(f)H = signal_psd / (signal_psd + noise_psd)  # Wiener滤波器的增益函数,利用信号和噪声的功率谱计算# 应用Wiener滤波器(在频域上)wiener_filtered = np.fft.ifft2(fft_img_conj * H)  # 在频域内进行滤波,进行反傅里叶变换得到去噪后的图像# 返回滤波后的图像的绝对值(因为fft的结果可能是复数)return np.abs(wiener_filtered)# 读取含噪声的图像
noisy_image = cv2.imread('noisy_image.png', cv2.IMREAD_GRAYSCALE)  # 读取灰度图像# 假设信号和噪声的方差
noise_variance = 0.1  # 假设噪声的方差为0.1
signal_variance = 0.9  # 假设信号的方差为0.9# 使用Wiener滤波进行去噪
denoised_image = wiener_filter(noisy_image, noise_variance, signal_variance)  # 对噪声图像进行去噪# 显示原始图像和去噪后的图像
cv2.imshow('Original', noisy_image)  # 显示原始噪声图像
cv2.imshow('Denoised', denoised_image)  # 显示去噪后的图像
cv2.waitKey(0)  # 等待用户按键
cv2.destroyAllWindows()  # 关闭所有OpenCV窗口

代码说明:

  1. FFT和频域操作:在代码中,我们将图像转换到频域,通过傅里叶变换计算信号的功率谱和噪声的功率谱。
  2. Wiener滤波器的实现:Wiener滤波器在频域中通过信号和噪声的功率谱来计算频域滤波函数 H ( f ) H(f) H(f),然后对图像进行滤波。
  3. 去噪图像显示:处理后的图像通过imshow函数显示,便于直观比较。
    LM2596S DC-DC降压电源模块是一款非常常见的开关电源降压转换器(Buck Converter),广泛应用于各种电子设备的电源设计中。它可以将较高的输入电压转换为较低的输出电压,且具有高效、稳定的特性。以下是对LM2596S模块的一些详细介绍。

LM2596S DC-DC 降压电源

LM2596S是由Texas Instruments (德州仪器) 提供的一款集成开关调节器芯片。该芯片采用了降压转换方式,即高电压输入经过调节后输出较低电压的过程。LM2596S模块通常集成在一块小型电路板上,具有良好的散热设计和多种输出电压选择,适合嵌入到各种项目中。

LM2596S 的特点:

  1. 宽输入电压范围
    LM2596S的输入电压范围为 4V到40V。这使得它可以从多种不同的电源(如12V电池、电源适配器等)中获取能量。

  2. 输出电压可调
    LM2596S的输出电压范围为 1.25V到37V,通过电位器调节输出电压。也有一些模块提供固定输出电压版本(如5V、12V、15V等)。

  3. 高效率
    LM2596S作为开关电源,具有相对较高的转换效率(通常高于80%),比传统线性电压调节器具有更低的功耗和更少的热量产生。

  4. 输出电流
    LM2596S可以提供最大 2A 的输出电流,这对于大多数低功耗应用来说足够。

  5. 内置过热、过载和短路保护
    LM2596S具有过热保护、过电流保护和短路保护功能,在异常情况下可以自动关闭以保护电路。

  6. 简单的外部组件
    只需要少数几个外部元件,如电感、电容、二极管等,就可以实现高效的电压转换。

LM2596S模块的元器件

  • 输入电压 (Vin):供电输入端,通常为12V或更高的电压。
  • 电感 (L):用于滤波和能量存储,帮助降低输出电压的噪声。
  • 二极管 (D):通常为肖特基二极管,用于防止反向电流。
  • 电容 ©:用于平滑输出电压,减少电压波动。

相关文章:

嵌入式学习笔记-杂七杂八

文章目录 连续波光纤耦合激光器工作原理主要特点应用领域设计考虑因素 数值孔径&#xff08;Numerical Aperture&#xff0c;简称NA&#xff09;数值孔径的定义数值孔径的意义数值孔径的计算示例数值孔径与光纤 四象限探测器检测目标方法四象限划分检测目标的步骤1. 数据采集2.…...

14-7C++STL的stack容器

&#xff08;一&#xff09;stack容器的入栈与出栈 &#xff08;1&#xff09;stack容器的简介 stack堆栈容器&#xff0c;“先进后出”的容器&#xff0c;且stack没有迭代器 &#xff08;2&#xff09;stack对象的默认构造 stack采用模板类实现&#xff0c;stack对象的默认…...

Vue 3 中的响应式系统:ref 与 reactive 的对比与应用

Vue 3 的响应式系统是其核心特性之一&#xff0c;它允许开发者以声明式的方式构建用户界面。Vue 3 引入了两种主要的响应式 API&#xff1a;ref 和 reactive。本文将详细介绍这两种 API 的用法、区别以及在修改对象属性和修改整个对象时的不同表现&#xff0c;并提供完整的代码…...

物业巡更系统助推社区管理智能化与服务模式创新的研究与应用

内容概要 在现代社区管理中&#xff0c;物业巡更系统扮演着至关重要的角色。首先&#xff0c;我们先来了解一下这个系统的概念与发展背景。物业巡更系统&#xff0c;顾名思义&#xff0c;是一个用来提升物业管理效率与服务质量的智能化工具。随着科技的发展&#xff0c;传统的…...

windows蓝牙驱动开发-生成和发送蓝牙请求块 (BRB)

以下过程概述了配置文件驱动程序生成和发送蓝牙请求块 (BRB) 应遵循的一般流程。 BRB 是描述要执行的蓝牙操作的数据块。 生成和发送 BRB 分配 IRP。 分配BRB&#xff0c;请调用蓝牙驱动程序堆栈导出以供配置文件驱动程序使用的 BthAllocateBrb 函数。&#xff1b;初始化 BRB…...

Linux网络之序列化和反序列化

目录 序列化和反序列化 上期我们学习了基于TCP的socket套接字编程接口&#xff0c;并实现了一个TCP网络小程序&#xff0c;本期我们将在此基础上进一步延伸学习&#xff0c;实现一个网络版简单计算器。 序列化和反序列化 在生活中肯定有这样一个情景。 上图大家肯定不陌生&a…...

linux设置mysql远程连接

首先保证服务器开放了mysql的端口 然后输入 mysql -u root -p 输入密码后即可进入mysql 然后再 use mysql; select user,host from user; update user set host"%" where user"root"; flush privileges; 再执行 select user,host from user; 即可看到变…...

react-native网络调试工具Reactotron保姆级教程

在React Native开发过程中&#xff0c;调试和性能优化是至关重要的环节。今天&#xff0c;就来给大家分享一个非常强大的工具——Reactotron&#xff0c;它就像是一个贴心的助手&#xff0c;能帮助我们更轻松地追踪问题、优化性能。下面就是一份保姆级教程哦&#xff01; 一、…...

erase() 【删数函数】的使用

**2025 - 01 - 25 - 第 48 篇 【函数的使用】 作者(Author) 文章目录 earse() - 删除函数一. vector中的 erase1 移除单个元素2 移除一段元素 二. map 中的erase1 通过键移除元素2 通过迭代器移除元素 earse() - 删除函数 一. vector中的 erase vector 是一个动态数组&#x…...

性能测试丨内存火焰图 Flame Graphs

内存火焰图的基本原理 内存火焰图是通过分析堆栈跟踪数据生成的一种图形化表现&#xff0c;能够展示应用程序在运行时各个函数的内存占用情况。火焰图的宽度代表了函数占用的内存量&#xff0c;而火焰的高度则显示了函数在调用栈中的层级关系。通过这种可视化方式&#xff0c;…...

AIGC的企业级解决方案架构及成本效益分析

AIGC的企业级解决方案架构及成本效益分析 一,企业级解决方案架构 AIGC(人工智能生成内容)的企业级解决方案架构是一个多层次、多维度的复杂系统,旨在帮助企业实现智能化转型和业务创新。以下是总结的企业级AIGC解决方案架构的主要组成部分: 1. 技术架构 企业级AIGC解决方…...

Linux 入门 常用指令 详细版

欢迎来到指令小仓库&#xff01;&#xff01; 宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 什么是指令&#xff1f; 指令和可执行程序都是可以被执行的-->指令就是可执行程序。 指令一定是在系统的每一个位置存在的。 1.ls指令 语法&#xff1a; ls [选项][目…...

【R语言】流程控制

R语言中&#xff0c;常用的流程控制函数有&#xff1a;repeat、while、for、if…else、switch。 1、repeat循环 repeat函数经常与 break 语句或 next 语句一起使用。 repeat ({x <- sample(c(1:7),1)message("x ", x, ",你好吗&#xff1f;")if (x …...

猿人学第一题 js混淆源码乱码

首先检查刷新网络可知&#xff0c;m参数被加密&#xff0c;这是一个ajax请求 那么我们直接去定位该路径 定位成功 观察堆栈之后可以分析出来这应该是一个混淆&#xff0c;我们放到解码平台去还原一下 window["url"] "/api/match/1";request function…...

计算机组成原理(2)王道学习笔记

数据的表示和运算 提问&#xff1a;1.数据如何在计算机中表示&#xff1f; 2.运算器如何实现数据的算术、逻辑运算&#xff1f; 十进制计数法 古印度人发明了阿拉伯数字&#xff1a;0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#…...

【AI日记】25.01.26

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛&#xff1a;Forecasting Sticker Sales 读书 书名&#xff1a;自由宪章 律己 AI&#xff1a;6 小时作息&#xff1a;00:30-8:30短视频&#xff1a;大于 1 小时读书和写作&a…...

三. Redis 基本指令(Redis 快速入门-03)

三. Redis 基本指令(Redis 快速入门-03) 文章目录 三. Redis 基本指令(Redis 快速入门-03)1. Redis 基础操作&#xff1a;2. 对 key(键)操作&#xff1a;3. 对 DB(数据库)操作4. 最后&#xff1a; Reids 指定大全(指令文档)&#xff1a; https://www.redis.net.cn/order/ Redis…...

设计模式的艺术-代理模式

结构性模式的名称、定义、学习难度和使用频率如下表所示&#xff1a; 1.如何理解代理模式 代理模式&#xff08;Proxy Pattern&#xff09;&#xff1a;给某一个对象提供一个代理&#xff0c;并由代理对象控制对原对象的引用。代理模式是一种对象结构型模式。 代理模式类型较多…...

C#新语法

目录 顶级语句&#xff08;C#9.0&#xff09; using 全局using指令&#xff08;C#10.0&#xff09; using资源管理问题 using声明&#xff08;C#8.0&#xff09; using声明陷阱 错误写法 正确写法 文件范围的命名空间声明&#xff08;C#10.0&#xff09; 可空引用类型…...

微信小程序压缩图片

由于wx.compressImage(Object object) iOS 仅支持压缩 JPG 格式图片。所以我们需要做一下特殊的处理&#xff1a; 1.获取文件&#xff0c;判断文件是否大于设定的大小 2.如果大于则使用canvas进行绘制&#xff0c;并生成新的图片路径 3.上传图片 async chooseImage() {let …...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...