python-数据可视化

python-数据可视化

** 数据可视化指的是通过可视化表示来探索数据,它与数据挖掘**紧密相关,而数据挖掘指的是使用代码来探索数据集的规律和关联。数据集可以是用一行代码就能表示的小型数字列表,也可以是数以吉字节的数据

最流行的工具之一是matplotlib它是一个数学绘图库,我们将使用它来制作简单的图表,如折线图和散点图。然后,我们将基于随机漫步概念生成一个更有趣的数据集——根据一系列随机决策生成的图表。

我们还将使用Pygal包,它专注于生成适合在数字设备上显示的图表。可在用户与图表交互时突出元素以及调整其大小,还可轻松地调整整个图表的尺寸,使其适合在微型智能手表或巨型显示器上显示。

一、安装matplotlib

在Windows系统中,首先需要安装Visual Studio

参考:http://t.csdnimg.cn/336oy

在命令行窗口输入

pip install matplotlib

对安装进行测试。为此,首先使用命令pythonpython3启动一个终端会话,再尝试导入matplotlib:

$ python3
>>> import matplotlib
>>>

如果没有出现任何错误消息,就说明你的系统安装了matplotlib

matplotlib官网实例

Plot types — Matplotlib 3.9.0 documentation

二、使用matplotlib

折线图

1.pyplot()绘制简单的折线图

示例1:绘制简单的折线图

import matplotlib.pyplot as plt

squares = [1, 4, 9, 16, 25]
plt.plot(squares)
plt.show()

注意:在pycharm容易报错:

AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘

这时需要修改某些参数,可以这样将上面文件第一行改为下面三行。

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
2.定制折线图的通用参数
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import numpy as np


squares = [1, 4, 9, 16, 25]
# make data:
plt.plot(squares, linewidth=1)
#linewidth决定了plot()绘制的线条的粗细


# 设置图表标题,并给坐标轴加上标签
plt.title("Number--graf", fontsize=24)
#函数title()给图表指定标题,fontsize指定了图表中文字的大小

plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
#函数xlabel()和ylabel()让你能够为每条轴设置标题


# 设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)
#函数tick_params()设置刻度的样式其中指定的实参将影响x轴和y轴上的刻度(axis='both'),并将刻度标记的字号设置为14(labelsize=14)。

plt.show()

这样画出来的图像并不是完全正确的

原因在于当你向plot()提供一系列数字时,它假设第一个数据点对应的 x 坐标值为0

因此需要指定第一个点对应的 x 值为1,改变默认的行为

方法是给plot()同时提供输入值和输出值

plot()正确使用如下:

input_values = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]
plt.plot(input_values, squares, linewidth=5)
#第一个列表指定x轴的参数
#第二个列表指定y轴的参数

散点图

1.使用scatter()绘制散点图
plt.scatter(2, 4)
#使用`scatter()`,并向它传递一对 *x* 和 *y* 坐标,它将在指定位置绘制一个点
绘制一个点
import matplotlib.pyplot as plt

plt.scatter(2, 4,s=10)
#并使用实参s设置了绘制图形时使用的点的尺寸。

# 设置图表标题并给坐标轴加上标签
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)

# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)

plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

绘制一系列点

要绘制一系列的点,可向scatter()传递两个分别包含x值和y值的列表

x_values = [1, 2, 3, 4, 5]
#横坐标的列表
y_values = [1, 4, 9, 16, 25]
#纵坐标的列表
plt.scatter(x_values, y_values, s=100)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用for循环绘制一群点

x_values = list(range(1,100))

y_values =[i**2 for i in range(1,100)]
#方法同上
plt.scatter(x_values, y_values, s=5)

plt.axis([0, 1100, 0, 1100000])
#函数axis()要求提供四个值:x(1-1100) 和 y(0-1100000) 坐标轴的最小值和最大值

scatter()的另一个参数

edgecolor=‘none’ 作用删除数据点的轮廓,默认蓝色

edgecolor=‘black’ 作用将数据点的轮廓线条改为黑色

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

plt.scatter(x_values, y_values, c='red',edgecolor = 'none',s=5)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

plt.scatter(x_values, y_values, c=(0, 0.8, 0),edgecolor = 'none',s=5)
#值越接近0,指定的颜色越深,值越接近1,指定的颜色越浅。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

