python - DataFrame查询数据操作

学习目标

  • 掌握获取df一列或多列数据的方法

  • 知道loc和iloc的区别以及使用方法

  • 知道df的query函数的使用方法

  • 知道isin函数的作用和使用方法

获取DataFrame子集的基本方法

1.1 从前从后获取多行数据

案例中用到的数据集在文章顶部   LJdata.csv

前景回顾 head() & tail()

import pandas as pd
​
# 加载csv数据集
df = pd.read_csv('LJdata.csv')
# 默认取前5行数据, 返回新的DataFrame
print(df.head())
# 取前10行数据
print(df.head(n=10))
​
# 默认取后5行数据, 返回新的DataFrame
print(df.tail())
# 取后10行数据
print(df.tail(n=10))

1.2 获取一列或多列数据

1.2.1 获取一列数据

获取一列数据, 通过df[列名]df.列名, 返回series对象

==注意:==如果列名字中间有空格, 只能通过df['列名']方式获取

print(df['户型'])
print(df.户型)
print(type(df['户型']))  # <class 'pandas.core.series.Series'>
1.2.2 获取多列数据

获取多列数据, 通过 df[[列名1, 列名2, ...]], 返回dataframe对象

==注意:==是两层[], 可以理解为df[列名的列表]

new_df = df[['区域', '地址']]
print(new_df)
print(type(new_df))  # <class 'pandas.core.frame.DataFrame'>

1.3 布尔值向量获取行数据

  • 布尔值向量:完全由布尔值组成的一维数据,布尔值向量形式为

    • 布尔值构成的列表

    • 布尔值构成的series

    • 布尔值构成的numpy.ndarray

  • df[[布尔值向量]] 其中布尔值向量的布尔值个数必须和df的行数(df.shape[0])相等

1.3.1 布尔值列表获取对应为True的行数据
df_head = df.head()
print(df_head)
print(df_head[[False, True, False, False, True]])
​
# 输出结果如下区域          地址    户型  面积  价格  朝向    更新时间  看房人数
0    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26
1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
2  广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34
3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
4  团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.07.26        30区域        地址    户型  面积  价格 朝向    更新时间  看房人数
1    望京租房    澳洲康都  2室1厅    79  7800   东  2017.07.23        33
4  团结湖租房  团结湖北口  2室1厅    63  6400   南  2017.07.26        30
1.3.2 布尔值构成的Series获取对应为True的行数据
print(df_head['面积'] > 80)  # 返回布尔值构成的series对象
print(df_head[temp_df['面积'] > 80])
​
# 输出结果如下
0    False
1    False
2     True
3     True
4    False
Name: 面积, dtype: bool区域          地址    户型  面积  价格  朝向    更新时间  看房人数
2  广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34
3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
1.3.3 布尔值构成的ndarray获取对应为True的行数据
import numpy as np
n1 = np.array([False, True, False, False, True])
print(n1)
print(df_head[n1])
​
# 输出结果如下
[False  True False False  True]区域        地址    户型  面积  价格 朝向    更新时间  看房人数
1    望京租房    澳洲康都  2室1厅    79  7800   东  2017.07.23        33
4  团结湖租房  团结湖北口  2室1厅    63  6400   南  2017.07.26        30

1.4 索引下标切片获取行数据

通过 df[起始行下标:结束行下标:步长], 获取多行数据

遵循==左闭右开==原则(包含起始行, 不包含结束行), 步长默认为1

