肥西县建设局拆迁办网站/网页模板免费html

肥西县建设局拆迁办网站,网页模板免费html,上海网站建设外包,做网站的日文文章目录 1 多元引入2 矢量化2.1 示例2.2 非矢量化实现2.3 矢量化实现2.4 应用 3 特征缩放3.1 举例3.2 必要性3.3 方法3.3.1 最大最小值缩放(Min-Max Scaling)3.3.2 均值归一化(Mean Normalization)3.3.3 Z 分数归一化&#xff08…

文章目录

  • 1 多元引入
  • 2 矢量化
    • 2.1 示例
    • 2.2 非矢量化实现
    • 2.3 矢量化实现
    • 2.4 应用
  • 3 特征缩放
    • 3.1 举例
    • 3.2 必要性
    • 3.3 方法
      • 3.3.1 最大最小值缩放(Min-Max Scaling)
      • 3.3.2 均值归一化(Mean Normalization)
      • 3.3.3 Z 分数归一化(Z-Score Normalization)
    • 3.4 小结
  • 4 梯度下降与学习率
    • 4.1 梯度下降
    • 4.2 学习率
  • 5 特征工程
    • 5.1 示例
    • 5.2 创建特征
  • 6 多项式回归

1 多元引入

​ 在原始的线性回归模型中,我们只有一个特征 x x x(例如房屋的大小),并预测目标变量 y y y(例如房屋的价格)。模型的形式为:
f w , b ( x ) = w x + b f_{w,b}(x)=wx+b fw,b(x)=wx+b
​ 然而,在实际应用中,我们通常有多个特征来预测目标变量。例如,

  • 房屋大小
  • 卧室数量
  • 楼层数量
  • 房屋的使用年限

​ 这些额外的特征可以提供更多的信息,帮助我们更准确地预测价格。

​ 为了处理多个特征,引入以下符号:

  • X 1 X_1 X1, X 2 X_2 X2, X 3 X_3 X3, X 4 X_4 X4 分别表示四个特征(例如房屋大小、卧室数量、楼层数量、房屋使用年限)。
  • X j X_j Xj 表示第 j j j 个特征,其中 j j j 从 1 到 4。
  • n n n 表示特征的总数,在这个例子中 n = 4 n=4 n=4
  • X ( i ) X^{(i)} X(i)表示第 i i i 个训练示例的特征向量,例如 X ( 2 ) = [ 1416 , 3 , 2 , 40 ] X^{(2)} = [1416, 3, 2, 40] X(2)=[1416,3,2,40]
  • X j ( i ) X_j^{(i)} Xj(i) 表示第 i i i 个训练示例的第 j j j 个特征的值,例如 X 3 ( 2 ) = 2 X_3^{(2)}=2 X3(2)=2(表示第二个训练示例的楼层数量)。
image-20250323122207801

​ 此时,线性回归模型的形式变为:
f w , b ( X ) = w 1 X 1 + w 2 X 2 + w 3 X 3 + w 4 X 4 + b f_{w,b}(X)=w_1X_1+w_2X_2+w_3X_3+w_4X_4+b fw,b(X)=w1X1+w2X2+w3X3+w4X4+b
​ 例如,一个可能的房价预测模型可能是:
f w , b ( X ) = 0.1 X 1 + 4 X 2 + 10 X 3 − 2 X 4 + 80 f_{w,b}(X)=0.1X_1+4X_2+10X_3-2X_4+80 fw,b(X)=0.1X1+4X2+10X32X4+80

  • b = 80 b=80 b=80 表示房屋的基本价格为 80,000 美元(假设没有大小、卧室、楼层和年龄)。
  • w 1 = 0.1 w1=0.1 w1=0.1 表示每增加一平方英尺,价格增加 100 美元。
  • w 2 = 4 w2=4 w2=4 表示每增加一个卧室,价格增加 4,000 美元。
  • w 3 = 10 w3=10 w3=10 表示每增加一层,价格增加 10,000 美元。
  • w 4 = − 2 w4=−2 w4=2 表示每增加一年房屋使用年限,价格减少 2,000 美元。
