R 语言学习笔记

news2024/11/26 23:28:53

1. 基础语法

赋值

a = 10;
b <- 10;# 表示流向,数据流向变量,也可以写成10 -> b

创建不规则向量

不用纠结什么是向量,就当作一个容器,数据类型要相同

a = c("我","爱","沛")

创建一定规则的向量

rep就是repeat的意思,就是重复

x <- seq(1, 10, by = 0.5)  # 得到1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  6.0  6.5  7.0  7.5  8.0  8.5  9.0  9.5 10.0
x <- seq(1, 10, length = 21)  # 从1到10,得到21个等间距数
x <- rep(2:5, 2)  # 得到2 3 4 5 2 3 4 5
x <- rep(2:5, rep(2, 4))  # 得到2 2 3 3 4 4 5 5

创建连续的数字向量

a = c(1:5)  # 可以得到1 2 3 4 5

运算符

数值运算符
	+  -  *  /
	^  # 乘方
	%%  # 求余
	%/%  # 整除

关系运算符
	>  <  ==  !=  >=  <=

逻辑运算符
	&&  ||  !

其他运算符
	:  # 冒号运算符,用于创建一系列数字的向量。
	%in%  # 用于判断元素是否在向量里,返回布尔值,有的话返回 TRUE,没有返回 FALSE。
	%*%  # 用于矩阵与它转置的矩阵相乘。

数学函数

常见对一些数学函数有:
在这里插入图片描述
R 中的 round 函数有些情况下可能会"舍掉五"。当取整位是偶数的时候,五也会被舍去
在这里插入图片描述

常见常量

  • 26个大写字母 LETTERS
  • 26个小写字母 letters
  • 月份简写 month.abb
  • 月份名称 month.name
  • π 值 pi

缺失值转为0

x [!is.na(x)]=0

数字与字符串互换

字符串转为数值型
as.integer("12.3")  # 字符串转整数,得到12
as.double("11.666")  # 字符串转小数,得到11.666
数值型转为文本

使用 paste()

a = paste(1) 

formatC() 数值作为字符串输出

formatC(1/3, format = "e", digits = 4)  # digits表示小数点位数
formatC(1/3, format = "f", digits = 4)

as.character()

a = as.character(66)

流程控制

if 语句

x <- 50L
if(is.integer(x)) {
   print("X 是一个整数")
} else {
   print("X 不是一个整数")
}

while 循环

a = 1
while(a<5){
    print('hello')
}

for 循环

a = c([1:4])

for(i in a){
    print(i)
}

repeat循环

a = 1
sum = 0
repeat{
  if(sum>10){
    break  # break终止循环,next继续下一次循环,就好像python的continue
  }
  sum=sum+a
  a=a+1
}
print(sum)

2. 常用数据结构

在这里插入图片描述

向量:c()

特点:

  • 只能存放一种元素,如果存在数字和字符串,就会自动转为字符串哦
  • 可以试用索引获取元素(索引从1开始)
  • 可以使用切片操作截取一个片段,两端都是闭区间、

使用append添加值

good_sample_p <- append(good_sample_p,p)

向量加减乘除运算

有一个好玩的是,向量的循环利用法则,比如a=c(1,2,3),b=c(4,5),这时如果让a+b就会有警告信息,但是它不报错。

以a+b为例:其实就是(1+4,2+5,3+4),现在懂了什么是循环利用了吧

一些常用的函数

  • sqrt(x), log(x), exp(x), sin(x), cos(x), tan(x), abs(x)分别表示平方根, 对数, 指数, 三角函数及绝对值.
  • sort(x, decreasing=FALSE)返回按x的元素从小到大排序的结果向量.
  • order(x)是使得x从小到大排列的元素下标向量
  • sort(x)与x[order(x)]是等效的
  • numeric(n): 表示长度为n的零向量
  • all(log(10 * x) > x):判断一个逻辑向量是否为真值
  • any(log(10 * x) > x): 判断是否有真值
  • is.na(c(1, 2, NA)): 判断x的每一个元素是否是缺失值

向量索引

R中向量的下标从 1 开始,这与通常的统计或数学软件不一致,C语言、Python等编程语言的向量下标则从 0 开始!

