linux可变剪切分析,SpliceR:一个用RNA-Seq数据进行可变剪接分类和预测潜在编码区域的R包...

SpliceR:一个用RNA-Seq数据进行可变剪接分类和预测潜在编码区域的R包

Kristoffer Knudsen, Johannes Waage5Dec2013

翻译:斑斑<23920620>

2016年7月14日

欢迎加入生物信息QQ群78750864讨论相关问题

1简介

SpliceR是一个可以对转录本完整isoform(剪接模式)进行分类的R包。这些转录本可以是由Cufflinks等工具通过组装RNA-seq数据产生的。SpliceR输出的是关于可变剪接的类别及转录本对无义介导的降解机制的敏感性。SpliceR还提供导出GTF格式的文件用以在基因组浏览器中浏览,以及少量的绘图功能。spliceR位于典型RNA-Seq分析流程的末端,使用由组装工具生成的full devoncoluted isoforms,并支持输出剪接元件的基因组位置,促进了序列元件的下游分析。

SpliceR在SpliceRList对象中存储转录本信息,由两个GRanges对象构成,‘转录本特征’和‘外显子特征’。作为GRanges对象的‘转录本特征’ 包含关于每个isoform的额外信息,涉及产生它的基因和表达值。作为GRanges对象的‘GRanges’包含所有的外显子和一个能回溯到‘转录本特征’的isoform ID列。SpliceRList对象可以使用内建的prepareCuff函数通过Cufflinks的工作流程来生成,然后直接从一个Cufflins的辅助包——cummeRbund创建的cuffDB对象中读取。可选的,SpliceRList还可以从用户提供的由RNA-Seq组装工具生成的转录本和外显子信息中手动产生。

此外,spliceR通过annotatePTC()提供了关于无义介导的降解敏感性的转录本注释,通过spliceRPlot()进行可视化,通过generateGTF()生成用于基因组浏览器的GTF格式文件,以及一些辅助功能。

1.1可变剪接的类型

spliceR使用以下剪接类型注释‘transcript features’GRanges对象。

?单外显子跳跃/包含(ESI, Singleexonskipping/inclusion)

?多外显子跳跃/包含(ESI, Multipleexonskipping/inclusion)

?内含子滞留/包含(ISI, Intronretention/inclusion)

?可变5'/3'剪接位点(A5/A3,Alternative5’/3’splicesites)

?可变转录起始位点/可变转录终止位点(ATSS/ATTS, Alternativetranscriptionstartsite/transcriptionterminationsite)

?多外显子互斥(MEE, Mutuallyexclusiveexons)

2Cufflinks工作流程

Cufflinks是Tuxido套装的一部分,有着完善的文档和技术支持,用来对RNA-Seq数据进行映射、组装和定量。Tuxido工作流程的末端分析通常依赖cummeRbund包,它能利用R的分析和可视化能力将cufflinks的输出结果进行转换。SpliceR提供了prepareCuff()函数来将cummeRbund中的cuffSet类轻松的转换为spliceR中的SpliceRList类。SpliceR需要关于isoform及构成它的外显子的基因组坐标的全部信息。当生成cuffSet对象时,必须提供Cufflinks输出的转录本GTF文件。这里,我们使用由cummeRbund提供的内置数据来生成一个SpliceRList:

>library("spliceR")

>dirtempdir()

> extdatasystem.file("extdata", package="cummeRbund")

>file.copy(file.path(extdata,dir(extdata)),dir)

[1]TRUETRUETRUETRUETRUETRUETRUETRUETRUETRUETRUETRUETRUETRUETRUE

[16]TRUETRUETRUETRUETRUETRUETRUETRUE

> cuffDBreadCufflinks(dir=dir,+gtf=system.file("extdata/chr1_snippet.gtf",package="cummeRbund"),genome="hg19",rebuild = T)

> cuffDB_spliceRprepareCuff(cuffDB)

