R語言開發入門完整指南

R語言開發入門完整指南

目錄

  1. R語言簡介
  2. 環境配置
  3. 包管理
  4. 基本語法
  5. 數據類型和結構
  6. 數據操作
  7. 統計分析
  8. 數據可視化
  9. 編程結構
  10. 實用技巧
  11. 學習資源

R語言簡介

R是一種專為統計計算和圖形設計的編程語言,廣泛應用于數據分析、統計建模、機器學習和數據可視化。R語言具有以下特點:

  • 開源免費:完全免費且源代碼開放
  • 豐富的包生態:CRAN上有超過18000個包
  • 強大的統計功能:內置豐富的統計函數
  • 優秀的可視化:ggplot2等包提供強大的圖形功能
  • 活躍的社區:全球有龐大的用戶和開發者社區

環境配置

1. 安裝R

Windows系統
  1. 訪問 R官方網站
  2. 點擊 “Download R”
  3. 選擇CRAN鏡像(推薦選擇中國鏡像)
  4. 點擊 “Download R for Windows”
  5. 下載 “base” 版本
  6. 運行安裝程序,按默認設置安裝
macOS系統
  1. 訪問CRAN網站
  2. 點擊 “Download R for macOS”
  3. 下載對應處理器版本的PKG文件
  4. 雙擊安裝
Linux系統 (Ubuntu/Debian)
# 更新包列表
sudo apt update# 安裝R
sudo apt install r-base r-base-dev# 驗證安裝
R --version

2. 安裝RStudio

RStudio是R語言最流行的集成開發環境(IDE)。

  1. 訪問 RStudio官網
  2. 下載RStudio Desktop免費版
  3. 選擇對應操作系統版本
  4. 按提示安裝

3. RStudio界面介紹

RStudio界面分為四個主要區域:

  • Source:代碼編輯器
  • Console:R控制臺
  • Environment/History:環境變量和歷史記錄
  • Files/Plots/Packages/Help:文件瀏覽器、圖形輸出、包管理和幫助

4. 配置R環境

# 查看R版本
version# 查看當前工作目錄
getwd()# 設置工作目錄
setwd("/path/to/your/directory")# 查看已安裝的包
installed.packages()# 查看R的搜索路徑
search()

包管理

1. 包的安裝

從CRAN安裝
# 安裝單個包
install.packages("ggplot2")# 安裝多個包
install.packages(c("dplyr", "tidyr", "readr"))# 指定鏡像安裝
install.packages("ggplot2", repos="https://cran.rstudio.com/")
從GitHub安裝
# 首先安裝devtools包
install.packages("devtools")# 從GitHub安裝包
devtools::install_github("username/packagename")
從Bioconductor安裝
# 安裝BiocManager
install.packages("BiocManager")# 通過BiocManager安裝生物信息學包
BiocManager::install("GenomicRanges")

2. 包的加載和管理

# 加載包
library(ggplot2)
# 或者
require(ggplot2)# 查看已加載的包
search()# 查看包的版本
packageVersion("ggplot2")# 更新包
update.packages()# 卸載包
remove.packages("packagename")# 查看包的幫助
help(package = "ggplot2")

3. 包依賴管理

# 查看包的依賴關系
tools::package_dependencies("ggplot2")# 安裝包及其所有依賴
install.packages("ggplot2", dependencies = TRUE)

基本語法

1. 基本操作

# 賦值操作
x <- 5          # 推薦方式
x = 5           # 也可以使用
5 -> x          # 較少使用# 輸出
print(x)
x               # 直接輸入變量名# 注釋
# 這是單行注釋# 基本運算
2 + 3           # 加法:5
5 - 2           # 減法:3
3 * 4           # 乘法:12
8 / 2           # 除法:4
2^3             # 乘方:8
10 %% 3         # 取余:1
10 %/% 3        # 整除:3

2. 變量命名規則

