【数据分析】Matplotlib+Pandas+Seaborn绘图
【数据分析】Matplotlib+Pandas+Seaborn绘图
- (一)Matplotlib绘图
- 1.1 matplotlib绘图方式1: 状态接口
- 1.2 matplotlib绘图方式2: 面向对象
- 1.3 通过安斯科姆数据集, 说明可视化的重要性
- 1.4 MatPlotlib绘图-单变量-直方图
- 1.5 MatPlotlib绘图-双变量-散点图
- 1.6 Matplotlib绘图-多变量-散点图
- (二)Pandas绘图
- 2.1 单变量-柱状图
- (三)Seaborn绘图
- 3.1 Seaborn绘图-单变量
- 3.1.1 需求1: 绘制 总消费金额的 直方图.
- 3.1.2 需求2: 绘制 总消费金额的 密度图
- 3.1.3 需求3: 绘制 按天(Day)统计的 计数图
- 3.2 Seaborn绘图-双变量
- 3.2.1 需求1: 绘制散点图
- 3.2.2 需求2: 绘制2D密度图
- 3.2.3 需求3: 绘制 箱线图
- 3.2.4 需求5: 绘制小提琴图
- 3.3 Seaborn绘制 多变量
- 3.4 Seaborn的样式
- (四)参考资料
- 4.1 Color清单
相关数据集下载:数据集
(一)Matplotlib绘图
# 导入依赖包
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as snsimport os# 手动修改 工作空间目录, 即: 修改相对路径的地址
os.chdir('./')
os.getcwd()plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常显示汉字
plt.rcParams['axes.unicode_minus'] = False # 正常显示负号
1.1 matplotlib绘图方式1: 状态接口
# 大白话解释: 状态接口 就是通过 plt对象, 调用提供的公共接口(函数), 完成各种操作.
# 0. 准备一些数据, 即: 指定X轴值, Y轴值.
x = [-3, 5, 7]
y = [10, 2, 5]# 1. 创建画布
plt.figure(figsize=(10, 5))# 2. 具体的绘图
plt.plot(x, y)# 3. 设置x轴 和 y轴值的范围.
plt.xlim(-1, 10)
plt.ylim(0, 10)# 4. 设置x轴, y轴显示的内容.
plt.xlabel('我是X轴', fontsize=20)
plt.ylabel('我是y轴')# 5. 设置标题
plt.title('我是状态接口方式绘图')
plt.grid() # 可选项, 绘制网格# 6. 具体的绘图
plt.show()
1.2 matplotlib绘图方式2: 面向对象
# 大白话解释: 获取坐标系对象, 通过坐标系对象 . 的方式, 调用函数, 绘图.
# 0. 准备一些数据, 即: 指定X轴值, Y轴值.
x = [-3, 5, 7]
y = [10, 2, 5]# 1. 创建画布, 坐标轴(坐标系)对象. fig: 画布, ax: 坐标轴对象
fig, ax = plt.subplots(figsize=(10, 5))# 2. 具体的绘图
ax.plot(x, y)# 3. 设置x轴 和 y轴值的范围.
ax.set_xlim(-1, 10)
ax.set_ylim(0, 10)# 4. 设置x轴, y轴显示的内容.
ax.set_xlabel('我是X轴', fontsize=20)
ax.set_ylabel('我是y轴')# 5. 设置标题
ax.set_title('我是状态接口方式绘图')
ax.grid() # 可选项, 绘制网格# 6. 具体的绘图
plt.show()
1.3 通过安斯科姆数据集, 说明可视化的重要性
# 1. 加载数据源, 获取df对象.
anscombe = pd.read_csv('data/anscombe.csv')
print(anscombe)
# 2. 查看各组数据集
anscombe[anscombe['dataset'] == 'I']
anscombe[anscombe['dataset'] == 'II']
anscombe[anscombe['dataset'] == 'III']
anscombe[anscombe['dataset'] == 'IV']# 3. 查看上述各组数据的详情.
anscombe.groupby('dataset').describe().T
# 4. 通过查看统计结果, 我们发现上述的四组数据高度相似, 那么他们就是相似或者相同的数据吗? 绘制出来的图表是同样的. 我们来可视化看一下.
# 4.1 创建画布
fig = plt.figure(figsize=(16, 8))# 4.2 创建四个子图
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
ax4 = fig.add_subplot(2, 2, 4)# 4.3 具体的绘制四个子图.
ax1.scatter(anscombe[anscombe['dataset'] == 'I']['x'], anscombe[anscombe['dataset'] == 'I']['y'])
ax2.scatter(anscombe[anscombe['dataset'] == 'II']['x'], anscombe[anscombe['dataset'] == 'II']['y'])
ax3.scatter(anscombe[anscombe['dataset'] == 'III']['x'], anscombe[anscombe['dataset'] == 'III']['y'])
ax4.scatter(anscombe[anscombe['dataset'] == 'IV']['x'], anscombe[anscombe['dataset'] == 'IV']['y'])# 4.4 设置子图标题
ax1.set_title('数据集I')
ax2.set_title('数据集II')
ax3.set_title('数据集III')
ax4.set_title('数据集IV')# 4.5 设置大图的标题.
fig.suptitle('Anscombe数据集', fontsize=20)# 4.6 具体的绘.
plt.show()
1.4 MatPlotlib绘图-单变量-直方图
# 1. 加载源数据, 获取df对象.
tips = pd.read_csv('data/tips.csv')
print(tips)
# 2. 绘制直方图. 例如: 查看下 各个区间总消费的分布情况. 假设 1 ~ 10 多少次, 11 ~ 50 多少次...
plt.figure(figsize=(16, 8))# 参数解释: x 表示x轴值显示的内容. bins: 几个区间.
plt.hist(x=tips['total_bill'], bins=10) # 这里的10意思是: 划分10个区间.# 设置标题
plt.title('总消费金额分布情况', fontsize=20)
plt.grid(True) # 网格
plt.show()# 上述的bins = 10, 是划分了10个区间, 其实就是指定 起始值, 结束值, 然后生成长度为 区间+1 个的等差数列
# 生成等差数列. # np.linspace(3.07, 50.81, 11) # 生成 3.07 到 50.81之间, 11个等差数值
1.5 MatPlotlib绘图-双变量-散点图
# 1. 创建画布
plt.figure(figsize=(16, 8))# 2. 绘制散点图, 适合: 展示双变量(两个值的关系)
# x轴: 总消费金额, y轴: 小费金额
plt.scatter(x=tips['total_bill'], y=tips.tip)# 3. 设置x轴, y轴显示内容.
plt.xlabel('总消费金额')
plt.ylabel('小费金额')# 4. 设置网格
plt.grid(True)# 5. 绘图.
plt.show()
1.6 Matplotlib绘图-多变量-散点图
# 1. 查看数据源.
tips # 发现, 有性别, 但是没有指定, 什么性别, 用什么颜色的点来回执, 给表新增1列, 表示: 性别的(散点)颜色# 2. 自定义函数, 接收性别, 判断值, 基于颜色.
def recode_sex(sex):if sex == 'Female':return 'r' # 'r' => redelse:return 'b' # 'b' => blue, 基础颜色可以直接只写1个字母# 3. 给tips新增一列.
tips['sex_color'] = tips['sex'].apply(recode_sex)
print(tips)
# 4. 绘制, 多变量, 散点图.
# 4.1 创建画布
plt.figure(figsize=(16, 8))# 4.2 具体的绘图, 散点图
# x轴: 总消费金额, y轴: 小费, c: color(散点的颜色), s: size(散点的大小), alpha: 散点的透明度
plt.scatter(tips.total_bill, tips.tip, c=tips['sex_color'], s=tips['size'] * 10, alpha=0.5)# 4.3 设置x轴, y轴显示内容.
plt.xlabel('总消费金额')
plt.ylabel('小费金额')# 4.4 设置网格
plt.grid(True)# 4.5 绘图
plt.show()
(二)Pandas绘图
# 1. 加载数据源, 获取数据.
review = pd.read_csv('data/winemag-data_first150k.csv')
print(review)
2.1 单变量-柱状图
# 需求1: 看看哪个产区的葡萄酒品种多.
# 定义变量 kwargs, 表示: 图形所需要用到的参数
# figsize: 设置宽高, color: 可选的颜色, grid: 网格线
kwargs = dict(figsize=(12, 6), color=['r', 'g', 'b', 'orange', 'pink'], grid=True)# bar: 柱状图
review['province'].value_counts().head(10).plot.bar(**kwargs)
# 需求2: 计算 加利福尼亚葡萄酒占总数的百分比.
# (review['province'].value_counts().head(1) / len(review)).plot.bar(**kwargs)# 上述需求意义不大, 我们改造下, 改为: 葡萄酒种类最多的10个产品, 各自占比
(review['province'].value_counts().head(10) / len(review)).plot.bar(**kwargs)
# 需求3: 给出评分数量的分布情况
review['points'].value_counts().sort_index().plot.bar(**kwargs)
# 需求4: 折线图, 比较适合 连续值 的情况.
review['points'].value_counts().sort_index().plot.line(**kwargs) # 评分是一个连续值.
# 需求5: 面积图, 即: 把折线下边的区域, 用颜色填充.
review['points'].value_counts().sort_index().plot.area(**kwargs)
# 需求6: 饼图, 适合展示 少量的分类分布情况, 可以和柱状图切换.
review['province'].value_counts().head(10).plot.pie(figsize=(20, 10))
(三)Seaborn绘图
3.1 Seaborn绘图-单变量
# 1. 加载源文件, 获取df对象.
tips = pd.read_csv('data/tips.csv')
print(tips)
3.1.1 需求1: 绘制 总消费金额的 直方图.
# step1: 创建画布, 坐标轴对象.
fig, ax = plt.subplots(figsize=(16, 8))# step2: 绘图, data: 表示数据源, 即: 从哪个df或者 series对象中 加载数据. x: 设置x轴值
# kde: 核密度折线, 用于分析 数据的正态分布情况的, 样本数据, 数据分布...
sns.histplot(data=tips, x='total_bill', kde=True)# step3: 设置标题
ax.set_title('总消费金额直方图', fontsize=15)# step4: 具体的绘制.
plt.show() # 可以省略不写.
3.1.2 需求2: 绘制 总消费金额的 密度图
# 密度图介绍: 它也是展示单变量的一种图形, 本质是通过绘制以每个数据点为中心的正态分布, 然后消除重叠, 使曲线下的面积为1来绘制.
# 目的: 查看数据的分布情况.
# 1. 创建画布, 坐标轴对象.
fig, ax = plt.subplots(figsize=(16, 8))# 2. 绘图.
# sns.kdeplot(data=tips, x='total_bill') # 写法1
sns.kdeplot(tips['total_bill']) # 写法2, 语法糖# 3. 设置标题.
ax.set_title('总消费金额-密度图')# 4. 具体的展示动作.
plt.show()
3.1.3 需求3: 绘制 按天(Day)统计的 计数图
# 1. 创建画布, 坐标轴对象.
fig, ax = plt.subplots(figsize=(16, 8))# 2. 绘图.
sns.countplot(data=tips, x='day')# 3. 设置标题.
ax.set_title('按天统计-计数图')# 4. 具体的展示动作.
plt.show()
3.2 Seaborn绘图-双变量
3.2.1 需求1: 绘制散点图
# 前言: 在Seaborn中, 绘制散点图有很多的方式, 例如: scatterplot(), regplot(), jointplot()
# 方式1: scatter()方式绘制.
# 1. 创建画布, 坐标轴对象.
fig, ax = plt.subplots(figsize=(16, 8))# 2. 绘图
# hue: 按哪列分组, 传入1个类别字段即可.
# sns.scatterplot(data=tips, x='total_bill', y='tip', hue='sex')
sns.scatterplot(data=tips, x='total_bill', y='tip')# 3. 设置标题.
ax.set_title('总消费金额-小费 关系图')# 4. 具体的展示动作.
plt.show()
# 方式2: regplot()方式绘制, 散点图 + 拟合回归线.
# 1. 创建画布, 坐标轴对象.
fig, ax = plt.subplots(figsize=(16, 8))# 2. 绘图.
# sns.regplot(data=tips, x='total_bill', y='tip', fit_reg=False) # fit_reg=False 关闭拟合回归线
sns.regplot(data=tips, x='total_bill', y='tip') # fit_reg 表示是否回执 拟合回归线, 默认是: True(绘制)# 3. 设置标题.
ax.set_title('总消费金额-小费 关系图')# 4. 具体的展示动作.
plt.show()
# 方式3: jointplot()方式绘制, 散点图 + (各行各列)直方图.
# 散点图 + 直方图
# sns.jointplot(data=tips, x='total_bill', y='tip', height=10) # 特殊图形, 不结合画布使用, 设置宽高用 height属性即可.# 蜂巢图 + 直方图, kind: 图形类型.
sns.jointplot(data=tips, x='total_bill', y='tip', height=10, kind='hex') # hex等价于MatPlotlib的hexbin(), 蜂巢图
3.2.2 需求2: 绘制2D密度图
# 2D密度图 和 之前绘制的密度图类似, 只不过 2D密度图反应的是两个变量的变量.
# 1. 创建画布, 坐标轴对象
fig, ax = plt.subplots(figsize=(12, 6))# 2. 绘图
# data: 要操作的数据集(df对象或者Series对象)
# x, y: x轴, y轴显示的内容.
# fill: 表示是否填充.
# cbar: 表示是否显示右侧的图例.
sns.kdeplot(data=tips, x='total_bill', y='tip', fill=True, cbar=True)# 3. 设置x轴, y轴值内容.
ax.set_xlabel('总消费金额')
ax.set_ylabel('小费金额')# 4. 具体的绘图
plt.show()
3.2.3 需求3: 绘制 箱线图
# 箱线图用于显示多种统计信息, 例如: 最小值, 1/4分位, 中位数, 3/4分位, 最大值, 以及离群值(如果有), 一般用于 异常值的检测.
# 1. 创建画布, 坐标轴对象
fig, ax = plt.subplots(figsize=(12, 6))# 2. 绘图.
# data: 要操作的数据集(df对象或者Series对象)
# x: x轴的内容, 这里是: 消费类型(午餐, 晚餐)
# y: y轴的内容, 这里是: 总消费金额
sns.boxplot(data=tips, x='time', y='total_bill')# 3. 设置x轴, y轴值内容.
ax.set_xlabel('消费类型(午餐/晚餐)')
ax.set_ylabel('总消费金额')# 4. 具体的绘图
plt.show()
3.2.4 需求5: 绘制小提琴图
# 箱线图会掩盖数据的分布, 小提琴图可以把箱线绘制成 核密度预估.
# 1. 创建画布, 坐标轴对象
fig, ax = plt.subplots(figsize=(12, 6))# 2. 绘图.
# data: 要操作的数据集(df对象或者Series对象)
# x: x轴的内容, 这里是: 消费类型(午餐, 晚餐)
# y: y轴的内容, 这里是: 总消费金额
sns.violinplot(data=tips, x='time', y='total_bill')# 3. 设置x轴, y轴值内容.
ax.set_xlabel('消费类型(午餐/晚餐)')
ax.set_ylabel('总消费金额')# 4. 具体的绘图
plt.show()
3.3 Seaborn绘制 多变量
# Seaborn绘制多变量, 没有标准的套路, 可以加入: 形状, 颜色, 大小等来区分.
# 1. 创建画布, 坐标轴对象
plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常显示汉字
fig, ax = plt.subplots(figsize=(12, 6))# 2. 绘图.
# data: 要操作的数据集(df对象或者Series对象)
# x: x轴的内容, 这里是: 消费类型(午餐, 晚餐)
# y: y轴的内容, 这里是: 总消费金额
# hue: 基于哪列字段进行分组.
# split: 结合hue参数使用时有效, 可以把 多个类别的数据组合到一起, 方便查看.
sns.violinplot(data=tips, x='time', y='total_bill', hue='sex', split=True) # 变量1: 时间time, 变量2: total_bill 总消费金额, 变量3: sex 性别# 3. 设置x轴, y轴值内容.
ax.set_xlabel('消费类型(午餐/晚餐)')
ax.set_ylabel('总消费金额')# 4. 具体的绘图
plt.show()
3.4 Seaborn的样式
# Seaborn的样式是 设置一次以后, 其它的图就都生效了, 即: 都会使用这个样式.
# 格式: sns.set_style('样式名')
# 样式分类: white(白色背景, 默认), whitegrid(白色背景 + 网格), dark(深色背景), darkgrid(深色背景 + 网格), ticks(轴的(分组)标线)
# 设置Seaborn的样式.
sns.set_style('ticks')
plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常显示汉字# 1. 创建画布, 坐标轴对象
fig, ax = plt.subplots(figsize=(12, 6))# 2. 绘图
sns.violinplot(data=tips, x='time', y='total_bill', hue='sex', split=True) # 变量1: 时间time, 变量2: total_bill 总消费金额, 变量3: sex 性别# 3. 设置x轴, y轴值内容.
ax.set_xlabel('消费类型(午餐/晚餐)')
ax.set_ylabel('总消费金额')# 4. 具体的绘图
plt.show()
(四)参考资料
4.1 Color清单
相关文章:

【数据分析】Matplotlib+Pandas+Seaborn绘图
【数据分析】MatplotlibPandasSeaborn绘图 (一)Matplotlib绘图1.1 matplotlib绘图方式1: 状态接口1.2 matplotlib绘图方式2: 面向对象1.3 通过安斯科姆数据集, 说明可视化的重要性1.4 MatPlotlib绘图-单变量-直方图1.5 MatPlotlib绘图-双变量-散点图1.6 …...

NLP学习路线图(十五):TF-IDF(词频-逆文档频率)
在自然语言处理(NLP)的浩瀚宇宙中,TF-IDF(词频-逆文档频率) 犹如一颗恒星,虽古老却依然璀璨。当ChatGPT、BERT等大模型光芒四射时,TF-IDF作为传统方法的代表,其简洁性、高效性与可解…...

[Redis] Redis命令在Pycharm中的使用
初次学习,如有错误还请指正 目录 String命令 Hash命令 List命令 set命令 SortedSet命令 连接pycharm的过程见:[Redis] 在Linux中安装Redis并连接桌面客户端或Pycharm-CSDN博客 redis命令的使用见:[Redis] Redis命令(1…...

openpnp - 给M4x0.7mm的直油嘴加油的工具选择
文章目录 openpnp - 给M4x0.7mm的直油嘴加油的工具选择概述如果换上带卡口的M4x0.7直油嘴END openpnp - 给M4x0.7mm的直油嘴加油的工具选择 概述 X导轨用了一个HG15的滑块 滑块上的注油口的黄油嘴是M4x0.7mm的直油嘴。 外表面是6边形的柱子,没有可以卡住加油嘴工…...
Azure Devops 系列之三- vscode部署function app
Azure Function App 是 Microsoft Azure 提供的一项无服务器计算服务,它允许您运行事件驱动的应用程序,而无需管理底层基础架构。它使您能够执行代码来响应各种事件,例如 HTTP 请求、队列消息、计时器以及许多其他类型的触发器。 Azure Function App 的主要功能: 无服务器…...

EasyExcel复杂Excel导出
效果图展示 1、引入依赖 <!-- easyExcel --> <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>4.0.2</version> </dependency>2、实体类 import com.alibaba.excel.annotatio…...

1,QT的编译教程
目录 整体流程: 1,新建project文件 2,编写源代码 3,打开QT的命令行窗口 4,生成工程文件(QT_demo.pro) 5,生成Make file 6,编译工程 7,运行编译好的可执行文件 整体流程: 1,新建project文件 新建文本文件,后缀改为.cpp 2,编写源代码...
C++基础算法————深度优先搜索(DFS)
一、DFS算法原理 (一)基本思想 深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索树或图的算法。它从一个起始节点开始,沿着一个方向尽可能深入地探索,直到无法继续为止,然后回溯到上一个节点,继续探索其他方向。这一过程可以用递归或栈结构来实现。 (二…...
React 第五十节 Router 中useNavigationType的使用详细介绍
前言 useNavigationType 是 React Router v6 提供的一个钩子,用于确定用户如何导航到当前页面。 它提供了关于导航类型的洞察,有助于优化用户体验和实现特定导航行为。 一、useNavigationType 核心用途 1.1、检测导航方式: 判断用户是通过…...

【笔记】在 MSYS2(MINGW64)中安装 Python 工具链的记录
#工作记录 📌 安装背景 操作系统:MSYS2 MINGW64当前时间:2025年6月1日Python 版本:3.12(默认通过 pacman 安装)目标工具链: pipxnumpypipsetuptoolswheel 🛠️ 安装过程与结果记录…...
npm install命令都做了哪些事情
npm install(或其简写 npm i)是 Node.js 项目中最重要的命令之一,它负责安装项目所需的所有依赖项。下面我将详细解释这个命令的完整执行过程和底层机制,让你彻底理解它背后的工作原理。 一、npm install 的完整工作流程 1. 依赖…...

Linux 学习-模拟实现【简易版bash】
1、bash本质 在模拟实现前,先得了解 bash 的本质 bash 也是一个进程,并且是不断运行中的进程 证明:常显示的命令输入提示符就是 bash 不断打印输出的结果 输入指令后,bash 会创建子进程,并进行程序替换 证明&#x…...

【中国・珠海】2025 物联网与边缘计算国际研讨会(IoTEC2025)盛大来袭!
2025 物联网与边缘计算国际研讨会(IoTEC2025)盛大来袭! 科技浪潮奔涌向前,物联网与边缘计算已成为驱动各行业变革的核心力量。在此背景下,2025 物联网与边缘计算国际研讨会(IoTEC2025)即将震撼…...
企业级安全实践:SSL/TLS 加密与权限管理(二)
案例分析:成功与失败的经验教训 成功案例分析 以一家知名电商企业 ABC 为例,该企业每天处理数百万笔订单,涉及大量用户的个人信息、支付信息和商品数据。在网络安全建设方面,ABC 电商高度重视 SSL/TLS 加密与权限管理。 在 SSL…...
Java面试:从Spring Boot到分布式系统的技术探讨
场景一:电商平台的订单处理 面试官: “谢先生,假设我们在一个电商平台工作,你将如何使用Spring Boot构建一个订单处理服务?” 谢飞机: “这个简单,我会使用Spring Boot快速启动项目࿰…...
NodeJS全栈开发面试题讲解——P7 DevOps 与部署和跨域等
✅ 7.1 如何部署 Node.js 项目到生产环境?用过哪些工具? 面试官您好,我部署 Node.js 项目通常分为 构建 → 上传 → 启动服务 三步,常用工具包括 PM2、Nginx、Docker、Git Hooks、CI/CD 工具。 🛠️ 主要部署步骤&…...

中国高分辨率高质量地面CO数据集(2013-2023)
时间分辨率:日空间分辨率:1km - 10km共享方式:开放获取数据大小:9.83 GB数据时间范围:2013-01-01 — 2023-12-31元数据更新时间:2024-08-19 数据集摘要 ChinaHighCO数据集是中国高分辨率高质量近地表空气污…...

GO——内存逃逸分析
一、可能导致逃逸的5中情况 package mainimport "fmt"func main() {f1()f2()f3()f4()f5() }type animal interface {run() }type dog struct{}func (d *dog) run() {fmt.Println("狗在跑") }// 指针、map、切片为返回值的会发生内存逃逸 func f1() (*int,…...

MinVerse 3D触觉鼠标的技术原理与创新解析
MinVerse3D触觉鼠标通过三维交互和触觉反馈技术,彻底颠覆了传统二维鼠标的操作方式。用户在操作虚拟物体时,可以真实感知表面质感、重量和阻力。这种技术不仅为数字环境注入了深度与临场感,还在3D设计、游戏开发和工程仿真等领域展现了广泛潜…...
Spring Boot整活指南:从Helo World到“真香”定律
📌 一、Spring Boot的"真香"本质(不是996的福报) 你以为Spring Boot只是个简化配置的工具?Too young!它其实是程序员的摸鱼加速器。 经典场景还原: 产品经理:“这个…...
Python-Selenium报错截图
报错截图设计方案: 功能:截图层主要用来存放selenium运行时的报错截图信息 1. 截图路径管理 分层存储:在项目根目录下创建 screenshots 文件夹,并按日期进一步分类(如 20250601)。命名规范࿱…...
数论——质数和合数及求质数
质数和合数及求质数 一个大于 1 的自然数,除了 1 和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。其中,质数又称素数。有的资料用的词不同,但质数和素数其实是一回事。 规定 1 既不是质数也不是合数。 …...
nc 命令示例
nc -zv 实用示例 示例 1:测试单个 TCP 端口(最常见) 目标: 检查主机 webserver.example.com 上的 80 端口 (HTTP) 是否开放。 nc -zv webserver.example.com 80成功输出: Connection to webserver.example.com (19…...

乾元通渠道商中标青海省自然灾害应急能力提升工程基层防灾项目
近日,乾元通渠道商中标青海省自然灾害应急能力提升工程基层防灾项目,乾元通作为设备厂家,为项目提供通信指挥类装备(多链路聚合设备)QYT-X1。 青岛乾元通数码科技有限公司作为国家应急产业企业,深耕于数据调…...
Ubuntu取消开机用户自动登录
注:配置前请先设置登录密码,不同显示管理器配置方法不同,可用命令查看:cat /etc/X11/default-display-manager 一、LightDM 显示管理器,关闭 Ubuntu 系统用户自动登录 查找自动登录配置文件,可以看到类似 a…...
用 Spring Boot 静态资源映射 vs 用 Nginx 提供静态文件服务总结
【1】Spring Boot 静态资源映射 vs 用 Nginx 提供静态文件服务 ✅ 简短回答: 在性能、并发能力、缓存控制、安全性等方面,Nginx 完胜。 所以:如果你只是提供静态文件下载(如图片、PDF、Excel 等),强烈推荐…...

openssl-aes-ctr使用openmp加速
openssl-aes-ctr使用openmp加速 openssl-aes-ctropenmp omp for openssl-aes-ctr 本文采用openssl-1.1.1w进行开发验证开发;因为aes-ctr加解密模式中,不依赖与上一个模块的加/解密的内容,所以对于aes-ctr加解密模式是比较适合进行并行加速的…...

PHP+MySQL开发语言 在线下单订水送水小程序源码及搭建指南
随着互联网技术的不断发展,在线下单订水送水服务为人们所需要。分享一款 PHP 和 MySQL 搭建一个功能完善的在线订水送水小程序源码及搭建教程。这个系统将包含用户端和管理端两部分,用户可以在线下单、查询订单状态,管理员可以处理订单、管理…...

计算机网络第1章(上):网络组成与三种交换方式全解析
目录 一、计算机网络的概念二、计算机网络的组成和功能2.1 计算机网络的组成2.2 计算机网络的功能 三、电路交换、报文交换、分组交换3.1 电路交换(Circuit Switching)3.2 报文交换(Message Switching)3.3 分组交换(Pa…...

Android studio进阶开发(七)---做一个完整的登录系统(前后端连接)
我们已经讲过了okhttp和登录系统的使用,我们今天做一个完整的登录系统,后端用springmybatis去做 数据库内容 -- 创建学生信息表 CREATE TABLE student_info (id SERIAL PRIMARY KEY, -- 添加自增主键name VARCHAR(255) NOT NULL,number INT NOT NULL,…...