颜色映射

  • 颜色映射(colormap)是一系列颜色,它们从起始颜色渐变到结束颜色。在可视化中,颜色映射用于突出数据的规律,例如,你可能用较浅的颜色来显示较小的值,并使用较深的颜色来显示较大的值

模块pyplot内置了一组颜色映射。要使用这些颜色映射,你需要告诉pyplot该如何设置数据集中每个点的颜色。

plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, edgecolor='none', s=20)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

参数c设置成了一个 y 值列表,并使用参数cmap告诉pyplot使用哪个颜色映射。这些代码将 y 值较小的点显示为浅蓝色,并将 y 值较大的点显示为深蓝色

自动保存图表

  • 要让程序自动将图表保存到文件中,可将对plt.show()的调用替换为对plt.savefig()的调用:
plt.savefig('squares_plot.png', bbox_inches='tight')
#第一个实参指定要以什么样的文件名保存图表,这个文件将存储到.py所在的目录中
#第二个实参指定将图表多余的空白区域裁剪掉。如果要保留图表周围多余的空白区域,可省略这个实参。

三、随机漫步

  • 随机漫步是这样行走得到的路径:每次行走都完全是随机的,没有明确的方向,结果是由一系列随机决策决定的随机漫步就是蚂蚁在晕头转向的情况下,每次都沿随机的方向前行所经过的路径。
  • 例如,漂浮在水滴上的花粉因不断受到水分子的挤压而在水面上移动。水滴中的分子运动是随机的,因此花粉在水面上的运动路径犹如随机漫步。

1.创建RandomWalk()类

为模拟随机漫步,我们将创建一个名为RandomWalk的类,它随机地选择前进方向。这个类需要三个属性,其中一个是存储随机漫步次数的变量,其他两个是列表,分别存储随机漫步经过的每个点的 xy 坐标

RandomWalk类只包含两个方法:__init__()fill_walk(),其中后者计算随机漫步经过的所有点。

from random import choice


class RandoWalk:
    def __init__(self,num_points=5000):
        self.num_points = num_points

        self.x_value = [0]
        self.y_value = [0]
    def fill_waik(self):

        while len(self.x_value)<self.num_points:
            x_derection = choice([-1,1])
            x_distance = choice([0,1,2,3,4])

            y_derection = choice([-1,1])
            y_distance = choice([0,1,2,3,4])

            x_step = x_distance*x_derection
            y_step = y_distance*y_derection

            if x_step==0 and y_step==0 :
                continue

            next_x = self.x_value[-1]+x_step
            next_y = self.y_value[-1]+y_step

            self.x_value.append(next_x)
            self.y_value.append(next_y)
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.pyplot as plt
from RandomWalk import RandoWalk

rw = RandoWalk()
rw.fill_waik()
plt.scatter(rw.x_value, rw.y_value, c='red', edgecolor='none', s=20)


plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

模拟多次随机漫步

每次随机漫步都不同,因此探索可能生成的各种模式很有趣。要在不多次运行程序的情况下使用前面的代码模拟多次随机漫步,一种办法是将这些代码放在一个while循环中,如下所示:

while True:
    # 创建一个RandomWalk实例,并将其包含的点都绘制出来
    rw = RandomWalk()
    rw.fill_walk()
    plt.scatter(rw.x_values, rw.y_values, s=15)
    plt.show()

    keep_running = input("Make another walk? (y/n): ")if keep_running == 'n':
        break
point_numbers = list(range(rw.num_points))
plt.scatter(rw.x_value, rw.y_value,c=point_numbers, cmap=plt.cm.Blues, edgecolor='none', s=20)
#绘制时按先后次序着色,即生成的轨迹。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

除了给随机漫步的各个点着色,以指出它们的先后顺序外,如果还能呈现随机漫步的起点和终点就更好了

plt.scatter(0, 0, c='green', edgecolors='none', s=100)
plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none',
        s=100)
#单独绘制起点和终点,使其更加突出。
plt.axis('off')
#直接隐藏所有坐标轴信息

plt.yticks([])
plt.xticks([])
#直接隐藏各坐标轴信息,但是有边框
 plt.figure(figsize=(10, 6))
 #函数figure()用于指定图表的宽度、高度、分辨率和背景色。你需要给形参figsize指定一个元组,向matplotlib指出绘图窗口的尺寸,单位为英寸。
