电教智能云数据可视化平台开发电能优化日志实录

这篇具有很好参考价值的文章主要介绍了电教智能云数据可视化平台开发电能优化日志实录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、2K和4K弹窗判断

  {* 判断2k和4k弹窗 *}
            {if $dataScene['scene_standard'] eq 0}
            <a class="menuBtn subMenu" onclick="getZoomUrl('?m=Index&a=overview&act=showView&member_id={$dataScene['member_id']}', '1613px', '955px', 'no','{$dataScene['scene_name']}')">{$dataScene['scene_name']}</a>
            {else}
            <a class="menuBtn subMenu" onclick="getZoomUrl('?m=Index&a=overview&act=showView&member_id={$dataScene['member_id']}', '3226px', '1910px', 'no','{$dataScene['scene_name']}')">{$dataScene['scene_name']}</a>
            {/if}
 {if $dataScene neq ""}<a class="menuBtn subMenu" href="?m=Index&a=overview&act=showView&member_id={$dataScene['member_id']}">总览图</a>{/if}
 

二、电能API对接

1.电脑爬虫

    public function getIotPower()
    {
        global $res, $CONF;
        dbc();
        $group = $this->getGroupId();
        $group_id = $group["energyid"];
        if ($group_id && $group_id != "0") {
            $url = curlIotAPI($CONF["api_iot_pipe"], '1', '1000', $CONF["api_user_key"], $group_id);
            $reArr = json_decode($url, true);
            $data_int = $reArr["data"];
            $res["data"] = getIotPower($data_int["data"]);
            die(json_encode_lockdata($res));
        } else {
            $res["data"] = NULL;
            die(json_encode_lockdata($res));
        }
    }

2.电能分组过滤

/*物联网-电量流量分组 2023-3-23*/
function getIotPower($arr)
{
    @$list = array();
    foreach ($arr as $k => $v) {
        if (!isset($list[$v["device"]])) {
            $list[$v["device"]] = $v;
        } else {
            $list[$v["device"]]["name"] .= "," . $v["name"];
            $list[$v["device"]]["id"] .= "," . $v["id"];
            $list[$v["device"]]["sdata"] .= "," . $v["sdata"];
            $list[$v["device"]]["odata"]["today_val"] .= "," . $v["odata"]['today_val'];//当天
            $list[$v["device"]]["odata"]["current_month"] .= "," . $v["odata"]['current_month'];//当月-2023.3
            $list[$v["device"]]["odata"]["current_year"] .= "," . $v["odata"]['current_year'];//当年
            $list[$v["device"]]["odata"]["b_yesterday_val"] .= "," . $v["odata"]['b_yesterday_val'];//前天
            $list[$v["device"]]["odata"]["yesterday_val"] .= "," . $v["odata"]['yesterday_val'];//昨天
            $list[$v["device"]]["odata"]["last_month_val"] .= "," . $v["odata"]['last_month_val'];//上月-2023.2
            $list[$v["device"]]["odata"]["b_last_month_val"] .= "," . $v["odata"]['b_last_month_val'];//上上月-2023.1
            $list[$v["device"]]["odata"]["b_last_year_val"] .= "," . $v["odata"]['b_last_year_val'];//前年
            $list[$v["device"]]["odata"]["last_year_val"] .= "," . $v["odata"]['last_year_val'];//去年
            @$list[$v["device"]]["odata"]["three_days_ago_val"] .= "," . $v["odata"]['three_days_ago_val'];
            @$list[$v["device"]]["odata"]["three_month_ago_val"] .= "," . $v["odata"]['three_month_ago_val'];
            @$list[$v["device"]]["odata"]["three_years_ago_val"] .= "," . $v["odata"]['three_years_ago_val'];
            @$list[$v["device"]]["odata"]["four_month_ago_val"] .= "," . $v["odata"]['four_month_ago_val'];//-2022.12
            @$list[$v["device"]]["odata"]["five_month_ago_val"] .= "," . $v["odata"]['five_month_ago_val'];//-2022.11
            @$list[$v["device"]]["odata"]["six_month_ago_val"] .= "," . $v["odata"]['six_month_ago_val'];//-2022.10
            @$list[$v["device"]]['data']["deviceType"] .= "," . $v['data']["deviceType"];
            $list[$v["device"]]['data']["measure_unit_type"] .= "," . $v['data']["measure_unit_type"];
            $list[$v["device"]]['data']["propertyType"] .= "," . $v['data']["propertyType"];
            $list[$v["device"]]['data']["sensorStatus"] .= "," . $v['data']["sensorStatus"];
        }
    }
    return array_values($list);
}

