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

机器学习---RBM、KL散度、DBN

1. RBM

1.1 BM

      BM是由Hinton和Sejnowski提出的一种随机递归神经网络,可以看做是一种随机生成的

Hopfield网络,是能够通过学习数据的固有内在表示解决困难学习问题的最早的人工神经网络之

一,因样本分布遵循玻尔兹曼分布而命名为BM。BM由二值神经元构成,每个神经元只取1或0这两

种状态,状态1代表该神经元处于接通状态,状态0代表该神经元处于断开状态。在下面的讨论中单

元和节点的意思相同,均表示神经元。

上图为一个玻尔兹曼机(BM),其蓝色节点为隐层,白色节点为输入层。玻尔兹曼机和递归神经

网络相比,区别体现在以下几点:

①递归神经网络(RNN)本质是学习一个映射关系,因此有输入和输出层的概念,而玻尔兹曼机

的用处在于学习一组数据的“内在表示”,因此其没有输出层的概念。

②递归神经网络各节点链接为有向环,而玻尔兹曼机各节点连接成无向完全图。

1.2 RBM
        限制玻尔兹曼机中,所谓的限制就是:将完全图变成了二分图。如图所示,限制玻尔兹曼机

由三个显层节点和四个隐层节点组成。


        RBM中,所有可见单元和隐单元之间存在连接,而隐单元两两之间和可见单元两两之间不存

在连接,也就是层间全连接,层内无连接(这也是和玻尔兹曼机BM模型的区别,BM是层间、层内

全连接)。其中,每一个节点(无论是Hidden Unit还是Visible Unit)都有两种状态:处于激活状

态时值为1,未被激活状态值为0。

       这里的0和1状态的意义是代表了模型会选取哪些节点来使用,处于激活状态的节点被使用,未

处于激活状态的节点未被使用。节点的激活概率由可见层和隐藏层节点的分布函数计算。

        RBM本质是无监督学习(Unsupervised Learning)的利器(Hinton和吴恩达都认为:将来的

机器学习任务慢慢都会转变为无监督学习的),因为,它可以用于降维(隐层少一点),学习特征

(隐层输出就是特征),自编码器(AutoEncoder)以及深度信念网络(多个RBM堆叠而成)等。

       RBM是两层神经网络,这些浅层神经网络是DBN(深度信念网络)的构建块,RBM的第一层

被称为可见层或输入层,他的第二层被称为输出层。

        上图的每一个圆圈代表一个类似的神经元节点, 这个节点通常是产生计算的地方,相邻层的

节点是连接的,但是同层的节点是不连接的。

       每个输入单元以数据集样本中的低级特征作为输入。例如,对于一个由灰度图组成的数据集,

每个输入节点都会接收图像中的一个像素值。MNIST 数据集有784个像素点,所以处理它们的神经

网络必须有784个输入节点。

       现在让我们跟随单像素穿过这两层网络。在隐藏层的节点1,x和一个权重相乘,然后再加上一

个偏置项。这两个运算的结果可作为非线性激活函数的输入,在给定输入x时激活函数能给出这个

节点的输出,或者信号通过它之后的强度。这里其实和我们常见的神经网络是一样的过程。

activation f((weight w*input x)+bias b)=output a 

        如果这两层是更深网络的一部分,那么第一个隐藏层的输出会被传入到第二个人隐藏层作为

输入,从这里开始就可以有很多隐藏层,直到他们增加到最终的分类层,对于简单的前馈网络,

RBM起着自编码器的作用,除此之外,别无其它。

1.3 重建(Reconstruction)

       但是在本文关于RBM的介绍中,我们会集中讨论它们如何以一种无监督的方式通过自身来重

建数据,这使得在不涉及更深层网络的情况下,可见层和第一个隐藏层之间会存在数次前向和反向

传播。
        在重建阶段,第一个隐藏层的激活状态变成了反向传递过程中的输入。它们与每个连接边相

同的权重相乘,就像x在前向传递的过程中随着权重调节一样。这些乘积的和在每个可见节点处又

与可见层的偏置项相加,这些运算的输出就是一次重建,也就是对原始输入的一个逼近。这可以通

过下图表达:

       因为RBM的权重是随机初始化的,所以,重建结果和原始输入的差距通常会比较大。你可以