plt.figure(dpi=128, figsize=(10, 6))

四、使用Pygal模拟掷骰子

  • 使用Python可视化包Pygal来生成可缩放的矢量图形文件对于需要在尺寸不同的屏幕上显示的图表,这很有用,因为它们将自动缩放,以适合观看者的屏幕

1.安装pygal

在命令行窗口输入

python -m pip install --user pygal==1.7

示例:Line — pygal 2.0.0 documentation

2.创建一个Die()类

from random import randint

class Die:
    def __init__(self,num_size=6):
        self.num_size = num_size
        
    def roll(self):
        return  randint(1,self.num_size)
        #返回一个1-6之间的随机数,返回起始值1、终止值num_sides或这两个值之间的任何整数!

3.模拟掷色子

import matplotlib
import pygal
from die import Die
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

die = Die()
values =[]

for value in range(0,100):
    value = die.roll()
    values.append(value)

consults = []
for value in range(1,die.num_size+1):
    value = values.count(value)
    consults.append(value)

print(values)
print(consults)

4.绘制直方图

  • 直方图是一种条形图,指出了各种结果出现的频率。
#创建一个pygal.Bar()实例
hist = pygal.Bar()

hist.title = "Results of Rolling one D6 1000 times"
hist.x_lables = ['1','2','3','4','5','6']
hist.x_title = 'result'
hist.y_title = 'Frequency of Result'

hist.add('D6',consults)
#add()将一系列值添加到图表中(向它传递要给添加的值指定的标签,还有一个列表,其中包含将出现在图表中的值)
hist.render_to_file('die_results.svg')

使用浏览器打开.svg文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

CVS数据-可视化

从网上下载某些数据,并对这些数据进行可视化,可视化以两种常见格式存储的数据:CSV和JSON。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

处理CVS数据-最简单的方式是将数据作为一系列以逗号分隔的值

提取CVS数据

import csv

filename = 'sitka_weather_07-2014.csv'
#存储使用的文件名

with open(filename) as f:
    reader = csv.reader(f)
    #阅读器对象存储在reader中。
    header_row = next(reader)
    #模块csv包含函数next(),调用它并将阅读器对象传递给它时,它将返回文件中的下一行
    #调用了next()一次,因此得到的是文件的第一行
    print(header_row)
    
 #输出
#['AKDT', 'Max TemperatureF', 'Mean TemperatureF', 'Min TemperatureF', 'Max Dew PointF', 'MeanDew PointF', 'Min DewpointF', 'Max Humidity', ' Mean Humidity', ' Min Humidity', ' Max Sea Level PressureIn', ' Mean Sea Level PressureIn', ' Min Sea Level PressureIn', ' Max VisibilityMiles', ' Mean VisibilityMiles', ' Min VisibilityMiles', ' Max Wind SpeedMPH', ' Mean Wind SpeedMPH', ' Max Gust SpeedMPH', 'PrecipitationIn', ' CloudCover', ' Events', ' WindDirDegrees']
    
 #reader处理文件中以逗号分隔的第一行数据,并将每项数据都作为一个元素存储在列表中
        for index, column_header in enumerate(header_row):
        print(index+1,column_header)
        #可使用上述语句得到更详细的表头,对列表调用了enumerate()来获取每个元素的索引及其值

提取其中索引为0和1的值

#提取第二列为最高气温
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)
    #已经读取了第一行,此时标志已经在第二行
    high = []
    for row in reader:
        high.append(row[1])#可以将row[1]转化为int(row[1])
    print(high)
    #对reader遍历是每一行组成的列表,且从第二行开始读取
    
    
    fig = plt.figure(dpi=128, figsize=(10, 6))
    
    plt.plot(date,high,c='red')
    plt.title("Daily high temperatures July 2014", fontsize=24)
    plt.xlabel("data", fontsize=16)
    plt.ylabel("Temperature (F)", fontsize=16)
    plt.tick_params(axis='both', which='major', labelsize=16)
    plt.show()
    #绘制最高气温折线图

模块datetime

在cvs文件中提取的日期为字符串,我们需要想办法将字符串'2014-7-1'转换为一个表示相应日期的对象。

可使用模块datetime中的方法strptime()

导包

from datetime import datetime

