第31篇:Python开发进阶:数据可视化与前端集成

第31篇:数据可视化与前端集成

目录

  1. 数据可视化概述
    • 什么是数据可视化
    • 数据可视化的重要性
  2. Python中的数据可视化库
    • Matplotlib
    • Seaborn
    • Plotly
    • Bokeh
    • Altair
  3. 数据可视化的基本概念
    • 图表类型
    • 设计原则
    • 交互性与动态性
  4. 与前端框架的集成
    • 前端框架概述
    • Flask与Django集成数据可视化
    • 使用JavaScript库增强可视化
  5. 创建交互式可视化应用
    • Dash框架简介
    • Streamlit简介
    • 构建交互式仪表盘示例
  6. 示例代码
    • 使用Matplotlib绘制基本图表
    • 使用Plotly创建交互式图表
    • 使用Dash构建交互式仪表盘
  7. 常见问题及解决方法
    • 问题1:如何处理大规模数据集的可视化?
    • 问题2:如何在前端实现实时数据更新?
    • 问题3:如何优化图表的加载速度?
    • 问题4:如何在不同设备上保持可视化的一致性?
  8. 总结

数据可视化概述

什么是数据可视化

数据可视化是将数据通过图形化的方式展示出来,以便更直观地理解、分析和传达信息。通过图表、图形和动画,复杂的数据变得易于理解和解释,帮助决策者做出明智的选择。

数据可视化的重要性

  • 理解数据:通过视觉表现,快速识别数据中的模式、趋势和异常。
  • 沟通信息:以简洁明了的方式传达复杂的信息,增强信息的可理解性。
  • 支持决策:提供数据驱动的洞察,辅助业务和技术决策。
  • 增强报告:提升报告和展示的专业性,使内容更具吸引力。

Python中的数据可视化库

Python生态系统中有许多强大的数据可视化库,每个库都有其独特的功能和适用场景。以下是一些常用的Python数据可视化库介绍:

Matplotlib

Matplotlib是Python中最基础也是最广泛使用的绘图库,适用于创建静态、动态和交互式图表。

import matplotlib.pyplot as plt

# 数据
x = [1, 2, 3, 4, 5]
y = [10, 20, 25, 30, 40]

# 绘制折线图
plt.plot(x, y, marker='o')
plt.title('简单折线图')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()

Seaborn

Seaborn基于Matplotlib,提供了更高级的接口和更美观的默认样式,适合统计图表的绘制。

import seaborn as sns
import matplotlib.pyplot as plt

# 示例数据集
tips = sns.load_dataset('tips')

# 绘制箱型图
sns.boxplot(x='day', y='total_bill', data=tips)
plt.title('每日账单分布')
plt.show()

Plotly

Plotly是一个支持交互式图表的库,适合在网页和应用中嵌入动态可视化。

import plotly.express as px

# 示例数据集
df = px.data.iris()

# 绘制散点图
fig = px.scatter(df, x='sepal_width', y='sepal_length', color='species', title='鸢尾花数据集散点图')
fig.show()

Bokeh

Bokeh专注于为现代网页应用创建交互式图表,支持实时数据流和动态更新。

from bokeh.plotting import figure, show
from bokeh.io import output_notebook

output_notebook()

# 创建图表
p = figure(title="简单散点图", x_axis_label='X轴', y_axis_label='Y轴')
p.circle([1, 2, 3, 4, 5], [10, 20, 25, 30, 40], size=10, color="navy", alpha=0.5)

show(p)

Altair

Altair是一个声明式的可视化库,基于Vega和Vega-Lite,适合快速创建复杂的图表。

import altair as alt
import pandas as pd

# 示例数据
data = pd.DataFrame({
    'x': [1, 2, 3, 4, 5],
    'y': [10, 20, 25, 30, 40]
})

# 绘制条形图
chart = alt.Chart(data).mark_bar().encode(
    x='x',
    y='y'
).properties(
    title='简单条形图'
)

chart.show()

数据可视化的基本概念

图表类型

选择合适的图表类型对于有效传达信息至关重要。以下是常见的图表类型及其适用场景:

