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

营销型公司网站建设/百度一下你就知道 官网

营销型公司网站建设,百度一下你就知道 官网,wordpress 推荐位调用,清远做网站的有哪些为了方便后续练习的展开,我们尝试自己创建一个数据生成器,用于自主生成一些符合某些条件、具备某些特性的数据集。 导入相关的包 # 随机模块 import random# 绘图模块 import matplotlib as mpl import matplotlib.pyplot as plt# 导入numpy import nu…

为了方便后续练习的展开,我们尝试自己创建一个数据生成器,用于自主生成一些符合某些条件、具备某些特性的数据集。

导入相关的包

# 随机模块
import random# 绘图模块
import matplotlib as mpl
import matplotlib.pyplot as plt# 导入numpy
import numpy as np# 导入pytorch
import torch
from torch import nn, optim
import torch.nn.functional as F
from torch.utils.data import Dataset, TensorDataset, DataLoader

以上均为此前用到的包,其它新的包将在使用时再进行导入及介绍。


46 回归类数据集创建方法

46.1 手动生成数据

回归类模型的数据,特征和标签都是连续性数值。

正常情况,应该是对于连续型数值标签的预测,我们采用回归类模型,此处因为先生成数据后进行建模,因此我们称可用于回归模型训练的数据为回归类模型数据,分类模型数据亦然。


数据生成

生成两个特征、存在偏差,自变量和因变量存在线性关系的数据集

num_inputs = 2		# 两个特征
num_examples = 100	# 总共一千条数据

然后通过线性方程,确定自变量和因变量的真实关系

torch.manual_seed(420)		# 设置随机数种子# 线性方程系数
w_true = torch.tensor([2, -1]).reshape(2, 1)
b_true = torch.tensor(1.)# 特征和标签取值
features = torch.randn(num_examples, num_inputs)
labels_true = torch.mm(features, w_true) + b_true
labels = labels_true + torch.randn(size = labels_true.shape) * 0.01

此处设置所有的数据都是浮点型。

注意,此时labels_truefeatures满足严格意义上的线性方程关系
y = 2 x 1 − x 2 + 1 y = 2x_1-x_2+1 y=2x1x2+1
但我们实际使用的标签labels,则是在labels_true的基础上增添了一个扰动项,torch.randn(size = labels_true.shape) * 0.01,这其实也符合我们一般获取数据的情况:真实客观世界或许存在某个规律,但我们搜集到的数据往往会因为各种原因存在一定的误差,无法完全描述真实世界的客观规律,这其实也是模型误差的来源之一(另一个误差来源是模型本身捕获规律的能力)。这其中, y = 2 x 1 − x 2 + 1 y=2x_1-x_2+1 y=2x1x2+1相当于我们从上帝视角创建的数据真实服从的规律,而扰动项,则相当于人为创造的获取数据时的误差。

这种按照某种规律生成数据、又 人为添加扰动项 的创建数据的方法,也是数学领域创建数据的一般方法。


数据探索

features[: 10]
# output :
tensor([[-0.0070,  0.5044],[ 0.6704, -0.3829],[ 0.0302,  0.3826],[-0.5131,  0.7104],[ 1.8092,  0.4352],[ 2.6453,  0.2654],[ 0.9235, -0.4376],[ 2.0182,  1.3498],[-0.2523, -0.0355],[-0.0646, -0.5918]])
labels[: 10]
# output :
tensor([[ 0.4735],[ 2.7285],[ 0.6764],[-0.7537],[ 4.1722],[ 6.0236],[ 3.2936],[ 3.6706],[ 0.5282],[ 1.4557]])
plt.subplot(121)
plt.scatter(features[:, 0], labels)		# 第一个特征和标签的关系
plt.subplot(122)
plt.scatter(features[:, 1], labels)		# 第二个特征和标签的关系

在这里插入图片描述

不难看出,两个特征和标签都存在一定的线性关系,并且跟特征的系数绝对值有很大关系。当然,若要增加线性模型的建模难度,可以增加扰动项的数值比例,从而削弱线性关系。

