万字长文 - Nature 综述系列 - 给生物学家的机器学习指南 1

news2024/11/29 12:49:50

66fb871eb6cc4dfca7ea579ddbb07d53.png

生物数据的规模不断扩大和固有复杂性促使越来越多的人在生物学中使用机器学习来构建相关生物过程的信息和预测模型。所有机器学习技术都是把数据拟合到模型,然而,具体方法千差万别,乍一看似乎令人困惑。在这篇综述中,我们旨在向读者简单介绍一些关键的机器学习技术,包括最近开发和广泛使用的涉及深度神经网络的技术。我们描述了不同的技术如何适用于特定类型的生物数据,并讨论了在进行涉及机器学习的实验时需要考虑的一些最佳实践和要点。另外还讨论了机器学习方法的一些新方向

人类通过观察周围的世界并学会预测接下来可能发生的事情来了解周围的世界。考虑一个正在学习接球的孩子:这个孩子(通常)对控制抛掷出去的球的运动的物理规律一无所知;然而,通过观察、尝试和试错的过程,孩子会调整他或她对球运动规律的理解,以及如何移动自己的身体,直到他或她能够接住球。换句话说,孩子通过对接球的过程建立了一个足够准确和有用的“模型”,根据数据反复测试这个模型,并对模型进行修正,使其变得更好,最终学会了如何接球。

机器学习”泛指将数据拟合构建预测模型或识别数据中的信息分组的过程。机器学习实际上通过计算的方式尝试接近或模拟人识别模式的能力。当人们希望分析的数据集对于人类来说太大(包含许多独立的数据点)或太复杂(包含大量特征)时,或当希望建立可复现的和时间高效的分析流程来自动化数据分析过程时,机器学习尤其有用。生物实验数据通常具有这些特征;在过去的几十年中,生物数据集的规模和复杂性都有了巨大的增长,不仅要有一些实用的方法来理解这些数据的丰富性,而且要对所使用的技术有一个良好的理解,这一点变得越来越重要。机器学习已经在生物学中使用了几十年,但它的重要性稳步增长以至于几乎在生物学的每个领域都有应用。然而,只有在过去几年里,该领域才对现有的方法进行了更为严格的审视,并开始评估哪些方法在不同的场景中最为合适,甚至是是否合适

这篇综述旨在告知生物学家如何开始理解和使用机器学习技术。我们不打算对使用机器学习解决生物问题的文章进行全面的文献综述,也不打算描述各种机器学习方法的详细数学原理。相反,我们专注于将特定技术与不同类型的生物数据联系起来(具体的生物学科也有类似的综述;例如,参见参考文献4-11)。我们还试图提炼出一些关于如何训练和改进模型的最佳实践。生物数据的复杂性使得机器学习分析有了用武之地但也要注意里面的问题陷阱。为了解决这些问题,我们讨论了影响研究有效性的普遍因素,并为如何避免这些因素的影响提供了指导。《综述》的大部分内容致力于描述一系列机器学习技术,并以案例的形式展示了该技术如何正确应用以及如何解释结果。涉及的方法包括传统的机器学习方法,因为这些方法在许多情况下仍然是最佳选择,以及使用人工神经网络的深度学习,这些方法正在成为许多任务的最有效方法。最后,我们描述了将机器学习纳入生物学数据分析流程的未来。

在生物学中使用机器学习有两个目标。其中一个是在缺乏实验数据的时候做出准确的预测,并利用这些预测来指导未来的研究工作。然而,作为科学家,我们寻求了解世界,因此第二个目标是使用机器学习来加深我们对生物学的理解。在本指南中,我们讨论了这两个目标在机器学习中如何经常发生冲突,以及如何从经常被视为“黑匣子”的模型中获得合理的解释,因为它们的内部工作很难理解。

关键的概念

我们首先介绍机器学习中的一些关键概念。在可能的情况下,我们用生物文献中的例子来说明这些概念。