image-20250323122524158

​ 为了简化表示,我们可以将参数 w w w 和特征 X X X 表示为向量:
w ⃗ = [ w 1 , w 2 , ⋯ , w n ] X ⃗ = [ X 1 , X 2 , ⋯ , X n ] \vec{w}=[w_1,w_2,\cdots,w_n]\\ \vec{X}=[X_1,X_2,\cdots,X_n] w =[w1,w2,,wn]X =[X1,X2,,Xn]
​ 因此,模型可表示为:
f w , b ( X ) = w ⃗ ⋅ X ⃗ + b f_{w,b}(X)=\vec{w}\cdot\vec{X}+b fw,b(X)=w X +b
​ 这里的点积是两个向量的对应元素相乘后求和的结果:
w ⃗ ⋅ X ⃗ = w 1 X 1 + w 2 X 2 + ⋯ + w n X n \vec{w}\cdot\vec{X}=w_1X_1+w_2X_2+\cdots+w_nX_n w X =w1X1+w2X2++wnXn
image-20250323122822263

2 矢量化

​ 矢量化是一种将操作应用于整个向量或矩阵的技术,而不是逐个元素进行处理。在机器学习中,矢量化可以极大地提高代码的效率,尤其是在处理大规模数据集时。

​ 矢量化不仅可以缩短代码,还能显著提高算法的运行效率。通过编写矢量化代码,您可以利用现代数值线性代数库(如 NumPy)以及 GPU(图形处理单元)硬件,从而加速计算过程。

2.1 示例

​ 假设我们有一个线性回归模型,参数为 w w w b b b,其中 w w w 是一个包含三个数字的向量,特征向量 x x x 也包含三个数字。这里 n = 3 n=3 n=3

import numpy as npw = np.array([1.0, 2.5, -3.3])  # 参数向量
x = np.array([10, 20, 30])  # 特征向量
b = 4  # 偏置项

​ 在 Python 中,数组的索引从 0 开始,因此:

  • w [ 0 ] w[0] w[0] 对应 w 1 w_1 w1
  • w [ 1 ] w[1] w[1] 对应 w 2 w_2 w2
  • w [ 2 ] w[2] w[2] 对应 w 3 w_3 w3
image-20250323124435323

2.2 非矢量化实现

方法 1:逐个元素计算

f = w[0] * x[0] + w[1] * x[1] + w[2] * x[2] + b

​ 这种方法在 n n n 较小时可行,但当 n n n 很大时(例如 100 或 100,000),代码会变得冗长且效率低下。

方法 2:使用 for 循环

f = 0
for j in range(3):f += w[j] * x[j]
f += b

​ 虽然这种方法比逐个元素计算更简洁,但仍然没有利用矢量化,效率不高。

​ 这种实现方式会顺序执行计算,即先计算索引 0 的值,然后是索引 1,索引 2。这种方式效率较低,尤其是在 n n n 很大时。

2.3 矢量化实现

​ 使用 NumPy 的 dot 函数,可以将模型的计算简化为一行代码:

f = np.dot(w, x) + b
  • np.dot(w, x) 计算向量 w w w x x x 的点积。
  • 点积的定义为: w ⃗ ⋅ x ⃗ = w 1 x 1 + w 2 x 2 + ⋯ + w n x n \vec{w}\cdot\vec{x}=w_1x_1+w_2x_2+\cdots+w_nx_n w x =w1x1+w2x2++wnxn

矢量化的优势

  1. 代码更简洁

    矢量化将复杂的计算简化为一行代码,使代码更易读、更易维护。

  2. 运行效率更高

    矢量化利用现代计算机的并行计算能力,尤其是在使用 GPU 时,可以显著加速计算过程。

底层原理

  • NumPy 的 dot 函数能够在计算机中使用并行硬件(如 CPU 或 GPU),从而比 for 循环或逐个元素计算更高效。
  • n n n 很大时,矢量化实现的效率优势尤为明显。

2.4 应用