SpliceRList是一个列表,包含两个GRanges对象,转录本特征和外显子特征,包含的信息分别为基因组坐标,转录本和转录本的基因ID,以及构成它们的外显子。使用prepareCuff()在转录本特征中能够创建附加的元列,这可以在spliceR稍后的工作流程中做进一步过滤。此外,SpliceRList对象还包含关于样品名称、数据来源、应用过的过滤条件以及被spliceR使用的其它数据。

我们还提供了一些有用的函数来提取转录本和外线子的GRanges数据,以及样品的名称:

> myTranscriptstranscripts(cuffDB_spliceR)

> myExonsexons(cuffDB_spliceR)

>conditions(cuffDB_spliceR)

[1]"iPS""hESC""Fibroblasts"

一旦SpliceRList对象准备完毕,它可以用spliceR()函数,或者基于每个转录本的潜在编码区域信息的annotatePTC()函数来进行进一步的可变剪接类型的注释。

2.1Cufflinks基因注释的问题

Cufflinks使用一个内部的(自定义的)‘gene id’。根据官方手册,这个基因ID是一个用于描述基因的唯一标识。但是根据调查,我们发现许多Cufflinks的基因ID实际上包含多个注释的基因。据我们所知,这个问题在用Ensembl/Gencode作为参考转录组,对unstrandedRNA-seq数据执行Cufflinks/Cuffdiff时尤为明显。在这些条件下,我们发现200-400个(总体的2-4%)cuffgenes包含多个注释了的基因。我们的假设为,这一问题的出现是由于这些基因间存在跨越基因间区的长的Ensembl转录本,因此欺骗了Cufflinks使其认为所有源自这一区域的转录本都属于同一个基因。

Cufflinks注释问题的全局效应是使所有这类基因的表达水平错误,因为这里的表达水平是几个基因的平均值。这反过来又影响基因的差异表达分析。Cufflinks注释问题只是影响基因的表达水平,这意味着它们转录本的表达水平和差异表达检验并不受这个问题的影响。

我们对这一问题粗略的解决方案为:1)识别所有受影响的基因。2)为cuffgene中的每个真实注释的基因创建一个新的cuffgene。3)根据新的转录本排布重新计算基因表达。4)设定显著性检验为负。

这会校正基因的表达并移除假阳性的差异表达基因。这一设定默认为开(prepareCuff()中的fixCufflinksAnnotationProblem选项)

3GRanges工作流程

对从其他非Cufflinks的转录本组装工具得到的RNA-seq数据,SpliceRList可以简单的通过转录本和外显子GRanges类的创建函数来手动创建。在下面的例子中,我们下载了一个公用的转录本和外显子模型数据,虚拟出样本间的表达量和p值来模拟常见的RNA-seq组装数据。

首先,从UCSC储存仓库中下载UCSC“knownGene”的转录本列表:

>sessionbrowserSession("UCSC")

> genome(session)"hg19"

>queryucscTableQuery(session,"knownGene")

>tableName(query) "knownGene"

> cdsTablegetTable(query)

接下来,我们从UCSC下载kgXref表,它包含了基因ID和转录本ID间的关系。

> tableName(query)"kgXref"

>kgXrefgetTable(query)

创建包含转录本特征的GRanges(设定假的基因表达,倍数变化和p值),从kgXref表中获取基因名字:

>knownGeneTranscriptsGRanges(

+seqnames=cdsTable$"chrom",

+ranges=IRanges(

+start=cdsTable$"txStart",

+end=cdsTable$"txEnd"),

+strand=cdsTable$"strand",

+spliceR.isoform_id = cdsTable$"name",

+spliceR.sample_1="placeholder1",

+spliceR.sample_2="placeholder2",

+spliceR.gene_id=kgXref[match(cdsTable$"name", kgXref$"kgID"),

+"geneSymbol"],

+spliceR.gene_value_1=1,

+spliceR.gene_value_2=1,

+spliceR.gene_log2_fold_change=log2(1/1),

+spliceR.gene_p_value=1,

+spliceR.gene_q_value=1,

+spliceR.iso_value_1=1,

+spliceR.iso_value_2=1,

+spliceR.iso_log2_fold_change=log2(1/1),

+spliceR.iso_p_value=1,

+spliceR.iso_q_value=1

+)