不要被python带跑了啊,R的负值索引表示删除第几个元素

x = c(42, 7, 64, 9)
x[2]  # 访问第2个元素
x[3] = -1  # 修改第三个数据的值
x[-4]  # 删除第四个元素
x[x < 10]  # 表示选取x<10的元素
x[c(1, 4)]  # 向量索引,是不是很神奇?

定义向量时可以给元素加上名字

ages <- c(Li = 23, Zhang = 33, Wang = 45)
# ages为
Li   Zhang  Wang 
23    33         45 
# 访问时可以用通常的方法,还可以用元素名访问
ages["Zhang"]
# 还可以定义向量后,再后加上名字
age1 = c(21, 34, 56)
names(age1) = c("Zhang", "Ding", "Liu")

矩阵:matrix

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)

data 是矩阵的数据,通常为向量
nrow 为行数,ncol 为列数
byrow 为 TRUE 时,是横着的1,2,3,4,否则变成竖着的1,2,3了

创建矩阵

matrix(1:12,ncol=4,byrow=TRUE)
# 得到的数据
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12

常用函数

  • head(a,10) 查看矩阵前10
  • tail(a,10) 查看矩阵后十行
  • cbind(): 进行上下合并
  • rbind(): 进行左右合并
  • c(A): 显示A的所有向量,是按列拉直的向量
  • det(A): 求行列式的值
  • solve(A): 求逆
  • eigen(A): 特征值和特征向量

矩阵运算

类似于向量的加减乘除

参与运算一般是相同形状的,形状不一致的向量和矩阵也可进行四则运算。规则是矩阵的数据按向量(按列拉直)的对应元素进行运算。

访问矩阵元素和子矩阵

  • A[2,3]#访问是矩阵的(2,3)元素7
  • A[i,]#访问第i行,A[,j] #访问第j列
  • A[,c(1,2,3)]前三列
  • A[,c(‘name1’,‘name2’)]指定列名

对矩阵的行标和列标重新命名

rownames(A)  <- c("a", "b", "c")
colnames(A) <- paste("X", 1:4, sep="")

apply函数

对矩阵想对某行(列)进行某种计算,可用apply函数:apply(x, margin, fun, …)

x表示矩阵,margin=1表示对每行计算,margin=2表示对每列计算,fun是用来计算的函数。

apply(A, 1, sum)
apply(A, 2, mean)

因子:factor

factor(x, levels = sort(unique(x), na.last = TRUE), labels, exclude = NA, ordered = FALSE)

用来把一个向量编码为一个因子

创建因子

sex = c("M","F","M","M","F")
sexf = factor(sex);sexf

常用函数

  • s.factor()检验对象是否是因子
  • as.factor()把向量转化为因子
  • levels(x)可以得到因子的水平
  • table(x)统计各类数据的频数

tapply()函数

tapply(x, INDEX, FUN=NULL,…,simplify=TRUE)

  • x是一对象,通常为一向量
  • INDEX是与X有同样长度的因子
  • FUN是要计算的函数

知道5位学生的性别,还知道这5位学生的身高,分组求身高的平均值

sex = c("M","F","M","M","F")
height = c(174, 165, 180, 171, 160)
tapply(height, sex, mean)

列表:list

创建列表

rec <- list(name="黎明", age=30, scores=c(85,76,90));rec
# 得到的数据
$name
[1] "黎明"

$age
[1] 30

$scores
[1] 85 76 90

列表的引用与修改

列表元素可用"列表名[[下标]]" 引用,列表不同于向量,每次只能引用一个元素,如rec[[1:2]]是不允许的

rec <- list(name="黎明", age=30, scores=c(85,76,90));rec
rec[[2]]  # 得到30
rec[[3]][2]  # 得到第三个元素的第二个元素,即76
# 若指定了元素的名字,则引用列表元素还可以用它的名字作为下标,
rec$age
rec[["age"]]
rec[[2]]=11  # 把30修改为11

注意:"列表名[下标]"或"列表名[下标范围]"的用法是允许的,但与前面的含义不同,它还是一个列表

数据框:data.frame

数据框通常是矩阵形式的数据,但矩阵各列可以是不同类型。数据框每列是一个变量,每行是一个观测。

