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

生信数据分析——GO+KEGG富集分析

生信数据分析——GO+KEGG富集分析

目录

  • 生信数据分析——GO+KEGG富集分析
    • 1. 富集分析基础知识
    • 2. GO富集分析(Rstudio)
    • 3. KEGG富集分析(Rstudio)



1. 富集分析基础知识

1.1 为什么要做功能富集分析?
转录组学数据得到的基因非常多,面对大量的基因无法做到挨个研究其功能,因此为了研究基因所具有的功能,将部分功能相似的基因进行归类,这样具有相似功能的基因就被放在一起,构成了一个通路,从而减少工作量,并可以实现功能和表型相关联。

1.2 什么是富集分析?
富集分析是一种数据分析方法,主要用于理解基因集合或其他生物学实体在特定实验条件或生物学背景下的功能、通路或特定生物学过程的富集程度。其基本原理是,如果某个基因集合在特定条件下显著富集于某个功能类别或通路中,那么这些基因可能共同参与了某种特定的生物学过程或具有某种共同的功能特性

看上方的描述是不是感觉晦涩难懂,简单地说:所谓富集分析,本质上就是对分布的检验,如果基因分布集中在某一个区域(通路),则认为富集。

举个栗子: 做完差异后,得到了一堆差异基因,现在对这部分差异基因归归类,部分功能相似的基因可能被划分到了炎症通路上,有的基因被划分到了代谢通路上,这样就能大致知道筛选出来的差异基因与哪些功能相关。

1.3 富集分析有几种类型?

(1)GO富集分析
GO富集分析会从三个方面描述基因潜在的功能,分别是:

  • 分子功能(Molecular Function,MF)——即基因是否富集到分子相关的通路上
  • 细胞组分(Cellular Component,CC)——即基因定位在细胞的哪个位置上
  • 参与的生物过程(Biological Process,BP)——即基因参与哪些生物学过程

举个栗子:离子通道活性的GO term是GO:0005216,如果差异基因富集到该term上,那么所研究的基因可能与离子通道的激活与抑制有关联。

(2)KEGG富集分析
京都基因与基因组百科全书(KEGG)是了解高级功能和生物系统(如细胞、生物和生态系统)、用于研究通路的数据库之一。KEGG 通路分析是借助 KEGG 数据库(Kyoto Encyclopedia of Genes and Genomes),对所有鉴定到的基因进行通路注释,并分析这些基因参与的主要代谢和信号转导途径。

简单说: 使用KEGG数据库中通路的注释信息,将基因与已知的代谢通路和功能进行关联

(3)GSEA富集分析
(4)GSVA富集分析

在这个分析点中重点关注GO富集分析和KEGG富集分析,GSEA和GSVA会在后面分析点中介绍。



2. GO富集分析(Rstudio)

本项目以 ADAMTS2, ADAMTS4, AGRN, COL5A1, CTSB, FMOD, LAMB3, LAMB4, LOXL2, MATN1, MEP1A, MMP1, MMP2, NTN1, PTN, SPARCL1, SPON1, TGFBI, THBS4, TNC, VTN, ITGB6, PTPRF, UNC5A 为例展示GO富集分析过程
物种:人类(Homo sapiens)
R版本:4.2.2
R包:tidyverse,clusterProfiler,org.Hs.eg.db

废话不多说,代码如下:

设置工作空间:

rm(list = ls()) # 删除工作空间中所有的对象
setwd('/XX/XX/XX') # 设置工作路径
if(!dir.exists('./02_GO+KEGG_enrichment')){dir.create('./02_GO+KEGG_enrichment')
} # 判断该工作路径下是否存在名为02_GO+KEGG_enrichment的文件夹,如果不存在则创建,如果存在则pass
setwd('./02_GO+KEGG_enrichment/') # 设置路径到刚才新建的02_GO+KEGG_enrichment下

加载包:

library(clusterProfiler)
library(org.Hs.eg.db)
library(tidyverse)

导入要富集分析的基因