将r和输入值之间的差值看做重建误差,然后这个误差会沿着 RBM的权重反向传播,以一个迭代学

习的过程不断反向传播,直到达到某个误差最小值。

       在前向传递过程中,给定权重的情况下 RBM 会使用输入来预测节点的激活值,或者输出的概

率 x:p(a|x; w)。

       但是在反向传播的过程中,当激活值作为输入并输出原始数据的重建或者预测时,RBM 尝试

在给定激活值a的情况下估计输入x的概率,它具有与前向传递过程中相同的权重参数。这第二个阶

段可以被表达为p(x|a;w)

        这两个概率估计将共同得到关于输入x和激活值a的联合概率分布,或者p(x,a)。重建与回

归有所不同,也不同于分类。回归基于很多输入来估计一个连续值,分类预测出离散的标签以应用

在给定的输入样本上,而重建是在预测原始输入的概率分布。

        这种重建被称之为生成学习,它必须跟由分类器执行的判别学习区分开来。判别学习将输入

映射到标签上,有效地在数据点与样本之间绘制条件概率。若假设 RBM的输入数据和重建结果是

不同形状的正态曲线,它们只有部分重叠。

       在RBM中,任意两个相连的神经元之间有一个权值w表示其连接强度,每个神经元都有一个偏

置系数b(对显层神经元)和c(对隐层神经元)来表示自身权重。

这样,就可以用一个函数来表示一个RBM的能量:

在一个RBM中,一个隐藏神经元 hj 被激活的概率:

由于是双向连接,显层神经元也可以被隐层神经元激活:

 其中,σ代表代表sigmoid函数,也可以设定其他函数。

        为了衡量输入数据的预测概率分布和真实分布之间的距离,RBM使用KL散度来度量两个分布

的相似性。KL散度测量的是两条曲线的非重叠区域或者说发散区域,RBM的优化算法尝试最小化

这些区域,所以当共享权重与第一个隐藏层的激活值相乘时就可以得出原始输入的近似。图的左边

是一组输入的概率分布p及其重构分布q,图的右侧是它们的差的积分。

       迭代的根据它们产生的误差来调节权重,RBM学会了逼近原始数据,你可以说权重在慢慢地

反应输入数据的结构,并通过隐藏层的激活值进行编码学习过程就像两个概率分布在逐渐重合。

2. KL散度

2.1 例子

       假设我们是一群太空科学家,经过遥远的旅行,来到了一颗新发现的星球。在这个星球上,生

存着一种长有牙齿的蠕虫,引起了我们的研究兴趣。我们发现这种蠕虫生有10颗牙齿,但是因为不

注意口腔卫生,又喜欢嚼东西,许多蠕虫会掉牙。收集大量样本之后,我们得到关于蠕虫牙齿数量

的经验分布:

       显然我们的原始数据并非均分布的,但也不是我们已知的分布,至少不是常见的分布。作为备

选,我们想到的另一种简单模型是二项式分布(binomlal distribution)。蠕虫嘴里面共有n=10个牙

槽,每个牙槽出现牙齿与否为独立事件,且概率均为p。则蠕虫牙齿数量即为期望值E[x]=np,真实

期望值即为观察数据的平均值,比如说5.7,则p=0.57,得到如下图所示的二项式分布:

       KL散度源于信息论。信息论主要研究如何量化数据中的信息。最重要的信息度量单位是熵

(Entropy),一般用H表示。分布的熵的公式如下:

       上面对数没有确定底数,可以是2、e或10,等等。如果我们使用以2为底的对数计算H值的

话,可以把这个值看作是编码信息所需要的最少二进制位个数(bits)。上面空间蠕虫的例子中,信

息指的是根据观察所得的经验分布给出的蠕虫牙齿数量。计算可以得到原始数据概率分布的熵值为

3.12 bits。这个值只是告诉我们编码蠕虫牙齿数量概率的信息需要的二进制位bit的位数。

2.2 KL散度度量信息损失

       只需要稍微修改熵H的计算公式就能得到KL散度的计算公式,设p为观察得到的概率分布,q为

另一分布来近似p,则p、q的KL散度为:

       显然,根据上面的公式,KL散度其实为数据的原始分布p与近似分布q之间的对数差值的期

望,如果继续用2为底的对数计算,用KL散度值表示信息损失的二进制位数,下面用公式以期望表