# 有效的變量名
my_variable <- 1
myVariable <- 2
variable1 <- 3
.hidden_var <- 4# 無效的變量名(會報錯)
# 1variable <- 5    # 不能以數字開頭
# my-variable <- 6  # 不能包含短橫線
# for <- 7          # 不能使用保留字

3. 數據檢查函數

# 查看對象類型
class(x)
typeof(x)
mode(x)# 查看對象結構
str(x)# 查看對象大小
length(x)
dim(x)          # 對于矩陣和數據框# 檢查數據類型
is.numeric(x)
is.character(x)
is.logical(x)
is.factor(x)

數據類型和結構

1. 基本數據類型

# 數值型 (numeric)
num1 <- 42
num2 <- 3.14159# 整數型 (integer)
int1 <- 42L
int2 <- as.integer(42)# 字符型 (character)
char1 <- "Hello"
char2 <- 'World'# 邏輯型 (logical)
log1 <- TRUE
log2 <- FALSE
log3 <- T        # TRUE的簡寫
log4 <- F        # FALSE的簡寫# 復數型 (complex)
comp1 <- 3 + 4i# 查看數據類型
class(num1)     # "numeric"
typeof(char1)   # "character"

2. 向量 (Vector)

# 創建向量
numeric_vec <- c(1, 2, 3, 4, 5)
char_vec <- c("a", "b", "c")
logical_vec <- c(TRUE, FALSE, TRUE)# 生成序列
seq1 <- 1:10                    # 1到10
seq2 <- seq(1, 10, by = 2)      # 1, 3, 5, 7, 9
seq3 <- seq(0, 1, length = 5)   # 等間距的5個數# 重復生成
rep1 <- rep(1, 5)               # 重復1五次
rep2 <- rep(c(1, 2), 3)         # 重復向量三次# 向量操作
length(numeric_vec)             # 向量長度
numeric_vec[1]                  # 第一個元素
numeric_vec[c(1, 3, 5)]         # 第1, 3, 5個元素
numeric_vec[-1]                 # 除第一個外的所有元素

3. 因子 (Factor)

# 創建因子
gender <- factor(c("M", "F", "M", "F", "M"))
education <- factor(c("High", "Medium", "Low"), levels = c("Low", "Medium", "High"),ordered = TRUE)# 查看因子
levels(gender)
nlevels(education)
summary(gender)

4. 矩陣 (Matrix)

# 創建矩陣
mat1 <- matrix(1:12, nrow = 3, ncol = 4)
mat2 <- matrix(1:12, nrow = 3, byrow = TRUE)# 矩陣操作
dim(mat1)                       # 維度
nrow(mat1)                      # 行數
ncol(mat1)                      # 列數
mat1[1, 2]                      # 第1行第2列元素
mat1[1, ]                       # 第1行
mat1[, 2]                       # 第2列# 矩陣運算
mat1 + mat2                     # 矩陣加法
mat1 * mat2                     # 元素乘法
mat1 %*% t(mat2)                # 矩陣乘法
t(mat1)                         # 轉置

5. 數組 (Array)

# 創建三維數組
arr <- array(1:24, dim = c(3, 4, 2))# 數組操作
dim(arr)
arr[1, 2, 1]                    # 訪問特定元素

6. 列表 (List)

# 創建列表
my_list <- list(numbers = 1:5,text = "hello",logical = c(TRUE, FALSE),matrix = matrix(1:6, nrow = 2)
)# 訪問列表元素
my_list$numbers                 # 使用$符號
my_list[["text"]]               # 使用雙括號
my_list[[1]]                    # 使用索引# 列表操作
names(my_list)                  # 獲取元素名稱
length(my_list)                 # 列表長度

7. 數據框 (Data Frame)