和 DataFrame 类似

生成数据框

d = data.frame(name=c('黎明','周杰伦','刘德华'),age=c(30,35,28),height=c(180,175,173))
# d的值
    name age height
1   黎明  30    180
2 周杰伦  35    175
3 刘德华  28    173

as.data.frame(list)可以将列表转为data.frame(),因为列表不是可以指定名称嘛

数据框的引用

d = data.frame(name=c('黎明','周杰伦','刘德华'),age=c(30,35,28),height=c(180,175,173))
d[1:2, 2:3]  # 得到前两行,2,3列的数据
d[["age"]]  # 获取age这一列的数据
# 等价于
d$height  # 获取height这一列的数据
rownames(d) = c("one", "two", "three")  # 各行也可以定义名字,指定index

修改值

d$name[1] = "我爱你"  #将name的第一个值修改为我爱你   常用
d[1,2] = "女"  #将第1行第2列的值修改为“女”   常用
d[[1]][2] = "我爱你"  #将第一列第二个值改为“我爱你”

添加删除行列

d = df1[-2,] #删除第2行数据
d = df1[,-3] #删除第3列的数据
d = df1[-c(1,3),] #删除第1行和第3行的数据
d$r = age/weight  # 添加列r

attach()函数

R提供了函数attach()可以把变量调入内存。就是像咱们的d$height或d[[“age”]],就不用这样写了,直接写age就好了

d = data.frame(name=c('黎明','周杰伦','刘德华'),age=c(30,35,28),height=c(180,175,173))
attach(d)
r <- age/height  # /对r进行修改不会影响d的数据
# r的值
[1] 0.1666667 0.2000000 0.1618497
detach(d) #取消连接

merge()

把多个数据框合并成一个数据框

merge(data1, data2, by='ID')

数据的读取与保存

读取txt:read.table()

read.table(“filename.txt”)

读取xlsx:read.xlsx()

要先先安装xlsx包,然后导入xlsx包

data <- read.xlsx(“filename.xlsx”,n)

保存csv:write.csv()

write.csv(data,file = “文件名”)

保存 xlsx:write.xlsx()

write.xlsx(data, “data.xlsx”,sheet.name=“sheet1”)

保存R中为图片、pdf文件

以png为例

png(file="myplot.png", bg="transparent")  #文件不指定地址,默认放在getwd()里了

# 这里写你的画图程序#

dev.off()  # 记得off

# 下面是一个实例
png(file="myplot.png")
plot(1:10)
rect(1, 5, 3, 7)
dev.off()

3. R的一些常用函数

mean:获取均值

a=c(1:6)
mean(a)

median:获取中位数

a=c(1:6)
median(a)

获取众数

R语言中没有专门的函数获取众数,因此要手写

# 创建函数
getmode = function(v) {
   uniqv = unique(v)  # unique主要是返回一个把重复元素或行给删除的向量、数据框或数组
   uniqv[which.max(tabulate(match(v, uniqv)))]
}
 
# 创建向量
v = c(2,1,2,3,1,2,3,4,1,5,5,3,2,3)
 
# 调用函数
result = getmode(v)
print(result)
quantile():百分位数,默认为5个
a=c(1:6)
quantile(a)

# 得到的结果
> quantile(a)
  0%  25%  50%  75% 100% 
1.00 2.25 3.50 4.75 6.00 

summary():描述统计量

summary():获取描述性统计量,可以提供最小值、最大值、四分位数和数值型变量的均值,以及因子向量和逻辑型向量的频数统计等。

结果解读如下:

a=c(1:6)
summary(a)

得到的结果

> summary(a)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1.00    2.25    3.50    3.50    4.75    6.00 

var():计算方差

a = c(1:5)
var(a)

sd():标准差

a = c(1:5)
sd(a)

变异系数

方差除以平均值

当需要比较两组数据离散程度大小的时候,如果两组数据的测量尺度相差太大,或者数据量纲的不同,直接使用标准差来进行比较不合适,可以使用变异系数

sort、order:排序、指定排序规则