达KL散度:

一般,KL散度以下面的书写更常见:

对比两种分布:

       首先是均匀分布来近似原始分布的KL散度:

       接下来计算用二项分布 :

       通过上面的计算可以看出,通过均匀分布近似原始分布的信息损失要比二项分布的值小,因

此,在这个例子中,均匀分布更好一些。

3 DBN

3.1 多层受限玻尔兹曼机

       一旦 RBM 学到了与第一隐藏层激活值有关的输入数据的结构,那么数据就会沿着网络向下传

递一层。你的第一个隐藏层就成为了新的可见层或输入层。这一层的激活值会和第二个隐藏层的权

重相乘,以产生另一组的激活。

       这种通过特征分组创建激活值集合序列,并对特征组进行分组的过程是特征层次结构的基础,

通过这个过程,神经网络学到了更复杂的、更抽象的数据表征。

它们是一种无向图模型,也被称作马尔科夫随机场。

了解工作原理之后就可以看看RBM是如何通过数据学习的了:

       RBM共有五个参数:h、v、b、c、W,其中b、c、W,也就是相应的权重和偏置值,是通过

学习得到的。(v是输入向量,h是输出向量)

       对于一条样本数据x,采用对比散度算法对其进行训练:

       将x赋给显层的,利用(2)式计算出隐层中每个神经元被激活的概率P(h1|v1);

       从计算的概率分布中采取Gibbs抽样抽取一个样本:

       用h1重构显层,即通过隐层反推显层,利用(3)式计算显层中每个神经元被激活的概率P

(v2|h1);

       同样地,从计算得到的概率分布中采取Gibbs抽样抽取一个样本:

        通过v2再次计算隐层中每个神经元被激活的概率,得到概率分布P(h2|v2)

        更新权重:

      若干次训练后,隐层不仅能较为精准地显示显层的特征,同时还能够还原显层,当隐层神经元

数量小于显层时,则会产生一种“数据压缩”的效果,也就类似于自动编码器。

3.2 多层置信网络结构

      首先,你需要用原始输入x(k)训练第一个RBM,它能够学习得到原始输入的一阶特征表

 h^{(1)(k)}。

       接着,你需要把原始数据输入到上述训练好的稀疏自编码器中,对于每一个输入 x(k),都可以

得到它对应的一阶特征表示 h^{(1)(k)}。然后你再用这些一阶特征作为另一个稀疏自编码器的输

入,使用它们来学习二阶特征  h^{(2)(k)}。 

       再把一阶特征输入到刚训练好的第二层稀疏自编码器中,得到每个h^{(1)(k)} 对应的二阶特征

激活值  h^{(2)(k)}。接下来,你可以把这些二阶特征作为softmax分类器的输入,训练得到一个能

将二阶特征映射到数字标签的模型。 

       最终,你可以将这三层结合起来构建一个包含两个隐藏层和一个最终softmax分类器层的栈式

自编码网络,这个网络能够如你所愿地对MNIST数字进行分类。 

       DBNs由多个限制玻尔兹曼机(Restricted Boltzmann Machines)层组成,一个典型的神经网

络类型如图所示。 

       最终在构筑好整个网络后,相当于进行了一次完整的无监督学习。在确定了网络的权值后,再

次根据样本,以BP神经网络的算法,进行一次有监督的学习过程。这一过程被称为多层置信网络

的微调。

 

 

 

相关文章:

机器学习---RBM、KL散度、DBN

1. RBM 1.1 BM BM是由Hinton和Sejnowski提出的一种随机递归神经网络,可以看做是一种随机生成的 Hopfield网络,是能够通过学习数据的固有内在表示解决困难学习问题的最早的人工神经网络之 一,因样本分布遵循玻尔兹曼分布而命名为BM。BM由二…...

(c语言)有序序列合并

#include<stdio.h>//输入包含三行 //第一行包含两个正整数n,m&#xff0c;用空格分割,n表示第二行第一个升序序列中 //数字的个数,m表示第三行第二个升序序列中数字的个数 //第二行包含n个整数&#xff0c;用空格分割 //第三行包含m个整数&#xff0c;用空格分割 //输出…...

小谈设计模式(18)—适配器模式

