【簡單易用,新人友好】一個輕量級生物信息學流程框架,從此解決99%的生物信息學流程搭建問題...

生物信息學數據分析流程的搭建是一項繁重而復雜的工作。隨著行業的發展,各種生信流程框架層出不窮,比如有:

  • Nextflow

  • Snakemake

  • CWL

  • WDL

各種標準,各種規則,令人眼花繚亂。選擇太多,往往令人無所適從。特別是新進入行業的人,不知道從何著手,一個一個學過去,對時間精力的耗費是巨大的,也是不必要的。不僅如此,既有的流程框架為了追求大而全,往往顯得很笨重,這無疑增加了開發、維護和使用的難度。

針對現有流程框架的不足,我們開發了zflow,旨在為組學數據分析提供一個通用而又簡單易用的輕量級框架。

https://github.com/jianzuoyi/zflow

功能簡介

  • 支持單樣本流程搭建:如轉錄組標準分析、WGS、WES重測序等。

  • 支持配對樣本流程搭建:如腫瘤NGS變異檢測等。

  • 支持加測:即支持一個樣本多個文庫,一個文庫多條Lane的實驗設計。

設計理念

我們相信 Linux 是生信流程設計的通用語言,堅持直接用Linux shell腳本編寫生信流程。

整體框架

流程主要由兩部分組成:

  • 模板文件:我們將流程所需的所有軟件/腳本調用,計算資源(Cpu, 內存)以及任務之間的依賴關系,在一個 XML 模板文件中定義。

  • 解析器:zflow,負責將XML模板文件解析為Shell腳本。

  • 投遞器:針對不同的集群環境,編寫相應的任務投遞插件。

zflow程序只有一個,即所有流程通用的。而每一條流程,會編寫一個XML模板文件。任務投遞,則是根據集群類型的不同,交給不同的投遞插件。

軟件依賴

  • Python 3.9.18

  • pandas 2.0.3

  • networkx 3.2.1

安裝好Python和依賴的軟件包,并將Python所在的路徑加入環境變量中,如:

export?PATH=/path/to/python3.9.18/bin:$PATH

快速開始

git?clone?git@github.com:jianzuoyi/zflow.gitcd?zflow./zflow?-h
usage:?zflow?[-h]?--xml?XML?[--env?ENV]?[--bed?BED]?[--par?PAR]?--config?CONFIG?--outdir?OUTDIR?[--overwrite]?[--verbose]A?pipeline?framework?for?NGS?data?analysis.optional?arguments:-h,?--help???????show?this?help?message?and?exit--xml?XML????????XML?config?file?for?different?project?Type--env?ENV????????The?path?of?Environment.sh?[$PIPEDIR/config/Environment.sh]--bed?BED????????The?path?of?BED?file?[Default?is?$Target?in?Environment.sh]--par?PAR????????Parameters?file?[Para=Value?per?line]--config?CONFIG??Config?file?of?Data?path?and?Custom?Infomation--outdir?OUTDIR??Output?directory--overwrite??????Overwrite?output?results--verbose????????Show?detail?message

使用說明

1. 生成任務

準備config文件:config.tsv

Project?Patient?Sample?Type?Data
mRNA?hg002_gm24385?hg002_gm24385?.?/ifs/public/test-data/giab/hg002_gm24385.mrna.R[12].fastq.gz
mRNA?hg002_gm26105?hg002_gm26105?.?/ifs/public/test-data/giab/hg002_gm26105.mrna.R[12].fastq.gz
mRNA?hg002_gm27730?hg002_gm27730?.?/ifs/public/test-data/giab/hg002_gm27730.mrna.R[12].fastq.gz
mRNA?hg004_gm24143?hg004_gm24143?.?/ifs/public/test-data/giab/hg004_gm24143.mrna.R[12].fastq.gz
mRNA?hg005_gm24631?hg005_gm24631?.?/ifs/public/test-data/giab/hg005_gm24631.mrna.R[12].fastq.gz
  • Project: 項目名稱,可以任意設置

  • Patient: 病人/對象ID,可以重復,因為一個病人/對象可能有多個樣本

  • Sample: 樣本ID,一個病人/對象可以有多個樣本,但樣本ID必須唯一

  • Type:樣本類型,用于區分配對樣本,如果T代表腫瘤樣本,N代表正常對照樣本

  • Data: 數據路徑。支持雙端測序數據的分析。