创建包含外显子特征的GRanges:

>startSplitstrsplit(as.character(cdsTable$"exonStarts"),split=",")

>endSplitstrsplit(as.character(cdsTable$"exonEnds"),split=",")

>startSplitlapply(startSplit,FUN=as.numeric)

>endSplitlapply(endSplit,FUN=as.numeric)

>knownGeneExons

+seqnames=rep(cdsTable$"chrom",lapply(startSplit,length)),

+ranges=IRanges(

+start=unlist(startSplit)+1,

+end=unlist(endSplit)),

+strand=rep(cdsTable$"strand",lapply(startSplit,length)),

+spliceR.isoform_id=rep(knownGeneTranscripts$"spliceR.isoform_id",

+lapply(startSplit,length)),

+spliceR.gene_id=rep(knownGeneTranscripts$"spliceR.gene_id",

+lapply(startSplit,length))

+)

最后,从两个GRanges来创建SpliceRList,设置和assembly,coditionssource和coditions条件:

>knownGeneSpliceRListSpliceRList(

+transcript_features=knownGeneTranscripts,

+exon_features=knownGeneExons,

+assembly_id="hg19",

+source="granges",

+conditions=c("placeholder1","placeholder2")

+)

4preFiltering

数据集由e.g产生。在多个样本中,考虑到所有样本的组合,Cufflinks(占用的内存)会很快变的非常大。Cufflinks报告的许多基因和转录本是基于运行时提供的GTF参考文件得到的,(这些基因和转录本)可能在任意的或全部样品中都没有表达。

类似的,cufflinks可能并不信任所有报告得到的转录本,这些转录本被标记为‘FAIL’或‘LOWDATA’。在运行spliceR()和下游分析前将这些基因和转录本从SpliceRList中过滤出去将减少相当多的运行时间。

这里给出一个使用标准过滤器进行预处理的例子。更多其它的过滤条件,请参考spliceR()的帮助页面。注意:preSpliceRFilter()报告的是总的成对比较的数量,而spliceR()报告的是唯一的isoform的总数量。

> cuffDB_spliceR_filteredpreSpliceRFilter(

+cuffDB_spliceR,

+filters=c("expressedIso","isoOK","expressedGenes","geneOK")

+)

5SpliceR

spliceR()获取一个SpliceRList对象并对isoform注释可变剪接类型,以及一些其它的元列,数据可以是由prepareCuff()通过GRanges对象生成,也可以手动生成。设定给preTranscript或一个已知样本的compareTo参数会告诉spliceR()当存在分类事件时,如何挑选出isoform的比较结果。使用preTranscript参数,spliceR()聚集全部的外显子信息,为每一个唯一的gene ID创建一个基于全部isoform的pre-RNA。然后当分类时,每个isoform同这个结构进行比较。通过给出一个样本名来使spliceR()把这个样本的主要isoform(根据isoform相对于整个基因的表达)作为主要的参考RNA。当分类时,将每个isoform同这个参考进行比较。

spliceR()可以进行一定量的过滤来减少总数据的大小和运行时间。大部分过滤器只在运行cufflinks产生的数据时才有意义,如同这个软件对每个转录本和基因产生的附加信息,这些信息表明模型中整体的稳定性和可信性。

下面展示了一个典型的对spliceR()的调用,设置常用的过滤器和pre-RNA的参考。全部过滤器的详细内容请参考spliceR()的帮助页面。

>#Commentedoutduetoproblemswithvignettesandprogressbars.

> mySpliceRListspliceR(

+cuffDB_spliceR,

+compareTo="preTranscript",

+filters=c("expressedGenes","geneOK","isoOK","expressedIso","isoClass"),

+useProgressBar=F

+)