temp_df = df.head(10) # 取原df前10行数据作为df4,默认自增索引由0到9
print(temp_df[0:3]) # 取前3行
print(temp_df[:5:2]) # 取前5行,步长为2
print(temp_df[1::3]) # 取第2行到最后所有行,步长为3
print(temp_df[-3:])  # 获取最后三行
​
# 输出结果如下区域      地址    户型  面积  价格 朝向    更新时间  看房人数
0    燕莎租房    新源街  2室1厅    50  5800   南  2017.07.21        26
1    望京租房  澳洲康都  2室1厅    79  7800   东  2017.07.23        33
2  广安门租房  远见名苑  2室1厅    86  8000   东  2017.07.20        34区域        地址    户型  面积  价格 朝向    更新时间  看房人数
0    燕莎租房      新源街  2室1厅    50  5800   南  2017.07.21        26
2  广安门租房    远见名苑  2室1厅    86  8000   东  2017.07.20        34
4  团结湖租房  团结湖北口  2室1厅    63  6400   南  2017.07.26        30区域        地址    户型  面积  价格 朝向    更新时间  看房人数
1    望京租房    澳洲康都  2室1厅    79  7800   东  2017.07.23        33
4  团结湖租房  团结湖北口  2室1厅    63  6400   南  2017.07.26        30
7    马甸租房      月季园  2室1厅    53  6000   南  2017.07.16        26

loc通过行列名获取子集

df.loc[] 通过行名(行索引值、行索引名)、列名获取子集

2.1 行索引值获取1行数据

通过 df.loc[行索引值] 获取一行数据

# 获取行索引值为2的一行数据, 返回series
print(temp_df.loc[2]) 
​
# 输出结果如下
区域        广安门租房
地址          远见名苑
户型            2室1厅
面积                86
价格              8000
朝向                东
更新时间    2017.07.20
看房人数            34
Name: 2, dtype: object

2.2 行索引值获取多行数据

通过 df.loc[[行索引值1, 行索引值2, ...]] 获取多行数据

# 获取行索引值为0和2的两行数据, 返回dataframe
print(temp_df.loc[[0, 2]])
​
# 输出结果如下区域      地址    户型  面积  价格 朝向    更新时间  看房人数
0    燕莎租房    新源街  2室1厅    50  5800   南  2017.07.21        26
2  广安门租房  远见名苑  2室1厅    86  8000   东  2017.07.20        34

2.3 行索引值切片获取多行数据

通过 df.loc[起始行索引值:结束行索引值:步长] 获取多行数据

遵循==左闭右闭==原则(包含起始行, 包含结束行), 步长默认为1

==注意:==df.loc[起始行索引值:结束行索引值:步长] 不等同于 df[起始行下标:结束行下标:步长]

print(temp_df.loc[:3])  # 表示获取行索引值0到3的行数据
print(temp_df[:3])  # 表示获取行下标值0到2的行数据
​
# 输出结果如下区域          地址    户型  面积  价格  朝向    更新时间  看房人数
0    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26
1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
2  广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34
3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30区域      地址    户型  面积  价格 朝向    更新时间  看房人数
0    燕莎租房    新源街  2室1厅    50  5800   南  2017.07.21        26
1    望京租房  澳洲康都  2室1厅    79  7800   东  2017.07.23        33
2  广安门租房  远见名苑  2室1厅    86  8000   东  2017.07.20        34

2.4 布尔值向量获取行数据

通过 df.loc[[布尔值向量]] 获取对应为True的行数据, 等同于 df[[布尔值向量]]

df_head = df.head()
n1 = np.array([False, True, False, False, True])
print(df_head.loc[n1])
​
# 输出结果如下区域        地址    户型  面积  价格 朝向    更新时间  看房人数
1    望京租房    澳洲康都  2室1厅    79  7800   东  2017.07.23        33
4  团结湖租房  团结湖北口  2室1厅    63  6400   南  2017.07.26        30

2.5 布尔值向量取行再配合列名取子集

通过 df.loc[布尔值向量, [列名1, 列名2, ...]] 获取子集

# print(temp_df['区域'] == '望京租房')  # 返回布尔值的series
​
# loc 有两个参数,参数1是布尔条件,参数2是选择查询的列
print(temp_df.loc[temp_df['区域'] == '望京租房', ['区域', '价格']])
​
# 输出结果如下区域  价格
1  望京租房  7800

2.6 行索引值取行再配合列名取子集