如:将’2014-7-14’格式的字符串转化为对应的日期格式

first_date = datetime.strptime('2014-7-1', '%Y-%m-%d')
#datetime的方法strptime(),并将包含所需日期的字符串作为第一个实参。
#第二个实参告诉Python如何设置日期的格式。
  • %Y-:让Python将字符串中第一个连字符前面的部分视为四位的年份
  • %m-:将第二个连字符前面的部分视为表示月份的数字
  • %d:将字符串的最后一部分视为月份中的一天(1~31)
  • 其余如下:
实参含义
%A星期的名称,如Monday
%B月份名,如January
%m用数字表示的月份(01~12)
%d用数字表示月份中的一天(01~31)
%Y四位的年份,如2015
%y两位的年份,如15
%H24小时制的小时数(00~23)
%I12小时制的小时数(01~12)
%pam或pm
%M分钟数(00~59)
%S秒数(00~61)

#读取第一列的日期
	high = []
    dateTimes = []
    for row in reader:
        high.append(int(row[1]))
        dateTime = datetime.strptime(row[0],'%Y-%m-%d')
        dateTimes.append(dateTime)
    
    fig = plt.figure(dpi=128, figsize=(10, 6))
    plt.plot(dateTimes,high,c='red')
    fig.autofmt_xdate()
    #调用fig.autofmt_xdate()来绘制斜的日期标签,以免它们彼此重叠

在绘制一个最低温

low = []
for row in reader:
        low.append(int(row[3]))
        
plt.plot(dateTimes,low,c='blue')

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

给中间区域着色

  • fill_between(),它接受一个 x 值系列和两个 y 值系列,并填充两个 y 值系列之间的空间
plt.fill_between(dateTimes,low,high,facecolor='grey', alpha=0.1)
#第一个参数为x值,第二三个参数为y值的最低和最高,facecolor为填充的颜色,alpha透明度0-1

JSON数据-可视化

  • json文件实际上就是一个很长的Python列表,其中每个元素都是一个包含五个键的字典:统计日期、月份、周数、周几以及关闭价格。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

同时,介绍另一种数据文件获取渠道:从在线地址中获取json文件,需要用到工具:urlopen

import urlopen
import json

json_url = 'https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json'
#给出数据的网络地址
response = urlopen(json_url)
# 读取数据
req = response.read()
# 将数据写入文件
with open('btc_close_2017_urllib.json','wb') as f: 
    f.write(req)
# 加载json格式
file_urllib = json.loads(req) 
print(file_urllib)

运行后即可将数据下载到btc_close_2017_urllib.json中

使用json数据

filename = 'btc_close_2017.json'
with open(filename) as f:
    btc_data = json.load(f)
#将文件中的数据存储在btc_data中

#加载json格式
for btc_dict in btc_data:
    data = btc_dict['date']
    month = btc_dict['month']
    week = btc_dict['week']
    weekday = btc_dict['weekday']
    close = btc_dict['close']
    print("{} is month {} week {}, {}, the close price is {} RMB".format(data, month, week, weekday, close))
import pygal
import matplotlib
matplotlib.use('TkAgg')
import json

filename = 'btc_close_2017.json'
with open(filename) as f:
    btc_data = json.load(f)
#将文件中的数据存储在btc_data中
date = []
month = []
week = []
weekday =[]
close = []
#加载json格式
for btc_dict in btc_data:
    date.append(btc_dict['date'])
    month.append(btc_dict['month'])
    week.append(int(btc_dict['week']))
    weekday.append(btc_dict['weekday'])
    close.append(int(float(btc_dict['close'])))

line_chart = pygal.Line(x_label_rotation=20, show_minor_x_labels=False)
#x_label_rotation=20让x 轴上的日期标签顺时针旋转20°,show_minor_x_labels=False则告诉图形不用显示所有的x 轴标签。

line_chart.title = '收盘价(¥)'
line_chart.x_labels = date
N = 20 # x轴坐标每隔20天显示一次
line_chart.x_labels_major = date[::N]
#x_labels_major属性,让x 轴坐标每隔20天显示一次
line_chart.add('收盘价', close)
line_chart.render_to_file('收盘价折线图(¥).svg')

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ata:
date.append(btc_dict[‘date’])
month.append(btc_dict[‘month’])
week.append(int(btc_dict[‘week’]))
weekday.append(btc_dict[‘weekday’])
close.append(int(float(btc_dict[‘close’])))