通用术语。一个数据集包含多个数据点或实例,每个数据点或实例都可以看作是一个实验中的单个观察结果。每个数据点(通常)都由固定数量的特征描述,比如长度、时间、浓度和基因表达水平。机器学习任务是我们希望机器学习模型完成的目标指向。例如,在一项研究基因随时间表达的实验中,我们可能希望预测特定代谢产物转化为另一种产物的速率。在这种情况下,特征“基因表达水平”和“时间”可以称为输入特征或模型的简单输入,“转换率”将是模型的期望输出;也就是我们有兴趣预测的数量。模型可以具有任意数量的输入和输出特征。特征可以是连续的(采用连续数值)或分类的(仅采用离散值)。通常情况下,分类特征是简单的二进制,要么为真(1),要么为假(0)。

有监督和无监督的学习。“有监督的机器学习”是指将模型与已标记的数据(或数据子集)进行拟合,其中存在一些标签数据通常由人类通过实验测量或人为定义的。

Ground truth基准真相,它是指相对于新的测量方式得到的测量值,作为基准的,由已有的、可靠的测量方式得到的测量值(即经验证据)。在机器学习中借用了这一概念。

使用训练所得模型对样本进行预测的过程,可以当做是一种广义上的测量行为。因此,在有监督学习中,ground truth 通常指代样本集中的标签。例如蛋白质二级结构预测和基因组调控元件的可及性的预测。在这两种情况下,基本标记数据都来自实验室检测,但通常这些原始数据以某种方式进行预处理。例如,在二级结构的情况下,基本标记数据来自分析PDB蛋白质数据库中的蛋白质晶体结构数据;在后一种情况下,基本标记数据来自DNA测序实验的数据。相比之下,无监督学习方法能够识别未标记数据中的模式,而无需以预定标签的形式向系统提供基本标记信息,例如在基因表达研究中发现具有相似表达水平的患者子集或预测来自基因序列相关变异的突变效应。有时,这两种方法可以结合在半监督学习中,其中少量标记数据与大量未标记数据相结合。在标记数据获取成本高昂的情况下,这可以提高性能。

分类、回归和聚类问题。当问题涉及将数据点分配给一组离散分组(例如,“癌症”或“非癌症”)时,该问题被称为“分类问题”,并且执行这种分类的任何算法都可以称为分类器。相比之下,回归模型输出一组连续的值,例如预测蛋白质中残基突变后折叠自由能的变化。连续值可以被设置分割阈值或以其他方式离散化,这意味着通常可以将回归问题重新表述为分类问题。例如,上面提到的自由能变化可以被分类为使蛋白质稳定或不稳定的离散值。聚类方法用于预测数据集中属性相近的数据点的分组,并且通常基于数据点属性之间的某种相似性度量。它们是无监督的方法,不需要数据集中的示例数据有标签。例如,在基因表达研究中,聚类可以找到具有相似基因表达图谱的患者子集。

类和标签。分类器返回的离散值集可以是互斥的,在这种情况下,它们被称为“类”。如果这些值不需要互斥,则称为“标签”。例如,蛋白质结构中的一个残基只能属于多个二级结构类别中的一种,但可以同时被赋予α-螺旋和跨膜结构的多个非排他性标记。类和标签通常由编码表示(例如,独热码one- hot encoding: 是一种将分类变量转换为多个二进制列的方法,用 0, 1 值代表某个样本所属的分类或具有的特征。)。

损失或成本(代价)函数。一个机器学习模型的一个或多个输出永远都不理想,其结果会偏离实际检测值。衡量这种偏差的数学函数,或者更一般地说,衡量所获得的输出与理想输出之间“不一致”程度的数学函数称为“损失函数”或“成本函数”。在监督学习设置中,损失函数将是预测标签相比于实际标签的偏差的度量,比如回归问题的均方误差损失和分类问题的二元交叉熵损失函数。

