深度学习基础入门篇[七]:常用归一化算法、层次归一化算法、归一化和标准化区别于联系、应用案例场景分析。

news2024/12/23 1:37:12

在这里插入图片描述
【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等

在这里插入图片描述
专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等

本专栏主要方便入门同学快速掌握相关知识。声明:部分项目为网络经典项目方便大家快速学习,后续会不断增添实战环节(比赛、论文、现实应用等)

专栏订阅:深度学习入门到进阶专栏

1.归一化基础知识点

1.1 归一化作用

归一化是一种数据处理方式,能将数据经过处理后限制在某个固定范围内。

归一化存在两种形式,

  • 一种是在通常情况下,将数处理为 [0, 1] 之间的小数,其目的是为了在随后的数据处理过程中更便捷。例如,在图像处理中,就会将图像从 [0, 255] 归一化到 [0, 1]之间,这样既不会改变图像本身的信息储存,又可加速后续的网络处理。
  • 其他情况下,也可将数据处理到 [-1, 1] 之间,或其他的固定范围内。另一种是通过归一化将有量纲表达式变成无量纲表达式。

那么什么是量纲,又为什么需要将有量纲转化为无量纲呢?具体举一个例子。当我们在做对房价的预测时,收集到的数据中,如房屋的面积、房间的数量、到地铁站的距离、住宅附近的空气质量等,都是量纲,而他们对应的量纲单位分别为平方米、个数、米、AQI等。这些量纲单位的不同,导致数据之间不具有可比性。同时,对于不同的量纲,数据的数量级大小也是不同的,比如房屋到地铁站的距离可以是上千米,而房屋的房间数量一般只有几个。经过归一化处理后,不仅可以消除量纲的影响,也可将各数据归一化至同一量级,从而解决数据间的可比性问题

  • 归一化可以将有量纲转化为无量纲,同时将数据归一化至同一量级,解决数据间的可比性问题。在回归模型中,自变量的量纲不一致会导致回归系数无法解读或错误解读。在KNN、Kmeans等需要进行距离计算的算法中,量纲的量级不同可能会导致拥有较大量级的特征在进行距离计算时占主导地位,从而影响学习结果。

  • 数据归一化后,寻求最优解的过程会变得平缓,可以更快速的收敛到最优解。详解请参见3.为什么归一化能提高求解最优解的速度。

1.2 归一化提高求解最优解的速度

我们提到一个对房价进行预测的例子,假设自变量只有房子到地铁站的距离x1和房子内房间的个数x2,因变量为房价,预测公式和损失函数分别为

y = θ 1 x 1 + θ 2 x 2 J = ( θ 1 x 1 + θ 2 x 2 − y l a b e l ) 2 \begin{array}{l}y=\theta_1x_1+\theta_2x_2\\ J=(\theta_1x_1+\theta_2x_2-y_{label})^2\end{array} y=θ1x1+θ2x2J=(θ1x1+θ2x2ylabel)2

在未归一化时,房子到地铁站的距离的取值在0~5000之间,而房间个数的取值范围仅为0~10。假设x1=1000,x2=3, 那么损失函数的公式可以写为:

J = ( 1000 θ 1 + 3 θ 2 − y l a b e l ) 2 J=\left(1000\theta_1+3\theta_2-y_{label}\right)^2 J=(1000θ1+3θ2ylabel)2

可将该损失函数寻求最优解过程可视化为下图:图1: 损失函数的等高线,图1(左)为未归一化时,图1(右)为归一化

在图1中,左图的红色椭圆代表归一化前的损失函数等高线,蓝色线段代表梯度的更新,箭头的方向代表梯度更新的方向。寻求最优解的过程就是梯度更新的过程,其更新方向与登高线垂直。由于x1和 x2的量级相差过大,损失函数的等高线呈现为一个瘦窄的椭圆。因此如图1(左)所示,瘦窄的椭圆形会使得梯度下降过程呈之字形呈现,导致梯度下降速度缓慢。

当数据经过归一化后, x 1 ′ = 1000 − 0 5000 − 0 = 0.2 , x 2 ′ = 3 − 0 10 − 0 = 0.3 , x_1^{'}=\frac{1000-0}{5000-0}=0.2,x_2^{'}=\frac{3-0}{10-0}=0.3, x1=5000010000=0.2,x2=10030=0.3,,那么损失函数的公式可以写为:

J ( x ) = ( 0.2 θ 1 + 0.3 θ 2 − y l a b e l ) 2 J(x)=\left(0.2\theta_1+0.3\theta_2-y_{label}\right)^2 J(x)=(0.2θ1+0.3θ2ylabel)2

我们可以看到,经过归一化后的数据属于同一量级,损失函数的等高线呈现为一个矮胖的椭圆形(如图1(右)所示),求解最优解过程变得更加迅速且平缓,因此可以在通过梯度下降进行求解时获得更快的收敛。

1.3 归一化类型

1.3.1 Min-max normalization (Rescaling):

x ′ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x^{'}=\dfrac{x-min(x)}{max(x)-min(x)}\quad\quad x=max(x)min(x)xmin(x)

归一化后的数据范围为 [0, 1],其中 min(x)、max(x)分别求样本数据的最小值和最大值。

1.3.2 Mean normalization:

x ′ = x − m e a n ( x ) m a x ( x ) − m i n ( x ) x^{'}=\dfrac{x-mean(x)}{max(x)-min(x)}\quad\text{} x=max(x)min(x)xmean(x)

1.3.3 Z-score normalization (Standardization):标准化

x ′ = x − μ σ x^{'}=\dfrac{x-\mu}{\sigma} x=σxμ

归一化后的数据范围为实数集,其中 μ、σ分别为样本数据的均值和标准差。

1.3.4 非线性归一化:

  • 对数归一化:
    x ′ = lg ⁡ x lg ⁡ m a x ( x ) x^{'}=\dfrac{\lg x}{\lg max(x)} x=lgmax(x)lgx

  • 反正切函数归一化:

x ′ = arctan ⁡ ( x ) ∗ 2 π x^{'}=\arctan(x)*\dfrac{2}{\pi}\quad x=arctan(x)π2

归一化后的数据范围为 [-1, 1]

  • 小数定标标准化(Demical Point Normalization):

x ′ = x 1 0 j x^{'}=\dfrac{x}{10^{j}} x=10jx

归一化后的数据范围为 [-1, 1],j为使 m a x ( ∣ x ′ ∣ ) < 1 max(|x'|)<1 max(x)<1的最小整数。

1.4 不同归一化的使用条件

  1. Min-max归一化和mean归一化适合在最大最小值明确不变的情况下使用,比如图像处理时,灰度值限定在 [0, 255] 的范围内,就可以用min-max归一化将其处理到[0, 1]之间。在最大最小值不明确时,每当有新数据加入,都可能会改变最大或最小值,导致归一化结果不稳定,后续使用效果也不稳定。同时,数据需要相对稳定,如果有过大或过小的异常值存在,min-max归一化和mean归一化的效果也不会很好。如果对处理后的数据范围有严格要求,也应使用min-max归一化或mean归一化。

  2. Z-score归一化也可称为标准化,经过处理的数据呈均值为0,标准差为1的分布。在数据存在异常值、最大最小值不固定的情况下,可以使用标准化。标准化会改变数据的状态分布,但不会改变分布的种类。特别地,神经网络中经常会使用到z-score归一化,针对这一点,我们将在后续的文章中进行详细的介绍。

  3. 非线性归一化通常被用在数据分化程度较大的场景,有时需要通过一些数学函数对原始值进行映射,如对数、反正切等。

在查找资料的时候,我看到很多文章都提出了:“在分类、聚类算法中,需要使用距离来度量相似性的时候,z-score归一化也就是标准化的效果比归一化要好,但是对于这个观点并没有给出足够的技术支持。因此,我选取了KNN分类网络搜索了相关论文,在论文Comparative Analysis of KNN Algorithm using Various Normalization Techniques [1] 中,在K值不同的情况下,对于相同的数据分别进行min-max归一化和z-score归一化,得到的结果如下图所示:图2: 对于不同的K值,相同数据集不同归一化方式下的预测精确度

由此可以看到,至少对于KNN分类问题,z-score归一化和min-max归一化的选择会受到数据集、K值的影响,对于其他的分类和聚类算法,哪一种归一化的方法更好仍有待验证。最好的选择方法就是进行实验,选择在当前实验条件下,能够使模型精度更高的一种。

1.5 归一化和标准化的联系与区别

谈到归一化和标准化可能会存在一些概念的混淆,我们都知道归一化是指normalization,标准化是指standardization,但根据wiki上对feature scaling方法的定义,standardization其实就是z-score normalization,也就是说标准化其实是归一化的一种,而一般情况下,我们会把z-score归一化称为标准化,把min-max归一化简称为归一化。在下文中,我们也是用标准化指代z-score归一化,并使用归一化指代min-max归一化。

其实,归一化和标准化在本质上都是一种线性变换。在4.归一化类型中,我们提到了归一化和标准化的公式,对于归一化的公式,在数据给定的情况下,可以令a=max(x)−min(x)、b=min(x),则归一化的公式可变形为:

x ′ = x − b a = x a − b a = x a − c x^{'}=\dfrac{x-b}{a}=\dfrac{x}{a}-\dfrac{b}{a}=\dfrac{x}{a}-c x=axb=axab=axc

标准化的公式与变形后的归一化类似,其中的μ和σ在数据给定的情况下,可以看作常数。因此,标准化的变形与归一化的类似,都可看作对x按比例a进行缩放,再进行c个单位的平移。由此可见,归一化和标准化的本质都是一种线性变换,他们都不会因为对数据的处理而改变数据的原始数值排序。

那么归一化和标准化又有什么区别呢?

  • 归一化不会改变数据的状态分布,但标准化会改变数据的状态分布;

  • 归一化会将数据限定在一个具体的范围内,如 [0, 1],但标准化不会,标准化只会将数据处理为均值为0,标准差为1。

References:【1】Comparative Analysis of KNN Algorithm using Various Normalization Techniques;Amit Pandey,Achin Jain.

2. 层归一化

神经网络的学习过程本质上是在学习数据的分布,如果没有进行归一化的处理,那么每一批次的训练数据的分布是不一样的,

  • 从大的方向上来看,神经网络则需要在这多个分布当中找到平衡点,
  • 从小的方向上来看 ,由于每层的网络输入数据分布在不断地变化 ,那么会导致每层网络都在找平衡点,显然网络就变得难以收敛
    当然我们可以对输入数据进行归一化处理(例如对输入图像除以255),但这也仅能保证输入层的数据分布是一样的,并不能保证每层网络输入数据分布是一样的,所以在网络的中间我们也是需要加入归一化的处理。

归一化定义:数据标准化(Normalization),也称为归一化,归一化就是将需要处理的数据在通过某种算法经过处理后,将其限定在需要的一定的范围内

2.1 层归一化产生原因

  • 一般的批归一化(Batch Normalization,BN)算法对mini-batch数据集过分依赖,无法应用到在线学习任务中(此时mini-batch数据集包含的样例个数为1),在递归神经网络(Recurrent neural network,RNN)中BN的效果也不明显 ;
  • RNN多用于自然语言处理任务,网络在不同训练周期内输入的句子,句子长度往往不同,在RNN中应用BN时,在不同时间周期使用mini-batch数据集的大小都需要不同,计算复杂,而且如果一个测试句子比训练集中的任何一个句子都长,在测试阶段RNN神经网络预测性能会出现严重偏差。如果更改为使用层归一化,就可以有效的避免这个问题。

层归一化:通过计算在一个训练样本上某一层所有的神经元的均值和方差来对神经元进行归一化。

μ ← 1 H ∑ i = 1 H x i σ ← 1 H ∑ i = 1 H ( x i − μ D ) 2 + ϵ ⋮ y = f ( g σ ( x − μ ) + b ) \mu\leftarrow\dfrac{1}{H}\sum_{i=1}^{H}x_i\\ \sigma\leftarrow\sqrt{\dfrac{1}{H}\sum_{i=1}^{H}(x_i-\mu_D)^2+\epsilon}\\ \vdots\\ y=f(\dfrac{g}{\sigma}(x-\mu)+b) μH1i=1HxiσH1i=1H(xiμD)2+ϵ y=f(σg(xμ)+b)

相关参数含义:

  • x : 该层神经元的向量表示

  • H : 层中隐藏神经元个数

  • ϵ : 添加较小的值到方差中以防止除零

  • g: 再缩放参数(可训练),新数据以g2为方差

  • b: 再平移参数(可训练),新数据以b为偏差

  • f:激活函数

算法作用

  1. 加快网络的训练收敛速度 在深度神经网络中,如果每层的数据分布都不一样,将会导致网络非常难以收敛和训练(如综述所说难以在多种数据分布中找到平衡点),而每层数据的分布都相同的情况,训练时的收敛速度将会大幅度提升。

控制梯度爆炸和防止梯度消失 我们常用的梯度传递的方式是由深层神经元往浅层传播,如果用f′i和O′i分别表示第i层对应的激活层导数和输出导数,那么对于H层的神经网络,第一层的导数 F 1 ′ = ∏ i = 1 H f i ′ ∗ O i ′ F_1'=\prod_{i=1}^{H}f_i'*O_i' F1=i=1HfiOi,那么对于 f i ′ ∗ O i ′ f_i'*O_i' fiOi恒大于1的情况,如 f i ′ ∗ O i ′ = 2 f_i'*O_i'=2 fiOi=2的情况,使得结果指数上升,发生梯度爆炸,对于 f i ′ ∗ O i ′ f_i'*O_i' fiOi恒小于1,如 f i ′ ∗ O i ′ = 0.25 f_i'*O_i'=0.25 fiOi=0.25导致结果指数下降,发生梯度消失的现象,底层神经元梯度几乎为0。采用归一化算法后,可以使得f_i’*O_i’ f i ′ ∗ O i ′ f_i'*O_i' fiOi的结果不会太大也不会太小,有利于控制梯度的传播。

在飞桨框架案例如下:

paddle.nn.LayerNorm(normalized_shape, epsilon=1e-05, weight_attr=None, bias_attr=None, name=None);

该接口用于构建 LayerNorm 类的一个可调用对象

核心参数的含义:

  • normalized_shape (int|list|tuple) - 期望对哪些维度进行变换。如果是一个整数,会将最后一个维度进行规范化。

  • epsilon (float, 可选) - 对应ϵ-为了数值稳定加在分母上的值。默认值:1e-05

2.2 应用案例

import paddle
import numpy as np

np.random.seed(123)
x_data = np.random.random(size=(2, 2, 2, 3)).astype('float32')
x = paddle.to_tensor(x_data)
layer_norm = paddle.nn.LayerNorm(x_data.shape[1:])
layer_norm_out = layer_norm(x)

print(layer_norm_out)

# input
# Tensor(shape=[2, 2, 2, 3], dtype=float32, place=CPUPlace, stop_gradient=True,
#        [[[[0.69646919, 0.28613934, 0.22685145],
#           [0.55131477, 0.71946895, 0.42310646]],

#          [[0.98076421, 0.68482971, 0.48093191],
#           [0.39211753, 0.34317800, 0.72904968]]],


#         [[[0.43857226, 0.05967790, 0.39804426],
#           [0.73799539, 0.18249173, 0.17545176]],

#          [[0.53155136, 0.53182757, 0.63440096],
#           [0.84943181, 0.72445530, 0.61102349]]]])

# output:
# Tensor(shape=[2, 2, 2, 3], dtype=float32, place=CPUPlace, stop_gradient=True,
#        [[[[ 0.71878898, -1.20117974, -1.47859287],
#           [ 0.03959895,  0.82640684, -0.56029880]],

#          [[ 2.04902983,  0.66432685, -0.28972855],
#           [-0.70529866, -0.93429095,  0.87123591]]],


#         [[[-0.21512909, -1.81323946, -0.38606915],
#           [ 1.04778552, -1.29523218, -1.32492554]],

#          [[ 0.17704056,  0.17820556,  0.61084229],
#           [ 1.51780486,  0.99067575,  0.51224011]]]])

对于一般的图片训练集格式为 ( N , C , H , W ) (N,C,H,W) (N,C,H,W)的数据,在LN变换中,我们对后三个维度进行归一化。因此实例的输入shape就是后三维x_data.shape[1:]。也就是我们固定了以每张图片为单位,对每张图片的所有通道的像素值统一进行了Z-score归一化。

2.3应用场景

层归一化在递归神经网络RNN中的效果是受益最大的,它的表现优于批归一化,特别是在动态长序列和小批量的任务当中 。例如在论文Layer Normalization所提到的以下任务当中:

  1. 图像与语言的顺序嵌入(Order embedding of images and language)

  2. 教机器阅读和理解(Teaching machines to read and comprehend)

  3. Skip-thought向量(Skip-thought vectors)

  4. 使用DRAW对二值化的MNIST进行建模(Modeling binarized MNIST using DRAW)

  5. 手写序列生成(Handwriting sequence generation)

  6. 排列不变MNIST(Permutation invariant MNIST)

但是,研究表明,由于在卷积神经网络中,LN会破坏卷积所学习到的特征,致使模型无法收敛,而对于BN算法,基于不同数据的情况,同一特征归一化得到的数据更不容易损失信息,所以在LN和BN都可以应用的场景,BN的表现通常要更好。

文献:Ba J L , Kiros J R , Hinton G E . Layer Normalization[J]. 2016.

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

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

相关文章

学习小程序基础内容之页面结构

一个小程序页面由四个文件组成&#xff0c;分别是&#xff1a; 文件类型 必需 作用 js 是 页面逻辑 wxml 是 页面结构 json 否 页面配置 wxss 否 页面样式表wxss 否 页面样式表[TOC] 但是我们创建一个页面&#xff0c;最快的方法是在app.json 里面&#xff0c;命名一个文件&a…

Win10输入法设置,详细方法在这里!

案例&#xff1a;win10输入法怎么设置 【想问问大家知道win10输入法该怎么设置吗&#xff1f;想更改一些默认的设置&#xff0c;不知道该如何操作&#xff0c;感谢&#xff01;】 Win10输入法是在Win10操作系统下使用的一种输入工具&#xff0c;是Win10系统的默认输入法&…

【Vim】 【初始篇】Vim之增删改查(idcf)中的改(c)

前言&#xff1a; 都说上古神器vim&#xff0c;可以提高效率&#xff0c;但是我觉得它更能增加乐趣&#xff0c;还能装B于无形。所以我准备开个新的板块用于记录vim使用中的骚操作。 VS2022 使用Vim 作为一个.net程序员&#xff0c;不可能完全脱离vs而使用专门vim编辑器&#x…

Linux文件系统 文件恢复

inode和block block 用于存储文件数据。 文件是存储在硬盘上的&#xff0c;硬盘的最小存储单位叫做“扇区”&#xff08;sector&#xff09;&#xff0c;每个扇区存储512字节。连续八个扇区组成一个"块"&#xff08;block&#xff09;&#xff0c;一个块是4K大小&…

极豆科技加入飞桨技术伙伴计划,共筑智能网联汽车新生态

近日&#xff0c;极豆科技正式加入百度飞桨技术伙伴计划&#xff0c;双方将共同努力&#xff0c;联合推进人工智能、大数据、云计算等前沿技术在智能网联汽车领域的应用落地&#xff0c;携手推动汽车产业变革&#xff0c;加速车企迈向全面数字化。 上海极豆科技有限公司‍‍‍‍…

Java并发基石_CAS原理实战01_CAS机制入门

快了&#xff0c;快要拿到offer了&#xff01;&#x1f339; 案例引入&#xff1a; 开发一个网站&#xff0c;对访问量进行统计&#xff0c;用户每发送一次请求&#xff0c;访问量就1&#xff0c;模拟有100个人同时访问&#xff0c;并且每个人对网站发起10次请求&#xff0c;所…

Nginx+Tomcat负载均衡、动静分离群集

Tomcat优化 Tomcat是java开发的应用程序&#xff0c;作用&#xff1a;作为web服务器处理html页面&#xff0c;但能力一般&#xff0c;更多的用于jsp、servlet容器处理java开发的jsp动态页面。 组织架构&#xff1a;连接器 、 容器 连接器&#xff1a;暴露端口&#xff0c;接…

云表:无代码“打破”工业软件开发壁垒,数字化只需"画表格"

无代码已成为新兴趋势 近年来&#xff0c;在如火如荼的制造业数字化转型浪潮中&#xff0c;“无代码开发”也因其敏捷、易用的独有特性&#xff0c;助力企业实现数字化应用的快速开发与落地&#xff0c;使得数据业务价值在企业级场景下释放&#xff0c;受到市场广泛关注。据国际…

003 常用组件开发使用

目录 一.基础组件 Blank:填充控件 Button&#xff1a;按钮 ButtonType枚举说明 Text&#xff1a;文本显示 QRCode 二.常用布局 线性布局&#xff08;Row和Column&#xff09; 层叠布局 弹性布局&#xff08;Flex&#xff09; 一.基础组件 Blank:填充控件 这个是鸿蒙…

涨薪5k,100多天从功能测试进阶自动化测试,我整理的超全学习指南

个人简介 学渣一枚&#xff0c;2017年6月某大专学校毕业&#xff0c;从事功能测试已经4年&#xff0c;最初毕业是从事了一份销售的工作&#xff0c;工资当时好像是3k&#xff0c;可能也是我个人的原因不适合销售&#xff0c;后来在朋友的介绍下转行到了测试行业&#xff0c;转…

访问者模式解读

目录 问题引进 访问者模式基本介绍 基本介绍 访问者模式的原理类图 对原理类图的说明 访问者模式应用实例 思路分析和图解(类图) 代码实战 应用案例的小结 访问者模式的注意事项和细节 优点 问题引进 测评系统的需求 1) 将观众分为男人和女人&#xff0c;对歌手进行…

FPGA基于XDMA实现PCIE X8通信方案测速 提供工程源码和QT上位机程序和技术支持

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案5、vivado工程详解6、驱动安装7、QT上位机软件8、上板调试验证9、福利&#xff1a;工程代码的获取 1、前言 PCIE&#xff08;PCI Express&#xff09;采用了目前业内流行的点对点串行连接&#xff0c;比起 PC…

Ceph手动部署(开发版本)

手动部署 监视器引导管理器守护程序配置添加 OSD 简写形式长格式添加 MDS总结在 FreeBSD 上手动部署 FreeBSD 上的 Disklayout 配置监视器引导添加 OSD 长格式添加 MDS总结 手动部署 所有 Ceph 集群至少需要一个显示器&#xff0c;并且至少需要与 存储在群集上的对象的副本…

Hacked某安汽车车机系统

很久之前尝试对某安汽车的车机系统进行渗透测试&#xff0c;但是却卡在入口无法进入&#xff0c;尝试暴力破解但是字典不够强大&#xff0c;没能成功。前段时间看到了绿盟科技博客的《新型车机&#xff0c;如何攻防&#xff1f;》感觉有点熟悉&#xff0c;再次探索发现可以获得…

京东商品评论数据爬虫,包含对数据的采集、清洗、可视化、分析等过程,作为数据库课程。

感谢大家的star和fork&#xff0c;为了感谢大家的关注&#xff0c;特意对代码进行了优化&#xff0c;对最新的url格式进行了更新&#xff0c;减少了一些冗余的参数&#xff0c;希望能够帮助大家入门爬虫&#xff0c;已经爬好的京东的商品评论数据已经存储在data目录下&#xff…

软件测试标准GB/T 25000.51-2016中的八大软件质量特性

GB/T25000标准由下图所示的21个部分组成&#xff0c;其中GB/T 25000.10和GB/T 25000.51是建立软件测试技术体系可以参考的部分&#xff0c;GB/T 25000.51尤为重要。 GB/T 25000标准总标题&#xff08;21个部分&#xff09; GB/T 25000.51标准pdf封面 GB/T 25000.51-2016 《系统…

现在有t1,t2,t3三个线程,实现t1,t2线程同步执行,然后再执行t3线程,使用Java实现该程序

目录 1、利用CountDownLatch 2、利用Future 最近在面试的时候&#xff0c;经常遇到这个题目&#xff0c;首先从题目上看&#xff0c;就知道考察的是多线程方面知识&#xff0c;我第一次看到这个题目的时候&#xff0c;就想到了使用CountDownLatch这个计数器来实现&#xff0c…

AUTOSAR网络管理

功能说明 目前车辆上ECU的数目越来越多&#xff0c;不同功能的ECU对电源有不同的要求&#xff0c;在点火钥匙打到OFF档&#xff08;KL15停止供电&#xff09;之后&#xff0c;有的ECU&#xff08;如座椅模块&#xff09;允许直接断电&#xff0c;有的ECU&#xff08;如空调模块…

浅谈操作系统OS与计算机软硬件体系结构,自顶贯穿性与行为回归硬件性

操作系统OS与计算机软硬件体系结构 使计算机更好用! 这是操作系统的根本要义!! 操作系统这个概念基本上以后会讲一路的&#xff0c;今天的话就基本上讲一下轻量化的概念。所以操作系统到底是什么&#xff1f;操作系统首先是软件&#xff0c;那它是一款什么软件呢&#xff1f…

Java读取文件方式

IO流读取 文本内容 按行读取文件内容 指定编码格式&#xff08;推荐&#xff09; public static void main(String[] args) throws UnsupportedEncodingException {read("D:\\test.txt");}public static void read(String path) {BufferedReader reader null;try …