014、Flask模板在数据可视化中的深度应用

news2024/10/7 20:31:09

目录

Flask模板在数据可视化中的深度应用

1. Flask模板系统简介

1.1 Jinja2模板语法基础

1.2 Flask中渲染模板

2. 静态图表生成

2.1 使用Matplotlib生成图表

3. 交互式图表:使用Charts.js

3.1 创建柱状图

3.2 创建折线图

4. 高级交互式可视化:使用Plotly

4.1 创建散点图

4.2 创建热力图

5. 高级应用:结合多个图表

6. 数据驱动的动态可视化

7. 数据处理与可视化的结合

8. 结合机器学习的可视化

9. 总结


Flask模板在数据可视化中的深度应用

1. Flask模板系统简介

Flask使用Jinja2作为其模板引擎,这是一个功能强大、灵活且易于使用的模板系统。在数据可视化中,Flask模板系统允许我们将后端的数据处理逻辑与前端的展示逻辑分离,从而实现更清晰的代码结构和更高的可维护性。

1.1 Jinja2模板语法基础

Jinja2使用{{ }}来输出变量,{% %}来编写控制结构。例如:

<h1>{{ title }}</h1>
<ul>
{% for item in items %}
    <li>{{ item }}</li>
{% endfor %}
</ul>

1.2 Flask中渲染模板

在Flask应用中,我们使用render_template函数来渲染模板:

from flask import Flask, render_template
​
app = Flask(__name__)
​
@app.route('/')
def index():
    data = {
        'title': '数据可视化示例',
        'items': ['图表1', '图表2', '图表3']
    }
    return render_template('index.html', **data)

2. 静态图表生成

首先,我们来看如何使用Flask模板生成静态图表。我们将使用Matplotlib库来生成图表,然后将其嵌入到Flask模板中。

2.1 使用Matplotlib生成图表

import io
import base64
import matplotlib.pyplot as plt
from flask import Flask, render_template
​
app = Flask(__name__)
​
def generate_plot():
    plt.figure(figsize=(10, 6))
    plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
    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 plot_url
​
@app.route('/static-plot')
def static_plot():
    plot_url = generate_plot()
    return render_template('static_plot.html', plot_url=plot_url)

对应的static_plot.html模板:

<!DOCTYPE html>
<html>
<head>
    <title>静态图表示例</title>
</head>
<body>
    <h1>Matplotlib生成的静态图表</h1>
    <img src="data:image/png;base64,{{ plot_url }}">
</body>
</html>

这个例子展示了如何在Flask后端生成图表,然后将其作为base64编码的图像传递给前端模板。这种方法适用于简单的、不需要交互的图表。

3. 交互式图表:使用Charts.js

接下来,我们将探讨如何使用Charts.js库来创建交互式图表。Charts.js是一个流行的JavaScript图表库,它提供了丰富的图表类型和交互选项。

3.1 创建柱状图

from flask import Flask, render_template, jsonify
import random
​
app = Flask(__name__)
​
@app.route('/bar-chart')
def bar_chart():
    labels = ['红色', '蓝色', '黄色', '绿色', '紫色']
    values = [random.randint(10, 100) for _ in range(5)]
    return render_template('bar_chart.html', labels=labels, values=values)
​
@app.route('/update-bar-data')
def update_bar_data():
    values = [random.randint(10, 100) for _ in range(5)]
    return jsonify(values=values)

对应的bar_chart.html模板:

<!DOCTYPE html>
<html>
<head>
    <title>交互式柱状图</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <canvas id="barChart" width="400" height="200"></canvas>
    <button onclick="updateChart()">更新数据</button>
​
    <script>
    var ctx = document.getElementById('barChart').getContext('2d');
    var myChart = new Chart(ctx, {
        type: 'bar',
        data: {
            labels: {{ labels | tojson }},
            datasets: [{
                label: '颜色数量',
                data: {{ values | tojson }},
                backgroundColor: [
                    'rgba(255, 99, 132, 0.6)',
                    'rgba(54, 162, 235, 0.6)',
                    'rgba(255, 206, 86, 0.6)',
                    'rgba(75, 192, 192, 0.6)',
                    'rgba(153, 102, 255, 0.6)'
                ]
            }]
        },
        options: {
            responsive: true,
            scales: {
                y: {
                    beginAtZero: true
                }
            }
        }
    });