参数和超参数。模型本质上是数学函数,它对一组输入特征进行运算,并产生一个或多个输出值或特征。为了能够学习训练数据,模型包含可调整参数,其值可以在训练过程中不断更新,以实现模型的最佳性能(见下文)。例如,在一个简单的回归模型中,每个特征都有一个与其特征值的相乘的参数,然后将这些乘积相加以进行预测。训练模型就是为了获得这些参数。  超参数是不属于模型本身的可调整值,因为它们在训练期间不会更新,但仍会对模型的训练及其性能产生影响,如随机森林中训练每棵树的变量数是多少就是一个超参。(一套完整的基于随机森林的机器学习流程(特征选择、交叉验证、模型评估)))

训练、验证和测试。在用于进行预测之前,模型需要进行训练,这包括自动调整模型的参数以提高其性能。在有监督的学习设置中,这涉及修改参数,以便通过最小化损失或成本函数的平均值(如前所述),使模型在训练数据集上表现良好。通常,需要使用单独的验证数据集来监控但不影响训练过程,以便检测潜在的过拟合事件(见下一节)。在无监督的环境中,成本函数仍然需要最小化,尽管它不基于标签数据。一旦模型被训练,就可以在未用于训练模型的测试集进行测试。有关模型训练的整个过程以及如何在分割训练集和测试集的指南,请参见方框1。图1展示了整个过程的流程图,图2中表示了模型训练中的一些概念。

过拟合和欠拟合。基于训练数据拟合模型的目的是捕捉数据中变量之间的“真实”关系,从而使模型对未知(非训练)数据具有预测能力。过拟合或欠拟合的模型将对非训练集数据产生较差的预测结果(图2d)。过拟合的模型在训练集数据上能获得优秀的结果(通常是由于参数太多),但在新提供的数据上会产生较差的结果。图2d中的过拟合模型正好通过每个训练点,因此其在训练集上的预测误差将为零。然而,很明显,该模型已经“记忆”了训练数据,并且不太可能在未看到的数据上产生好的结果。相比之下,欠拟合的模型无法充分捕捉数据中变量之间的关系。这可能是由于模型类型选择不正确、对数据的假设不完整或不正确、模型中的参数太少和/或训练过程不完整。图2d所示的欠拟合模型对于其试图拟合的数据而言是不充分的;在这种情况下,很明显变量具有非线性关系,这不能用简单的线性模型来充分描述,因此非线性模型将更合适。

归纳偏置 (Inductive bias)和偏差-方差平衡 (bias–variance trade-off)。模型的“归纳偏差”是指在机器学习算法中所做的一组假设,这些假设导致机器学习算法倾向于某个特定解决方案 (如K-近邻中假设特征空间中相似的样本倾向于属于同一类;支持向量机SVM 中假设好的分类器应该最大化类别边界距离)。它可以被认为是模型对特定类型问题解决方案的一种偏好。这种偏好通常使用其特定的数学形式和/或通过使用特定的损失函数编程到模型中。例如,循环神经网络(RNN;稍后讨论)的归纳偏置是输入数据中存在顺序依赖性,例如代谢物浓度随时间的变化。这种依赖性在RNN的数学形式中得到了明确的解释。不同模型的不同归纳偏置使其在特定类型的数据上表现更好。另一个重要的概念是偏差和方差之间的平衡(bias–variance trade-off) (Bias注重对整体模型均值的把控,Variance注重个体差异的把控)。具有高偏差的模型可以说对训练的模型具有更强的约束,而具有低偏差的模型对所训练模型的属性的假设更少,理论上可以对多种函数类型进行建模。模型的方差描述了在不同的训练集上训练后获得的训练模型的变化程度。一般来说,我们希望模型具有非常低的偏差和低的方差,尽管这些目标经常发生冲突,因为具有低偏差的模型通常会在不同的训练集上学习到不同的关系。控制偏差-方差平衡是避免过拟合或欠拟合的关键。

