网站设计基本要素/百度浏览器官方网站
文章目录
- 一、第一个 Matplotlib 绘图程序
- 1. Matplotlib 绘图的基本步骤
- 二、Matplotlib 的基本方法
- 1. 图表名称 plt.title()
- 2. x 轴和 y 轴名称
- 3. 设置 x 轴和 y 轴的刻度
- 4. 显示图表 show()
- 5. 图例 legend()
- 6. 图例的图例位置设置
- 7. 显示每条数据的值 x,y 值的位置
一、第一个 Matplotlib 绘图程序
- 与 NumPy 类似,我们可以使用相同的方法查看 Matplotlib 的版本信息。
import matplotlib
matplotlib.__version__
#'2.2.3'
1. Matplotlib 绘图的基本步骤
- (1) 首先导入 Matplotlib 包中的 Pyplot 模块,并以 as 别名的形式简化引入包的名称。
from matplotlib import pyplot as plt
#import matplotlib.pyplot as plt
- (2) 接下来,使用 NumPy 提供的函数 arange() 创建一组数据来绘制图像。
- 引入 numpy 包,我们获取 -50 到 50 之间的 ndarray 对象(由于 arange() 不含终止值,因此,我们需要到 51)。
import numpy as np
x = np.arange(-50,51)
x
#array([-50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38,
# -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25,
# -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12,
# -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1,
# 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
# 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
# 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
# 41, 42, 43, 44, 45, 46, 47, 48, 49, 50])
- (3) 上述所得 x 的值作用到 x 轴上,而该值对应的平方值,也就是 y 值,使用以下方式获取。
y = x **2
y
#array([2500, 2401, 2304, 2209, 2116, 2025, 1936, 1849, 1764, 1681, 1600,
# 1521, 1444, 1369, 1296, 1225, 1156, 1089, 1024, 961, 900, 841,
# 784, 729, 676, 625, 576, 529, 484, 441, 400, 361, 324,
# 289, 256, 225, 196, 169, 144, 121, 100, 81, 64, 49,
# 36, 25, 16, 9, 4, 1, 0, 1, 4, 9, 16,
# 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225,
# 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676,
# 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369,
# 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304,
# 2401, 2500], dtype=int32)
- (4) 使用 plt 的 plot() 函数对 x、y 进行绘制。
plt.plot(x,y)
二、Matplotlib 的基本方法
方法名 | 说明 |
---|---|
title() | 设置图表的名称 |
xlabel() | 设置x轴名称 |
ylabel() | 设置y轴名称 |
xticks(ticks,label,rotation) | 设置x轴的刻度,rotation旋转角度 |
yticks() | 设置y轴的刻度 |
show() | 显示图表 |
legend() | 显示图例 |
text(x,y,text) | 显示每条数据的值 x,y值的位置 |
1. 图表名称 plt.title()
- x 轴获得 -50 到 50 之间的 ndarray 对象(由于 arange() 不含终止值,因此,我们需要到 51),y 轴的值是 x 轴的平方。
- 然后,我们将图表的名称设置为 y= x^2,最后绘制图形即可。
import numpy as np
x = np.arange(-50,51)
y = x **2
plt.title("y= x^2")
plt.plot(x,y)
- 那么,我们是否可以将标题写为中文呢?
plt.title("y等于x的平方-")
plt.plot(x,y)
- 会发现图表标题跟我们想象中的不太一样,这是因为默认不支持中文:missing from current font 字体丢失造成的。
- 因此,我们可以通过如下代码修改字体配置。
plt.rcParams["font.sans-serif"]
- 字体说明详见下表。
中文字体 | 说明 |
---|---|
‘SimHei’ | 中文黑体 |
‘Kaiti’ | 中文楷体 |
‘LiSu’ | 中文隶书 |
‘FangSong’ | 中文仿宋 |
‘YouYuan’ | 中文幼圆 |
STSong | 华文宋体 |
- 我们可以使用我们需要的中文信息进行图表标题的临时配置,就可以成功完成我们的需求了。
plt.rcParams['font.sans-serif'] = ["FangSong"]
plt.title("y等于x的平方--")
plt.plot(x,y)
- 这里我们需要注意的是,在字体设置的过程中,字体名称是不区别大小写的。
- 因此,我们在尝试下别的字体。
plt.rcParams['font.sans-serif'] = ["SimHei"]
plt.title("y等于x的平方")
plt.plot(x,y)
- 但是通过上述的图表当中,我们又会发现,当我们设置了中文字体后,坐标轴的负数又没办法正确显示了。
- 对此,我们可以创建 x 为 -10 到 10 的整数,y 是 x 的平方。
import numpy as np
x = np.arange(-10,11)
y = x ** 2
plt.plot(x, y)
- 这里我们需要注意的是,当我们的字体设置支持中文后,必须设置负号,否则当数值中出现负值时,负号就无法正常显示。
- 对此,我们可以通过修改坐标轴中的负号编码进行解决。我们可以创建 x 为 -10 到 10 的整数,y 是 x 的平方,并设置标题,用以对比观察。
plt.rcParams['axes.unicode_minus'] = False
x = np.arange(-10,11)
y = x ** 2
plt.title('y=x^2 x取值范围为:[-10,10)')
plt.plot(x, y)
- 对上述的字体问题进行总结可得:如果我们想要在标题当中显示中文,就需要修改 2 个配置信息:
- (1) plt.rcParams[‘font.sans-serif’]=[‘SimHei’] ,用来设置字体样式以正常显示中文标签。
- (2) plt.rcParams[‘axes.unicode_minus’]=False ,默认是使用 Unicode 负号,设置正常显示字符。
2. x 轴和 y 轴名称
- x 轴的名称通过 xlabel() 进行设置。
- y 轴的名称通过 ylabel() 进行设置。
- 对此,我们创建一个 x 为 -10 到 10 的整数,y 是 x 的平方的数组,并将其标题设置为 y=x^2 x取值范围为:[-10,10),将 x 轴的名称设置为 x 轴,y 轴的名称设置为 y 轴。
x = np.arange(-10,10)
y = x ** 2
plt.title('y=x^2 x取值范围为:[-10,10)')
plt.xlabel("x 轴")
plt.ylabel("y 轴")
plt.plot(x, y)
- 对于上面的图,如果我们觉得字体偏小或线条太细,可以设置标签文字大小和线条粗细。
- (1) 通过 fontsize 参数,设置文字大小。
- (2) 通过 linewidth 参数,设置线条粗细。
- 为了便于与上述图表当中的字体和线条进行比对,我们便创建与上述完全相同的数组(一个 x 为 10 到 10 的整数,y 是 x 的平方的数组,并将其标题设置为 y=x^2 x取值范围为:[-10,10),将 x 轴的名称设置为 x 轴,y 轴的名称设置为 y 轴),并使用 fontsize 参数将文字大小设置为 12,使用 linewidth 参数将线条宽度设置为 5。
x = np.arange(-10,10)
y = x ** 2
plt.title('y=x^2 x取值范围为:[-10,10)',fontsize=16)
plt.xlabel("x 轴",fontsize=12)
plt.ylabel("y 轴")
plt.plot(x, y,linewidth=5)
- 我们也可以在一个图表当中,设置两种线条宽度。
plt.plot(x, y,linewidth=1)
plt.plot(x, y,linewidth=5)
- 运行结束上面代码后,除了线条变化外,我们发现可以在一张图片中绘制多个线条。
- 对此,我们创建一个 x 为 10 到 10 的整数,y1 是 x 的平方的数组,y2 就等于 x,并将其标题设置为 y=x^2 x取值范围为:[-10,10),同时,标题的文字大小设置为 16,将 x 轴的名称设置为 x 轴,使用 fontsize 参数将文字大小设置为 12,y 轴的名称设置为 y 轴。
x = np.arange(-10,11)
y1 = x ** 2
y2 = x
plt.title('y=x^2 x取值范围为:[-10,10)',fontsize=16)
plt.xlabel("x 轴",fontsize=12)
plt.ylabel("y 轴")
plt.plot(x, y1)
plt.plot(x, y2)
3. 设置 x 轴和 y 轴的刻度
- 我们可以通过 matplotlib.pyplot.xticks(ticks=None, labels=None, **kwargs) 设置 x 轴的刻度。
- 我们可以通过 matplotlib.pyplot.yticks(ticks=None, labels=None, **kwargs) 设置 y 轴的刻度。
- 其中参数具有如下含义:
- ticks:此参数是 xtick 位置的列表,是一个可选参数。如果将一个空列表作为参数传递,则它将删除所有 xticks。
- label:此参数包含放置在给定刻度线位置的标签,它是一个可选参数。
- **kwargs:此参数是文本属性,用于控制标签的外观,例如:
- rotation 表示旋转角度,例如:rotation=45。
- color表示颜色,例如:color=“red”。
- 那么,xticks 到底有什么用呢?
- 其实就是把坐标轴变成我们想要的样子。
- 例如,我们将 x 轴设置为时间,y 轴设置为销量,x 轴具体数据使用 np.arange() 生成,y 轴具体数据使用 np.random.randint() 生成。
times = np.arange(1990,2020).astype(np.str_)
sales = np.random.randint(500,2000,size=len(times))
plt.xticks(range(0,len(times),2),['%s年'%i for i in times],rotation=45)
plt.plot(times,sales)
上述图表,就是每个时间点的销量绘图,如果 x 轴的数据是字符串,那么就会将数据全部展示(y 轴销售量数据仍通过 np.random.randint() 生成)。
times = ['2015/6/26', '2015/8/1', '2015/9/6', '2015/10/12', '2015/11/17','2015/12/23','2016/1/28','2016/3/4','2016/4/9',
'2016/5/15','2016/6/20','2016/7/26','2016/8/31','2016/10/6','2016/11/11','2016/12/17']
sales =np.random.randint(500,2000,size=len(times))
plt.plot(times,sales)
- 显而易见,在上述图形当中,x 轴存在一个问题。
- 如果我们只想显示部分时间,或者按照某个规则展示,应该如何处理呢?
- 这个时候我们就需要用到 xticks。
plt.xticks(range(0,len(times),2))
plt.plot(times,sales)
- 通过设置,时间虽然少了,但是如果我们可以让横坐标中的字体倾斜,就可以避免 x 轴坐标刻度重叠。而其中,xticks 第一个参数中元素的值,代表原始数据的索引。
plt.xticks(range(0,len(times),2),labels=['日期:%s'%i for i in times], rotation=45, color='red')
plt.plot(times,sales)
4. 显示图表 show()
- show() 可以用来显示所有打开的图形。
- 在 jupyter notebooks 当中,会自动显示图形。
- 如果我们想在 jupyter 中出现图形操作菜单,可以使用 matplotlib 中的魔术方法 %matplotlib notebook 即可。
%matplotlib notebook
- 之后在运行图表生成代码就会得到如下结果。
plt.xticks(range(1,len(times),2),rotation=45)
plt.plot(times,sales)
- 如果我们想要返回原先的展示,,用另一个 matplotlib 中的魔术方法 %matplotlib inline 即可。
%matplotlib inline
plt.xticks(range(1,len(times),2),rotation=45)
plt.plot(times,sales)
5. 图例 legend()
- 图例 legend() 是集中于地图一角或一侧的地图上各种符号和颜色所代表内容与指标的说明,有助于更好的认识地图。
- 对此,我们以上述数组为例,进行图例的设置,一个是收入,另一个是支出,均通过 np.random.randint() 进行数据的生成。
- 需要注意的是,在使用图例前需要为每个图形设置 label 参数,默认会使用每个图形的 label 值作为图例中的说明。
times = ['2015/6/26', '2015/8/1', '2015/9/6', '2015/10/12', '2015/11/17','2015/12/23','2016/1/28','2016/3/4','2016/4/9',
'2016/5/15','2016/6/20','2016/7/26','2016/8/31','2016/10/6','2016/11/11','2016/12/17']
income =np.random.randint(500,2000,size=len(times))
expenses =np.random.randint(300,1500,size=len(times))
plt.xticks(range(1,len(times),2),rotation=45)
plt.plot(times,income,label="收入")
plt.plot(times,expenses,label="支出")
plt.legend()
6. 图例的图例位置设置
- loc 代表了图例在整个坐标轴平面中的位置(一般选取 ‘best’ 这个参数值)。
- 第一种情况默认是 “best”,图例自动‘安家’在一个坐标面内的数据图表最少的位置。
- 第二种情况 loc = ‘XXX’ 分别有 0:‘best’ (自动寻找最好的位置)。
位置字符串 | 位置值 | 备注 |
---|---|---|
“best” | 0 | 自动寻找最好的位置 |
“upper right” | 1 | 右上角 |
“upper left” | 2 | 左上角 |
“lower left” | 3 | 左下角 |
“lower right” | 4 | 右下角 |
“right” | 5 | 右边中间 |
“center left” | 6 | 左边中间 |
“center right” | 7 | 右边中间 |
“lower center” | 8 | 中间最下面 |
“upper center” | 9 | 中间最上面 |
“center” | 10 | 正中心 |
- 对此,我们以上述数组为例,进行图例的设置,一个是收入,另一个是支出,均通过 np.random.randint() 进行数据的生成。
- 需要注意的是,在使用图例前需要为每个图形设置 label 参数,默认会使用每个图形的 label 值作为图例中的说明。
- 我们将图例放到整体的左上角。
times = ['2015/6/26', '2015/8/1', '2015/9/6', '2015/10/12', '2015/11/17','2015/12/23','2016/1/28','2016/3/4','2016/4/9',
'2016/5/15','2016/6/20','2016/7/26','2016/8/31','2016/10/6','2016/11/11','2016/12/17']
income =np.random.randint(500,2000,size=len(times))
expenses =np.random.randint(300,1500,size=len(times))
plt.xticks(range(1,len(times),2),rotation=45)
plt.plot(times,income,label="收入")
plt.plot(times,expenses,label="支出")
plt.legend(loc="upper left")
7. 显示每条数据的值 x,y 值的位置
- 通过如下代码进行实现。
plt.text(x,y, string, fontsize=15, verticalalignment="top", horizontalalignment="right")
- 其中参数具有如下含义:
- x,y 表示的是坐标值上的值。
- string 表示说明文字。
- fontsize 表示字体大小。
- verticalalignment:(va)垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]。
- horizontalalignment:(ha)水平对齐方式 ,参数:[ ‘center’ | ‘right’ | ‘left’ ]。
- 对此,我们以上述数组为例,进行图例的设置,一个是收入,另一个是支出,均通过 np.random.randint() 进行数据的生成。
- 需要注意的是,在使用图例前需要为每个图形设置 label 参数,默认会使用每个图形的 label 值作为图例中的说明,图例放到整体的左上角。
- 将每个数据的 y 值(也就是收入和支出)显示出来。
times = ['2015/6/26', '2015/8/1', '2015/9/6', '2015/10/12', '2015/11/17','2015/12/23','2016/1/28','2016/3/4','2016/4/9',
'2016/5/15','2016/6/20','2016/7/26','2016/8/31','2016/10/6','2016/11/11','2016/12/17']
income =np.random.randint(500,2000,size=len(times))
expenses =np.random.randint(300,1500,size=len(times))
plt.xticks(range(1,len(times),2),rotation=45)
plt.plot(times,income,label="收入")
plt.plot(times,expenses,label="支出")
plt.legend(loc="upper left")
for x,y in zip(times,income):plt.text(x,y,'%s万'%y)
相关文章:

Python 之 Matplotlib 第一个绘图程序和基本方法
文章目录一、第一个 Matplotlib 绘图程序1. Matplotlib 绘图的基本步骤二、Matplotlib 的基本方法1. 图表名称 plt.title()2. x 轴和 y 轴名称3. 设置 x 轴和 y 轴的刻度4. 显示图表 show()5. 图例 legend()6. 图例的图例位置设置7. 显示每条数据的值 x,y 值的位置一、第一个 M…...

数据结构与算法(一):概述
数据结构学了有一年左右的时间了,但是一直没有详细地总结一下,现在回想起来,感觉有些内容忘记了。所以接下来一段时间我将重新归纳总结一下,算是温故而知新了。 一、数据结构 1、定义 数据结构是计算机存储、组织数据的方式。在…...

Spring3之Bean的属性详解
简介 Spring 中大量使用到 Bean 的注入来实现各个模块之间的依赖,本章将详细介绍 Bean 的主要属性 id 和 name 属性 每个 Bean 可以有一个 id 属性,并可以根据该 id 在 IoC 容器中查找该 Bean,该 id 属性值必须在IoC 容器中唯一 可以不指定…...

C语言之结构体内存的计算
结构体的内存 一.提出疑问 结构体占用的是一片连续的内存空间,大小是由成员变量的类型决定的。但并不是计算所有成员变量的类型大小之和那么简单。 先举一个实例: struct student {int age; //4个字节int telephone; //4个字节 }; int main() {struc…...

Java网络编程之UDP和TCP套接字
文章目录一. 网络编程概述二. UDP网络编程1. UDP套接字2. UDP客户端回显服务器程序2.1 UDP回显服务器2.2 UDP客户端2.3 UDP实现查词典的服务器三. TCP网络编程1. TCP套接字2. TCP客户端回显服务器程序2.1 TCP回显服务器2.2 TCP客户端2.3 解决服务器无法同时出力多个客户端的问题…...

Linux进程信号产生以及捕捉
一.什么是信号 生活中,有哪些信号相关的场景呢,比如:红绿灯,闹钟,转向灯等等 1.这里我们要知道,你为什么认识这些信号呢,记住了对应场景下的信号+后续是有”动作“要你执行的 2.我们…...

11. GLSL(OpenGL Shader Language)常用知识点汇总
1. 说明: 在使用OPenGL进行三维模型渲染时,需要使用到两个着色器对模型进行位置设置和颜色设置,分别为顶点着色器和片段着色器,这两个着色器是使用 GLSL 语法进行编写的。这篇文章总结了一些GLSL中的一些基本语法知识。 2. 基本…...

转发一张网络工程师考试的试卷2021.5.15
网络工程师考试 单选题 (30题,每题1分,共30分) 1. 你在一个网络中实现DHCP服务,配置一些计算机成为DHCP客户端,由于工作需要,一台系统为Windows 10 的客户端要把从DHCP服务器获得的地址释放&a…...

AMD发布23.2.1 新驱动 支持开年新作《魔咒之地》
如果说2023年有什么新作,《魔咒之地(Forspoken)》当属开年大作之一,1月25日才在steam平台发售。虽然开售后的表现似乎不如想象中优秀,加之价格相对昂贵,令不少玩家望而却步,但如果只是想尝鲜&am…...

开放平台如何做接口的签名和加解密?
目录安全性功能介绍实现流程开放平台依赖代码AES加解密工具类PlatformConfigRequestUtilsPlatformServiceCommonCodeZuulFilterHelperServerResponsePlatformContactRsaSignatureRsaUtilsStreamUtil开放平台-解密过滤器开放平台-加密过滤器调用方代码公共代码Get-DemoPost-Demo…...

Mr. Cappuccino的第40杯咖啡——Kubernetes之Pod生命周期
Kubernetes之Pod生命周期Pod生命周期官方文档Pod的状态初始化容器案例钩子函数Exec命令TCPSocketHTTPGet案例容器探测Exec命令TCPSocketHTTPGet探测时间重启策略Pod生命周期官方文档 Pod生命周期官方文档 Pod的状态 pending:挂起,apiserver创建了pod资…...

记一次OOM
1,问题描述: 新上了一版代码之后,上游服务请求我们服务失败,报错:“服务不可用”,发现注册中心上服务掉线,查询日志:发现oom:Java heap space,GC overhead limit exceeded。 容易…...

idea插件生成dao类service类controller类以及mapper.xml
idea插件生成dao类service类controller类以及mapper.xml 安装插件Easycode和MybatisX,不用自己写代码 1.Files——》Settings——》Plugins,分别搜索Easycode和MybatisX,点击下载。 2.新建一个springboot模板,选择的依赖如下 3.…...

DML 数据操作语言
概述 DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。 添加数据(INSERT)修改数据(UPDATE)删除数据(DELETE) 添加数据 1、给指定字段…...

PySpark实战一之入门
1、PySpark的编程模型 分三个模块: 数据输入:通过SparkContext对象,完成数据输入 数据处理计算:输入数据后得到RDD对象,对RDD对象的成员方法进行迭代计算 数据输出:最后通过RDD对象的成员方法࿰…...

【DockerCE】Docker-CE 23.0.1正式版发布
很意外啊!Docker社区版竟然直接从20.xx.xx版本,升级到23.xx.xx版本了。官网地址(For RHEL/CentOS 7.9):https://download.docker.com/linux/centos/7/x86_64/stable/Packages/23.0.1版本官方安装包如下:# l…...

vscode开发的Vue家用电器维修服务系统nodejs+mysql
主要功能包括管理员:首页、个人中心、用户管理、维修员管理、维修信息管理、维修申请管理、维修处理管理、家电类别管理、配件信息管理、配件领用管理、维修结果管理、家电维修知识管理、公告信息管理、留言板管理,用户:首页、个人中心、维修…...

PyQt5数据库开发1 4.2 配置SQL Server 2008 数据源(ODBC编程)
文章目录 配置SQL Server 2008 数据源(ODBC编程) 1. 了解要配置的数据源服务器名称,以及数据库和对应表 2. 打开控制面板,点击管理工具 3. 双击数据源 4. 选择“用户DSN”选项卡,点击“添加” 5. 选择SQL Serv…...

【JavaEE】多线程代码实例:单例模式与阻塞队列BlockingQueue
目录 单例模式: 什么是单例模式? 单例模式的实现方式: 饿汉模式: 懒汉模式: 基于并发编程对单例模式线程安全问题的讨论: 阻塞队列: 标准库中的阻塞队列: 自实现阻塞…...

算法思想 - 搜索算法
本文主要介绍算法中搜索算法的思想,主要包含BFS,DFS。搜索相关题目深度优先搜索和广度优先搜索广泛运用于树和图中,但是它们的应用远远不止如此。BFS广度优先搜索的搜索过程有点像一层一层地进行遍历,每层遍历都以上一层遍历的结果…...

C#底层库--日期扩展类(上周、本周、明年、前年等)
系列文章 C#底层库–记录日志帮助类 本文链接:https://blog.csdn.net/youcheng_ge/article/details/124187709 C#底层库–数据库访问帮助类(MySQL版) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/126886379 …...

如何在 Webpack 中开启图片压缩
工具对比 npmtrends.com/image-minim… 这四个压缩工具,从下载量来看,image-webpack-loader 较多,image-minimizer-webpack-plugin、imagemin-webpack-plugin 次之,imagemin-webpack 已经不再维护,因此不考虑此工具。 …...

Web-Filter
## 今日内容 1. Filter:过滤器 2. Listener:监听器 # Filter:过滤器 1. 概念: * 生活中的过滤器:净水器,空气净化器,土匪、 * web中的过滤器:当访问服务器的资源时…...

测试写文章自动保存
近日恰逢双十一,瞅了瞅自己干瘪的钱包,没忍心入手期待已久的 macPro,只好在虚拟机里玩一下 mac好了,等以后钱包傲气的时候再来个真实的。 安装环境: windows10 VMWare14.2 2018-7-28 小嘚瑟补充:唧唧歪歪大半年,一夜回到解放前,终于剁手整了个真机,可以折腾一下了 ——…...

云平台搭建实例
嗨嗨,每天一更是不是很奈斯?我也觉得,昨天晚上我学校的老师借一天一千的设备,只能用七天,所以我拿出来给你们没有设备和刚用设备的看看吧。操作:首先我们将云平台安装好后,插上网线,…...

【Airplay_BCT】关于Bonjour的概念解答
1.什么是Bonjour? Bonjour,也称为零配置网络,可以自动发现 IP 网络上的计算机、设备和服务。 Bonjour 使用行业标准 IP 协议,允许设备自动发现彼此,无需输入 IP 地址或配置 DNS 服务器。具体来说,Bonjour …...

C++深入浅出(九)—— 多态
文章目录1. 多态的概念2. 多态的定义及实现🍑 多态的构成条件🍑 虚函数🍑 虚函数的重写🍑 虚函数重写的两个例外🍑 C11的override 和 final🍑 重载、覆盖(重写)、隐藏(重定义)的对比3. 抽象类🍑…...

shell学习4
目录 一、统计文本中的词频 二、压缩javascript 三、打印文件的或行中的第n个单词或列---awk 3.1 利用awk打印文件中每行中的第五个单词。 3.2 利用awk打印当前目录下的文件的权限和文件名 3.3 利用awk打印从M行到N行这个范围内的所有文本 3.4 利用awk 部分提取文件中的内…...

VR全景行业的应用价值如何呈现?
互联网高速发展的今天,多媒体所包含的种类也是越来越多,而一些较为传统的表现方式已经越来越无法满足大部分客户对展示方式的要求。而在传统的表现方式中,展现的方式无非是静态的平面图片以及动态的视频,但是他们都有一个缺点就是…...

ESP-IDF:TCP多线程并发服务器
核心代码: 核心思想就是主线程只处理socket监听功能,把数据处理部分分配到不同的线程中去处理。来了一个客户端连接,就分配新的线程去处理该客户端的数据请求。 代码: /多线程并发服务器/ #include <stdio.h> #include …...