图表类型描述适用场景
折线图用于显示数据随时间或连续变量的变化趋势。时间序列分析、趋势观察
柱状图用于比较不同类别之间的数值。类别比较、分组数据展示
散点图用于显示两个变量之间的关系或相关性。相关性分析、分布观察
饼图用于显示各部分占整体的比例。比例分布展示、市场份额分析
热力图用于显示数据密度或强度的分布。密度分布分析、相关性矩阵展示
箱型图用于显示数据的分布情况,包括中位数、四分位数和异常值。数据分布分析、统计特性展示
雷达图用于显示多变量数据的对比。多指标对比、性能评估
气泡图类似于散点图,但通过气泡大小表示第三个变量。多维数据展示、关系分析
地理图表用于显示地理数据的分布和关系。地理分布分析、区域比较

设计原则

良好的数据可视化不仅需要准确传达数据,还需具备良好的设计。以下是一些关键的设计原则:

  • 简洁明了:避免不必要的装饰,确保图表易于理解。
  • 一致性:保持颜色、字体和样式的一致,增强视觉连贯性。
  • 对比与突出:使用颜色和大小对比突出关键数据。
  • 可读性:确保标签、标题和注释清晰可见。
  • 适当的比例:选择合适的坐标比例,避免误导性展示。
  • 交互性:在适当的情况下,添加交互元素提升用户体验。

交互性与动态性

交互式和动态的可视化能够提供更丰富的信息和用户体验。常见的交互功能包括:

  • 缩放与平移:允许用户放大或缩小图表,查看细节。
  • 悬停提示:在鼠标悬停时显示详细信息。
  • 筛选与选择:允许用户筛选数据或选择特定部分进行分析。
  • 动画效果:展示数据随时间或条件变化的动态过程。

与前端框架的集成

前端框架概述

前端框架是用于构建用户界面的工具和库,帮助开发者快速创建响应式和交互丰富的Web应用。常见的前端框架包括:

  • React:由Facebook开发的组件化库,适合构建复杂的用户界面。
  • Vue.js:轻量级的前端框架,易于上手,适合中小型项目。
  • Angular:由Google开发的完整框架,适合大型企业级应用。
  • D3.js:专注于数据可视化的JavaScript库,适合创建定制化图表。

Flask与Django集成数据可视化

FlaskDjango是Python中两个流行的Web框架,它们都可以与数据可视化库无缝集成。

Flask集成Matplotlib示例
from flask import Flask, render_template
import matplotlib.pyplot as plt
import io
import base64

app = Flask(__name__)

@app.route('/')
def index():
    # 创建图表
    plt.figure(figsize=(6,4))
    plt.plot([1,2,3,4,5], [10,20,25,30,40], marker='o')
    plt.title('简单折线图')
    plt.xlabel('X轴')
    plt.ylabel('Y轴')

    # 将图表保存到内存中
    img = io.BytesIO()
    plt.savefig(img, format='png')
    img.seek(0)
    plot_url = base64.b64encode(img.getvalue()).decode()

    return render_template('index.html', plot_url=plot_url)

if __name__ == '__main__':
    app.run(debug=True)

index.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Flask Matplotlib 示例</title>
</head>
<body>
    <h1>Flask 与 Matplotlib 集成示例</h1>
    <img src="data:image/png;base64,{{ plot_url }}" alt="Plot">
</body>
</html>
Django集成Plotly示例
# views.py
from django.shortcuts import render
import plotly.express as px
import json
from plotly.utils import PlotlyJSONEncoder

def plotly_chart(request):
    df = px.data.iris()
    fig = px.scatter(df, x='sepal_width', y='sepal_length', color='species', title='鸢尾花散点图')
    graphJSON = json.dumps(fig, cls=PlotlyJSONEncoder)
    return render(request, 'plotly_chart.html', {'graphJSON': graphJSON})

plotly_chart.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Django Plotly 示例</title>
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
    <h1>Django 与 Plotly 集成示例</h1>
    <div id="chart"></div>
    <script>
        var graphs = {{ graphJSON | safe }};
        Plotly.newPlot('chart', graphs.data, graphs.layout);
    </script>