# 设置随机数种子
torch.manual_seed(420)# 修改因变量
labels1 = labels_true + torch.randn(size = labels_true) * 2# 可视化展示# 扰动较小的情况
plt.subplot(221)
plt.scatter(features[:, 0], labels)             # 第一个特征和标签的关系
plt.subplot(222)
plt.plot(features[:, 1], labels, 'ro')          # 第二个特征和标签的关系# 扰动较大的情况
plt.subplot(223)
plt.scatter(features[:, 0], labels1)             # 第一个特征和标签的关系
plt.subplot(224)
plt.plot(features[:, 1], labels1, 'yo')          # 第二个特征和标签的关系

在这里插入图片描述

当然,我们也能生成非线性关系的数据集,此处我们创建满足 y = x 2 + 1 y=x^2+1 y=x2+1规律的数据集。

# 设置随机数种子
torch.manual_seed(420)   num_inputs = 2               # 两个特征
num_examples = 1000          # 总共一千条数据# 线性方程系数
w_true = torch.tensor(2.)
b_true = torch.tensor(1.)# 特征和标签取值
features = torch.randn(num_examples, num_inputs)
labels_true = torch.pow(features, 2) * w_true + b_true
labels = labels_true + torch.randn(size = labels_true.shape) * 0.1# 可视化展示
plt.scatter(features, labels)

在这里插入图片描述


46.2 创建生成回归类数据的函数

为了方便后续使用,我们将上述过程封装在一个函数内

定义创建函数

def tensorGenReg(num_examples = 1000, w = [2, -1, 1], bias = True, deg = 1):"""回归类数据集创建函数。:param num_examples: 创建数据集的数据量:param w: 包括截距的(如果存在)特征系数向量:param bias:是否需要截距:param delta:扰动项取值:param deg:方程次数:return: 生成的特征张量和标签张量"""if bias == True:num_inputs = len(w) - 1features_true = torch.randn(num_examples, num_inputs)w_true = torch.tensor(w[:-1]).reshape(-1, 1).float()b_true = torch.tensor(w[-1]).float()if num_inputs == 1:# 若输入特征只有1个,则不能使用矩阵乘法labels_true = torch.pow(features_true, deg) * w_true + n_trueelse:labels_true = torch.mm(torch.pow(features_true, deg), w_true) + b_true# 在特征张量的最后添加一列全是1的列features = torch.cat((features_true,  torch.ones(len(features_true), 1)), 1)else:num_inputs = len(w)features = torch.randn(num_examples, num_inputs)w_true = torch.tensor(w).reshape(-1, 1).float()if num_inputs == 1:labels_true = torch.pow(features, deg) * w_trueelse:labels_true = torch.mm(torch.pow(features, deg), w_true)labels = labels_true + torch.randn(size = labels_true.shape) * deltareturn features, labels   

测试函数性能

首先查看扰动项较小的时候的数据情况

# 设置随机数种子
torch.manual_seed(420)   # 扰动项取值为0.01
f, l = tensorGenReg(delta = 0.01)
f
# output :
tensor([[-0.0070,  0.5044,  1.0000],[ 0.6704, -0.3829,  1.0000],[ 0.0302,  0.3826,  1.0000],...,[-0.9164, -0.6087,  1.0000],[ 0.7815,  1.2865,  1.0000],[ 1.4819,  1.1390,  1.0000]])
# 绘制图像查看结果
plt.subplot(223)
plt.scatter(f[:, 0], l)             # 第一个特征和标签的关系
plt.subplot(224)
plt.scatter(f[:, 1], l)          # 第二个特征和标签的关系

在这里插入图片描述

然后查看扰动项较大时数据情况

# 设置随机数种子
torch.manual_seed(420)   # 扰动项取值为2
f, l = tensorGenReg(delta = 2)# 绘制图像查看结果
plt.subplot(223)
plt.scatter(f[:, 0], l)             # 第一个特征和标签的关系
plt.subplot(224)
plt.scatter(f[:, 1], l)          # 第二个特征和标签的关系

在这里插入图片描述

当特征和标签满足二阶关系时候数据表现

# 设置随机数种子
torch.manual_seed(420)   # 2阶方程
f, l = tensorGenReg(deg = 2)# 绘制图像查看结果
plt.subplot(223)
plt.scatter(f[:, 0], l)             # 第一个特征和标签的关系
plt.subplot(224)
plt.scatter(f[:, 1], l)          # 第二个特征和标签的关系

在这里插入图片描述

当只有一个特征时数据表现