line_chart = pygal.Line(x_label_rotation=20, show_minor_x_labels=False)
#x_label_rotation=20让x 轴上的日期标签顺时针旋转20°,show_minor_x_labels=False则告诉图形不用显示所有的x 轴标签。

line_chart.title = ‘收盘价(¥)’
line_chart.x_labels = date
N = 20 # x轴坐标每隔20天显示一次
line_chart.x_labels_major = date[::N]
#x_labels_major属性,让x 轴坐标每隔20天显示一次
line_chart.add(‘收盘价’, close)
line_chart.render_to_file(‘收盘价折线图(¥).svg’)


[外链图片转存中...(img-e3JXKW7B-1716887484137)]





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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

eBPF可观测之网络流量控制和管理traffic control浅尝

目录 工程背景 环境准备 安装工具​​​ 安装依赖包 安装C依赖库 操作步骤 目录结构 代码展示 效果展示 拓展提升 工程背景 首先发表一个"暴论" eBPF在可观测方面的应用&#xff0c;就是各种google。 不需要学习内核&#xff0c;只要掌握ebpf开发套路。…

什么是“SQL注入攻击”?如何预防和应对?

一、SQL注入攻击的概念 SQL注入攻击是一种针对数据库驱动的应用程序的攻击技术&#xff0c;其中攻击者通过在应用程序的输入字段中插入或“注入”恶意的SQL代码&#xff0c;试图非法访问、操作或破坏后端数据库。当应用程序不正确地处理用户输入&#xff0c;并将其直接拼接到SQ…

【NumPy】NumPy线性代数模块详解:掌握numpy.linalg的核心功能

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

国产数据库替代加速 助力数字中国建设

5月24日&#xff0c;随着第七届数字中国建设峰会在福州的成功举办&#xff0c;释放数据要素价值、发展新质生产力成为当下热议的话题。 数据作为新型生产要素&#xff0c;是数字化、网络化、智能化的重要基础。北京人大金仓信息技术股份有限公司&#xff08;以下简称人大金仓&a…

如何改变echo在Linux下的输出颜色

文章目录 问题回答常规输出字体加粗斜体字带下划线闪烁效果 参考 问题 我正在尝试使用 echo 命令在终端中打印文本。 我想把文本打印成红色。我该怎么做&#xff1f; 回答 你可以使用 ANSI escape codes 定义控制输出颜色的变量。 ANSI escape codes是一种用于在文本中设置…

动手学深度学习23 LeNet

动手学深度学习23 LeNet 1. LeNet2. 代码3. QA 1. LeNet 两层卷积两层池化两层全连接 卷积就是让每一层shape不断压缩变小【高宽减少】&#xff0c;通道数增多&#xff0c;把特征信息放到不同的通道里面。每一个通道认为是一个模式。然后再做全连接的输入。 2. 代码 impor…

4款让人骄傲的国产软件,功能过于强大,却被误认为是外国佬研发

说到国产软件&#xff0c;许多人可能会有“流氓软件、弹屏广告多、隐藏消费套路”等负面印象。 这种偏见导致一些功能强大、用户友好的国产软件被误认为是外国人开发的。 1、格式工厂 格式工厂是一个很实用的国产格式转换工具&#xff0c;它完全免费且没有广告&#xff0c;不…

大模型实战-动手实现单agent

文章目录 入口cli_main.py工具tools.pyprompt prompt_cn.pyLLM 推理 model_provider.py致谢 agent 的核心思想&#xff1a;不断调用 LLM&#xff08;多轮对话&#xff09;&#xff0c;让 LLM 按照指定的格式&#xff08;例如 json&#xff09;进行回复&#xff0c;提取 LLM 回复…

【LaTex】11 ACM参考文献顺序引用 - 解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题

【LaTex】11 ACM参考文献顺序引用 写在最前面解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题问题描述问题原因如何解决问题解决方案1&#xff08;更简单&#xff09;解决方案2&#xff08;更自由&#xff09; 小结 &#x1f308;你好呀&#xff01;我是 是Yu欸 …

巧用java8的stream流的.collect(Collectors.toMap(arg1,arg2))