</body>
</html>

使用JavaScript库增强可视化

结合JavaScript库可以进一步增强数据可视化的交互性和动态性。例如,使用D3.js可以创建高度定制化的图表,满足特定需求。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>D3.js 示例</title>
    <script src="https://d3js.org/d3.v6.min.js"></script>
    <style>
        .bar {
            fill: steelblue;
        }
        .bar:hover {
            fill: orange;
        }
    </style>
</head>
<body>
    <h1>D3.js 条形图示例</h1>
    <svg width="600" height="400"></svg>
    <script>
        const data = [10, 20, 25, 30, 40];
        const svg = d3.select("svg");
        const width = +svg.attr("width");
        const height = +svg.attr("height");
        const margin = {top: 20, right: 30, bottom: 30, left: 40};

        const x = d3.scaleBand()
                    .domain(data.map((d, i) => i))
                    .range([margin.left, width - margin.right])
                    .padding(0.1);

        const y = d3.scaleLinear()
                    .domain([0, d3.max(data)]).nice()
                    .range([height - margin.bottom, margin.top]);

        svg.append("g")
           .attr("fill", "steelblue")
           .selectAll("rect")
           .data(data)
           .enter().append("rect")
             .attr("class", "bar")
             .attr("x", (d, i) => x(i))
             .attr("y", d => y(d))
             .attr("height", d => y(0) - y(d))
             .attr("width", x.bandwidth());

        svg.append("g")
           .attr("transform", `translate(0,${height - margin.bottom})`)
           .call(d3.axisBottom(x).tickFormat(i => `Item ${i+1}`));

        svg.append("g")
           .attr("transform", `translate(${margin.left},0)`)
           .call(d3.axisLeft(y));
    </script>
</body>
</html>

创建交互式可视化应用

Dash框架简介

Dash是一个基于Flask、Plotly和React的Python框架,用于构建交互式Web应用和仪表盘。无需深入了解前端技术,即可创建功能丰富的可视化应用。

安装Dash
pip install dash
Dash示例
import dash
from dash import html, dcc
import plotly.express as px
import pandas as pd

# 示例数据
df = pd.DataFrame({
    "水果": ["苹果", "香蕉", "橙子", "葡萄", "梨"],
    "数量": [30, 15, 20, 10, 25]
})

# 创建Dash应用
app = dash.Dash(__name__)