x = c(1,7,5,4,4,6,9)
x = sort(x,decreasing=FALSE)  # 返回升序排列结果,当decreasing为TRUE时为降序排列
# 或者
x_order = order(x,decreasing=FALSE)  # 返回升序后的下标, decreasing为TRUE时为降序排列
x = x[x_order]

要对一个矩阵x进行排序,先根据第一列升序排列,然后根据第二列升序排序,可以用下面的语句实现:

x[order(x[,1],x[,2]),]

注:降序的话加上decreasing参数即可。

处理缺失值

对于NA值来说,有些计算会保存,我们需要忽略NA,加上下面的参数即可:na.rm=TRUE,例如

mean(height,na.rm=TRUE)
[1] 5.855

cor():计算两个变量之间的相关系数(可略)

cor(height,log(height))

cov():两个变量之间的协方差(可略)

cov(height,log(height))

shapiro.test():判断数据是否满足正态分布

一般情况下,当返回的p-value大于0.05时表示满足。

4. R语言基础作图

  1. 图形的创建和保存
    通过交互式会话构建图形
    data0 <- read.csv(“height-weight.csv”, header=TRUE, sep=,)
    plot(data0[, 3], data0[, 4])
    abline(lm(data0[, 4]~data0[, 3]))
    title(“身高和体重关系图”)
    
    保存图形
    在这里插入图片描述
  2. 自定义图形修饰—图形参数
    通过图形参数选项定义图形的多个特征(字体、颜色、坐标轴、标题)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 标注的使用
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. 组合多个图形
    在这里插入图片描述

4.1 类型图

  1. 条形图
    在这里插入图片描述

  2. 饼图
    在这里插入图片描述

  3. 直方图
    在这里插入图片描述

  4. 核密度图
    在这里插入图片描述

  5. 箱线图在这里插入图片描述

  6. 点图
    在这里插入图片描述

  7. 散点图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  8. 折线图
    在这里插入图片描述
    在这里插入图片描述

  9. 相关图
    在这里插入图片描述

  10. 马赛克图
    在这里插入图片描述

代码实现:

#1. 添加了最佳拟合曲线的散点图
attach(mtcars)
plot(wt,mpg,main="Basic Scatter plot of MPG vs. Weight",xlab="Car Weight",ylab="Miles per Gallon",pch=19)
abline(lm(mpg~wt),col="red",lwd=2,lty=1)
install.packages("car")
library("car")
scatterplot(mpg~wt|cyl,data=mtcars,lwd=2,main="Scatter plot of MPG vs. Weight by Cylinders",xlab="Weight of Car",ylab="Miles per Gallon",boxplots="xy")

#2. 散点图矩阵
pairs(~mpg+disp+drat+wt,data=mtcars,main="Basic Scatter Plot Matrix")
scatterplotMatrix(~mpg+disp+drat+wt,data=mtcars,main="Scatter Plot Matrix via car Package")
cor(mtcars[c("mpg","wt","disp","drat")])
install.packages("gclus")
library("gclus")
mydata <- mtcars[c("mpg","wt","disp","drat")]
mydata.corr <- abs(cor(mydata))
mycolors <- dmat.color(mydata.corr)
myorder <- order.single(mydata.corr)
cpairs(mydata,myorder,panel.colors=mycolors,gap=0.5,main="Variable Ordered and Colored by Correlation")

#3. 高密度散点图
set.seed(1234)
n <- 10000
c1 <- matrix(rnorm(n,mean=0,sd=0.5),ncol=2)
c2 <- matrix(rnorm(n,mean=3,sd=2),ncol=2)
mydata <- rbind(c1,c2)
mydata <- as.data.frame(mydata)
names(mydata) <- c("x","y")
with(mydata,plot(x,y,pch=19,main="Scatter plot with 10000 observations"))
with(mydata,smoothScatter(x,y,main="Scatterplot Colored by Smoothed Densities"))
install.packages("hexbin")
library("hexbin")
with(mydata,{
             bin <- hexbin(x,y,xbins=50)
			 plot(bin,main="Hexagonal Binning with 10000 Observations")})
install.packages("IDPmisc")
library("IDPmisc")
with(mydata,iplot(x,y,main="Image Scatter Plot with Color Indicating Density"))