在主流的工作站上,运行4个样本,每个样本不超过100,000转录本的数据大概需要1.5-5个小时的时间。spliceR()结束后,transcriptFeatures

GRanges被一些额外的列填充。它们包含了isoformfraction(IF)值和delta IF。每个剪接类型占一列,表示每个转录本在对应的类型中有多少剪接事件被探测到。最后,“analyzed”列表示这个转录本是否通过了筛选。

6PTC-注释

annotatePTC()获取一个SpliceRList对象,一个BSGenome序列对象和一个CDSList对象。BSGenome序列对象可以从Bioconductor下载并安装。此处的组装名和染色体名应当同用于cufflinks或其它组装工具进行映射的组装名相一致(如:BSgenome.Hsapiens.UCSC.hg19或BSgenome.Mmusculus.UCSC.mm9)。CDSList对象由getCDS()生成,getCDS()获取一个组装名、基因追踪名以及从UCSC基因组浏览器表中获取的CDS信息(需要联网)。可选的,我们可以通过一个选定的CDS表手动创建一个CDSList对象(参考?CDSList获得更多信息)。通过CDSList和BSGenome对象,annotatePTC()为 SpliceRList exon_features GRanges中包含的所有外显子获取其基因组序列,历遍transcript_features GRanges中的每个转录本,连接它们的外显子并翻译含有一个CDS的转录本。如果存在一个以上的CDS,则采用最上游的。transcript_features GRanges通过终止密码子的位置(在Mrna坐标系中),终止密码子所在外显子(0是最后一个外显子,-1是倒数第二个外显子,以此类推),最后的外显子-外显子连接距离和使用的CDS的基因组位置等信息来对每个转录本进行注释。如果没有发现CDS,这些列被设为NA。最终,转录本被注释为TURE或FALSE及关于无义介导的降解敏感性(NMD)。这个参数默认值为50(表示转录本终止位置距最后的外显子-外显子剪接位点超过50nt,且不在最后的外显子上),但可能会在程序运行时被改变。下面是一个典型的annotatePTC()工作流程:

>ucscCDSgetCDS(selectedGenome="hg19",repoName="UCSC")

>require("BSgenome.Hsapiens.UCSC.hg19",character.only=TRUE)

>#Commentedoutduetoproblemswithvignettesandprogressbars.

>#PTCSpliceRListannotatePTC(cuffDB_spliceR,cds=ucscCDS,Hsapiens,

> #PTCDistance=50)

7GTF输出

在cufflinks或其它组装工具装配过后,又或者spliceR()及annotatePTC()处理过后,将转录本在基因组浏览器中可视化是非常有帮助的。为了更加便利,spliceR提供了generateGTF函数。generateGTF()为每个样本生成GTF文件,并允许采用同spliceR()和annotatePTC()中一样的过滤条件来进行转录本的筛选。此外,generateGTF()颜色根据表达量编码转录本。通过参数scoreMethod设定精确打分方法,“local”打分是转录本相对于唯一基因ID中表达量最高的转录本,而“global”打分是转录本相对于整个样本。对generateGTF()函数的典型调用看起来是这样的:

>generateGTF(mySpliceRList,filters=

+ c("geneOK", "isoOK", "expressedGenes", "expressedIso"),

+scoreMethod="local",

+useProgressBar=F)

GTF文件输出在当前的工作目录下,它的名字同样本的名字相一致,并在每个文件中添加了filePrefix标记。

8可视化

运行spliceR()后,使用可变剪接事件的相关信息注释spliceRlist对象。spliceRPlot()函数可以用于对原始数据的探索。spliceRPlot()生成一个用圆代表各种情况的韦恩图来分析数据的各个方面。

spliceRPlot()包含两个控制层次。第一个层次,用户可以通过expressionCutoff和 filters两个参数来控制用于绘图的数据。由于韦恩图的基本目的是区分不同情况中表达了的转录本,因此expressionCutoff参数用来控制界定“表达”的阈值。接下来类似spliceR的其它核心函数,spliceRPlot()含有一个过滤参数。通过这个过滤参数,可以选择数据的子集。