通过 df.loc[[行索引值1, 行索引值2, ...], [列名1, 列名2, ...]]

print(temp_df.loc[[1], ['区域', '价格']])
​
# 输出结果如下区域  价格
1  望京租房  7800
​
​
print(df.loc[4,'地址'])  # 得到的是字符串
​
# 输出结果如下团结湖北口  

2.7 行索引值切片取行再配合列名取子集

通过 df.loc[行索引值起始值:行索引值结束值:步长, [列名1, 列名2, ...]] 获取子集

遵循==左闭右闭==原则(包含起始行, 包含结束行), 步长默认为1

print(temp_df.loc[1:5:2, ['区域', '价格']])
print(temp_df.loc[:, ['区域', '价格']])
​
# 输出结果如下区域  价格
1    望京租房  7800
3  天通苑租房  5300
5  回龙观租房  4000区域  价格
0    燕莎租房  5800
1    望京租房  7800
2  广安门租房  8000
3  天通苑租房  5300
4  团结湖租房  6400
5  回龙观租房  4000
6    北苑租房  7500
7    马甸租房  6000
8  小西天租房  8500
9    北苑租房  5300

3 iloc通过行列下标获取子集

df.iloc[] 通过行下标(行索引下标、行序号)、列下标获取子集

3.1 行下标获取1行数据

通过 df.iloc[行下标] 获取一行数据

# 获取行索引下标为2的一行数据, 返回series
dict_data= {'歌手':['周杰伦','张国荣','罗大佑'],'歌曲':['七里香','沉默是金','童年']
}
df_star = pd.DataFrame(data=dict_data,index=[2004,1991,1982],columns=['歌手','歌曲'])
print(df_star)
​
print(df_star.iloc[0])  # 行索引是: 2004 1991 1982   # 行下标是 : 0 1 2 
​
# 输出结果
歌手    周杰伦
歌曲    七里香
Name: 2004, dtype: object

3.2 行下标获取多行数据

通过 df.iloc[[行下标1, 行下标2, ...]] 获取多行数据

# 获取行索引下标为0和2的两行数据, 返回dataframe
print(df_star.iloc[[0, 2]])
​
# 输出结果如下歌手   歌曲
2004  周杰伦  七里香
1982  罗大佑   童年

3.3 行下标切片获取多行数据

通过 df.iloc[起始行下标:结束行下标:步长] 获取多行数据

遵循==左闭右开==原则(包含起始行, 不包含结束行), 步长默认为1

==注意:==df.iloc[起始行下标:结束行下标:步长] 等同于 df[起始行下标:结束行下标:步长]

print(temp_df.iloc[:3])  # 表示获取行下标为0到2的行数据
print(temp_df[:3])  # 表示获取行下标为0到2的行数据
​
# 输出结果如下区域      地址    户型  面积  价格 朝向    更新时间  看房人数
0    燕莎租房    新源街  2室1厅    50  5800   南  2017.07.21        26
1    望京租房  澳洲康都  2室1厅    79  7800   东  2017.07.23        33
2  广安门租房  远见名苑  2室1厅    86  8000   东  2017.07.20        34区域      地址    户型  面积  价格 朝向    更新时间  看房人数
0    燕莎租房    新源街  2室1厅    50  5800   南  2017.07.21        26
1    望京租房  澳洲康都  2室1厅    79  7800   东  2017.07.23        33
2  广安门租房  远见名苑  2室1厅    86  8000   东  2017.07.20        34

3.4 行列下标切片取子集

通过 df.iloc[起始行下标:结束行下标:步长, 起始列下标:结束列下标:步长] 获取子集

遵循==左闭右开==原则(包含起始行/列, 不包含结束行/列), 步长默认为1

# 第1行到第5行,每2行选第1行;所有列,每2列取第1列
print(temp_df.iloc[0:5:2, ::2])
​
# 输出结果如下区域    户型  价格    更新时间
0    燕莎租房  2室1厅  5800  2017.07.21
2  广安门租房  2室1厅  8000  2017.07.20
4  团结湖租房  2室1厅  6400  2017.07.26