#4. 三维散点图
install.packages("scatterplot3d")
library("scatterplot3d")
with(mtcars,scatterplot3d(wt,disp,mpg,main="Basic 3D Scatter Plot"))
with(mtcars,scatterplot3d(wt,disp,mpg,pch=16,highlight.3d=TRUE,type="h",main="3D Scatter Plot with vertical lines"))

install.packages("rgl")
library("rgl")
with(mtcars,plot3d(wt,disp,mpg,col="red",size=5))

install.packages("Rcmdr")
library("Rcmdr")
with(mtcars,scatter3d(wt,disp,mpg))

#5. 气泡图
attach(mtcars)
r <- sqrt(disp/pi)
symbols(wt,mpg,circle=r,inches=0.30,fg="white",bg="lightblue",main="Bubble Plot with point size",xlab="Weight of Car",ylab="Miles per Gallon")
text(wt,mpg,rownames(mtcars),cex=0.6)
detach(mtcars)

#6. 折线图
opar <- par(no.readonly=TRUE)
par(mfrow=c(1,2))
t1 <- subset(Orange,Tree==1)
with(t1,plot(age,circumference,xlab="Age (days)",ylab="Circumference (mm)",main="Orange Tree 1 Growth"))
with(t1,plot(age,circumference,xlab="Age (days)",ylab="Circumference (mm)",main="Orange Tree 1 Growth",type="b"))
par(opar)

Orange$Tree <- as.numeric(Orange$Tree)
ntrees <- max(Orange$Tree)
xrange <- range(Orange$age)
yrange <- range(Orange$circumference)
plot(xrange,yrange,type="n",xlab="Age (days)",ylab="Circumference (mm)")
colors <- rainbow(ntrees)
linetype <- c(1:ntrees)
plotchar <- seq(18,18+ntrees,1)
for(i in 1:ntrees) {
                    tree <- subset(Orange,Tree==i)
					lines(tree$age,tree$circumference,type="b",lwd=2,lty=linetype[i],col=colors[i],pch=plotchar[i])}
title("Tree Growth","example of line plot")
legend(xrange[1],yrange[2],1:ntrees,cex=0.8,col=colors,pch=plotchar,lty=linetype,title="Tree")

#7. 相关图
options(digits=2)
cor(mtcars)
install.packages("corrgram")
library("corrgram")
corrgram(mtcars,order=TRUE,lower.panel=panel.shade,upper.panel=panel.pie,text.panel=panel.txt,main="Correlogram of mtcars intercorrelations")

#8. 马赛克图
ftable(Titanic)
install.packages("vcd")
library("vcd")
mosaic(Titanic,shade=TRUE,legend=TRUE)

5. 基本统计分析

  1. 描述性统计分析
    在这里插入图片描述
  2. 频数表和列联表
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 相关系数和协方差
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. t 检验
    在这里插入图片描述
    在这里插入图片描述
  5. 组间差异的非参数检验
    在这里插入图片描述
    在这里插入图片描述
    代码实现:
#2.描述性统计变量
rawdata <- read.csv("student_score.csv",header=TRUE,sep=",",row.names="name")
dim(rawdata)
head(rawdata)
tail(rawdata)
fivenum(rawdata[,3])
sapply(rawdata[,3:5],mean)
apply(rawdata[,3:5],2,mean)
apply(rawdata[,3:5],1,mean)
aggregate(rawdata[,3:5],by=list(gender=rawdata$gender),max)
dstats <- function(x)(c(max=max(x),min=min(x)))
by(rawdata[,3:3],rawdata$gender,dstats)

#3.频数表和列联表
library("vcd")
rawdata <- Arthritis
mytable1 <- with(rawdata,table(Improved))
prop.table(mytable1)
mytable2 <- with(rawdata,table(Sex,Improved))
margin.table(mytable2,1)
margin.table(mytable2,2)
addmargins(mytable2)
addmargins(mytable2,1)
addmargins(mytable2,2)
mytable3 <- with(rawdata,table(Treatment,Sex,Improved))
mytable4 <- xtabs(~Sex+Improved,data=rawdata)
mytable5 <- with(rawdata,ftable(Sex,Improved))