在 PHP 中,@ 符号被称为错误抑制操作符。当在表达式之前使用 @ 符号时,它会告诉 PHP 忽略该表达式可能产生的任何错误或警告消息。

使用 @ 符号的主要目的是在运行时隐藏错误消息,以防止它们显示在最终的用户界面上。然而,过度使用错误抑制符可能会导致问题的隐藏和调试难题,因此它的使用应当谨慎。

需要注意的是,虽然 @ 符号可以抑制错误消息的显示,但它不会阻止代码中的错误和异常。错误实际上仍然存在,只是被隐藏起来。这意味着当代码中存在错误时,它们仍然会对程序的执行和结果产生影响。

因此,建议在编写 PHP 代码时,避免过度依赖 @ 符号来掩盖错误。而是应该使用适当的错误处理和异常处理机制来捕获和处理错误,以便更好地调试和修复问题。

3.数据可视化渲染

/*
 * 电能流量环境状态*半年
 * */
function getYearPower() {
    $.when(
        $.getJSON('api/api.php?act=getIotPower&token=3cab7ce4142608c0f40c785b5ab5ca24')
    ).done(function (res1) {
        var data2 = res1.data.sort(getSortFun('asc', 'device_seq'));
        //console.log(data2);
        if (data2) {
            var flow_entHtml = "";
            var lightStatus = [];
            for (var d = 0; d < data2.length; d++) {
                var sensor = data2[d].data.propertyType;
                var lastvalue = data2[d].sdata;
                var sta = data2[d].data.sensorStatus;
                var norm = sensor.split(",");
                var normValue = lastvalue.split(",");
                var staValue = sta.split(",");
                var yesVal = data2[d].odata.yesterday_val.split(",");
                var last_month = data2[d].odata.last_month_val.split(",");
                var last_year = data2[d].odata.last_year_val.split(",");
                lightStatus[d] = data2[d].data.sensorStatus;
                //新增当日/月/年数据 2022.07.23 BY poleung;
                var today_val = data2[d].odata.today_val.split(",");
                var current_month = data2[d].odata.current_month.split(",");
                var current_year = data2[d].odata.current_year.split(",");

                //console.log(yesterdayValue);
                //数据排序,防止错乱;
                var normT = [], statusT = [];
                for (var i = 0; i < norm.length; i++) {
                    //今日电量;
                    if (norm.indexOf("电量") == -1) {
                        normT[0] = "-";
                        statusT[0] = "无设备";
                    } else {
                        if (norm[i] == "电量") {
                            //normT[0] = parseFloat(normValue[i] - yesVal[i]).toFixed(1);
                            normT[0] = getPositive(parseFloat(today_val[i] - yesVal[i]).toFixed(1));
                            statusT[0] = staValue[i];
                        }
                    }

                    //本月电量;
                    if (norm.indexOf("电量") == -1) {
                        normT[1] = "-";
                        statusT[1] = "无设备";
                    } else {
                        if (norm[i] == "电量") {
                            normT[1] = getPositive(parseFloat(current_month[i] - last_month[i]).toFixed(1));
                            statusT[1] = staValue[i];
                        }
                    }

                    //本年电量;
                    if (norm.indexOf("电量") == -1) {
                        normT[2] = "-";
                        statusT[2] = "无设备";
                    } else {
                        if (norm[i] == "电量") {
                            normT[2] = getPositive(parseFloat(current_year[i] - last_year[i]).toFixed(1));
                            statusT[2] = staValue[i];
                        }
                    }

                    if (norm.indexOf("A相电流") == -1) {
                        normT[3] = "-";
                        statusT[3] = "无设备";
                    } else {
                        if (norm[i] == "A相电流") {
                            normT[3] = parseFloat(today_val[i]).toFixed(2);
                            statusT[3] = staValue[i];
                        }
                    }

                    if (norm.indexOf("B相电流") == -1) {
                        normT[4] = "-";
                        statusT[4] = "无设备";
                    } else {
                        if (norm[i] == "B相电流") {
                            normT[4] = parseFloat(today_val[i]).toFixed(2);
                            statusT[4] = staValue[i];
                        }
                    }

                    if (norm.indexOf("C相电流") == -1) {
                        normT[5] = "-";
                        statusT[5] = "无设备";
                    } else {
                        if (norm[i] == "C相电流") {
                            normT[5] = parseFloat(today_val[i]).toFixed(2);
                            statusT[5] = staValue[i];
                        }
                    }

                    if (norm.indexOf("电功率") == -1) {
                        normT[6] = "-";
                        statusT[6] = "无设备";
                    } else {
                        if (norm[i] == "电功率") {
                            normT[6] = parseFloat(today_val[i]).toFixed(1);
                            statusT[6] = staValue[i];
                        }
                    }
                }
                flow_entHtml += "<li><div class='powerNorm'><div class='power2_norm1'>" + limitWords(data2[d].device, 8) + "</div><div class='power2_norm2'>"
                    + "<div class='power2_1'>本月<p class='houseBg'>" + getAlertCo(statusT[1], normT[1]) + "</p></div>"
                    + "<div class='power2_2'>本年<p class='houseBg'>" + getAlertCo(statusT[2], normT[2]) + "</p></div>"
                    + "<div class='power2_3'>A相<p class='houseBg'>" + getAlertCo(statusT[3], normT[3]) + "</p></div>"
                    + "<div class='power2_4'>B相<p class='houseBg'>" + getAlertCo(statusT[4], normT[4]) + "</p></div>"
                    + "<div class='power2_5'>C相<p class='houseBg'>" + getAlertCo(statusT[5], normT[5]) + "</p></div>"
                    + "<div class='power2_6'>功率<p class='houseBg'>" + getAlertCo(statusT[6], normT[6]) + "</p></div>"
                    + "</div></div></li>";
            }

            //状态灯;
            //console.log(lightStatus);
            if (lightStatus.toString().indexOf("告警") > -1 && lightStatus.toString().indexOf("离线") > -1) {
                $("#power_Status").removeClass().addClass("alert1");
            } else if (lightStatus.toString().indexOf("告警") > -1) {
                $("#power_Status").removeClass().addClass("alert1");
            } else if (lightStatus.toString().indexOf("离线") > -1) {
                $("#power_Status").removeClass().addClass("alert4");
            } else {
                $("#power_Status").removeClass().addClass("alert2");
            }
            $("#power_ent").html(flow_entHtml);
        } else {
            console.log("电能流量感知状态:API INTERFACE ERROR");
        }
    }).fail(function (err) {
        console.log(err);
    });
}

