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

2022年第十一届认证杯数学中国数学建模国际赛小美赛:C 题 对人类活动进行分类 建模方案及代码实现

2022年第十一届认证杯数学中国数学建模国际赛小美赛:C 题 对人类活动进行分类 建模方案及代码实现

在这里插入图片描述

1 题目

人类行为理解的一个重要方面是对日常活动的识别和监控。可穿戴活动识别系统可以在许多关键领域提高生活质量,如门诊监测、居家康复、跌倒检测等。基于惯性传感器的活动识别系统通过个人报警系统[1]、跌倒检测和分类[2]、医疗诊断和治疗[3]、在家或学校远程监测儿童、康复和物理治疗、生物力学研究、人体工程学、体育科学、芭蕾舞和舞蹈、动画、电影制作、电视、现场娱乐、虚拟现实和电脑游戏[4]等应用于远程监测和观察老年人。我们尝试使用微型惯性传感器和定位于身体不同部位的磁力计来对人类活动进行分类,获得了以下数据。

这19项活动由8名受试者(4名女性,4名男性,年龄在20至30岁之间)进行,每项活动持续5分钟。每个受试者的每项活动信号总持续时间为5分钟。受试者被要求以自己的风格执行活动,不受活动应该如何执行的限制。因此,在一些活动的速度和幅度上存在着学科间的变化。

对传感器单元进行校准,以获取25赫兹采样频率的数据。5分钟的信号被分成5秒的片段,因此每个活动可获得480(= 60 × 8)个信号片段。

这19个活动是:

1.坐(A1);
2.站(A2);
3.仰卧(A3);
4.右侧卧(A4);
5.上升楼梯(A5);
6.下行楼梯(A6);
7.静止站在电梯里(A7);
8.在电梯里四处走动(A8);
9.在停车场散步(A9);
10.在跑步机上以4公里/小时的速度平卧和15度斜卧行走(A10);
11.在跑步机上以4公里/小时的速度以15度倾斜姿势行走(A11);
12.在跑步机上以8公里/小时的速度跑步(A12);
13.在步进机上锻炼(A13);
14.在交叉训练机上锻炼(A14);
15.水平骑健身自行车(A15);
16.以垂直姿势骑健身自行车(A16);
17.划船(第A17);
18.跳(A18);
19.打篮球(A19)。

要求你们队建立一个合理的数学模型来解决以下问题。

1.请设计一组特征和一个高效的算法,以便从这些穿戴式传感器的数据中对19种人类行为进行分类。

2.由于数据成本高,我们需要在有限的数据集下,使模型具有良好的泛化能力。我们需要对这个问题进行具体的研究和评估。请设计一个可行的方法来评估你的模型的泛化能力。

3.请研究并克服过拟合问题,让你的分类算法可以广泛应用于人的动作分类问题。

完整的数据可以通过以下链接下载:https://caiyun.139.com/m/i?0F5CJUOrpy8oq

附录:文件结构

19项活动(a)
8个科目§
60个片段
躯干(T),右臂(RA),左臂(LA),右腿(RL),左腿(LL) 5个单元
每个单元上有9个传感器(x, y, z加速度计,x, y, z陀螺仪,x, y, z磁力计)
文件夹a01, a02,…, a19包含19个活动记录的数据。
对于每个活动,子文件夹p1, p2,…, p8包含了这8个主题中的每一个的数据。
在每个子文件夹中,有60个文本文件s01, s02,…, s60,每个段一个。
在每个文本文件中,有5个单元× 9个传感器= 45列,5秒× 25赫兹= 125行。
每一列包含在5秒的时间内从其中一个单元的其中一个传感器获取的125个数据样本。
每一行包含在一个用逗号分隔的特定采样时刻从所有45个传感器轴获得的数据。
列1-45对应于:
T_xacc, T_yacc, T_zacc, T_xgyro,…, T_ymag, T_zmag,
RA_xacc, RA_yacc, RA_zacc, RA_xgyro,…, RA_ymag, RA_zmag,
LA_xacc, LA_yacc, LA_zacc, LA_xgyro,…, LA_ymag, LA_zmag,
RL_xacc, RL_yacc, RL_zacc, RL_xgyro,…, RL_ymag, RL_zmag,
LL_xacc, LL_yacc, LL_zacc, LL_xgyro,…, LL_ymag, LL_zmag。因此,1-9对应1号单元(T)的传感器,10-18对应2号单元(RA)的传感器,19-27对应3号单元(LA)的传感器,28-36对应4号单元(RL)的传感器,37-45对应5号单元(LL)的传感器。

2 思路解析

这是分类问题,大多数现成的模型是深度学习,主流的研究方向也是采用的深度学习。用机器学习的很少。当涉及到挖掘特征的时候,需要考虑的就是机器学习方法了。

1.请设计一组特征和一个高效的算法,以便从这些穿戴式传感器的数据中对19种人类行为进行分类。

解析:合并19个文件夹中的文件,对数据预处理,包括缺失值处理、数据归一化,滑动窗口设置。归一化的时候,注意

磁力计的数值远高于加速度计和陀螺仪的数值。如果我们用这些数据训练我们的网络,磁力计数据将比加速度计和陀螺仪具有更高的重要性。将所有传感器数据缩放在一起归一化会保持这种不平衡。单独对每种传感器的数据归一化,就是是重新缩放数据传感器,可以打破这种平衡。

2.由于数据成本高,我们需要在有限的数据集下,使模型具有良好的泛化能力。我们需要对这个问题进行具体的研究和评估。请设计一个可行的方法来评估你的模型的泛化能力。

提高模型的泛化能力。可以采用迁移学习,或者小样本学习中的元学习,都能在有限的样本内提高泛化能力。从四个角度出发

(1)从数据上提升性能

  • 对数据做缩放(归一化,标准化等方法)
  • 对数据做变换
  • 特征选择(机器学习方法时采用)

(2)从算法上提升性能

  • 算法的筛选(采用不同的分类模型)
  • 重采样的方法(k折交叉验证、分层采样划分)

(3)从算法调优上提升性能

深度学习模型采用一下方法

  • 模型可诊断性
  • 权重的初始化
  • 学习率
  • 激活函数
  • 网络结构
  • batch和epoch
  • 正则项
  • 优化目标
  • 提早结束训练

机器学习模型采用调参,可以考虑网格调参法。

(4)从模型融合上提升性能

  • Bagging
  • stacking

3.请研究并克服过拟合问题,让你的分类算法可以广泛应用于人的动作分类问题。

(1)数据集角度

  • 增加样本量,数据集扩增
  • 原有数据加随机噪声
  • 重采样

(2)特征角度

  • 特征选择
  • 特征降维

(3)模型角度

  • 降低模型复杂度
    正则化 ,正则化正是通过在损失函数上添加额外的参数稀疏性惩罚项(正则项),来限制网络的稀疏性,以此约束网络的实际容量,从而防止模型出现过拟合。L1正则化是将权值的绝对值之和加入损失函数,使得权值中0值比重增大,因此得到的权值较为稀疏。L2正则化是将权重的平方之和加入损失函数,使得权值分布更加平均,所以权值较为平滑。
    Dropout舍弃,在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃,使得每次训练的网络结构多样。

(4)训练角度

  • 早停止,如在训练中多次迭代后发现模型性能没有显著提高就停止训练

  • 交叉验证

2 python代码实现

2.1 数据分析

(1)数据集分析

data下有19个文件夹,分表表示19个活动,如a01,a01文件夹下有8个文件夹,表示8种科目,如p1,p1下有60个txt文件。表示60个片段。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bO0WWsPc-1670034890082)(/Users/mgege007/Desktop/1.png)]

其中每个txt文件中的格式如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EBd4PZpb-1670034890082)(/Users/mgege007/Desktop/2.png)]

有125行,45列。总共费时5秒,一秒25赫兹的速度采集样本,得到5×25行的数据。45列表示身体放置有5个部位的设备,每种设备中有三个传感器,分别是加速度计、陀螺仪和磁力计,每个传感器有x,y,z三个坐标,就得到3×3×5 = 45列。

(2)读取文件分析

以19个动作分类,合并所有文件

import os
import pandas as pd
path = "data" #文件夹目录
files= os.listdir(path) #得到文件夹下的所有文件名称
s = []
all_txt = []
label = []
for A in files: #遍历文件夹P_path= path+'/'+Aif os.path.isdir(P_path): #判断是文件夹,是文件夹才打开P= os.listdir(path+'/'+A)for s in P:S_path= path+'/'+A+'/'+sif os.path.isdir(S_path): #判断是文件夹,是文件夹才打开S= os.listdir(path+'/'+A+'/'+s)for t in S:txtpath  =path+'/'+A+'/'+s+'/'+t。。。略all_txt.append(txtfile)label.extend([A]*len(txtfile))data = pd.concat(all_txt, axis=0)
cols_str = 'T_xacc1,T_yacc1,T_zacc1,T_xacc2,T_yacc2,T_zacc2,T_xacc3,T_yacc3,T_zacc3,\RA_xgyro1,RA_ymag1,RA_zmag1,RA_xgyro2,RA_ymag2,RA_zmag2,RA_xgyro3,RA_ymag3,RA_zmag3,\LA_xgyro1,LA_ymag1,LA_zmag1,LA_xgyro2,LA_ymag2,LA_zmag2,LA_xgyro3,LA_ymag3,LA_zmag3,\RL_xgyro1,RL_ymag1,RL_zmag1,RL_xgyro2,RL_ymag2,RL_zmag2,RL_xgyro3,RL_ymag3,RL_zmag3,\LL_xgyro1,LL_ymag1,LL_zmag1,LL_xgyro2,LL_ymag2,LL_zmag2,LL_xgyro3,LL_ymag3,LL_zmag3'
cols = cols_str.split(',')
data.columns = cols
....

分析总数据集

import pandas as pddata = pd.read_csv('data/all_txt.csv')
data

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K6DqzLPm-1670034890083)(/Users/mgege007/Desktop/3.png)]

分析标签的分布

import matplotlib.pyplot as pltx_axis  = dict(data.label.value_counts()).keys()
y_axis = dict(data.label.value_counts()).values()
plt.figure(figsize=(12, 5))
plt.bar(x_axis, y_axis, width=0.5)
plt.xlabel('Activity label')
plt.ylabel('Count')
plt.title('Label Distribution')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ck0FBrQZ-1670034890084)(/Users/mgege007/Desktop/4.png)]

查看是否 有缺失值

data.isnull().any().value_counts()

False 46 dtype: int64

无缺失值

2.2 数据预处理

(1)归一化

数据归一化,归一化的有两种,在每个标签的样本中逐个归一化,或者在整个数据集中归一化。对比一下归一化效果

def plot_data(y,title):plt.figure(figsize=(15, 10))x = range(len(y))if isinstance(y, pd.DataFrame):y1 = list(y.iloc[:,0])y2 = list(y.iloc[:,1])y3 = list(y.iloc[:,2])else:y1 = list(y[:,0])y2 = list(y[:,1])y3 = list(y[:,2])plt.plot(x, y1)plt.plot(x, y2)plt.plot(x, y3)plt.title(f'{title}')plt.show()

原始数据中挑第一个传感器的x,y,z可视化

# 原始数据
plot_data(data,'origin dataset')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K3NolcFl-1670034890084)(/Users/mgege007/Desktop/5.png)]

两种 不同方式的归一化后可视化分析

from sklearn.preprocessing import MinMaxScaler
import pandas as pdscaler = MinMaxScaler(feature_range=[-1,1])
data_activity_wise = {}
data_activity_wise_scaled = []
all_activites = pd.unique(pd.Series(data.iloc[:, -1]))for activity in all_activites:data_activity_wise[activity] = data[data.iloc[:, -1] == activity]
import numpy as np
for activity, activity_data in data_activity_wise.items():data_activity_wise_scaled.append(scaler.fit_transform(activity_data.iloc[:,0:-1]))scaled_data = scaler.fit_transform(data.iloc[:, 0:-1])
data_scaled_at_once = np.concatenate((scaled_data, data.iloc[:, -1][:, None]), axis=1)
data_activity_wise2 = np.concatenate(data_activity_wise_scaled)
# 第一种归一化方式
plot_data(data_scaled_at_once[:, 0:3], "Scaled at once")
# 第二种归一化方式
plot_data(data_activity_wise2, 'Activity-Wise Scaled')print("Scaled at once:")
print("Mean(x): " + str(np.mean(data_scaled_at_once[:, 1])) + "; Std(x): " + str(np.std(data_scaled_at_once[:, 1])))
print("Mean(y): " + str(np.mean(data_scaled_at_once[:, 2])) + "; Std(y): " + str(np.std(data_scaled_at_once[:, 2])))
print("Mean(z): " + str(np.mean(data_scaled_at_once[:, 3])) + "; Std(z): " + str(np.std(data_scaled_at_once[:, 3])))print("\nScaled activity-wise:")
print("Mean(x): " + str(np.mean(data_activity_wise2[:, 0])) + "; Std(x): " + str(np.std(data_activity_wise2[:, 0])))
print("Mean(y): " + str(np.mean(data_activity_wise2[:, 1])) + "; Std(y): " + str(np.std(data_activity_wise2[:, 1])))
print("Mean(z): " + str(np.mean(data_activity_wise2[:, 2])) + "; Std(z): " + str(np.std(data_activity_wise2[:, 2])))

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UbUKiXe5-1670034890085)(/Users/mgege007/Desktop/6.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y7u11Mdy-1670034890085)(/Users/mgege007/Desktop/7.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uEhtdRKn-1670034890086)(/Users/mgege007/Desktop/8.png)]