过滤数据的准备和转换过程可能需要几分钟的时间,之后spliceRPlot()返回一个spliceRlist对象,中间的数据结构会被存储,这可以使用户在生成了其它图的情况下跳过这步。如果用户改变了expressionCutoff或filters参数,reset参数需要被设置为TRUE。

第二个层次的控制决定实际的绘图。有一些选项可用于估计参数,在图形中安排每种情况中表达基因的数目,及表达的转录本中发现的可变剪接的平均数量。此外,“asType”参数允许用户来指定可变剪接的子类型来进行评估。

>#Plottheaveragenumberoftranscriptsprgene

>mySpliceRList

+evaluate="nr_transcript_pr_gene")

wLAX3AMcO9XCQAAAAASUVORK5CYII=

>#PlottheaveragenumberofExonskipping/inclucionevensprgene

>mySpliceRListspliceRPlot(mySpliceRList,evaluate="mean_AS_transcript",

+asType="ESI")

wOvZcvELzonDwAAAABJRU5ErkJggg==

>#PlottheaveragenumberofExonskipping/inclucionevensprgene,

>#butonlyusingtranscriptsthataresignificantlydifferntiallyexpressed

>mySpliceRListspliceRPlot(mySpliceRList,evaluate="mean_AS_transcript",

+asType="ESI",filters="sigIso",reset=TRUE)

Aaz9aXjCgHoZgAAAABJRU5ErkJggg==

> sessionInfo()

Rversion3.0.2Patched(2013-12-18r64488)Platform: x86_64-unknown-linux-gnu (64-bit)

locale:

[1]LC_CTYPE=en_US.UTF-8LC_NUMERIC=C

[3]LC_TIME=en_US.UTF-8LC_COLLATE=C

[5]LC_MONETARY=en_US.UTF-8LC_MESSAGES=en_US.UTF-8

[7]LC_PAPER=en_US.UTF-8LC_NAME=C

[9]LC_ADDRESS=CLC_TELEPHONE=C

[11]LC_MEASUREMENT=en_US.UTF-8LC_IDENTIFICATION=C

attachedbase

packages:

[1]grid

parallelstats

graphicsgrDevicesutils

datasets

[8]methods

base

otherattachedpackages:

[1]BSgenome.Hsapiens.UCSC.hg19_1.3.19BSgenome_1.30.0

[3]Biostrings_2.30.1spliceR_1.3.1

[5]plyr_1.8RColorBrewer_1.0-5

[7]VennDiagram_1.6.5cummeRbund_2.4.1

[9]Gviz_1.6.0rtracklayer_1.22.2

[11]GenomicRanges_1.14.4XVector_0.2.0

[13]IRanges_1.20.6fastcluster_1.1.13

[15]reshape2_1.2.2ggplot2_0.9.3.1

[17]RSQLite_0.11.4DBI_0.2-7

[19]BiocGenerics_0.8.0

loadedviaanamespace(andnotattached):

[1]AnnotationDbi_1.24.0Biobase_2.22.0Formula_1.1-1[4]GenomicFeatures_1.14.2Hmisc_3.14-0MASS_7.3-29[7]RCurl_1.95-4.1Rsamtools_1.14.2XML_3.98-1.1[10]biomaRt_2.18.0biovizBase_1.10.7bitops_1.0-6

[13]cluster_1.14.4colorspace_1.2-4dichromat_2.0-0[16]digest_0.6.4gtable_0.1.2labeling_0.2[19]lattice_0.20-24latticeExtra_0.6-26munsell_0.4.2[22]proto_0.3-10scales_0.2.3splines_3.0.2[25]stats4_3.0.2stringr_0.6.2survival_2.37-7[28]tools_3.0.2zlibbioc_1.8.0

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

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

相关文章