3.5 行下标切片和列下标取子集

通过 df.iloc[起始行下标:结束行下标:步长, [列下标1, 列下标2, ...]] 获取子集

遵循==左闭右开==原则(包含起始行, 不包含结束行), 步长默认为1

# 第1行到第5行,每2行选第1行;第1列和第3列
print(temp_df.iloc[0:5:2, [0, 2]])
​
# 输出结果如下区域    户型
0    燕莎租房  2室1厅
2  广安门租房  2室1厅
4  团结湖租房  2室1厅

3.6 行下标和列下标取子集

通过 df.iloc[[行下标1, 行下标2, ...], [列下标1, 列下标2, ...]]

# 第1行、第3行、第5行;第1列和第3列
print(temp_df.iloc[[0, 2, 4], [0, 2]])
​
# 输出结果如下区域    户型
0    燕莎租房  2室1厅
2  广安门租房  2室1厅
4  团结湖租房  2室1厅

3.7 行下标和列下标切片取子集

通过 df.iloc[[行下标1, 行下标2, ...], 起始列下标:结束列下标:步长] 获取子集

遵循==左闭右开==原则(包含起始列, 不包含结束列), 步长默认为1

# 第1行、第3行、第5行;所有列,每2列取第1列
print(temp_df.iloc[[0, 2, 4], ::2])
​
# 输出结果如下区域    户型  价格    更新时间
0    燕莎租房  2室1厅  5800  2017.07.21
2  广安门租房  2室1厅  8000  2017.07.20
4  团结湖租房  2室1厅  6400  2017.07.26

4 query函数获取子集

通过 df.query(判断表达式) 获取符合条件的df子集, 与 df[[布尔值向量]] 效果相同

==注意:==判断表达式为字符串格式

  • 示例

    print(temp_df.query("区域=='望京租房'"))  #  区域是列名  ,望京租房是值
    print(temp_df[temp_df['区域'] == '望京租房'])
    ​
    # 输出结果如下区域      地址    户型  面积  价格 朝向    更新时间  看房人数
    1  望京租房  澳洲康都  2室1厅    79  7800   东  2017.07.23        33

  • 查询租房区域为望京、天通苑、回龙观并且朝向为东、南的房源数据

    ​
    # .query().query()是链式编程, 第一个query查询之后,第二个query会在第一个的基础上再进行查询
    ​
    print(temp_df.query('区域 in ["望京租房", "天通苑租房", "回龙观租房"]').query('朝向 in ["东", "南"]'))
    ​
    print(temp_df.query('(区域 in ["望京租房", "天通苑租房", "回龙观租房"]) and (朝向 in ["东", "南"])'))
    ​
    # 作用同上
    print(temp_df.query('(区域 in ["望京租房", "天通苑租房", "回龙观租房"]) & (朝向 in ["东", "南"])'))
    ​
    ​
    # 输出结果如下区域      地址    户型  面积  价格 朝向    更新时间  看房人数
    1    望京租房  澳洲康都  2室1厅    79  7800   东  2017.07.23        33
    5  回龙观租房    龙华园  1室1厅    58  4000   南  2017.07.23        61

5 isin函数获取子集

通过 df.isin(values=[值1, 值2, ...]) 判断df中的数据值是否在values列表值中, 返回由布尔值构成的新df

原df中数据值在values列表中返回True, 否则返回False