小谈设计模式&#xff08;18&#xff09;—适配器模式 专栏介绍专栏地址专栏介绍 适配器模式角色分析目标接口&#xff08;Target&#xff09;源接口&#xff08;Adaptee&#xff09;适配器&#xff08;Adapter&#xff09; 核心思想应用场景Java程序实现输出结果程序分析123 优…...

Python柱形图

柱形图 柱形图&#xff0c;又称长条图、柱状统计图、条图、条状图、棒形图&#xff0c;是一种以长方形的长度为变量的统计图表。长条图用来比较两个或以上的价值&#xff08;不同时间或者不同条件&#xff09;&#xff0c;只有一个变量&#xff0c;通常利用于较小的数据集分析…...

用OpenCV(Python)获取图像的SIFT特征

import cv2 as cv import numpy as np import matplotlib.pyplot as plt imgcv.imread("../Lena.png") img_graycv.cvtColor(img,cv.COLOR_BGR2GRAY)#创建一个SIFI对象 siftcv.SIFT_create()#使用SIFT对象在灰度图像img_gray中检测关键点&#xff0c;结果存储在变量k…...

阿里云ECS和轻量服务器有什么区别?

阿里云服务器ECS和轻量应用服务器有什么区别&#xff1f;轻量和ECS优缺点对比&#xff0c;云服务器ECS是明星级云产品&#xff0c;适合企业专业级的使用场景&#xff0c;轻量应用服务器是在ECS的基础上推出的轻量级云服务器&#xff0c;适合个人开发者单机应用访问量不高的网站…...

华为云云耀云服务器L实例评测|安装搭建学生成绩管理系统

1.前言概述 华为云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。多种产品规格&#xff0c;满足您对成本、性能及技术创新的诉求。云耀云服务器L实例提供丰富严选的应用镜像&#xff0c;实现应用一键部署&#xff0c;助力客户便捷高效的在…...

Audacity 使用教程:轻松录制、编辑音频

Audacity 使用教程&#xff1a;轻松录制、编辑音频 1. 简介 Audacity 是一款免费、开源且功能强大的音频录制和编辑软件。它适用于 Windows、Mac 和 Linux 等多种操作系统&#xff0c;适合音乐制作、广播后期制作以及普通用户进行音频处理。本教程将带领大家熟悉 Audacity 的…...

深入了解“注意力”和“变形金刚”-第2部分

一、说明 在上一个故事中&#xff0c;我已经解释了什么是注意力机制&#xff0c;以及与转换器相关的一些重要关键字和块&#xff0c;例如自我注意、查询、键和值以及多头注意力。 在这一部分中&#xff0c;我将解释这些注意力块如何帮助创建转换器网络&#xff0c;并详细讨论网…...

​“债务飙升!美国一天内增加2750亿美元,金融震荡的前奏已拉开帷幕!”

2023年10月4日&#xff0c;美国政府向美国债务追加2750亿美元&#xff0c;相当于现在比特币&#xff08;BTC&#xff09;总市值的一半还多。 有人会说:多一点、少一点&#xff0c;没什么区别.....确实&#xff0c;当你看美国债务时&#xff0c;2750亿美元并没有什么意义&#x…...

最新Uniapp软件社区-全新带勋章源码

测试环境&#xff1a;php7.1。ng1.2&#xff0c;MySQL 5.6 常见问题&#xff1a; 配置好登录后转圈圈&#xff0c;检查环境及伪静态以及后台创建好应用 上传图片不了&#xff0c;检查php拓展fileinfo 以及public文件权限 App个人主页随机背景图&#xff0c;在前端uitl文件夹里面…...

基于goravel的CMS,企业官网通用golang后台管理系统

2023年9月11日10:47:00 仓库地址&#xff1a; https://gitee.com/open-php/zx-goravel-website 框架介绍 Goravel SCUI 后端开发组件 go 1.20 Goravel 1.13 数据库 sql(使用最新日期文件) goravel\doc\sql_bak mysql 8.0 前端开发组件 scui 1.6.9 node v14.21.3 效果图…...

(五)激光线扫描-位移台标定

线激光属于主动测量方式,但是由于线激光的特性,我们只能通过提取激光中心线获取这一条线上的高度信息,那么要进行三维重建的话,就需要通过平移或者是旋转的方式,来让线激光扫描被测物体的完整轮廓,也就是整个表面。激光线的密度越高还原出来的物体越细腻,但由于数据量大…...