Box 1 这里,我们概述了训练机器学习模型时应采取的步骤。关于模型选择和训练过程,可获得的指导相对较少,已发表的研究文章中很少提及其中的关键步骤和失败的模型。在编写任何机器学习代码之前,第一步应该是充分了解手头的数据(输入)和预测任务(输出)。这意味着需要对问题有生物学上的理解,例如了解数据的来源和噪声来源,以及从生物学原理上理解如何从输入预测输出。

例如,可以推理出不同的氨基酸可能对蛋白质中的特定二级结构有偏好,因此可以根据蛋白质序列中每个位置的氨基酸频率来预测二级结构。了解输入和输出在计算机中如何存储也很重要。它们是否经过归一化处理,以防止某个特征对预测产生过大的影响?它们是以二进制变量还是连续变量进行编码的?是否存在重复条目?是否有缺失的数据元素?

接下来,应该将数据划分以进行训练、验证和测试。有很多方法可以实现这一点,其中有两种方法如图2a所示。训练集用于直接更新正在训练的模型的参数。验证集通常约占可用数据的10%,用于监控训练、选择超参数以及防止模型在训练数据上发生过拟合。通常使用k-fold交叉验证 (机器学习 - 训练集、验证集、测试集):将训练集分为k个大小相等的分区(例如,五个或十个),形成k个不同的训练和验证集,基于不同的分区组合进行模型训练并评估性能以选择最佳超参数。测试集(有时称为“保留集”)通常也占可用数据的10%,用于评估模型在未用于训练或验证的数据上的性能(即估计其预期的实际应用性能)。测试集应仅在研究最后或尽可能少地使用,以避免调整模型以适应测试集。有关在制定公平测试集时需要考虑的问题,请参阅数据泄漏部分。

下一步是模型选择,这取决于数据的性质和预测任务,并在图1中进行了总结。训练集用于根据所使用的软件框架的最佳实践对模型进行训练。大多数方法都有几个需要调整以实现最佳性能的超参数。这可以通过随机搜索网格搜索来完成,并可以与上述的k-flod交叉验证相结合。还应该考虑模型集成,其中多个相似模型的输出简单地取平均值,以提供相对可靠的方式来提高建模任务的整体准确性。

最后,应评估模型在测试集上(见上文)的准确性。

dc4c2eb4353408add1d91bc186d43faf.png

图1 | 选择和训练机器学习方法。最上面的灰色矩形框流程显示了训练机器学习方法的总体过程。下面给出了一个辅助研究人员选择模型的决策树。该流程图旨在用作链接本综述中概述的概念的视觉指南。然而,像这样的简单概述无法涵盖每一个情况。例如,机器学习适用所需的数据点数量取决于每个数据点可用的特征数量,特征越多,数据点就需要越多,同时也取决于所使用的模型。还有一些深度学习模型可以处理无标签数据。

b850a78bbbb1348f3d9ca5d189d8b072.png

图2 | 训练机器学习方法。a | 可用数据通常被划分为训练集、验证集和测试集。训练集直接用于训练模型,验证集用于监控训练,测试集用于评估模型性能。也可以使用带测试集的k-fold交叉验证。b | 独热码是表示分类输入的常用方法,其中从多个可能性中仅允许选择一个,本例中是三种可能的蛋白质二级结构类别。编码的结果是一个包含三个数值的向量,除了占据的类别被设为1之外,所有数值均等于0。这个向量由机器学习模型使用。c | 采用连续编码表示数值输入,本例中是图像中像素的红、绿、蓝(RGB)值。同样,结果是一个包含三个数值的向量,分别对应像素中的红、绿、蓝。d | 未能学习到变量之间的基本关系称为“欠拟合”,而把训练数据中的噪声都学习到的称为“过拟合”。欠拟合可能是因为使用了复杂度较低的模型造成的。过拟合可能是由于使用参数过多的模型,或者在学习到变量之间真实关系后继续训练造成的。e | 模型的学习率决定了在训练神经网络或一些传统方法(如梯度提升)时,学习参数调整的速度。低学习率可能导致训练速度慢、耗时且需要大量计算能力。相反,高学习率可能导致在非最优解上快速收敛,模型性能较差。f | 提前停止是指在验证集上的损失函数开始增加的时候终止训练,即使训练集上的损失函数仍在减少。使用提前停止可以防止过拟合