对数据归一化后设置滑动窗口

注意:这里采用了方法二,因为简单。但是磁力计的数值远高于加速度计和陀螺仪的数值。如果我们用这些数据训练我们的网络,磁力计数据将比加速度计和陀螺仪具有更高的重要性。将所有传感器数据缩放在一起归一化会保持这种不平衡。方法一的归一化方法是重新缩放数据传感器,可以打破这种平衡。在改进的时候,可以对比讨论一下,丰富论文的实验内容。

from sklearn.model_selection import StratifiedShuffleSplit
# 归一化
scaled_data = scaler.fit_transform(data.iloc[:, 0:-1])
data_scaled_at_once = np.concatenate((scaled_data, data.iloc[:, -1][:, None]), axis=1)
# 层次划分训练集和验证集
split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
for train_index, valid_index in split.split(scaled_data,data.iloc[:, -1]):train_data = data_scaled_at_once[train_index,:]valid_data = data_scaled_at_once[valid_index,:]   # 保证测试集

(2)设置滑动窗口,封装数据集

import numpy as npdef sliding_window_seconds(data, length_in_seconds=1, sampling_rate=50, overlap_ratio=None):"""Return a sliding window measured in seconds over a data array.:param data: input array, can be numpy or pandas dataframe:param length_in_seconds: window length as seconds:param sampling_rate: sampling rate in hertz as integer value:param overlap_ratio: overlap is meant as percentage and should be an integer value:return: tuple of windows and indices"""windows = []indices = []curr = 0overlapping_elements = 0win_len = int(length_in_seconds * sampling_rate)if overlap_ratio is not None:overlapping_elements = int((overlap_ratio / 100) * win_len)if overlapping_elements >= win_len:print('Number of overlapping elements exceeds window size.')returnwhile curr < len(data) - win_len:windows.append(data[curr:curr + win_len])indices.append([curr, curr + win_len])curr = curr + win_len - overlapping_elementsreturn np.array(windows), np.array(indices)def sliding_window_samples(data, samples_per_window, overlap_ratio):"""Return a sliding window measured in number of samples over a data array.:param data: input array, can be numpy or pandas dataframe:param samples_per_window: window length as number of samples per window:param overlap_ratio: overlap is meant as percentage and should be an integer value:return: tuple of windows and indices"""windows = []indices = []curr = 0win_len = int(samples_per_window)if overlap_ratio is not None:overlapping_elements = int((overlap_ratio / 100) * (win_len))if overlapping_elements >= win_len:print('Number of overlapping elements exceeds window size.')returnwhile curr < len(data) - win_len:windows.append(data[curr:curr + win_len])indices.append([curr, curr + win_len])curr = curr + win_len - overlapping_elementstry:result_windows = np.array(windows)result_indices = np.array(indices)except:result_windows = np.empty(shape=(len(windows), win_len, data.shape[1]), dtype=object)result_indices = np.array(indices)for i in range(0, len(windows)):result_windows[i] = windows[i]result_indices[i] = indices[i]return result_windows, result_indicesdef apply_sliding_window(data_x, data_y, sliding_window_size, unit, sampling_rate, sliding_window_overlap):"""Function which transforms a dataset into windows of a specific size and overlap.:param data_x: numpy float arrayArray containing the features (can be 2D):param data_y: numpy float arrayArray containing the corresponding labels to the dataset (is 1D):param sliding_window_size: integer or floatSize of each window (either in seconds or units):param unit: string, ['units', 'seconds']Unit in which the sliding window is measured:param sampling_rate: integerNumber of hertz in which the dataset is sampled:param sliding_window_overlap: integerAmount of overlap between the sliding windows (measured in percentage, e.g. 20 is 20%):return:"""output_x = Noneoutput_y = Noneif unit == 'units':tmp_x, _ = sliding_window_samples(data_x, sliding_window_size, sliding_window_overlap)tmp_y, _ = sliding_window_samples(data_y, sliding_window_size, sliding_window_overlap)elif unit == 'seconds':tmp_x, _ = sliding_window_seconds(data_x, sliding_window_size, sampling_rate, sliding_window_overlap)tmp_y, _ = sliding_window_seconds(data_y, sliding_window_size, sampling_rate, sliding_window_overlap)output_x = tmp_xoutput_y = tmp_youtput_y = [[i[-1]] for i in output_y]return output_x, np.array(output_y).flatten()# settings for the sliding window (change them if you want to!)
sw_length = 50
sw_unit = 'units'
sw_overlap = 50
# apply a sliding window on top of both the train and validation data; you can use our predefined method
# you can import it via from preprocessing.sliding_window import apply_sliding_window
X_train, y_train = apply_sliding_window(train_data.iloc[:, :-1], train_data.iloc[:, -1], sliding_window_size=sw_length, unit=sw_unit, sampling_rate=50, sliding_window_overlap=sw_overlap)
X_valid, y_valid = apply_sliding_window(valid_data.iloc[:, :-1], valid_data.iloc[:, -1], sliding_window_size=sw_length, unit=sw_unit, sampling_rate=50, sliding_window_overlap=sw_overlap)

2.3 模型训练

(1)采用LSTM,框架是Pytorch。定义LSTM网络结构

from torch import nnclass DeepConvLSTM(nn.Module):def __init__(self, config):super(DeepConvLSTM, self).__init__()# parametersself.window_size = config['window_size']self.drop_prob = config['drop_prob']self.nb_channels = config['nb_channels']self.nb_classes = config['nb_classes']self.seed = config['seed']self.nb_filters = config['nb_filters']self.filter_width = config['filter_width']self.nb_units_lstm = config['nb_units_lstm']self.nb_layers_lstm = config['nb_layers_lstm']# define activation functionself.relu = nn.ReLU(inplace=True)# define conv layersself.conv1 = nn.Conv2d(1, self.nb_filters, (self.filter_width, 1))self.conv2 = nn.Conv2d(self.nb_filters, self.nb_filters, (self.filter_width, 1))self.conv3 = nn.Conv2d(self.nb_filters, self.nb_filters, (self.filter_width, 1))self.conv4 = nn.Conv2d(self.nb_filters, self.nb_filters, (self.filter_width, 1))# define lstm layersself.lstm = nn.LSTM(input_size=self.nb_filters * self.nb_channels, hidden_size=self.nb_units_lstm, num_layers=self.nb_layers_lstm)# define dropout layerself.dropout = nn.Dropout(self.drop_prob)# define classifierself.fc = nn.Linear(self.nb_units_lstm, self.nb_classes)def forward(self, x):# reshape data for convolutionsx = x.view(-1, 1, self.window_size, self.nb_channels)# apply convolution and the activation functionx = self.relu(self.conv1(x))x = self.relu(self.conv2(x))x = self.relu(self.conv3(x))x = self.relu(self.conv4(x))# sets the final sequence length final_seq_len = x.shape[2]# permute dimensions and reshape for LSTMx = x.permute(0, 2, 1, 3)x = x.reshape(-1, final_seq_len, self.nb_filters * self.nb_channels)# apply LSTM (note: it has two outputs!)x, _ = self.lstm(x)# reshape data for classifierx = x.view(-1, self.nb_units_lstm)# apply dropout and feed data through classifierx = self.dropout(x)x = self.fc(x)# reshape data and return predicted label of last sample within final sequence (determines label of window)out = x.view(-1, final_seq_len, self.nb_classes)return out[:, -1, :]

(2)定义训练过程

import torch
from torch.utils.data import DataLoader
from sklearn.metrics import precision_score, recall_score, f1_score, jaccard_score
import time
from misc.torchutils import seed_torch# this is the config object which contains all relevant settings. Feel free to change them and see how it influences
# your results. Parameters which shouldn't be changed are marked.
config = {'nb_filters': 64,'filter_width': 11,'nb_units_lstm': 128,'nb_layers_lstm': 1,'drop_prob': 0.5,'seed': 1,'epochs': 20,'batch_size': 100,'learning_rate': 1e-4,'weight_decay': 1e-6,'gpu_name': 'cuda:0','print_counts': False
}# in order to get reproducible results, we need to seed torch and other random parts of our implementation
seed_torch(config['seed'])# define the missing parameters within the config file. 
# window_size = size of the sliding window in units
# nb_channels = number of feature channels
# nb_classes = number of classes that can be predicted
config['window_size'] = X_train.shape[1]
config['nb_channels'] = X_train.shape[2]
config['nb_classes'] = len(class_names)# initialize your DeepConvLSTM object 
network = DeepConvLSTM(config)# sends network to the GPU and sets it to training mode
network.to(config['gpu_name'])
network.train()# initialize the optimizer and loss
optimizer = torch.optim.Adam(network.parameters(), lr=config['learning_rate'], weight_decay=config['weight_decay'])
criterion = nn.CrossEntropyLoss()# initializes the train and validation dataset in Torch format
train_dataset = torch.utils.data.TensorDataset(torch.from_numpy(X_train), torch.from_numpy(y_train))
val_dataset = torch.utils.data.TensorDataset(torch.from_numpy(X_valid), torch.from_numpy(y_valid))# define the train- and valloader; use from torch.utils.data import DataLoader
trainloader = DataLoader(train_dataset, batch_size=config['batch_size'], shuffle=True)    
valloader = DataLoader(val_dataset, batch_size=config['batch_size'], shuffle=True)# define your training loop; iterates over the number of epochs
for e in range(config['epochs']):# helper objects needed for proper documentationtrain_losses = []train_preds = []train_gt = []start_time = time.time()batch_num = 1# iterate over the trainloader object (it'll return batches which you can use)for i, (x, y) in enumerate(trainloader):# sends batch x and y to the GPUinputs, targets = x.to(config['gpu_name']), y.to(config['gpu_name'])optimizer.zero_grad()# send inputs through network to get predictionstrain_output = network(inputs)# calculates lossloss = criterion(train_output, targets.long())# backprogate your computed loss through the network# use the .backward() and .step() function on your loss and optimizerloss.backward()optimizer.step()# calculate actual predictions (i.e. softmax probabilites); use torch.nn.functional.softmax()train_output = torch.nn.functional.softmax(train_output, dim=1)# appends the computed batch loss to listtrain_losses.append(loss.item())# creates predictions and true labels; appends them to the final listsy_preds = np.argmax(train_output.cpu().detach().numpy(), axis=-1)y_true = targets.cpu().numpy().flatten()train_preds = np.concatenate((np.array(train_preds, int), np.array(y_preds, int)))train_gt = np.concatenate((np.array(train_gt, int), np.array(y_true, int)))# prints out every 100 batches information about the current loss and time per batchif batch_num % 100 == 0 and batch_num > 0:cur_loss = np.mean(train_losses)elapsed = time.time() - start_timeprint('| epoch {:3d} | {:5d} batches | ms/batch {:5.2f} | train loss {:5.2f}'.format(e, batch_num, elapsed * 1000 / config['batch_size'], cur_loss))start_time = time.time()batch_num += 1# helper objectsval_preds = []val_gt = []val_losses = []# sets network to eval mode and network.eval()with torch.no_grad():# iterate over the valloader object (it'll return batches which you can use)for i, (x, y) in enumerate(valloader):# sends batch x and y to the GPUinputs, targets = x.to(config['gpu_name']), y.to(config['gpu_name'])# send inputs through network to get predictionsval_output = network(inputs)# calculates loss by passing criterion both predictions and true labels val_loss = criterion(val_output, targets.long())# calculate actual predictions (i.e. softmax probabilites); use torch.nn.functional.softmax() on dim=1val_output = torch.nn.functional.softmax(val_output, dim=1)# appends validation loss to listval_losses.append(val_loss.item())# creates predictions and true labels; appends them to the final listsy_preds = np.argmax(val_output.cpu().numpy(), axis=-1)y_true = targets.cpu().numpy().flatten()val_preds = np.concatenate((np.array(val_preds, int), np.array(y_preds, int)))val_gt = np.concatenate((np.array(val_gt, int), np.array(y_true, int)))# print epoch evaluation results for train and validation datasetprint("\nEPOCH: {}/{}".format(e + 1, config['epochs']),"\nTrain Loss: {:.4f}".format(np.mean(train_losses)),"Train Acc: {:.4f}".format(jaccard_score(train_gt, train_preds, average='macro')),"Train Prec: {:.4f}".format(precision_score(train_gt, train_preds, average='macro')),"Train Rcll: {:.4f}".format(recall_score(train_gt, train_preds, average='macro')),"Train F1: {:.4f}".format(f1_score(train_gt, train_preds, average='macro')),"\nVal Loss: {:.4f}".format(np.mean(val_losses)),"Val Acc: {:.4f}".format(jaccard_score(val_gt, val_preds, average='macro')),"Val Prec: {:.4f}".format(precision_score(val_gt, val_preds, average='macro')),"Val Rcll: {:.4f}".format(recall_score(val_gt, val_preds, average='macro')),"Val F1: {:.4f}".format(f1_score(val_gt, val_preds, average='macro')))# if chosen, print the value counts of the predicted labels for train and validation datasetif config['print_counts']:print('Predicted Train Labels: ')print(np.vstack((np.nonzero(np.bincount(train_preds))[0], np.bincount(train_preds)[np.nonzero(np.bincount(train_preds))[0]])).T)print('Predicted Val Labels: ')print(np.vstack((np.nonzero(np.bincount(val_preds))[0], np.bincount(val_preds)[np.nonzero(np.bincount(val_preds))[0]])).T)# set network to train mode againnetwork.train()