# 創建數據框
df <- data.frame(name = c("Alice", "Bob", "Charlie"),age = c(25, 30, 35),gender = c("F", "M", "M"),stringsAsFactors = FALSE
)# 查看數據框
head(df)                        # 前幾行
tail(df)                        # 后幾行
str(df)                         # 結構
summary(df)                     # 摘要統計# 訪問數據框
df$name                         # 列名訪問
df[, "age"]                     # 列名訪問
df[1, ]                         # 第一行
df[, 1:2]                       # 前兩列
df[df$age > 25, ]               # 條件篩選

數據操作

1. 數據導入導出

# 讀取CSV文件
df <- read.csv("data.csv", header = TRUE)
df <- read.csv("data.csv", stringsAsFactors = FALSE)# 讀取其他格式
df <- read.table("data.txt", sep = "\t", header = TRUE)
df <- read.delim("data.txt")# 使用readr包(推薦)
library(readr)
df <- read_csv("data.csv")# 讀取Excel文件
library(readxl)
df <- read_excel("data.xlsx", sheet = 1)# 導出數據
write.csv(df, "output.csv", row.names = FALSE)
write.table(df, "output.txt", sep = "\t")

2. 數據清洗

# 處理缺失值
is.na(df)                       # 檢查缺失值
complete.cases(df)              # 完整案例
na.omit(df)                     # 刪除含缺失值的行
df[!is.na(df$age), ]            # 刪除特定列的缺失值# 替換缺失值
df$age[is.na(df$age)] <- mean(df$age, na.rm = TRUE)# 重復值處理
duplicated(df)                  # 檢查重復
unique(df)                      # 去重
df[!duplicated(df), ]           # 刪除重復行

3. 使用dplyr進行數據操作

library(dplyr)# 篩選行
filter(df, age > 25)
filter(df, gender == "M", age > 30)# 選擇列
select(df, name, age)
select(df, -gender)             # 排除某列# 排序
arrange(df, age)                # 升序
arrange(df, desc(age))          # 降序# 創建新列
mutate(df, age_group = ifelse(age > 30, "Old", "Young"))# 分組匯總
group_by(df, gender) %>%summarise(avg_age = mean(age),count = n())# 管道操作
df %>%filter(age > 25) %>%select(name, age) %>%arrange(desc(age))

4. 數據重構

library(tidyr)# 寬格式轉長格式
wide_data <- data.frame(id = 1:3,A = c(1, 2, 3),B = c(4, 5, 6)
)long_data <- pivot_longer(wide_data, cols = c(A, B), names_to = "variable", values_to = "value")# 長格式轉寬格式
wide_again <- pivot_wider(long_data, names_from = variable, values_from = value)

統計分析

1. 描述性統計

# 基本統計量
mean(x)                         # 平均值
median(x)                       # 中位數
sd(x)                           # 標準差
var(x)                          # 方差
min(x)                          # 最小值
max(x)                          # 最大值
range(x)                        # 范圍
quantile(x)                     # 分位數
summary(x)                      # 摘要統計# 處理缺失值
mean(x, na.rm = TRUE)# 相關性分析
cor(x, y)                       # 相關系數
cor.test(x, y)                  # 相關性檢驗

2. 假設檢驗

# t檢驗
t.test(x)                       # 單樣本t檢驗
t.test(x, y)                    # 雙樣本t檢驗
t.test(x ~ group, data = df)    # 分組t檢驗# 卡方檢驗
chisq.test(table(x, y))# 方差分析
aov_result <- aov(y ~ group, data = df)
summary(aov_result)# 非參數檢驗
wilcox.test(x, y)               # Wilcoxon檢驗
kruskal.test(y ~ group, data = df)  # Kruskal-Wallis檢驗

3. 回歸分析

# 線性回歸
model <- lm(y ~ x, data = df)
summary(model)
plot(model)# 多元回歸
model2 <- lm(y ~ x1 + x2 + x3, data = df)# 邏輯回歸
logit_model <- glm(y ~ x, family = binomial, data = df)# 模型預測
predict(model, newdata = new_df)

數據可視化

1. 基礎繪圖