​ 假设我们有一个多元线性回归模型,包含 16 个特征和 16 个参数 w 1 w_1 w1 w 16 w_{16} w16。我们需要更新这些参数,公式为:
w j = w j − α ⋅ d j w_j=w_j-\alpha\cdot d_j wj=wjαdj
其中 α α α 是学习率, d j d _ j dj 是导数项。

非矢量化实现

for j in range(16):w[j] = w[j] - 0.1 * d[j]

​ 这种实现方式会逐个更新每个参数,效率较低。

矢量化实现

w = w - 0.1 * d

​ 在矢量化实现中,计算机可以同时更新所有 16 个参数,利用并行硬件高效完成计算。

image-20250323125114820

3 特征缩放

3.1 举例

​ 假设我们有两个特征:

  • x 1 x_ 1 x1:房屋的大小(范围:300 到 2000 平方英尺)
  • $ x_2$:卧室的数量(范围:0 到 5)

​ 我们使用这两个特征来预测房屋的价格。假设一个房屋的面积为 2000 平方英尺,有 5 间卧室,价格为 500,000 美元。

  1. 参数示例 1

    • w 1 = 50 , w 2 = 0.1 , b = 50 w_1=50, w_2=0.1, b =50 w1=50,w2=0.1,b=50

    • 预测价格:50×2000+0.1×5+50=100,000+0.5+50=100,050.5 千美元

    • 这个预测与实际价格 500,000 美元相差甚远。

  2. 参数示例 2

    • w 1 = 0.1 , w 2 = 50 , b = 50 w _1=0.1, w_2=50, b =50 w1=0.1,w2=50,b=50

    • 预测价格:0.1×2000+50×5+50=200+250+50=500 千美元

    • 这个预测与实际价格 500,000 美元一致。

image-20250323125656329

结论

  • 当特征的值范围较大时(如房屋大小),对应的参数 w 1 w_1 w1 应该较小。
  • 当特征的值范围较小时(如卧室数量),对应的参数 w 2 w_2 w2 应该较大。

3.2 必要性

​ 如果特征的值范围差异很大,梯度下降可能会在等高线图中来回弹跳,导致收敛速度变慢。例如:

  • x 1 x_1 x1 的范围较大,导致 w 1 w_1 w1 的微小变化对成本函数 J J J 的影响较大。
  • x 2 x_2 x2 的范围较小,导致 w 2 w_2 w2 的较大变化对成本函数 J J J 的影响较小。

​ 这种情况下,等高线图会呈现高瘦的椭圆形,梯度下降需要更长时间才能找到全局最小值。

image-20250323125945872

​ 特征缩放通过将不同特征的值范围调整到相似的水平,使等高线图更接近圆形,从而优化梯度下降的路径。具体来说:

  • x 1 x_1 x1 x 2 x_2 x2 的值范围都调整到 0 到 1 之间。
  • 这样,梯度下降可以更直接地找到全局最小值。
image-20250323130051463

3.3 方法

3.3.1 最大最小值缩放(Min-Max Scaling)

​ 将特征值缩放到 [ 0 , 1 ] [0,1] [0,1] 区间,公式为:
x s c a l e d = x − x min ⁡ x max ⁡ − x min ⁡ x_{\mathrm{scaled}}=\frac{x-x_{\min}}{x_{\max}-x_{\min}} xscaled=xmaxxminxxmin

  • 特征 x 1 x_1 x1 的范围为 300 到 2000。

    x 1 , s c a l e d = x 1 − 300 2000 − 300 x_{1,\mathrm{scaled}}=\displaystyle\frac{x_1-300}{2000-300} x1,scaled=2000300x1300

  • 特征 x 2 x_2 x2 的范围为 0 到 5:

    x 2 , s c a l e d = x 2 5 x_{2,\mathrm{scaled}}=\displaystyle\frac{x_2}{5} x2,scaled=5x2

3.3.2 均值归一化(Mean Normalization)