2.4 模型评价

采用的评价指标有

(1)准确率
acc=TP+TNTP+TN+FN+FPacc = \frac{TP+TN}{ TP+TN+FN+FP} acc=TP+TN+FN+FPTP+TN

准确率是分类问题中最简单直观的评价指标,但存在明显的缺陷。比如如果样本中有99%的样本为正样本,那么分类器只需要一直预测为正,就可以得到99%的准确率,但其实际性能是非常低下的。也就是说,当不同类别样本的比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。

(2)精确率
precision=TPTP+FPprecision=\frac{TP}{TP+FP}\\ precision=TP+FPTP

指模型预测为正的样本中实际也为正的样本占被预测为正的样本的比例。计算公式为:
Precision=TPTP+FPPrecision = \frac{TP}{TP+FP} Precision=TP+FPTP
(3)召回率
Recall=TPTP+FNRecall = \frac{TP}{TP + FN} Recall=TP+FNTP
指实际为正的样本中被预测为正的样本所占实际为正的样本的比例。
sklearn中recall_score方法和precision_score方法的参数说明都是一样的,

(4)F1得分

F1 score是精确率和召回率的调和平均值,计算公式为:
F1=2∗precision∗recallprecision+recallF1 = \frac{2 * precision * recall}{precision + recall} F1=precision+recall2precisionrecall
Precision体现了模型对负样本的区分能力,Precision越高,模型对负样本的区分能力越强;Recall体现了模型对正样本的识别能力,Recall越高,模型对正样本的识别能力越强。F1 score是两者的综合,F1 score越高,说明模型越稳健。

from misc.torchutils import seed_torchconfig = {#### TRY AND CHANGE THESE PARAMETERS ##### sliding window settings'sw_length': 50,'sw_unit': 'units','sampling_rate': 50,'sw_overlap': 30,# network settings'nb_conv_blocks': 2,'conv_block_type': 'normal','nb_filters': 64,'filter_width': 11,'nb_units_lstm': 128,'nb_layers_lstm': 1,'drop_prob': 0.5,# training settings'epochs': 10,'batch_size': 100,'loss': 'cross_entropy','weighted': True,'weights_init': 'xavier_uniform','optimizer': 'adam','lr': 1e-4,'weight_decay': 1e-6,'shuffling': True,### UP FROM HERE YOU SHOULD RATHER NOT CHANGE THESE ####'no_lstm': False,'batch_norm': False,'dilation': 1,'pooling': False,'pool_type': 'max','pool_kernel_width': 2,'reduce_layer': False,'reduce_layer_output': 10,'nb_classes': 8,'seed': 1,'gpu': 'cuda:0','verbose': False,'print_freq': 10,'save_gradient_plot': False,'print_counts': False,'adj_lr': False,'adj_lr_patience': 5,'early_stopping': False,'es_patience': 5,'save_test_preds': False
}
import time
import numpy as np
import torchfrom sklearn.model_selection import train_test_split
from sklearn.metrics import precision_score, recall_score, f1_score, jaccard_score
from model.train import train
from model.DeepConvLSTM import DeepConvLSTM
from data_processing.sliding_window import apply_sliding_window
from misc.torchutils import seed_torch# in order to get reproducible results, we need to seed torch and other random parts of our implementation
seed_torch(config['seed'])# needed for saving results
log_date = time.strftime('%Y%m%d')
log_timestamp = time.strftime('%H%M%S')print(train_data.shape, valid_data.shape)# apply the sliding window on top of both the train and validation data; use the "apply_sliding_window" function
# found in data_processing.sliding_window
X_train, y_train = apply_sliding_window(train_data[:, :-1], train_data[:, -1], sliding_window_size=config['sw_length'], unit=config['sw_unit'], sampling_rate=config['sampling_rate'], sliding_window_overlap=config['sw_overlap'])print(X_train.shape, y_train.shape)X_valid, y_valid = apply_sliding_window(valid_data[:, :-1], valid_data[:, -1], sliding_window_size=config['sw_length'], unit=config['sw_unit'], sampling_rate=config['sampling_rate'], sliding_window_overlap=config['sw_overlap'])print(X_valid.shape, y_valid.shape)# (optional) omit the first feature column (subject_identifier) from the train and validation dataset
# you can do it if you want to as it is not a useful feature
X_train, X_valid = X_train[:, :, 1:], X_valid[:, :, 1:]# within the config file, set the parameters 'window_size' and 'nb_channels' accordingly
# window_size = size of the sliding window in units
# nb_channels = number of feature channels
config['window_size'] = X_train.shape[1]
config['nb_channels'] = X_train.shape[2]# define the network to be a DeepConvLSTM object; can be imported from model.DeepConvLSTM
# pass it the config object
net = DeepConvLSTM(config=config)# defines the loss and optimizer
loss = torch.nn.CrossEntropyLoss()
opt = torch.optim.Adam(net.parameters(), lr=config['lr'], weight_decay=config['weight_decay'])# convert the features of the train and validation to float32 and labels to uint8 for GPU compatibility 
X_train, y_train = X_train.astype(np.float32), y_train.astype(np.uint8)
X_valid, y_valid = X_valid.astype(np.float32), y_valid.astype(np.uint8)# feed the datasets into the train function; can be imported from model.train
train_valid_net,_, val_output, train_output = train(X_train, y_train, X_valid, y_valid, network=net, optimizer=opt, loss=loss, config=config, log_date=log_date, log_timestamp=log_timestamp)# the next bit prints out your results if you did everything correctly
cls = np.array(range(config['nb_classes']))print('\nVALIDATION RESULTS: ')
print("\nAvg. Accuracy: {0}".format(jaccard_score(val_output[:, 1], val_output[:, 0], average='macro')))
print("Avg. Precision: {0}".format(precision_score(val_output[:, 1], val_output[:, 0], average='macro')))
print("Avg. Recall: {0}".format(recall_score(val_output[:, 1], val_output[:, 0], average='macro')))
print("Avg. F1: {0}".format(f1_score(val_output[:, 1], val_output[:, 0], average='macro')))print("\nVALIDATION RESULTS (PER CLASS): ")
print("\nAccuracy:")
for i, rslt in enumerate(jaccard_score(val_output[:, 1], val_output[:, 0], average=None, labels=cls)):print("   {0}: {1}".format(class_names[i], rslt))
print("\nPrecision:")
for i, rslt in enumerate(precision_score(val_output[:, 1], val_output[:, 0], average=None, labels=cls)):print("   {0}: {1}".format(class_names[i], rslt))
print("\nRecall:")
for i, rslt in enumerate(recall_score(val_output[:, 1], val_output[:, 0], average=None, labels=cls)):print("   {0}: {1}".format(class_names[i], rslt))
print("\nF1:")
for i, rslt in enumerate(f1_score(val_output[:, 1], val_output[:, 0], average=None, labels=cls)):print("   {0}: {1}".format(class_names[i], rslt))print("\nGENERALIZATION GAP ANALYSIS: ")
print("\nTrain-Val-Accuracy Difference: {0}".format(jaccard_score(train_output[:, 1], train_output[:, 0], average='macro') -jaccard_score(val_output[:, 1], val_output[:, 0], average='macro')))
print("Train-Val-Precision Difference: {0}".format(precision_score(train_output[:, 1], train_output[:, 0], average='macro') -precision_score(val_output[:, 1], val_output[:, 0], average='macro')))
print("Train-Val-Recall Difference: {0}".format(recall_score(train_output[:, 1], train_output[:, 0], average='macro') -recall_score(val_output[:, 1], val_output[:, 0], average='macro')))
print("Train-Val-F1 Difference: {0}".format(f1_score(train_output[:, 1], train_output[:, 0], average='macro') -f1_score(val_output[:, 1], val_output[:, 0], average='macro')))
import numpy as np
from sklearn.metrics import accuracy_score,precision_score,recall_score,f1_scoredef print_metric(y_true, y_pred):print(accuracy_score(y_true, y_pred))  print(precision_score(y_true, y_pred, average='macro'))   print(recall_score(y_true, y_pred, average='macro'))  print(f1_score(y_true, y_pred, average='macro')) 

3 建模方案及代码下载

(1)方法一:https://gitee.com/liumengdemayun/BetterBench-Shop/tree/master

(2)方法二:私信我

(3)本文历史竞赛博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

14.MongoDB系列之配置分片

1. 启动服务器 1.1 启动配置服务器 配置服务器是集群的大脑&#xff0c;保存着关于每个服务器包含哪些数据的所有元数据&#xff0c;因此&#xff0c;必须首先创建配置服务器。 由于资源限制&#xff0c;在同一机器上启动三个进程 # mkdir /home/mongo/cs1 # mkdir /home/mo…...

(非蓝桥杯)斐波那契数列(POJ 2753)(多组数据输入输出问题)

问题描述 斐波那契数列是指这样的数列:数列的第一个和第二个都为1&#xff0c;接下来的每个数都等于前两个数之和。给出一 个正整数a&#xff0c;要求斐波那契数列中第a个数是多少。 输入数据 第一行是测试数据的组数n&#xff0c;后面跟看n行输人。每组测试数据占1行&#x…...

【每日一题Day46】LC1796字符串中第二大的数字 | 模拟

字符串中第二大的数字【LC1796】 Given an alphanumeric string s, return the second largest numerical digit that appears in s, or -1 if it does not exist. An alphanumeric string is a string consisting of lowercase English letters and digits. 快快学完今天的&am…...

前后端分离理念介绍

前后端分离已成为互联网项目开发的业界标准使用方式&#xff0c;通过nginxtomcat的方式&#xff08;也可以中间加一个nodejs&#xff09;有效的进行解耦&#xff0c;并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务&#xff08;多种客户端&…...

设计与架构究竟是什么

选自《架构整洁之道》 第1章 设计与架构究竟是什么 一直以来&#xff0c;设计&#xff08;Design&#xff09;与架构&#xff08;Architecture&#xff09;这两个概念让大多数人十分迷惑——什么是设计&#xff1f;什么是架构&#xff1f;二者究竟有什么区别&#xff1f; 本书…...

构造函数和析构函数

类的构造函数 类的构造函数是类的一种特殊的成员函数&#xff0c;它会在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的&#xff0c;并且不会返回任何类型&#xff0c;也不会返回 void。 构造函数可用于为某些成员变量设置初始值。 …...

MySQL 信息函数

名称描述BENCHMARK()重复执行一个表达式CHARSET()返回参数的字符集COERCIBILITY()返回字符串参数的排序规则强制值COLLATION()返回字符串参数的排序规则CONNECTION_ID()返回连接的连接ID&#xff08;线程ID&#xff09;CURRENT_ROLE()返回当前活动角色CURRENT_USER(),聽CURRENT…...

openEuler iso x86_64 定制分析笔记

22.03 aarch64 ### BEGIN /etc/grub.d/10_linux ### menuentry Install openEuler 22.03-LTS --class red --class gnu-linux --class gnu --class os { linux /images/pxeboot/vmlinuz inst.stage2hd:LABELopenEuler-22.03-LTS-aarch64 ro inst.geoloc0 consoletty0 smm...

第一章 动态规划 状态压缩DP