# 散點圖
plot(x, y)
plot(x, y, main = "Title", xlab = "X Label", ylab = "Y Label")# 線圖
plot(x, y, type = "l")# 條形圖
barplot(table(x))# 直方圖
hist(x)
hist(x, breaks = 20, main = "Histogram")# 箱線圖
boxplot(y ~ group, data = df)# 餅圖
pie(table(x))

2. ggplot2高級繪圖

library(ggplot2)# 基本語法
ggplot(data = df, aes(x = x_var, y = y_var)) +geom_point()# 散點圖
ggplot(df, aes(x = age, y = income)) +geom_point() +geom_smooth(method = "lm") +labs(title = "Age vs Income",x = "Age",y = "Income")# 條形圖
ggplot(df, aes(x = category)) +geom_bar() +theme_minimal()# 箱線圖
ggplot(df, aes(x = group, y = value)) +geom_boxplot() +facet_wrap(~ category)# 直方圖
ggplot(df, aes(x = value)) +geom_histogram(bins = 30, fill = "blue", alpha = 0.7)# 線圖
ggplot(df, aes(x = date, y = value, color = group)) +geom_line() +scale_x_date(date_labels = "%Y-%m")

3. 自定義主題

# 使用內置主題
p + theme_minimal()
p + theme_classic()
p + theme_bw()# 自定義主題
p + theme(plot.title = element_text(size = 16, hjust = 0.5),axis.text = element_text(size = 12),legend.position = "bottom"
)

編程結構

1. 條件語句

# if語句
x <- 5
if (x > 0) {print("x is positive")
} else if (x < 0) {print("x is negative")
} else {print("x is zero")
}# ifelse函數(向量化)
result <- ifelse(x > 0, "positive", "non-positive")# switch語句
grade <- "A"
switch(grade,"A" = "Excellent","B" = "Good","C" = "Average","D" = "Poor","Unknown")

2. 循環結構

# for循環
for (i in 1:10) {print(i)
}for (name in c("Alice", "Bob", "Charlie")) {print(paste("Hello", name))
}# while循環
i <- 1
while (i <= 5) {print(i)i <- i + 1
}# repeat循環
i <- 1
repeat {print(i)i <- i + 1if (i > 5) break
}

3. 函數定義

# 基本函數
my_function <- function(x, y = 2) {result <- x * yreturn(result)
}# 調用函數
my_function(5)          # 使用默認參數
my_function(5, 3)       # 指定所有參數# 匿名函數
sapply(1:5, function(x) x^2)# 函數式編程
library(purrr)
map(1:5, ~ .x^2)        # 等價于上面的sapply

4. 異常處理

# try函數
result <- try({x / 0
}, silent = TRUE)if (inherits(result, "try-error")) {print("發生錯誤")
}# tryCatch函數
result <- tryCatch({x / 0
}, error = function(e) {print(paste("錯誤:", e$message))return(NA)
}, warning = function(w) {print(paste("警告:", w$message))
})

實用技巧

1. 工作空間管理

# 查看工作空間對象
ls()                            # 列出所有對象
objects()                       # 同ls()# 刪除對象
rm(x)                           # 刪除特定對象
rm(list = ls())                 # 刪除所有對象# 保存和加載工作空間
save.image("workspace.RData")   # 保存整個工作空間
save(x, y, file = "data.RData") # 保存特定對象
load("workspace.RData")         # 加載工作空間

2. 性能優化

# 向量化操作(快)
x^2                             # 向量化# 避免循環(慢)
result <- numeric(length(x))
for (i in 1:length(x)) {result[i] <- x[i]^2
}# 使用apply函數族
apply(matrix, 1, mean)          # 對行應用函數
lapply(list, function)          # 對列表應用函數
sapply(vector, function)        # 簡化輸出的lapply# 預分配內存
result <- numeric(1000)         # 預分配
# 而不是逐步增長:result <- c(result, new_value)

3. 調試技巧