準備運行腳本:run.sh

#!/bin/bash
set?-euo?pipefailconfig=./config.tsv
outdir=./result
template=./RNAseq_Standard_Analysis_PE.xml./zflow?\--xml?$template?\--config?$config?\--outdir?$outdir?\--verbose
  • --xml ?流程模板文件

  • --config ?樣本信息配置文件

  • --outdir ?分析結果輸出目錄

  • --verbose ?解析XML過程中輸出詳細提示信息,否則采用安靜模式

運行:

./run.sh

最后輸出:

...
Reading?tasks
Checking?task?dependencies
Sorting?tasks
Sorting?tasks?doneLocal?tasks:?/nas/develop/zflow/result/Tasks/mRNA/bin/mRNA_tasks.sh

最終輸出的文件 mRNA_tasks.sh 即是總的Shell腳本文件,該文件中每一行是一個任務腳本。可以看到,每個任務腳本的文件名是以0102這樣的數字編號開頭的,這些編號即表示該任務在整個流程中的順序。

less?mRNA_tasks.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/01_Begin_mRNA.sh/nas/develop/zflow/result/Tasks/mRNA/bin/02_Cat_Fastq_hg002_gm24385_hg002_gm24385.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/02_Cat_Fastq_hg002_gm26105_hg002_gm26105.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/02_Cat_Fastq_hg002_gm27730_hg002_gm27730.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/02_Cat_Fastq_hg004_gm24143_hg004_gm24143.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/02_Cat_Fastq_hg005_gm24631_hg005_gm24631.sh/nas/develop/zflow/result/Tasks/mRNA/bin/03_Cat_Fastq_hg002_gm24385.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/03_Cat_Fastq_hg002_gm26105.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/03_Cat_Fastq_hg002_gm27730.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/03_Cat_Fastq_hg004_gm24143.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/03_Cat_Fastq_hg005_gm24631.sh/nas/develop/zflow/result/Tasks/mRNA/bin/04_FastQC_hg002_gm24385_hg002_gm24385.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/04_FastQC_hg002_gm26105_hg002_gm26105.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/04_FastQC_hg002_gm27730_hg002_gm27730.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/04_FastQC_hg004_gm24143_hg004_gm24143.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/04_FastQC_hg005_gm24631_hg005_gm24631.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/04_Fastp_hg002_gm24385.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/04_Fastp_hg002_gm26105.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/04_Fastp_hg002_gm27730.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/04_Fastp_hg004_gm24143.sh
/nas/develop/zflow/result/Tasks/mRNA/bin/04_Fastp_hg005_gm24631.sh...

2. 投遞任務

理論上來說,逐行執行 mRNA_tasks.sh 中的腳本,就可以得到分析結果,只是不能充分利用集群的計算資源。

你可以將這些任務手動投遞到集群上,編號相同的任務可以同時投遞。這是一種解決方案,但顯然不是最優的。更好的方案是寫一個插件與zflow銜接,將zflow生成的任務自動投遞到集群上。

這得益于zflow兩點獨有的設計:其在生成腳本時,同時保留了任務的依賴關系,以及每一個任務所需要的Cpu和內存資源。

mRNA_tasks.sh文件的后面,還跟著一些以#order開頭的行,這些行就表示任務之間的依賴關系。后續插件可以根據這些信息將所有任務添加到一個DAG圖當中,從而自動高效地向集群投遞任務。