​ 将特征值调整到以 0 为中心,公式为:
x s c a l e d = x − μ x max ⁡ − x min ⁡ x_{\mathrm{scaled}}=\frac{x-\mu}{x_{\max}-x_{\min}} xscaled=xmaxxminxμ

  • 特征 x 1 x_1 x1 的均值为 600: x 1 , s c a l e d = x 1 − 600 2000 − 300 x_{1,\mathrm{scaled}}=\displaystyle\frac{x_1-600}{2000-300} x1,scaled=2000300x1600
    缩放后的范围为 -0.18 到 0.82。
  • 特征 x 2 x_2 x2 的均值为 2.3: x 2 , s c a l e d = x 2 − 2.3 5 − 0 x_{2,\mathrm{scaled}}=\displaystyle\frac{x_2-2.3}{5-0} x2,scaled=50x22.3
    缩放后的范围为 -0.46 到 0.54。
image-20250323161919636

3.3.3 Z 分数归一化(Z-Score Normalization)

​ 将特征值调整到均值为 0,标准差为 1,公式为:
x s c a l e d = x − μ σ x_{\mathrm{scaled}}=\frac{x-\mu}{\sigma} xscaled=σxμ

  • 特征 x 1 x_1 x1 的均值为 600,标准差为 450: x 1 , s c a l e d = x 1 − 600 450 x_{1,\mathrm{scaled}}=\displaystyle\frac{x_1-600}{450} x1,scaled=450x1600
    缩放后的范围为 -0.67 到 3.1。
  • 特征 x 2 x_2 x2 的均值为 2.3,标准差为 1.4: x 2 , s c a l e d = x 2 − 2.3 1.4 x_{2,\mathrm{scaled}}=\displaystyle\frac{x_2-2.3}{1.4} x2,scaled=1.4x22.3
    缩放后的范围为 -1.6 到 1.9。
image-20250323162138121

3.4 小结

目标范围

​ 通常将特征值调整到 -1 到 1 之间,但 -3 到 3 或 -0.3 到 0.3 也是可接受的。

特殊情况

  • 如果特征值范围非常大(如 -100 到 100),建议进行缩放。
  • 如果特征值范围非常小(如 -0.001 到 0.001),也可以考虑缩放。
  • 如果特征值范围适中(如 0 到 3 或 -2 到 0.5),不缩放通常也没有问题。
image-20250323162304136

4 梯度下降与学习率

4.1 梯度下降

