【TCGA-CRC】TCGA数据读取
写在前面
参考已有的帖子写的,但是临床数据和UCSC的不同。有知道的小伙伴欢迎指正。
rm(list = ls()); gc()
test1 = data.table::fread("./00_Rawdata/GDCdata/TCGA-COAD/Transcriptome_Profiling/Gene_Expression_Quantification/00ae9ab8-6eaa-4085-af72-26f96df97fa3/90c9f8cd-4c8c-4f07-af2f-e17db69bd561.rna_seq.augmented_star_gene_counts.tsv")
test2 = data.table::fread("./00_Rawdata/GDCdata/TCGA-COAD/Transcriptome_Profiling/Gene_Expression_Quantification/00cdff29-697a-4a17-ba67-cf55c006b827/0f35c851-1cb8-4f75-a661-eae9111b7362.rna_seq.augmented_star_gene_counts.tsv")
identical(test1$gene_id,test2$gene_id)
identical(test1$gene_name,test2$gene_name)
sum(duplicated(test1$gene_id))
sum(duplicated(test1$gene_name))
x1 <-data.table::fread("./00_Rawdata/GDCdata/TCGA-COAD/Transcriptome_Profiling/Gene_Expression_Quantification/00cdff29-697a-4a17-ba67-cf55c006b827/0f35c851-1cb8-4f75-a661-eae9111b7362.rna_seq.augmented_star_gene_counts.tsv",select = c("gene_id"))
head(x1)
exp_COAD <- dir("./00_Rawdata/GDCdata/TCGA-COAD/Transcriptome_Profiling/Gene_Expression_Quantification/",pattern = "*.rna_seq.augmented_star_gene_counts.tsv",#*表示任意前缀,$表示固定后缀recursive = T)
exp_READ <- dir("./00_Rawdata/GDCdata/TCGA-READ/Transcriptome_Profiling/Gene_Expression_Quantification/",pattern = "*.rna_seq.augmented_star_gene_counts.tsv",#*表示任意前缀,$表示固定后缀recursive = T)
#批量读入所有文件的unstranded列(counts)/tpm_unstranded列(TPM)
exp_dt_coad <- function(x){result <- data.table::fread(file.path("./00_Rawdata/GDCdata/TCGA-COAD/Transcriptome_Profiling/Gene_Expression_Quantification/",x),select = c("tpm_unstranded"))return(result)
}
exp_dt_read <- function(x){result <- data.table::fread(file.path("./00_Rawdata/GDCdata/TCGA-READ/Transcriptome_Profiling/Gene_Expression_Quantification/",x),select = c("tpm_unstranded"))return(result)
}
exp_coad <- lapply(exp_COAD,exp_dt_coad)
exp_read <- lapply(exp_READ,exp_dt_read)exp_coad <- do.call(cbind,exp_coad)#将exp按列合并,并将list转化为data.table
exp_coad[1:6,1:6]
exp_read <- do.call(cbind,exp_read)#将exp按列合并,并将list转化为data.table
exp_read[1:6,1:6]#添加行名(gene_id),所有表达矩阵的gene_id是相同的:
exp_coad <- as.data.frame(exp_coad)#data.table格式不能自定行名,先转换为数据框
rownames(exp_coad) <- x1$gene_id
exp_coad[1:8,1:4]meta_dt <- jsonlite::fromJSON("./00_Rawdata/metadata.cart.2025-05-19.json")
id <- meta_dt$associated_entities
ids <- sapply(id,function(x){x[,1]}) #读取所有样本id,返回一个包含所有id名的向量(和前面lapply的区别,lapply返回的是list)
head(ids)
ids2 <- data.frame(file_name = meta_dt$file_name,id = ids) #生成一个包含有样本id和文件名这两列对应关系的数据框,文件名即为表达矩阵的文件名
head(ids2)
head(gsub("e_counts.tsv","",ids2$file_name))
# ids2$file_name<-gsub("e_counts.tsv","",ids2$file_name)
library(stringr)
exp_COAD2 <- str_split(exp_COAD,"/",simplify = T)#以/做拆分,simplify = T把结果返回成矩阵
head(exp_COAD2)
exp_READ2 <- str_split(exp_READ,"/",simplify = T)#以/做拆分,simplify = T把结果返回成矩阵
head(exp_READ2)
exp_COAD2 <- exp_COAD2[,2]
exp_READ2 <- exp_READ2[,2]
#用百分百in检测是否拆分后的文件名都完全包含在file_name中(此时顺序不同,因此不能用==)
table(exp_COAD2 %in% ids2$file_name)
table(exp_READ2 %in% ids2$file_name)#全部返回TRUE,则拆分无误
# 查看样本数是否一致
length(exp_COAD2)
length(exp_READ2)
length(ids2$file_name)
length(intersect(exp_COAD2,ids2$file_name))
length(intersect(exp_READ2,ids2$file_name))#用match函数调整ids2$file_name的顺序和exp_COAD2一致(因为我们合并的表达矩阵是按照exp_COAD2的顺序进行合并的)
ids3_COAD <- ids2[match(exp_COAD2,ids2$file_name),]
ids3_READ <- ids2[match(exp_READ2,ids2$file_name),]#检查顺序是否一致
head(ids3_COAD$file_name)
head(exp_COAD2)
head(exp_COAD)
identical(ids3_COAD$file_name,exp_COAD2)#返回TRUE,确认无误
#检查顺序是否一致
head(ids3_READ$file_name)
head(exp_READ2)
head(exp_READ)
identical(ids3_READ$file_name,exp_READ2)#返回TRUE,确认无误#修改列名为样本名。
colnames(exp_coad) <- ids3_COAD$id
exp_coad[1:8,1:2]
colnames(exp_read) <- ids3_READ$id
exp_read[1:8,1:2]
##转换为数据框,不然后面合并会丢失exp的行名。
list_coad <- as.data.frame(data.table::fread("./00_Rawdata/GDCdata/TCGA-COAD/Transcriptome_Profiling/Gene_Expression_Quantification/00ae9ab8-6eaa-4085-af72-26f96df97fa3/90c9f8cd-4c8c-4f07-af2f-e17db69bd561.rna_seq.augmented_star_gene_counts.tsv",select = c("gene_name","gene_type")))
list_read <- as.data.frame(data.table::fread("./00_Rawdata/GDCdata/TCGA-READ/Transcriptome_Profiling/Gene_Expression_Quantification/00f55a16-0ee5-4939-8efb-de34e68d4ccd/ff11a9e3-d32b-431b-9ebb-c5a3d9eb0e4f.rna_seq.augmented_star_gene_counts.tsv",select = c("gene_name","gene_type")))
exp_coad2 <- cbind(list_coad,exp_coad)
exp_coad2[1:10,1:3]
identical(rownames(exp_coad),rownames(exp_coad2))
exp_read2 <- cbind(list_read,exp_read)
exp_read2[1:10,1:3]
identical(rownames(exp_read),rownames(exp_read2))
mRNA_coad <- exp_coad2[exp_coad2$gene_type %in% c("protein_coding"),]
# lncRNA_coad <- exp_coad2[exp_coad2$gene_type %in% c("lncRNA"),]
save(mRNA_coad, file = './00_Rawdata/TCGA-COAD_mRNA.Rdata')
save(mRNA_coad, file = './00_Rawdata/TCGA-COAD_TPM.Rdata')mRNA_read <- exp_read2[exp_read2$gene_type %in% c("protein_coding"),]
# lncRNA_read <- exp_read2[exp_read2$gene_type %in% c("lncRNA"),]
save(mRNA_read, file = './00_Rawdata/TCGA-READ_mRNA.Rdata')
save(mRNA_read, file = './00_Rawdata/TCGA-READ_TPM.Rdata')########## clinical ###############
rm(list = ls())
library(readr)
library(tidyverse)
library(dplyr)
library(data.table)
clin <- read_tsv("00_Rawdata/clinical/clinical.tsv")
# clin <- fread("00_Rawdata/clinical/clinical.tsv",data.table = F)
clin_time <- clin %>% dplyr::select(cases.submitter_id,demographic.vital_status,demographic.days_to_death,diagnoses.days_to_last_follow_up,demographic.age_at_index,demographic.gender,diagnoses.ajcc_pathologic_t,diagnoses.ajcc_pathologic_m,diagnoses.ajcc_pathologic_n,diagnoses.ajcc_pathologic_stage) %>%dplyr::filter(!duplicated(cases.submitter_id))
#创建新的一列OS.time,如果vital_status列是Alive,就用days_to_last_follow_up数据填充,如果vital_status列是Dead,就用days_to_death数据填充。
#创建一个OS列,生存用0表示,死亡用1表示。
clin_merge <- clin_time %>% dplyr::mutate(OS.time = case_when(demographic.vital_status == "Alive" ~ diagnoses.days_to_last_follow_up,demographic.vital_status == "Dead" ~ demographic.days_to_death)) %>%dplyr::mutate(OS = case_when(demographic.vital_status == "Alive" ~ 0,demographic.vital_status == "Dead" ~ 1))
#使用rename函数修改列名
clin_merge1 <- clin_merge %>% rename(age = demographic.age_at_index, # 将age_at_index列名修改为ageT = diagnoses.ajcc_pathologic_t, # ajcc_pathologic_t列名修改为TM = diagnoses.ajcc_pathologic_m, N = diagnoses.ajcc_pathologic_n, stage = diagnoses.ajcc_pathologic_stage )clin<-clin_merge1[,-(3:4)]
# clin<-na.omit(clin)
clin[clin == "'--"] <- NA
write.csv(clin, file = "00_Rawdata/clinical/clinical.csv", row.names = F, quote = FALSE)
相关文章:
【TCGA-CRC】TCGA数据读取
写在前面 参考已有的帖子写的,但是临床数据和UCSC的不同。有知道的小伙伴欢迎指正。 rm(list ls()); gc() test1 data.table::fread("./00_Rawdata/GDCdata/TCGA-COAD/Transcriptome_Profiling/Gene_Expression_Quantification/00ae9ab8-6eaa-4085-af72-26…...
BYUCTF 2025
几周没会的比赛了,都是一题游。这周的BYU还不错,难度适中,只是时间有点短。周末时间不够。 Crypto Many Primes from Crypto.Util.number import bytes_to_long, getPrime import randomflag open("flag.txt").read().encode()…...
【Linux】初见,基础指令(续)
前言: 上文讲解了部分指令,本文我们来讲解剩下的指令【Linux】初见,基础指令-CSDN博客 cat指令 语法:cat 选项 文件 功能:打印文件中的内容 选项: -b 对非空行输出进行编号 -n 对输出的说有行进行编号…...
《MambaLLIE:基于隐式Retinex感知的低光照增强框架与全局-局部状态空间建模》学习笔记
Paper:2405.16105 Github:GitHub - wengjiangwei/MambaLLIE 目录 摘要 一、介绍 二、相关工作 2.1 低光图像增强 2.2 视觉空间状态模型 三、方法 3.1 预备知识 3.2 整体流程 3.3 全局优先-局部次之状态空间块 四、实验 4.1 基准数据集与实施细节 4.2 对比实验 4…...
计算机图形学Games101笔记--几何
第二部分:几何 几何介绍 光栅化解决如何渲染,几何研究模型如何存储在GPU的内存中。几何主要分为两种:隐式几何和显式几何。 **隐士几何:**用点之间的关系存储,如球的计算公式。更一般的可以用f(x,y,z)。我们可以令f…...
Web开发-Python应用Flask框架Jinja模版绑定路由参数传递页面解析SSTI注入
知识点: 1、安全开发-Python-Flask&Jinja2 2、安全开发-Python-路由传参&SSTI注入 演示案例-WEB开发-Python-Flask框架&Jinja2模版&路由传参&SSTI注入 0、Pycharm 配置Python解析 新建Flask项目 1、路由传参 app.route(/) app.route(/<id…...
聚焦开放智能,抢占技术高地 | 2025 高通边缘智能创新应用大赛第五场公开课来袭!
随着2025高通边缘智能创新应用大赛的推进,越来越多的参赛者关注如何借助高性能硬件突破技术瓶颈、打造差异化作品。 5月27日晚8点,大赛将开启初赛阶段的第五场专题公开课——由美格软件研究院院长李书杰领衔,深入解析高通平台的底层架构与参…...
NMOS和PMOS的区别
1 区分NMOS和PMOS:衬底箭头指向G级的是NMOS,衬底箭头背向G级的是PMOS 2 区分D和S级:针对NMOS,体二极管的正方向为S级;针对PMOS,体二极管正的方向为D级 3 区分电流方向:针对NMOS,电…...
Paillier加密方案的原理、实现与应用(vs)
一、实验目的 1、掌握NTL的基本配置和方法(以下是以visualstudio为例) 2、掌握Paillier加密方案的原理与实现 ①钥匙生成:首先,生成一把钥匙,包括钥匙和私钥匙。钥匙由两个大素数(p,q)的乘积n和一个整数g组成&#…...
Metal入门,使用Metal绘制3D图形
这次是使用Metal绘制一个立方体,并且添加旋转效果,绘制正方形的步骤很简单,我们绘制一个正方形就相当于绘制两个三角形,那么绘制一个正方体,我们很容易想到需要绘制他六个面,很显然,我们也需要把…...
Java 04 API
API 简介 一些已经写好的应用程序编程接口Object toString 默认返回的是当前对象在堆内存中的地址值信息:类的全类名十六进制哈希值返回该对象的返回值 class A{ } //返回的是地址哦 String sA.toString(); //细节:使用打印语句,打印对象…...
基于Gitee 的开发分支版本管理规范
一、版本管理规范概述 目的:规范代码分支管理和版本发布流程,提高团队协作效率,确保代码质量和版本可追溯性。适用范围:基于 Gitee 平台开发的所有项目。分支策略:采用 Git Flow 模型的变体,主要分支包括 …...
HOW - 结合 AI 进行 Tailwind 样式开发
文章目录 情况 1:使用 Tailwind CSS 与手写传统 CSS 的开发效率对比情况 2:AI Tailwind 自动生成 UI 的效率如何?总结 在 WHAT - Tailwind 样式方案(不写任何自定义样式) 中我们已经简单介绍过 Tailwind。今天主要认识…...
系统数据对接-从获取到处理的全流程
在后端架构的复杂生态中,子系统间或与外部系统的对接是常态,其核心要义在于实现数据的精准传输。本文聚焦于数据传输后的运算逻辑与异常处理机制,旨在为后端开发者提供深度见解。 一、数据获取机制:触发式与定时任务的权衡 &…...
Java 09Stream流与File类
Stream流与File类 Stream流 简化集合和数组的操作,startWith(“张”) 第一个为这个返回true String1.获取Stream对象 单列集合 双列集合 先获得键值对 在遍历数组 零散的数据 Stream<Integer> arrStream.of(1,2,34,3); stream.forEach(sss); 即可2.中间…...
《光与影:33号远征队》栩栩如生的角色动画是如何创建的?
《光与影:33号远征队》是一款由Sandfall Interactive公司开发的回合制RPG游戏,背景是一个黑暗的幻想世界。游戏因其独特的艺术风格和引人注目的叙事赢得了无数赞誉,成为今年大热游戏中的一匹黑马。 在该游戏制作中Sandfall依靠包括Xsens在内的…...
GESP2024年12月认证C++二级( 第三部分编程题(1)寻找数字)
参考程序(枚举): #include <iostream> //#include <cmath> using namespace std;int main() {int t;cin >> t;while (t--) {long long a;cin >> a;bool found false;// 枚举 b for (long long b 1; b * b * b * b…...
《探索具身智能机器人视觉-运动映射模型的创新训练路径》
视觉 - 运动映射模型作为实现智能交互与精准行动的核心,吸引着全球科研人员与技术爱好者的目光。这一模型就像机器人的 “神经中枢”,连接着视觉感知与肢体运动,使机器人能够在复杂的现实环境中灵活应对各种任务。 传统的视觉 - 运动映射模型…...
Python打卡DAY31
今日的示例代码包含2个部分 notebook文件夹内的ipynb文件,介绍下今天的思路项目文件夹中其他部分:拆分后的信贷项目,学习下如何拆分的,未来你看到的很多大项目都是类似的拆分方法 知识点回顾 规范的文件命名规范的文件夹管理机器学…...
【SPIN】PROMELA远程引用与控制流验证(SPIN学习系列--5)
PROMELA语言提供了两种强大的机制用于验证并发系统:远程引用(remote references)和进程变量引用。这些机制使得在不引入额外状态变量的情况下,能够精确描述系统状态和属性。 远程引用(Remote References) 远程引用允许你直接引用进程中的控制位置(labe…...
GMSL:汽车里的音视频传输
参考链接: blog.csdn.net/weixin_50875614/article/details/119995651 blog.csdn.net/syjie19900426/article/details/145269782 SerDes 应用场景 WHAT GMSL是什么 GMSL(Gigabit Multimedia Serial Links),中文名称为千兆多媒体串行链路,是Maxim公司推出的一种…...
Java并发进阶系列:深度讨论jdk1.8 ConcurrentHashMap并发环境下transfer方法桶位分配过程
在前面有多篇关于jdk1.8的ConcurrentHashMap研究是基于源代码给出的深度分析,要知道多线程环境下的ConcurrentHashMap内部运行机制是相对复杂的,好在IDEA提供的相关断点和Debug功能确实好用,使得多线程调试起来直观,通过这种方式能…...
【深度学习-Day 14】从零搭建你的第一个神经网络:多层感知器(MLP)详解
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
fdisk和parted的区别
在Linux系统中,fdisk和parted是两种常用的分区工具。虽然它们都可以对硬盘进行分区,但在功能和适用范围上有显著的区别。 fdisk fdisk主要用于MBR(主引导记录)分区表的管理。MBR分区表有以下特点: 支持小于2TB的硬盘…...
springMVC拦截器,拦截器拦截策略设置
目录 1、MyInterceptor1 2、UserController 3、MvcConfig,拦截器4种拦截方法策略 做请求的校验,如果校验没有通过,直接返回,原来下面的处理,就不用处理了 将request进行拦截校验 将response进行拦截校验 preHandle…...
如何测试北斗卫星通讯终端的性能?
测试北斗卫星通讯终端的性能需从功能、性能、环境适应性、可靠性等多维度展开,以下是具体测试内容与方法: 一、基础功能测试 验证终端是否满足北斗系统的核心通讯功能。 (1)通信模式测试 短报文通信 测试终端发送 / 接收短报…...
基于MakeReal3D的虚拟预装系统:飞机装配效率与精度的双重突破
在航空制造领域,飞机部件的对接装配是飞机制造过程中的关键环节。传统的部件装配方式高度依赖操作人员的经验和反复调整,调姿过程耗时较长,且难以保证每次装配都能达到最优状态。随着虚拟现实技术的成熟,虚拟装配技术作为一种新兴…...
IP54是什么?
IP54是什么 定义 IP54是一种国际标准,用来指示设备的防护等级,该标准由国际电工委员会(IEC)制定,并在许多领域广泛使用13。IP是Ingress Protection的缩写,IP等级是针对电气设备外壳对异物侵入的防护等级。…...
Python异步编程详解
Python异步编程详解 引言 异步编程是Python中处理并发操作的重要方式,它允许程序在等待I/O操作时执行其他任务,从而提高程序的整体效率。本文将详细介绍Python异步编程的概念、实现方式以及实际应用场景。 1. 异步编程基础 1.1 什么是异步编程&#x…...
AUC与Accuracy的区别
下面分别解释下这两句话的含义及其原因,并说明 AUC 与 Accuracy(准确率)的区别: AUC 是阈值无关的指标 • 含义:在二分类问题中,模型通常会输出一个概率值或打分,需要设定一个阈值来将这些概…...
差分数组:原理与应用
一、什么是差分数组 差分数组是一种高效处理区间更新操作的数据结构技巧,特别适用于需要对数组的某个区间进行频繁增减操作的场景。差分数组的核心思想是通过存储相邻元素的差值而非元素本身,将区间操作转化为端点操作,从而将时间复杂度从O(…...
一些C++入门基础
关键字 图引自 C 关键词 - cppreference.com 命名空间 命名空间解决了C没办法解决的各类命名冲突问题 C的标准命名空间:std 命名空间中可以定义变量、函数、类型: namespace CS {//变量char cs408[] "DS,OS,JW,JZ";int cs 408;//函数vo…...
免费插件集-illustrator插件-Ai插件-路径尖角圆角化
文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,实现图形编辑中路径尖角圆角化。首先从下载网址下载这款插件https://download.csdn.net/download/m0_67316550/87…...
数据分析_商务运营考核指标体系搭建
以抖音电商中的小学教辅书籍业务为例,搭建对接达人的商务运营团队能力考核指标体系,涵盖达人筛选、合作管理、效果追踪和长期价值维护等核心环节,结合教育产品特性和商务运营目标,设计分层量化指标: 一、考核目标 围绕…...
基于Java的校运会管理系统【附源码】
湄洲湾职业技术学院 毕业设计(论文) 课题名称: 系 别: 专 业: 年 级: 姓 名: 学 号: 指导教师: 摘 要 用传统的方式来管理信息,一是耗时较长,二是…...
保证数据库 + redis在读写分离场景中事务的一致性
在 Spring Boot 中实现数据库与 Redis 的一致性,特别是处理读写分离时,确保数据修改的事务一致性是一个常见的挑战。因为 Redis 是一个内存数据库,通常用于缓存,而关系型数据库是持久化存储,两者之间的数据同步和一致性…...
【Redis】跳表结构
目录 1、背景2、跳表【1】底层结构【2】关键操作【3】redis使用跳表原因【4】特性 1、背景 redis中的跳表是一种有序数据结构,主要用于实现有序集合(zset)。跳表通过多级索引实现高效查找(平均O(logN)时间复杂度)&…...
Semaphore解决高并发场景下的有限资源的并发访问问题
在高并发编程的领域中,我们常常面临着对有限资源的激烈抢夺问题。而 Java 的 java.util.concurrent 包提供的 Semaphore ,为我们提供了精准控制对有限资源并发访问的强大能力。 一、Semaphore? Semaphore,直译为 “信号量”&#…...
医学影像辅助诊断系统开发教程-基于tensorflow实现
源码下载地址: https://download.csdn.net/download/shangjg03/90873910 1. 简介 医学影像辅助诊断系统是利用计算机视觉和深度学习技术,帮助医生分析医学影像(如X光、CT、MRI等)并提供诊断建议的系统。本教程将指导你开发一个基于深度学习的胸部X光肺炎检测系统。 2. 准备…...
手动导出Docker进行并自动执行脚本命令的操作方法
若你已在 Docker 镜像里手动封装好文件,想让容器启动时自动执行 start.sh 脚本,可按以下步骤操作将镜像导出,同时确保启动时能自动执行脚本。 1. 提交当前容器为新镜像 假设你是在某个运行中的容器里进行文件封装操作的,要先把这个容器的当前状态提交为一个新的 Docker 镜…...
Mysql 中的日期时间函数汇总
前言 在 MySQL 中,处理日期和时间是非常常见的需求,MySQL中内置了大量的日期和时间函数,能够灵活、方便地处理日期和时间数据,本节就简单介绍一下 MySQL中内置的日期和时间函数,以便更好地利用这些函数来处理日期和时间…...
RabbitMQ Topic RPC
Topics(通配符模式) Topics 和Routing模式的区别是: topics 模式使⽤的交换机类型为topic(Routing模式使⽤的交换机类型为direct)topic 类型的交换机在匹配规则上进⾏了扩展, Binding Key⽀持通配符匹配(direct类型的交换机路 由规则是BindingKey和RoutingKey完全匹配) 在top…...
Conda环境管理:确保Python项目精准复现
探讨如何使用 Conda 有效地管理项目依赖,确保你的 Python 环境可以被精确复制和轻松共享 为什么依赖管理如此重要? 在开始具体操作之前,我们先来理解一下为什么环境依赖管理至关重要: 可复现性 (Reproducibility):无…...
基于PyTorch的医学影像辅助诊断系统开发教程
本文源码地址: https://download.csdn.net/download/shangjg03/90873921 1. 简介 本教程将指导你使用PyTorch开发一个完整的医学影像辅助诊断系统,专注于胸部X光片的肺炎检测。我们将从环境搭建开始,逐步介绍数据处理、模型构建、训练、评估以及最终的系统部署。...
Vue3——Pinia
目录 什么是 Pinia? 为什么选择 Pinia? 基本使用 安装pinia 配置pinia 定义store 使用 持久化插件 什么是 Pinia? Pinia 是一个轻量级的状态管理库,专为 Vue 3 设计。它提供了类似 Vuex 的功能,但 API 更加简…...
Java中Collections工具类中常用方法详解
文章从工具类的概述、常用方法的作用、实现原理到使用注意事项,都进行了详细说明,供你参考。 Java中Collections工具类中常用方法详解 在Java开发中,集合是存储和处理数据的重要容器,而java.util.Collections工具类则提供了一组静…...
面经总目录——持续更新中
说明 本面经总结了校招时我面试各个公司的面试题目,每场面试后我都及时进行了总结,同时后期补充扩展了同类型的相近面试题,校招时从两个方向进行投递,视觉算法工程师和软件开发工程师(C方向),所…...
电力设备智能化方案复盘
本文针对公司在售的一款电力设备智能化方案的运营情况进行复盘分析,提出一些基于研发人员角度的看法及建议,欢迎大家交流,因本人经验有限,多多包涵。具体的产品用途和公司名称不方便透露。 1.背景 本方案是针对电网配电侧中某关键…...
Rocketmq刷盘机制和复制机制区别及关系
在RocketMQ中,刷盘机制和复制机制是两种不同但相互协作的机制,分别解决数据持久化和数据高可用的问题。它们的核心区别与关系如下: 一、刷盘机制(Flush Disk) 目标:解决单机数据持久化问题,确保…...
HTB 赛季8靶场 - Puppy
nmap扫描全端口 Nmap scan report for 10.129.243.117 Host is up, received echo-reply ttl 127 (0.47s latency). Scanned at 2025-05-18 21:12:56 EDT for 551s Not shown: 65512 filtered tcp ports (no-response) Bug in iscsi-info: no string output. PORT STATE …...