# 調試函數
debug(my_function)              # 進入調試模式
undebug(my_function)            # 退出調試模式# 追蹤錯誤
traceback()                     # 查看錯誤堆棧# 打印調試信息
print(x)
cat("x =", x, "\n")# 使用browser()暫停執行
my_function <- function(x) {browser()                     # 在此處暫停result <- x * 2return(result)
}

4. 內存管理

# 查看對象大小
object.size(x)
print(object.size(x), units = "MB")# 查看內存使用
memory.size()                   # Windows
gc()                            # 垃圾回收# 清理內存
rm(large_object)
gc()

5. 字符串處理

# 基本字符串操作
nchar("hello")                  # 字符串長度
substr("hello", 1, 3)           # 子字符串
paste("hello", "world")         # 連接
paste0("hello", "world")        # 無分隔符連接# 正則表達式
grep("pattern", text)           # 查找模式
gsub("old", "new", text)        # 替換
strsplit("a,b,c", ",")          # 分割# stringr包(推薦)
library(stringr)
str_length("hello")
str_sub("hello", 1, 3)
str_c("hello", "world")
str_detect("hello world", "world")
str_replace("hello", "l", "x")

學習資源

1. 官方文檔

  • R官方網站
  • CRAN文檔
  • R語言入門

2. 在線教程

  • R for Data Science
  • Advanced R
  • R Graphics Cookbook

3. 常用包

  • 數據處理: dplyr, tidyr, data.table
  • 可視化: ggplot2, plotly, lattice
  • 統計分析: stats, car, psych
  • 機器學習: caret, randomForest, e1071
  • 文本分析: tm, quanteda, tidytext
  • 時間序列: ts, forecast, zoo
  • 網絡爬蟲: rvest, httr, jsonlite

4. 開發工具

  • IDE: RStudio, VSCode with R extension
  • 版本控制: Git集成
  • 包開發: devtools, usethis, roxygen2
  • 文檔生成: rmarkdown, bookdown, blogdown

5. 社區資源

  • Stack Overflow R標簽
  • R-bloggers
  • RStudio Community
  • Kaggle R語言課程

6. 推薦書籍

  • 《R語言實戰》
  • 《ggplot2:數據分析與圖形藝術》
  • 《R語言核心技術手冊》
  • 《機器學習實戰:基于R語言》

總結

R語言是一個功能強大的數據分析工具,具有豐富的統計功能和優秀的可視化能力。通過掌握基本語法、數據結構、包管理和常用函數,您可以高效地進行數據分析工作。建議:

  1. 循序漸進:從基礎語法開始,逐步學習高級功能
  2. 多練習:通過實際項目鞏固所學知識
  3. 善用社區:遇到問題時查閱文檔和社區資源
  4. 保持更新:R語言和包生態系統在不斷發展,注意保持知識更新

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

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

相關文章

ObservedV2裝飾器和Trace裝飾器

為了對嵌套類對象屬性變化直接觀測&#xff0c;華為提供了ObservedV2和Trace裝飾器。這兩個裝飾器必須搭配使用&#xff0c;單獨使用任何一個都不會起任何作用&#xff1b;在繼承類中也可監測&#xff1b;ObservedV2的類實例目前不支持使用JSON.stringify進行序列化&#xff0c…

6月計算機新書:深度學習、大模型、DeepSeek

六月&#xff0c;這個充滿活力與希望的季節&#xff0c;三本重磅新書《深度學習&#xff1a;基礎與概念》、《MCP極簡開發&#xff1a;輕松打造高效智能體》與《大模型應用開發&#xff1a;RAG實戰課》翩然而至&#xff0c;為我們開啟了一場探索科技前沿的奇妙之旅。一起來看詳…

扁平風格職場商務通用PPT模版分享