​ 梯度下降的目标是通过迭代更新参数 w w w b b b,以最小化成本函数 J J J。其更新规则为:
{ w = w − α ∂ J ∂ w b = b − α ∂ J ∂ b \left\{ \begin{aligned} & w=w-\alpha\frac{\partial J}{\partial w} \\ & b=b-\alpha\frac{\partial J}{\partial b} \end{aligned} \right. w=wαwJb=bαbJ
​ 其中, α α α 是学习率。

判断梯度下降是否收敛的方法

  1. 绘制学习曲线

    • 学习曲线:在每次梯度下降迭代后,计算并绘制成本函数 J J J 的值。横轴是迭代次数,纵轴是成本 J J J

    • 正常情况:如果梯度下降正常运行,成本 J J J 应该在每次迭代后逐渐减小。

    • 异常情况:如果 J J J 在某次迭代后增加,可能意味着学习率 α α α 过大,或者代码中存在错误。

    • 收敛判断:当学习曲线趋于平稳(即 J J J 不再显著下降)时,可以认为梯度下降已经收敛。

    示例:

    • 在 100 次迭代后, J J J 的值为某个点。

    • 在 200 次迭代后, J J J 的值进一步减小。

    • 在 300 次迭代后, J J J 的值趋于平稳,表明梯度下降已收敛。

  2. 自动收敛测试

    • 定义:设置一个阈值 ϵ ϵ ϵ(例如 0.001),如果成本 J J J 在一次迭代中减少的幅度小于 ϵ ϵ ϵ,则认为梯度下降已收敛。

    • 优点:自动化判断,无需手动绘制学习曲线。

    • 缺点:选择合适的阈值 ϵ ϵ ϵ 可能比较困难。

image-20250323162418504
  • 不同应用程序中,梯度下降收敛所需的迭代次数可能差异很大。某些模型可能在 30 次迭代后收敛,而其他模型可能需要 1,000 或 100,000 次迭代。

  • 很难提前预测梯度下降需要多少次迭代才能收敛,因此绘制学习曲线是一种有效的方法。

4.2 学习率

​ 选择合适的学习率 α α α 是优化梯度下降算法的关键。如果学习率太小,梯度下降会收敛得很慢;如果学习率太大,梯度下降可能无法收敛,甚至发散。在本视频中,我们将探讨如何为模型选择一个合适的学习率。

  • 学习率太小:梯度下降收敛速度很慢,需要大量迭代才能达到最小值。
  • 学习率太大:梯度下降可能无法收敛,甚至导致成本函数 J J J 在每次迭代后增加。

示例

  • 如果学习率太大,更新步骤可能会“跳过”最小值,导致成本函数 J J J 在每次迭代后波动或增加。
  • 如果学习率太小,更新步骤会非常小,导致收敛速度缓慢。
image-20250323163235805

选择学习率的策略

  • 尝试一系列值

    从较小的学习率开始,逐步增加,观察成本 J J J 的变化。

    • 例如,尝试 α = 0.001 , 0.003 , 0.01 , 0.03 , 0.1 α =0.001,0.003,0.01,0.03,0.1 α=0.001,0.003,0.01,0.03,0.1 等。
    • 对于每个 α α α,运行少量迭代,绘制成本 J J J 随迭代次数的变化。
  • 选择合适的学习率

    • 选择使成本 J J J 快速且持续下降的最大可能学习率。
    • 避免选择过大的学习率,以免导致发散。

实践建议

  • 初始尝试:从 α = 0.001 α =0.001 α=0.001 开始,逐步增加(例如每次增加 3 倍)。
  • 观察曲线:绘制成本 J J J 随迭代次数的变化,选择使 J J J 快速下降的 α α α
  • 避免过大:确保学习率不会导致成本 J J J 增加或波动。
image-20250323163417374

5 特征工程

5.1 示例

​ 假设我们有以下两个特征来预测房屋价格:

  • x 1 x_1 x1:地块的宽度(临街面)
  • x 2 x_2 x2:地块的深度

​ 初始模型如下:
f w , b ( X ) = w 1 x 1 + w 2 x 2 + b f_{w,b}(X)=w_1x_1+w_2x_2+b fw,b(X)=w1x1+w2x2+b
​ 虽然这个模型可以正常工作,但可能不是最有效的。我们可以通过特征工程来改进模型。

5.2 创建特征

​ 地块的面积(宽度 × 深度)可能比单独的宽度和深度更能预测房屋价格。因此,可以定义一个新特征:
x 3 = x 1 × x 2 x_3=x_1\times x_2 x3=x1×x2
​ 改进后的模型如下:
f w , b ( X ) = w 1 x 1 + w 2 x 2 + w 3 x 3 + b f_{w,b}(X)=w_1x_1+w_2x_2+w_3x_3+b fw,b(X)=w1x1+w2x2+w3x3+b
image-20250323163659119

  • 通过转换或组合原始特征,可以创建新的、更有意义的特征。
  • 特征工程不仅可以帮助拟合直线,还可以拟合曲线和非线性函数,从而更好地拟合数据。

6 多项式回归

​ 结合多元线性回归特征工程的思想,提出一种称为多项式回归的新算法,可以将曲线和非线性函数拟合到数据中。

​ 假设我们有一个房屋数据集,其中特征 x x x 是房屋的大小(以平方英尺为单位)。数据分布可能不适合用直线拟合,而是更适合用曲线拟合。

image-20250323164323628

​ 多项式回归通过将原始特征 x x x 提升为不同的幂次(如 x 2 , x 3 x_2,x_3 x2,x3)来创建新的特征。例如:

  • 第一个特征: x x x(房屋大小)
  • 第二个特征: x 2 x_2 x2(房屋大小的平方)
  • 第三个特征: x 3 x_3 x3(房屋大小的立方)
image-20250323164544315

二次函数

  • 模型 f w , b ( X ) = w 1 x 1 + w 2 x 2 2 + b f_{w,b}(X)=w_1x_1+w_2x_2^2+b fw,b(X)=w1x1+w2x22+b
  • 优点:可以拟合数据的二次曲线。
  • 问题:二次函数最终会下降,这与房价随面积增加而上升的预期不符。

三次函数

  • 模型 f w , b ( X ) = w 1 x 1 + w 2 x 2 2 + w 3 x 3 3 + b f_{w,b}(X)=w_1x_1+w_2x_2^2+w_3x_3^3+b fw,b(X)=w1x1+w2x22+w3x33+b
  • 优点:可以拟合更复杂的曲线,更好地适应数据。
  • 特点:随着面积的增加,曲线最终会恢复上升,符合房价的预期。

特征缩放的必要性

​ 如果房屋大小的范围是 1 到 1,000 平方英尺,那么 x 2 x_2 x2 的范围是 1 到 1,000,000, x 3 x_3 x3 的范围是 1 到 1,000,000,000。这些特征的值范围差异很大,因此在应用梯度下降时,特征缩放变得尤为重要。

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

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

相关文章

正点原子内存管理学习和修改

由于项目需要用到内存管理进行动态申请和释放,今天又重新学习了一下正点原子的内存管理实验,温习了一下内存管理的实质。首先先上正点原子内存管理的源代码: malloc.c文件: #include "./MALLOC/malloc.h"#if !(__ARMC…

【Centos7搭建Zabbix4.x监控HCL模拟网络设备:zabbix-server搭建及监控基础05

兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 5.zabbix监控HCL模拟网络设备 在保证zabbix-server与HCL网络相通的情况下进行如下操作。 5.1创建主机群 配置-主机群-创建主机群 图 19 取名,添加。 图 20 5.2 创建监控…

趣味极简品牌海报艺术贴纸设计圆润边缘无衬线粗体装饰字体 Chunko Bold - Sans Serif Font

Chunko Bold 是一种功能强大的显示字体,体现了大胆极简主义的原则 – 当代设计的主流趋势。这种自信的字体将粗犷的几何形状与现代的趣味性相结合,具有圆润的边缘和强烈的存在感,与当今的极简主义设计方法完美契合。无论是用于鲜明的构图还是…

2025-03-21 Unity 序列化 —— 自定义2进制序列化

文章目录 前言1 项目结构1.1 整体1.2 代码 2 实现2.1 Processor2.1.1 BaseType2.1.2 CollectionType2.1.3 CustomType 2.2 ByteFormatter2.3 ByteHelper 3 使用 前言 ​ BinaryFormatter 类可以将 C# 类对象快速转换为字节数组数据。 ​ 在网络开发时,不会使用 Bi…

嵌入式项目:利用心知天气获取天气数据实验方案

【实验目的】 1、利用心知天气服务器获取指定位置天气数据 2、将天气数据解析并可视化显示到OLED屏幕 【实验原理】 【实验步骤】 官网注册

LabVIEW FPGA与Windows平台数据滤波处理对比

LabVIEW在FPGA和Windows平台均可实现数据滤波处理,但两者的底层架构、资源限制、实时性及应用场景差异显著。FPGA侧重硬件级并行处理,适用于高实时性场景;Windows依赖软件算法,适合复杂数据处理与可视化。本文结合具体案例&#x…

深度解析 Android Matrix 变换(二):组合变换 pre、post

前言 在上一篇文章中,我们讲解了 Canvas 中单个变换的原理和效果,即缩放、旋转和平移。但是单个旋转仅仅是基础,Canvas 变换最重要的是能够随意组合各种变换以实现想要的效果。在这种情况下,就需要了解如何组合变换,以…

FAQ - VMware vSphere Web 控制台中鼠标控制不了怎么办?

问题描述 在VMware vSphere vCenter Server 的 Web 控制台中新建了一台 Windows Server 2008 R2 虚拟机,但是鼠标进入控制台后,可以看见鼠标光标,但是移动却没有反应。 根因分析 暂无。 解决方案 选中虚拟机>操作>编辑设置>添加新…

关于极端场景下,数据库更新与 MQ 消息一致性保障方案的详细总结

目录 一、核心问题场景 二、RocketMQ 事务消息方案 1. 核心机制 2. 执行流程 3. 关键优势 4. 局限性 三、消息表方案 1. 核心机制 2. 执行流程 3. 关键优势 4. 局限性 四、方案对比与选择 五、实施建议 六、总结 一、核心问题场景 当数据库更新后,若 MQ 消息未…

【redis】主从复制:拓扑结构、原理和psync命令解析

文章目录 拓扑一主一从相关问题 一主多从相关问题 树形主从结构相关问题 主从复制原理复制流程 psync 命令命令解析replicatonidoffset总结 运行流程 拓扑 若干个节点之间按照什么样的方式来进行组织连接 一主一从 都可以读,从节点可以帮主节点分担一部分的压力只…

[RoarCTF 2019]Easy Calc-3.23BUUCTF练习day5(2)

[RoarCTF 2019]Easy Calc-3.23BUUCTF练习day5(2) 解题过程 查看源码 发现calc.php页面,访问一下 分析代码 首先获取$_GET[num]的值并赋给变量$str。然后定义了一个黑名单数组$blacklist,包含了一系列被禁止的字符或转义字符,如空格、制表…

阻塞队列:原理、应用及实现

阻塞队列:原理、应用及实现 什么是阻塞队列以生产消费者模型形象地理解阻塞队列阻塞队列实现生产消费者模型模拟实现阻塞队列实现生产消费者模型 什么是阻塞队列 阻塞队列是一种特殊且实用的队列数据结构,它同样遵循 “先进先出” 的原则。与普通队列不…

【开源宝藏】30天学会CSS - DAY5 第五课 脉冲动画

以下是一个完整的渐进式教程,拆解如何用 HTML CSS 构建“Pulsar”水波脉冲动画。通过阅读,你将理解每个核心属性与关键帧如何配合,让一个小圆不断散发动态波纹,并且文字始终停留在圆心。 第 0 步:项目概览 文件结构示…

2060 裁纸刀

2060 裁纸刀 ⭐️难度:简单 🌟考点:2022、规律、思维 📖 📚 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int N 100010…

python学习笔记--实现简单的爬虫(一)

任务:爬取豆瓣最受欢迎的250个电影的资料 链接:豆瓣电影 Top 250 用浏览器打开后,使用F12或鼠标右键--检查,查看网页的源代码,分析网页结构,如下图所示: 分析后得知: 1.电影名位于…

Cursor+Claude-3.5生成Android app

一、Android Studio下载 https://developer.android.com/studio?hlzh-tw#get-android-studio 等待安装完成 二、新建工程 点击new project 选择Empty Activity 起一个工程名 当弹出这个框时 可以在settings里面选择No proxy 新建好后如下 点击右边模拟器&#xff0c…

Java EE(15)——网络原理——TCP协议解析一

一.确认应答/(确认)序列号 接收方接收到数据后,向发送方返回一个确认信号(ack),告诉发送方数据被成功接收。ACK报文段只是作为确认使用的,一般来说不携带应用层数据(载荷),也就是说只有报头部分。但有可能…

C#单例模式

单例模式 (Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化对个对象,一个最好的办法就是,让类自身负责保护它的唯一实例。这个类可以保证没…

NO.55十六届蓝桥杯备战|排序|插入|选择|冒泡|堆|快速|归并(C++)

插⼊排序 插⼊排序(Insertion Sort)类似于玩扑克牌插牌过程&#xff0c;每次将⼀个待排序的元素按照其关键字⼤⼩插⼊到前⾯已排好序的序列中&#xff0c;按照该种⽅式将所有元素全部插⼊完成即可 #include <iostream> using namespace std; const int N 1e5 10; …

【Oracle资源损坏类故障】:详细了解坏块

目录 1、物理坏块与逻辑坏块 1.1、物理坏块 1.2、逻辑坏块 2、两个坏块相关的参数 2.1、db_block_checksum 2.2、db_block_checking 3、检测坏块 3.1、告警日志 3.2、RMAN 3.3、ANALYZE 3.4、数据字典 3.5、DBVERIFY 4、修复坏块 4.1、RMAN修复 4.2、DBMS_REPA…