当前位置: 首页 > news >正文

数据挖掘-padans初步使用

目录标题

  • Jupyter Notebook
      • 安装
      • 启动
    • Pandas快速入门
      • 查看数据
      • 验证数据
      • 建立索引
      • 数据选取
      • ⚠️注意:
      • 排序
      • 分组聚合
      • 数据转换
      • 增加列
      • 绘图
        • 'line' 或 ''**(默认):绘制折线图。
        • 'bar':绘制条形图。
        • 'barh':绘制水平条形图。
        • 'hist':绘制直方图。
        • 'box':绘制箱形图(Boxplot)。
        • 'kde' 或 'density':绘制核密度估计图(Kernel Density Estimate)。
        • 'area':绘制面积图。面积图下方区域将被填充。
        • 'pie':绘制饼图。饼图通常用于显示部分与整体之间的关系。
        • 'scatter':绘制散点图。散点图用于显示两个变量之间的关系。
        • 'hexbin':绘制六边形分箱图(Hexbin plot)。
      • 写出数据

Jupyter Notebook

Jupyter(https://jupyter.org)项目是一个非营利性开源项目,于2014年由IPython项目中诞生,它能支持所有编程语言的交互式数据科学和科学计算。它的特点是能够在网页上直接执行编写的代码,同时支持动态交互,在做数据可视化时尤其方便
在这里插入图片描述

安装

# 安装Jupyter Notebook,使用清华大学下载源加快下载速度
pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple# 安装 Jupyter Lab 的命令如下
pip install jupyterlab

启动

jupyter notebook

这样就会在浏览器中打开一个网页

Pandas快速入门

import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取
df

在这里插入图片描述

查看数据

import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取
print(df.head()) # 打印前5行数据
print('================================================================')
print(df.tail()) # 打印后5行数据
print('================================================================')
print(df.sample()) # sample
print('================================================================')

在这里插入图片描述

验证数据

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : lw
@Description   : 
"""import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取
print('查看数据类型')
print(df.dtypes) # 查看数据类型
print('================================')
print('查看数据信息')
print(df.info) # 查看数据信息
print('================================')
print('查看数据统计信息')
print(df.describe()) # 查看数据统计信息 df.describe()会计算出各数字字段的总数(count)​、平均数 (mean)​、标准差(std)​、最小值(min)​、四分位数和最大值(max
print('================================')
print('查看数据索引')
print(df.axes)
print('================================')
print('查看数据列名')
print(df.columns)

查看数据类型
name object
team object
Q1 int64
Q2 int64
Q3 int64
Q4 int64
dtype: object
================================
查看数据信息
<bound method DataFrame.info of name team Q1 Q2 Q3 Q4
0 Liver E 89 21 24 64
1 Arry C 36 37 37 57
2 Ack A 57 60 18 84
3 Eorge C 93 96 71 78
4 Oah D 65 49 61 86
… … … … … … …
95 Gabriel C 48 59 87 74
96 Austin7 C 21 31 30 43
97 Lincoln4 C 98 93 1 20
98 Eli E 11 74 58 91
99 Ben E 21 43 41 74
[100 rows x 6 columns]>
================================
查看数据统计信息
Q1 Q2 Q3 Q4
count 100.000000 100.000000 100.000000 100.000000
mean 49.200000 52.550000 52.670000 52.780000
std 29.962603 29.845181 26.543677 27.818524
min 1.000000 1.000000 1.000000 2.000000
25% 19.500000 26.750000 29.500000 29.500000
50% 51.500000 49.500000 55.000000 53.000000
75% 74.250000 77.750000 76.250000 75.250000
max 98.000000 99.000000 99.000000 99.000000
================================
查看数据索引
[RangeIndex(start=0, stop=100, step=1), Index([‘name’, ‘team’, ‘Q1’, ‘Q2’, ‘Q3’, ‘Q4’], dtype=‘object’)]
================================
查看数据列名
Index([‘name’, ‘team’, ‘Q1’, ‘Q2’, ‘Q3’, ‘Q4’], dtype=‘object’)
Process finished with exit code 0

建立索引

以上数据真正业务意义上的索引是name列,所以我们需要使它成为索引:

#!/usr/bin/env python
# -*- coding: utf-8 -*-import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取
print('\n 原始表格 \n')
print(df)
print('\n 姓名为索引 \n')
df.index = df['name']
print(df)

原始表格
name team Q1 Q2 Q3 Q4
0 Liver E 89 21 24 64
1 Arry C 36 37 37 57
2 Ack A 57 60 18 84
3 Eorge C 93 96 71 78
4 Oah D 65 49 61 86
… … … … … … …
95 Gabriel C 48 59 87 74
96 Austin7 C 21 31 30 43
97 Lincoln4 C 98 93 1 20
98 Eli E 11 74 58 91
99 Ben E 21 43 41 74
[100 rows x 6 columns]
姓名为索引
name team Q1 Q2 Q3 Q4
name
Liver Liver E 89 21 24 64
Arry Arry C 36 37 37 57
Ack Ack A 57 60 18 84
Eorge Eorge C 93 96 71 78
Oah Oah D 65 49 61 86
… … … … … … …
Gabriel Gabriel C 48 59 87 74
Austin7 Austin7 C 21 31 30 43
Lincoln4 Lincoln4 C 98 93 1 20
Eli Eli E 11 74 58 91
Ben Ben E 21 43 41 74
[100 rows x 6 columns]
Process finished with exit code 0

数据选取

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取
# 查看指定列
print('查看 name列')
print(df['name'])
print('================================')
print('查看 name和Q1列')
print(df[['name','Q1']])
print('================================')# 用指定索引选取
df[df.index == 'Liver'] # 指定姓名# 用自然索引选择,类似列表的切片
print('查看前三行')
print(df[0:3]) # 取前三行
print('================================')
print('每两个取一个')
print(df[0:10:2]) # 在前10个中每两个取一个
print('================================')
print('查看前10行')
print(df.iloc[:10,:]) # 前10个
查看 name列
0        Liver
1         Arry
2          Ack
3        Eorge
4          Oah...   
95     Gabriel
96     Austin7
97    Lincoln4
98         Eli
99         Ben
Name: name, Length: 100, dtype: object
================================
查看 name和Q1列name  Q1
0      Liver  89
1       Arry  36
2        Ack  57
3      Eorge  93
4        Oah  65
..       ...  ..
95   Gabriel  48
96   Austin7  21
97  Lincoln4  98
98       Eli  11
99       Ben  21[100 rows x 2 columns]
================================
查看前三行name team  Q1  Q2  Q3  Q4
0  Liver    E  89  21  24  64
1   Arry    C  36  37  37  57
2    Ack    A  57  60  18  84
================================
每两个取一个name team  Q1  Q2  Q3  Q4
0   Liver    E  89  21  24  64
2     Ack    A  57  60  18  84
4     Oah    D  65  49  61  86
6    Acob    B  61  95  94   8
8  Reddie    D  64  93  57  72
================================
查看前10行name team  Q1  Q2  Q3  Q4
0   Liver    E  89  21  24  64
1    Arry    C  36  37  37  57
2     Ack    A  57  60  18  84
3   Eorge    C  93  96  71  78
4     Oah    D  65  49  61  86
5  Harlie    C  24  13  87  43
6    Acob    B  61  95  94   8
7    Lfie    A   9  10  99  37
8  Reddie    D  64  93  57  72
9   Oscar    A  77   9  26  67Process finished with exit code 0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei68
@Description   : 
"""import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取
print('条件选择')
print(df[df['Q1'] > 80]) # 选择Q1列中大于80的行
print(df[df['Q1'] > 80]['name']) # 选择Q1列中大于80的行 name列
print(df[df['Q1'] > 80][['name','Q1']]) # 选择Q1列中大于80的行 name和Q1列

⚠️注意:

选择一列和切片一样的使用方式,多列的时候要使用二维数组切片形式

排序

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei68
@Description   : 
"""import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取df = df.sort_values(by = 'Q1') # 按照Q1列进行排序
print(df)
df = df.sort_values(by = 'Q1',ascending=False)  # 降序排序
print(df)df = df.sort_values(by = ['name','Q2'],ascending=[True,False]) # 先按照name升序,再按照Q2降序
print(df)
         name team  Q1  Q2  Q3  Q4
37  Sebastian    C   1  14  68  48
39     Harley    B   2  99  12  13
85       Liam    B   2  80  24  25
58      Lewis    B   4  34  77  28
82       Finn    E   4   1  55  32
..        ...  ...  ..  ..  ..  ..
3       Eorge    C  93  96  71  78
88      Aaron    A  96  75  55   8
38     Elijah    B  97  89  15  46
19        Max    E  97  75  41   3
97   Lincoln4    C  98  93   1  20[100 rows x 6 columns]name team  Q1  Q2  Q3  Q4
97   Lincoln4    C  98  93   1  20
19        Max    E  97  75  41   3
38     Elijah    B  97  89  15  46
88      Aaron    A  96  75  55   8
3       Eorge    C  93  96  71  78
..        ...  ...  ..  ..  ..  ..
82       Finn    E   4   1  55  32
58      Lewis    B   4  34  77  28
85       Liam    B   2  80  24  25
39     Harley    B   2  99  12  13
37  Sebastian    C   1  14  68  48[100 rows x 6 columns]name team  Q1  Q2  Q3  Q4
88    Aaron    A  96  75  55   8
2       Ack    A  57  60  18  84
6      Acob    B  61  95  94   8
33     Adam    C  90  32  47  39
94    Aiden    D  20  31  62  68
..      ...  ...  ..  ..  ..  ..
40     Toby    A  52  27  17  68
46    Tommy    C  29  44  28  76
79    Tyler    A  75  16  44  63
18  William    C  80  68   3  26
55  Zachary    E  12  71  85  93[100 rows x 6 columns]Process finished with exit code 0

分组聚合

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : li
@Description   : 
"""import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取print(df.groupby('team').sum('Q1'))
print(df.groupby('team').mean('Q1'))
print(df.groupby(['team','name']).mean())
# 不同列不同的计算方法
df1 = df.groupby('team').agg({'Q1': sum,  # 总和'Q2': 'count', # 总数'Q3':'mean', # 平均'Q4': max}) # 最大值print(df1)

数据转换

import pandas as pd
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下df1 = df.groupby('team').agg({'Q1': sum,  # 总和'Q2': 'count', # 总数'Q3':'mean', # 平均'Q4': max}) # 最大值print(df1)
print(df1.T)

df.T 转置

转置前

        Q1  Q2         Q3  Q4
team                         
A     1066  17  51.470588  97
B      975  22  54.636364  99
C     1056  22  48.545455  98
D      860  19  65.315789  99
E      963  20  44.050000  98

转置后

team            A           B            C           D       E
Q1    1066.000000  975.000000  1056.000000  860.000000  963.00
Q2      17.000000   22.000000    22.000000   19.000000   20.00
Q3      51.470588   54.636364    48.545455   65.315789   44.05
Q4      97.000000   99.000000    98.000000   99.000000   98.00

增加列

直接切片增加索引的方式

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei
@Description   : 
"""import pandas as pd
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下df['one'] = 1 # 增加一个固定值的列
df['total'] = df.Q1 + df.Q2 + df.Q3 + df.Q4 # 增加总成绩列# # 将计算得来的结果赋值给新列
df['total2'] = df.loc[:,'Q1':'Q4'].apply(lambda x:sum(x), axis=1)df['avg'] = df.total/4 # 增加平均成绩列print(df)

绘图

Pandas利用plot()调用Matplotlib快速绘制出数据可视化图形。注意,第一次使用plot()时可能需要执行两次才能显示图形。 可以使用plot()快速绘制折线图。

在Python中,使用pandas库的DataFrame对象的plot()方法可以很容易地绘制图表。默认情况下,df.plot()会将图表显示在Jupyter Notebook中,但不会自动保存为文件。如果你想保存图表,可以使用matplotlib.pyplot.savefig()函数。

以下是一个简单的例子

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei 
@Description   : 
"""import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下df['one'] = 1 # 增加一个固定值的列
df['total'] = df.Q1 + df.Q2 + df.Q3 + df.Q4 # 增加总成绩列# # 将计算得来的结果赋值给新列
df['total2'] = df.loc[:,'Q1':'Q4'].apply(lambda x:sum(x), axis=1)df['avg'] = df.total/4 # 增加平均成绩列df.plot()
plt.plot()
plt.savefig('team.png')

在这里插入图片描述

在pandas中,df.plot()是一个非常方便的函数,用于基于DataFrame或Series的数据快速生成图表。kind参数是df.plot()方法中一个非常重要的参数,它指定了要绘制的图表类型。kind参数可以接收多种不同的字符串值,以生成不同类型的图表。以下是一些常见的kind参数值及其对应的图表类型:

‘line’ 或 ‘’**(默认):绘制折线图。

如果DataFrame有多列,则每列都会被绘制为一条线。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei
@Description   : 
"""import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下file_path_out = 'team_out.xlsx'
# groupby 分组,sum求和,reset_index重置索引
# 注意 此处如果不重置索引,df中将会没有groupBy的字段
df1 = df.groupby('team').sum('Q1').reset_index()with pd.ExcelWriter(file_path_out) as writer:df1.to_excel(writer, sheet_name='结果', index=False)print(df1)
df1.plot(x = 'team',y = 'Q1' ,kind = 'line')
plt.plot()
plt.savefig('team.png')

在这里插入图片描述

‘bar’:绘制条形图。

如果DataFrame有多列,则每列都会被绘制为独立的条形图组。

df1.plot(x = 'team',y = 'Q1' ,kind = 'bar')

在这里插入图片描述

‘barh’:绘制水平条形图。

与条形图类似,但条是水平的。

df1.plot(x = 'team',y = 'Q1' ,kind = 'barh')

在这里插入图片描述

‘hist’:绘制直方图。

这通常用于Series,但也可以用于DataFrame的每列,为每列绘制直方图。

df1.plot(x = 'team',y = 'Q1' ,kind = 'hist')

在这里插入图片描述

‘box’:绘制箱形图(Boxplot)。

箱形图用于显示数据分布的四分位数,并可能显示异常值。
在这里插入图片描述

‘kde’ 或 ‘density’:绘制核密度估计图(Kernel Density Estimate)。

这是一种用于估计单变量概率密度函数的非参数方法。
在这里插入图片描述

‘area’:绘制面积图。面积图下方区域将被填充。

如果DataFrame有多列,则堆叠这些区域(除非指定stacked=False)。
在这里插入图片描述

‘pie’:绘制饼图。饼图通常用于显示部分与整体之间的关系。

注意,饼图通常用于单个Series,因为DataFrame的每一行都会被解释为饼图的一部分。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei 
@Description   : 
"""import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下file_path_out = 'team_out.xlsx'
# groupby 分组,sum求和,reset_index重置索引
# 注意 此处如果不重置索引,df中将会没有groupBy的字段
# 各组人数对比
df.groupby('team').count().Q1.plot.pie()plt.savefig('team_pie.png')

在这里插入图片描述

‘scatter’:绘制散点图。散点图用于显示两个变量之间的关系。

如果DataFrame有多列,则默认使用前两列作为x和y轴。
在这里插入图片描述

‘hexbin’:绘制六边形分箱图(Hexbin plot)。

这是一种用于表示两个变量之间关系的二维直方图。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei 
@Description   : 
"""import numpy as np
import matplotlib.pyplot as plt# 生成一些随机数据
np.random.seed(19680801)
x = np.random.randn(10000)
y = np.random.randn(10000)# 绘制Hexbin plot
plt.hexbin(x, y, gridsize=50, cmap='viridis')# 添加颜色条
cb = plt.colorbar(label='counts in bin')# 设置图表标题和坐标轴标签
plt.title("Hexbin of 10,000 points")
plt.xlabel("X")
plt.ylabel("Y")# 显示图表
plt.show()

在这里插入图片描述

写出数据

with pd.ExcelWriter(file_path_out) as writer:df1.to_excel(writer, sheet_name='结果', index=False)

相关文章:

数据挖掘-padans初步使用

目录标题 Jupyter Notebook安装启动 Pandas快速入门查看数据验证数据建立索引数据选取⚠️注意&#xff1a;排序分组聚合数据转换增加列绘图line 或 **&#xff08;默认&#xff09;&#xff1a;绘制折线图。bar&#xff1a;绘制条形图。barh&#xff1a;绘制水平条形图。hist&…...

小阿轩yx-案例:项目发布基础

小阿轩yx-案例&#xff1a;项目发布基础 前言 随着软件开发需求及复杂度的不断提高&#xff0c;团队开发成员之间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。Jenkins 自动化部署可以解决集成、测试、部署等重复性的工作&#xff0c;工具集…...

【HarmonyOS】时间处理Dayjs

背景 在项目中经常会使用要时间的格式转换&#xff0c;比如数据库返回一个Date数据&#xff0c;你需要转成2024-10-2的格式&#xff0c;鸿蒙的原生SDK中是没有办法实现的&#xff0c;因此&#xff0c;在这里介绍第三方封装好并且成熟使用的库Dayjs。 安装 切换到Entry文件夹下…...

论React Native 和 UniApp 的区别

1. 开发语言与框架 React Native: 使用 JavaScript 和 React 框架进行开发。采用了 React 的组件化开发模式&#xff0c;适合熟悉 React 生态的开发者。使用 JavaScript 编写的代码会通过 React Native 框架桥接到原生代码&#xff08;如 iOS 的 Swift 或 Android 的 Java/Kotl…...

微信小程序处理交易投诉管理,支持多小程序

大家好&#xff0c;我是小悟 1、问题背景 玩过微信小程序生态的&#xff0c;或许就有这种感受&#xff0c;如果收到投诉单&#xff0c;不会及时通知到手机端&#xff0c;而是每天早上10:00向小程序的管理员及运营者推送通知。通知内容为截至前一天24时该小程序账号内待处理的交…...

Pikachu-xss防范措施 - href输出 js输出

总体原则&#xff1a; 输入做过滤&#xff0c;输出做转义 过滤&#xff1a;根据业务需要进行过滤&#xff0c;如&#xff1a;输入点要求输入手机号&#xff0c;则只允许输入手机号格式的数字&#xff1b; 转义&#xff1a;所有输出到前端的数据&#xff0c;都根据输出点进行转…...

数据结构双向链表和循环链表

目录 一、循环链表二、双向链表三、循环双向链表 一、循环链表 循环链表就是首尾相接的的链表&#xff0c;就是尾节点的指针域指向头节点使整个链表形成一个循环&#xff0c;这就弥补了以前单链表无法在后面某个节点找到前面的节点&#xff0c;可以从任意一个节点找到目标节点…...

go基础面试题汇总第一弹

init函数是什么时候执行的? init的函数的作用是什么&#xff1f; 通常作为程序执行前包的初始化&#xff0c;例如mysql redis 等中间件的初始化 init函数的执行顺序是怎样的&#xff1f; 分不同情况来回答&#xff1a; 在同一个go文件里面如果有多个init方法&#xff0c;它们…...

Redis 实现分布式锁时需要考虑的问题

引言 分布式系统中的多个节点经常需要对共享资源进行并发访问&#xff0c;若没有有效的协调机制&#xff0c;可能会导致数据竞争、资源冲突等问题。分布式锁应运而生&#xff0c;它是一种保证在分布式环境中多个节点可以安全地访问共享资源的机制。而在Redis中&#xff0c;使用…...

百年极限论一直存在百年糊涂话:有正数小于所有正数

百年极限论一直存在百年糊涂话&#xff1a;有正数小于所有&#xff08;任何、任意&#xff09;正数。 “对于每个大于0的ε[ε>0]&#xff0c;都有非0距离数小于ε”显然是病句&#xff1a;有正数小于每个&#xff08;所有&#xff09;正数ε。其中任意&#xff08;任何&am…...

红日靶场1学习笔记

一、准备工作 1、靶场搭建 靶场地址 靶场描述 靶场拓扑图 其他相关靶场搭建详情见靶场地址相关说明 2、靶场相关主机信息 后续打靶场的过程中&#xff0c;如果不是短时间内完成&#xff0c;可能ip会有变化 主机ip密码角色win7192.168.122.131hongrisec2019!边界服务器win…...

【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)

文章目录 从零实现 list 容器&#xff1a;细粒度剖析与代码实现前言1. list 的核心数据结构1.1节点结构分析&#xff1a; 2. 迭代器设计与实现2.1 为什么 list 需要迭代器&#xff1f;2.2 实现一个简单的迭代器2.2.1 迭代器代码实现&#xff1a;2.2.2 解释&#xff1a; 2.3 测试…...

【C#生态园】打造现代化跨平台应用:深度解析.NET桌面应用工具

选择最适合你的.NET UI框架&#xff1a;全面解析六种热门选择 前言 在现代软件开发中&#xff0c;选择合适的桌面应用框架和UI库对于开发人员来说至关重要。本文将介绍几种流行的.NET桌面应用框架和UI库&#xff0c;包括Eto.Forms、Avalonia、ReactiveUI、MahApps.Metro、Mat…...

第二十一章 (动态内存管理)

1. 为什么要有动态内存分配 2. malloc和free 3. calloc和realloc 4. 常⻅的动态内存的错误 5. 动态内存经典笔试题分析 6. 总结C/C中程序内存区域划分 1.为什么要有动态内存管理 我们目前已经掌握的内存开辟方式有 int main() {int num 0; //开辟4个字节int arr[10] …...

机器学习框架总结

机器学习框架是用于构建、训练、评估和部署机器学习模型的工具和库的集合。它们简化了模型开发过程&#xff0c;并提供了预构建的功能、优化的计算性能和对深度学习、监督学习、无监督学习等技术的支持。下面是一些主要的机器学习框架的详细介绍&#xff1a; 1. TensorFlow 1…...

docker pull 超时的问题如何解决

docker不能使用&#xff0c;使用之前的阿里云镜像失败。。。 搜了各种解决方法&#xff0c;感谢B站UP主 <iframe src"//player.bilibili.com/player.html?isOutsidetrue&aid113173361331402&bvidBV1KstBeEEQR&cid25942297878&p1" scrolling"…...

【数学分析笔记】第4章第3节 导数四则运算和反函数求导法则(2)

4. 微分 4.3 导数四则运算与反函数求导法则 双曲正弦函数 sh ⁡ x e x − e − x 2 \sh x\frac{e^x-e^{-x}}{2} shx2ex−e−x​ 双曲余弦函数 ch ⁡ x e x e − x 2 \ch x\frac{e^xe^{-x}}{2} chx2exe−x​ ch ⁡ 2 x − sh ⁡ 2 x 1 \ch^2 x-\sh^2 x1 ch2x−sh2x1 ( e…...

【2024】基于mysqldump的数据备份与恢复

基于mysqldump备份与恢复 mysqldump是一个用于备份 MySQL 数据库的实用工具。 它可以将数据库的结构&#xff08;如数据库、表、视图、存储过程等的定义&#xff09;和数据&#xff08;表中的记录&#xff09;导出为文本文件&#xff0c;这些文本文件可以包含 SQL 语句&#…...

家用无线路由器配置

一.首先进行线路连接。如下图&#xff1a;"光猫LAN口"—网线—"路由器WAN口"。 注意&#xff1a;家用光纤宽带一般选择使用200兆宽带到1000兆&#xff0c;如果网速不达标请查看路由器是否是千兆路由器。千兆路由器通常是双频的&#xff0c;支持两个信号一个…...

模拟算法(4)_外观数列

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 模拟算法(4)_外观数列 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1. 题目链…...

vsomeip用到的socket

概述&#xff1a; ​ vsomeip用到的socket的代码全部都在implementation\endpoints目录下面&#xff0c;主要分布在下面六个endpoint类中&#xff1a; local_client_endpoint_impl // 本地客户端socket&#xff08;UDS Socket或者127.0.0.1的socket&#xff09;local_server…...

MFC有三个选项:MFC ActiveX控件、MFC应用程序、MFC DLL,如何选择?

深耕AI&#xff1a;互联网行业 算法研发工程师 ​ 目录 MFC ActiveX 控件 控件的类型 标准控件 自定义控件 ActiveX控件 MFC ActiveX控件 标准/自定义控件 MFC ActiveX控件分类 3种MFC如何选择&#xff1f; MFC ActiveX控件 MFC 应用程序 MFC DLL 总结 举例说明…...

边缘概率 | 条件概率

关于什么是边缘概率分布和条件概率分布&#xff0c;在理论上&#xff0c;我自己也还没有理解&#xff0c;那么现在就根据我学习到的理解方式来记录一下&#xff0c;有错误指出&#xff0c;请大家指正&#xff01;&#xff01;&#xff01; 例如&#xff0c;一个箱子里有十个乒乓…...

深入浅出:现代JavaScript开发者必知必会的Web性能优化技巧

亲爱的读者们&#xff0c;欢迎来到本期博客。今天&#xff0c;我们将深入探讨JavaScript开发者在日常工作中如何提升Web性能。在快节奏的Web开发世界中&#xff0c;性能优化至关重要。本文将分享一些实用技巧&#xff0c;帮助你构建快速、高效的Web应用。 1. 使用CDN加速资源加…...

【S32K3 RTD LLD篇5】K344 ADC SW+HW trigger

【S32K3 RTD LLD篇5】K344 ADC SWHW trigger 一&#xff0c;文档简介二&#xff0c;ADC SW HW 触发2.1 软硬件平台2.2 SWADC 软件触发2.3 SWBCTUADC 软件BCTU触发2.4 PITTRIGMUXADC 硬件PIT TRIGUMX触发2.5 EMIOSBCTUHWADC硬件EMIOS BCTU触发2.6 EMIOSBCTUHW LISTADC硬件EMIOS …...

TransFormer 视频笔记

TransFormer BasicsAttention单头注意力 single head attentionQ&#xff1a; query 查寻矩阵 128*12288K key matrix 128*12288SoftMax 归一 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/19e3cf1ea28442eca60d5fc1303921f4.png)Value matrix 12288*12288 MLP Bas…...

前端的混合全栈之路Meteor篇(三):发布订阅示例代码及如何将Meteor的响应数据映射到vue3的reactive系统

Meteor 3.0 是一个功能强大的全栈 JavaScript 框架&#xff0c;特别适合实时应用程序的开发。它的核心机制之一就包括发布-订阅&#xff08;Publish-Subscribe&#xff09;模型&#xff0c;它允许服务器端发布数据&#xff0c;客户端订阅并实时更新。本文将介绍如何在 Meteor 3…...

自动驾驶系列—颠覆未来驾驶:深入解析自动驾驶线控转向系统技术

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…...

Webstorm 中对 Node.js 后端项目进行断点调试

首先&#xff0c;肯定需要有一个启动服务器的命令脚本。 然后&#xff0c;写一个 debug 的配置&#xff1a; 然后&#xff0c;debug 模式 启动项目和 启动调试服务&#xff1a; 最后&#xff0c;发送请求&#xff0c;即可调试&#xff1a; 这几个关键按钮含义&#xff1a; 重启…...

VUE前后端分离毕业设计题目项目有哪些,VUE程序开发常见毕业论文设计推荐

目录 0 为什么选择Vue.js 1 Vue.js 的主要特点 2 前后端分离毕业设计项目推荐 3 后端推荐 4 总结 0 为什么选择Vue.js 使用Vue.js开发计算机毕业设计是一个很好的选择&#xff0c;因为它不仅具有现代前端框架的所有优点&#xff0c;还能让你专注于构建高性能、高可用性的W…...