c语言自定义浮点函数,C语言float

C语言float教程C语言float定义详解语法float varname value;参数参数描述float定义 float 类型变量使用的类型。varname变量名。value可选&#xff0c;变量的初始值。说明使用 float 定义了一个 float 类型的变量 varname&#xff0c;并赋初值为 value。C语言float详解说明描述…

Block CONNECT method in httpd.conf

为什么80%的码农都做不了架构师&#xff1f;>>> RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(CONNECT|TRACE)$ RewriteRule ^.*$ - [L,F] ProxyRequests Off ProxyRequest should be set to off, unless you have security protect in your web server. 转…

解决sharepoint2010的多行文本框的插入图片—【从sharepoint】的disabled问题

大家发现sharepoint2010的多行文本框的插入图片有个—【从sharepoint】插入图片的功能&#xff0c;但是看到的disabled。如下图&#xff1a; 怎么办呢&#xff1f;通过查找资料才知道原来可以这样解决 在这里我们新建一个自定义列表&#xff1a;【test】&#xff0c;并新建一个…

c语言16进制按10进制输出,C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。...

满意答案chengexin2013.05.27采纳率&#xff1a;59% 等级&#xff1a;11已帮助&#xff1a;10599人#include#include#include#define N 1000char str[N];int a[N],b[N];int main(void){void zsh();long ycl();int i,n;do{printf("请输入一个十六进制数:\n");scanf…

用ASP.NET Core MVC 和 EF Core 构建Web应用 (一)

系统必备 .NET Core 2.0.0 SDK 或更高版本。已安装 ASP.NET 和 Web 开发工作负载的 Visual Studio 2017 15.3 版或更高版本。创建Web应用程序 打开 Visual Studio 并创建一个新 ASP.NET Core C# web 项目名为”ContosoUniversity”。 从文件菜单上&#xff0c;选择新建 > 项…

第一个Django应用程序_part1

一、查看Django是否安装 参考文档&#xff1a;https://docs.djangoproject.com/en/1.11/intro/tutorial01/ 如果Django已经安装&#xff0c;可以看到安装的版本号&#xff0c;如果没有安装则会看到“No module named django”的错误。 MacBook-Pro:~ h$ python3 -m django --ve…

HTML 文档流和文本流的理解

文本流&#xff0c;概括地说其实就是一系列字符&#xff0c;是文档的读取和输出顺序&#xff0c;也就是我们通常看到的由左到右、由上而下的读取和输出形式&#xff0c;在网页中每个元素都是按照这个顺序进行排序和显示的&#xff0c;而position属性可以将元素从文本流脱离出来…

CCNA实验(一)

无线局域网&#xff08;WLAN&#xff09;回顾 使用无线射频信号、载波监听多路访问/冲突避免、半双工。 无线AP相当于以太网的HUB。 有些频段是受限的。 无线信号遇到的问题&#xff1a; l 反射 l 散射 l 信号吸收&#xff08;比如说穿墙&#xff09; 无线标准 l ITU-R l …

linux中postfix(基于源码)的邮件系统

一、安装前的准备工作&#xff1a; 首先配置yum服务器&#xff0c;安装dns 1、安装所需的rpm包&#xff0c;这包括以下这些&#xff1a; httpd, php, php-mysql, mysql, mysql-server, mysql-devel, openssl-devel, dovecot, perl-DBD-MySQL, tcl, tcl-devel, libart_lgpl, li…

UE4 集成讯飞听写插件

搞了几天&#xff0c;有些坑记录一下。 3个方面的知识需要学习 1、制作UE4插件 2、引入第三方库 3、讯飞听写的api 一看是参考 https://blog.csdn.net/u012793104/article/details/78067937 http://doc.xfyun.cn/msc_windows/%E8%AF%AD%E9%9F%B3%E5%90%AC%E5%86%99.html API&am…

c51单片机有几个终端语言,吃过大亏,才知道要从51单片机入手