扁平風格PPT模版&#xff0c;創意卡通扁平化通用PPT模版&#xff0c;創意扁平化勵志論文答辯PPT模版&#xff0c;卡通職場商務PPT模版&#xff0c;職場培訓&#xff0c;項目策劃&#xff0c;工作總結類PPT模版&#xff0c;互聯網電子商務PPT模版 扁平風格職場商務通用PPT模版分…

jupyter內核崩潰

最近在做用k-mer評估基因組規模的任務&#xff0c;其中一個局部程序&#xff0c;想偷懶&#xff0c;直接在jupyter中跑了下結果&#xff0c;想看看這一小步處理如何&#xff0c;結果沒想到內核崩潰了&#xff01; 這一步我的草稿代碼如下&#xff1a; import pandas as pd imp…

Java企業技術趨勢分析:AI應用的落地實踐與未來展望

Java企業技術趨勢分析&#xff1a;AI應用的落地實踐與未來展望 開篇&#xff1a;技術趨勢與市場需求 在當前快速發展的數字化時代&#xff0c;人工智能&#xff08;AI&#xff09;已經成為推動企業創新和效率提升的關鍵力量。Java作為企業級應用開發的主流語言&#xff0c;正…

每日Prompt:Steve Winter風格插畫

提示詞 世界攝影大師杰作&#xff0c;極簡主義&#xff0c;Steve Winter風格&#xff0c;6只不同顏色的布偶貓圍成一圈&#xff0c;看向鏡頭中心&#xff0c;仰天視角&#xff0c;天空背景&#xff0c;高品質細節&#xff0c;超精細CG&#xff0c;高分辨率&#xff0c;最佳品質…

Vue3 + Element Plus 獲取表格列信息

在 Vue 3 和 Element Plus 中&#xff0c;可以通過以下步驟獲取表格的列信息&#xff1a; 實現步驟&#xff1a; 使用 ref 綁定表格實例 通過表格實例的 store.states.columns 獲取列數據 處理列信息&#xff08;過濾隱藏列、處理嵌套表頭等&#xff09; 示例代碼&#xf…

logger2js - JavaScript日志與調試工具庫

logger2js - JavaScript日志與調試工具庫 logger2js是一個功能強大的前端JavaScript日志與調試工具庫&#xff0c;提供了豐富的日志輸出、性能測試和代碼調試功能。該庫支持配置化引入&#xff0c;包含5種皮膚風格和豐富的API接口&#xff0c;如 a l e r t 增強方法、 alert增…

Stone 3D使用RemoteMesh組件極大的縮小工程文件尺寸

Stone 3D的工程文件tsp默認包含了場景中所有的對象和數據&#xff0c;這樣的好處是tsp可以單獨離線保存&#xff0c;但壞處是tsp文件通常偏大。 解決這個問題的方法是把外部glb模型文件通過RemoteMesh組件來加載。 首先創建一個空實體&#xff0c;然后給該空實體添加RemoteMe…

【深入剖析】攻克 Java 并發的基石:Java 內存模型 (JMM) 原理與實踐指南

0.引言 理解 JMM (Java Memory Model - JMM) 是掌握 Java 并發編程的關鍵&#xff0c;它定義了多線程環境下&#xff0c;線程如何與主內存以及彼此之間交互內存數據。 核心目標&#xff1a; JMM 旨在解決多線程編程中的三個核心問題&#xff1a; 原子性 (Atomicity)&#xf…

【Three.js】初識 Three.js

Threejs介紹 我們開發 webgl 主要是使用 threejs 這個庫&#xff0c;因為 webGL太難用&#xff0c;太復雜&#xff01;但是現代瀏覽器都支持WebGL&#xff0c;這樣我們就不必使用Flash、Java等插件就能在瀏覽器中創建三維圖形。 threejs 它提供-一個很簡單的關于WebGL特性的J…

【經驗總結】ECU休眠后連續發送NM報文3S后ECU網絡才被喚醒問題分析