gene <- c('ADAMTS2', 'ADAMTS4', 'AGRN', 'COL5A1', 'CTSB', 'FMOD', 'LAMB3', 'LAMB4', 'LOXL2', 
'MATN1', 'MEP1A', 'MMP1', 'MMP2', 'NTN1', 'PTN', 'SPARCL1', 'SPON1', 'TGFBI', 'THBS4', 'TNC', 
'VTN', 'ITGB6', 'PTPRF', 'UNC5A')

设置数据库(注意:由于本项目分析的是人类基因,因此选用的是org.Hs.eg.db,如果是其他物种,需要用其他数据库

GO_database <- 'org.Hs.eg.db'  # GO是org.Hs.eg.db数据库

gene ID转换(因为导入的是基因名(symbol),但是用官方的编号,也就是ENTREZID会比较专业一些,因此首先要将基因名转换成官方ENTREZID

gene <- bitr(gene, fromType = 'SYMBOL', toType = 'ENTREZID', OrgDb = GO_database)

知识拓展: bitr函数不仅能将symbol转成ENTREZID,还能将ENTREZID转回symbol,甚至还能转换成其他形式,具体可以自行查看官方说明!

gene 如下图所示,第一列就是基因名(symbol),而第二列就是官方的ENTREZID编号

(注意:用bitr做转换的时候,很有可能会出现基因没有对应的ENTREZID编号,这是一个正常现象,不用过多焦虑,合理解释就行!)
在这里插入图片描述

GO富集分析并将富集分析结果转成数据框,enrichGO函数常用参数介绍如下

  • gene参数——是要输入的基因(一般用基因的ENTREZID编号)
  • OrgDb 参数——指定要用到的数据库,人类是:org.Hs.eg.db(当然还有别的物种,可自行查询)
  • keyType参数——设定读取的gene ID类型,本教程用的是ENTREZID编号所以用“ENTREZID”
  • ont参数——指定输出的通路类型,前面也说了GO富集分析会从bp,cc,mf三个层次描述基因的功能,这里用ALL就会直接包括这三个部分,当然也可以只指定一种类型。
  • pvalueCutoff 参数——设定p值阈值
  • qvalueCutoff 参数——设定q值阈值(这个q值就是矫正后的p值
  • readable参数——当readable设置为TRUE时,函数的输出会以一种更易于阅读和理解的方式呈现

enrichGO函数中比较关注的参数就是上述的这些,当然还有其他参数,如果想深入了解可自行查看官方说明文档

GO <- enrichGO(gene = gene$ENTREZID, # 导入基因的ENTREZID编号OrgDb = GO_database, # 用到的数据库(人类是:org.Hs.eg.db)keyType = "ENTREZID", # 设定读取的gene ID类型ont = "ALL", # (ont为ALL因此包括 Biological Process,Cellular Component,Mollecular Function三部分)pvalueCutoff = 0.5, # 设定p值阈值qvalueCutoff = 0.5, # 设定q值阈值readable = T)
go_res <- data.frame(GO) # 将GO结果转为数据框

go_res 如下图所示:

  • ONTOLOGY——指示该通路属于哪个类别,即生物过程(Biological Process, BP)、分子功能(Molecular Function, MF)还是细胞组分(Cellular Component, CC)
  • ID——这是GO通路的唯一标识符,用于在GO数据库中唯一地标识一个通路(可以理解成身份证)
  • Description——对通路的简单描述,通常通过这一列就得知该通路具有哪些功能
  • GeneRatio——是富集到该通路上的基因数量与所有输入到富集分析中的基因数量的比值。它反映了在特定基因集合中,与该通路相关的基因所占的比例。
  • BgRatio——是在整个背景数据集(通常是整个基因组或某个参考数据集)中,与该通路相关的基因数量与背景数据集中所有基因数量的比值。它反映了在整个基因组中,与该通路相关的基因所占的比例。
  • pvalue,p.adjust,qvalue——都是GO富集结果的显著性pvalue是常规p值,另外两个是调整后的p值,通常只需要pvalue < 0.05即可
  • geneID——是富集到该通路上的基因名
  • Count——是富集到该通路上的基因数目

在这里插入图片描述
go_res 添加新的一列——richFactor

  • RichFactor——是一个重要的指标,用于衡量差异表达的转录本中位于特定通路的转录本数目与所有有注释转录本中位于该通路的转录本总数的比值。

简单说:RichFactor越大,表示富集的程度越大,其评价富集的效果要比单纯的GeneRatio或Count要好

go_res <- mutate(go_res, richFactor = Count / as.numeric(sub("/\\d+", "", BgRatio)))

最后筛选p值显著的通路,并保存结果

go_res <- go_res[go_res$pvalue<0.05, ]write.csv(go_res, file = "./GO_res.csv")

3. KEGG富集分析(Rstudio)

分析与GO类似,这里同样是从头开始展示

本项目以 ADAMTS2, ADAMTS4, AGRN, COL5A1, CTSB, FMOD, LAMB3, LAMB4, LOXL2, MATN1, MEP1A, MMP1, MMP2, NTN1, PTN, SPARCL1, SPON1, TGFBI, THBS4, TNC, VTN, ITGB6, PTPRF, UNC5A 为例展示GO富集分析过程
物种:人类(Homo sapiens)
R版本:4.2.2
R包:tidyverse,clusterProfiler,org.Hs.eg.db

设置工作空间:

rm(list = ls()) # 删除工作空间中所有的对象
setwd('/XX/XX/XX') # 设置工作路径
if(!dir.exists('./02_GO+KEGG_enrichment')){dir.create('./02_GO+KEGG_enrichment')
} # 判断该工作路径下是否存在名为02_GO+KEGG_enrichment的文件夹,如果不存在则创建,如果存在则pass
setwd('./02_GO+KEGG_enrichment/') # 设置路径到刚才新建的02_GO+KEGG_enrichment下

加载包:

library(clusterProfiler)
library(org.Hs.eg.db)
library(tidyverse)

导入要富集分析的基因

gene <- c('ADAMTS2', 'ADAMTS4', 'AGRN', 'COL5A1', 'CTSB', 'FMOD', 'LAMB3', 'LAMB4', 'LOXL2', 
'MATN1', 'MEP1A', 'MMP1', 'MMP2', 'NTN1', 'PTN', 'SPARCL1', 'SPON1', 'TGFBI', 'THBS4', 'TNC', 
'VTN', 'ITGB6', 'PTPRF', 'UNC5A')

设置数据库(注意:这里和前面区别就在于要指定KEGG数据库,即hsa(人种)

GO_database <- 'org.Hs.eg.db'  # GO是org.Hs.eg.db数据库
KEGG_database <- 'hsa' # KEGG是hsa数据库

同样是gene ID转换

gene <- bitr(gene, fromType = 'SYMBOL', toType = 'ENTREZID', OrgDb = GO_database)

gene 如下图所示,第一列就是基因名(symbol),而第二列就是官方的ENTREZID编号
在这里插入图片描述
接下来就是KEGG富集分析,enrichGO函数常用参数介绍如下

  • gene参数——是要输入的基因(一般用基因的ENTREZID编号)
  • keyType参数——指定了基因ID的类型,用于匹配KEGG数据库中的条目
  • organism参数——指定了进行富集分析的目标物种的KEGG数据库,由于基因用的是人类的,所以前面设置的“hsa”。
  • pAdjustMethod参数——指定了用于调整p值的统计方法,以控制假阳性率
  • pvalueCutoff 参数——设定p值阈值
  • qvalueCutoff 参数——设定q值阈值(这个q值就是矫正后的p值
KEGG <- enrichKEGG(gene = gene$ENTREZID,keyType = "kegg",organism = KEGG_database,pAdjustMethod = "BH",pvalueCutoff = 0.5,qvalueCutoff = 0.5)

KEGG 如下图所示,是一个列表,里面在这里比较重要的是gene那里,可以看到那里不是常规的基因名,因此不能直接将KEGG的结果转换成数据框,多了一个基因ID转换的过程。
在这里插入图片描述
将KEGG结果中基因ID转成基因名,之后将KEGG结果转成数据框

kegg_res <- setReadable(KEGG, OrgDb = org.Hs.eg.db, keyType="ENTREZID")
kegg_res <- data.frame(kegg_res)

kegg_res 结果如下图所示:

  • ID——这是KEGG通路的唯一标识符,用于在KEGG数据库中唯一地标识一个通路(可以理解成身份证)
  • Description——对通路的简单描述,通常通过这一列就得知该通路具有哪些功能
  • GeneRatio——是富集到该通路上的基因数量与所有输入到富集分析中的基因数量的比值。它反映了在特定基因集合中,与该通路相关的基因所占的比例。
  • BgRatio——是在整个背景数据集(通常是整个基因组或某个参考数据集)中,与该通路相关的基因数量与背景数据集中所有基因数量的比值。它反映了在整个基因组中,与该通路相关的基因所占的比例。
  • pvalue,p.adjust,qvalue——都是GO富集结果的显著性pvalue是常规p值,另外两个是调整后的p值,通常只需要pvalue < 0.05即可
  • geneID——是富集到该通路上的基因名
  • Count——是富集到该通路上的基因数目

在这里插入图片描述
同样给kegg_res 添加新的一列——richFactor

kegg_res <- mutate(kegg_res , richFactor = Count / as.numeric(sub("/\\d+", "", BgRatio)))

最后筛选p值显著的通路,并保存结果

kegg_res <- kegg_res [kegg_res $pvalue<0.05, ]write.csv(kegg_res , file = "./KEGG_res.csv")


结语:

以上就是GO+KEGG富集分析的所有过程,如果有什么需要补充或不懂的地方,大家可以私聊我或者在下方评论。

如果觉得本教程对你有所帮助,点赞关注不迷路!!!


  • 目录部分跳转链接:零基础入门生信数据分析——导读

相关文章:

生信数据分析——GO+KEGG富集分析

生信数据分析——GOKEGG富集分析 目录 生信数据分析——GOKEGG富集分析1. 富集分析基础知识2. GO富集分析&#xff08;Rstudio&#xff09;3. KEGG富集分析&#xff08;Rstudio&#xff09; 1. 富集分析基础知识 1.1 为什么要做功能富集分析&#xff1f; 转录组学数据得到的基…...

微服务(基础篇-007-RabbitMQ)

目录 初识MQ(1) 同步通讯&#xff08;1.1&#xff09; 异步通讯&#xff08;1.2&#xff09; MQ常见框架&#xff08;1.3&#xff09; RabbitMQ快速入门(2) RabbitMQ概述和安装&#xff08;2.1&#xff09; 常见消息模型&#xff08;2.2&#xff09; 快速入门&#xff…...

汇总:五个开源的Three.js项目

Three.js 是一个基于 WebGL 的 JavaScript 库&#xff0c;它提供了一套易于使用的 API 用来在浏览器中创建和显示 3D 图形。通过抽象和简化 WebGL 的复杂性&#xff0c;Three.js 使开发者无需深入了解 WebGL 的详细技术就能够轻松构建和渲染3D场景、模型、动画、粒子系统等。 T…...

JavaScript(一)---【js的两种导入方式、全局作用域、函数作用域、块作用域】

一.JavaScript介绍 1.1什么是JavaScript JavaScript简称“js”&#xff0c;js与java没有任何关系。 js是一种“轻量级、解释型、面向对象的脚本语言”。 二.JavaScript的两种导入方式 2.1内联式 在HTML文档中使用<script>标签直接引用。 <script>console.log…...

部署云原生边缘计算平台kubeedge

文章目录 1、kubeedge架构2、基础服务提供 负载均衡器 metallb2.1、开启ipvc模式中的strictARP2.2、部署metalb2.2.1、创建IP地址池2.2.2、开启二层转发&#xff0c;实现在k8s集群节点外访问2.2.3、测试 3、部署cloudcore3.1、部署cloudcore3.2、修改cloudcore的网络类型 4、部…...

Java设计模式:单例模式详解

设计模式&#xff1a;单例详解 文章目录 设计模式&#xff1a;单例详解一、单例模式的原理二、单例模式的实现推荐1、饿汉模式2、静态内部类 三、单例模式的案例四、单例模式的使用场景推荐总结 一、单例模式的原理 单例模式听起来很高大上&#xff0c;但其实它的核心思想很简…...

Qt5.14.2 定时器黑魔法,一键唤醒延时任务

在图形界面程序的世界里&#xff0c;有这么一个需求无处不在:在特定的时间间隔后&#xff0c;执行一段特殊的代码。比如说30秒后自动保存文档、500毫秒后更新UI界面等等。作为资深Qt程序员&#xff0c;我相信各位一定也曾为实现这种"延时任务"而绞尽脑汁。今天&#…...

C++项目——集群聊天服务器项目(九)客户端异常退出业务

服务器端应检测到客户端是否异常退出&#xff0c;因此本节来实现客户端异常退出&#xff0c;项目流程见后文 一、客户端异常退出业务流程 &#xff08;1&#xff09;在业务模块定义处理客户端异常退出的函数 &#xff08;2&#xff09;集群聊天服务器项目(八&#xff09;提到…...

STM32CubeIDE基础学习-HC05蓝牙模块和手机通信

STM32CubeIDE基础学习-HC05蓝牙模块和手机通信 文章目录 STM32CubeIDE基础学习-HC05蓝牙模块和手机通信前言第1章 硬件连接第2章 工程配置第3章 代码编写3.1 手机指令控制LED 第4章 实验现象总结 前言 前面的文章学习了串口通过轮询和中断的简单使用方法&#xff0c;现在就来用…...

npm mongoose包下载冲突解决之道

我在新电脑下载完项目代码后,运行 npm install --registryhttps://registry.npm.taobao.org 1运行就报错&#xff1a; npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: lowcode-form-backend1.0.0 npm …...

26. UE5 RPG同步面板属性(二)

在上一篇&#xff0c;我们解析了UI属性面板的实现步骤&#xff1a; 首先我们需要通过c去实现创建GameplayTag&#xff0c;这样可以在c和UE里同时获取到Tag创建一个DataAsset类&#xff0c;用于设置tag对应的属性和显示内容创建AttributeMenuWidgetController实现对应逻辑 并且…...

五、postman基础使用案例

postman基础使用 相关案例【传递查询参数】【提交表单数据】【提交JSON数据】 注&#xff1a;postman⼀款⽀持调试和测试的⼯具&#xff0c;开发、测试⼯程师都可以使⽤。方法一般统一为&#xff1a;方法→请求头→请求体→断言 相关案例 【传递查询参数】 访问TPshop搜索商品的…...

Git合并利器:Vimdiff使用指南

使用 vimdiff 作为 Git 的合并工具确实可能会让新手感到困惑&#xff0c;但它是一个功能强大的工具&#xff0c;一旦掌握了它&#xff0c;就可以非常高效地进行代码合并和比较。以下是一个简短的教程&#xff0c;旨在帮助理解 vimdiff 的基本用法以及如何利用它来进行 Git 合并…...

阿里云2核4G服务器租用价格_30元3个月_165元一年_199元

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…...

<QT基础(2)>QScrollArea使用笔记

项目需要设置单个检查的序列图像预览窗口&#xff0c;采用QScrollArea中加入QWidget窗口&#xff0c;每个窗口里面用Qlabel实现图像预览。 过程涉及两部分内容 引入QWidget 引入label插入图像&#xff08;resize&#xff09; 引入布局 组织 scrollArea内部自带Qwidget&#…...

springboot企业级抽奖项目业务四 (缓存预热)

缓存预热 为什么要做预热: 当活动真正开始时&#xff0c;需要超高的并发访问活动相关信息 必须把必要的数据提前加载进redis 预热的策略: 在msg中写一个定时任务 每分钟扫描一遍card_game表 把(开始时间 > 当前时间)&& (开始时间 < 当前时间1分钟)的活动及相…...

opejdk11 java 启动流程 java main方法怎么被jvm执行

java启动过程 java main方法怎么被jvm执行 java main方法是怎么被jvm调用的 1、jvm main入口 2、执行JLI_Launch方法 3、执行JVMInit方法 4、执行ContinueInNewThread方法 5、执行CallJavaMainInNewThread方法 6、创建线程执行ThreadJavaMain方法 7、执行ThreadJavaMain方法…...

link 样式表是否会阻塞页面内容的展示?取决于浏览器,edge 和 chrome 会,但 firefox 不会。

经过实测&#xff1a; 在 head 中 link 一个 1M 大小的样式表。设置网络下载时间大概为 10 秒。 edge 和 chrome 只有在下载完样式表后&#xff0c;页面上才会出现内容。而 firefox 可以直接先显示内容&#xff0c;然后等待样式表下载完成后再应用样式。 DOMContentLoaded 事…...

uniapp对接极光推送(国内版以及海外版)

勾选push&#xff0c;但不要勾选unipush 国内版 网址&#xff1a;极光推送-快速集成消息推送功能,提升APP运营效率 (jiguang.cn) 进入后台&#xff0c;并选择对应应用开始配置 配置安卓包名 以及ios推送证书&#xff0c;是否将生产证书用于开发环境选择是 ios推送证书…...

智慧城市数字孪生,综合治理一屏统览

现代城市作为一个复杂系统&#xff0c;牵一发而动全身&#xff0c;城市化进程中产生新的矛盾和社会问题都会影响整个城市系统的正常运转。智慧城市是应对这些问题的策略之一。城市工作要树立系统思维&#xff0c;从构成城市诸多要素、结构、功能等方面入手&#xff0c;系统推进…...

在Java中对SQL进行常规操作的通用方法

SQL通用方法 一、常规方法增删改查二、具体优化步骤1.准备工作2.getcon()方法&#xff0c;获取数据库连接对象3.closeAll()方法&#xff0c;关闭所有资源4.通用的增删改方法5.通用的查询方法6.动态查询语句 总结 一、常规方法增删改查 在常规方法中&#xff0c;我们在Java中对…...

JavaSE day16笔记 - string

第十六天课堂笔记 学习任务 Comparable接口★★★★ 接口 : 功能的封装 > 一组操作规范 一个抽象方法 -> 某一个功能的封装多个抽象方法 -> 一组操作规范 接口与抽象类的区别 1本质不同 接口是功能的封装 , 具有什么功能 > 对象能干什么抽象类是事物本质的抽象 &…...

java将文件转成流文件返回给前端

环境&#xff1a;jdk1.8&#xff0c;springboot2.5.3,项目端口号&#xff1a;9100 1.待转换的文件 一、路径 二、文件内容 2.controller中代码 package com.example.pdf.controller;import com.example.pdf.service.GetFileStreamService; import org.springframework.web.b…...

使用Node.js常用命令提高开发效率

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;广泛用于构建服务器端应用程序和命令行工具。Node.js提供了丰富的命令和工具&#xff0c;可以帮助开发者更高效地开发应用程序。在日常开发中&#xff0c;除了Node.js本身的核心功能外&#xff0c;npm&#x…...

百度资源平台链接提交

百度资源平台是百度搜索引擎提供的一个重要工具&#xff0c;用于帮助网站主将自己的网站链接提交给百度搜索引擎&#xff0c;以便更快地被收录和展示在搜索结果中。以下将就百度资源平台链接提交的概念、操作方法以及其对网站收录和曝光的影响进行探讨&#xff1a; 什么是百度资…...

力扣爆刷第108天之CodeTop100五连刷26-30

力扣爆刷第108天之CodeTop100五连刷26-30 文章目录 力扣爆刷第108天之CodeTop100五连刷26-30一、15. 字符串相加二、300. 最长递增子序列三、42. 接雨水四、43. 重排链表五、142. 环形链表 II 一、15. 字符串相加 题目链接&#xff1a;https://leetcode.cn/problems/add-strin…...

Android裁剪图片为波浪形或者曲线形的ImageView

如果需要做一个自定义的波浪效果的进度条&#xff0c;裁剪图片&#xff0c;对ImageView的图片进行裁剪&#xff0c;比如下面2张图&#xff0c;如何实现&#xff1f; 先看下面的效果&#xff0c;看到其实只需要对第一张高亮的图片进行处理即可&#xff0c;灰色状态的作为背景图。…...

Linux课程____shell脚本应用

:一、认识shell 常用解释器 Bash , ksh , csh 登陆后默认使用shell&#xff0c;一般为/bin/bash&#xff0c;不同的指令&#xff0c;运行的环境也不同 二、 编写简单脚本并使用 # vim /frist.sh //编写脚本文件&#xff0c;简单内容 #&#xff01;/bin/bash …...

设计模式12--组合模式

定义 案例一 案例二 优缺点...

【微服务】软件架构的演变之路

目录 单体式架构的时代单体式架构(Monolithic)优点缺点适用场景单体式架构面临诸多问题1.宽带提速&#xff0c;网民增多2.Web2.0时代的特点问题描述优化方向 集群优点缺点适用场景搭建集群后面临诸多问题用户请求问题用户的登录信息数据查询 改进后的架构 垂直架构优点缺点 分布…...

二级域名做网站/网络平台推广广告费用

平台之大势何人能挡&#xff1f; 带着你的Net飞奔吧&#xff01;&#xff1a;http://www.cnblogs.com/dunitian/p/4822808.html#skill 下载地址&#xff1a;http://mozilla.github.io/pdf.js/getting_started/#download 解压打开&#xff0c;这两个文件夹是精华 你可以自己看看…...

wordpress站内301/qq刷赞网站推广

这一周我们小组进行了JSON转换和数据库动态转换以及用户界面的编写等工作&#xff0c;我负责编写用户查看发布信息界面和申请发布界面。遇到的问题有element ui的card组件分页和表单数据与页面数据一起传到后端。   发布信息以el-card的形式展现在页面上&#xff0c;结合el-r…...

汽车之家网站是谁做的/公司员工培训内容有哪些

1、遇到不想回答的问题&#xff0c;直视对方的眼睛&#xff0c;微笑、沉默。- 2、走路抬头挺胸&#xff0c;心情不好时&#xff0c;不想跟人招呼&#xff0c;点头微笑&#xff0c;径直走过。- 3、请记得&#xff0c;好朋友的定义是&#xff1a;你混的好&#xff0c;他打心眼里为…...

有做网站动态效果软件/长沙搜索排名优化公司

编译链接原理 指令&#xff1a;局部函数内部数据&#xff1a;持续整个程序结束----------------------------------------------------------------------------------------------------------------------- &#xff08;gcc -E .i&#xff09;预编译(.c)&#xff1a; 宏替换、…...

广州 建设 招聘信息网站/我赢网seo优化网站

🍅 作者简介:哪吒,CSDN2021博客之星亚军🏆、新星计划导师✌、博客专家💪 🍅 哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师 🍅 关注公众号【哪吒编程】,回复1024,获取Java学习路线思维导图、大厂面试真题、加入万粉计划交流群、一起学习进步 目录 一…...

web技术的网站开发/服务推广软文

机械迷城手机免费版完整版下载手游是一款拥有十分独特的铅笔画风制作的冒险解密手机游戏。游戏讲述了一个需要不断对付各种黑帽黑帮的小机器的故事。这里的许多角色都是机器人设计的&#xff0c;所以你需要拯救你的女朋友。与此同时&#xff0c;你将不断地与更多的坏人打交道&a…...