1、基本概述 状态压缩dp和状态机一样&#xff0c;都是一种特殊的状态表示方式。状态机用一系列小状态表示某一状态。状态压缩dp用二进制数进行表示。虽然看代码起来时间复杂度比较高&#xff0c;但是很多的情况都给剪枝掉了。 状态压缩的题目主要分成两种 棋盘式&#xff08;…...

JS原生DOM基本操作(上)

一.获取元素 1.根据id名称获取元素 语法&#xff1a;document.getElementById(‘id名称’) 作用&#xff1a;获取文档流中id对应的一个元素 返回值&#xff1a; 如果有id对应的元素&#xff0c;就是这个元素如果没有id对应的元素&#xff0c;就是null <div>一号</div…...

Oracle SQL执行计划操作(2)——索引相关操作

2. 索引相关操作 该类操作与SQL语句执行计划中通过索引访问表中数据的路径和方式相关,主要包括索引访问类相关操作。根据不同的具体SQL语句及其他相关因素,以下各操作可能会出现于相关SQL语句的执行计划。 1)INDEX UNIQUE SCAN 进行一个索引唯一扫描。顾名思义,唯一索引…...

使用策略+工厂模式彻底干掉代码中的if else

对于业务开发来说&#xff0c;业务逻辑的复杂是必然的&#xff0c;随着业务发展&#xff0c;需求只会越来越复杂&#xff0c;为了考虑到各种各样的情况&#xff0c;代码中不可避免的会出现很多if-else。 一旦代码中if-else过多&#xff0c;就会大大的影响其可读性和可维护性。…...

HTML5期末大作业:基于html+css+javascript+jquery实现藏族文化15页【学生网页设计作业源码】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…...

SQLServer 常用函数汇总

SYSDATETIME() 系统时间GETDATE() 当前时间CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] ) --可用来当做Contains函数expressionToFind &#xff1a;目标字符串&#xff0c;就是想要找到的字符串&#xff0c;最大长度为8000 。 expressionToSearc…...

Java游戏中的矩形碰撞检测

通常由x和y坐标以及长度和宽度来确定一个矩形&#xff0c;因此又可以利用这四个参数来确定是否发生了碰撞。 相交的情况下一定会发生碰撞&#xff0c;如下图&#xff1a; 还有一类特殊的相交情况&#xff0c;就是重叠&#xff0c;如下图&#xff1a; 所以开发的碰撞检测类如下&…...

使用Mybatis或Mybatis-plus查询返回值中,只有主键值为null,其余正常

使用Mybatis或Mybatis-plus查询返回值中,只有主键值为null,其余正常原因应该就是表中主键名称格式不对,(如我设置的n_id, s_id)所以,我们有三个选择 无脑,给你的主键改一个不带id的名字(如我把s_id改成了sno)很想保留id这个, 那就采用驼峰命名法,如s_id->sId不改变原表, 告…...

笨办法学Python第二十五天:更多练习

你离这本书第一部分的结尾已经不远了&#xff0c;你应该已经具备了足够的 Python 基础知识&#xff0c;可以继续学习一 些编程的原理了&#xff0c;但你应该做更多的练习。这个练习的内容比较长&#xff0c;它的目的是锻炼你的毅力&#xff0c;编辑以下内容&#xff1a; print…...

YMTC X3 NAND 232L 终露真容,全球领先|国产芯之光

上一篇文章&#xff08;芯片级解密YMTC NAND Xtacking 3.0技术&#xff09;&#xff0c;我们结合TechInsights获取芯片级信息梳理了国产NAND芯片厂商YMTC的技术演进之路&#xff0c;从2016公司成立&#xff0c;2018年发布Xtacking 1.0 NAND架构&#xff0c;2019年发布Xtacking …...

HBase Shell启动缓慢及操作耗时长的原因分析与解决

1.现象 在内网搭了一个 hbase-2.2.6&#xff08;hadoop-2.7.3&#xff09;的环境&#xff0c;使用的是其内置的 zookeeper-3.4.10&#xff0c;16010端口对应的 web界面可以正常访问&#xff0c;且各项功能正常。 在使用 hbase shell的过程中&#xff0c;首先是 hbase shell启…...

FromBottomToTop第十二周项目博客

FromBottomToTop第十二周项目博客 本周项目计划 设计整体架构&#xff0c;收集素材&#xff0c;制作出静态界面部分 项目进展 已完成游戏整体架构设计已完成游戏界面、背景音乐等素材的收集正在进行静态界面部分的制作游戏整体架构 框架类及核心类 Activity的实现类MainGameAct…...

模拟,枚举与递推

模拟 模拟指的是将题目描述转化为可执行的代码&#xff0c;其中我们会用到编程语言的基础内容&#xff0c;最常见的就是循环。 简单的题目&#xff0c;通常直接模拟就够了&#xff0c;比如 874. 模拟行走机器人 。 而如果是中等和困难的题目&#xff0c;除了使用模拟&#x…...

【Java8 新特性 3】Supplier简介,java视频直播技术架构

Supplier persionSupplier Person::new; Arrays.asList(“a”,“b”,“c”).forEach(e->System.out.println(e)); 在Java8中增加的接口Supplier&#xff0c;最适合用于表示工厂。带有Supplier的方法&#xff0c;通常应该限制输入工厂的类型参数使用有限制的通配符类型&am…...

2022考研 计算机美术设计专业专业要求与就业方向

计算机专业如今竞争日趋激烈&#xff0c;考题形式多样涵盖的内容较多&#xff0c;对于报考计算机专业同学来说复习是难点&#xff0c;2022考研计算机的考生们要提早开始着手准备了。 本文整理分享“2022考研计算机&#xff1a;计算机美术设计专业专业要求与就业方向”相关内容&…...

C#报错:Could not find any resources appropriate for the specified culture or the neutral culture

WinForm程序报错&#xff0c;提示&#xff1a; Could not find any resources appropriate for the specified culture or the neutral culture 代码&#xff1a; object obj ResourceManager.GetObject("btn_bg_down", resourceCulture); 资源文件都在的&#…...

iOS 视频边下边播

直接切入主题&#xff0c;要实现的功能是&#xff1a;1、ios视频音频边缓存边播放&#xff0c;缓存时可以在已下载的部分拖拽进度条。2、缓存到一半退出&#xff0c;再次播放同一地址的视频时&#xff0c;视频继续下载&#xff0c;并且缓存进度已经走到上一次下载的位置。3、无…...

Android开发:xml布局中字母大写的问题

刚才写demo的时候碰到一个问题 Room只有首字母大写。然后在视图中表现出来的是全字母大写 解决方法&#xff1a;加一行代码 android:textAllCaps"false"...

【5G NR】物理资源

文章目录前言1. 天线端口1.1 天线端口的定义1.2 准共址的定义2. 资源网格3. 资源单元4. 资源块4.1 资源块概述4.2 Point A4.3 公共资源块4.4 物理资源块4.5 虚拟资源块5. 部分带宽参考文献前言 NR物理资源包括天线端口&#xff08;Antenna Port&#xff09;、资源网格&#xf…...

win10蓝屏:终止代码:CRITICAL_PROCESS_DIED

1.硬件驱动问题Win X打开设备管理器-扫描检测硬件改动看是否有硬件驱动问题&#xff08;黄色标识&#xff09;&#xff0c;有的话更新或卸载重装2.查看蓝屏原因使用软件&#xff1a;BlueScreenViewWinX - 时间查看器window日志-系统&#xff1a;红色错误标识为系统错误问题3.一…...

idea搭建maven程序:03-80端口子程序的代码部分(RestTempl)

目录 一、说明 1.1 80端口 1.2 RestTemplate 1.3 负载均衡(SOA) 二、80端口子程序的代码部分 2.1 新建 2.2 pom.xml 2.3 application.yml 2.4 程序入口 UsersMain80.class 2.5 entities包和实体类 2.6 config包和对应类 2.7 controller包和对应类 三、运行 一、说…...

[附源码]Python计算机毕业设计Django茂名特产销售商城网站

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…...

jmeter压力测试(windows,linux)

1、启动jmeter&#xff0c;打开界面工具&#xff0c;添加一个线程组&#xff0c;添加驱动 2、添加一个JDBC Connection Configuration&#xff0c;连接池配置文件。右键线程组【添加】--【配置元件】- -【JDBC Connection Configuration】 2.1配置数据库信息 3、右键线程组【添…...

html radio的onclick事件设置