媒体发稿:为什么选择国内媒体推广一文带你领略其魅

随着互联网的飞速发展&#xff0c;媒体推广成为企业宣传的重要方式。国内媒体推广因其独特的魅力和广泛的传播渠道&#xff0c;逐渐成为企业选择的首选。本文将探讨为什么选择国内媒体推广&#xff0c;并带您领略其魅力。 1. 国内媒体推广的广泛传播渠道 国内媒体推广拥有广泛…...

基于自私羊群优化的BP神经网络(分类应用) - 附代码

基于自私羊群优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于自私羊群优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.自私羊群优化BP神经网络3.1 BP神经网络参数设置3.2 自私羊群算法应用 4.测试结果…...

AI绘图:GPT4技术的艺术化呈现与无限可能

了解更多点击《AI绘图&#xff1a;GPT4技术的艺术化呈现与无限可能》 GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。例如在科研编程、绘图领域&#xff1a; 1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATL…...

Go Gin Gorm Casbin权限管理实现 - 1. Casbin概念介绍以及库使用

1. 核心概念 核心配置中含两部分模型配置以及策略配置&#xff0c;给出两个示范配置&#xff0c;在此基础上对实际请求进行分析。 1.1 Model 模型文件&#xff0c;存储了请求定义(request_definition)&#xff0c;策略定义(policy_definition)&#xff0c;匹配规则(matchers)&a…...

JUC第十五讲:JUC集合-ConcurrentHashMap详解(面试的重点)

JUC第十五讲&#xff1a;JUC集合-ConcurrentHashMap详解 本文是JUC第十五讲&#xff1a;JUC集合-ConcurrentHashMap详解。JDK1.7之前的ConcurrentHashMap使用分段锁机制实现&#xff0c;JDK1.8则使用数组链表红黑树数据结构和CAS原子操作实现ConcurrentHashMap&#xff1b;本文…...

【TensorFlow Hub】:有 100 个预训练模型等你用

要访问TensorFlow Hub&#xff0c;请单击此处 — https://www.tensorflow.org/hub 一、说明 TensorFlow Hub是一个库&#xff0c;用于在TensorFlow中发布&#xff0c;发现和使用可重用模型。它提供了一种使用预训练模型执行各种任务&#xff08;如图像分类、文本分析等&#xf…...

vulnhub靶机doubletrouble

下载地址&#xff1a;doubletrouble: 1 ~ VulnHub 主机发现 arp-scan -l 端口扫描 nmap --min-rate 1000 -p- 192.168.21.151 端口服务扫描 nmap -sV -sT -O -p22,80 192.168.21.151 漏洞扫描 nmap --scriptvuln -p22,80 192.168.21.151 先去看看web页面 这里使用的是qdpm …...

【数据结构】排序算法(二)—>冒泡排序、快速排序、归并排序、计数排序

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.冒泡排序 2.快速排序 2.1Hoare版 2.2占…...

SpringCloud-消息组件

1 简介 了解过RabbitMQ后&#xff0c;可能我们会遇到不同的系统在用不同的队列。比如系统A用的Kafka&#xff0c;系统B用的RabbitMQ&#xff0c;但是没了解过Kafka&#xff0c;因此可以使用Spring Stream&#xff0c;它能够屏蔽地产&#xff0c;像JDBC一样&#xff0c;只关心SQ…...

oringin的x轴(按x轴规定值)绘制不规律的横坐标

1.双击x轴 2.选择刻度线标签 3.选择刻度...

ubuntu安装MySQL

一行指令即可! sudo apt install mysql-server常用MySQL服务指令 sudo service mysql status # 查看服务状态 sudo service mysql start # 启动服务 sudo service mysql stop # 停止服务 sudo service mysql restart # 重启服务终端里面进入Mysql 其中-u后面root是我的用户名…...

背包问题学习笔记-多重背包问题

题意描述&#xff1a; 有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件&#xff0c;每件体积是 vi&#xff0c;价值是 wi。求解将哪些物品装入背包&#xff0c;可使物品体积总和不超过背包容量&#xff0c;且价值总和最大。 输出最大价值。输入格式 第一行两个整数…...

Net相关的各类开源项目