4.弹窗

    $.ajax({
        type: 'get',
        async: true,
        data: {},
        url: 'api/api.php?act=getIotPower2&token=3cab7ce4142608c0f40c785b5ab5ca24',
        dataType: "json",
        success: function (res) {
            var json = res.data.sort(getSortFun('asc', 'device_seq'));//排序
            console.log(json);
            var html = '';
            if (res.data != null) {
                for (var i = 0; i < json.length; i++) {
                    var sensor = json[i].data.propertyType;
                    var b_yesterday_val = json[i].odata.b_yesterday_val.split(",");
                    var yesterday_val = json[i].odata.yesterday_val.split(",");
                    var last_month_val = json[i].odata.last_month_val.split(",");//1月
                    var b_last_month_val = json[i].odata.b_last_month_val.split(",");//2月
                    var last_year_val = json[i].odata.last_year_val.split(",");
                    var b_last_year_val = json[i].odata.b_last_year_val.split(",");
                    var three_days_ago_val = json[i].odata.three_days_ago_val.split(",");
                    var three_month_ago_val = json[i].odata.three_month_ago_val.split(",");//3月
                    var three_years_ago_val = json[i].odata.three_years_ago_val.split(",");
                    var four_month_ago_val = json[i].odata.four_month_ago_val.split(",");//4月
                    var five_month_ago_val = json[i].odata.five_month_ago_val.split(",");//5月
                    var six_month_ago_val = json[i].odata.six_month_ago_val.split(",");//6月
                    var normValue = json[i].sdata.split(",");
                    var sta = json[i].data.sensorStatus;
                    var norm = sensor.split(",");
                    var staValue = sta.split(",");
                    //新增当日/月/年数据 2022.07.23 BY poleung;
                    var today_val = json[i].odata.today_val.split(",");
                    var current_month = json[i].odata.current_month.split(",");//当月
                    var current_year = json[i].odata.current_year.split(",");
                    //console.log(today_val);

                    //数据排序,防止错乱;
                    var normT = [], statusT = [], b_yesterday = [], yesterday = [], b_last_month = [], last_month = [],four_month = [],five_month = [],six_month = [],
                        b_last_year = [], last_year = [];
                    for (var j = 0; j < norm.length; j++) {
                        //日用量
                        if (norm.indexOf("电量") == -1) {
                            normT[0] = "-";
                            statusT[0] = "无设备";
                        } else {
                            if (norm[j] == "电量") {
                                //normT[0] = parseFloat(normValue[j] - yesterday_val[j]).toFixed(2);
                                normT[0] = getPositive(parseFloat(today_val[j] - yesterday_val[j]).toFixed(2));//今天
                                statusT[0] = staValue[j];
                                yesterday[0] = getPositive(parseFloat(yesterday_val[j] - b_yesterday_val[j]).toFixed(2));
                                b_yesterday[0] = getPositive(parseFloat(b_yesterday_val[j] - three_days_ago_val[j]).toFixed(2));
                            }
                        }

                        //月用量
                        if (norm.indexOf("电量") == -1) {
                            normT[1] = "-";
                            statusT[1] = "无设备";
                        } else {
                            if (norm[j] == "电量") {
                                statusT[1] = staValue[j];
                                normT[1] = getPositive(parseFloat(current_month[j] - last_month_val[j]).toFixed(2));//1
                                last_month[1] = getPositive(parseFloat(last_month_val[j] - b_last_month_val[j]).toFixed(2));//2
                                b_last_month[1] = getPositive(parseFloat(b_last_month_val[j] - three_month_ago_val[j]).toFixed(2));//3
                                four_month[1] = getPositive(parseFloat(three_month_ago_val[j] - four_month_ago_val[j]).toFixed(2));//4
                                five_month[1] = getPositive(parseFloat(four_month_ago_val[j] - five_month_ago_val[j]).toFixed(2));//5
                                six_month[1] = getPositive(parseFloat(five_month_ago_val[j] - six_month_ago_val[j]).toFixed(2));//6
                            }
                        }

                        //年用量
                        if (norm.indexOf("电量") == -1) {
                            normT[2] = "-";
                            statusT[2] = "无设备";
                        } else {
                            if (norm[j] == "电量") {
                                normT[2] = getPositive(parseFloat(current_year[j] - last_year_val[j]).toFixed(2));
                                statusT[2] = staValue[j];
                                last_year[2] = getPositive(parseFloat(last_year_val[j] - b_last_year_val[j]).toFixed(2));
                                b_last_year[2] = getPositive(parseFloat(b_last_year_val[j] - three_years_ago_val[j]).toFixed(2));
                            }
                        }

                        if (norm.indexOf("A相电流") == -1) {
                            normT[3] = "-";
                            statusT[3] = "无设备";
                        } else {
                            if (norm[j] == "A相电流") {
                                normT[3] = parseFloat(today_val[j]).toFixed(2);
                                statusT[3] = staValue[j];
                            }
                        }

                        if (norm.indexOf("B相电流") == -1) {
                            normT[4] = "-";
                            statusT[4] = "无设备";
                        } else {
                            if (norm[j] == "B相电流") {
                                normT[4] = parseFloat(today_val[j]).toFixed(2);
                                statusT[4] = staValue[j];
                            }
                        }

                        if (norm.indexOf("C相电流") == -1) {
                            normT[5] = "-";
                            statusT[5] = "无设备";
                        } else {
                            if (norm[j] == "C相电流") {
                                normT[5] = parseFloat(today_val[j]).toFixed(2);
                                statusT[5] = staValue[j];
                            }
                        }

                        if (norm.indexOf("电功率") == -1) {
                            normT[6] = "-";
                            statusT[6] = "无设备";
                        } else {
                            if (norm[j] == "电功率") {
                                normT[6] = parseFloat(today_val[j]).toFixed(2);
                                statusT[6] = staValue[j];
                            }
                        }
                    }

                    //构建表格;
                    //html = "<tr><td>" + json[i].device_seq + "</td><td>" + json[i].device + "</td><td>" + makeBold(normT[2], statusT[2]) +  "</td><td>" + makeBold(normT[1], statusT[1]) +  "</td><td>" + makeBold(normT[3], statusT[3]) +  "</td><td>" + makeBold(normT[4], statusT[4]) +  "</td></tr>";
                    html = "<tr><td>" + json[i].device_seq + "</td><td>"
                        + json[i].device + "</td><td class=\"tablebg1\">"
                        + normT[1] + "</td><td class=\"tablebg2\">"
                        + last_month[1] + "</td><td class=\"tablebg1\">"
                        + b_last_month[1] + "</td><td class=\"tablebg2\">"
                        + four_month[1] + "</td><td class=\"tablebg1\">"
                        + five_month[1] + "</td><td class=\"tablebg2\">"
                        + six_month[1] + "</td><td class=\"tablebg1\">"
                        + normT[2] + "</td><td class=\"tablebg1\">"
                        + last_year[2] + "</td><td class=\"tablebg1\">"
                        + b_last_year[2] + "</td><td>"+makeBold(normT[3],statusT[3])+"</td><td>"+makeBold(normT[4],statusT[4])+"</td><td>"+makeBold(normT[5],statusT[5])+"</td><td class=\"tablebg1\">"+makeBold(normT[6],statusT[6])+"</td></tr>";

                    //渲染表格;
                    $("#example tbody").append(html);
                }
                
                $('#example').DataTable({
                    dom: '<"searchBox"lf>t<"dtPage"i>p',//控件位置
                    bFilter: true,//过滤搜索
                    pagingType: "first_last_numbers",//分页样式
                    pageLength: 15,//默认显示条数;
                    bPaginate: true,//分页总开关
                    lengthMenu: [15, 25, 50, 75, 100, 200],
                    language: {
                        emptyTable: '没有数据',
                        loadingRecords: '加载中...',
                        processing: '查询中...',
                        search: '搜索:',
                        lengthMenu: '每页 _MENU_ 条数据',
                        zeroRecords: '没有数据',
                        paginate: {
                            'first': '首页',
                            'last': '尾页',
                            'next': '下一页',
                            'previous': '上一页'
                        },
                        info: '共计:_TOTAL_ 条数据',
                        infoEmpty: '没有数据',
                        infoFiltered: '(过滤 _MAX_ 条)',
                    }
                });
            } else {
                html = "<tr><td colspan='11'>无数据</td></tr>";
                $("#example").addClass("dataTable no-footer");
                $("#example tbody").html(html);
            }
        },
        error: function (err) {
            console.log(err);
        }
    });