#order?01_Begin_mRNA?before?02_Cat_Fastq_hg002_gm24385_hg002_gm24385
#order?01_Begin_mRNA?before?02_Cat_Fastq_hg002_gm26105_hg002_gm26105
#order?01_Begin_mRNA?before?02_Cat_Fastq_hg002_gm27730_hg002_gm27730
#order?01_Begin_mRNA?before?02_Cat_Fastq_hg004_gm24143_hg004_gm24143
#order?01_Begin_mRNA?before?02_Cat_Fastq_hg005_gm24631_hg005_gm24631#order?02_Cat_Fastq_hg002_gm24385_hg002_gm24385?before?03_Cat_Fastq_hg002_gm24385
#order?02_Cat_Fastq_hg002_gm26105_hg002_gm26105?before?03_Cat_Fastq_hg002_gm26105
#order?02_Cat_Fastq_hg002_gm27730_hg002_gm27730?before?03_Cat_Fastq_hg002_gm27730
#order?02_Cat_Fastq_hg004_gm24143_hg004_gm24143?before?03_Cat_Fastq_hg004_gm24143
#order?02_Cat_Fastq_hg005_gm24631_hg005_gm24631?before?03_Cat_Fastq_hg005_gm24631#order?03_Cat_Fastq_hg002_gm24385?before?04_FastQC_hg002_gm24385_hg002_gm24385
#order?03_Cat_Fastq_hg002_gm26105?before?04_FastQC_hg002_gm26105_hg002_gm26105
#order?03_Cat_Fastq_hg002_gm27730?before?04_FastQC_hg002_gm27730_hg002_gm27730
#order?03_Cat_Fastq_hg004_gm24143?before?04_FastQC_hg004_gm24143_hg004_gm24143
#order?03_Cat_Fastq_hg005_gm24631?before?04_FastQC_hg005_gm24631_hg005_gm24631
#order?03_Cat_Fastq_hg002_gm24385?before?04_Fastp_hg002_gm24385
#order?03_Cat_Fastq_hg002_gm26105?before?04_Fastp_hg002_gm26105
#order?03_Cat_Fastq_hg002_gm27730?before?04_Fastp_hg002_gm27730
#order?03_Cat_Fastq_hg004_gm24143?before?04_Fastp_hg004_gm24143
#order?03_Cat_Fastq_hg005_gm24631?before?04_Fastp_hg005_gm24631...

你可能要問,那每一步的計算資源(Cpu,內存)需求在哪里呢?可以打開任意一個腳本,如:

less?/nas/develop/zflow/result/Tasks/mRNA/bin/05_Align_Hisat2_hg002_gm24385.sh
#!/bin/bash
set?-euxo?pipefail
source?/pub/pipeline/RNAseq/config/Environment.sh
Cpu=8
Mem=32cd?/nas/develop/zflow/result/mRNA/hg002_gm24385/hg002_gm24385/02.Aln
hisat2?\-x?$REFERENCE_GENOME?\-1?../01.QC/hg002_gm24385_clean_R1.fq.gz?\-2?../01.QC/hg002_gm24385_clean_R2.fq.gz?\--summary-file?hg002_gm24385_summary.txt?\--new-summary?\-p?8?\--dta?-t?|\
samtools?view?-Sb?>?hg002_gm24385.bamln?-s?`pwd`/hg002_gm24385_summary.txt?/nas/develop/zflow/result/mRNA/multiqc/multiqc_WDir/hisat2/

可以看到,腳本的前面有:Cpu=8, Mem=32,即是指示該步驟需要8條線程,32G內存。負責投遞任務的插件可以讀取這兩個信息用于任務投遞。順便提一下,任務腳本開始有一行:

source?/pub/pipeline/RNAseq/config/Environment.sh

即是導入環境變量,任務中所需的軟件的路徑應該在這個Environment.sh文件中定義好,如本任務所需要的 hisat2, samtools應該在Environment.sh文件中將其所在的目錄加入PATH。

最后來看一下腳本目錄的全家福:

01_Begin_mRNA.sh
02_Cat_Fastq_hg002_gm24385_hg002_gm24385.sh
02_Cat_Fastq_hg002_gm26105_hg002_gm26105.sh
02_Cat_Fastq_hg002_gm27730_hg002_gm27730.sh
02_Cat_Fastq_hg004_gm24143_hg004_gm24143.sh
02_Cat_Fastq_hg005_gm24631_hg005_gm24631.sh
03_Cat_Fastq_hg002_gm24385.sh
03_Cat_Fastq_hg002_gm26105.sh
03_Cat_Fastq_hg002_gm27730.sh
03_Cat_Fastq_hg004_gm24143.sh
03_Cat_Fastq_hg005_gm24631.sh
04_FastQC_hg002_gm24385_hg002_gm24385.sh
04_FastQC_hg002_gm26105_hg002_gm26105.sh
04_FastQC_hg002_gm27730_hg002_gm27730.sh
04_FastQC_hg004_gm24143_hg004_gm24143.sh
04_FastQC_hg005_gm24631_hg005_gm24631.sh
04_Fastp_hg002_gm24385.sh
04_Fastp_hg002_gm26105.sh
04_Fastp_hg002_gm27730.sh
04_Fastp_hg004_gm24143.sh
04_Fastp_hg005_gm24631.sh
05_Align_Hisat2_hg002_gm24385.sh
05_Align_Hisat2_hg002_gm26105.sh
05_Align_Hisat2_hg002_gm27730.sh
05_Align_Hisat2_hg004_gm24143.sh
05_Align_Hisat2_hg005_gm24631.sh
05_FastQC2_hg002_gm24385.sh
05_FastQC2_hg002_gm26105.sh
05_FastQC2_hg002_gm27730.sh
05_FastQC2_hg004_gm24143.sh
05_FastQC2_hg005_gm24631.sh
06_Align_Hisat2_Sort_hg002_gm24385.sh
06_Align_Hisat2_Sort_hg002_gm26105.sh
06_Align_Hisat2_Sort_hg002_gm27730.sh
06_Align_Hisat2_Sort_hg004_gm24143.sh
06_Align_Hisat2_Sort_hg005_gm24631.sh
07_Stringtie_hg002_gm24385.sh
07_Stringtie_hg002_gm26105.sh
07_Stringtie_hg002_gm27730.sh
07_Stringtie_hg004_gm24143.sh
07_Stringtie_hg005_gm24631.sh
08_Stringtie_preDE_mRNA.sh
09_MultiQC_mRNA.sh
10_End_mRNA.sh
mRNA_tasks.sh
  • 一個總的腳本文件mRNA_tasks.sh,記錄所有要執行的任務以及任務之間的依賴關系。

  • 多個任務腳本文件,記錄著每一個任務要執行的命令以及所需要的計算資源。

模板簡介

流程的描述信息我們統一放到一個XML模板文件當中。該模板的結構為:

<Pipeline>
<Task><Name>Align_Hisat2_$Sample</Name><Rely>Fastp_$Sample</Rely><Cpu>8</Cpu><Mem>32</Mem><Workdir>$Outdir/$Project/$Patient/$Sample/02.Aln</Workdir><Command><![CDATA[hisat2?\-x?$REFERENCE_GENOME?\-1?../01.QC/$Sample_clean_R1.fq.gz?\-2?../01.QC/$Sample_clean_R2.fq.gz?\--summary-file?$Sample_summary.txt?\--new-summary?\-p?$Cpu?\--dta?-t?|\samtools?view?-Sb?>?$Sample.bamln?-s?`pwd`/$Sample_summary.txt?$Outdir/$Project/multiqc/multiqc_WDir/hisat2/]]></Command>
</Task><ENV>
<Environment>/path/to/RNAseq/config/Environment.sh</Environment>
</ENV>
</Pipeline>

每一個配對的<Task></Task>標簽內是一個任務的描述。其中包含:

  • Name:任務名稱

  • Rely:任務依賴的步驟名稱

  • Cpu:所需Cpu資源

  • Mem:所需內存資源

  • Workdir:工作目錄

  • Command: 任務命令

其中以美元符號$或者@開頭的為變量($表示普通變量,@表示數組),在任務解析過程中將會被zflow依據輸入的參數信息替換為具體的值。詳情請參考流程示例文件:RNAseq_Standard_Analysis_PE.xml

Environment.sh文件的作用前述已提及,用于放置所有環境變量。

流程設計

流程搭建非常容易,直接在XML中寫Shell代碼就可以了。但是zflow流程有一些保留的變量,或者說關鍵字,需要用戶事先掌握。請放心,關鍵字的數量并不多,并且都非常容易理解。

XML標簽中的關鍵字:

  • Name, Rely, Cpu, Mem, Workdir, Command,各關鍵字的作用前述也提及。

來源于命令行的關鍵字:

  • $Config:配置文件,即zflow的--config參數所指定的文件

  • $Target:BED格式文件,如WES或Panel測序中的探針捕獲區域文件

  • $Outdir:輸出目錄

來源于配置文件中的關鍵字:

總的來說,配置文件中的每一列,會成為一個變量傳遞給XML,另外一些數組可以通過計算變換獲得。

  • $Project:項目名稱

  • $Patient:病人/對象ID

  • :樣本,如果是腫瘤樣本,可以是Tumor表示腫瘤樣本ID, $Normal表示正常樣本ID

  • $Datadir:測序數據的原始位置

  • $Lib:文庫名稱

  • $Lane:Lane名稱

  • @Lib:數組,代表某一樣本的所有文庫

  • @Lane:數組,代表某一文庫的所有Lane

  • @Sample:數據,代表所有樣本ID

  • @Tumor:數組,代表所有腫瘤樣本ID

  • @Normal:數組,代表所有正常樣本ID

需要說明的是,配置文件中列出的5個列是強制要求的:Project Patient Sample ?Type ? ?Data,除此之外,你還可以在其中增加列,這些列名同樣會作為變量傳遞給XML。

更多變量想傳遞進XML,還可以通過 zflow 的 --par 參數實現:

--par?PAR????????Parameters?file?[Para=Value?per?line]

在這個參數文件中,每一行定義一個變量,其格式為:

參數名稱=參數對應的值(可以是某個數值,或者文件的路徑等)

可以通過配置文件config.tsv和專門的參數文件--par靈活地向XML文件傳遞變量,這有效地保證了zflow的靈活性。比如,你可以在config.tsv文件中增加一列,表示樣本分組。也可以將分組信息單獨放在一個文件中,再在--par文件中指明分組文件所有的路徑,這都是非常靈活的。

特點總結

綜上可以看出zflow設計生信流程的特點:

  • 簡單易用。流程的所有設計都在XML文件中,zflow只負責解析XML,針對不同的流程,zflow無須做任何更改。

  • 輕量級。zflow由單個Python腳本構成,僅有600多行代碼。

  • 輕松解決任務之間的依賴關系。zflow能夠在生成任務腳本的過程中順便生成任務之間的依賴關系。開發人員所需要做的工作僅僅是在XML文件中指定一下某個任務需要依賴于哪個或哪些任務即可。更進一步,如果任務關系指定錯誤,zflow能夠給出錯誤提醒。

  • 模塊化設計。zflow被設計成只負責生成Shell腳本,后續的集群任務投遞交給專用的插件完成。這極大地保證了流程框架的可擴展性。

很多生信流程,值得用zflow重寫一遍。

許可證

zflow 支持學術免費使用,歡迎 Fork、加星和下載。如需商用,請聯系【簡說基因】獲得授權。


