机器学习基础06
目录
1.梯度下降
1.1梯度下降概念
1.2梯度下降公式
1.3学习率
1.4实现梯度下降
1.5API
1.5.1随机梯度下降SGD
1.5.2小批量梯度下降MBGD
1.6梯度下降优化
2.欠拟合过拟合
2.1欠拟合
2.2过拟合
2.3正则化
2.3.1L1正则项(曼哈顿距离)
2.3.2L2正则项(欧氏距离 )
3.岭回归(Ridge)
3.1损失函数公式
3.2API
4.拉索回归(Lasso)
4.1损失函数公式
4.2API
1.梯度下降
1.1梯度下降概念
正规方程求解的缺点
①利用正规方程求解的W是最优解的原因是MSE这个损失函数是凸函数。但机器学习的损失函数并非都是凸函数,设置导数为0会得到很多个极值,不能确定唯一解。
②当数据量和特征较多时,矩阵计算量太大.
在机器学习中,梯度表示损失函数对于模型参数的偏导数。具体来说,对于每个可训练参数,梯度告诉我们在当前参数值下,沿着每个参数方向变化时,损失函数的变化率。通过计算损失函数对参数的梯度,梯度下降算法能够根据梯度的信息来调整参数,朝着减少损失的方向更新模型。
1.2梯度下降公式
有损失函数:
梯度下降公式:
得:
1.3学习率
设置大的学习率α;每次调整的幅度就大,设置小的学习率α;每次调整的幅度就小
(1)常见的设定数值:0.1、0.01、0.001、0.0001
(2)随着迭代次数增多学习率逐渐变小,深度学习的优化算法可以调整学习率
1.4实现梯度下降
import matplotlib.pyplot as plt
import numpy as np# 随机初始化
w= np.random.randint(-10,10,1)
# 学习率
h =0.01
# 收敛条件
diff=0.0001
# 最大更新的次数
time =1000lt_w =[]
lt_w_new=[]
for i in range(time):# 保存原w,用于计算差值w_new= wlt_w.append(w_new)lt_w_new.append(10*w**2-15.9*w+6.5)# 更新ww= w - h*(20*w_new-15.9)#20*w-15.9是切线difference=w_new-wprint(f'第{i+1}次迭代:','\t','w:',w,'\t','w_new-w:', difference)if abs(difference) <=diff:break# 图像示意,散点图为梯度下降
plt.scatter(lt_w,lt_w_new,c='red')w = np.linspace(-10,10,100)
loss = 10*w**2-15.9*w+6.5
# 曲线图为损失函数
plt.plot(w,loss)plt.show()
import numpy as np
import matplotlib.pyplot as plt# 随机初始化
w1 = 10
w2 = 10# 学习率
h = 0.001
# 收敛条件
diff = 0.0001
# 最大更新的次数
time = 1000def loss(w1, w2):return 4*w1**2 + 9*w2**2 + 2*w1*w2 + 3.5*w1 - 4*w2 + 6def dloss_w1(w1, w2):return 8*w1 + 2*w2 + 3.5def dloss_w2(w1, w2):return 2*w1 + 18*w2 - 4# 记录每次迭代的w1和w2
w1_history = [w1]
w2_history = [w2]for i in range(time):# 保存原w,用于计算差值w1_new = w1w2_new = w2# 更新ww1 = w1 - h * dloss_w1(w1_new, w2_new)w2 = w2 - h * dloss_w2(w1_new, w2_new)difference1 = w1_new - w1difference2 = w2_new - w2print(f'第{i+1}次迭代:\tw1: {w1:.6f}, w2: {w2:.6f}, w1_new-w1: {difference1:.6f}, w2_new-w2: {difference2:.6f}')# 记录每次迭代的w1和w2w1_history.append(w1)w2_history.append(w2)if abs(difference1) <= diff and abs(difference2) <= diff:breakprint("最终结果:w1 =", w1, "w2 =", w2)# 绘制三维图
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111, projection='3d')# 创建网格数据
w1_vals = np.linspace(-15, 15, 100)
w2_vals = np.linspace(-15, 15, 100)
w1_grid, w2_grid = np.meshgrid(w1_vals, w2_vals)
loss_grid = loss(w1_grid, w2_grid)# 绘制损失函数的表面
ax.plot_surface(w1_grid, w2_grid, loss_grid, cmap='viridis', alpha=0.7)# 绘制梯度下降路径
ax.plot(w1_history, w2_history, [loss(w1, w2) for w1, w2 in zip(w1_history, w2_history)], color='r', marker='.')# 设置标签
ax.set_xlabel('w1')
ax.set_ylabel('w2')
ax.set_zlabel('Loss')# 显示图形
plt.show()
1.5API
批量梯度下降BGD(Batch Gradient Descent)
小批量梯度下降MBGD(Mini-BatchGradient Descent)
随机梯度下降SGD(Stochastic Gradient Descent)。
-
Batch Gradient Descent (BGD):每一次迭代都会使用全部的训练样本计算梯度来更新权重。这意味着每一步梯度更新都是基于整个数据集的平均梯度。这种方法的优点是每次更新的方向是最准确的,但缺点是计算量大且速度慢,尤其是在大数据集上。
-
Mini-Batch Gradient Descent (MBGD): 这种方法介于批量梯度下降和随机梯度下降之间。它不是用全部样本也不是只用一个样本,而是每次迭代从数据集中随机抽取一小部分样本(例如,从500个样本中选取32个),然后基于这一小批样本的平均梯度来更新权重。这种方法在准确性和计算效率之间取得了一个平衡。
-
Stochastic Gradient Descent (SGD): 在随机梯度下降中,每次迭代仅使用随机单个样本(或有时称为“例子”)来计算梯度并更新权重。这种方法能够更快地收敛,但由于每次更新都基于单个样本,所以会导致权重更新路径不稳定。
1.5.1随机梯度下降SGD
sklearn.linear_model.SGDRegressor()
参数:
loss: 损失函数,默认为 ’squared_error’
fit_intercept: 是否计算偏置, default=True
eta0: float, default=0.01学习率初始值
learning_rate: str, default=’invscaling’
‘constant’: eta = eta0 学习率为eta0设置的值,保持不变
‘optimal’: eta = 1.0 / (alpha * (t + t0))
‘invscaling’: eta = eta0 / pow(t, power_t)
‘adaptive’: eta = eta0, 学习率由eta0开始,逐步变小
max_iter: int, default=1000 经过训练数据的最大次数(又名epoch)
shuffle=True 每批次是否洗牌
penalty: {‘l2’, ‘l1’, ‘elasticnet’, None}, default=’l2’,要使用的正则化项
属性:
coef_ 回归后的权重系数
intercept_ 偏置
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import SGDRegressor
from sklearn.metrics import mean_squared_errordataset = fetch_california_housing(data_home='./src')x_train,x_test,y_train,y_test=train_test_split(dataset.data,dataset.target,train_size =0.7,shuffle =True,random_state=200)transfer = StandardScaler()
x_train=transfer.fit_transform(x_train)
x_test=transfer.transform(x_test)# 线性回归预估器
estimator = SGDRegressor(loss='squared_error',penalty='l1',max_iter=1000,eta0=0.01,learning_rate ='constant')
estimator.fit(x_train,y_train)# 模型数据
print('coef:',estimator.coef_)
print('intercept:',estimator.intercept_)y_predict = estimator.predict(x_test)
print("预测的数据集:\n", y_predict)
print('决定系数 (R^2):',estimator.score(x_test,y_test))
error = mean_squared_error(y_test,y_predict)
print('均方误差:',error)
1.5.2小批量梯度下降MBGD
sklearn.linear_model.SGDRegressor()
调用partial_fit函数训练直接更新权重,不需要调fit从头开始训练。
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import SGDRegressor
from sklearn.metrics import mean_squared_errordataset = fetch_california_housing(data_home='./src')x_train,x_test,y_train,y_test=train_test_split(dataset.data,dataset.target,train_size =0.7,shuffle =True,random_state=200)transfer = StandardScaler()
x_train=transfer.fit_transform(x_train)
x_test=transfer.transform(x_test)# 线性回归预估器
estimator = SGDRegressor(loss='squared_error',penalty='l1',max_iter=1000,eta0=0.01,learning_rate ='constant')# 小批量梯度下降
batch_size =50 # 批量大小
n_batches = len(x_train)//batch_size
for epoch in range(estimator.max_iter):# 随机打乱样本顺序indices = np.random.permutation(len(x_train))for i in range(n_batches):start_index = i*batch_sizeend_index = (i+1) * batch_sizebatch_indices = indices[start_index:end_index]x_batch = x_train[batch_indices]y_batch = y_train[batch_indices]# 更换模型权重estimator.partial_fit(x_batch,y_batch) # 模型数据
print('coef:',estimator.coef_)
print('intercept:',estimator.intercept_)y_predict = estimator.predict(x_test)
print("预测的数据集:\n", y_predict)
print('决定系数 (R^2):',estimator.score(x_test,y_test))
error = mean_squared_error(y_test,y_predict)
print('均方误差:',error)
1.6梯度下降优化
(1)标准化
(2)正则化
2.欠拟合过拟合
分类问题的三种拟合状态:
回归问题的三种拟合状态:
2.1欠拟合
欠拟合是指模型在训练数据上表现不佳,同时在其他数据上也表现不佳。这通常发生在模型过于简单,无法捕捉数据中的复杂模式时。欠拟合模型的表现特征如下:
-
训练误差较高。
-
测试误差同样较高。
-
模型可能过于简化,不能充分学习训练数据中的模式。
2.2过拟合
过拟合是指模型在训练数据上表现得非常好,但在其他数据上表现较差。这通常发生在模型过于复杂,以至于它不仅学习了数据中的真实模式,还学习了噪声和异常值。过拟合模型的表现特征如下:
-
训练误差非常低。
-
测试误差较高。
-
模型可能过于复杂,以至于它对训练数据进行了过度拟合。
2.3正则化
正则化的意义:防止过拟合,增加模型的鲁棒性。
正则化:将原来的损失函数加上一个惩罚项使得计算出来的模型w相对小一些。
常用的惩罚项有L1正则项或者L2正则项:
2.3.1L1正则项(曼哈顿距离)
2.3.2L2正则项(欧氏距离 )
3.岭回归(Ridge)
3.1损失函数公式
岭回归是损失函数通过添加所有权重的平方和的乘积(L2)来惩罚模型的复杂度。
均方差除以2是因为方便求导,wj指所有的权重系数, λ指惩罚型系数,又叫正则项力度。
特点:
-
岭回归不会将权重压缩到零,这意味着所有特征都会保留在模型中,但它们的权重会被缩小。
-
适用于特征间存在多重共线性的情况。
-
岭回归产生的模型通常更为平滑,因为它对所有特征都有影响。
3.2API
sklearn.linear_model.Ridge()
参数:
- alpha, default=1.0,正则项力度
- fit_intercept, 是否计算偏置, default=True
- solver, {‘auto’, ‘svd’, ‘cholesky’, ‘lsqr’, ‘sparse_cg’, ‘sag’, ‘saga’, ‘lbfgs’}, default=’auto’
当值为auto,并且数据量、特征都比较大时,内部会随机梯度下降法。
- normalize:default=True
数据进行标准化,如果特征工程中已经做过标准化,这里就该设置为False
- max_iterint
梯度解算器的最大迭代次数,默认为15000
属性:
coef_ 回归后的权重系数
intercept_ 偏置
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error# dataset = fetch_california_housing(data_home='./src')
dataset = load_breast_cancer()x_train,x_test,y_train,y_test=train_test_split(dataset.data,dataset.target,train_size =0.2,shuffle =True,random_state=200)transfer = StandardScaler()
x_train=transfer.fit_transform(x_train)
x_test=transfer.transform(x_test)# 线性回归预估器estimator = Ridge(alpha =0.1,max_iter=1000)
estimator.fit(x_train,y_train)# 模型数据
print('coef:',estimator.coef_)
print('intercept:',estimator.intercept_)y_predict = estimator.predict(x_test)
print("预测的数据集:\n", y_predict)
print('得分:',estimator.score(x_test,y_test))
error = mean_squared_error(y_test,y_predict)
print('均方误差:',error)
4.拉索回归(Lasso)
4.1损失函数公式
Lasso回归是一种线性回归模型,它通过添加所有权重的绝对值之和(L1)来惩罚模型的复杂度。
Lasso回归的目标是最小化以下损失函数:
其中:
-
n 是样本数量,
-
p 是特征的数量,
-
y_i 是第 i 个样本的目标值,
-
x_i 是第 i 个样本的特征向量,
-
w是模型的参数向量,
-
\lambda 是正则化参数,控制正则化项的强度。
特点:
-
拉索回归可以将一些权重压缩到零,从而实现特征选择。
-
适用于特征数量远大于样本数量的情况,或者当特征间存在相关性时,可以从中选择最相关的特征。
-
拉索回归产生的模型可能更简单,因为它会去除一些不重要的特征。
4.2API
sklearn.linear_model.Lasso()
参数:
- alpha (float, default=1.0):
控制正则化强度;必须是非负浮点数。较大的 alpha 增加了正则化强度。
- fit_intercept (bool, default=True):
是否计算此模型的截距。如果设置为 False,则不会使用截距(即数据应该已经被居中)。
- precompute (bool or arraylike, default=False):
如果为 True,则使用预计算的 Gram 矩阵来加速计算。如果为数组,则使用提供的 Gram 矩阵。
- copy_X (bool, default=True):
如果为 True,则复制数据 X
- max_iter (int, default=1000):
最大迭代次数
- tol (float, default=1e4):
精度阈值
- warm_start (bool, default=False):
当设置为 True 时,再次调用 fit 方法会重新使用之前调用 fit 方法的结果作为初始估计值,而不是清零它们。
- positive (bool, default=False):
当设置为 True 时,强制系数为非负。
- random_state (int, RandomState instance, default=None):
随机数生成器的状态。用于随机初始化坐标下降算法中的随机选择。
- selection ({'cyclic', 'random'}, default='cyclic'):
如果设置为 'random',则随机选择坐标进行更新。如果设置为 'cyclic',则按照循环顺序选择坐标。
from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import Lasso
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np# 加载波士顿房价数据集
data = fetch_california_housing(data_home="./src")
X, y = data.data, data.target# 划分训练集和测试集
X_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建Lasso回归模型
lasso = Lasso(alpha=0.1) # alpha是正则化参数# 训练模型
lasso.fit(X_train, y_train)# 得出模型
print("权重系数为:\n", lasso.coef_)
print("偏置为:\n", lasso.intercept_)#模型评估
y_predict = lasso.predict(x_test)
print("预测的数据集:\n", y_predict)
error = mean_squared_error(y_test, y_predict)
print("均方误差为:", error)
print(lasso.score(x_test,y_test))
相关文章:
机器学习基础06
目录 1.梯度下降 1.1梯度下降概念 1.2梯度下降公式 1.3学习率 1.4实现梯度下降 1.5API 1.5.1随机梯度下降SGD 1.5.2小批量梯度下降MBGD 1.6梯度下降优化 2.欠拟合过拟合 2.1欠拟合 2.2过拟合 2.3正则化 2.3.1L1正则项(曼哈顿距离) 2.3.2…...
RecyclerView详解——(四)缓存复用机制
稍微看了下源码和部分文章,在此做个小小的总结 RecyclerView,意思为可回收的view,那么相对于listview,他的缓存复用肯定是一大优化。 具体而言,当一个列表项被移出屏幕后,RecyclerView并不会销毁其视图&a…...
向量数据库FAISS之五:原理(LSH、PQ、HNSW、IVF)
1.Locality Sensitive Hashing (LSH) 使用 Shingling MinHashing 进行查找 左侧是字典,右侧是 LSH。目的是把足够相似的索引放在同一个桶内。 LSH 有很多的版本,很灵活,这里先介绍第一个版本,也是原始版本 Shingling one-hot …...
速盾:CDN缓存的工作原理是什么?
CDN(内容分发网络)是一种将内容分发到全球不同地理位置的网络架构,以提供更快速、可靠的内容传输。其核心原理是利用缓存技术,将数据内容分布到离用户最近的边缘节点上。当用户请求内容时,CDN将根据用户的IP地址&#…...
使用 Elastic AI Assistant for Search 和 Azure OpenAI 实现从 0 到 60 的转变
作者:来自 Elastic Greg Crist Elasticsearch 推出了一项新功能:Elastic AI Assistant for Search。你可以将其视为 Elasticsearch 和 Kibana 开发人员的内置指南,旨在回答问题、引导你了解功能并让你的生活更轻松。在 Microsoft AI Services…...
SQL基础语法介绍-基于MySQL
文章目录 一、SQL分类二、SQL语法1.数据库字段类型1.1.数值类型1.2 字符类型1.3 日期类型 2.字段约束2.1约束介绍2.2 非空约束(not null)2.3 唯一约束(unique)2.4 主键约束(primary key)2.5 自增长主键2.6 …...
android 性能分析工具(03)Android Studio Profiler及常见性能图表解读
说明:主要解读Android Studio Profiler 和 常见性能图表。 Android Studio的Profiler工具是一套功能强大的性能分析工具集,它可以帮助开发者实时监控和分析应用的性能,包括CPU使用率、内存使用、网络活动和能耗等多个方面。以下是对Android …...
【STM32项目】基于STM32设计的震动马达超声波电机高频震动——高级定时器PWM互补输出带死区控制
高级定时器PWM互补输出带死区控制 前言:实现高级定时器互补输出带死区控制,实现震动/超声波电机/马达,高频震动。使用 STM32F103 芯片输出两路互补 PWM,并带有死区和刹车控制功能。 定时器 1 通道 1 及其互补通道输出 PWM,且带死区控。当定时器 1 的刹车输入引脚被拉…...
深入探索Golang的GMP调度机制:源码解析与实现原理
在Golang(又称Go语言)的并发编程模型中,GMP调度模型扮演着举足轻重的角色。GMP分别代表Goroutine(协程)、M(Machine,即内核线程)和P(Processor,即逻辑处理器&…...
Django如何配置多个环境的MySQL数据库
在 Django 项目中配置多个环境的 MySQL 数据库是一个常见的需求,特别是在开发、测试和生产环境中使用不同的数据库配置。你可以通过在 settings.py 文件中使用条件语句或环境变量来实现这一点。 1. 使用环境变量 使用环境变量是一种灵活且安全的方式来配置多个环境…...
数据结构(链栈——c语言实现)
链式栈(Linked Stack)是一种基于链表数据结构实现的栈。它利用链表节点的指针来存储元素,并通过指针的链接关系来维护栈的后进先出(LIFO, Last In First Out)特性。 链式栈的优点 动态大小: 链式栈…...
FPGA实现串口升级及MultiBoot(九)BPI FLASH相关实例演示
本文目录索引 区别一:启动流程的区别区别二:高位地址处理区别三:地址映射例程说明总结例程地址之前一直都是以SPI FLASH为例进行相关知识讲解,今天我们介绍另一款常用的配置FLASH-BPI FLASH。 今天的讲解以简洁为主,主打个能用一句话不说两句话。以和SPI区别为主,实例演…...
Android 网络通信(三)OkHttp实现登入
学习笔记 目录 一. 先写XML布局 二、创建 LoginResponse 类 :封装响应数据 目的和作用: 三、创建 MyOkHttp 类 :发送异步请求 代码分析 可能改进的地方 总结 四、LoginActivity 类中实现登录功能 详细分析与注释: 总结: 改进建议: 零、响应数据样例 通过 P…...
java基础概念37:正则表达式2-爬虫
一、定义 【回顾】正则表达式的作用 作用一:校验字符串是否满足规则作用二:在一段文本中查找满足要求的内容——爬虫 二、本地爬虫VS网络爬虫 2-1、本地爬虫 示例: 代码优化: public static void main(String[] args) {// 大…...
【大数据学习 | Spark-Core】RDD的概念与Spark任务的执行流程
1. RDD的设计背景 在实际应用中,存在许多迭代式计算,这些应用场景的共同之处是,不同计算阶段之间会重用中间结果,即一个阶段的输出结果会作为下一个阶段的输入。但是,目前的MapReduce框架都是把中间结果写入到HDFS中&…...
day06(单片机高级)PCB设计
目录 PCB设计 PCB设计流程 元器件符号设计 原理图设计 元器件封装设计 元器件库使用 PCB设计 目的:学习从画原理图到PCB设计的整个流程 PCB设计流程 元器件符号设计 元器件符号:这是电子元器件的图形表示,用于在原理图中表示特定的元器件。例…...
[Redis#2] 定义 | 使用场景 | 安装教程 | 快!
目录 1. 定义 In-memory data structures 在内存中存储数据 2. 优点!快 Programmability 可编程性 Extensibility 扩展性 Persistence 持久化 Clustering 分布式集群 High availability 高可用性 ⭕快速访问的实现 3. 使用场景 1.Real-time data store …...
docker pull命令拉取镜像失败的解决方案
docker pull命令拉取镜像失败的解决方案 简介: docker pull命令拉取镜像失败的解决方案 docker pull命令拉取镜像失败的解决方案 一、执行docker pull命令,拉取镜像失败 报错信息:error pulling image configuration: Get https://produc…...
漫步北京小程序构建智慧出行,打造旅游新业态模式
近年来,北京市气象服务中心持续加强推进旅游气象服务,将旅游气象监测预警基础设施纳入景区配套工程,提升气象和旅游融合发展水平,服务建设高品质智慧旅游强市。 天气条件往往影响着旅游景观的体验,北京万云科技有限公…...
DNS域名解析服务器
一、dns简介及域名 DNS(Domain Name System) : 作为将域名和IP地址相互映射的一个分布式数据库,能便捷互联网的访问。使用53端口,通常以UDP较快的数据传输协议来查询,如果没有查询到,将再次启动TCP重新查询,两者同时启…...
MySQL数据存储详解
1. MySQL 的数据存放位置 当我们在 MySQL 数据库中创建一个表时,MySQL 会在数据库对应的文件夹下生成三个文件: 1.1 db.opt 文件 是什么: 每个数据库都有一个 db.opt 文件,这个文件保存了数据库的配置信息。作用: 记…...
Maven maven项目构建的生命周期 Maven安装配置 IDEA 配置 Maven
一,Maven的概述 Maven的作用:专门用于管理和构建Java项目的工具,它的主要功能有: 提供了一套标准化的项目结构提供了一套标准化的构建流程(编译,测试,打包,发布……)提…...
和为 K 的子数组(java)
题目描述: 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入…...
关于Redux的学习(包括Redux-toolkit中间件)
目录 什么是 Redux ? 我为什么要用 Redux ? 我什么时候应该用 Redux ? Redux 库和工具 React-Redux Redux Toolkit Redux DevTools 拓展 一个redux小示例 代码示例(很有用): Redux 术语 Actions Reducers Store Dis…...
MIT 6.S081 | 操作系统 | Lab1: Xv6 and Unix utilities
Lab1: Xv6 and Unix utilities 文章目录 Lab1: Xv6 and Unix utilities实验任务1.启动XV6(easy)2.Sleep(easy)-练手的,就是熟悉一下怎么在xv6项目中加.c文件,生成可执行程序并进行测试的1.解析rm.c2.argc 如何被赋值3.Sleep代码4.makefile编辑5.通过make…...
04 - 尚硅谷 - MQTT 客户端编程
1.在Java中使用MQTT 1.1 Eclipse Paho Java Client 具体步骤: 1、创建一个Spring Boot项目,添加如下依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>…...
C语言基础学习:抽象数据类型(ADT)
基础概念 抽象数据类型(ADT)是一种数据类型,它定义了一组数据以及可以在这组数据上执行的操作,但隐藏了数据的具体存储方式和实现细节。在C语言中,抽象数据类型(ADT)是一种非常重要的概念&…...
蓝桥杯每日真题 - 第16天
题目:(卡牌) 题目描述(13届 C&C B组C题) 解题思路: 题目分析: 有 n 种卡牌,每种卡牌的现有数量为 a[i],所需的最大数量为 b[i],还有 m 张空白卡牌。 每…...
【Docker】快速部署 Pikachu:一个包含常见 Web 安全漏洞的渗透测试练习靶场
系统介绍 Pikachu是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么Pikachu可能正合你意。 Pikachu上的漏洞类型列表如下: Burt Force(暴力破解漏洞) XSS…...
【解决】Unity TMPro字体中文显示错误/不全问题
问题描述:字体变成方块 原因:字体资源所承载的长度有限 1.找一个中文字体放入Assets中 2.选中字体创建为TMPro 字体资源 3.选中创建好的字体资源(蓝色的大F) 在右边的属性中找到Atlas Width h和 Atlas Heigth,修改的大一点&…...
速通前端篇 —— CSS
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏:速通前端 目录 CSS的介绍 基本语法规范 CSS选择器 标签选择器 class选择器 id选择器 复合选择器 通配符选择器 CSS常见样式 颜…...
【案例】泛微.齐业成助力北京中远大昌汽车实现数电票全流程管理
中远大昌统一发票共享平台上线三个多月以来,实现: 5000份 60000元 发票开具 成本节约 客户简介及需求分析 北京中远大昌汽车服务有限公司(以下简称“中远大昌”)成立于2002年,是中远海运集团所属香远(北…...
Windows系统运行库软件游戏修复工具
本页面下载的资源包包括PC电脑常用的运行库和电脑必备组件,如您的电脑出现应用打不开,缺少dll链接库、闪退等现象可以尝试用下面软件修复。 本资源永久有效。 软件安装基本常识科普: 为什么要安装运行库?运行库默认安装到C盘&…...
解决.DS_Store 在项目一致无法排除,.gitignore里也不生效
.DS_Store 是 macOS 操作系统创建的隐藏文件,通常用于存储目录的属性,比如视图设置、图标位置等。它通常不应包含在代码仓库中,因此需要排除它。你提到即使将其添加到 .gitignore 文件中,仍然无法排除它,可能是由于以下…...
C#里怎么样判断文件是否存在?
C#里怎么样判断文件是否存在? 判断文件是否存在,也是一个常用的功能。 因为文件如果不存,直接去操作,就会抛出异常。 比如要拷贝一个文件到另外一个目录里,如果文件已经存在那个文件夹里,也会抛出异常。 所以提前判断,就可以减少很多不必要的异常抛出,同时程序写得更加…...
汽车免拆诊断案例 | 2012款路虎揽胜运动版柴油车加速无力
故障现象 一辆2012款路虎揽胜运动版车,搭载3.0T柴油发动机(型号为306DT),累计行驶里程约为10.2万km。车主进厂反映,车辆行驶中加速无力,且发动机故障灯异常点亮。 故障诊断 接车后试车,发动…...
JAVA基础
JAVA基础 JAVA的变量 变量是什么 内存中存储的,数值可以改变的数据 定义变量 语法 数据类型 变量名 值; 变量的命名: 必须由字母、数字、下划线和$组成;开头不能是数字规范的命名是小驼峰命令:studentName要做…...
ssh无法连接Ubuntu
试了多次ssh都无法连接,明明可以上网 网卡、防火墙、端口都没有问题,就是连接不上 结果是这个版本Ubuntu镜像默认没有安装ssh服务 安装SSH服务:apt-get install openssh-server 开启SSH服务:/etc/init.d/ssh start 就可以连接…...
spi 回环
///tx 极性0 (sclk信号线空闲时为低电平) /// 相位0 (在sclk信号线第一个跳变沿进行采样) timescale 1ns / 1ps//两个从机 8d01 8d02 module top(input clk ,input rst_n,input [7:0] addr ,input …...
MongoDB 更新集合名
MongoDB 更新集合名 MongoDB 是一个流行的 NoSQL 数据库,它使用集合(collections)来存储文档(documents)。集合在 MongoDB 中相当于关系型数据库中的表。在 MongoDB 中,集合名是可以在某些情况下进行更新的…...
常见面试题----深入源码理解MQ长轮询优化机制
引言 在分布式系统中,消息队列(Message Queue, MQ)扮演着至关重要的角色。MQ不仅实现了应用间的解耦,还提供了异步消息处理、流量削峰等功能。而在MQ的众多特性中,长轮询(Long Polling)机制因其…...
Firewall防火墙配置
文章目录 一、firewalld简介二、firewalld特性三、firewalld相关文件及目录四、firewalld配置五、firewalld配置实例一、firewalld简介 firewalld 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。它支持 ipv4, ipv6 防火墙设置以及以太网…...
我做了一份斯坦福CS229吴恩达机器学习笔记
吴恩达教授的机器学习课程,可以说是AI领域的一块金字招牌。这门在斯坦福大学开设的课程,历经十余年,依旧是机器学习入门的经典之作。 记得当年,这门课火爆到吴恩达教授不得不将其搬到线上,结果不仅在斯坦福,…...
TESSY单元测试工具详解与操作演示:ISO 26262合规性、自定义测试用例、详细测试报告等
在嵌入式系统开发中,安全性和可靠性至关重要,尤其是在汽车、医疗和工业控制等高风险行业。为了确保代码在实际运行中满足安全标准,开发者需要一套完善全面的测试工具,来严格检测代码的安全性和可靠性。 TESSY作为一款已获得IEC 61…...
C++语言之函数对象与算法
在 C 中,函数对象(Function Object)也叫仿函数(Functor),是一个类,这个类重载了()运算符。从概念上讲,它的行为类似于一个函数,可以像调用函数一样来调用这个类的对象。 …...
Fakelocation Server服务器/专业版 Windows11
前言:需要Windows11系统 Fakelocation开源文件系统需求 Windows11 | Fakelocation | 任务一 打开 PowerShell(以管理员身份)命令安装 Chocolatey Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProto…...
java使用itext生成pdf
一、利用Adobe Acrobat DC软件创建pdf模板 备好Adobe Acrobat DC软件 1.excel/jpg/png文件转pdf文件 右击打开我们要转换的文件 2.然后点击 添加 域 3.可以看到域的名字 4.调整字体大小/对齐方式等 5.保存 二,代码部分 首先 上依赖 <dependency><group…...
【PPTist】添加PPT模版
前言:这篇文章来探索一下如何应用其他的PPT模版,给一个下拉菜单,列出几个项目中内置的模版 PPT模版数据 (一)增加菜单项 首先在下面这个菜单中增加一个“切换模版”的菜单项,点击之后在弹出框中显示所有的…...
AmazonS3集成minio实现https访问
最近系统全面升级到https,之前AmazonS3大文件分片上传直接使用http://ip:9000访问minio的方式已然行不通,https服务器访问http资源会报Mixed Content混合内容错误。 一般有两种解决方案,一是升级minio服务,配置ssl证书,…...
适配屏幕px、rem单位换算, 将 pxToRem 函数设置为一个全局工具如:在 utils.js 文件、SCSS/Mixin 定义
页面的宽度适配: 假设页面的根元素(html)的字体大小设置为动态值(常用 rem 单位适配时的做法), 比如 html { font-size: (屏幕宽度 / 设计稿宽度) }。如果根元素的字体大小为 1rem 屏幕宽度 / 1920px&…...