# 设置随机数种子
torch.manual_seed(420)   # 2阶方程
f, l = tensorGenReg(w = [1], deg = 2, bias = False)
plt.scatter(f, l)

在这里插入图片描述


47 分类数据集创建方法

和回归模型的数据不同,分类模型数据的标签是离散值。

47.1 手动创建分类数据集


数据生成

在尝试创建分类数据集之前,首先回顾torch.normal创建某种服从正态分布的随机数的创建方法。

torch.randn(4, 2)
# output :
tensor([[ 1.4000,  0.3924],[-0.0695, -1.7610],[ 0.3227,  1.7285],[-0.1107, -1.6273]])
torch.normal(4, 2, size=(10,2))
# output :
tensor([[4.8092, 0.9773],[4.4092, 3.3987],[1.7446, 6.2281],[3.0095, 4.2286],[7.8873, 6.5354],[3.9286, 4.0315],[2.0309, 4.5259],[3.6491, 0.7394],[3.6549, 5.4767],[8.5935, 3.0440]])

接下来尝试创建一个拥有两个特征的三分类的数据集,每个类别包含500条数据,并且第一个类别的两个特征都服从均值为4、标准差为2的正态分布,第二个类别的两个特征都服从均值为-2、标准差为2的正态分布,第三个类别的两个特征都服从均值为-6、标准差为2的正态分布,创建过程如下:

# 设置随机数种子
torch.manual_seed(420)# 创建初始标记值
num_inputs = 2
num_examples = 500# 创建自变量簇
data0 = torch.normal(4, 2, size=(num_examples, num_inputs))
data1 = torch.normal(-2, 2, size=(num_examples, num_inputs))
data2 = torch.normal(-6, 2, size=(num_examples, num_inputs))# 创建标签
label0 = torch.zeros(500)
label1 = torch.ones(500)
label2 = torch.full_like(label1, 2)# 合并生成最终数据
features = torch.cat((data0, data1, data2)).float()
labels = torch.cat((label0, label1, label2)).long().reshape(-1, 1)

数据探索

features[: 10]
# output :
tensor([[3.9859, 5.0089],[5.3407, 3.2343],[4.0605, 4.7653],[2.9738, 5.4208],[7.6183, 4.8705],[9.2907, 4.5307],[5.8470, 3.1249],[8.0364, 6.6997],[3.4954, 3.9290],[3.8709, 2.8165]])
labels[: 10]
# output :
tensor([[0],[0],[0],[0],[0],[0],[0],[0],[0],[0]])
# 可视化展示
plt.scatter(features[:, 0], features[:, 1], c = labels)

在这里插入图片描述

能够看出,类别彼此交叉情况较少,分类器在此数据集上会有不错表现。当然,若要增加分类器的分类难度,可以将各类的均值压缩,并增加方差,从而增加从二维图像上来看彼此交错的情况。

# 设置随机数种子
torch.manual_seed(420)   # 创建初始标记值
num_inputs = 2
num_examples = 500# 创建自变量簇
data0 = torch.normal(3, 2, size=(num_examples, num_inputs))
data1 = torch.normal(0, 2, size=(num_examples, num_inputs))
data2 = torch.normal(-3, 2, size=(num_examples, num_inputs))# 创建标签
label0 = torch.zeros(500)
label1 = torch.ones(500)
label2 = torch.full_like(label1, 2)# 合并生成最终数据
features1 = torch.cat((data0, data1, data2)).float()
labels1 = torch.cat((label0, label1, label2)).long().reshape(-1, 1)
# 可视化展示
plt.subplot(121)
plt.scatter(features[:, 0], features[:, 1], c = labels)             
plt.subplot(122)
plt.scatter(features1[:, 0], features1[:, 1], c = labels1)

在这里插入图片描述


47.2 创建生成分类数据的函数

同样,我们将上述创建分类函数的过程封装为一个函数。这里需要注意的是,我们希望找到一个变量可以控制数据整体离散程度,也就是后续建模的难以程度。这里我们规定,如果每个分类数据集中心点较近、且每个类别的点内部方差较大,则数据集整体离散程度较高,反之离散程度较低。在实际函数创建过程中,我们也希望能够找到对应的参数能够方便进行自主调节。


定义创建函数