云上轉錄組分析流程(點擊圖片跳轉

ade5174006209f0bc09617921e222789.png

一文讀懂scRNA-seq數據分析(點擊圖片跳轉)

e5ce006dca676d2baa9723460f03f5aa.png

如何自學生物信息學:從菜鳥到專家(點擊圖片跳轉)

9a2a25d94917df9d1f65c3c2e1e4379a.png


往期精彩:

生信人的自我修養:Linux 命令速查手冊

經典教程:全轉錄數據分析實戰

網上最全的 R 語言圖庫(建議收藏)| 簡說基因 Recommend

清華大學生物信息學課件資料分享

生物信息學軟件:兩種風格

新年第一課:從零開始入門Galaxy生信云平臺

生物信息學必備的R語言相關參考書 | 簡說基因 Recommand

從單細胞數據分析的最佳實踐看R與Python兩個陣營的博弈

涉嫌侵權,容我解(jiao)釋(bian)一下

生物信息學中的可重復性研究

關于簡說基因

  • 生信平臺

    Galaxy中國(UseGalaxy.cn)致力于打造中國人的云上生物信息基礎設施。大量在線工具免費使用。無需安裝,用完即走。活躍的用戶社區,隨時交流使用心得。

  • 聯系方式

    QQ交流群(免費):925694514

    微信交流群(免費):加微信好友,注明“Galaxy交流群”

    客服微信:usegalaxy

1dbfc85535c0be9cb7db537a6c77ddc5.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15803.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15803.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15803.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

小程序的深層了解

一:wxss的全局樣式和局部樣式 寫在文件上,第一個路徑會執行全局和局部自帶的wxss給wxml,會執行wxml,會執行json和js. 無論那個文件都會執行文件夾內的和外部的app.wxss,但是如果有一樣的屬性,則看屬性的權重,權重一樣,則設置局部樣式. 二:全局配置 wx:key"寫的是data內…

17.7K星開源產品分析平臺:Posthog

Posthog&#xff1a;開源洞察&#xff0c;產品優化的得力助手 - 精選真開源&#xff0c;釋放新價值。 概覽 PostHog是一個全面開源的平臺&#xff0c;旨在幫助團隊構建更好的產品。它提供了從產品分析到會話回放、功能標志和A/B測試等一系列工具&#xff0c;支持自托管&#x…

如何通過Nginx配置將請求轉發到conf.d目錄下的各個配置文件

目錄 如何通過Nginx配置將請求轉發到conf.d目錄下的各個配置文件1. 修改主配置文件 nginx.conf2. 在 conf.d 目錄中創建站點配置3. 設置站點根目錄和權限4. 檢查配置并重新加載Nginx總結 如何通過Nginx配置將請求轉發到conf.d目錄下的各個配置文件 在使用Nginx進行網站管理時&…

讀人工智能時代與人類未來筆記14_管控人工智能

1. 管控人工智能 1.1. 歷史上的戰場進一步推進到與數字網絡相連的所有地方 1.2. 數字程序現在控制著一個由眾多實體系統構成的龐大且仍在不斷增長的領域&#xff0c;而且越來越多的此類系統已實現網絡化 1.2.1. 在某些情況下甚至連門鎖和冰箱都實現了網絡化 1.2.2. 這催生出…

拋出異常時仍然需要記錄錯誤日志

場景&#xff1a;當service的方法執行拋出異常時&#xff0c;事務會發生回滾&#xff0c;導致無法記錄錯誤日志 解決&#xff1a;切面 其他&#xff1a;1.日志需要記錄日志標題&#xff0c;保存入參 2.失敗時會拋出異常&#xff1b;日志需要判斷執行是否成功&#xff0c;記錄…

2024年漢字小達人活動4個多月開賽:18道歷年選擇題和答案、解析

根據近年的安排&#xff0c;2024年第11屆漢字小達人比賽還有4個多月就啟動&#xff0c;那么孩子們如何利用這段時間有條不紊地備考呢&#xff1f;我的建議是兩手準備&#xff1a;①把小學1-5年級的語文課本上的知識點熟悉&#xff0c;重點是字、詞、成語、古詩。②把歷年真題刷…

聯想端游聯運SDK接入指南

1. 接入流程 本文檔主要介紹了 聯想PC游戲SDK接入流程、聯想游戲提供的功能、接入注意事項等。 1.1. 接入方式 1. 聯想游戲SDK2.1版本支持“賬號防沉迷支付”接入方式&#xff1b; a. 聯想提供賬號注冊、登錄等能力 b. 聯想提供防沉迷服務 c. 聯想提供游戲內支付 1.2. 對…

【學習筆記】計算機組成原理(八)

CPU 的結構和功能 文章目錄 CPU 的結構和功能8.1 CPU的結構8.1.1 CPU的功能8.1.2 CPU結構框圖8.1.3 CPU的寄存器8.1.4 控制單元CU和中斷系統 8.2 指令周期8.2.1 指令周期的基本概念8.2.2 指令周期的數據流 8.3 指令流水8.3.1 指令流水原理8.3.2 影響流水線性能的因素8.3.3 流水…

meinheld-gunicorn-flask VS uvicorn-gunicorn-fastapi 性能對比測試

本文會使用如下兩個項目&#xff1a;meinheld-gunicorn-flask 與 uvicorn-gunicorn-fastapi 前文有測過 Flask vs FastApi 性能對比測試&#xff0c;可能不夠有說服力&#xff0c;這次使用了號稱最快的wsgi或asgi服務器gunicorn來運行flask或fastapi。 上面meinheld-gunicorn…

數據庫-SQL性能分析

SQL執行頻率 慢查詢日志 慢查詢日志記錄了所有執行時間超過指定參數&#xff08;long_query_time&#xff0c;單位&#xff1a;秒&#xff0c;默認10秒&#xff09;的所有 SQL語句的日志。 MySQL的慢查詢日志默認沒有開啟&#xff0c;我們可以查看一下系統變量 slow_query_l…

html5 筆記02

目錄 01 svg的基本使用 02 svg繪圖 03 進程和線程 01 svg的基本使用 svg和canvas的區別: canvas: 1.canvas作為一個容器只有一個dom元素 ,內部元素無法使用dom操作 (canvas不能展開然后選擇不到 svg查看元素能選中因為是通過標簽控制的) 2.canvas 是配合js完成各種繪制效果 …

vue-route的路由配置中父組件沒有component怎么處理

概述 為了方便開發和維護&#xff0c;所以web前端的路由配置路徑和前端代碼文件路徑一般是一致的。但在實際開發中&#xff0c;項目可能會分很多級的菜單&#xff0c;由于很多菜單只有葉子菜單是真正的頁面。而中間菜單項只是一個路由配置。 為了正確路由到底層的功能頁面&…

指紋識別概念解析

目錄 1. 指紋是物證之首 1.1 起源于中國 1.2 發展于歐洲 1.3 流行于全世界 2. 指紋圖像 3. 指紋特征 4. 指紋注冊 5. 指紋驗證 6. 指紋辨識 1. 指紋是物證之首 指紋識別技術起源于中國、發展于歐洲、流行于全世界。自20世紀以來&#xff0c;指紋在偵破刑事案件、解決訴…

水泥超低排平臺哪家好?

隨著環保政策的加強和綠色發展理念的深入人心&#xff0c;水泥行業的超低排放改造已成為行業發展的新趨勢。選擇一個合適的水泥超低排平臺對于確保改造效果和實現企業的可持續發展至關重要。朗觀視覺小編將從多個角度出發&#xff0c;為您提供一份綜合評估與選擇攻略&#xff0…

Spring Boot 3.x 與 Spring Boot 2.x 的對比

Spring Boot 是 Java 開發領域的一個重要框架&#xff0c;它簡化了基于 Spring 的應用開發。隨著版本的不斷更新&#xff0c;Spring Boot 提供了更多功能、更好的性能以及更簡潔的配置。本文將詳細對比 Spring Boot 3.x 和 Spring Boot 2.x&#xff0c;探討它們之間的主要區別和…

[C語言]自定義類型詳解:結構體、聯合體、枚舉

目錄 &#x1f680;結構體 &#x1f525;結構體類型的聲明 &#x1f525;結構的自引用 &#x1f525;結構體變量的定義和初始化 &#x1f525;結構體內存對齊 &#x1f525;結構體傳參 &#x1f525;結構體實現位段&#xff08;位段的填充&可移植性&#xff09; &a…

安裝 Ubuntu桌面版,詳細步驟(附引導 U盤制作工具)

下載鏡像 安裝Ubuntu首先要下載鏡像包&#xff0c;訪問下面網址下載鏡像包 https://releases.ubuntu.com/ 選擇你要安裝的Ubuntu版本 將 .iso 文件保存到所需位置&#xff0c;下面會使用此文件創建可引導 U盤。 制作 Ubuntu 引導 U 盤 首先要找到一個大于4G的U盤&#xff…

貓頭虎 解析:為什么AIGC在國內適合做TOB,在國外適合做TOC?

貓頭虎 解析&#xff1a;為什么AIGC在國內適合做TOB&#xff0c;在國外適合做TOC&#xff1f; 博主 貓頭虎 的技術世界 &#x1f31f; 歡迎來到貓頭虎的博客 — 探索技術的無限可能&#xff01; 專欄鏈接&#xff1a; &#x1f517; 精選專欄&#xff1a; 《面試題大全》 — 面…

ps進程查看命令詳解

1、PS 命令是什么 查看它的man手冊可以看到&#xff0c;ps命令能夠給出當前系統中進程的快照。它能捕獲系統在某一事件的進程狀態。如果你想不斷更新查看的這個狀態&#xff0c;可以使用top命令。 2、ps命令支持三種使用的語法格式 UNIX 風格&#xff0c;選項可以組合在一起…

鴻蒙ArkUI-X平臺差異化:【運行態差異化(@ohos.deviceInfo)】

平臺差異化 簡介 跨平臺使用場景是一套ArkTS代碼運行在多個終端設備上&#xff0c;如Android、iOS、OpenHarmony&#xff08;含基于OpenHarmony發行的商業版&#xff0c;如HarmonyOS Next&#xff09;。當不同平臺業務邏輯不同&#xff0c;或使用了不支持跨平臺的API&#xf…