原标题&#xff1a;吃过大亏&#xff0c;才知道要从51单片机入手在这里&#xff0c;我就不说什么是单片机了&#xff0c;而是说说怎样学单片机&#xff0c;就我个人而言先学51,因为这个单片机在中国市场上发展了几十年了&#xff0c;现在工程中用的比较多的也是MCS-51, 它的资料…

医疗项目中对网编的一些理解看法

医疗项目中对网编的一些理解看法。做网络营销都有一个前提&#xff0c;那就是以用户为中心&#xff0c;站在用户的角度考 虑问题。在网络营销中&#xff0c;网编如何提升充实自己&#xff1f;怎么获得信息渠道&#xff1f;见多&#xff1a;多看&#xff0c;多了解行业的变化&am…

android 自定义view画表格,Android自定义View实现课程表表格

自己闲下来时间写的一个课表控件&#xff0c;使用的自定义LinearLayout&#xff0c;里面View都是用代码实现的&#xff0c;最终效果如下图&#xff0c;写的可能有问题希望多多指点创建一个自定义LinearLayout 控件用来装载课程的信息和课程的周数&#xff0c;和节数大概的布局三…

26.中继器数据的添加与删除

选择中继器里面的数据集再选择增加行 勾上之后选择下方的增加行就可以填入数据了 用变量获取用户输入的各项内容 但是图片不能用公式操作 方法&#xff1a;通过右键单击图片获得图片的地址 图片中蓝色的部分就是相对路径 把这个路径放到中继器的数据里就可以用了 以上是添加&am…

android工作机制和内核,android内核剖析学习笔记:AMS(ActivityManagerService)内部原理和工作机制...

一、ActivityManagerService提供的主要功能&#xff1a;(1)统一调度各应用程序的Activity(2)内存管理(3)进程管理二、启动一个Activity的方式有以下几种&#xff1a;(1)在应用程序中调用startActivity启动指定的Activity(2)在Home程序中单击一个应用图标&#xff0c;启动新的Ac…

从.Net到Java学习第四篇——spring boot+redis

从.Net到Java学习系列目录 “学习java已经十天&#xff0c;有时也怀念当初.net的经典&#xff0c;让这语言将你我相连&#xff0c;怀念你......”接上一篇&#xff0c;本篇使用到的框架redis、FastJSON。 环境准备 安装redis&#xff0c;下图是我本机的redis绿色版&#xff0c;…

hdu 4409 Family Name List LCA +stl

http://acm.hdu.edu.cn/showproblem.php?pid4409 赛后才过只能说悲剧了&#xff0c;知道思路&#xff0c;stl不熟悉&#xff0c;所以导致写的很慢....占据了很多时间&#xff0c;手速代码准确度。。哎。。。 题意&#xff1a; 给你一个家谱&#xff0c;n个人的姓名&#xff0c…

mysql杂记

1、 mysql安装完成后需要将mysql里面的bin目录加到环境变量里之后&#xff0c;才能在cmd窗口里使用mysql命令 2、 在CMD命令窗口敲入命令 mysql -hlocalhost -uroot -ppassword进入mysql数据库 这里我的用户名是root&#xff0c;密码是123456 转载于:https://www.cnblogs.com/y…

vue created 生命周期

在实例创建完成后被立即调用。在这一步&#xff0c;实例已完成以下的配置&#xff1a;数据观测 (data observer)&#xff0c;属性和方法的运算&#xff0c;watch/event 事件回调。然而&#xff0c;挂载阶段还没开始&#xff0c;$el属性目前不可见。 methods、data、watch等可以…

android cne服务,Android内存优化-了解内存篇

查看系统内存文件shellaries:/ $ cat /proc/meminfoMemTotal: 1970216 kBMemFree: 83756 kBBuffers: 156020 kBCached: 702516 kBSwapCached: 0 kBActive: 1160284 kBInactive: 397932 kBActive(anon): 778932 kBInactive(anon): 2228 kBActive(file): 381352 kBInactive(file)…