目錄 前言 正文 1.問題描述 2.問題分析 3.驗證猜想 4.總結 前言 ECU的上下電/休眠喚醒在ECU開發設計過程中最容易出問題且都為嚴重問題,最近在項目開發過程中遇到ECU休眠狀態下連續發送NM報文3S后才能喚醒CAN網絡的問題,解決問題比較順利,但分析過程中涉及到的網絡休…

企業架構框架深入解析:TOGAF、Zachman Framework、FEAF與Gartner EA Framework

執行摘要 企業架構&#xff08;EA&#xff09;是一項至關重要的實踐&#xff0c;它使組織能夠協調其業務戰略、運營流程和技術基礎設施&#xff0c;以實現整體戰略目標。企業架構框架作為結構化的方法論和綜合性工具&#xff0c;旨在管理企業級系統的固有復雜性&#xff0c;提…

數字化動態ID隨機水印和ID跑馬燈實現教育視頻防錄屏

摘要&#xff1a;數字化動態ID隨機水印和ID跑馬燈技術可以有效保護數字教育資源。動態水印將用戶信息隨機顯示在視頻上且不可去除&#xff0c;能追蹤錄屏者并震懾盜版行為。ID跑馬燈則自定義顯示觀看者信息&#xff0c;便于追蹤盜版源頭并提供法律證據。這些技術大幅增加盜版成…

< 自用文兒 騰訊云 VPS > Ubuntu 24 系統,基本設置

前言&#xff1a; 3 月份買的騰訊云的這臺 VPS&#xff0c;剛發現現在退款&#xff0c;只能返回 0 元。測試應用已經遷移到JD&#xff0c;清除內容太麻煩&#xff0c;重裝更簡單。 因為配合政策&#xff0c;國內的云主機都有兩個 IP 地址&#xff0c;一個內網&#xff0c;一個…

React ajax中的跨域以及代理服務器

Axios的誕生 為什么會誕生Axios&#xff1f;說到Axios我們就不得不說下Ajax。最初的舊瀏覽器頁面在向服務器請求數據時&#xff0c;由于返回的是整個頁面的數據&#xff0c;所以整個頁面都會強制刷新一下&#xff0c;這對于用戶來講并不是很友好。因為當我們只需要請求部分數據…

HOT 100 | 73.矩陣置零、54.螺旋矩陣、48.旋轉圖像

一、73. 矩陣置零 73. 矩陣置零 - 力扣&#xff08;LeetCode&#xff09; 1. 解題思路 1. 使用兩個數組分別標記每行每列是否有0&#xff0c;初始化全為False&#xff0c;遇到0就變成True。 2. 遍歷矩陣&#xff0c;遇到0就將False改成True。 3. 再次遍歷矩陣&#xff0c;更…

神經網絡壓縮

網絡壓縮技術學習筆記 以下筆記基于提供的 PDF 文件&#xff08;tiny_v7.pdf&#xff09;&#xff0c;總結了網絡壓縮技術的核心概念、實現原理和方法&#xff0c;特別針對多模態大模型、空間智能以及未來智能體&#xff08;Agent&#xff09;和通用人工智能&#xff08;AGI&a…

論索引影響性能的一面④ 索引失蹤之謎【上】

梁敬彬梁敬弘兄弟出品 往期回顧 論索引影響性能的一面①索引的各種開銷 論索引影響性能的一面②索引的使用失效 論索引影響性能的一面③ 索引開銷與經典案例 開篇&#xff1a;DBA的深夜“尋人啟事” 作為數據庫的守護者&#xff0c;我們最信賴的伙伴莫過于“索引”。它如同一…

java集合(九) ---- Stack 類

目錄 九、Stack 類 9.1 位置 9.2 特點 9.3 棧 9.4 構造方法 9.5 常用方法 9.6 注意點&#xff1a;循環遍歷 Stack 類 九、Stack 類 9.1 位置 Stack 類位于 java.util 包下 9.2 特點 Stack 類是 Vector 類的子類Stack 類對標于數據結構中的棧結構 9.3 棧 定義&…