chisq.test(mytable2)
mytable6 <- with(rawdata,table(Treatment,Improved))
chisq.test(mytable6)
fisher.test(mytable6)

assocstats(mytable6)

#4.相关系数和协方差
states <- state.x77[,1:6]
cov(states)
cor(states)
cor(states,method="spearman")
install.packages("ggm")
library("ggm")
pcor(c(1,5,2,3,6),cov(states))
cor.test(states[,3],states[,5])
install.packages("psych")
library("psych")
corr.test(states,use="complete",method="spearman")

#5. t检验
library("MASS")
t.test(Prob~So,data=UScrime)
with(UScrime,t.test(U1,U2,paired=TRUE))

#6. 组间差异的非参数检验
wilcox.test(Prob~So,data=UScrime)

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

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

相关文章

编译原理 | 课程设计 — 语法分析

第1关&#xff1a;使用C/C语言编写PL/0编译程序的语法分析程序 1、任务描述 基于第二章的词法分析程序&#xff0c;使用C/C语言编写PL/0编译程序的语法分析程序。 2、编程要求 完成上述编程任务&#xff0c;将C/C语言源程序复制粘贴到右侧代码编辑器&#xff0c;点击“评测”按…

bthclsbthclsbthcls

Sql简单查询 创建数据库/表 进入数据库&#xff1a;mysql -uroot -p123456 支持中文字符&#xff1a; Set character_set_databaseutf8; Set character_set_serverutf8; 1.创建数据库 create database demo; use demo; 2.创建数据表 create table score( id int primar…

Day_48堆排序

目录 一. 关于堆排序 1. 堆的定义 二. 堆排序的实现 1. 堆排序的思路 2. 堆排序的问题分析 3. 堆排序的具体实施 4. 效率分析 三. 堆排序的代码实现 1. 堆排序 2. 调整堆&#xff08;核心代码&#xff09; 四. 代码展示 五. 数据测试 六. 总结 一. 关于堆排序 1. 堆的定义…

Shell脚本学习记录

shell教程 第一个shell脚本 打开文本编辑器(可以使用 vi/vim 命令来创建文件)&#xff0c;新建一个文件 test.sh&#xff0c;扩展名为 sh&#xff08;sh代表shell&#xff09;。 #!/bin/bash echo "Hello World !" #! 是一个约定的标记&#xff0c;它告诉系统这个…

ieda codeformatV2.xml

ieda codeformatV2.xml 目录概述需求&#xff1a; 设计思路实现思路分析1.codeformatV22.codeformatV23.codeformatV24.codeformatV25.数据处理器 拓展实现 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&…

MySQL数据库基础 08

第八章 聚合函数 1. 聚合函数介绍1.1 AVG和SUM函数1.2 MIN和MAX函数1.3 COUNT函数 2. GROUP BY2.1 基本使用2.2 使用多个列分组2.3 GROUP BY中使用WITH ROLLUP 3. HAVING3.1 基本使用3.2 WHERE和HAVING的对比 4. SELECT的执行过程4.1 查询的结构4.2 SELECT执行顺序4.3 SQL 的执…

MT1619

MT1619 是一款PD快充开关电源转换器芯片&#xff0c;其内部集成了一颗高集成度、高性能的电流模式 PWM 控制器和一颗功率 MOSFET。它适用于小于 30W 的开关电源设备。MT1619 具有恒功率功能&#xff0c;特别适用于 PD 充电器、电源适配器等中小功率的开关电源设备。极低的启动电…

[golang 微服务] 5. 微服务服务发现介绍,安装以及consul的使用,Consul集群

一.服务发现介绍 引入 上一节讲解了使用 gRPC创建微服务,客户端的一个接口可能需要调用 N个服务,而不同服务可能存在 不同的服务器,这时&#xff0c;客户端就必须知道所有服务的 网络位置&#xff08;ipport&#xff09;&#xff0c;来进行连接服务器操作,如下图所示: 以往的做…

赋值运算符重载实例:Date类(结尾附源码)

赋值运算符重载实例&#xff1a;Date类 文章目录 赋值运算符重载实例&#xff1a;Date类一、构造日期类二、获取某年某月天数以及检查合法1.获取某年某月天数2.检查日期合法3.打印日期类 三、不同运算符的重载&#xff08;1&#xff09; ; !&#xff08;2&#xff09;> ; &g…

