最新资讯

  • 在浏览器里运行Python不是梦-Pyodide

在浏览器里运行Python不是梦-Pyodide

2026-02-02 08:26:38 栏目:最新资讯 4 阅读

文章目录

  • Python运行在浏览器
    • 梦想成真
    • Pyodide简介
    • 综合例子(调用numpy等科学计算库)

Python运行在浏览器

梦想成真

We have abandoned ourselves to developing and deploying Python applications across various operating systems for the last two years, drawn by its abundant libraries, straightforward syntax, and cross-platform compatibility. Our work spans diverse areas including AI and data science projects, software maintenance and testing, web development, database server management, IoT monitoring, and Android applications.
We have long thought that Python running as freely in the web browser as JavaScript does seemed just a dream, because although a few open-source solutions exist to achieve this goal, they have several defects.
在过去的两年里,我们全身心投入到在各种操作系统上开发和部署Python应用的工作中,这一切源于其丰富的库资源、简洁直观的语法以及卓越的跨平台兼容性。我们的工作横跨多个领域,涵盖人工智能与数据科学项目、软件维护与测试、网页开发、数据库服务器管理、物联网监控以及安卓应用开发。

长久以来,我们始终认为Python能在网页浏览器中像JavaScript一样自由运行似乎只是一个遥不可及的梦想——虽然已有若干开源解决方案试图实现这一目标,但它们都存在不少缺陷。

Pyodide简介

Pyodide is a WebAssembly-based Python runtime that runs directly in web browsers and Node.js. It enables users to install and run both pure Python packages and those with compiled extensions via micropip. Key scientific libraries like NumPy, pandas, and scikit-learn are fully supported. The platform features seamless bidirectional interoperability between JavaScript and Python, including error handling and async/await support. When running in browsers, Pyodide provides complete access to Web APIs for full web integration.
Pyodide是一个基于WebAssembly的Python运行时,可以直接在Web浏览器和Node.js中运行。它支持用户通过micropip安装和运行纯Python包以及带有编译扩展的包。NumPy、pandas和scikit-learn等关键科学计算库均获得完整支持。该平台具备JavaScript与Python之间无缝的双向互操作性,包括错误处理和async/await支持。在浏览器中运行时,Pyodide可完全访问Web API,实现全面的网络集成。

综合例子(调用numpy等科学计算库)

DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Pyodide 中文图表 - 修复字体问题title>
    <script src="https://cdn.jsdelivr.net/pyodide/v0.25.0/full/pyodide.js">script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body {
            font-family: 'Microsoft YaHei', '微软雅黑', sans-serif;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            min-height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            padding: 20px;
        }
        .container {
            width: 100%;
            max-width: 1400px;
            background: white;
            border-radius: 20px;
            box-shadow: 0 20px 40px rgba(0,0,0,0.1);
            overflow: hidden;
        }
        header {
            background: linear-gradient(90deg, #2c3e50 0%, #4a6491 100%);
            color: white;
            padding: 30px;
            text-align: center;
        }
        h1 {
            font-size: 2.8rem;
            margin-bottom: 10px;
            font-weight: bold;
        }
        .subtitle {
            font-size: 1.3rem;
            opacity: 0.9;
            margin-bottom: 20px;
        }
        .content {
            padding: 40px;
        }
        .controls {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 20px;
            margin-bottom: 40px;
        }
        .btn {
            background: linear-gradient(90deg, #4776E6 0%, #8E54E9 100%);
            color: white;
            border: none;
            padding: 18px 25px;
            border-radius: 12px;
            font-size: 1.2rem;
            cursor: pointer;
            transition: all 0.3s ease;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 10px;
            font-weight: bold;
        }
        .btn:hover {
            transform: translateY(-3px);
            box-shadow: 0 10px 20px rgba(0,0,0,0.2);
        }
        .btn:active {
            transform: translateY(0);
        }
        .btn:disabled {
            background: #cccccc;
            cursor: not-allowed;
            transform: none;
            box-shadow: none;
            opacity: 0.7;
        }
        #status {
            padding: 20px;
            margin: 30px 0;
            border-radius: 12px;
            text-align: center;
            font-size: 1.1rem;
            font-weight: bold;
        }
        .loading {
            background: linear-gradient(90deg, #e3f2fd, #bbdefb);
            color: #1565c0;
            border-left: 6px solid #2196f3;
        }
        .success {
            background: linear-gradient(90deg, #e8f5e9, #c8e6c9);
            color: #2e7d32;
            border-left: 6px solid #4caf50;
        }
        .error {
            background: linear-gradient(90deg, #ffebee, #ffcdd2);
            color: #c62828;
            border-left: 6px solid #f44336;
        }
        #plotContainer {
            min-height: 700px;
            border: 3px dashed #e0e0e0;
            border-radius: 15px;
            background: #f8f9fa;
            display: flex;
            justify-content: center;
            align-items: center;
            padding: 30px;
            margin-bottom: 30px;
            position: relative;
        }
        #plotContainer img {
            max-width: 100%;
            max-height: 650px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.15);
            border-radius: 10px;
            border: 1px solid #ddd;
        }
        .chart-info {
            background: linear-gradient(90deg, #f8f9fa, #e9ecef);
            padding: 25px;
            border-radius: 12px;
            margin-top: 30px;
            border-left: 5px solid #4b6cb7;
        }
        .chart-info h3 {
            color: #2c3e50;
            margin-bottom: 15px;
            font-size: 1.5rem;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        .chart-info p {
            margin: 8px 0;
            line-height: 1.8;
            font-size: 1.1rem;
        }
        .info-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 15px;
            margin-top: 20px;
        }
        .info-item {
            background: white;
            padding: 15px;
            border-radius: 8px;
            border-left: 4px solid #667eea;
        }
        footer {
            text-align: center;
            padding: 25px;
            color: #666;
            border-top: 1px solid #eee;
            background: #f8f9fa;
            font-size: 1rem;
        }
        .font-loading {
            font-size: 0.9rem;
            color: #666;
            margin-top: 10px;
        }
        @media (max-width: 768px) {
            .container {
                margin: 10px;
                border-radius: 15px;
            }
            header {
                padding: 20px;
            }
            h1 {
                font-size: 2rem;
            }
            .content {
                padding: 20px;
            }
            .controls {
                grid-template-columns: 1fr;
            }
            .btn {
                padding: 15px;
                font-size: 1.1rem;
            }
            #plotContainer {
                min-height: 500px;
                padding: 15px;
            }
        }
    style>
    
    
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700&display=swap" rel="stylesheet">
head>
<body>
    <div class="container">
        <header>
            <h1>🎨 Python + Matplotlib 中文图表h1>
            <div class="subtitle">在浏览器中运行 Python,完美支持中文显示div>
        header>
        
        <div class="content">
            <div class="controls">
                <button class="btn" onclick="initPyodide()" id="btnInit">
                    <span>🚀span> 初始化环境
                button>
                <button class="btn" onclick="createChart1()" id="btnChart1" disabled>
                    <span>📈span> 正弦函数图
                button>
                <button class="btn" onclick="createChart2()" id="btnChart2" disabled>
                    <span>🎯span> 散点分布图
                button>
                <button class="btn" onclick="createChart3()" id="btnChart3" disabled>
                    <span>📊span> 销售柱状图
                button>
                <button class="btn" onclick="createChart4()" id="btnChart4" disabled>
                    <span>🎨span> 多图对比
                button>
            div>
            
            <div id="status" class="loading">
                请点击"初始化环境"按钮开始
            div>
            
            <div id="plotContainer">
                <div style="text-align: center; color: #666;">
                    <h3 style="margin-bottom: 15px;">👆 点击上方按钮生成图表h3>
                    <p>图表将在这里显示p>
                    <p class="font-loading">正在加载环境...p>
                div>
            div>
            
            <div id="chartInfo" class="chart-info">
                <h3><span>📋span> 图表信息h3>
                <p>等待生成图表...p>
            div>
        div>
        
        <footer>
            <div style="display: flex; justify-content: space-between; align-items: center;">
                <div>
                    <p style="margin: 0;">
                        © <script>document.write(new Date().getFullYear())script> 
                        Pyodide 学习项目
                    p>
                    <p style="margin: 5px 0 0 0; font-size: 0.9rem; color: #888;">
                        技术栈: HTML5 + JavaScript + Pyodide + Matplotlib
                    p>
                div>
                <div style="text-align: right;">
                    <p style="margin: 0;">
                        <a href="https://pyodide.org" target="_blank" style="color: #666; text-decoration: none;">
                            Pyodide 官网
                        a> | 
                        <a href="https://matplotlib.org" target="_blank" style="color: #666; text-decoration: none;">
                            Matplotlib 文档
                        a>
                    p>
                    <p style="margin: 5px 0 0 0; font-size: 0.9rem; color: #888;">
                        本页面完全在浏览器端运行
                    p>
                div>
            div>
        footer>
    div>

    <script>
        let pyodide = null;
        let isInitialized = false;
        
        async function initPyodide() {
            try {
                updateStatus('第一步:正在加载 Pyodide 环境... (约 15-25 秒)', 'loading');
                disableAllButtons(true);
                
                // 加载 Pyodide
                pyodide = await loadPyodide({
                    indexURL: "https://cdn.jsdelivr.net/pyodide/v0.25.0/full/"
                });
                
                updateStatus('第二步:正在安装基础 Python 包...', 'loading');
                
                // 安装基础包
                await pyodide.loadPackage(["numpy", "matplotlib", "scipy"]);
                
                updateStatus('✅ 环境初始化完成!现在可以生成图表了。', 'success');
                enableChartButtons();
                isInitialized = true;
                
                // 自动创建第一个图表
                setTimeout(() => createChart1(), 500);
                
            } catch (error) {
                updateStatus(`❌ 初始化失败: ${error.message}`, 'error');
                console.error("初始化错误:", error);
            }
        }
        
        async function createChart1() {
            if (!checkInitialized()) return;
            
            try {
                updateStatus('正在生成正弦函数图表...', 'loading');
                disableChartButtons(true);
                
                await pyodide.runPythonAsync(`
import matplotlib.pyplot as plt
import numpy as np
import io
import base64
from js import document
import matplotlib

# 方法1:使用简单的字体设置(避免复杂字体问题)
plt.rcParams['font.sans-serif'] = ['DejaVu Sans', 'Arial Unicode MS', 'Arial']
plt.rcParams['axes.unicode_minus'] = False

# 方法2:如果上述字体不可用,使用纯英文标签
use_chinese = False  # 暂时禁用中文,避免方框

# 创建数据
x = np.linspace(0, 4 * np.pi, 200)
y = np.sin(x)

# 创建图表
fig, ax = plt.subplots(figsize=(12, 7), dpi=100)

# 绘制图表
ax.plot(x, y, color='#FF6B6B', linewidth=3.5, label='Sine Function: y = sin(x)')
ax.fill_between(x, y, alpha=0.15, color='#FF6B6B')

# 设置标题和标签(使用英文避免字体问题)
if use_chinese:
    ax.set_title('正弦函数图像演示', fontsize=18, fontweight='bold', pad=20)
    ax.set_xlabel('角度 (弧度)', fontsize=14, labelpad=10)
    ax.set_ylabel('函数值 y', fontsize=14, labelpad=10)
else:
    ax.set_title('Sine Function Demonstration', fontsize=18, fontweight='bold', pad=20)
    ax.set_xlabel('Angle (radians)', fontsize=14, labelpad=10)
    ax.set_ylabel('Function Value y', fontsize=14, labelpad=10)

ax.grid(True, alpha=0.3, linestyle='--', linewidth=0.5)
ax.legend(loc='upper right', fontsize=12, frameon=True, shadow=True)

# 添加特殊点标注
special_points = [0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi]
special_labels = ['0', 'π/2', 'π', '3π/2', '2π']
special_y = np.sin(special_points)

ax.scatter(special_points, special_y, color='#4ECDC4', s=150, zorder=5, 
           edgecolors='black', linewidth=2, label='Key Points')

for i, (point, y_val, label) in enumerate(zip(special_points, special_y, special_labels)):
    ax.annotate(f'{label}
({y_val:.2f})', 
                xy=(point, y_val),
                xytext=(10, 30 if i % 2 == 0 else -40),
                textcoords='offset points',
                fontsize=11,
                bbox=dict(boxstyle="round,pad=0.3", facecolor="white", alpha=0.8),
                arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=0.2"))

# 设置坐标轴范围
ax.set_xlim(-0.5, 4*np.pi + 0.5)
ax.set_ylim(-1.2, 1.2)

# 添加网格和背景
ax.set_facecolor('#f8f9fa')
fig.patch.set_facecolor('white')

# 将图表保存为 base64 图片
buf = io.BytesIO()
plt.savefig(buf, format='png', dpi=150, bbox_inches='tight', 
            facecolor=fig.get_facecolor(), edgecolor='none',
            transparent=False)
buf.seek(0)
img_str = base64.b64encode(buf.read()).decode('utf-8')
plt.close(fig)

# 显示图片
plot_div = document.getElementById("plotContainer")
plot_div.innerHTML = f'''
    

✅ 正弦函数图表生成成功

''' # 更新信息 info_div = document.getElementById("chartInfo") info_div.innerHTML = f'''

📋 正弦函数图表信息

函数表达式:
y = sin(x)
定义域:
x ∈ [0, 4π] ≈ [0, 12.57]
值域:
y ∈ [{y.min():.3f}, {y.max():.3f}]
周期:
2π ≈ 6.283
数据点数:
{len(x)} 个
图表尺寸:
12×7 英寸,150 DPI
'''
`
); updateStatus('✅ 正弦函数图表生成成功!', 'success'); disableChartButtons(false); } catch (error) { updateStatus(`❌ 生成图表失败: ${error.message}`, 'error'); console.error("图表错误:", error); disableChartButtons(false); } } async function createChart2() { if (!checkInitialized()) return; try { updateStatus('正在生成散点分布图...', 'loading'); disableChartButtons(true); const seed = Math.floor(Math.random() * 1000); await pyodide.runPythonAsync(` import matplotlib.pyplot as plt import numpy as np import io import base64 from js import document # 设置字体 plt.rcParams['font.sans-serif'] = ['DejaVu Sans', 'Arial'] plt.rcParams['axes.unicode_minus'] = False # 设置随机种子 np.random.seed(${seed}) # 生成数据 n_points = 200 x = np.random.randn(n_points) * 2.5 y = np.random.randn(n_points) * 2.5 colors = np.random.rand(n_points) sizes = 30 + 250 * np.random.rand(n_points) # 创建图表 fig, ax = plt.subplots(figsize=(12, 7), dpi=100) # 设置标题(使用英文) ax.set_title('Random Scatter Distribution', fontsize=18, fontweight='bold', pad=20) ax.set_xlabel('X Coordinate', fontsize=14, labelpad=10) ax.set_ylabel('Y Coordinate', fontsize=14, labelpad=10) # 绘制散点 scatter = ax.scatter(x, y, c=colors, s=sizes, alpha=0.7, cmap='plasma', edgecolors='white', linewidth=0.8) # 添加网格 ax.grid(True, alpha=0.3, linestyle='--') # 添加颜色条 cbar = plt.colorbar(scatter) cbar.set_label('Color Intensity', fontsize=12) # 添加统计信息文本框 stats_text = f'''Statistics: • Data Points: {n_points} • X Mean: {x.mean():.3f} • Y Mean: {y.mean():.3f} • Correlation: {np.corrcoef(x, y)[0,1]:.3f}''' ax.text(0.02, 0.98, stats_text, transform=ax.transAxes, fontsize=11, verticalalignment='top', bbox=dict(boxstyle='round', facecolor='white', alpha=0.8)) # 设置背景色 ax.set_facecolor('#f5f5f5') fig.patch.set_facecolor('white') # 保存图表 buf = io.BytesIO() plt.savefig(buf, format='png', dpi=150, bbox_inches='tight') buf.seek(0) img_str = base64.b64encode(buf.read()).decode('utf-8') plt.close(fig) # 显示 plot_div = document.getElementById("plotContainer") plot_div.innerHTML = f'''

✅ 散点图生成成功

''' # 更新信息 info_div = document.getElementById("chartInfo") info_div.innerHTML = f'''

📋 散点图统计信息

随机种子:
${seed}
数据规模:
{n_points} 个点
X 统计:
均值={x.mean():.3f}, 标准差={x.std():.3f}
Y 统计:
均值={y.mean():.3f}, 标准差={y.std():.3f}
数据范围:
X:[{x.min():.2f}, {x.max():.2f}]
Y:[{y.min():.2f}, {y.max():.2f}]
相关性:
{np.corrcoef(x, y)[0,1]:.3f}
'''
`
); updateStatus('✅ 散点图生成成功!', 'success'); disableChartButtons(false); } catch (error) { updateStatus(`❌ 生成图表失败: ${error.message}`, 'error'); console.error("图表错误:", error); disableChartButtons(false); } } async function createChart3() { if (!checkInitialized()) return; try { updateStatus('正在生成销售柱状图...', 'loading'); disableChartButtons(true); await pyodide.runPythonAsync(` import matplotlib.pyplot as plt import numpy as np import io import base64 from js import document # 设置字体 plt.rcParams['font.sans-serif'] = ['DejaVu Sans', 'Arial'] plt.rcParams['axes.unicode_minus'] = False # 创建销售数据(使用英文月份) months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] sales = np.array([85, 67, 92, 78, 88, 95, 110, 105, 98, 120, 115, 130]) # 创建图表 fig, ax = plt.subplots(figsize=(14, 8), dpi=100) # 使用渐变颜色 colors = plt.cm.viridis(np.linspace(0.2, 0.8, len(months))) # 绘制柱状图 bars = ax.bar(months, sales, color=colors, edgecolor='black', linewidth=1.5, alpha=0.8) # 添加数值标签 for bar in bars: height = bar.get_height() ax.text(bar.get_x() + bar.get_width()/2., height + 1.5, f'{height:.0f}', ha='center', va='bottom', fontsize=11, fontweight='bold') # 设置标题和标签(英文) ax.set_title('2024 Annual Sales Data Analysis', fontsize=20, fontweight='bold', pad=25) ax.set_xlabel('Month', fontsize=16, labelpad=15) ax.set_ylabel('Sales (10k yuan)', fontsize=16, labelpad=15) # 添加平均线 avg_sales = sales.mean() ax.axhline(y=avg_sales, color='red', linestyle='--', linewidth=3, alpha=0.7, label=f'Average: {avg_sales:.1f}') # 旋转x轴标签 plt.setp(ax.get_xticklabels(), rotation=45, ha='right', rotation_mode='anchor') # 添加网格和背景 ax.grid(True, alpha=0.3, axis='y', linestyle='--') ax.set_facecolor('#f8f9fa') fig.patch.set_facecolor('white') # 设置y轴范围 ax.set_ylim(0, max(sales) * 1.15) # 添加图例 ax.legend(loc='upper left', fontsize=12, frameon=True, shadow=True) # 添加总销售额标注 total_sales = sales.sum() ax.text(0.02, 0.98, f'Total Sales: {total_sales:.0f}', transform=ax.transAxes, fontsize=14, fontweight='bold', verticalalignment='top', bbox=dict(boxstyle='round', facecolor='gold', alpha=0.8)) # 保存图表 buf = io.BytesIO() plt.savefig(buf, format='png', dpi=150, bbox_inches='tight', facecolor=fig.get_facecolor()) buf.seek(0) img_str = base64.b64encode(buf.read()).decode('utf-8') plt.close(fig) # 显示 plot_div = document.getElementById("plotContainer") plot_div.innerHTML = f'''

✅ 销售柱状图生成成功

''' # 更新信息(中文信息可以正常显示,因为这是HTML部分) max_month = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'][sales.argmax()] min_month = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'][sales.argmin()] growth = ((sales[-1] - sales[0]) / sales[0]) * 100 info_div = document.getElementById("chartInfo") info_div.innerHTML = f'''

📋 销售数据分析报告

年度总销售额:
{total_sales:,.0f} 万元
月平均销售额:
{avg_sales:.1f} 万元
最高销售额月份:
{max_month} ({sales.max():.0f}万)
最低销售额月份:
{min_month} ({sales.min():.0f}万)
年度增长率:
{growth:.1f}%
最佳季度:
第四季度
'''
`
); updateStatus('✅ 销售柱状图生成成功!', 'success'); disableChartButtons(false); } catch (error) { updateStatus(`❌ 生成图表失败: ${error.message}`, 'error'); console.error("图表错误:", error); disableChartButtons(false); } } async function createChart4() { if (!checkInitialized()) return; try { updateStatus('正在生成多图对比展示...', 'loading'); disableChartButtons(true); await pyodide.runPythonAsync(` import matplotlib.pyplot as plt import numpy as np import io import base64 from js import document from scipy.stats import norm # 设置字体 plt.rcParams['font.sans-serif'] = ['DejaVu Sans', 'Arial'] plt.rcParams['axes.unicode_minus'] = False # 创建多子图 fig = plt.figure(figsize=(16, 12), dpi=100) fig.suptitle('Multi-Chart Comparison', fontsize=22, fontweight='bold', y=0.98) # 子图1:函数对比 ax1 = plt.subplot(2, 2, 1) x = np.linspace(0, 2 * np.pi, 100) ax1.plot(x, np.sin(x), 'b-', linewidth=3, label='Sine Function') ax1.plot(x, np.cos(x), 'r--', linewidth=3, label='Cosine Function') ax1.set_title('Trigonometric Functions', fontsize=16, fontweight='bold') ax1.set_xlabel('Angle (radians)', fontsize=12) ax1.set_ylabel('Function Value', fontsize=12) ax1.grid(True, alpha=0.3) ax1.legend(loc='best') ax1.set_facecolor('#f0f8ff') # 子图2:柱状图对比 ax2 = plt.subplot(2, 2, 2) categories = ['Product A', 'Product B', 'Product C', 'Product D', 'Product E'] values1 = [85, 92, 78, 88, 95] values2 = [70, 85, 90, 82, 88] x_pos = np.arange(len(categories)) width = 0.35 ax2.bar(x_pos - width/2, values1, width, label='First Half', color='skyblue', edgecolor='black') ax2.bar(x_pos + width/2, values2, width, label='Second Half', color='lightcoral', edgecolor='black') ax2.set_title('Product Sales Comparison', fontsize=16, fontweight='bold') ax2.set_xlabel('Product Type', fontsize=12) ax2.set_ylabel('Sales (thousand units)', fontsize=12) ax2.set_xticks(x_pos) ax2.set_xticklabels(categories) ax2.legend() ax2.grid(True, alpha=0.3, axis='y') ax2.set_facecolor('#fff5ee') # 子图3:饼图 ax3 = plt.subplot(2, 2, 3) labels = ['R&D', 'Marketing', 'Design', 'Service', 'Admin'] sizes = [30, 25, 20, 15, 10] colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#c2c2f0'] explode = (0.05, 0, 0, 0, 0) wedges, texts, autotexts = ax3.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90, textprops={'fontsize': 11}) ax3.set_title('Department Budget Distribution', fontsize=16, fontweight='bold') for autotext in autotexts: autotext.set_color('white') autotext.set_fontweight('bold') ax3.set_facecolor('#f8f8ff') # 子图4:直方图(使用 scipy 的正态分布) ax4 = plt.subplot(2, 2, 4) # 生成正态分布数据 data = np.random.randn(1000) # 绘制直方图 n, bins, patches = ax4.hist(data, bins=30, density=True, alpha=0.7, color='green', edgecolor='black') # 使用 scipy 计算正态分布 PDF x_range = np.linspace(-4, 4, 100) pdf = norm.pdf(x_range, loc=data.mean(), scale=data.std()) ax4.plot(x_range, pdf, 'r-', linewidth=2, label='Normal Distribution Fit') ax4.set_title('Normal Distribution Histogram', fontsize=16, fontweight='bold') ax4.set_xlabel('Value', fontsize=12) ax4.set_ylabel('Frequency', fontsize=12) ax4.grid(True, alpha=0.3) ax4.legend() ax4.set_facecolor('#f0f0f0') # 整体调整 plt.tight_layout(rect=[0, 0.03, 1, 0.95]) fig.patch.set_facecolor('white') # 保存图表 buf = io.BytesIO() plt.savefig(buf, format='png', dpi=150, bbox_inches='tight', facecolor=fig.get_facecolor()) buf.seek(0) img_str = base64.b64encode(buf.read()).decode('utf-8') plt.close(fig) # 显示 plot_div = document.getElementById("plotContainer") plot_div.innerHTML = f'''

✅ 多图对比展示生成成功

''' # 更新信息 info_div = document.getElementById("chartInfo") info_div.innerHTML = f'''

📋 多图表综合信息

图表总数:
4 个不同类型图表
图表类型:
线图、柱状图、饼图、直方图
数据总量:
约 1500+ 个数据点
图表尺寸:
16×12 英寸,150 DPI
技术特点:
使用 scipy 进行统计分析
生成技术:
Pyodide + Matplotlib
'''
`
); updateStatus('✅ 多图对比展示生成成功!', 'success'); disableChartButtons(false); } catch (error) { updateStatus(`❌ 生成图表失败: ${error.message}`, 'error'); console.error("图表错误:", error); disableChartButtons(false); } } // 工具函数 function updateStatus(message, type) { const statusEl = document.getElementById('status'); statusEl.innerHTML = message; statusEl.className = type; } function disableAllButtons(disabled) { ['btnInit', 'btnChart1', 'btnChart2', 'btnChart3', 'btnChart4'].forEach(id => { const btn = document.getElementById(id); if (btn) { btn.disabled = disabled; } }); } function disableChartButtons(disabled) { ['btnChart1', 'btnChart2', 'btnChart3', 'btnChart4'].forEach(id => { const btn = document.getElementById(id); if (btn) { btn.disabled = disabled; } }); } function enableChartButtons() { ['btnChart1', 'btnChart2', 'btnChart3', 'btnChart4'].forEach(id => { const btn = document.getElementById(id); if (btn) { btn.disabled = false; } }); } function checkInitialized() { if (!isInitialized) { alert('请先点击"初始化环境"按钮!'); return false; } return true; }
script> body> html>

运行效果如下:

本文地址:https://www.yitenyun.com/4920.html

搜索文章

Tags

#服务器 #python #pip #conda #ios面试 #ios弱网 #断点续传 #ios开发 #objective-c #ios #ios缓存 #人工智能 #微信 #远程工作 #Trae #IDE #AI 原生集成开发环境 #Trae AI #kubernetes #笔记 #平面 #容器 #linux #学习方法 香港站群服务器 多IP服务器 香港站群 站群服务器 #运维 #学习 #分阶段策略 #模型协议 #银河麒麟高级服务器操作系统安装 #银河麒麟高级服务器V11配置 #设置基础软件仓库时出错 #银河麒高级服务器系统的实操教程 #生产级部署银河麒麟服务系统教程 #Linux系统的快速上手教程 #科技 #深度学习 #自然语言处理 #神经网络 #hadoop #hbase #hive #zookeeper #spark #kafka #flink #华为云 #部署上线 #动静分离 #Nginx #新人首发 #docker #fastapi #html #css #tcp/ip #网络 #qt #C++ #harmonyos #鸿蒙PC #物联网 #websocket #github #git #进程控制 #gemini #gemini国内访问 #gemini api #gemini中转搭建 #Cloudflare #大数据 #职场和发展 #程序员创富 #经验分享 #安卓 #PyTorch #模型训练 #星图GPU #低代码 #爬虫 #音视频 #开源 #kylin #arm #Conda # 私有索引 # 包管理 #ARM服务器 # GLM-4.6V # 多模态推理 #word #umeditor粘贴word #ueditor粘贴word #ueditor复制word #ueditor上传word图片 #数信院生信服务器 #Rstudio #生信入门 #生信云服务器 #飞牛nas #fnos #语言模型 #大模型 #ai #ai大模型 #agent #unity #c# #游戏引擎 #node.js #langchain #数据库 #内网穿透 #cpolar #MobaXterm #ubuntu #ci/cd #jenkins #gitlab #开发语言 #云原生 #iventoy #VmWare #OpenEuler #儿童书籍 #儿童诗歌 #童话故事 #经典好书 #儿童文学 #好书推荐 #经典文学作品 #ssh #flutter #前端 #nginx #后端 #serverless #vscode #mobaxterm #计算机视觉 #diskinfo # TensorFlow # 磁盘健康 #RTP over RTSP #RTP over TCP #RTSP服务器 #RTP #TCP发送RTP #矩阵 #线性代数 #AI运算 #向量 #ide #区块链 #测试用例 #生活 #Harbor #AI编程 #aws #云计算 #centos #svn #c++ #算法 #牛客周赛 #自动化 #ansible #sql #AIGC #agi #分布式 #华为 #android #腾讯云 #Reactor #缓存 #http #项目 #高并发 #java-ee #文心一言 #AI智能体 #多个客户端访问 #IO多路复用 #回显服务器 #TCP相关API #openHiTLS #TLCP #DTLCP #密码学 #商用密码算法 #fabric #postgresql #javascript #vue上传解决方案 #vue断点续传 #vue分片上传下载 #vue分块上传下载 #FTP服务器 #java #jar #Dell #PowerEdge620 #内存 #硬盘 #RAID5 #pytorch #windows #flask #企业开发 #ERP #项目实践 #.NET开发 #C#编程 #编程与数学 #iBMC #UltraISO #microsoft #PyCharm # 远程调试 # YOLOFuse #php #mcu #信息与通信 #程序人生 #科研 #博士 #mysql #鸿蒙 #架构 #安全 #pycharm #网络协议 #jmeter #功能测试 #软件测试 #自动化测试 #内存治理 #django #vue.js #散列表 #哈希算法 #数据结构 #leetcode #风控模型 #决策盲区 #数学建模 #2026年美赛C题代码 #2026年美赛 #dify #spring boot #uni-app #小程序 #notepad++ #es安装 #ecmascript #elementui #rocketmq #golang #redis #Ansible # 自动化部署 # VibeThinker #驱动开发 #Ubuntu服务器 #硬盘扩容 #命令行操作 #VMware #mvp #个人开发 #设计模式 #游戏 #京东云 #性能优化 #web #webdav #DeepSeek #服务器繁忙 #AI #计算机网络 #spring cloud #spring #json #jvm #mmap #nio #课程设计 #蓝桥杯 #prometheus #MCP #MCP服务器 #开源软件 #鸭科夫 #逃离鸭科夫 #鸭科夫联机 #鸭科夫异地联机 #开服 #vllm #Streamlit #Qwen #本地部署 #AI聊天机器人 #阻塞队列 #生产者消费者模型 #服务器崩坏原因 #我的世界 #数据仓库 #c语言 #jetty #LLM #web安全 #vim #gcc #yum #需求分析 #scala #测试工具 #压力测试 #设备驱动 #芯片资料 #网卡 #大模型学习 #AI大模型 #大模型教程 #大模型入门 #adb #全能视频处理软件 #视频裁剪工具 #视频合并工具 #视频压缩工具 #视频字幕提取 #视频处理工具 #阿里云 #Linux #TCP #线程 #线程池 #ffmpeg #ModelEngine #DisM++ # 系统维护 #udp #gpu算力 #语音识别 #深度优先 #DFS #守护进程 #复用 #screen #钉钉 #机器人 #网络安全 #AI论文写作工具 #学术论文创作 #论文效率提升 #MBA论文写作 #企业微信 #信息可视化 #claude code #codex #code cli #ccusage #数据集 #Ascend #MindIE #Android #Bluedroid #智能手机 #everything #超算服务器 #算力 #高性能计算 #仿真分析工作站 #todesk #rabbitmq #protobuf #单片机 #stm32 #嵌入式硬件 #ping通服务器 #读不了内网数据库 #bug菌问答团队 #正则 #正则表达式 #DS随心转 #数码相机 #epoll #高级IO #iphone #debian #AI写作 #asp.net #面试 #claude #机器学习 #程序员 #流量监控 #LoRA # RTX 3090 # lora-scripts #react.js #架构师 #系统架构 #软考 #系统架构师 #1024程序员节 #ddos #fiddler #opencv #数据挖掘 #googlecloud #Canal #MC #几何学 #拓扑学 #链表 #链表的销毁 #链表的排序 #链表倒置 #判断链表是否有环 #银河麒麟 #系统升级 #信创 #国产化 #银河麒麟操作系统 #openssh #华为交换机 #信创终端 #arm开发 #Modbus-TCP #azure #酒店客房管理系统 #毕设 #论文 #编辑器 #金融 #mcp #金融投资Agent #Agent #测试流程 #金融项目实战 #P2P #webrtc #chatgpt #ida #研发管理 #禅道 #禅道云端部署 #mcp server #AI实战 #中间件 #n8n #wsl #L2C #勒让德到切比雪夫 #流程图 #论文阅读 #论文笔记 #毕业设计 #RAID #RAID技术 #磁盘 #存储 #STUN # TURN # NAT穿透 #Coze工作流 #AI Agent指挥官 #多智能体系统 #VS Code调试配置 #vue3 #天地图 #403 Forbidden #天地图403错误 #服务器403问题 #天地图API #部署报错 #unity3d #服务器框架 #Fantasy #elasticsearch #SSH # ProxyJump # 跳板机 #智能路由器 #transformer #凤希AI伴侣 #生信 #java大文件上传 #java大文件秒传 #java大文件上传下载 #java文件传输解决方案 #FL Studio #FLStudio #FL Studio2025 #FL Studio2026 #FL Studio25 #FL Studio26 #水果软件 #journalctl #RAG #全链路优化 #实战教程 #svm #amdgpu #kfd #ROCm #openresty #lua #wordpress #雨云 #LobeChat #vLLM #GPU加速 #电脑 #grafana #里氏替换原则 #SSH Agent Forwarding # PyTorch # 容器化 #幼儿园 #园长 #幼教 #数模美赛 #matlab #SSH反向隧道 # Miniconda # Jupyter远程访问 #asp.net大文件上传 #asp.net大文件上传下载 #asp.net大文件上传源码 #ASP.NET断点续传 #asp.net上传文件夹 #sizeof和strlen区别 #sizeof #strlen #计算数据类型字节数 #计算字符串长度 #abtest #YOLO #建筑缺陷 #红外 #X11转发 #Miniconda #迁移重构 #数据安全 #漏洞 #代码迁移 #SMTP # 内容安全 # Qwen3Guard #流量运营 #用户运营 #ssl #sqlserver #改行学it #创业创新 #oracle #apache #北京百思可瑞教育 #百思可瑞教育 #北京百思教育 #esp32教程 #模版 #函数 #类 #笔试 #ms-swift # 一锤定音 # 大模型微调 #deepseek #机器视觉 #6D位姿 #WEB #risc-v #双指针 #tdengine #时序数据库 #制造 #涛思数据 #cpp #SSH公钥认证 # 安全加固 #laravel #PowerBI #企业 #shell #CPU利用率 #数组 #信号处理 #目标跟踪 #流媒体 #NAS #飞牛NAS #监控 #NVR #EasyNVR #Qwen3-14B # 大模型部署 # 私有化AI #社科数据 #数据分析 #数据统计 #经管数据 #screen 命令 #macos #ESXi #vp9 #支付 #Shiro #反序列化漏洞 #CVE-2016-4437 #远程桌面 #远程控制 #fpga开发 #LVDS #高速ADC #DDR # GLM-TTS # 数据安全 #运营 #React安全 #漏洞分析 #Next.js #bash #振镜 #振镜焊接 #搜索引擎 #llama #ceph #产品经理 #ui #团队开发 #墨刀 #figma #ai编程 #CFD #智慧校园解决方案 #智慧校园一体化平台 #智慧校园选型 #智慧校园采购 #智慧校园软件 #智慧校园专项资金 #智慧校园定制开发 #版本控制 #Git入门 #开发工具 #代码托管 #目标检测 #蓝耘智算 #边缘计算 #MS #Materials #C语言 #个人博客 #HeyGem # 远程访问 # 服务器IP配置 #ONLYOFFICE #MCP 服务器 #嵌入式 #tomcat #前端框架 #嵌入式编译 #ccache #distcc #autosar #cursor #spine #进程 #操作系统 #进程创建与终止 #推荐算法 #ollama #llm #tensorflow #log #RustDesk #IndexTTS 2.0 #本地化部署 #tcpdump #embedding #visual studio code #车辆排放 #SA-PEKS # 关键词猜测攻击 # 盲签名 # 限速机制 #树莓派4b安装系统 #我的世界服务器搭建 #minecraft #paddleocr #OBC #Spring AI #STDIO协议 #Streamable-HTTP #McpTool注解 #服务器能力 #pencil #pencil.dev #设计 #智能一卡通 #门禁一卡通 #梯控一卡通 #电梯一卡通 #消费一卡通 #一卡通 #考勤一卡通 #AI产品经理 #大模型开发 #sqlite #Playbook #AI服务器 #simulink #Triton # CUDA #selenium #求职招聘 #海外服务器安装宝塔面板 #负载均衡 #大语言模型 #长文本处理 #GLM-4 #Triton推理 #重构 #SSH保活 #远程开发 #AB包 #openlayers #bmap #tile #server #vue #简单数论 #埃氏筛法 #openEuler #Hadoop #客户端 #DIY机器人工房 #vuejs #eBPF #homelab #Lattepanda #Jellyfin #Plex #Emby #Kodi #whisper #nacos #银河麒麟aarch64 #uvicorn #uvloop #asgi #event #.net #nas #ssm #信令服务器 #Janus #MediaSoup #状态模式 #TensorRT # Triton # 推理优化 #zabbix #分类 #Jetty # CosyVoice3 # 嵌入式服务器 #若依 #quartz #框架 #Fluentd #Sonic #日志采集 #idm #网站 #截图工具 #批量处理图片 #图片格式转换 #图片裁剪 #C# # REST API # GLM-4.6V-Flash-WEB #万悟 #联通元景 #智能体 #镜像 #maven #intellij-idea #结构体 #TCP服务器 #开发实战 #ThingsBoard MCP #可撤销IBE #服务器辅助 #私钥更新 #安全性证明 #双线性Diffie-Hellman #restful #ajax #Android16 #音频性能实战 #音频进阶 #视频去字幕 #flume #微信小程序 #健身房预约系统 #健身房管理系统 #健身管理系统 #SSE # AI翻译机 # 实时翻译 #零代码平台 #AI开发 #UDP #clickhouse #代理 #5G #平板 #零售 #交通物流 #硬件工程 #智能硬件 #CTF #文生视频 #CogVideoX #AI部署 #gateway #Comate #遛狗 #聚类 #scrapy #OPCUA #环境搭建 #r-tree #聊天小程序 #eclipse #servlet #pandas #matplotlib #arm64 #无人机 #Deepoc #具身模型 #开发板 #未来 #LabVIEW知识 #LabVIEW程序 #labview #LabVIEW功能 #渗透测试 #服务器解析漏洞 #OSS #firefox #UOS #海光K100 #统信 #NFC #智能公交 #服务器计费 #FP-增长 #堡垒机 #安恒明御堡垒机 #windterm #rust #CANN #wpf #串口服务器 #Modbus #MOXA #Fun-ASR # 硬件配置 # 语音识别 #算力一体机 #ai算力服务器 #CUDA #交互 #青少年编程 #逻辑回归 #Proxmox VE #虚拟化 #硬件 # WebUI #自动驾驶 #Rust #部署 #GPU服务器 #8U #硬件架构 #SMP(软件制作平台) #EOM(企业经营模型) #应用系统 #昇腾300I DUO #NPU #idea #intellij idea #vnstat #c++20 #https #项目申报系统 #项目申报管理 #项目申报 #企业项目申报 #JAVA #Java #cosmic #tornado #H5 #跨域 #发布上线后跨域报错 #请求接口跨域问题解决 #跨域请求代理配置 #request浏览器跨域 #运维开发 #opc ua #opc #reactjs #web3 #AutoDL #黑群晖 #虚拟机 #无U盘 #纯小白 #指针 #anaconda #虚拟环境 #SSH跳板机 # Python3.11 #东方仙盟 #游戏机 #JumpServer #API限流 # 频率限制 # 令牌桶算法 #UDP的API使用 #处理器 #ip #1panel #vmware #贪心算法 #Gunicorn #WSGI #Flask #并发模型 #容器化 #Python #性能调优 #teamviewer #pdf #蓝湖 #Axure原型发布 #人脸识别 #人脸核身 #活体检测 #身份认证与人脸对比 #微信公众号 #微PE # GLM # 服务连通性 #学习笔记 #jdk #汇编 #ambari #单元测试 #集成测试 #Socket网络编程 #turn #黑客技术 #网安应急响应 #计算机 # 目标检测 #数据恢复 #视频恢复 #视频修复 #RAID5恢复 #流媒体服务器恢复 #LangGraph #模型上下文协议 #MultiServerMCPC #load_mcp_tools #load_mcp_prompt #muduo库 #typescript #npm #uv #uvx #uv pip #npx #Ruff #pytest #910B #昇腾 #web server #请求处理流程 #框架搭建 #SRS #直播 #milvus #springboot #知识库 #vivado license #CVE-2025-68143 #CVE-2025-68144 #CVE-2025-68145 #html5 #国产PLM #瑞华丽PLM #瑞华丽 #PLM #chrome #RSO #机器人操作系统 #glibc #Anaconda配置云虚拟环境 #MQTT协议 #政务 #集成学习 #结构与算法 #可信计算技术 #winscp #Windows 更新 #扩展屏应用开发 #android runtime #Clawdbot #个人助理 #数字员工 #HBA卡 #RAID卡 #TLS协议 #HTTPS #漏洞修复 #运维安全 # 双因素认证 #powerbi #rustdesk #p2p #连接数据库报错 #Docker #私有化部署 #微服务 #Chat平台 #ARM架构 # IndexTTS 2.0 # 远程运维 #源码 #闲置物品交易系统 #YOLOFuse # Base64编码 # 多模态检测 #IPv6 #DNS #考研 #软件工程 #bootstrap #SPA #单页应用 #web3.py #树莓派 #N8N #系统安全 #ipmitool #BMC #C #海外短剧 #海外短剧app开发 #海外短剧系统开发 #短剧APP #短剧APP开发 #短剧系统开发 #海外短剧项目 #prompt #YOLOv8 # Docker镜像 #麒麟OS #国产开源制品管理工具 #Hadess #一文上手 #swagger #cnn #IndexTTS2 # 阿里云安骑士 # 木马查杀 #Karalon #AI Test #浏览器自动化 #python #mamba #mariadb #计组 #数电 #导航网 #SSH免密登录 #CLI #JavaScript #langgraph.json #CMake #Make #C/C++ #策略模式 # 高并发部署 #log4j #vps #select #Anything-LLM #IDC服务器 #上下文工程 #langgraph #意图识别 #raid #raid阵列 #RK3576 #瑞芯微 #硬件设计 #数据采集 #浏览器指纹 #ESP32 #传感器 #MicroPython #3d #jupyter #电气工程 #PLC # 水冷服务器 # 风冷服务器 #edge #迭代器模式 #观察者模式 #twitter #VoxCPM-1.5-TTS # 云端GPU # PyCharm宕机 #webpack #database #学术写作辅助 #论文创作效率提升 #AI写论文实测 #AI生成 # outputs目录 # 自动化 #翻译 #开源工具 #线性回归 #rdp #能源 #esp32 arduino #mybatis #ComfyUI # 推理服务器 #UDP套接字编程 #UDP协议 #网络测试 #libosinfo #Dify #鲲鹏 #联机教程 #局域网联机 #局域网联机教程 #局域网游戏 #模拟退火算法 #lvs #Host #SSRF #产品运营 #内存接口 # 澜起科技 # 服务器主板 #音乐分类 #音频分析 #ViT模型 #Gradio应用 #鼠大侠网络验证系统源码 #yolov12 #研究生life #文件传输 #电脑文件传输 #电脑传输文件 #电脑怎么传输文件到另一台电脑 #电脑传输文件到另一台电脑 #说话人验证 #声纹识别 #CAM++ #性能 #优化 #RAM #mongodb #windows11 #系统修复 #其他 #PTP_1588 #gPTP #游戏私服 #云服务器 #Windows #RXT4090显卡 #RTX4090 #深度学习服务器 #硬件选型 #gitea #群晖 #音乐 #IntelliJ IDEA #Spring Boot #neo4j #NoSQL #SQL #面向对象 # 代理转发 #taro #echarts #GPU ##租显卡 #进程等待 #wait #waitpid # 服务器IP # 端口7860 # HiChatBox # 离线AI # keep-alive #SMARC #ARM #全文检索 # 公钥认证 # GPU租赁 # 自建服务器 #Claude #VibeVoice # 语音合成 # 云服务器 #clamav #devops #web服务器 #VMWare Tool #MinIO服务器启动与配置详解 #命令模式 #dubbo #H5网页 #网页白屏 #H5页面空白 #资源加载问题 #打包部署后网页打不开 #HBuilderX #A2A #GenAI #插件 #DHCP #C++ UA Server #SDK #跨平台开发 #图像处理 #yolo #心理健康服务平台 #心理健康系统 #心理服务平台 #心理健康小程序 #SSH复用 # 远程开发 #磁盘配额 #存储管理 #文件服务器 #形考作业 #国家开放大学 #系统运维 #自动化运维 #GATT服务器 #蓝牙低功耗 #DAG #ipv6 #duckdb #outlook #错误代码2603 #无网络连接 #2603 #注入漏洞 #nvidia #高品质会员管理系统 #收银系统 #同城配送 #最好用的电商系统 #最好用的系统 #推荐的前十系统 #JAVA PHP 小程序 #密码 #safari #b树 # ControlMaster #cesium #可视化 #寄存器 ##程序员和算法的浪漫 #memory mcp #Cursor #网路编程 #百万并发 #H3C #IFix # 远程连接 #Buck #NVIDIA #交错并联 #DGX #Llama-Factory # 树莓派 # ARM架构 #memcache #大剑师 #nodejs面试题 #C2000 #TI #实时控制MCU #AI服务器电源 #长文本理解 #glm-4 #推理部署 #Aluminium #Google #攻防演练 #Java web #红队 #AI技术 #ranger #MySQL8.0 #GB28181 #SIP信令 #SpringBoot #视频监控 #WT-2026-0001 #QVD-2026-4572 #smartermail #因果学习 #TTS私有化 # IndexTTS # 音色克隆 #RAGFlow #DeepSeek-R1 # ARM服务器 # 大模型推理 #存储维护 #screen命令 #分布式数据库 #集中式数据库 #业务需求 #选型误 # Connection refused #智能体来了 #智能体对传统行业冲击 #行业转型 #AI赋能 #系统管理 #服务 #游戏程序 #ICPC #门禁 #梯控 #智能梯控 #源代码管理 #elk #管道Pipe #system V #excel #chat #appche #xss #YOLO26 #muduo #TcpServer #accept #高并发服务器 #paddlepaddle #SAP #ebs #metaerp #oracle ebs #土地承包延包 #领码SPARK #aPaaS+iPaaS #数字化转型 #智能审核 #档案数字化 #农产品物流管理 #物流管理系统 #农产品物流系统 #农产品物流 # 高并发 #SSH跳转 #ShaderGraph #图形 #VSCode # SSH #go #postman # GPU集群 #VMware Workstation16 #服务器操作系统 #服务器开启 TLS v1.2 #IISCrypto 使用教程 #TLS 协议配置 #IIS 安全设置 #服务器运维工具 #AI-native #dba #LangFlow # 轻量化镜像 # 边缘计算 #国产化OS #汽车 #weston #x11 #x11显示服务器 #量子计算 #WinSCP 下载安装教程 #SFTP #FTP工具 #服务器文件传输 #计算几何 #斜率 #方向归一化 #叉积 #2026AI元年 #年度趋势 #samba #copilot # 批量管理 #ASR #SenseVoice #硬盘克隆 #DiskGenius #媒体 #opc模拟服务器 #游戏美术 #技术美术 #游戏策划 #用户体验 #ArkUI #ArkTS #鸿蒙开发 #服务器线程 # SSL通信 # 动态结构体 #报表制作 #职场 #数据可视化 #用数据讲故事 #手机h5网页浏览器 #安卓app #苹果ios APP #手机电脑开启摄像头并排查 #语音生成 #TTS #区间dp #二进制枚举 #图论 #IO #多线程 #性能调优策略 #双锁实现细节 #动态分配节点内存 #证书 #markdown #建站 #JNI #CPU #测评 #CCE #Dify-LLM #Flexus #Nacos #ue5 # 数字人系统 # 远程部署 #大学生 #大作业 #排序算法 #插入排序 #puppeteer #KMS #slmgr #宝塔面板部署RustDesk #RustDesk远程控制手机 #手机远程控制 #性能测试 #LoadRunner #TRO #TRO侵权 #TRO和解 #测试覆盖率 #可用性测试 #运维工具 #智能家居 #POC #问答 #交付 #动态规划 #TFTP #xlwings #Excel #NSP #下一状态预测 #aigc #Discord机器人 #云部署 #程序那些事 #移动端h5网页 #调用浏览器摄像头并拍照 #开启摄像头权限 #拍照后查看与上传服务器端 #摄像头黑屏打不开问题 #nfs #iscsi #数字孪生 #三维可视化 # Qwen3Guard-Gen-8B #工厂模式 #服务器IO模型 #非阻塞轮询模型 #多任务并发模型 #异步信号模型 #多路复用模型 #智慧城市 # 黑屏模式 # TTS服务器 #前端开发 #领域驱动 #自由表达演说平台 #演说 #kmeans #经济学 #文件IO #输入输出流 #文件管理 #WinDbg #Windows调试 #内存转储分析 #kong #Kong Audio #Kong Audio3 #KongAudio3 #空音3 #空音 #中国民乐 #范式 #随机森林 #ET模式 #非阻塞 #PyTorch 特性 #动态计算图 #张量(Tensor) #自动求导Autograd #GPU 加速 #生态系统与社区支持 #与其他框架的对比 #cascadeur #设计师 #AI视频创作系统 #AI视频创作 #AI创作系统 #AI视频生成 #AI工具 #AI创作工具 # 大模型 # 模型训练 #AI+ #coze #AI入门 #scanf #printf #getchar #putchar #cin #cout #Node.js #漏洞检测 #CVE-2025-27210 #图像识别 #企业级存储 #网络设备 #iot #多模态 #微调 #超参 #LLamafactory #Smokeping #Xshell #Finalshell #生物信息学 #组学 #pve #React #Next #CVE-2025-55182 #RSC #排序 #Linux多线程 #Java程序员 #Java面试 #后端开发 #Spring源码 #Spring #zotero #WebDAV #同步失败 #代理模式 #工具集 #大模型应用 #API调用 #PyInstaller打包运行 #服务端部署 #统信UOS #win10 #qemu #软件 #本地生活 #电商系统 #商城 #HarmonyOS #欧拉 #CSDN #vertx #vert.x #vertx4 #runOnContext #ngrok #视觉检测 #visual studio #aiohttp #asyncio #异步 #Langchain-Chatchat # 国产化服务器 # 信创 #麒麟 #gRPC #注册中心 #Tokio #异步编程 #系统编程 #Pin #http服务器 #win11 #.netcore # 自动化运维 #机器人学习 #儿童AI #图像生成 #CosyVoice3 # IP配置 # 0.0.0.0 #pjsip # 模型微调 #galeweather.cn #高精度天气预报数据 #光伏功率预测 #风电功率预测 #高精度气象 #c #实体经济 #商业模式 #软件开发 #数智红包 #商业变革 #创业干货 #Zabbix #语音合成 #HistoryServer #Spark #YARN #jobhistory #FASTMCP #ZooKeeper #ZooKeeper面试题 #面试宝典 #深入解析 #大模型部署 #mindie #大模型推理 #实时音视频 #业界资讯 #n8n解惑 #贴图 #材质 #Go并发 #高并发架构 #Goroutine #系统设计 #勒索病毒 #勒索软件 #加密算法 #.bixi勒索病毒 #数据加密 #Tracker 服务器 #响应最快 #torrent 下载 #2026年 #Aria2 可用 #迅雷可用 #BT工具通用 #net core #kestrel #web-server #asp.net-core # 显卡驱动备份 #mapreduce #EMC存储 #NetApp存储 #论文复现 #知识 #JT/T808 #车联网 #车载终端 #模拟器 #仿真器 #开发测试 #hibernate #AI赋能盾构隧道巡检 #开启基建安全新篇章 #以注意力为核心 #YOLOv12 #AI隧道盾构场景 #盾构管壁缺陷病害异常检测预警 #隧道病害缺陷检测 #eureka #openclaw #AI智能棋盘 #Rock Pi S #广播 #组播 #并发服务器 #x86_64 #数字人系统 #企业存储 #RustFS #对象存储 #高可用 #三维 #3D #三维重建 #asp.net上传大文件 #AITechLab #cpp-python #CUDA版本 #rtsp #转发 #编程 #c++高并发 #Termux #Samba #SSH别名 #信创国产化 #达梦数据库 #CVE-2025-61686 #路径遍历高危漏洞 #ARM64 # DDColor # ComfyUI #Ubuntu #ESP32编译服务器 #Ping #DNS域名解析 #YOLO11 #uip #连锁药店 #连锁店 #银河麒麟服务器系统 #温湿度监控 #WhatsApp通知 #IoT #MySQL #基础语法 #标识符 #常量与变量 #数据类型 #运算符与表达式 #地理 #遥感 #Kylin-Server #国产操作系统 #服务器安装 #Archcraft #短剧 #短剧小程序 #短剧系统 #微剧 # 智能运维 # 性能瓶颈分析 #空间计算 #原型模式 #nosql #Linly-Talker # 数字人 # 服务器稳定性 #戴尔服务器 #戴尔730 #装系统 #外卖配送 #junit #主板 #总体设计 #电源树 #框图 #文件上传漏洞 #bug #实在Agent #网络编程 #I/O模型 #并发 #水平触发、边缘触发 #多路复用 #榛樿鍒嗙被 #传统行业 #数据访问 #vncdotool #链接VNC服务器 #如何隐藏光标 # 服务器IP访问 # 端口映射 #wireshark #网络安全大赛 #电子电气架构 #系统工程与系统架构的内涵 #Routine #FHSS #人脸活体检测 #live-pusher #动作引导 #张嘴眨眼摇头 #苹果ios安卓完美兼容 #CNAS #CMA #程序文件 #gnu #glances #lucene #nodejs #云服务器选购 #Saas #百度 #ueditor导入word #mssql #算力建设 #TURN # WebRTC #具身智能 #SSH密钥 #练习 #基础练习 #循环 #九九乘法表 #计算机实现 #dynadot #域名 #ETL管道 #向量存储 #数据预处理 #DocumentReader #HarmonyOS APP #esb接口 #走处理类报异常 #声源定位 #MUSIC #windbg分析蓝屏教程 #composer #symfony #java-zookeeper #le audio #蓝牙 #低功耗音频 #通信 #连接 #vrrp #脑裂 #keepalived主备 #高可用主备都持有VIP #coffeescript #软件需求 #docker-compose #smtp #smtp服务器 #PHP #银河麒麟部署 #银河麒麟部署文档 #银河麒麟linux #银河麒麟linux部署教程 #fs7TF #AI大模型应用开发 #ROS #ue4 #DedicatedServer #独立服务器 #专用服务器 #语义搜索 #嵌入模型 #Qwen3 #AI推理 #AI 推理 #NV #npu #sentinel #个性化推荐 #BERT模型 #ServBay #安全架构 #gpt #tcp/ip #网络 # OTA升级 # 黄山派 #内网 # IndexTTS2 #ansys #ansys问题解决办法 # 网络延迟 #远程软件 #电商 #代理服务器 #编程助手 #视频 #雨云服务器 #Minecraft服务器 #教程 #MCSM面板 #Apple AI #Apple 人工智能 #FoundationModel #Summarize #SwiftUI #跳槽 #工作 #超时设置 #客户端/服务器 #挖矿 #Linux病毒 #sql注入 #高仿永硕E盘的个人网盘系统源码 #webgl #支持向量机 #VPS #搭建 # 服务器配置 # GPU #递归 #线性dp #react native #Gateway #认证服务器集成详解 #音诺ai翻译机 #AI翻译机 # Ampere Altra Max #ftp #sftp #uniapp #合法域名校验出错 #服务器域名配置不生效 #request域名配置 #已经配置好了但还是报错 #uniapp微信小程序 #sklearn #文本生成 #CPU推理 #华为od #华为机试 #cpu #Socket #套接字 #I/O多路复用 #字节序 #工程设计 #预混 #扩散 #燃烧知识 #层流 #湍流 # 批量部署 # 键鼠锁定 #mtgsig #美团医药 #美团医药mtgsig #美团医药mtgsig1.2 #远程连接 #人形机器人 #人机交互 #后端框架 #RWK35xx #语音流 #实时传输 #node #xml #统信操作系统 #域名注册 #新媒体运营 #网站建设 #国外域名 #pxe #DDD #tdd #easyui #参数估计 #矩估计 #概率论 #电梯 #电梯运力 #电梯门禁 #MCP服务器注解 #异步支持 #方法筛选 #声明式编程 #自动筛选机制 #LE Audio #BAP #数据报系统 #可再生能源 #绿色算力 #风电 # GPU服务器 # tmux #程序开发 #程序设计 #计算机毕业设计 #麦克风权限 #访问麦克风并录制音频 #麦克风录制音频后在线播放 #用户拒绝访问麦克风权限怎么办 #uniapp 安卓 苹果ios #将音频保存本地或上传服务器 #idc # child_process #题解 #图 #dijkstra #迪杰斯特拉 #bond #服务器链路聚合 #网卡绑定 #dlms #dlms协议 #逻辑设备 #逻辑设置间权限 #r语言 #scikit-learn #智能制造 #供应链管理 #工业工程 #库存管理 #安全威胁分析 #仙盟创梦IDE #GLM-4.6V-Flash-WEB # AI视觉 # 本地部署 #网络攻击模型 #pyqt #AI应用编程 #Minecraft #PaperMC #我的世界服务器 #EN4FE #RK3588 #RK3588J #评估板 #核心板 #嵌入式开发 #STDIO传输 #SSE传输 #WebMVC #WebFlux #工业级串口服务器 #串口转以太网 #串口设备联网通讯模块 #串口服务器选型 #Moltbook #入侵 #日志排查 #Cpolar #国庆假期 #服务器告警 #resnet50 #分类识别训练 #人大金仓 #Kingbase #OpenManage #小艺 #搜索 #Spring AOP #多进程 #python技巧 #高考 #Python3.11 #工程实践 #租显卡 #训练推理 #Spire.Office #就业 #隐私合规 #网络安全保险 #法律风险 #风险管理 #wps #静脉曲张 #腿部健康 #轻量化 #低配服务器 #clawdbot #V11 #kylinos #远程访问 #远程办公 #飞网 #安全高效 #配置简单 #快递盒检测检测系统 #KMS激活 #API #poll #公共MQTT服务器 #numpy #FaceFusion # Token调度 # 显存优化 #WRF #WRFDA #Syslog #系统日志 #日志分析 #日志监控 #单例模式 #懒汉式 #恶汉式 #Autodl私有云 #深度服务器配置 # DIY主机 # 交叉编译 #网络配置实战 #Web/FTP 服务访问 #计算机网络实验 #外网访问内网服务器 #Cisco 路由器配置 #静态端口映射 #网络运维 #RPA #影刀RPA #AI办公 #挖漏洞 #攻击溯源 #stl #IIS Crypto #blender #warp #视觉理解 #Moondream2 #多模态AI #路由器 #人脸识别sdk #视频编解码 #Prometheus #CS336 #Assignment #Experiments #TinyStories #Ablation #CA证书 #星际航行 #程序定制 #毕设代做 #课设 #agentic bi #交换机 #三层交换机 #高斯溅射 #Puppet # TTS #云开发 #ARMv8 #内存模型 #内存屏障 #个人电脑 #KMS 激活 #MC群组服务器 #娱乐 #敏捷流程 #Keycloak #Quarkus #AI编程需求分析 #BoringSSL #canvas层级太高 #canvas遮挡问题 #盖住其他元素 #苹果ios手机 #安卓手机 #调整画布层级 #测速 #iperf #iperf3 #学术生涯规划 #CCF目录 #基金申请 #职称评定 #论文发表 #科研评价 #顶会顶刊 #gpu #nvcc #cuda #漏洞挖掘 #unix #CS2 #debian13 #SEO优化 #模块 # 权限修复 #ICE #节日 #Kuikly #openharmony # 鲲鹏 #SQL注入主机 #http头信息 #Coturn #分子动力学 #化工仿真 #k8s #游戏服务器断线 #期刊 #SCI #boltbot #语义检索 #向量嵌入 #强化学习 #策略梯度 #REINFORCE #蒙特卡洛 #L6 #L10 #L9 #实时检测 #卷积神经网络 #阿里云RDS #AI电商客服 #spring ai #oauth2 #nmodbus4类库使用教程 #rtmp # 高温监控 # 局域网访问 # 批量处理 #gerrit # 环境迁移 #Qwen3-VL # 服务状态监控 # 视觉语言模型 #xshell #host key #Tetrazine-Acid #1380500-92-4 #rsync # 数据同步 #职场发展 #隐函数 #常微分方程 #偏微分方程 #线性微分方程 #线性方程组 #非线性方程组 #复变函数 #UDP服务器 #recvfrom函数 #claudeCode #content7 #odoo #Ward #思爱普 #SAP S/4HANA #ABAP #NetWeaver #claude-code #高精度农业气象 # 串口服务器 # NPort5630 #Python办公自动化 #Python办公 #4U8卡 AI 服务器 ##AI 服务器选型指南 #GPU 互联 #GPU算力 #日志模块 #YOLO识别 #YOLO环境搭建Windows #YOLO环境搭建Ubuntu #WAN2.2 #OpenHarmony #dash # ms-swift #PN 结 #超算中心 #PBS #lsf #反向代理 #adobe #数据迁移 #MinIO #express #cherry studio #gmssh #宝塔 #Exchange #free #vmstat #sar #系统安装 #铁路桥梁 #DIC技术 #箱梁试验 #裂纹监测 #四点弯曲 #效率神器 #办公技巧 #自动化工具 #Windows技巧 #打工人必备 #AI Agent #开发者工具 #旅游 #边缘AI # Kontron # SMARC-sAMX8 #dreamweaver #晶振 #okhttp #计算机外设 #西门子 #汇川 #Blazor #运维 #remote-ssh #夏天云 #夏天云数据 #hdfs #华为od机试 #华为od机考 #华为od最新上机考试题库 #华为OD题库 #华为OD机试双机位C卷 #od机考题库 #健康医疗 #AI应用 #bigtop #hdp #hue #kerberos #智能电视 #Beidou #北斗 #SSR #AI工具集成 #容器化部署 #分布式架构 #Matrox MIL #二次开发 #docker安装seata #CMC #信息安全 #信息收集 #0day漏洞 #DDoS攻击 #漏洞排查 #生产服务器问题查询 #日志过滤 #防火墙 # AI部署 #材料工程 #VMware创建虚拟机 #远程更新 #缓存更新 #多指令适配 #物料关联计划 #m3u8 #HLS #移动端H5网页 #APP安卓苹果ios #监控画面 直播视频流 #决策树 #DooTask #sglang #防毒面罩 #防尘面罩 #基金 #股票 #UEFI #BIOS #Legacy BIOS #余行补位 #意义对谈 #余行论 #领导者定义计划 #rag #开关电源 #热敏电阻 #PTC热敏电阻 #身体实验室 #健康认知重构 #系统思维 #微行动 #NEAT效应 #亚健康自救 #ICT人 #ossinsight #AE # 服务器迁移 # 回滚方案 #云计算运维 #cocos2d #图形渲染 #小智 #session #JADX-AI 插件 #starrocks #LED #设备树 #GPIO #tekton #新浪微博 #传媒 #DuckDB #协议 #Arduino BLDC #核辐射区域探测机器人 #esp32 #mosquito #运动 #OpenAI #故障 #FRP #2025年 #AI教程 #自动化巡检 #istio #服务发现 #二值化 #Canny边缘检测 #轮廓检测 #透视变换 #jquery #fork函数 #进程创建 #进程终止 #moltbot