​
    function updateChart() {
        $.getJSON('/update-bar-data', function(data) {
            myChart.data.datasets[0].data = data.values;
            myChart.update();
        });
    }
    </script>
</body>
</html>

这个例子展示了如何创建一个交互式的柱状图,并通过AJAX请求动态更新数据。用户可以点击"更新数据"按钮来刷新图表,而无需重新加载整个页面。

3.2 创建折线图

接下来,我们来创建一个折线图,展示一段时间内的数据趋势:

from flask import Flask, render_template, jsonify
import random
from datetime import datetime, timedelta
​
app = Flask(__name__)
​
def generate_time_series_data(days=30):
    end_date = datetime.now()
    start_date = end_date - timedelta(days=days)
    dates = [(start_date + timedelta(days=i)).strftime('%Y-%m-%d') for i in range(days)]
    values = [random.randint(50, 200) for _ in range(days)]
    return dates, values
​
@app.route('/line-chart')
def line_chart():
    dates, values = generate_time_series_data()
    return render_template('line_chart.html', dates=dates, values=values)
​
@app.route('/update-line-data')
def update_line_data():
    _, values = generate_time_series_data()
    return jsonify(values=values)

对应的line_chart.html模板:

<!DOCTYPE html>
<html>
<head>
    <title>交互式折线图</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <canvas id="lineChart" width="800" height="400"></canvas>
    <button onclick="updateChart()">更新数据</button>
​
    <script>
    var ctx = document.getElementById('lineChart').getContext('2d');
    var myChart = new Chart(ctx, {
        type: 'line',
        data: {
            labels: {{ dates | tojson }},
            datasets: [{
                label: '每日数据',
                data: {{ values | tojson }},
                borderColor: 'rgb(75, 192, 192)',
                tension: 0.1
            }]
        },
        options: {
            responsive: true,
            scales: {
                x: {
                    type: 'time',
                    time: {
                        unit: 'day'
                    }
                },
                y: {
                    beginAtZero: true
                }
            }
        }
    });
​
    function updateChart() {
        $.getJSON('/update-line-data', function(data) {
            myChart.data.datasets[0].data = data.values;
            myChart.update();
        });
    }
    </script>
</body>
</html>

这个折线图示例展示了如何处理时间序列数据,并使用Charts.js的时间轴功能来正确显示日期。

4. 高级交互式可视化:使用Plotly

Plotly是另一个强大的JavaScript可视化库,它提供了更多的交互性和更复杂的图表类型。让我们使用Plotly创建一个散点图和热力图。

4.1 创建散点图

import plotly
import plotly.graph_objs as go
import pandas as pd
import json
​
app = Flask(__name__)
​
@app.route('/scatter-plot')
def scatter_plot():
    # 假设我们有一个包含身高、体重和年龄数据的DataFrame
    df = pd.DataFrame({
        'height': [165, 170, 175, 180, 185, 190],
        'weight': [60, 65, 70, 75, 80, 85],
        'age': [25, 30, 35, 40, 45, 50]
    })
​
    trace = go.Scatter(
        x=df['height'],
        y=df['weight'],
        mode='markers',
        marker=dict(
            size=df['age'],
            color=df['age'],
            colorscale='Viridis',
            showscale=True
        ),
        text=df['age'],
        hoverinfo='text'
    )
​
    layout = go.Layout(
        title='身高与体重的关系(气泡大小表示年龄)',
        xaxis=dict(title='身高 (cm)'),
        yaxis=dict(title='体重 (kg)')
    )
​
    fig = go.Figure(data=[trace], layout=layout)
    graphJSON = json.dumps(fig, cls=plotly.utils.PlotlyJSONEncoder)
    return render_template('scatter_plot.html', graphJSON=graphJSON)

对应的scatter_plot.html模板:

<!DOCTYPE html>
<html>
<head>
    <title>Plotly散点图示例</title>
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
    <div id="chart" style="width:100%;height:600px;"></div>
    <script>
        var graphs = {{graphJSON | safe}};
        Plotly.newPlot('chart', graphs);
    </script>
</body>
</html>

这个散点图展示了如何使用Plotly创建多维数据可视化,其中点的位置表示身高和体重,而点的大小和颜色表示年龄。

4.2 创建热力图

接下来,让我们创建一个热力图来展示某个城市一周内每小时的温度变化:

import plotly
import plotly.graph_objs as go
import pandas as pd
import numpy as np
import json
​
app = Flask(__name__)
​
@app.route('/heatmap')
def heatmap():
    # 生成模拟数据
    hours = 24
    days = 7
    z = np.random.randint(10, 30, size=(days, hours))
    
    data = go.Heatmap(
        z=z,
        x=[f'{i}:00' for i in range(24)],
        y=['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
        colorscale='Viridis'
    )
​
    layout = go.Layout(
        title='一周温度变化热力图',
        xaxis=dict(title='小时'),
        yaxis=dict(title='星期')
    )
​
    fig = go.Figure(data=[data], layout=layout)
    graphJSON = json.dumps(fig, cls=plotly.utils.PlotlyJSONEncoder)
    return render_template('heatmap.html', graphJSON=graphJSON)

对应的heatmap.html模板:

<!DOCTYPE html>
<html>
<head>
    <title>Plotly热力图示例</title>
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
    <div id="chart" style="width:100%;height:600px;"></div>
    <script>
        var graphs = {{graphJSON | safe}};
        Plotly.newPlot('chart', graphs);
    </script>
</body>
</html>

这个热力图展示了如何使用Plotly创建复杂的二维数据可视化,非常适合展示时间序列或矩阵形式的数据。

5. 高级应用:结合多个图表

在实际应用中,我们经常需要在一个页面上展示多个相关的图表。下面我们将创建一个仪表板,同时显示多个图表:

import plotly
import plotly.graph_objs as go
import pandas as pd
import numpy as np
import json
​
app = Flask(__name__)
​
def create_bar_chart():
    categories = ['A', 'B', 'C', 'D', 'E']
    values = np.random.randint(10, 100, size=5)
    
    data = go.Bar(x=categories, y=values)
    layout = go.Layout(title='类别分布')
    
    return go.Figure(data=[data], layout=layout)
​
def create_pie_chart():
    labels = ['产品1', '产品2', '产品3', '产品4']
    values = np.random.randint(100, 1000, size=4)
    
    data = go.Pie(labels=labels, values=values)
    layout = go.Layout(title='产品销售占比')
    
    return go.Figure(data=[data], layout=layout)
​
def create_line_chart():
    dates = pd.date_range(start='2023-01-01', end='2023-12-31', freq='M')
    values = np.cumsum(np.random.randn(12))
    
    data = go.Scatter(x=dates, y=values, mode='lines+markers')
    layout = go.Layout(title='月度趋势')
    
    return go.Figure(data=[data], layout=layout)
​
@app.route('/dashboard')
def dashboard():
    bar_chart = create_bar_chart()
    pie_chart = create_pie_chart()
    line_chart = create_line_chart()
    
    charts = {
        'bar': json.dumps(bar_chart, cls=plotly.utils.PlotlyJSONEncoder),
        'pie': json.dumps(pie_chart, cls=plotly.utils.PlotlyJSONEncoder),
        'line': json.dumps(line_chart, cls=plotly.utils.PlotlyJSONEncoder)
    }
    
    return render_template('dashboard.html', charts=charts)       

对应的dashboard.html模板:

<!DOCTYPE html>
<html>
<head>
    <title>数据可视化仪表板</title>
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
    <style>
        .chart-container {
            width: 45%;
            height: 400px;
            display: inline-block;
            margin: 10px;
        }
    </style>
</head>
<body>
    <h1>数据可视化仪表板</h1>
    <div class="chart-container" id="bar-chart"></div>
    <div class="chart-container" id="pie-chart"></div>
    <div class="chart-container" id="line-chart"></div>
​
    <script>
        var barChart = JSON.parse({{ charts.bar | tojson | safe }});
        var pieChart = JSON.parse({{ charts.pie | tojson | safe }});
        var lineChart = JSON.parse({{ charts.line | tojson | safe }});
​
        Plotly.newPlot('bar-chart', barChart.data, barChart.layout);
        Plotly.newPlot('pie-chart', pieChart.data, pieChart.layout);
        Plotly.newPlot('line-chart', lineChart.data, lineChart.layout);
    </script>
</body>
</html>

这个仪表板示例展示了如何在一个页面中组合多个图表,为用户提供全面的数据概览。

6. 数据驱动的动态可视化

在实际应用中,我们通常需要处理大量实时更新的数据。下面我们将创建一个股票价格实时监控系统,展示如何使用Flask和WebSocket来实现实时数据可视化。

首先,安装必要的库:

pip install flask-socketio

然后,创建以下Python文件:

from flask import Flask, render_template
from flask_socketio import SocketIO
import json
import random
import time
from threading import Thread
​
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
​
def generate_stock_data():
    stocks = ['AAPL', 'GOOGL', 'MSFT', 'AMZN']
    while True:
        data = {stock: random.randint(100, 200) for stock in stocks}
        socketio.emit('stock_update', json.dumps(data))
        time.sleep(1)
​
@app.route('/')
def index():
    return render_template('stock_monitor.html')
​
if __name__ == '__main__':
    Thread(target=generate_stock_data).start()
    socketio.run(app, debug=True)

创建对应的stock_monitor.html模板:

<!DOCTYPE html>
<html>
<head>
    <title>实时股票价格监控</title>
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.js"></script>
</head>
<body>
    <div id="chart" style="width:100%;height:600px;"></div>
​
    <script>
        var socket = io();
        var time = new Date();
​
        var trace1 = {x: [time], y: [0], name: 'AAPL', mode: 'lines+markers'};
        var trace2 = {x: [time], y: [0], name: 'GOOGL', mode: 'lines+markers'};
        var trace3 = {x: [time], y: [0], name: 'MSFT', mode: 'lines+markers'};
        var trace4 = {x: [time], y: [0], name: 'AMZN', mode: 'lines+markers'};
​
        var data = [trace1, trace2, trace3, trace4];
        var layout = {title: '实时股票价格', xaxis: {title: '时间'}, yaxis: {title: '价格'}};
​
        Plotly.newPlot('chart', data, layout);
​
        socket.on('stock_update', function(msg) {
            var data = JSON.parse(msg);
            var time = new Date();
​
            var update = {
                x: [[time], [time], [time], [time]],
                y: [[data.AAPL], [data.GOOGL], [data.MSFT], [data.AMZN]]
            }
​
            Plotly.extendTraces('chart', update, [0, 1, 2, 3]);
​
            if(time - data[0].x[0] > 30000) {
                Plotly.relayout('chart', {
                    xaxis: {
                        range: [time - 30000, time]
                    }
                });
            }
        });
    </script>
</body>
</html>

这个示例展示了如何使用Flask-SocketIO创建一个实时更新的股票价格监控系统。服务器每秒生成新的股票价格数据并通过WebSocket发送给客户端,客户端接收数据后实时更新图表。

7. 数据处理与可视化的结合

在实际应用中,我们经常需要对原始数据进行处理后再进行可视化。下面我们将创建一个简单的数据分析和可视化系统,展示如何在Flask中结合数据处理和可视化。

from flask import Flask, render_template, request
import pandas as pd
import plotly
import plotly.express as px
import json
​
app = Flask(__name__)
​
@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        file = request.files['file']
        if file:
            df = pd.read_csv(file)
            
            # 数据处理
            df['Total'] = df['Quantity'] * df['UnitPrice']
            top_countries = df.groupby('Country')['Total'].sum().nlargest(10).index.tolist()
            df_top = df[df['Country'].isin(top_countries)]
            
            # 创建图表
            fig1 = px.bar(df_top.groupby('Country')['Total'].sum().reset_index(), 
                          x='Country', y='Total', title='Top 10 Countries by Sales')
            
            fig2 = px.scatter(df_top, x='Quantity', y='UnitPrice', color='Country', 
                              size='Total', hover_data=['Description'],
                              title='Quantity vs Unit Price by Country')
            
            # 将图表转换为JSON
            chart1JSON = json.dumps(fig1, cls=plotly.utils.PlotlyJSONEncoder)
            chart2JSON = json.dumps(fig2, cls=plotly.utils.PlotlyJSONEncoder)
            
            return render_template('analysis.html', chart1JSON=chart1JSON, chart2JSON=chart2JSON)
    
    return render_template('upload.html')

创建upload.html模板:

<!DOCTYPE html>
<html>
<head>
    <title>数据上传</title>
</head>
<body>
    <h1>上传CSV文件进行分析</h1>
    <form method="post" enctype="multipart/form-data">
        <input type="file" name="file" accept=".csv">
        <input type="submit" value="上传并分析">
    </form>
</body>
</html>

创建analysis.html模板:

<!DOCTYPE html>
<html>
<head>
    <title>数据分析结果</title>
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
    <h1>数据分析结果</h1>
    <div id="chart1" style="width:100%;height:500px;"></div>
    <div id="chart2" style="width:100%;height:500px;"></div>
​
    <script>
        var chart1 = JSON.parse({{ chart1JSON | tojson | safe }});
        var chart2 = JSON.parse({{ chart2JSON | tojson | safe }});
​
        Plotly.newPlot('chart1', chart1.data, chart1.layout);
        Plotly.newPlot('chart2', chart2.data, chart2.layout);
    </script>
</body>
</html>

这个示例展示了如何创建一个简单的数据分析和可视化系统。用户可以上传CSV文件,系统会对数据进行简单的处理,然后创建两个图表:一个柱状图显示销售额最高的10个国家,一个散点图显示数量与单价的关系。

8. 结合机器学习的可视化

最后,让我们探索如何将机器学习模型的结果与数据可视化结合起来。我们将创建一个简单的聚类分析可视化系统。

首先,安装必要的库:

pip install scikit-learn

然后,创建以下Python文件:

from flask import Flask, render_template, request
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import plotly.express as px
import json
​
app = Flask(__name__)
​
@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        file = request.files['file']
        if file:
            df = pd.read_csv(file)
            
            # 数据预处理
            features = ['Annual Income (k$)', 'Spending Score (1-100)']
            X = df[features]
            scaler = StandardScaler()
            X_scaled = scaler.fit_transform(X)
            
            # 聚类分析
            kmeans = KMeans(n_clusters=5, random_state=42)
            df['Cluster'] = kmeans.fit_predict(X_scaled)
            
            # 创建图表
            fig = px.scatter(df, x='Annual Income (k$)', y='Spending Score (1-100)', 
                             color='Cluster', hover_data=['Age', 'Gender'],
                             title='Customer Segmentation')
            
            # 将图表转换为JSON
            chartJSON = json.dumps(fig, cls=plotly.utils.PlotlyJSONEncoder)
            
            return render_template('cluster_result.html', chartJSON=chartJSON)
    
    return render_template('upload_for_clustering.html')

创建upload_for_clustering.html模板:

<!DOCTYPE html>
<html>
<head>
    <title>上传数据进行聚类分析</title>
</head>
<body>
    <h1>上传CSV文件进行聚类分析</h1>
    <form method="post" enctype="multipart/form-data">
        <input type="file" name="file" accept=".csv">
        <input type="submit" value="上传并分析">
    </form>
</body>
</html>

创建cluster_result.html模板:

<!DOCTYPE html>
<html>
<head>
    <title>聚类分析结果</title>
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
    <h1>聚类分析结果</h1>
    <div id="chart" style="width:100%;height:600px;"></div>
​
    <script>
        var chart = JSON.parse({{ chartJSON | tojson | safe }});
        Plotly.newPlot('chart', chart.data, chart.layout);
    </script>
</body>
</html>

这个示例展示了如何创建一个简单的聚类分析可视化系统。用户上传包含客户数据的CSV文件后,系统会使用K-means算法进行聚类分析,然后创建一个散点图来可视化聚类结果。

9. 总结

通过这些详细的示例,我们展示了Flask模板在数据可视化中的多种应用场景:

  1. 基础的静态图表生成

  2. 使用Charts.js创建交互式图表

  3. 使用Plotly创建高级交互式可视化

  4. 创建包含多个图表的仪表板

  5. 实现实时数据的动态可视化

  6. 结合数据处理和可视化

  7. 将机器学习模型的结果可视化

Flask的灵活性使得它能够适应各种数据可视化需求,从简单的静态图表到复杂的交互式可视化,再到实时数据的动态展示。通过合理使用模板系统,我们可以将后端的数据处理逻辑与前端的展示逻辑分离,提高代码的可维护性和可扩展性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记某次攻防演练:大战UEditor并突破

前言 最近参与某次攻防演练&#xff0c;通过前期信息收集&#xff0c;发现某靶标单位存在某域名备案。 通过fofa搜索子域名站点&#xff0c;发现存在一个子域名的61000端口开放着一个后台&#xff0c;于是开始进行渗透。 目录扫描 进行目录扫描吗&#xff0c;发现/bin.rar路径…

Vue3实现点击按钮实现文字变色

1.动态样式实现 1.1核心代码解释&#xff1a; class"power-station-perspective-item-text"&#xff1a; 为这个 span 元素添加了一个 CSS 类&#xff0c;以便对其样式进行定义。 click"clickItem(item.id)"&#xff1a; 这是一个 Vue 事件绑定。当用户点…

Springboot与xxl-job

一、下载xxl-job项目 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 从GitHub上面将项目clone下来&#xff0c;如果网络问题导致速度慢也可以从Gitee上面拉…

Apache POI Excel 处理最佳实践

1、需求背景 问题的背景是在需求设计的时候 &#xff0c;我们在业务专家的配合下设计了一些表&#xff0c;但是为了方便的和他们讨论我们把表结构的描述通过Excel文件的方式记录了下来&#xff0c;然后我们需要根据excel文件中的内容生成对应的DDL。今天就给大家分享一下我们的…

python-求出 e 的值

[题目描述] 利用公式 e11/1!1/2!1/3!⋯1/&#x1d45b;!&#xff0c;求 e 的值&#xff0c;要求保留小数点后 10 位。输入&#xff1a; 输入只有一行&#xff0c;该行包含一个整数 n&#xff0c;表示计算 e 时累加到1/n!。输出&#xff1a; 输出只有一行&#xff0c;该行包含计…

解锁数据资产的无限潜能:深入探索创新的数据分析技术,挖掘其在实际应用场景中的广阔价值,助力企业发掘数据背后的深层信息,实现业务的持续增长与创新

目录 一、引言 二、创新数据分析技术的发展 1、大数据分析技术 2、人工智能与机器学习 3、可视化分析技术 三、创新数据分析技术在实际应用场景中的价值 1、市场洞察与竞争分析 2、客户细分与个性化营销 3、业务流程优化与风险管理 4、产品创新与研发 四、案例分析 …

单片机的学习(15)--LCD1602

LCD1602 14.1LCD1602的基础知识1.LCD1602介绍2.引脚及应用电路3.内部结构框图4.时序结构5.LCD1602指令集6.字符值7.LCD1602操作流程 14.2LCD1602功能函数代码1.显示一个字符&#xff08;1&#xff09;工程目录&#xff08;2&#xff09;main.c函数&#xff08;3&#xff09;LCD…

mysql8.0-学习

文章目录 mysql8.0基础知识-学习安装mysql_8.0登录mysql8.0的体系结构与管理体系结构图连接mysqlmysql8.0的 “新姿势” mysql的日常管理用户安全权限练习查看用户的权限回收:revoke角色 mysql的多种连接方式socket显示系统中当前运行的所有线程 tcp/ip客户端工具基于SSL的安全…

error: Sandbox: rsync.samba in Xcode project

在Targets 的 Build Settings 搜索&#xff1a;User script sandboxing 设置为NO

什么是TOGAF?TOGAF应用场景有哪些?TOGAF优缺点

一、什么是TOGAF&#xff1f; TOGAF&#xff0c;全称The Open Group Architecture Framework&#xff0c;即开放组体系结构框架&#xff0c;是由国际开放标准组织The Open Group制定的一套企业架构&#xff08;Enterprise Architecture, EA&#xff09;框架。 The TOGAF Libra…

Mysql基本知识点

1.数据库的基本操作 显示当前的数据库 show databases;创建一个数据库 直接创建数据库 create database 数据库名字;如果系统没有 test2 的数据库&#xff0c;则创建一个名叫 test2 的数据库&#xff0c;如果有则不创建 create database if not exists test2;如果系统没有 db…

在navicat对mysql声明无符号字段

1.无符号设置 在 MySQL 中&#xff0c;我们可以使用 UNSIGNED 属性来设置列的无符号属性&#xff0c;这意味着该列只能存储非负整数值。对于一些需要存储正整数的列&#xff0c;比如年龄、数量等&#xff0c;使用 UNSIGNED 属性可以提高数据存储和查询的效率&#xff0c;并且能…

【启明智显分享】乐鑫ESP32-S3R8方案2.8寸串口屏:高性能低功耗,WIFI/蓝牙无线通信

近年来HMI已经成为大量应用聚焦的主题&#xff0c;在消费类产品通过创新的HMI设计带来增强的连接性和更加身临其境的用户体验之际&#xff0c;工业产品却仍旧在采用物理接口。这些物理接口通常依赖小型显示器或是简单的LED&#xff0c;通过简单的机电开关或按钮来实现HMI交互。…

【云原生】Prometheus 使用详解

目录 一、前言 二、服务监控概述 2.1 什么是微服务监控 2.2 微服务监控指标 2.3 微服务监控工具 三、Prometheus概述 3.1 Prometheus是什么 3.2 Prometheus 特点 3.3 Prometheus 架构图 3.3.1 Prometheus核心组件 3.3.2 Prometheus 工作流程 3.4 Prometheus 应用场景…

代码托管服务:GitHub、GitLab、Gitee

目录 引言GitHub&#xff1a;全球最大的代码托管平台概述功能特点适用场景 GitLab&#xff1a;一体化的开发平台概述功能特点适用场景 Gitee&#xff08;码云&#xff09;&#xff1a;中国本土化的代码托管服务概述功能特点适用场景 功能对比结论 引言 在现代软件开发中&#…

江协科技51单片机学习- p21 LED点阵屏(8*8)

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

15.数据库简介+MySQl使用+SQL语句

文章目录 数据库简述一.数据库简介DB1.定义:2.DBMS数据库管理系统3.数据库分类 二.MySQL的安装1.安装步骤2.MySQL数据库图形管理工具3.mysql程序常用命令4.MySQL字符集及字符序5.Navicat快捷键操作 三.MySQL数据库基本操作 .........................................表管理一.…

Jetson系列机载电脑创建热点模式配置方法

Jetson nano为例—— 创建热点模式配置方法 1.1、新建一个 WiFi 在屏幕右上角找到网络图标&#xff0c;点击后选择“Edit Connections”选项&#xff0c;进入选择网络连接页面&#xff0c;然后点击左下角加号&#xff0c;新建一个连接&#xff0c;类型选择 WiFi 后点击 “cre…

【面试系列】数据工程师高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

Spark学习3.0

目录 10.3.4 Spark运行原理 1.设计背景 2.RDD概念 3.RDD特性 4.RDD之间的依赖关系 窄依赖和宽依赖 5.Stage的划分 Stage的类型包括两种&#xff1a;ShuffleMapStage和ResultStage 6.RDD运行过程 10.3.4 Spark运行原理 1.设计背景 许多 迭代式算法&#xff08;比如机器学习、图…