temp_df = df.head(5)
# 拿到temp_df每行每列的值去和'天通苑租房'比较,如果比较成功,返回True,否则false
print(temp_df.isin(values=['天通苑租房']))
​
# 拿到temp_df每行每列的值去和'天通苑租房'或者'南'比较,如果比较成功,返回True,否则false
print(temp_df.isin(values=['天通苑租房', '南']))
​
print(temp_df[temp_df.isin(values=['天通苑租房', '南'])])
​
print(temp_df[((temp_df["区域"]=='望京租房') | (temp_df['区域']=='天通苑租房') | (temp_df['区域']=='回龙观租房')) & ((temp_df['朝向']=='东') | (temp_df['朝向']=='南'))])
​
​
​
# 输出结果如下区域   地址   户型   面积   价格   朝向  更新时间  看房人数
0  False  False  False  False  False  False     False     False
1  False  False  False  False  False  False     False     False
2  False  False  False  False  False  False     False     False
3   True  False  False  False  False  False     False     False
4  False  False  False  False  False  False     False     False区域   地址   户型   面积   价格   朝向  更新时间  看房人数
0  False  False  False  False  False   True     False     False
1  False  False  False  False  False  False     False     False
2  False  False  False  False  False  False     False     False
3   True  False  False  False  False  False     False     False
4  False  False  False  False  False   True     False     False区域 地址 户型  面积  价格 朝向 更新时间  看房人数
0         NaN  NaN  NaN   NaN   NaN   南      NaN       NaN
1         NaN  NaN  NaN   NaN   NaN  NaN      NaN       NaN
2         NaN  NaN  NaN   NaN   NaN  NaN      NaN       NaN
3  天通苑租房  NaN  NaN   NaN   NaN  NaN      NaN       NaN
4         NaN  NaN  NaN   NaN   NaN   南      NaN       NaN

Serires对象使用isin函数返回新的s对象,其他完全相同

print(temp_df['区域'].isin(values=['天通苑租房']))
print(temp_df['区域'].isin(values=['天通苑租房', '回龙观租房']))
print(temp_df[temp_df['区域'].isin(values=['天通苑租房', '回龙观租房'])])
​
​
# 输出结果如下
0    False
1    False
2    False
3     True
4    False
Name: 区域, dtype: bool
0    False
1    False
2    False
3     True
4    False
Name: 区域, dtype: bool区域          地址    户型  面积  价格  朝向    更新时间  看房人数
3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30

总结

请对下列API 有印象、能找到、能理解、能看懂

  • API清单

子集操作方法方法说明
df.head(n)获取前n行数据,默认5行
df.tail(n)获取最后n行数据,默认5行
df[列名] 或 df.列名获取一列数据
df[[列名1,列名2,...]]获取多列数据
df[[布尔值向量]]df[[True, False, ...]]取出对应为True的数据行
df[起始行下标:结束行下标:步长]行下标(索引下标)切片获取数据行
df.loc[行索引值]索引值(行名)获取1行数据
df.loc[[行索引值1, 行索引值2, ...]]索引值(行名)获取多行数据
df.loc[起始行索引值:结束行索引值:步长]索引值(行名)切片获取多行数据,注意与df[起始行下标:结束行下标:步长]不同
df.loc[[布尔值向量]]布尔值向量获取行数据,等同于df[[布尔值向量]]
df.loc[布尔值向量,[列名1, 列名2, ...]]布尔值向量取行再配合列名取子集
df.loc[[行索引值1, 行索引值2, ...], [列名1, 列名2, ...]]索引值取行再配合列名取子集
df.loc[行索引值起始值:行索引值结束值:步长, [列名1, 列名2, ...]]列名取子集
df.iloc[行下标]行下标取1行
df.iloc[[行下标1, 行下标2, ...]]行下标取多行
df.iloc[起始行下标:结束行下标:步长]行下标切片取多行
df.iloc[起始行下标:结束行下标:步长,起始列下标:结束列下标:步长]行列下标切片取子集
df.iloc[起始行下标:结束行下标:步长,[列下标1, 列下标2, ...]]行下标切片和列下标取子集
df.iloc[[行下标1, 行下标2, ...], [列下标1, 列下标2, ...]]行下标和列下标取子集
df.iloc[[行下标1, 行下标2, ...], 起始列下标:结束列下标:步长]行下标和列下标切片取子集
df.query('判断表达式字符串')df[[布尔值向量]]效果相同依据判断表达式返回符合条件的df子集
df.isin([值1, 值2, ...])判断是否存在某个值
  • loc和iloc的区别:

    • loc是根据行列名获取子集,行列名是肉眼看到的值

    • iloc是根据行列下标获取子集,行列下

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