# 应用布局
app.layout = html.Div(children=[
    html.H1(children='Dash 示例'),

    html.Div(children='''
        简单的Dash条形图示例。
    '''),

    dcc.Graph(
        id='example-graph',
        figure=px.bar(df, x='水果', y='数量', title='水果数量分布')
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)

Streamlit简介

Streamlit是一个开源的Python库,用于快速创建和分享数据应用。它特别适合数据科学家和分析师,无需前端开发经验即可构建交互式应用。

安装Streamlit
pip install streamlit
Streamlit示例
import streamlit as st
import pandas as pd
import plotly.express as px

# 标题
st.title('Streamlit 示例')

# 示例数据
df = pd.DataFrame({
    "水果": ["苹果", "香蕉", "橙子", "葡萄", "梨"],
    "数量": [30, 15, 20, 10, 25]
})

# 绘制图表
fig = px.bar(df, x='水果', y='数量', title='水果数量分布')
st.plotly_chart(fig)

# 添加交互组件
selected_fruit = st.selectbox('选择水果', df['水果'])
filtered_data = df[df['水果'] == selected_fruit]
st.write('选中的水果数量:', filtered_data['数量'].values[0])

运行Streamlit应用

streamlit run your_script.py

构建交互式仪表盘示例

以下是使用Dash构建一个交互式仪表盘的示例,用户可以通过下拉菜单选择不同的数据视图。

import dash
from dash import html, dcc
from dash.dependencies import Input, Output
import plotly.express as px
import pandas as pd

# 示例数据
df = px.data.iris()

# 创建Dash应用
app = dash.Dash(__name__)

# 应用布局
app.layout = html.Div([
    html.H1("Iris 数据集交互式仪表盘"),

    dcc.Dropdown(
        id='x-axis',
        options=[{'label': col, 'value': col} for col in df.columns if col != 'species'],
        value='sepal_width'
    ),

    dcc.Dropdown(
        id='y-axis',
        options=[{'label': col, 'value': col} for col in df.columns if col != 'species'],
        value='sepal_length'
    ),

    dcc.Graph(id='scatter-plot')
])

# 回调函数更新图表
@app.callback(
    Output('scatter-plot', 'figure'),
    [Input('x-axis', 'value'),
     Input('y-axis', 'value')]
)
def update_graph(x_axis, y_axis):
    fig = px.scatter(df, x=x_axis, y=y_axis, color='species', title=f'{y_axis} vs {x_axis}')
    return fig

if __name__ == '__main__':
    app.run_server(debug=True)

示例代码

使用Matplotlib绘制基本图表

import matplotlib.pyplot as plt

def matplotlib_example():
    # 数据
    x = [1, 2, 3, 4, 5]
    y = [10, 20, 25, 30, 40]

    # 创建图表
    plt.figure(figsize=(8,6))
    plt.plot(x, y, marker='o', linestyle='-', color='b', label='数据线')
    plt.title('Matplotlib 简单折线图')
    plt.xlabel('X轴')
    plt.ylabel('Y轴')
    plt.legend()
    plt.grid(True)
    plt.show()

if __name__ == "__main__":
    matplotlib_example()

运行结果

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

使用Plotly创建交互式图表

import plotly.express as px

def plotly_example():
    # 示例数据集
    df = px.data.iris()

    # 创建散点图
    fig = px.scatter(df, x='sepal_width', y='sepal_length', color='species',
                     title='Iris 数据集散点图',
                     hover_data=['petal_width', 'petal_length'])

    # 显示图表
    fig.show()

if __name__ == "__main__":
    plotly_example()

运行结果

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

使用Dash构建交互式仪表盘

import dash
from dash import html, dcc
from dash.dependencies import Input, Output
import plotly.express as px
import pandas as pd

def dash_example():
    # 示例数据
    df = px.data.gapminder().query("year == 2007")

    # 创建Dash应用
    app = dash.Dash(__name__)

    # 应用布局
    app.layout = html.Div([
        html.H1("Dash 气泡图示例"),

        dcc.Dropdown(
            id='continent-dropdown',
            options=[{'label': continent, 'value': continent} for continent in df['continent'].unique()],
            value='Asia',
            multi=True,
            placeholder='选择大陆'
        ),

        dcc.Graph(id='bubble-chart')
    ])

    # 回调函数更新图表
    @app.callback(
        Output('bubble-chart', 'figure'),
        [Input('continent-dropdown', 'value')]
    )
    def update_bubble(selected_continents):
        filtered_df = df[df['continent'].isin(selected_continents)]
        fig = px.scatter(filtered_df, x='gdpPercap', y='lifeExp',
                         size='pop', color='country',
                         hover_name='country', log_x=True, size_max=60,
                         title='2007年各国GDP与预期寿命')
        return fig

    app.run_server(debug=True)

if __name__ == "__main__":
    dash_example()

运行步骤

  1. 确保已安装Dash:

    pip install dash
    
  2. 运行脚本:

    python dash_example.py
    
  3. 在浏览器中打开http://127.0.0.1:8050/查看仪表盘。


常见问题及解决方法

问题1:如何处理大规模数据集的可视化?

原因:大规模数据集可能导致图表渲染缓慢或浏览器崩溃。

解决方法

  1. 数据抽样:选择部分数据进行可视化,减少渲染负担。

    sampled_df = df.sample(frac=0.1)  # 随机抽取10%的数据
    
  2. 数据聚合:对数据进行聚合,如求和、平均,减少数据量。

    aggregated_df = df.groupby('category').agg({'value': 'sum'}).reset_index()
    
  3. 使用WebGL加速的库:如Plotly的WebGL模式或Datashader,提升渲染性能。

    fig = px.scatter(df, x='x', y='y', render_mode='webgl')
    
  4. 分步渲染:将数据分批加载和渲染,避免一次性加载全部数据。

  5. 优化数据结构:确保数据以适合可视化库处理的格式存储,减少不必要的数据转换。

问题2:如何在前端实现实时数据更新?

原因:需要实时反映后端数据的变化,提升用户体验。

解决方法

  1. 使用WebSocket:建立前后端的实时通信通道,及时传递数据更新。

    # 示例:使用Flask-SocketIO
    from flask import Flask
    from flask_socketio import SocketIO, emit
    
    app = Flask(__name__)
    socketio = SocketIO(app)
    
    @socketio.on('connect')
    def handle_connect():
        emit('message', {'data': '连接成功'})
    
    if __name__ == '__main__':
        socketio.run(app)
    
  2. 定时轮询:前端定时向后端请求数据更新。

    setInterval(function() {
        fetch('/data')
            .then(response => response.json())
            .then(data => {
                // 更新图表
            });
    }, 5000);  // 每5秒请求一次
    
  3. 使用框架特性:如Dash支持的Interval组件,Streamlit的实时更新功能。

  4. 优化数据传输:仅传输必要的增量数据,减少带宽消耗。

问题3:如何优化图表的加载速度?

原因:图表加载缓慢影响用户体验,特别是在数据量大或网络条件差的情况下。

解决方法

  1. 压缩数据:使用压缩算法减少传输数据的大小。

    import gzip
    import json
    
    data_json = json.dumps(data)
    compressed_data = gzip.compress(data_json.encode('utf-8'))
    
  2. 延迟加载:按需加载图表或数据,避免一次性加载全部内容。

    // 示例:使用Intersection Observer API 延迟加载
    
  3. 使用高效的数据格式:如二进制格式(Protobuf、MessagePack)代替JSON,提升解析速度。

  4. 优化图表配置:减少不必要的渲染元素,简化图表设计。

    fig.update_layout(showlegend=False, template='simple_white')
    
  5. 缓存静态资源:利用浏览器缓存或CDN加速静态图表资源的加载。

问题4:如何在不同设备上保持可视化的一致性?

原因:不同设备的屏幕尺寸和分辨率可能导致可视化效果不一致。

解决方法

  1. 响应式设计:使用可调整大小的图表,适应不同屏幕尺寸。

    fig = px.bar(df, x='x', y='y', title='响应式图表')
    fig.update_layout(autosize=True)
    
  2. 使用百分比布局:在前端框架中使用百分比宽度和高度,确保图表自适应。

  3. 测试多设备:在不同设备和浏览器上测试图表,确保兼容性和一致性。

  4. 优化字体和元素大小:选择适当的字体大小和图表元素,确保在小屏设备上清晰可见。

  5. 使用矢量图形:选择支持缩放的矢量图形格式(如SVG),保持高质量显示。


总结

在本篇文章中,我们深入探讨了Python中的数据可视化与前端集成。通过理解数据可视化的基本概念和重要性,学习常用的Python数据可视化库,掌握与前端框架的集成方法,以及创建交互式可视化应用,您可以构建直观且交互丰富的Python应用。数据可视化与前端集成不仅提升了数据分析的效率,也增强了用户体验,是现代软件开发中不可或缺的技能。

学习建议

  1. 实践数据可视化:通过实际项目练习使用不同的可视化库,熟悉其功能和用法。
  2. 学习前端基础:了解HTML、CSS和JavaScript的基本知识,提升与前端框架集成的能力。
  3. 探索高级可视化技术:学习动画、交互式图表和实时数据可视化,提升应用的动态性。
  4. 优化性能:研究大数据可视化的优化方法,确保图表在各种环境下流畅运行。
  5. 参与社区与项目:加入数据可视化相关的社区,参与开源项目,积累实战经验。
  6. 阅读相关书籍和文档:如《Python数据可视化实战》、《Interactive Data Visualization for the Web》,系统性地提升数据可视化与前端集成能力。

接下来的系列文章将继续深入探讨Python的机器学习与人工智能,帮助您进一步掌握Python编程的核心概念和技巧。保持学习的热情,持续实践,您将逐步成为一名优秀的Python开发者!


如果您有任何问题或需要进一步的帮助,请随时在评论区留言或联系相关技术社区。

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

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

相关文章

240. 搜索二维矩阵||

参考题解&#xff1a;https://leetcode.cn/problems/search-a-2d-matrix-ii/solutions/2361487/240-sou-suo-er-wei-ju-zhen-iitan-xin-qin-7mtf 将矩阵旋转45度&#xff0c;可以看作一个二叉搜索树。 假设以左下角元素为根结点&#xff0c; 当target比root大的时候&#xff…

maven的打包插件如何使用

默认的情况下&#xff0c;当直接执行maven项目的编译命令时&#xff0c;对于结果来说是不打第三方包的&#xff0c;只有一个单独的代码jar&#xff0c;想要打一个包含其他资源的完整包就需要用到maven编译插件&#xff0c;使用时分以下几种情况 第一种&#xff1a;当只是想单纯…

联想拯救者R720笔记本外接显示屏方法,显示屏是2K屏27英寸

晚上23点10分前下单&#xff0c;第二天上午显示屏送到&#xff0c;检查外包装没拆封过。这个屏幕左下方有几个按键&#xff0c;按一按就开屏幕、按一按就关闭屏幕&#xff0c;按一按方便节省时间&#xff0c;也支持阅读等模式。 显示屏是 &#xff1a;AOC 27英寸 2K高清 100Hz…

python:求解偏微分方程(PDEs)

1.偏微分方程基本知识 微分方程是指含有未知函数及其导数的关系式&#xff0c;偏微分方程是包含未知函数的偏导数&#xff08;偏微分&#xff09;的微分方程。 偏微分方程可以描述各种自然和工程现象&#xff0c;是构建科学、工程学和其他领域的数学模型主要手段。科学和工程中…

Deepseek技术浅析(二):大语言模型

DeepSeek 作为一家致力于人工智能技术研发的公司&#xff0c;其大语言模型&#xff08;LLM&#xff09;在架构创新、参数规模扩展以及训练方法优化等方面都达到了行业领先水平。 一、基于 Transformer 架构的创新 1.1 基础架构&#xff1a;Transformer 的回顾 Transformer 架…

13JavaWeb——SpringBootWeb之事务AOP

1. 事务管理 1.1 事务回顾 在数据库阶段我们已学习过事务了&#xff0c;我们讲到&#xff1a; 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位。事务会把所有的操作作为一个整体&#xff0c;一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功&am…

Hive:struct数据类型,内置函数(日期,字符串,类型转换,数学)

struct STRUCT&#xff08;结构体&#xff09;是一种复合数据类型&#xff0c;它允许你将多个字段组合成一个单一的值, 常用于处理嵌套数据&#xff0c;例如当你需要在一个表中存储有关另一个实体的信息时。你可以使用 STRUCT 函数来创建一个结构体。STRUCT 函数接受多个参数&…

【Redis】List 类型的介绍和常用命令

1. 介绍 Redis 中的 list 相当于顺序表&#xff0c;并且内部更接近于“双端队列”&#xff0c;所以也支持头插和尾插的操作&#xff0c;可以当做队列或者栈来使用&#xff0c;同时也存在下标的概念&#xff0c;不过和 Java 中的下标不同&#xff0c;Redis 支持负数下标&#x…

鸢尾花书01---基本介绍和Jupyterlab的上手

文章目录 1.致谢和推荐2.py和.ipynb区别3.Jupyterlab的上手3.1入口3.2页面展示3.3相关键介绍3.4代码的运行3.5重命名3.6latex和markdown说明 1.致谢和推荐 这个系列是关于一套书籍&#xff0c;结合了python和数学&#xff0c;机器学习等等相关的理论&#xff0c;总结的7本书籍…

【unity游戏开发之InputSystem——06】PlayerInputManager组件实现本地多屏的游戏(基于unity6开发介绍)

文章目录 PlayerInputManager 简介1、PlayerInputManager 的作用2、主要功能一、PlayerInputManager组件参数1、Notification Behavior 通知行为2、Join Behavior:玩家加入的行为3、Player Prefab 玩家预制件4、Joining Enabled By Default 默认启用加入5、Limit Number Of Pl…

[C语言日寄] 源码、补码、反码介绍

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…

记录 | 基于Docker Desktop的MaxKB安装

目录 前言一、MaxKBStep 1Step2 二、运行MaxKB更新时间 前言 参考文章&#xff1a;如何利用智谱全模态免费模型&#xff0c;生成大家都喜欢的图、文、视并茂的文章&#xff01; MaxKB的Github下载地址 参考视频&#xff1a;【2025最新MaxKB教程】10分钟学会一键部署本地私人专属…

元宇宙下的Facebook:虚拟现实与社交的结合

随着科技的不断进步&#xff0c;虚拟现实&#xff08;VR&#xff09;技术逐渐从科幻走入现实&#xff0c;成为人们探索未来社交方式的重要工具。在这一浪潮中&#xff0c;Facebook&#xff08;现为Meta&#xff09;作为全球领先的社交平台&#xff0c;正在积极布局虚拟现实和元…

DeepSeek-R1 本地部署模型流程

DeepSeek-R1 本地部署模型流程 ***************************************************** 环境准备 操作系统&#xff1a;Windows11 内存&#xff1a;32GB RAM 存储&#xff1a;预留 300GB 可用空间 显存: 16G 网络: 100M带宽 ********************************************…

实验三---基于MATLAB的二阶系统动态性能分析---自动控制原理实验课

一 实验目的 1、观察学习二阶控制系统的单位阶跃响应、脉冲响应 2、记录单位阶跃响应曲线、脉冲响应曲线 3、掌握时间响应分析的一般方法 4、掌握系统阶跃响应曲线与传递函数参数的对应关系 二 实验仪器 计算机 MATLAB软件 三 实验内容及步骤 1、作以下二阶系统的单位阶跃响应…

爬虫基础(一)HTTP协议 :请求与响应

前言 爬虫需要基础知识&#xff0c;HTTP协议只是个开始&#xff0c;除此之外还有很多&#xff0c;我们慢慢来记录。 今天的HTTP协议&#xff0c;会有助于我们更好的了解网络。 一、什么是HTTP协议 &#xff08;1&#xff09;定义 HTTP&#xff08;超文本传输协议&#xff…

ZZNUOJ(C/C++)基础练习1011——1020(详解版)

1011 : 圆柱体表面积 题目描述 输入圆柱体的底面半径r和高h&#xff0c;计算圆柱体的表面积并输出到屏幕上。要求定义圆周率为如下宏常量 #define PI 3.14159 输入 输入两个实数&#xff0c;表示圆柱体的底面半径r和高h。 输出 输出一个实数&#xff0c;即圆柱体的表面积&…

【电工基础】2.低压带电作业定义,范围,工作要求,电工基本工具

一。低压带电作业 1.低压带电作业定义 低压带电作业是指在不停电的低压设备或低压线路上的工作。对于一些可以不停电的工作&#xff0c;没有偶然触及带电部分的危险工作&#xff0c;或作业人员使用绝缘辅助安全用具直接接触带电体及在带电设备外壳上的工作&#xff0c;均可进行…

SpringSecurity:There is no PasswordEncoder mapped for the id “null“

文章目录 一、情景说明二、分析三、解决 一、情景说明 在整合SpringSecurity功能的时候 我先是去实现认证功能 也就是&#xff0c;去数据库比对用户名和密码 相关的类&#xff1a; UserDetailsServiceImpl implements UserDetailsService 用于SpringSecurity查询数据库 Logi…

如何解压rar格式文件?8种方法(Win/Mac/手机/网页端)

RAR 文件是一种常见的压缩文件格式&#xff0c;由尤金・罗谢尔&#xff08;Eugene Roshal&#xff09;开发&#xff0c;因其扩展名 “rar” 而得名。它通过特定算法将一个或多个文件、文件夹进行压缩&#xff0c;大幅减小存储空间&#xff0c;方便数据传输与备份。然而&#xf…