def tensorGenCla(num_examples = 500, num_inputs = 2, num_class = 3, deg_dispersion = [4, 2], bias = False):"""分类数据集创建函数。 :param num_examples: 每个类别的数据数量:param num_inputs: 数据集特征数量:param num_class:数据集标签类别总数:param deg_dispersion:数据分布离散程度参数,需要输入一个列表,其中第一个参数表示每个类别数组均值的参考、第二个参数表示随机数组标准差。:param bias:建立模型逻辑回归模型时是否带入截距:return: 生成的特征张量和标签张量,其中特征张量是浮点型二维数组,标签张量是长正型二维数组。"""cluster_l = torch.empty(num_examples, 1)	# 每一类标签张量的形状mean_ = deg_dispersion[0]	# 每一类特征张量的均值的参考值std_ = deg_dispersion[1]	# 每一类特征张量的方差lf = []	# 用于存储每一类特征张量的列表容器ll = []	# 用于存储每一类标签张量的列表容器k = mean_ * (num_class - 1) / 2		# 每一类特征张量均值的惩罚因子for i in range(num_class):data_temp = torch.normal(i*mean_-k, std_, size=(num_examples, num_inputs))     # 生成每一类张量lf.append(data_temp)	# 将每一类张量添加到lf中labels_temp = torch.full_like(cluster_l, i)		# 生成类一类的标签ll.append(labels_temp)	# 将每一类标签添加到ll中features = torch.cat(lf).float()labels = torch.cat(ll).long()if bias == True:# 在特征张量中添加一列全是1的列features = torch.cat((features, torch.ones(len(features), 1)), 1)return features, labels

函数整体结构不复杂,且所使用的方法都是此前介绍过的tensor常用方法,唯一需要注意的是函数对于分布离散程度的控制。函数内部变量k是一个随着均值增加和分类类别数量增加而增加的数值,且分类数量增加对k值增加影响是通过和1取平均后进行惩罚的结果。而i*mean_则是一个随着i增加稳步增量的量,二者相减最终能获得一个整体特征均匀分布在0附近的特征张量。


测试函数性能

在使用函数的过程中,离散度的第一个数值可以理解为簇的大概分布区间,第二个数值可以理解为每个簇的离散程度。

# 设置随机数种子
torch.manual_seed(420)   # 创建数据
f, l = tensorGenCla(deg_dispersion = [6, 2])          # 离散程度较小
f1, l1 = tensorGenCla(deg_dispersion = [6, 4])        # 离散程度较大# 绘制图像查看
plt.subplot(121)
plt.scatter(f[:, 0], f[:, 1], c = l)
plt.subplot(122)
plt.scatter(f1[:, 0], f1[:, 1], c = l1)

在这里插入图片描述


48 创建小批量切分函数

在深度学习建模过程中,梯度下降是最常用的求解目标函数的优化方法,而针对不同类型、拥有不同函数特性的目标函数,所使用的梯度下降算法也各有不同。目前为止,我们判断小批量梯度下降(MBGD)是较为“普适”的优化算法,它既拥有随机梯度下降(SGD)的能够跨越局部最小值点的特性,同时又和批量梯度下降(BGD)一样,拥有相对较快的收敛速度(虽然速度略慢与BGD)。而在小批量梯度下降过程中,我们需要对函数进行分批量的切分,因此,在手动实现各类深度学习基础算法之前,我们需要定义数据集小批量切分的函数。

shuffle过程:将原序列乱序排列

l = list(range(5))
l
# output :
[0, 1, 2, 3, 4]
random.shuffle(l)
l
# output :
[3, 2, 0, 1, 4]

批量切分函数的目标就是根据设置的“批数”,将原数据集随机均匀切分。可通过如下函数实现:

def data_iter(batch_size, features, labels):"""数据切分函数:param batch_size: 每个子数据集包含多少数据:param featurs: 输入的特征张量:param labels:输入的标签张量:return l:包含batch_size个列表,每个列表切分后的特征和标签所组成 """    num_examples = len(features)indics = list(range(num_examples))random.shuffle(indices)l=[]	# 空列表用于存储数据for i in range(0, num_examples, batch_size):j = torch.tensor(indices[i: min(i + batch_size, num_examples)])l.append([torch.index_select(features, 0, j), torch.index_select(labels, 0, j)])return l
# 设置随机数种子
torch.manual_seed(420)  # 生成二分类数据集
features, labels = tensorGenCla()       
features[:5]
# output :
tensor([[-4.0141, -2.9911],[-2.6593, -4.7657],[-3.9395, -3.2347],[-5.0262, -2.5792],[-0.3817, -3.1295]])
labels
# output :
tensor([[0],[0],[0],...,[2],[2],[2]])
l = data_iter(10, features, labels)
l[0]	# 查看切分后的第一个数据集 
# output :
[tensor([[ 0.7901,  2.4304],[ 4.0788,  3.7885],[-1.1552, -0.8829],[ 1.3738,  2.3689],[-2.1479, -6.6638],[-2.5418, -7.9962],[-1.0777, -0.7594],[ 5.6215,  3.9071],[ 3.5896,  3.3644],[ 1.2458,  0.0179]]),tensor([[1],[2],[1],[1],[0],[0],[1],[2],[2],[1]])]
plt.scatter(l[0][0][:, 0], l[0][0][:, 1], c = l[0][1])

在这里插入图片描述


49 Python模块编写

本节定义的函数将后续课程中将经常使用,因此需要将其封装为一个模块方便后续调用。封装为模块有以下几种基本方法:

  • 打开文本编辑器,将写好并测试完成的函数写入其中,并将文本的拓展名改写为.py
  • spyder或者pycharm中复制相关函数,并保存为.py文件;

然后将文件保存在jupyter主目录下,并取名为torchLearning,后续即可通过import torchLearning进行调用。如果是jupyterlab用户,也可按照如下方式进行编写:

Step 1.打开左侧文件管理栏页,点击新建

在这里插入图片描述

Step 2.在新建目录中,选择Test File

Step 3.在打开的文本编辑器中输入代码

需要保存的函数有:

  • tensorGenReg函数
  • tensorGenCla函数
  • data_iter函数

在这里插入图片描述

Step 4.保存退出,并将文件名改写为torchLearning.py

在这里插入图片描述

然后即可在其他ipy文件中调用,具体调用方法见下一节内容。

相关文章:

深度学习 Pytorch 基础网络手动搭建与快速实现

为了方便后续练习的展开,我们尝试自己创建一个数据生成器,用于自主生成一些符合某些条件、具备某些特性的数据集。 导入相关的包 # 随机模块 import random# 绘图模块 import matplotlib as mpl import matplotlib.pyplot as plt# 导入numpy import nu…...

Sqli-labs靶场实录(一):Basic Challenges

sqli-labs靶场实录:Basic Challenges sql手注基本流程Less-11.1探测注入点1.2判断字段数1.3判断回显位1.4提取数据库基本信息1.5拖取敏感数据 Less-2Less-3Less-4Less5爆表爆列名 Less6爆库爆表爆列名 Less7猜解数据库长度逐字符爆破数据库名 Less8爆库 Less9爆库 Less10Less11…...

2024最新版Node.js详细安装教程(含npm配置淘宝最新镜像地址)

一:Node.js安装 浏览器中搜索Nodejs,或直接用网址:Node.js — 在任何地方运行 JavaScript 建议此处下载长期支持版本(红框内): 开始下载,完成后打开文件: 进入安装界面,在此处勾选,再点击n…...

RK3568使用QT搭建TCP服务器和客户端