<span οnclick"show()"><?php foreach($choice as $key>$value){ ?><label><input name"choice" type"radio" value"<?php echo $key?>"><?php echo $value; ?></label>   &l…...

写给Android开发的一封信,没有深度技术的苦

前言 最近有一位读者去面试Android开发&#xff0c;这位读者师出名门&#xff08;BAT中的一家公司&#xff09;&#xff0c;是有十年的软件开发经验的高级Android工程师&#xff0c;但却以没有技术深度的理由拒绝了他。 昨天早上&#xff0c;我在给他做模拟面试的时候也发现了…...

webpack与vue-cli的关系

目录 1、什么是Webpack 2、为什要使用WebPack 3、WebPack和Grunt以及Gulp相比有什么特性 4、什么是vue-cli 5、webpack与vue-cli的关系 &#x1f53d; 扩展&#xff1a;vue-cli2.x 与 vue-cli3.x创建vue脚手架项目结构对比 &#x1f4da; 参考资料 vue-cli是基于nodej…...

国产音频CODEC芯片 CL7016

立晶半导体&#xff0c;由Cubic Lattice Inc于2017年2月在北京设立。主要从事开发高品质消费类音频芯片:音频ADC,音频DAC,音频Codec,音频CLASS D等&#xff08;性能等同Cirrus Logic、 TI等公司同类产品&#xff09;。 公司前身是美国Cubic Lattice Inc。由10名分别来自Texas …...

从局部信息推测基恩士的Removing BackGround Information算法的实现。

最近从一个朋友那里看到了一些基恩士的资料,本来是想看下那个比较有特色的浓淡补正滤波器的(因为名字叫Shading Correction Filter,翻译过来的意思有点搞笑),不过确鬼使神差的利用现有的简单函数实现了一个简易高效的去除纹理背景的算法。 最近从一个朋友那里看到了一…...

工作一年的java程序员薪资,纯干货

1 JVM的内存区域布局 java代码的执行步骤有三点 java源码文件->编译器->字节码文件字节码文件->JVM->机器码机器码->系统CPU执行 JVM执行的字节码需要用类加载来载入&#xff1b;字节码文件可以来自本地文件&#xff0c;可以在网络上获取&#xff0c;也可以实时…...

arduino的pinMode()函数

pinMode() 1 说明 通过pinMode()函数&#xff0c;你可以将Arduino的引脚配置为以下三种模式&#xff1a; 输出(OUTPUT)模式输入(INPUT)模式输入上拉&#xff08;INPUT_PULLUP&#xff09;模式 &#xff08;仅支持Arduino 1.0.1以后版本&#xff09; 在输入上拉&#xff08;…...

new Data()、set Data()、get Data()方法

先看一个例子&#xff1a; 打印结果如下&#xff1a; 我们在newData()方法里设置一个日期&#xff0c;然后对该日期进行 -1&#xff0c;得到的并不是前一天2月28号&#xff0c;而是 0&#xff1b;如果在setData()里对日期设置进行 -1&#xff0c;可以得到28号。 1. new Data()…...

中国民生银行天眼日志平台架构演进的平凡之路

本文由 【AI前线】原创&#xff0c;原文链接&#xff1a;t.cn/RYgJ8hDAI 前线导读: “随着中国民生银行的 IT 业务系统的迅速发展&#xff0c;主机、设备、系统、应用软件数量不断增多&#xff0c;业务资源访问、操作量不断增加&#xff0c;对于应用整体系统智能分析与处理的要…...

本地存储 sessionStorage / localStorage 使用及区别

本地存储 特性&#xff1a; 1.数据存储在用户浏览器中 2.设置、读取方便&#xff0c;甚至页面刷新不丢失数据 2.容量较大&#xff0c;sessionStorage 约5M&#xff0c;localStorage约20M 3.只能存储字符串&#xff0c;可以将对象JSON.stringify&#xff08;&#xff09;编码后存…...

Android使用其他应用打开文件

public class MapTable {/*** -- MIME 列表 --*/public static final String[][] MIME_MapTable {// --{后缀名&#xff0c; MIME类型} --{".3gp", "video/3gpp"},{".3gpp", "video/3gpp"},{".aac", "audio/x-mpeg&…...

k8s常用命令

k8s常用命令get 获取资源列表 [rootk8s-node1 mytestyaml]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-deployment-85ff79dd56-8f8s2 1/1 Running 0 30s nginx-deployment-85ff79dd56-nmhvr 1/1 R…...

[附源码]计算机毕业设计springboot现代诗歌交流平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…...

软件测试之TCP、UPD协议详解

在网络层的中&#xff0c;使用ARP、IP、路由协议&#xff0c;实现了数据的转发&#xff0c;从而实现两个机器之间数据包的传输。但是当数据包特别大的时候&#xff0c;通过网络层的协议&#xff0c;没有办法保证数据的完整性。此时&#xff0c;就需要传输层的协议实现数据包的完…...

kali linux怎么装软件,linux安装软件的几种方式(kali平台)和一些实用的软件(持续更新)...

安装软件前我们先更改镜像源&#xff0c;编辑 /etc/apt/sources.list 文件, 在文件最前面添加以下条目&#xff1a;#中科大更新源deb https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contribdeb-src https://mirrors.ustc.edu.cn/kali kali-rolling main non-fr…...

弘玑RPA | 广告优化师的智能小助手

作为一名广告优化师&#xff0c;日常工作就是时报、日报、周报、各种报表&#xff0c;各种分析&#xff0c;最怕的还是周末或者节假日正在外面玩&#xff0c;客户突然让发时报&#xff0c;因此不管去哪里都得带个电脑&#xff0c;非常不方便。有时候在想&#xff0c;做报表不过…...

es module 和 commonjs 模块化实践

1、当export default 导出的值是基本数据类型时&#xff0c;其值是不能被改变的。 举个例子&#xff0c;我们新建文件&#xff1a; base.js let name Joker; export const fn (value) > {name value; } export default name;change.js import name, { fn } from ./base.j…...

ICC学习——LAB1

ICC学习——LAB1数据准备和基础流程 文章目录ICC学习——LAB1数据准备和基础流程Task1 创建Milkway库Task2 载入netlist&#xff0c;TLU&#xff0c;约束和控制Task3 基础流程&#xff1a;设计规划floorplanTask4 基础流程&#xff1a;布局placement学习目标&#xff1a; 1.完成…...

信息技术(计算机基础知识精华版)

第1部分 计算机基础知识 计算机特点与应用范围计算机特点速度快 MIPS&#xff08;百万条指令/秒&#xff09; BIPS(十亿条指令/秒)MIPS:Million Instructions per second; BIPS: Billion Instructions per second存储容量大 精度高 在程序控制下自动完成具有逻…...

MATLAB函数调用

数学建模matlab自定义函数时间2020年5月10日 学习Matlab自定义函数使用&#xff0c;并结合所学函数简单修改了一下上周的代码实现了Topsis法。 1.Matlab语句构成的程序文件称为M文件&#xff0c;以m作为文件的扩展名&#xff0c;分为函数文件和程序文件。 程序文件即脚本文件…...

Nginx配置之https

文章目录https配置openssl实现私有CA签发证书免费SSL证书申请教程(推荐)部署ssl证书实现httpshttps配置 生成私钥&#xff0c;生成证书签署请求并获得证书&#xff0c;然后在nginx.conf中配置 示例&#xff1a; server {listen 443 ssl;server_name www.idfsoft.com;…...

2021年11月28号布置的作业

CSP-J 章节 第64 66课 队列和栈&#xff0c;需要做后面的题 第68 70课 set map 只需要理解概念&#xff0c;并做笔记 加下面这道题 【拦截导弹2】 某国为了防御敌国的导弹袭击&#xff0c;发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷&#xff1…...

Windows下的性能调优工具

性能调优是通过定位软件性能瓶颈&#xff0c;在保证功能正常的前提下&#xff0c;使用相应的技术来优化软件性能&#xff0c;从而提高软件的性能。 本文主要探讨Visual Studio提供的Diagnostic Tools及Performance Profiler工具。 注1&#xff1a;限于笔者研究水平&#xff0…...

两台Linux机器scp不输密码

应用场景&#xff1a; 调试程序时&#xff0c;不想直接在运行节点上编译程序&#xff0c;因为这样做容易泄露代码。因此&#xff0c;在用户win系统终端上配置一个与运行节点环境相同的虚拟机&#xff0c;代码放在虚拟机上编译&#xff0c;然后将编译后的执行文件或者动态库放在…...

InnoDB;MyISAM;MEMORY

MySQL主要存储引擎&#xff1a; MyISAM不支持事务&#xff0c;也不支持外键&#xff0c;但其访问速度快&#xff0c;对事务完整性没有要求InnoDB存储引擎提供了具有提交&#xff0c;回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎&#xff0c;InnoDB的处理效率差一些并…...

研究型论文_CICIDS2017 数据集中基于异常的入侵检测系统的机器学习基准测试(英文论文)

文章目录Benchmarking of Machine Learning for Anomaly Based Intrusion Detection Systems in the CICIDS2017 Dataset论文摘要论文解决的问题1.ANN&#xff08;人工神经网络&#xff09;2.DT&#xff08;决策树&#xff09;3.knn4.NB&#xff08;朴素贝叶斯&#xff09;5.RF…...

Java并发编程实战~生产者-消费者模式

前面我们在《Worker Thread 模式》中讲到&#xff0c;Worker Thread 模式类比的是工厂里车间工人的工作模式。但其实在现实世界&#xff0c;工厂里还有一种流水线的工作模式&#xff0c;类比到编程领域&#xff0c;就是生产者 - 消费者模式。 生产者 - 消费者模式在编程领域的…...

fast无线路由器设置服务器,迅捷(Fast)FW150R无线路由器设置

本文介绍了Fast迅捷FW150R无线路由器的安装和设置方法&#xff0c;FW150R因其出色的性能、配置简单和超高的性价比&#xff0c;深受广大用户的喜欢&#xff1b;不过对于没有网络基础的用户来说&#xff0c;完成FW150R路由器的安装和配置上网参数&#xff0c;任然有一定的困难&a…...

怎么加强网站开发的安全性?

网站是一种项目投资和收益的性价比高较高的物品&#xff0c;可是网站有一个难题&#xff0c;便是安全性&#xff0c;尽管说现如今的网络信息安全相比前些年要好啦许多&#xff0c;可是依然会有一些网站被别人挂暗链&#xff0c;挂木马病毒或是留侧门。今日大家就而言说如何提升…...

我的博客索引

Java学习 【基础】 ★ 解析Java对象的equals()和hashCode()的使用 ★ 关于Java的File.separator ★ HashSet<E>泛型类 ★ LinkedList<E>泛型类 ★ HashMap<K, V>泛型类 华丽的分割线 Android学习 【基础】 ★ 同一文本设置不用颜色样式字…...

教你6招轻松搞定 网站被木马反复篡改

提到网络被恶意篡改&#xff0c;应该让很多做了百度竞价的企业官网怀恨已久了吧&#xff1f;这类行为的目的就是通过这些受害网站获得排名并跳转到违法网站&#xff0c;达到不法的目的。对于企业来说不但损失了百度竞价的费用&#xff0c;还对企业形象造成很大的影响。甚至直接…...

尘埃落定 -- 再见了兄弟们

为什么80%的码农都做不了架构师&#xff1f;>>> 尘埃落定&#xff0c;经过两周的反复的思索&#xff0c;还是决定离开现在的公司重新去发展&#xff0c;回望2010年1月3号入职公司&#xff0c;在这三年内&#xff0c;见证了公司的发展&#xff0c;在这短暂的三年里&…...

王厚祥谈《古诗四帖》基本笔画的书写方法

狂草的笔画与其他书体不同&#xff0c;它的起、行、收不是以一个笔画为单位的&#xff0c;而是以一个书写节奏为单位。《古诗四帖》作为狂草作品&#xff0c;连绵书写是其最为明显的特征。连绵书写产生的结果是&#xff0c;一条线可能写一个字&#xff0c;也可能写几个字。在这…...

算法导论第三版 16.1-5习题答案

16.1-5 这题实际是带权的活动求取最大权重的活动选择问题&#xff0c;使用动态规划求解。如果有心学好的动态规划的同学可以去 “ B站上搜 ’ 动态规划&#xff08;第1讲&#xff09; ‘&#xff0c;选择作者是&#xff1a;正月点灯笼的视频 ” 看看&#xff0c;他的这个视频讲…...

算法导论第三版第十一章11.1-4

算法导论第三版第十一章11.1-4 我们希望在一个非常大的数组上&#xff0c;通过利用直接寻址的方式来实现一个字典。开始时&#xff0c;该数组中可能包含一些无用信息&#xff0c;但要堆整个数组进行初始化时不太实际的&#xff0c;因为该数组的规模太大。请给出在大数组上实现…...

算法导论第三版 17.1-2习题答案

17.1-2 分析&#xff1a; 如书中所示&#xff0c;increment(A)函数中&#xff0c;A数组来存放二进制&#xff0c;所以increment(A)函数实质是将一个十进制整数用二进制来表示&#xff0c;然后在整数加1的时候&#xff0c;将二进制做相应的变化。 那么decrement(A)就可以知道&am…...

《算法导论》(第3版)第4章练习答案

...

算法导论第22章部分答案

参考https://blog.csdn.net/github_35807147/article/details/79110801 22.1-1 给定有向图的邻接链表&#xff0c;需要多长时间才能计算出每个结点的出度&#xff08;发出的边的条数&#xff09;&#xff1f;给定时间才能计算出每个节点的入度&#xff08;进入的边的条数&…...

《算法导论》第三版第11章 散列表 练习思考题 个人答案

11.1 直接寻址表 11.1-1 解&#xff1a; DIRECT-ADDRESS-FINDMAX(T) for i T.length - 1 to 0if T[i] ! NILreturn T[i]最坏情况O(m)O(m)O(m)。 11.1-2 思路&#xff1a;1代表存在&#xff0c;0代表不存在&#xff1b;插入置位&#xff0c;删除复位。 11.1-3 思路&…...

《算法导论》第三版第10章 基本数据结构 练习思考题 个人答案

10.1 栈和队列 10.1-1 仿照图10-1&#xff0c;画图表示依次执行操作PUSH(S, 4)、PUSH(S, 1)、PUSH(S, 3)、POP(S)、PUSH(S, 8)和POP(S)每一步的结果&#xff0c;栈S初始为空&#xff0c;存储于数组S[1…6]中。 解&#xff1a; 4→41→413→41→418→41 10.1-2 说明如何在一个…...

《算法导论》第三版第7章 快速排序 练习思考题 个人答案

7.1 快速排序的描述 7.1-1 解&#xff1a; 13, 19, 9, 5, 12, 8, 7, 4, 21, 2, 6, 11 9, 19, 13, 5, 12, 8, 7, 4, 21, 2, 6, 11 9, 5, 13, 19, 12, 8, 7, 4, 21, 2, 6, 11 9, 5, 8, 19, 12, 13, 7, 4, 21, 2, 6, 11 9, 5, 8, 7, 12, 13, 19, 4, 21, 2, 6, 11 9, 5, 8, 7, 4,…...

算法导论第三版 第1章习题答案

2020/10/25:初稿 2020/10/28:增加对问题2、问题3、思考题1的求解过程Python代码。 参考文献:https://ita.skanev.com/ 1.The role of Algorithm in Computing 1.1 Algorithms 1.Give a real-world example that requires sorting or a real-world example that requires …...

算法导论(原书第三版)答案与学习笔记(一)

第一章 算法在计算中的作用 本章主要介绍了算法的概念、算法的用途、算法的意义等&#xff0c;并做了后续章节的部分概括。 算法实际上就是对于外界输入进行处理并给出符合预期输出的计算过程&#xff0c;书上的概念是&#xff1a;“对于任何良定义的计算过程&#xff0c;该过…...

算法导论第三版第一章答案

第一章 1-1 1-2 1-3 1-4 1-5 2-1 2-2 2-3 1-1 Give a real-world example that requires sorting or a real-world example that requires computing a convex hull. 给出现实生活中需要排序的一个例子或者现实生活中需要计算凸壳的一个例子 排序的例子有学校里的成绩排名、…...

开源组件| 开源组件调研

Apache Tomcat(web中间件) Apache Httpd(web中间件) Weblgoic(web中间件) Jetty(web中间件) Kafka(消息中间件) RocketMq(消息中间件) RabbitMq(消息中间件) ActiveMq(消息中间件) Redis(缓存中间件) Memcache(缓存中间件) Mongo(非关系型数据库) Mysql(关系型数据库…...

算法导论第三版参考答案

1.1-1 Give a real-world example that requires sorting or a real-world example that requires computing a convex hull. Sorting: browse the price of the restaurants with ascending prices on NTU street.Convex hull: computing the diameter of set of points. 1....

宝塔面板网页访问不了

问题描述 在阿里云服务器上安装宝塔面板&#xff0c;打不开宝塔面板的网页 原因分析&#xff1a; 宝塔面板在服务器已经启动也显示出外部访问和内部访问地址了&#xff0c;输入地址访问不了打不开宝塔面板网页&#xff0c;这是因为我们服务器安全组没有对宝塔面板的端口进行…...

JSP简单实现统计网页访问次数

JSP简单实现统计网页访问次数 需求&#xff1a;统计网页的访问次数 核心思想&#xff1a;利用application对象&#xff0c;将访问次数的信息放入application对象中&#xff0c;每次访问就 1。这里利用了application对象每次只有当应用关闭才被销毁的特性。 核心代码如下&…...

Nginx配置静态网页访问(图文界面)

目录前言正文前言 在本地测试好网站或者项目之后&#xff0c;部署到服务器中进行上线 如果是静态网页可通过部署nginx进行配置 本文主要讲解nginx静态部署项目 在本地测试好之后&#xff0c;将其文件上传到服务器中 &#xff08;博主用的是docusaurus进行搭建的网站&#xff…...

spring mvc 动态添加 RequestMapping

spring mvc 动态添加 RequestMapping 想法总是非常独特&#xff0c;有时候我们想在运行期间动态添加接口&#xff0c;那么就用到了动态添加 RequestMapping了 首先我们得搞清楚 springmvc 请求原理&#xff0c;客户端发起请求&#xff0c;会先去 RequestMappingHandlerMapping …...

Spark优化篇:动态内存管理

Spark内存管理分为静态内存管理和统一内存管理&#xff0c;Spark1.6之前使用的是静态内存管理&#xff0c;Spark1.6之后的版本默认使用的是统一内存管理。 动态内存机制图&#xff1a; 内存估算&#xff1a; Other Memory 自定义数据结构*每个 Executor 核数解&#xff1a…...

thingsboard进行设备数据动态管理

Chaina ThingsBoard 群里不支持无偿教程&#xff0c;但可进行技术交流&#xff1b;不定期有偿分享tb插件或者部件库等等相关教程及程序源码 QQ群QQ号China Thingsboard726442610 Panther 从一位小白走来&#xff0c;虽然现在也还是小白&#xff0c;但是我取之于民&#xff0c…...

05-C语言进阶——动态内存管理

动态内存管理一、为什么要动态内存分配&#xff1f;二、动态内存函数函数介绍2.1malloc2.2 free2.3 calloc2.4 realloc三、常见动态内存错误3.1 对NULL指针的解引用操作3.2 对动态开辟空间的越界访问3.3 对非动态开辟内存使用free释放3.4 使用free释放一块动态开辟内存的一部分…...

操作系统 实验3【动态分区存储管理】

操作系统 实验1【短作业优先调度算法&#xff08;C实现——FCFS\SJF\HRRN&#xff09;】操作系统 实验2【动态高优先权优先调度算法 C实现】操作系统 实验3【动态分区存储管理 Python实现】操作系统 实验4【基本分页存储管理 C实现】目录 一、实验目的&#xff08;目的与任务&…...

动态分区式内存管理(完整代码)

操作系统实验导航 实验一&#xff1a;银行家算法 https://blog.csdn.net/weixin_46291251/article/details/115384510 实验二&#xff1a;多级队列调度和多级反馈队列调度算法 https://blog.csdn.net/weixin_46291251/article/details/115530582 实验三&#xff1a;动态分区式…...

SQL Server服务器级别的动态管理视图

动态管理视图是SQL Server的一个功能&#xff0c;用于提供详细的数据库和系统信息。第一类的DMVs&#xff0c;正如我在第一篇文章“深入了解SQL Server动态管理视图”中所指出的是针对数据库级别的。另一类DMV是针对服务器级别的&#xff0c;返回SQL Server实例及其所在系统的信…...

C++动态内存管理(比较C动态内存管理)

首先我们先了解一下内存&#xff1a; C语言使用malloc/free动态管理内存空间&#xff0c;C引入了new/delete&#xff0c;new[]/delete[]来动态管理内存。 介绍new/delete&#xff0c;new[]/delete[]之前我们先了解一下operator new&#xff0c;operator delete&#xff0c;ope…...

C++模拟动态内存管理

使用链表对进程进行存储&#xff0c;每个节点记录、 下一个进程的占用内存的大小 起始地址 执行时间 下一个进程的地址 随机生成进程&#xff08;空间大小、执行时间&#xff09; 先执行连续内存分配&#xff0c;若内存分配到最后位置&#xff0c;则在之前产生的碎片中找可以容…...

【带你吃透C++】C++动态内存管理

C动态内存管理前言1. C/C内存分布例题理解2.C语言中动态内存管理方式&#xff08; malloc/calloc/realloc和free&#xff09;3.C中动态内存管理方式new和delete操作内置类型new和delete操作自定义类型4.operator new和operator delete函数5.定位new表达式(placement-new)6.内存…...

商鼎云|2022星际文件系统训练营活动回顾

时隔三年&#xff0c;星际文件系统训练营2022再次由星际文件系统社区呈现&#xff0c;活动于10月28日-30日在葡萄牙里斯本举行。 这场为期三天的聚会展示了社区近期的进展&#xff0c;庆祝了社区的成长&#xff0c;并为规划星际文件系统的未来提供了机会。 大约有550名与会人士…...

C++动态链表实现学生信息管理系统

这个是我在大一暑假写的代码&#xff0c;也就刚刚学完了C&#xff0c;所以我会很详细的讲解我的思路和代码&#xff0c;这篇文章应该比较适合和我一样C入门的小白。因为水平有限&#xff0c;所以有很多不足之处&#xff0c;请大家多多指正。 我是用动态链表处理这些学生信息的&…...

springboot整合quartz实现动态任务管理

一&#xff0c;springboot整合quartz实现动态任务管理 近期在学习quartz&#xff0c;自己也动手用springboot和mybatis整合了quartz&#xff0c;实现对任务的动态开启和暂停&#xff0c;恢复和终止。 自己手动封装了一个相当于工具类的方法吧&#xff0c;通过传入任务名&…...

springBoot+springSecurity 动态管理Restful风格权限(三)

上一篇博客 springBootspringSecurity 数据库动态管理用户、角色、权限&#xff08;二&#xff09; 只是实现了用户、角色、权限的动态管理&#xff0c;但是其权限管理是有缺陷的&#xff0c;他不支持restful风格的接口权限管理&#xff0c;因为他无法区分客户端的请求方式。…...

RecyclerView复杂布局动态管理GridLayoutManager

Override public void onAttachedToRecyclerView(final RecyclerView recyclerView) {super.onAttachedToRecyclerView(recyclerView);RecyclerView.LayoutManager manager recyclerView.getLayoutManager();if (manager instanceof GridLayoutManager){final GridLayoutMana...

prometheus配置文件动态管理

Prometheus是一套开源的监控、报警解决方案&#xff0c;是由SoundCloud公司开发的&#xff0c;从 2012 年开始编写代码&#xff0c;再到 2015 年 开源以来&#xff0c;该项目有非常活跃的社区和开发人员&#xff0c;目前在全世界最大的男性交友社区上已经有了1.1w多star&#x…...

C语言进阶——动态内存管理

目录 一、为什么存在内存分配 二、动态内存函数 1、malloc 2、free 3、calloc 4、realloc 三、常见的动态内存错误 1、对NULL指针的解引用操作 2、对动态开辟空间的越界访问 3、使用free释放非动态开辟内存 4、使用free释放一块动态开辟内存的一部分 5、对同一块动…...

SpringBoot 定时任务动态管理通用解决方案

点击关注公众号&#xff0c;利用碎片时间学习一、功能说明SpringBoot的定时任务的加强工具&#xff0c;实现对SpringBoot原生的定时任务进行动态管理,完全兼容原生Scheduled注解,无需对原本的定时任务进行修改二、快速使用具体的功能已经封装成SpringBoot-starter即插即用<d…...

idea中提示cannot run git

问题 右击git bash出现问题后&#xff0c;idea也出现了git 运行错误 追其根本&#xff0c;还是因为删了空文件夹&#xff0c;动了路径。 解决 file——settings——version control——git——修改path 点击test&#xff0c;如果显示ok&#xff0c;就可以了。如果还有问题…...

Git 配置SSH的端口号

多账号的配置的操作请看我的另一篇文章 Git 多账号配置 在同时有多个git账号配置的时候&#xff0c;通常我们都会在~/.ssh文件夹下添加一个config文件&#xff0c;用来配置多个 git &#xff0c;但是因为对 config 文件中的 Host 和 Hostname 理解不深入导致ssh -T gitxxx.com…...

Git Stash详细讲解

一、介绍 git stash这个命令可以将当前的工作状态保存到git栈&#xff0c;在需要的时候再恢复。 二、使用场景 当在一个分支的开发工作未完成&#xff0c;却又要切换到另外一个分支进行开发的时候&#xff0c;可以先将自己写好的代码&#xff0c;储存到 git 栈&#xff0c;进行…...

git amend详解和撤销

git amend 详解和撤销git amend详解git amend 作用git amend如何撤销git amend详解 git amend 作用 git 在现在的开发中使用频繁&#xff0c;解决了很多多人协作问题。今天我们来说说git --amend到底是干啥的。 git --amend简单地来说&#xff0c;可以理解成对最后一次提交做修…...

[附源码]计算机毕业设计SpringBoot心理健康系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…...

附PPT|2020年总结实时数仓最新架构图

1型基于Flink的滴滴实时数仓实践分享嘉宾&#xff1a;潘澄,滴滴基础平台 资深研发工程师分享大纲&#xff1a;整体概况业务实践平台&引擎总结反思未来规划2实时OLAP&#xff0c;从0到1分享嘉宾&#xff1a;高正炎,比特大陆分享大纲&#xff1a;业务背景机遇挑战架构演进架构…...

IM聊项目总结

今天晚上做IM聊项目总结&#xff0c;大家都准备好ppt总结。 我们是第二组总结&#xff0c;在台上讲的不多&#xff0c;因为这一次感悟没有那么多&#xff0c;有的只是经验的积累。 我们小组&#xff0c;出现一些问题是&#xff1a;一个星期的时间&#xff0c;做界面的队员才交界…...

《教务信息管理系统》项目总结

从2018.7.4入职公司实习到现在已经一个多月的时间&#xff0c;这段时间过得很快&#xff0c;每天都很充实&#xff0c;在师父的带领下学习到了很多以前未曾接触过的JAVA框架、编程思想以及编码技巧&#xff0c;更重要的是我在这段时间的学习和尝试过程中找到了自己的定位&#…...

Hbuilder打包成APP流程,以及遇到的坑

1.打包项目 期间遇到的坑&#xff0c;提前说下&#xff0c;避免重复工作。 【因为很多网友说自己打包的APP是白屏&#xff0c;这是需要实名认证才能使用的工具&#xff0c;灰灰产还是用其他的工具吧】 我打包的安卓APP给大家欣赏一下&#xff1a; https://wwttl.lanzout.co…...

android+禁止输入表情,Android禁止输入表情符号的EditText

最近刚做完项目&#xff0c;出了个测试包就开开心心的把项目发给老板测试了老板刚装上就给我批评了一顿&#xff0c;说刚用上就发现一个重大bug&#xff0c;还想不想要工资了我当时心里就想&#xff1a;“sb&#xff0c;不会用吧”。。。。。言归正传&#xff0c;现在很多输入法…...

Python:程序员在每天不同时间发微信消息给女友

用python就可以给女友定时发提示消息了&#xff0c;而且不会漏过每一个关键时刻&#xff0c;每天早上起床、中午吃饭、晚上吃饭、晚上睡觉&#xff0c;都会准时发消息给她了&#xff0c;而且还可以让她学习英语单词哦&#xff01; 欢迎大家加入小编创建的Python行业交流群&…...

程序员自我修养——提问的智慧

提问的智慧 How To Ask Questions The Smart Way 当你拋出一个技术问题时&#xff0c;最终是否能得到有用的回答&#xff0c;往往取决于你所提问和追问的方式。本指南将教你如何正确的提问以获得你满意的答案,教你如何从那些真正懂得你所遇到软件或硬件问题的人取得协助。 本文…...

他想长大后成为一名计算机程序员,你为什么成为一名程序员?

摘要&#xff1a;11)。两个月后&#xff0c;找到了一份工作&#xff0c;起始工资一个月只有1200元&#xff0c;除了每月还800元的培训费&#xff0c;剩下那点钱勉强能糊口。现在回头来看的话&#xff0c;当时完全没必要去培训的。我们毕竟学了两年的Java编程了&#xff0c;SQLS…...

21天打造分布式爬虫-多线程下载表情包(五)

5.1.threading模块 简单使用 import threading,timedef coding():for x in range(3):print(正在写代码%s%x)time.sleep(2)def drawing():for x in range(3):print(正在画画%s%x)time.sleep(2)def main():t1 threading.Thread(targetcoding)t2 threading.Thread(targetdrawing…...

用python爬取 20w 表情包之后,感叹我族人是多么强大!

这样的 有一次想要斗图 配图 就在网上搜索表情包 然后发现了一个表情巨多的网站 不小心动起了邪念 产生了兴趣 那就 把它们存下来吧 用 requests 请求了一下 发现这个网站没有做反爬 发现这里有 4k 的页面 简单的切换一下页面 可以发现 第一页的链接是这样的 https…...

抖音快手微信QQ壁纸小程序表情包小程序流量主广告源码搭建详细教程

​ 切记&#xff01;不要自作聪明&#xff01; 请仔细通读本文档再安装&#xff0c;不然报错会让你抓狂&#xff01;即使你对PHP非常熟悉&#xff0c;对uniapp非常熟悉&#xff0c;也必须通读文档&#xff0c;严格遵守文档的所写的&#xff0c;不然100%有报错&#xff0c;绝无…...

Python开发个人专属的表情包网站

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 “表情包”是一种利用图片来表示感情的一种方式。表情包是在社交软件活跃之后&#xff0c;形成的一种流行文化&#xff0c;表情包流行于互联网上面…...

用Matplotlib,妈妈再也不担心我没有表情包斗图了

全文共3003字&#xff0c;预计学习时长6分钟 Netflix、Instagram、YouTube、电影还有电视剧&#xff0c;这些都有什么共同之处呢&#xff1f;它们都是视觉媒介&#xff0c;吸引着形形色色的观众。 今时今日&#xff0c;大部分人逐渐放弃读书、听书的方式&#xff0c;而选择观看…...

第一个就跪了!程序员专属表情包汇总之开发篇

需求审评会议进行中开发阶段进行中产品经理提需求改动中遇到BUG进行中项目上线精彩回顾 点蓝字即可 ♡ 女生节的一个分号&#xff0c;引发程序员的疯狂热议♡ 程序员听到bug后的N种反应…♡ 程序员相声&#xff1a;增删改查♡ 女程序媛与男程序猿的一天♡ 老说程序员如何看产…...

程序员的专属表情包,看了吓一跳

往运行服务器上直接上传文件时程序员的样子 当凌晨3点还在修改bug时程序员的样子 当发现没有按CTRL-S就关闭了文件时程序员的样子 当使用正则表达式返回了想要的结果时程序员的样子 第一次使用CSS美化页面时的效果 当所有人都在办公室挥汗如雨的加班而你却能安然的回家度周末时…...

描述程序员日常状态的表情包,一起来开心一下

往运行服务器上直接上传文件时程序员的样子 当凌晨3点还在修改bug时程序员的样子 当发现没有按CTRL-S就关闭了文件时程序员的样子 当使用正则表达式返回了想要的结果时程序员的样子 第一次使用CSS美化页面时的效果 当所有人都在办公室挥汗如雨的加班而你却能安然的回家度周末时…...

学习网

文档网 BootStrap使用手册 前端网 菜鸟教程AngularJS 博客园 Linux安装 牛客网 视频网站 北京大学公开课网站 爱课程网 视频&#xff1a;五分钟学习Python爬数据 B站...

[逆向][Writeup]ISG2015 flagfinder - .NET程序逆向

这个题目同样是一道.NET的逆向题&#xff0c;.NET的逆向方法在之前的博文中已经介绍过&#xff0c;这里不做重复的说明。本题的源程序可以在我的github上下载&#xff1a;https://github.com/gsharpsh00ter/reverse 0x01 逆向 flagfinder为.NET编译的PE文件&#xff0c;用dnSpy…...

ISG pwnme100 poc 学习

ISG pwnme100 poc 学习 背景 最近在学习ISG2015比赛的 FlappyPig 的writeup&#xff08;http://bobao.360.cn/learning/detail/702.html&#xff09;&#xff0c;对其中的pwn比较感兴趣&#xff0c;因此查阅了部分资料后对poc进行了研究。 其中在csdn上海枫的专栏&#xff0…...

关于Juniper SSG或ISG系列防火墙配置NAT映射(VIP)时的 Server Auto Enable参数问题

记录一下Juniper SSG或者ISG 系列防火墙上配置一对多NAT映射 VIP&#xff08;Viritual Internet Protocol&#xff09;时碰到的一个特殊的问题&#xff0c; 就是在内部服务器ICMP报文被阻断的情况下&#xff0c;启用VIP的Server Auto Enable 功能引起的NAT映射失效问题&#xf…...

googe isg理解

如何生成汇编指令流增加directed stream主要指令流insert_jump_instr~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~栈的长度这里注意一下&#xff0c;栈的长度&#xff0c;是每一次都会随机在这个范围&#xff0c;所以每一次都会减去随机生成的栈的长度&#xff0c;留下的空…...

ISG2015

一天的成果。 Re300 是男人就下一百层 一个64位的程序&#xff0c;放到IDA里的话&#xff0c;IDA就会分析不动&#xff0c;这样就把人给下着了。objdump –d re300 > output&#xff0c;这样拿到汇编代码&#xff0c;大概在120M左右&#xff0c;代码量很大。 拿到vim里分析&…...

稿最全,面中率最高,C++经典面试题(八)

28题&#xff1a;内存的分配方式有几种? 【参考答案】 一、从静态存储区域分配。内存在程序编译的时候就已经分配好&#xff0c;这块内存在程序的整个运行期间都存在。例如全局变量。 二、在栈上创建。在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建&a…...

ISG 2018 Web Writeup

作者&#xff1a;agetflag 原文来自&#xff1a;ISG 2018 Web Writeup ISG 2018 Web Writeup CTF萌新&#xff0c;所以写的比较基础&#xff0c;请大佬们勿喷&#xff0c;比赛本身的Web题也不难 calc 首先看到题目后&#xff0c;在输入框中测试了一下&#xff0c;发现可以被执行…...

ISG

题目链接 https://github.com/tower111/software junkcode 查看check函数 pwndbg> disassemble check Dump of assembler code for function check:0x080484fb <0>: push ebp0x080484fc <1>: mov ebp,esp0x080484fe <3>: sub esp,0x180x08048…...

ISG-1000网络安全配置

Juniper网络公司集成式安全网关&#xff08;ISG&#xff09;是一种专用安全解决方案&#xff0c;它采用了第四代安全ASIC GigaScreen3&#xff0c;以及高性能微处理器&#xff0c;能够提供无与伦比的防火墙和性能。Juniper网络公司 ISG 1000 和 ISG 2000 非常适合因需要运行VoI…...

动态AOP 自动以标签 源码解析

Spring AOP 是一个简化版的AOP 实现&#xff0c;并没有提供完整的AOP功能&#xff0c;通常情况下&#xff0c;Spring AOP 是能够满足我们日常开发过程中的大多数场景的&#xff0c;但在某些情况下&#xff0c; 我们可能需要使用Spring AOP 范围外的某些AOP 功能。 AspectJ是一…...

主题:免费的论文查重网站

正文&#xff1a;推荐一个免费的论文查重网站PaperFree&#xff1a;http://www.paperfree.cn 活动内容&#xff1a;把上述的主题和正文发布到高校bbs或者科研论坛&#xff0c;然后提交链接&#xff0c; 待系统确认后&#xff0c;即可获得2000字检测权。...

本科论文范文 计算机,《计算机本科论文范文》.doc

摘 要随着Internet技术的快速发展&#xff0c;人与人之间交流方式逐渐增多。为了方便人们在某一专业领域探讨问题和发表意见&#xff0c;在线论坛为年轻人尤其是大学生提供了一个交流的平台。在论坛上&#xff0c;人们可以对某一领域提出自己遇到的问题&#xff0c;即发表某一主…...

计算机专业主题,计算机专业毕业论文可以选择什么样的主题

技校网专门为您推荐的类似问题答案问题1&#xff1a;计算机专业毕业论文题目本科的吗? 这里有些题目.都是毕业论文选题.供你参考: 学生成绩管理系统 VB做的学生选课系统代码 XX在线招聘网 物资管理系统 网上图书选购系统 基于Web的网上图书交易系统 图书馆光盘管理系统 教学管…...

关于爬取arXiv论坛论文并按照论文主题进行分类的办法

文章目录关于爬取arXiv论坛论文并按照论文主题进行分类的办法第一&#xff1a;从arXiv爬取论文。第二&#xff1a;将爬取的论文按照论文主题进行分类关于爬取arXiv论坛论文并按照论文主题进行分类的办法 获得不同论文主题的arXiv论文标题&#xff0c;并存在自己电脑的一个文件…...

node_exporter安装教程

一、下载node_exporter二进制文件压缩包 1、在节点上执行命令下载 wget "https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz" 2、解压压缩包 [rootmaster node_exporter]# ls node_exporter-1.5.0…...

论文宝典(二)

这篇论文根据论文写作这门课总结而来&#xff0c;更适用于计算机学科的朋友学习和借鉴。当然&#xff0c;某些内容在各个学科间是共通的&#xff0c;仁者见仁智者见智&#xff0c;希望大家都有收获。            文章目录一、如何写第一篇论文二、论文中各部分注意事…...

Flutter 安装踩坑记录 HTTP host https://pub.dev/ is not reachable.

Flutter安装踩坑记录安装Flutter SDK参考链接安装Flutter SDK Windows安装 flutter官网下载flutter sdk包 2.解压到C盘除去program file相关的目录&#xff08;最好自己创建一个新的目录&#xff0c;因为放在program file等目录需要特殊的权限&#xff0c;会出现问题&#xf…...

美女主播即将失业?韩国首个AI女主播“金柱夏”诞生

韩国首个人工智能(AI)女主播来了&#xff1f;据外媒报导&#xff0c;韩国MBN电视台推出韩国首位AI主播&#xff0c;并顺利播报了当天的主要新闻和若干条快讯。许多网友看完新闻后感慨&#xff0c;「能以假乱真了」。 据介绍&#xff0c;这位AI女主播以该电视台主持人金柱夏为原…...

在网上看别人去韩国的日记

https://bbs.hupu.com/17335264.html 去了趟首尔&#xff0c;说一下自己的主观感受。 由 yo655321 发表在虎扑步行街步行街主干道 https://bbs.hupu.com/bxj 行程朋友帮忙在天津报的自由行团&#xff0c;五天四晚一下午免税店&#xff0c;四天自由行&#xff0c;住五花酒店&am…...

WinKtv中文版介绍

登录WinKtv网络电台需要韩国的身份证号&#xff0c;手机号&#xff0c;信用卡号&#xff0c;并且需要充值成为VIP才能一睹美女主播的芳容。 为了满足国内大陆网友的愿望&#xff0c;winktv特开发了WinKTV中文版客户端。如果已有WinKtv账号可以直接登录&#xff01;没有账号也不…...

韩国两大火暴美女迪厅拼舞 精彩视频

...

真美女

人大mm...

Python爬虫 —— 抓取美女图片(Scrapy篇)

杂谈&#xff1a; 之前用requests模块爬取了美女图片&#xff0c;今天用scrapy框架实现了一遍。 &#xff08;图片尺度确实大了点&#xff0c;但老衲早已无恋红尘&#xff0c;权当观赏哈哈哈&#xff09; Item: # -*- coding: utf-8 -*-# Define here the models for your scra…...

韩国美女的16种味道

飘逸——李美妍 有媒体预测2004年韩国演艺圈也将会是女人的天下&#xff0c;而兼具气质与美貌、演技的李美妍更是直接被点为2004广告最受注目的明星。 俏皮——金喜善 韩剧的受欢迎&#xff0c;连带韩国明星也在中国快速窜红&#xff0c;金喜善就是其中一位。 说到金喜善&am…...

韩国美女斗舞 - Qzone日志

|返回日志列表 转载自 516501381 2009年07月27日 07:24 阅读(loading...) 评论(0) 分类&#xff1a;经典视频 |返回日志列表...

韩国美女黑客是怎样的一种存在?

一群吹弹可破的韩国妹子&#xff0c;围在一起&#xff0c;一边吃着零食一边敲打键盘。时而柳眉紧锁&#xff0c;屏气凝声;时而窃窃私语&#xff0c;宛若莺啼。真是一幅让人欲罢不能的图景。 这当然不是傻白甜妹子在网购&#xff0c;而是网络战场上真刀真枪的捉对厮杀。 这就是在…...

公车上遇到韩国美女

在市政府那站上来一个美女,一上车她眼镜上霜,看的不是太清楚,走路还晃晃悠悠的,后边还跟着一个男的,不知道是不是她男朋友,因为说的是韩国话,所以不知道她俩是同学还是什么关系.看面相是个混血儿,气质出众...后悔没带手机......

再见阿里云,你好腾讯云

阿里云的那些坑 到今日为之&#xff0c;使用阿里云的时间刚好一年&#xff0c;用了几台服务器&#xff0c;应该说&#xff0c;阿里云还是不错的&#xff0c;但就是觉得累&#xff0c;用户体验太差&#xff0c;文档就更不用说了。 混乱的产品和解决方案 一直以来&#xff0c;…...

使用阿里云OSS实现文件上传

概述场景 文件上传&#xff0c;是程序开发中必须会使用到的一个功能&#xff0c;比如&#xff1a; 添加商品&#xff0c;用户头像&#xff0c;文章封面等需求富文本编辑&#xff08;插件文件上传&#xff09; 文件上传的原理是什么&#xff1f; 我们为什么要实现文件上传&a…...

【阿里云】 RDS MySQL入门学习笔记

打算把本地SQL Server内的数据都上传到云数据库中。本来是想申请一个RDS SQL Server&#xff0c;结果网上报价普遍比RDS MySQL贵&#xff0c;没办法选择了后者&#xff0c;虽然我没有使用过MySQL&#xff0c;当然前者也不是很熟。在阿里云和腾讯云之间选择了前者&#xff0c;原…...

阿里云ubuntu利用flask搭建网站问题记录

总目录&#xff1a;Linux操作整理 阿里云ubuntu利用flask搭建网站问题记录总思路Virtualenv安装和使用Virtualenv报错及解决方案最后一个运行的坑搭建成功# flask测试代码 from flask import Flaskapp Flask(__name__)app.route(/) def index():return hello sayasora!if __n…...

阿里云服务器怎么样?全方位评测

最近有好几个做网站的朋友跑来问我在用的阿里云主机服务器怎么样&#xff0c;说的多了&#xff0c;也就想专门写一篇文章来说说我这半年来的感受&#xff0c;供大家参考。 阿里云 我是大概去年一月份把我的网站迁移到了阿里云&#xff0c;差不多刚好半年的样子&#xff0c;虽然…...

阿里云开发板HaaS510解析JSON数据

摘要&#xff1a;JSON是JavaScript的原生数据格式&#xff0c;因此在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。HaaS系列硬件内置了JavaScript引擎&#xff0c;按道理来说&#xff0c;解析JSON数据格式也应该是小菜一碟。 实验目的&#xff1a;通过haas510解…...

阿里云CentOS7 64位下安装Docker

文章目录1. 引言2. 安装步骤2.1 确定系统是CentOS7及以上版本2.2 yum安装gcc相关2.3 卸载旧版本2.4 安装需要的软件包2.5 设置stable镜像仓库2.6 更新yum软件包索引2.7 安装Docker CE2.8 启动Docker2.9 测试2.10 配置阿里云镜像加速2.11 卸载1. 引言 安装Docker的具体步骤&…...

阿里云是什么,与亚马逊的云服务相比较,处于什么位置?

阿里云ECS提供按需购买和包月购买两种。这里咱们讨论包月购买的情况。包月购买时&#xff0c;我们可以选择相应的配置&#xff1a;CPU、内存、硬盘、带宽。 价格分析 CPU&#xff0c;约48元1核 内存&#xff0c;18元512MB 硬盘最便宜&#xff0c;3毛钱1G 带宽&#xff0c;25块…...

mysql阿里云不显示中文乱码_阿里云Centos7的部署springboot后mysql中文问号乱码

在本地测试时候没有乱码, 但部署线上后在数据交互的时候乱码了如图:查看数据库分析:利用IDEA编写项目时&#xff0c;IDEA本身会将其转码为UTF-8&#xff0c;故本地写代码时不会乱码查看本地MySQL数据库字符集, utf8没什么问题, 并且在本地数据交互的时候没有乱码一旦部署到服务…...

阿里云ECS服务器基于Docker+WordPress搭建个人博客网站

详细介绍了阿里云ECS服务器基于DockerWordPress搭建个人博客网站的步骤&#xff01; 相比于其他复杂的方式&#xff0c;基于docker搭建wordpress个人博客显得非常的简单&#xff01;   在此之前&#xff0c;我们要有一台阿里云ECS服务器&#xff1a;第一次登陆阿里云ECS云服务…...

阿里云-搭建个人博客网站

欢迎回来&#xff0c;我是饕餮&#xff0c;或者叫我offer&#xff0c;当然也可以叫我的英文名字-gluttony&#xff01; hello&#xff0c;大家好&#xff01;我又回来了&#xff0c;刚刚搞定机器学习学习赛&#xff0c;我想做我之前一直想做的个人博客网站了&#xff0c;那么让…...

minikube 结合阿里云镜像搭建本地开发测试环境

作者&#xff1a;HaoKe 作者地址: http://github.com/KeHaohaoke 我的同事Daniel Hu写了一篇英文的博客&#xff0c;关于如何使用 minikube 搭建本地的 k8s 环境的。 我很喜欢这篇文章&#xff0c;链接在这里&#xff1a;minikube-k8s。 该文章和本文并不是一对一的翻译的。…...

基于java SSM校园兼职平台系统设计和实现

基于java SSM校园兼职平台系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 …...

Spark——JDBC操作MySQL

文章目录JDBC操作MySQLJDBC读取数据方式JDBC读取MySQL数据JDBC操作MySQL 在实际的企业级开发环境中&#xff0c;如果数据规模特S别大&#xff0c;此时采用传统的SQL语句去处理的话一般需要分成很多批次处理&#xff0c;而且很容易造成数据库服务宕机&#xff0c;且实际的处理过…...

【GD32F427开发板试用】三、USB转CAN功能开发与试用总结

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;chenjie 【GD32F427开发板试用】一、环境搭建与freertos移植 【GD32F427开发板试用】二、USB库移植与双USB CDC-ACM功能开发 【GD32F427开发板…...

ChatGPT API调用python和脚本实现

Chat GPT 由于其独特、近乎准确且类似人类的响应&#xff0c;如今在互联网上引起了过多的讨论。本文讨论如何通过 Python 代码连接到 Chat GPT API。 如果需要用website访问chatGPT&#xff0c; 请参考保姆级教程 火爆全球的网红OpenAI ChatGPT注册教程 文章目录第 1 步&#x…...

迪赛智慧数——折线图(平滑折线图):近10年国内旅游市场规模

效果图经过全面开放和“阳康”&#xff0c;旅游市场已经开始复苏。现在恰逢寒冬&#xff0c;海南等国内许多旅游胜地成为热门旅游目的地&#xff0c;泰国等国际旅游频频上热搜。2022年&#xff0c;随着我国国内疫情发展形势的好转&#xff0c;旅游产品市场经济呈现一个积极复苏…...

Hive(2):Apache Hive 安装部署

1 元数据相关名词 1.1 Metadata Metadata即元数据。元数据包含用Hive创建的database、table、表的位置、类型、属性&#xff0c;字段顺序类型等元信息。元数据存储在关系型数据库中。如hive内置的Derby、或者第三方如MySQL等。 1.2 Metastore Metastore即元数据服务。Metast…...

区块链究竟是怎么形成的?你明白了吗?

区块链到底是啥&#xff1f;首先&#xff0c;不要把区块链想的很复杂。其实&#xff0c;区块链很简单&#xff0c;它本质上就是一套数据库存储系统&#xff0c;该系统分布在全球各地&#xff0c;并且能够协同运转。不过&#xff0c;与其他数据库存储系统不一样的是&#xff0c;…...

说话人识别概述

又称为话者识别&#xff0c;通过对说话人语音信号的分析处理&#xff0c;自动确认是别人是否在所记录的话者集合中&#xff0c;以及进一步确认说话人是谁。 和语音识别技术很相似&#xff0c;都是在提取原始语音信号中某些特征参数的基础上&#xff0c;建立相应的参考模板或模型…...

紫边形成原因理解

有人解释紫边&#xff1a;https://blog.csdn.net/xrdsjb001/article/details/73130675 衍射抵马赛克&#xff0c;我不是完全同意。 广义上紫边不是一种&#xff0c;而是有好几种类型的&#xff0c;一种是这样的&#xff1a;&#xff08;这来源网络&#xff09; 还有一种是这样…...

深度了解js闭包形成及其原理

闭包 一说到这个问题&#xff0c;很多人第一印象就是函数里返回一个函数&#xff0c;就是闭包。闭包也是被大家广泛讨论的一个问题&#xff0c;但是很多人都是只知其然&#xff0c;不知其所以然。 那么闭包到底是什么&#xff1f;我们放到后面来回答。 作用域与作用域链 作用域…...

一个人的对世界的认识是怎么形成的

一、外界事物的存在形式。 外界是怎么样的&#xff0c;一个人有过怎样的经历 就会对这个世界有怎么样看法。我们大脑中的知识到底是什么&#xff1f;在我看来是对这个世界的认识。 我们看到这个世界样子&#xff0c;也就形成了自己对世界的认识。 尅这样说&#xff0c;是这个…...

OAK-D树莓派点云项目【附详细代码】

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是助手君。 本文来自IBM工程师Richard Hopkins的教程&#xff0c;由OAK中国整理更新。 Part 1 低…...

论文翻译:Real-Time High-Resolution Background Matting

论文地址&#xff1a;https://arxiv.org/pdf/2012.07810.pdf 文中所有图片与表格统一移动至了文末 实时高分辨率背景抠图 摘要 我们介绍了一种实时的、高分辨率的背景替换技术。使用现代GPU&#xff0c;在4K分辨率下&#xff0c;该技术的可以以30fps运行&#xff1b;在HD分辨…...

FFplay文档解读-44-视频过滤器十九

29.180 uspp 应用超slow/simple的后处理过滤器&#xff0c;在多个&#xff08;或‘quality’level 8 - all的情况&#xff09;位移的情况下压缩和解压缩图像并平均结果。 这与spp行为的不同之处在于uspp实际上使用libavcodec Snow对每个案例进行编码和解码&#xff0c;而spp使…...

【进击的算法】动态规划——01背包

&#x1f37f;本文主题&#xff1a;动态规划 01背包 背包问题 C/C 算法 &#x1f388;更多算法&#xff1a;基础回溯算法 基础动态规划 &#x1f495;我的主页&#xff1a;蓝色学者的主页 文章目录一、前言二、概念✔️动态规划概念✔️01背包的概念三、问题描述与讲解&#x1…...

Pytorch 卷积核填充和步幅、多输入多输出通道、池化层

Pytorch 卷积层里的填充和步幅 0. 环境介绍 环境使用 Kaggle 里免费建立的 Notebook 教程使用李沐老师的 动手学深度学习 网站和 视频讲解 小技巧&#xff1a;当遇到函数看不懂的时候可以按 ShiftTab 查看函数详解。 1. 填充&#xff08;padding&#xff09;和步幅&#x…...

图像质量评估(7) -- 图像稳定性(Image Stabilization)

图像稳定性&#xff08;Image Stabilization&#xff09;指的是相机在捕获图像过程中&#xff0c;相机内的光学系统有多稳定。如果相机不稳定&#xff0c;那么图像看起来会模糊。造成图像模糊的原因有很多&#xff0c;例如弱光环境&#xff0c;使用了长焦距&#xff0c;以及手持…...

小户型也能装中央空调吗?

房价的不断上涨&#xff0c;让越来越多想要定居大城市的小年轻们将目光转向了小户型&#xff0c;虽然面积较小&#xff0c;但是打扫起来方便快捷&#xff0c;能帮助忙碌的打工人们节省不少时间成本&#xff0c;而且对注重生活质量的人来说&#xff0c;尽管小户型&#xff0c;只…...

思维还停留在只有开发者才能学习Python?你真的与现代社会脱节了

不做程序员学Python有什么用&#xff1f;用处当然是十分广泛的&#xff0c;如果你的思维还停留在只有编程开发者才能学习Python&#xff0c;那就真的与现代社会脱节了。编程更像是一种工具&#xff0c;一种技能&#xff0c;而不仅仅只是一个职业岗位。尤其是以其高效简洁&#…...

一个用互联网思维颠覆租房业的奇葩案例

用微创新的角度去看&#xff0c;租房绝对是一个国民性痛点。以至于不少很火的年轻题材都是以合租为背景&#xff0c;比如《爱情公寓》。很多年轻人都有过租房的痛苦经历&#xff0c;但目前很多产品都是解决了信息流&#xff0c;没有介入服务流。 最近看到一个奇葩案例&#xff…...

女研究生做“思维导图”与男友吵架!堪称吵架届的“内卷之王”....

来源&#xff1a;募格学术&#xff08;ID&#xff1a;mugexueshu&#xff09;研究生吵起架来的“职业病”有哪些&#xff1f;近日&#xff0c;湖南长沙一女研究生因为“画思维导图与男友吵架”的视频火了。网友们纷纷表示&#xff0c;“原来女生吵架都是认真的。”9日晚&#x…...