最近公司接手了一个低代码二次开发平台的需求&#xff0c;需要连接多张表的数据然后展示到界面上。 按照java的sql思路&#xff0c;我们直接通过left join去关联表就行了&#xff0c;但是该低代码平台有对sql连表查询有限制&#xff0c;就是有些表它是存在一个domainKey的&…

牛客题霸-SQL大厂面试真题(一)

本文基于前段时间学习总结的 MySQL 相关的查询语法&#xff0c;在牛客网找了相应的 MySQL 题目进行练习&#xff0c;以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多&#xff0c;因此本文不再展示&#xff0c;只提供 MySQL 代码与示例输出。 以下内容是…

Java | Leetcode Java题解之第101题对称二叉树

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isSymmetric(TreeNode root) {return check(root, root);}public boolean check(TreeNode u, TreeNode v) {Queue<TreeNode> q new LinkedList<TreeNode>();q.offer(u);q.offer(v);while (!q.…

大数据框架总结(全)

☔️ 大数据框架总结&#xff08;全&#xff09; 关注“大数据领航员”&#xff0c;在公众号号中回复关键字【大数据面试资料】&#xff0c;即可可获取2024最新大数据面试资料的pdf文件 一. Hadoop HDFS读流程和写流程 HDFS写数据流程 &#xff08;1&#xff09;客户端通过…

【ARM+Codesys案例】T3/RK3568/树莓派+Codesys锂电池测试设备控制解决方案

锂电池诞生于上世纪60年代&#xff0c;90年代开始由日本索尼公司实现商业化。锂离子电池凭借快速充放电、长循环寿命、无记忆效应等众多优点&#xff0c;成为当今数码产品及电动汽车大规模应用的第一选择。与镍氢电池、铅酸电池相比&#xff0c;锂电池可以存储更多电能。现在&a…

ECOLOGY9解决明细表数据按需显示或隐藏

ECOLOGY9:由于领导需要查看完整的明细表数据&#xff0c;没有启用分页功能&#xff0c;导致大领导查看时又出现几百行的数据&#xff0c;影响使用体验。需求&#xff1a;只看正常表单数据&#xff0c;明细表数据&#xff0c;默认不显示&#xff0c;需要查看时再打开。 实现&am…

抖店怎么选品?抖店爆款选品思路技巧,新手直接用!

大家好&#xff0c;我是电商花花。 抖店选品永远是我们做抖店&#xff0c;做电商的核心&#xff0c;店铺想要出单&#xff0c;想要赚钱&#xff0c;我们就一定要学会怎么选品&#xff0c;怎么筛选商品。 而我们绝大多数新手并没有办法保证持续选爆款的能力&#xff0c;如果店…

Linux:confluence8.5.9的部署(下载+安装+破ji)离线部署全流程

0.环境 Confluence也是比较吃运存了&#xff0c;我建议运行运存给到4g或者4g以上就可以了&#xff0c;核数可以给到1核或以上 我部署在centos7.9操作系统上&#xff0c;ip地址为&#xff1a;192.168.6.1&#xff0c;yum仓库使用的是自己的镜像文件&#xff0c;本章所有使用到…

iptables防火墙【☆】

一、防火墙的基础 防火墙分为硬件防火墙和软件防火墙&#xff0c;硬件防火墙有专门的设备&#xff1a;如国产华为、绿盟等&#xff0c;作为网关层做地址转换等安全防护。很多公司基本都会使用硬件防火墙做第一道防御&#xff0c;在核心业务上再添加软件防火墙提高安全性能…

逆向基础:软件手动脱壳技术入门

这里整合了一下之前自己学习软件手工脱壳的一些笔记和脱文&#xff0c;希望能给新学软件逆向和脱壳的童鞋们一点帮助。 1 一些概念 1.1 加壳 加壳的全称应该是可执行程序资源压缩&#xff0c;是保护文件的常用手段。加壳过的程序可以直接运行&#xff0c;但是不能查看源代码…

MySQL详细安装、配置过程,多图,详解

本文适合centos7环境下安装mysql&#xff0c;在安装和卸载过程中&#xff0c;都在root用户下完成。文章目录 清理环境获取mysql官方yum源安装mysql yum源安装mysql服务安装报错解决办法验证是否安装完成启动mysql服务登录服务方法一&#xff1a;方法二&#xff1a;方法三&#…