范闲获取到庆帝与神庙的往来信件,用AES进行破解

关注微信公众号 数据分析螺丝钉 免费领取价值万元的python/java/商业分析/数据结构与算法学习资料 在《庆余年2》中&#xff0c;范闲与庆帝和神庙之间的权谋斗争愈演愈烈。一次偶然的机会&#xff0c;范闲从庆帝的密室中获取到几封与神庙往来的密信。然而&#xff0c;这封信件…

美团面试:百亿级分片,如何设计基因算法?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的架构类/设计类的场景题&#xff1a; 1.说说分库分表的基因算法&#xff1f…

使用matplotlib绘制折线条形复合图

使用matplotlib绘制折线条形复合图 介绍效果代码 介绍 在数据可视化中&#xff0c;复合图形是一种非常有用的工具&#xff0c;可以同时显示多种数据类型的关系。在本篇博客中&#xff0c;我们将探讨如何使用 matplotlib 库来绘制包含折线图和条形图的复合图。 效果 代码 imp…

【Linux】进程2——管理概念,进程概念

1.什么是管理&#xff1f; 那在还没有学习进程之前&#xff0c;就问大家&#xff0c;操作系统是怎么管理进行进程管理的呢&#xff1f; 很简单&#xff0c;先把进程描述起来&#xff0c;再把进程组织起来&#xff01; 我们拿大学为例子 最典型的管理者——校长最典型的被管理…

短视频矩阵源码----如何做正规开发规则分享:

一、什么是SaaS化服务技术开发&#xff1f; &#xff08;短视频矩阵系统是源头开发的应该分为3个端口---- 总后台控制端、总代理端口&#xff0c;总商户后台&#xff09; SaaS是软件即服务&#xff08;Software as a Service&#xff09;的缩写。它是一种通过互联网提供软件应…

MySQL查询相邻两条记录的时间间隔

MySQL查询相邻两条记录的时间间隔。最近需要统计相邻两条记录的时间间隔&#xff0c;筛选出时间间隔大于2min的数据记录。因为是同一张表&#xff0c;又需要查询出相邻的数据&#xff0c;所以最开始想到使用子表来做&#xff0c;分别用t1、t2表示&#xff0c;但是实践后发现查询…

如何查看本地sql server数据库的ip地址

程序连线SQL数据库&#xff0c;需要SQL Server实例的名称或网络地址。 1.查询语句 DECLARE ipAddress VARCHAR(100) SELECT ipAddress local_net_address FROM sys.dm_exec_connections WHERE SESSION_ID SPID SELECT ipAddress As [IP Address]SELECT CONNECTIONPROPERTY(…

鸢尾花分类和手写数字识别(K近邻)

鸢尾花分类 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import pandas as pd import mglearn# 加载鸢尾花数据集 iris load_iris() X_train, X_test, y_train, y_test train_test_split(iris.data,iris.target,test_siz…

【Linux】Centos7升级内核的方法:yum更新(ELRepo)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…

路径

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 用于定位一个文件或者目录的字符串被称为一个路径。在程序开发时&#xff0c;通常涉及两种路径&#xff0c;一种是相对路径&#xff0c;另一种是绝对…

Intel VT-x怎么开启?如何解决VMware打开虚拟机报错问题?

许多小伙伴在安装完VMware不能打开虚拟机&#xff0c;每次打开都会出现一个“此主机支持 Intel VT-x&#xff0c;但 Intel VT-x 处于禁用状态”的报错&#xff0c;然后因此启动不了虚拟机。今天小编就带来如何解决这个报错的方法。 什么是Intel VT-x&#xff1f; 这是英特尔cp…