文章目录 一、让RK3568开发板先连接上wifi二、客户端代码1. `widget.h` 文件2. `widget.cpp` 文件**详细讲解**1. **`Widget` 类构造函数 (`Widget::Widget`)**2. **UI 布局 (`setupUI`)**3. **连接按钮的槽函数 (`onConnectClicked`)**4. **发送消息按钮的槽函数 (`onSendMess…...

Android学习20 -- 手搓App2(Gradle)

1 前言 昨天写了一个完全手搓的:Android学习19 -- 手搓App-CSDN博客 后面谷歌说不要用aapt,d8这些来搞。其实不想弄Gradle的,不过想着既然开始了,就多看一些。之前写过一篇Gradle,不过是最简单的编译,不涉…...

LeetCode - Google 大模型10题 第2天 Position Embedding(位置编码) 3题

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145454489 在 Transformer 架构中,位置编码(Position Embedding) 是辅助模型理解序列中元素顺序的关键机制。绝对位置编码(Absolute P…...

PostgreSQL 数据库备份与还原

为了安全与数据共享等,创建好的数据库有时候需要备份操作和还原操作。数据库的备份与还原主要是三个命令:pg_dump、pg_dumpall 和 pg_restore 。 其中pg_dump用于备份单个数据库,它支持多种备份格式(SQL、自定义等)&a…...

proxmox通过更多的方式创建虚拟机

概述 作为一名资深运维工程师,我们经常需要在 Proxmox 虚拟化平台上创建和管理虚拟机。本文将介绍三种不同的方式在 Proxmox 上创建 Ubuntu 虚拟机: 通过 Proxmox 命令创建虚拟机通过 Shell 脚本自动化创建虚拟机使用 Proxmox API 创建虚拟机 每种方式…...

WordPress使用(2)

上一篇文章讲述了WordPress的基本安装,主要是docker方式的处理。本文章主要介绍WordPress安装后的其他设置。 1. 安装后设置 安装后碰到的第一个需求就是安装一个合适的主题,但WordPress默认的上传文件大小是2M,远远无法满足要求&#xff0…...

git中文件的状态状态切换

文件的状态分类 Git 中文件的状态主要分为以下几种: Untracked(未跟踪) 定义:这些文件从未被 Git 跟踪过,通常是因为它们是新创建的文件,或者被 .gitignore 排除在外。 示例:新创建的文件 new…...

解决php8.3无法加载curl扩展

把它的值更改为扩展存在的目录的绝对路径(扩展存在的目录为有php_xxx.dll存在的目录) extension_dir "e:\serv\php83\ext" 然后从php根目录复制 libssh2.dll 和 libcrypto-*.dll 和 libssl-*.dll 到Apache根目录下的bin目录 重启apache服务即可...

三路排序算法

三路排序算法 引言 排序算法是计算机科学中基础且重要的算法之一。在数据分析和处理中,排序算法的效率直接影响着程序的执行速度和系统的稳定性。本文将深入探讨三路排序算法,包括其原理、实现和应用场景。 一、三路排序算法的原理 三路排序算法是一…...

入行FPGA设计工程师需要提前学习哪些内容?

FPGA作为一种灵活可编程的硬件平台,广泛应用于嵌入式系统、通信、数据处理等领域。很多人选择转行FPGA设计工程师,但对于新手来说,可能在学习过程中会遇到一些迷茫和困惑。为了帮助大家更好地准备,本文将详细介绍入行FPGA设计工程…...

DBASE DBF数据库文件解析

基于Java实现DBase DBF文件的解析和显示 JDK19编译运行,实现了数据库字段和数据解析显示。 首先解析数据库文件头代码 byte bytes[] Files.readAllBytes(Paths.get(file));BinaryBufferArray bis new BinaryBufferArray(bytes);DBF dbf new DBF();dbf.VersionN…...

html基本结构和常见元素

html5文档基本结构 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>文档标题</title> </head> <body>文档正文部分 </body> </html> html文档可分为文档头和文档体…...

JAVAweb学习日记(十) Mybatis入门操作

一、介绍 二、快速入门程序 三、入门-数据库连接池 四、入门-lombok工具包...

从Transformer到世界模型:AGI核心架构演进

文章目录 引言&#xff1a;架构革命推动AGI进化一、Transformer&#xff1a;重新定义序列建模1.1 注意力机制的革命性突破1.2 从NLP到跨模态演进1.3 规模扩展的黄金定律 二、通向世界模型的关键跃迁2.1 从语言模型到认知架构2.2 世界模型的核心特征2.3 混合架构的突破 三、构建…...

Rk3588芯片介绍(含数据手册)

芯片介绍&#xff1a;RK3588是一款低功耗&#xff0c;高性能的处理器&#xff0c;适用于基于arm的PC和边缘计算设备&#xff0c;个人移动互联网设备和其他数字多媒体应用&#xff0c;集成了四核Cortex-A76和四核Cortex-A55以及单独的NEON协处理器 视频处理方面&#xff1a;提供…...

java开发面试自我介绍模板_java面试自我介绍3篇

java 面试自我介绍 3 篇 java 面试自我介绍篇一&#xff1a; 我叫赵&#xff0c;我的同学更都喜欢称呼我的英文名字&#xff0c;叫&#xff0c;六月的 意思&#xff0c;是君的谐音。我来自安徽的市&#xff0c;在 21 年我以市全市第一名 的成绩考上了大学&#xff0c…...

w193基于Spring Boot的秒杀系统设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…...

chrome浏览器chromedriver下载

chromedriver 下载地址 https://googlechromelabs.github.io/chrome-for-testing/ 上面的链接有和当前发布的chrome浏览器版本相近的chromedriver 实际使用感受 chrome浏览器会自动更新&#xff0c;可以去下载最新的chromedriver使用&#xff0c;自动化中使用新的chromedr…...

【HTML入门】Sublime Text 4与 Phpstorm

文章目录 前言一、环境基础1.Sublime Text 42.Phpstorm(1)安装(2)启动Phpstorm(3)“启动”码 二、HTML1.HTML简介(1)什么是HTML(2)HTML版本及历史(3)HTML基本结构 2.HTML简单语法(1)HTML标签语法(2)HTML常用标签(3)表格(4)特殊字符 总结 前言 在当今的软件开发领域&#xff0c…...

Python----Python高级(并发编程:进程Process,多进程,进程间通信,进程同步,进程池)

一、进程Process 拥有自己独立的堆和栈&#xff0c;既不共享堆&#xff0c;也不共享栈&#xff0c;进程由操作系统调度&#xff1b;进程切换需要的资源很最大&#xff0c;效率低。 对于操作系统来说&#xff0c;一个任务就是一个进程&#xff08;Process&#xff09;&#xff…...

汽车自动驾驶AI

汽车自动驾驶AI是当前汽车技术领域的前沿方向&#xff0c;以下是关于汽车自动驾驶AI的详细介绍&#xff1a; 技术原理 感知系统&#xff1a;自动驾驶汽车通过多种传感器&#xff08;如激光雷达、摄像头、雷达、超声波传感器等&#xff09;收集周围环境的信息。AI算法对这些传感…...

Linux之安装MySQL

1、查看系统当前版本是多少位的 getconf LONG_BIT2.去官网下载对应的MYSQL安装包 这里下载的是8版本的&#xff0c;位数对应之前的64位 官网地址&#xff1a;https://downloads.mysql.com/archives/community/ 3.上传压缩包 4.到对应目录下解压 tar -xvf mysql-8.0.26-lin…...

说说Redis的内存淘汰策略?

大家好&#xff0c;我是锋哥。今天分享关于【说说Redis的内存淘汰策略?】面试题。希望对大家有帮助&#xff1b; 说说Redis的内存淘汰策略? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 提供了多种内存淘汰策略&#xff0c;用于在内存达到限制时决定如何…...

SQL范式与反范式_优化数据库性能

1. 引言 什么是SQL范式 SQL范式是指数据库设计中的一系列规则和标准,旨在减少数据冗余、提高数据完整性和一致性。常见的范式包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(Boyce-Codd范式)。 什么是SQL反范式 SQL反范式是指在满足范式要求的基础上,有…...

从BIO到NIO:Java IO的进化之路

引言 在 Java 编程的世界里&#xff0c;输入输出&#xff08;I/O&#xff09;操作是基石般的存在&#xff0c;从文件的读取写入&#xff0c;到网络通信的数据传输&#xff0c;I/O 操作贯穿于各种应用程序的核心。BIO&#xff08;Blocking I/O&#xff0c;阻塞式 I/O&#xff0…...

Mysql:数据库

Mysql 一、数据库概念&#xff1f;二、MySQL架构三、SQL语句分类四、数据库操作4.1 数据库创建4.2 数据库字符集和校验规则4.3 数据库修改4.4 数据库删除4.4 数据库备份和恢复其他 五、表操作5.1 创建表5.2 修改表5.3 删除表 六、表的增删改查6.1 Create(创建):数据新增1&#…...

深度学习系列--01.入门

一.深度学习概念 深度学习&#xff08;Deep Learning&#xff09;是机器学习的分支&#xff0c;是指使用多层的神经网络进行机器学习的一种手法抖音百科。它学习样本数据的内在规律和表示层次&#xff0c;最终目标是让机器能够像人一样具有分析学习能力&#xff0c;能够识别文字…...