深度学习:基于神经网络的机器学习方法。形容词“深度”指的是网络中使用许多隐藏层,最少为两个隐藏层,但通常比这多得多。深度学习是机器学习的一个子集,因此也是更广泛的人工智能的一个子集。(ResNet 152层,GoogleNet 22 层,VGG 19 层, AlexNet 8 层;红色数字表示模型的评估错误率。图片来自台大李宏毅老师的课件。)

4413a219520df2da79aa3445c61bb7c5.png

人工神经网络:一组连接的节点,它们松散地表示生物大脑中神经元的连通性。每个节点都是一个层的一部分,表示从前一层计算出的一个数字。连接或边缘允许信号通过隐藏层从输入层流向输出层。

基准真相:与机器学习模型的输出进行比较以训练模型和测试性能的真实值。这些数据通常来自实验数据(例如,DNA区域对转录因子的可及性)或人类专家的注释(例如健康或病理医学图像)。

编码:以适合用于机器学习模型的形式对(通常是分类)数据进行数字表示的任何方案。编码可以是固定的数字表示(例如,独热码或连续编码),也可以使用与模型其余部分一起训练的参数来定义。

独热码:一种编码方案,使用n个唯一的n维向量表示固定的n个分类输入,每个向量中有一个元素设置为1,其余设置为0。例如,三个字母(A,B,C)可以分别用三个向量[1,0,0],[0,1,0]和[0,0,1]表示。

均方误差:一种损失函数,计算预测值与基准值之间的平均平方差。该函数严重惩罚异常值,因为随着预测值与基准真相之间的差距增大,它会迅速增加。

二元交叉熵:训练二元分类器的最常见损失函数;也就是说,用于回答只有两个选择(如癌症与非癌症)的问题的任务;有时称为“对数损失”。

好书推荐 - 生物学家必备大数据使用计算技巧

面对生物数据的急速增长,对大数据的分析处理能力是生物学家普遍缺乏又急需掌握的能力。本书是在作者开发计算工具和帮助许多生物学家解决计算问题时总结经验的基础上诞生的,是针对生物学家撰写的简明实用教程,它将一系列强大而灵活的实用工具汇集到一起,容易学习入门。本书内容以分子生物信息学数据为主,但也适用于多种其他生物数据的分析工作。本书原版问世至今,一直是欧美高校生物专业和相关研究机构必备的热销图书。

ba1ed5624672d3172dfb2d0bdddeb1db.jpeg

往期精品(点击图片直达文字对应教程)

587b0e6041eca19791e8d1311a0cf3f7.jpeg

cb4f066f443083e249516ca2d8a1ead1.jpeg

23ec94848d6f0548cfb97fda27145b13.jpeg

b55441c0c08a030e8aacea93fc17abed.jpeg

a452e9b96c7e2d84f3ac12a7ab0ae430.jpeg

4b18af28828393b77a93c51e4a678d72.jpeg

07f3bfe5d875404c03ee982dda3571a3.jpeg

7dc6873f7927617fedefab4e2c9dbe84.jpeg

0d62d8e8e0c6a1609911d3040b0c09cc.jpeg

5decb6b3bd9ef88ab2b056ccd8f01807.jpeg

2e63461b0ba8dcaca1bdb44d61769fb4.jpeg

7013a9e60e401c56f0800a27ec538cc4.jpeg

30eb4c7ad8416da2df64810e284a2eba.png

a5e6235daa3c0930be43f9e48bb95af6.png

0aa22f26b826b79de5687cd603261c8a.png

36f6d24ce668588bdc7f335e93d392d8.png

97d1ec5b7108ebb4c6fcdd227b482d07.jpeg

89cbde0e6d93720acd3e5aadf9803bf4.jpeg