黑龙江等保测评流程

黑龙江的等保测评过程是一个系统严谨的过程&#xff0c;目的在于保证信息系统的安全与机密性符合国家规定的要求。下面将详细介绍黑龙江等保测评的流程&#xff1a; 一、定级与备案 首先&#xff0c;企业要依据自身的业务特点、信息系统的重要性和所承载的信息的敏感程度&…

【Text2SQL 论文】C3:使用 ChatGPT 实现 zero-shot Text2SQL

论文&#xff1a;C3: Zero-shot Text-to-SQL with ChatGPT ⭐⭐⭐⭐ arXiv:2307.07306&#xff0c;浙大 Code&#xff1a;C3SQL | GitHub 一、论文速读 使用 ChatGPT 来解决 Text2SQL 任务时&#xff0c;few-shots ICL 的 setting 需要输入大量的 tokens&#xff0c;这有点昂贵…

玩转微服务-GateWay

目录 一. 背景二. API网关1. 概念2. API网关定义3. API网关的四大职能4. API网关分类5. 开源API网关介绍6. 开源网关的选择 三. Spring Cloud Gateway1. 文档地址2. 三个核心概念3. 工作流程4. 运行原理4.1 路由原理4.2 RouteLocator 5. Predicate 断言6. 过滤器 Filter6.1. 过…

Docker的网络管理

文章目录 一、Docker容器之间的通信1、直接互联&#xff08;默认Bridge网络&#xff09;1.1、Docker安装后默认的网络配置1.2、创建容器后的网络配置1.2.1、首先创建一个容器1.2.2、ip a 列出网卡变化信息1.2.3、查看新建容器后的桥接状态 1.3、容器内安装常见的工具1.4、容器间…

Spring Cloud系列——使用Sentinel进行微服务保护

文章目录 一、引言1. 雪崩问题的产生原因2. 解决雪崩问题的思路 二、微服务保护1. 服务保护方案1.1 请求限流1.2 线程隔离1.3 服务熔断 2. Sentinel2.1 安装2.2 微服务整合2.2.1 请求限流2.2.2 线程隔离①OpenFeign整合Sentinel②配置线程隔离 2.2.3 服务熔断①编写降级逻辑②配…

路由器重启真的好吗?多久重启一次更好?

前言 小白前段时间发现自己家的OpenWRT软路由上网特别慢&#xff0c;有时候通话还有点卡顿。 然而有个朋友用的普通路由器也有类似的问题&#xff0c;而且有时候根本上不去网。 解决的办法很简单&#xff1a;重启路由器。 重启路由器&#xff1f; 但路由器重启是真的好吗&a…

Android无障碍服务

Hi I’m Shendi Android无障碍服务 最近想制作一个记录点击操作并重复播放的工具&#xff0c;用以解放双手&#xff0c;因现在的Android高版本基本上难以Root&#xff0c;所以选择了使用无障碍来实现&#xff0c;在这里记录下来。 Android无障碍 可参考文档&#xff1a;https:…

Linux网络编程:网络层协议|IP

目录 前言&#xff1a; 1.IP协议 1.1.IP协议格式 1.2.网段划分 1.2.1.知识引入 1.2.2.IP地址划分和子网掩码 1.3.IP地址分类 1.3.1.特殊IP地址 ​编辑 1.3.2.私有IP和公网IP 1.3.3.浅谈NAT技术 1.4.路由 1.4.1.什么是路由 1.4.2.路由表 1.5.网络层数据切片和组装…

升级最新版openssh-9.7p1及openssl-1.1.1h详细步骤及常见问题总结

近期因为openssh相继被漏洞扫描工具扫出存在漏洞&#xff0c;所以考虑升级操作系统中的openssh和openssl为最新版本&#xff0c;来避免漏洞风险。期间的升级过程及遇到的疑难问题&#xff0c;特此记录下来&#xff0c;供有需要的人参考。 本次目标是升级 openssh 为 9.7p1 版本…