Net相关的各类开源项目 WPFHandyControlLive-ChartsWPFDeveloperswpf-uidesignStylet WebScheduleMasterYiShaAdminBlog.CoreNebula.AdminNewLife.CubeOpenAuth UnityuGUIUnityCsReferenceEpitomeMyUnityFrameWorkKSFrameworkTowerDefense-GameFramework-Demo 通用ClientServer…...

阿里云服务器修改IP地址的两种方法

阿里云服务器可以更换IP地址吗&#xff1f;可以的&#xff0c;创建6小时以内的云服务器ECS可以免费更换三次公网IP地址&#xff0c;超过6小时的云服务器&#xff0c;可以将公网固定IP地址转成弹性EIP&#xff0c;然后通过换绑EIP的方式来更换IP地址。阿里云服务器网分享阿里云服…...

SpringMVC的数据绑定

一、前言 SpringMVC的数据绑定是指将HTTP请求参数绑定到Java对象上。这样可以方便地从请求中获取数据并将其传递给业务逻辑。在SpringMVC中&#xff0c;可以使用RequestParam和ModelAttribute等注解来实现数据绑定。 二、使用RequestParam注解 RequestParam注解用于将请求参…...

1.1.OpenCV技能树--第一单元--OpenCV简介

目录 1.文章内容来源 2.OpenCV简介 3.课后习题代码复现 4.易错点总结与反思 1.文章内容来源 1.题目来源:https://edu.csdn.net/skill/practice/opencv-77f629e4593845b0bf97e74ca8ec95ae/8292?languageopencv&materialId20807 2.资料来源:https://edu.csdn.net/skill…...

transformer不同的包加载模型的结构不一样

AutoModel AutoModelForTokenClassification 结论&#xff1a; AutoModel加载的模型与AutoModelForTokenClassification最后一层是不一样的&#xff0c;从这个模型来看&#xff0c;AutoModelForTokenClassification加载的结果是对的 问题&#xff1a; 为什么AutoModel和Aut…...

网站设计配色怎么做/北京百度搜索排名优化

一、电路原理讲解&#xff1a;主要包含过零检测电路、风速检测电路、风速驱动电路&#xff1a;风速驱动电路&#xff1a;为了满足空调正常的运转&#xff0c;达到制冷、制热能力的平衡&#xff0c;所以必须保证室内风机的转速满足系统的要求&#xff0c;并保持转速的稳定。为达…...

重庆搜索引擎推广/优化网站排名方法教程

Mozilla刚刚发布了Firefox的一个新版本&#xff0c;它在所有支持的平台上都进行了一系列改进&#xff0c;包括Windows、Linux和macOS。你可以通过下面的链接下载Firefox 66&#xff0c;它是第一个在默认情况下阻止所有带有声音的自动播放媒体的版本。如果用户希望在加载时启用此…...

网站建设丶金手指花总13/线上推广的公司

转自&#xff1a;https://www.cnblogs.com/best/p/6225621.html 一、验证 angularJS中提供了许多的验证指令&#xff0c;可以轻松的实现验证&#xff0c;只需要在表单元素上添加相应的ng属性&#xff0c;常见的如下所示&#xff1a; <input Type"text" ng-model&q…...

网站二级菜单是什么/怎样做公司网站推广

如有转载&#xff0c;请申明&#xff1a; 转载至 http://blog.csdn.net/qq_35064774/article/details/53057332 1. 为什么写这篇文章 RxJava这些年越来越流行&#xff0c;而上月末(2016.10.29)发布了2.0正式版&#xff0c;但网上大部分关于RxJava的教程都是1.x的。关于2.0的…...

东莞网站建设公司/做公司网站需要多少钱

目录 一、面向对象程序设计概述 二、使用预定义类 三、用户自定义类 四、静态域和静态方法 五、方法参数 六、对象构造 对象析构与finalize方法 七、包 包的导入 静态导入 将类放入包中 包作用域 八、类路径 设置类路径 九、文档注释 注释的插入 类注释 方法注释 …...

互联网行业pest分析/北京网站seo服务

PHP取整数函数常用的四种方法,下面收集了四个函数&#xff1b; 经常用到取整的函数&#xff0c;今天小小的总结一下&#xff01;其实很简单&#xff0c;就是几个函数而已&#xff5e;&#xff5e;主要是&#xff1a;ceil&#xff0c;floor&#xff0c;round&#xff0c;intval …...