9b0292eb60e26f6ebeecb8e7599c32be.jpeg

f2b091120586c03021e7f3a5b3d7b422.jpeg

d909858de588523621fbaeb0fcaed98f.png

d0543442aa14596c2e4b95a5d7588eea.png

8d31f60a12eac5cd384399575c578f66.jpeg

b6d8cd9ac2ad2e226d1a1d64ae720993.png

1d4d02ce02a6bab29de01fa08b5d0081.png

dc7171f78c07f2ca24b83da962472b77.jpeg

fdc09d3f7dfb10fa2bbeddd5ec3587f6.png

1a23c325d97767d0f6d5a67e1e828ac9.png

机器学习

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

53fada2901134940d36572868ff6ccb1.jpeg

234172410eb96ccbd1c97dc28cacde80.jpeg

4f683faa95adc575ef4682196bfac5f8.png

f799ba2a1bbfa6f480b4daa6354e829f.png

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

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

相关文章

好用免费,国内手机人人都能玩的GPT!

用了这个长时间的chatgpt真的是觉得离不开它,太好用的!又是是写作,编程,日常的一些咨询搜索的事情全部交给它了!但是很少有人在手机上能玩GPT! 对于大多数普通选手来说,想在手机上玩GPT,始终离不…

王一茗: “大数据能力提升项目”与我的成长之路 | 提升之路系列(三)

导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的“π”型人才,由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

8种不同类型的防火墙

什么是防火墙? 防火墙是一种监视网络流量并检测潜在威胁的安全设备或程序,作为一道保护屏障,它只允许非威胁性流量进入,阻止危险流量进入。 防火墙是client-server模型中网络安全的基础之一,但它们容易受到以下方面的…

R语言 | 处理矩阵与更高维数据

目录 一、矩阵 1.1 建立矩阵 ​1.2 认识矩阵的属性 1.3 将向量组成矩阵 二、取得矩阵元素的值 2.1 矩阵元素的取得 2.2 使用负索引取得矩阵元素 三、修改矩阵的元素值 四、降低矩阵的维度 五、矩阵的行名和列名 5.1 取得和修改矩阵对象的行名和列名 5.2 dimnames()函数…

【MySQL自学之路】第4天——模式、表、视图、索引(数据定义详细版)