三.数组按顺序输出

在 JavaScript 中,您可以使用循环和数组的特性来按顺序输出多组数据。具体的实现取决于您的数据结构和输出方式。以下是两种常见的方法:

方法一:使用 for 循环遍历数组并输出

var data = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

for (var i = 0; i < data.length; i++) {
  var currentData = data[i];
  console.log(currentData); // 在控制台输出当前数据组
}

上述代码中,我们使用了一个 for 循环来遍历数组 data 中的每一组数据。在循环的每一次迭代中,我们将当前数据组存储在一个变量 currentData 中,并通过 console.log() 输出到控制台。

方法二:使用 forEach 方法遍历数组并输出

var data = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

data.forEach(function(currentData) {
  console.log(currentData); // 在控制台输出当前数据组
});

上述代码中,我们使用数组的 forEach 方法来遍历数组 data 中的每一组数据。通过传入一个回调函数,我们可以在每次迭代中获取当前数据组,并通过 console.log() 输出到控制台。


@漏刻有时文章来源地址https://www.toymoban.com/news/detail-630866.html

到了这里,关于电教智能云数据可视化平台开发电能优化日志实录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 低代码开发之开源数据可视化分析平台datagear

    DataGear是一款开源免费的数据可视化分析平台,自由制作任何您想要的数据看板,支持接入SQL、CSV、Excel、HTTP接口、JSON等多种数据源。 系统基于Spring Boot、Jquery、ECharts等技术开发。 友好接入的数据源 支持运行时接入任意提供JDBC驱动的数据库,包括MySQL、Oracle、PostgreSQL、SQ

    2024年01月25日
    浏览(49)
  • 【开源项目】低代码数据可视化开发平台-Datav

    Datav是一个Vue3搭建的低代码数据可视化开发平台,将图表或页面元素封装为基础组件,无需编写代码即可完成业务需求。 它的技术栈为:Vue3 + TypeScript4 + Vite2 + ECharts5 + Axios + Pinia2 预览地址: https://datav.pengxiaotian.com/ https://gitee.com/pengxiaotian/datav-vue 💪 Vue 3.0+ ⚡ Vite 3.0+ 🍍 Pini

    2024年02月15日
    浏览(82)
  • AI人工智能+区块链+物联网+大数据可视化平台建设综合解决方案

    因转载众多,无法找到真正来源,如标错来源,或对于文中所使用的图片、文字、链接中所包含的软件/资料等,如有侵权,请跟我们联系删除,谢谢。将在收到信息后第一时间进行删除。 参考资料来源网络,仅用于行业知识分享,供个人学习参考,不得作商业用途。 AI人工

    2024年01月17日
    浏览(56)
  • 【开源项目】低代码数据可视化开发平台go-view

    GoView 是一个Vue3搭建的低代码数据可视化开发平台,将图表或页面元素封装为基础组件,无需编写代码即可完成业务需求。 它的技术栈为:Vue3 + TypeScript4 + Vite2 + NaiveUI + ECharts5 + Axios + Pinia2 + PlopJS 预览地址: https://demo.mtruning.club/ https://gitee.com/dromara/go-view node: 16.14.x npm: 8.5.x pn

    2024年02月16日
    浏览(53)
  • 一个Vue3搭建的低代码数据可视化开发平台

    Vue.js是一款基于MVVM模式的JavaScript框架,通过其简洁、高效的语法和强大的功能,帮助开发者构建出更加灵活、快速和可维护的Web应用。与其他框架相比,Vue区别于市场上的繁杂,它注重易用性和迅速上手的优势,给开发者提供了更大的自由度。无论是用于构建简单的个人项

    2024年02月14日
    浏览(46)
  • Python项目开发:Flask基于Python的天气数据可视化平台

    目录 步骤一:数据获取 步骤二:设置Flask应用程序 步骤三:处理用户输入和数据可视化 步骤四:渲染HTML模板 总结 在这个数字化时代,数据可视化已经成为我们理解和解释信息的重要手段。在这个项目中,我们将使用Python语言来开发一个基于Flask框架的天气数据可视化平台

    2024年02月09日
    浏览(56)
  • GoView 是一个Vue3搭建的低代码数据可视化开发平台

    开源、精美、便捷的「数据可视化」低代码开发平台 框架:基于  Vue3  框架编写,使用  hooks  写法抽离部分逻辑,使代码结构更加清晰; 类型:使用  TypeScript  进行类型约束,减少未知错误发生概率,可以大胆修改逻辑内容; 性能:多处性能优化,使用页面懒加载、组件

    2024年02月04日
    浏览(59)
  • 利用qiankun框架在自己项目中集成拖拽式低代码数据可视化开发平台

    目前微前端已经是很成熟的技术了,各大公司都推出了自己的微前端框架,比如蚂蚁的qiankun,京东的micro-app,如果你的子应用不使用vite构建的话,我会更加推荐后者,micro-app使用更加简单,micro-app并没有沿袭 single-spa 的思路,而是借鉴了WebComponent的思想,是目前市面上接入

    2024年02月15日
    浏览(48)
  • 数字孪生特高压电网三维可视化平台实现能源智能管理

    电力是现代社会不可或缺的基础能源,而有效管理电力资源对于实现可持续发展至关重要。近年来,随着物联网、大数据、人工智能等技术的快速发展,电网领域的数字化转型已经成为一种趋势。而其中关键的一环便是电网三维数字孪生技术,它为实现智能能源管理的未来打

    2024年02月06日
    浏览(60)
  • 【项目实战】基于Hadoop大数据电商平台用户行为分析与可视化系统Hive、Spark计算机程序开发

    注意:该项目只展示部分功能,如需了解,评论区咨询即可。 在当今数字化时代,电商行业成为全球商业生态系统的关键组成部分,电商平台已经深入各行各业,影响了人们的购物方式和消费习惯。随着互联网技术的不断发展,电商平台产生了大量的用户数据,包括点击、购

    2024年02月04日
    浏览(119)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包