Lecture 13 Formal Language Theory Finite State Automata

目录 什么是语言&#xff1f;Formal Language Theory 形式语言理论动机例子除了从属问题之外的问题Regular Languages 正则语言Finite State Acceptor 正则语言的性质Derivational MorphologyWeighted FSAFinite State Transducer (FST)FST for Inflectional MorphologyNon-Reg…

Java Web实现用户登录功能

文章目录 一、纯JSP方式实现用户登录功能&#xff08;一&#xff09;实现思路1、创建Web项目2、创建登录页面3、创建登录处理页面4、创建登录成功页面5、创建登录失败页面6、编辑项目首页 &#xff08;三&#xff09;测试结果 二、JSPServlet方式实现用户登录功能&#xff08;一…

软考A计划-系统架构师-官方考试指定教程-(11/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

第四十周周报

学习目标&#xff1a; 一、Stable Diffusion 论文 学习时间&#xff1a; 2023.6.3-2023.6.9 学习产出&#xff1a; 一、模型进展 相比前两周的结果&#xff0c;本周改进了一下参数&#xff0c;FID达到了9 前两周结果为10.258 本周相比前两周FID降低1 二、High-Resolu…

数据结构之树与二叉树——算法与数据结构入门笔记(五)

本文是算法与数据结构的学习笔记第五篇&#xff0c;将持续更新&#xff0c;欢迎小伙伴们阅读学习。有不懂的或错误的地方&#xff0c;欢迎交流 引言 前面章节介绍的都是线性存储的数据结构&#xff0c;包括数组、链表、栈、队列。本节带大家学习一种非线性存储的数据结构&…

【MySQL】- 05 sql 语句练习题

sql 语句练习题 一 测试数据的准备二、数据查询1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩4、…

MySQL数据库基础 06

第六章 多表查询 1. 一个案例引发的多表连接1.1 案例说明1.2 笛卡尔积&#xff08;或交叉连接&#xff09;的理解1.3 案例分析与问题解决 2. 多表查询分类讲解分类1&#xff1a;等值连接 vs 非等值连接等值连接非等值连接 分类2&#xff1a;自连接 vs 非自连接分类3&#xff1a…

动态网站开发02:Java Web概述

文章目录 一、 XML基础&#xff08;一&#xff09;XML概述1、XML2、XML与HTML的比较 &#xff08;二&#xff09;XML语法1、XML文档的声明2、XML元素的定义3、XML属性的定义4、XML注释的定义5、XML文件示例 &#xff08;三&#xff09;DTD约束1、什么是XML约束2、什么是DTD约束…

MM32F3273G8P火龙果开发板MindSDK开发教程5 - Gcc编译环境的配置

MM32F3273G8P火龙果开发板MindSDK开发教程5 - Gcc编译环境的配置 1、准备工作 用了几天Keil后&#xff0c;实在用不习惯&#xff0c;只好回到macos系统中来搭建gcc的编译环境。但是百问网火龙果开发板自带的DAP-Link在pyocd中根本识别不到&#xff0c;所以烧录还需要重新购置…

MySQL数据库基础 07

第七章 单行函数 1. 函数的理解1.1 什么是函数1.2 不同DBMS函数的差异1.3 MySQL的内置函数及分类 2. 数值函数2.1 基本函数2.2 角度与弧度互换函数2.3 三角函数2.4 指数与对数2.5 进制间的转换 3. 字符串函数4. 日期和时间函数4.1 获取日期、时间 4.2 日期与时间戳的转换 4.3 获…

一个关于宏定义的问题,我和ChatGPT、NewBing、Google Bard、文心一言 居然全军覆没?

文章目录 一、问题重述二、AI 解题2.1 ChatGPT2.2 NewBing2.3 Google Bard2.4 文心一言2.5 小结 一、问题重述 今天在问答模块回答了一道问题&#xff0c;要睡觉的时候&#xff0c;又去看了一眼&#xff0c;发现回答错了。 问题描述&#xff1a;下面的z的值是多少。 #define…