目录 前言 数据库 数据库的建立 数据库的使用 数据库的查看 数据库的删除 模式 查看所有的模式 模式和数据库之间的关系 ​编辑建立模式 删除模式 表 数据类型 查看一个数据库下面的所有表(必须进入要查看的数据库) 创建基本表 查看表结构(查看表建…

EU GMP附录一与关键区域空气微生物取样方案及相关法规标准解读

2022版EU GMP附录一与关键区域空气微生物取样方案疑问解答 3月30日2022版EU GMP附录一与关键区域空气微生物取样方案网络研讨会期间,我们收集到了部分参会听众针对该主题所提出的常见问题。根据以下这些问题,lighthouse微生物应用专家将来为您答疑解惑。…

多功能自动化智能运维平台,提升集群的全自动运维效率

一、开源项目简介 致力于打造一个集主机管理、配置部署、监控报警、异常诊断、安全审计等一系列功能的自动化运维平台。 探索创新的sysAK、ossre诊断工具及高效的LCC(Libbpf Compiler Collection)开发编译平台和netinfo网络抖动问题监控系统等&#xff…

放射学中的自然语言处理技术综述

放射学中的自然语言处理技术综述 写在最前面预览CLINICAL APPLICATIONS Automatic Protocoling 临床应用程序自动协议Extraction of Language Features, Patient Cohorting, and Coded Ontology from Charts 从图表中提取语言特征、患者队列和编码本体Medical Imaging Appropri…

vulnhub靶场之bluemoon

1.信息收集 存活主机进行探测,发现主机192.168.239.176存活。 对主机192.168.239.176进行端口扫描,发现21、22、80端口 访问http://192.168.239.176,并查看源码未发现可利用的行为。 进行目录扫描发现可疑路径/hidden_text 浏览器访问h…

Python的经典结构算法

学会了 Python 基础知识,想进阶一下,那就来点算法吧!毕竟编程语言只是工具,结构算法才是灵魂。 那新手如何入门 Python 算法呢? 几位印度小哥在 GitHub 上建了一个各种 Python 算法的新手入门大全。从原理到代码&…

SQL server 数据库同步(发布与订阅)【解决办法】

SQL server 数据库同步(发布与订阅)【解决办法】 一、本地防火墙放通二、创建共享文件夹2.1 在发布服务器上创建共享文件夹,该文件夹用于提供数据库信息同步的媒介2.2 设置共享权限,添加所有人,权限为读取 三、发布服务…

NetMQ | 发布订阅时使用含通配符的Topic

NetMQ | 发布订阅时使用含通配符的Topic 文章目录 NetMQ | 发布订阅时使用含通配符的Topic前言通配符如何使用通配符通配符的作用结束语 前言 今天我来介绍一下NetMQ发布订阅时如何使用含通配符的Topic,让我们能够更加灵活地订阅消息。 什么是Topic? 在NetMQ中&am…

这一次,让Kotlin Flow 操作符真正好用起来

前言 Kotlin Flow 如此受欢迎大部分归功于其丰富、简洁的操作符,巧妙使用Flow操作符可以大大简化我们的程序结构,提升可读性与可维护性。 然而,虽然好用,但有些操作符不太好理解,可惜的是网上大部分文章只是简单介绍其…

1970-01-01是什么?为什么计算机起始时间是1970年1月1日

我们是不是也曾见到过或者听说过1970-01-01,而且它好像常常存在于计算机行业,非常常见,从事IT行业的兄弟应该都接触过,那么到底为什么是1970-01-01,而不是其他呢? 其实,1970-01-01对于开发者来说都是不陌生…

带你了解现在的LED显示屏技术

随着LED显示屏技术的空前繁荣,LED显示屏产品备受关注,广泛应用于商业广告、实况播映、交通诱导、舞台演绎等领域,发展至今。你了解十大中国LED显示屏制造商吗? LED显示屏技术已经得到了长足的发展,现在的LED显示屏技术…

智融合·共未来丨智合同携手百融云创打造合同智能化应用服务平台

人工智能技术是当今社会的热议话题之一。近年来,众多企业在人工智能领域持续布局,相关技术已在社会生产各环节极大地提高了生产效率。如果把过去信息技术产业的发展比喻为“手工时代”,那么人工智能技术的出现则将把信息技术产业推向“自动化…

数据库迁移 | DBMotion v23.04 支持异地多活

Squids DBMotion新版本支持异地多中心双活同步了。异地多活支持业务在多个数据中心同时操作数据库,能极大地提升高可用性、容错性和用户体验。其中最关键的技术,无疑是数据同步、同步防环和数据冲突解决。Squids DBMotion通过复制数据打标和预置冲突策略…

生产凭证补传操作步骤

凭证包文件包含:身份证正面、身份证背面、拍照图片、身份证头像图片、联网核查文件、签名文件、签名轨迹文本、凭证json文件。 一、证件信息重复或者模糊。 1.提供业务流水号、证件信息。 2.将证件信息通过安全U盘导入生产机。 3.根据业务流水号前8位设备号及业务流…

电信及互联网行业数据安全内控审计建设实践 | 盾见

文|龚磊 伴随数据安全“五法一典”出齐,2021年成为我国数据安全元年。各地、各行业不断加快数据安全政策体系的完善与落地执行。政企机构不断强化数据安全建设,共同助力网络安全行业高景气度维系。 2021年6月,网络安全等保测评报告模板新版发…

计算机网络学习02

1、TCP 与 UDP 的区别? 是否面向连接 : UDP 在传送数据之前不需要先建立连接。而 TCP 提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。是否是可靠传输: 远地主机在收到 UDP 报文后&…