Jadual Kandungan
改进方法1:把DateTime格式时间转为时间戳再提交
改进方法2:使用一个32位的整型变量,把每一小时作为32位整型的其中一位来存储
Rumah pembangunan bahagian belakang tutorial php 优化客户端调用服务端接口减少请求数据容量

优化客户端调用服务端接口减少请求数据容量

Jun 09, 2018 am 09:09 AM
php request

因项目需要,需要记录用户未来3天的预约时间,每个预约时段为1小时。

例如:00:00:00~00:59:5901:00:00~01:59:59 等为一个预约时段

前端代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8">
  <title> 提交预约日期 </title>
  <style type="text/css">
  .title{color:#FF0000;}
  .topic{font-size:18px; font-weight:bold;}
  </style>
  <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
  <script type="text/javascript">    function fsubmit(){
        var timetable = [];
        $("#myform input[type=checkbox]").each(function(){            if(this.checked){
                timetable.push($(this).val());
            }
        });        if(timetable.length==0){
            alert('请选择预约时间');
            return false;
        }
        $.post("http://localhost/server.php",{timetable:timetable}).done(function(data){            if(data['success']==true){
                alert('提交成功');                
            }else{
                alert('提交失败');
            }
        });
    }
  </script>
 </head>
 <body>
  <p class="topic">请选择预约时间:</p>
  <form name="form1" id="myform" method="post" onsubmit="return false">
    <p class="title">2015-05-28:</p>
    <p>
      <input type="checkbox" name="timetable" value="2015-05-28 00:00:00"> 00:00
      <input type="checkbox" name="timetable" value="2015-05-28 01:00:00"> 01:00
      <input type="checkbox" name="timetable" value="2015-05-28 02:00:00"> 02:00
      <input type="checkbox" name="timetable" value="2015-05-28 03:00:00"> 03:00
      <input type="checkbox" name="timetable" value="2015-05-28 04:00:00"> 04:00
      <input type="checkbox" name="timetable" value="2015-05-28 05:00:00"> 05:00
      <input type="checkbox" name="timetable" value="2015-05-28 06:00:00"> 06:00
      <input type="checkbox" name="timetable" value="2015-05-28 07:00:00"> 07:00
      <input type="checkbox" name="timetable" value="2015-05-28 08:00:00"> 08:00
      <input type="checkbox" name="timetable" value="2015-05-28 09:00:00"> 09:00
      <input type="checkbox" name="timetable" value="2015-05-28 10:00:00"> 10:00
      <input type="checkbox" name="timetable" value="2015-05-28 11:00:00"> 11:00
    </p>
    <p>
      <input type="checkbox" name="timetable" value="2015-05-28 12:00:00"> 12:00
      <input type="checkbox" name="timetable" value="2015-05-28 13:00:00"> 13:00
      <input type="checkbox" name="timetable" value="2015-05-28 14:00:00"> 14:00
      <input type="checkbox" name="timetable" value="2015-05-28 15:00:00"> 15:00
      <input type="checkbox" name="timetable" value="2015-05-28 16:00:00"> 16:00
      <input type="checkbox" name="timetable" value="2015-05-28 17:00:00"> 17:00
      <input type="checkbox" name="timetable" value="2015-05-28 18:00:00"> 18:00
      <input type="checkbox" name="timetable" value="2015-05-28 19:00:00"> 19:00
      <input type="checkbox" name="timetable" value="2015-05-28 20:00:00"> 20:00
      <input type="checkbox" name="timetable" value="2015-05-28 21:00:00"> 21:00
      <input type="checkbox" name="timetable" value="2015-05-28 22:00:00"> 22:00
      <input type="checkbox" name="timetable" value="2015-05-28 23:00:00"> 23:00
    </p>
    <p class="title">2015-05-29:</p>
    <p>
      <input type="checkbox" name="timetable" value="2015-05-29 00:00:00"> 00:00
      <input type="checkbox" name="timetable" value="2015-05-29 01:00:00"> 01:00
      <input type="checkbox" name="timetable" value="2015-05-29 02:00:00"> 02:00
      <input type="checkbox" name="timetable" value="2015-05-29 03:00:00"> 03:00
      <input type="checkbox" name="timetable" value="2015-05-29 04:00:00"> 04:00
      <input type="checkbox" name="timetable" value="2015-05-29 05:00:00"> 05:00
      <input type="checkbox" name="timetable" value="2015-05-29 06:00:00"> 06:00
      <input type="checkbox" name="timetable" value="2015-05-29 07:00:00"> 07:00
      <input type="checkbox" name="timetable" value="2015-05-29 08:00:00"> 08:00
      <input type="checkbox" name="timetable" value="2015-05-29 09:00:00"> 09:00
      <input type="checkbox" name="timetable" value="2015-05-29 10:00:00"> 10:00
      <input type="checkbox" name="timetable" value="2015-05-29 11:00:00"> 11:00
    </p>
    <p>
      <input type="checkbox" name="timetable" value="2015-05-29 12:00:00"> 12:00
      <input type="checkbox" name="timetable" value="2015-05-29 13:00:00"> 13:00
      <input type="checkbox" name="timetable" value="2015-05-29 14:00:00"> 14:00
      <input type="checkbox" name="timetable" value="2015-05-29 15:00:00"> 15:00
      <input type="checkbox" name="timetable" value="2015-05-29 16:00:00"> 16:00
      <input type="checkbox" name="timetable" value="2015-05-29 17:00:00"> 17:00
      <input type="checkbox" name="timetable" value="2015-05-29 18:00:00"> 18:00
      <input type="checkbox" name="timetable" value="2015-05-29 19:00:00"> 19:00
      <input type="checkbox" name="timetable" value="2015-05-29 20:00:00"> 20:00
      <input type="checkbox" name="timetable" value="2015-05-29 21:00:00"> 21:00
      <input type="checkbox" name="timetable" value="2015-05-29 22:00:00"> 22:00
      <input type="checkbox" name="timetable" value="2015-05-29 23:00:00"> 23:00
    </p>
    <p class="title">2015-05-30:</p>
    <p>
      <input type="checkbox" name="timetable" value="2015-05-30 00:00:00"> 00:00
      <input type="checkbox" name="timetable" value="2015-05-30 01:00:00"> 01:00
      <input type="checkbox" name="timetable" value="2015-05-30 02:00:00"> 02:00
      <input type="checkbox" name="timetable" value="2015-05-30 03:00:00"> 03:00
      <input type="checkbox" name="timetable" value="2015-05-30 04:00:00"> 04:00
      <input type="checkbox" name="timetable" value="2015-05-30 05:00:00"> 05:00
      <input type="checkbox" name="timetable" value="2015-05-30 06:00:00"> 06:00
      <input type="checkbox" name="timetable" value="2015-05-30 07:00:00"> 07:00
      <input type="checkbox" name="timetable" value="2015-05-30 08:00:00"> 08:00
      <input type="checkbox" name="timetable" value="2015-05-30 09:00:00"> 09:00
      <input type="checkbox" name="timetable" value="2015-05-30 10:00:00"> 10:00
      <input type="checkbox" name="timetable" value="2015-05-30 11:00:00"> 11:00
    </p>
    <p>
      <input type="checkbox" name="timetable" value="2015-05-30 12:00:00"> 12:00
      <input type="checkbox" name="timetable" value="2015-05-30 13:00:00"> 13:00
      <input type="checkbox" name="timetable" value="2015-05-30 14:00:00"> 14:00
      <input type="checkbox" name="timetable" value="2015-05-30 15:00:00"> 15:00
      <input type="checkbox" name="timetable" value="2015-05-30 16:00:00"> 16:00
      <input type="checkbox" name="timetable" value="2015-05-30 17:00:00"> 17:00
      <input type="checkbox" name="timetable" value="2015-05-30 18:00:00"> 18:00
      <input type="checkbox" name="timetable" value="2015-05-30 19:00:00"> 19:00
      <input type="checkbox" name="timetable" value="2015-05-30 20:00:00"> 20:00
      <input type="checkbox" name="timetable" value="2015-05-30 21:00:00"> 21:00
      <input type="checkbox" name="timetable" value="2015-05-30 22:00:00"> 22:00
      <input type="checkbox" name="timetable" value="2015-05-30 23:00:00"> 23:00
    </p>
    <p><input type="submit" name="b1" onclick="fsubmit()" value="提交"></p>
  </form>
 </body>
</html>
Salin selepas log masuk

后端代码如下:

<?php$data = $_POST[&#39;timetable&#39;];
file_put_contents(&#39;timetable.log&#39;, json_encode($data));
header(&#39;content-type:applicaiton/json;charset=utf8&#39;);echo json_encode(array(&#39;success&#39;=>true));?>
Salin selepas log masuk


例如要提交某个用户的3天预约数据,所有时段都预约(全选)
后端收到的请求数据如下:

["2015-05-28 00:00:00","2015-05-28 01:00:00","2015-05-28 02:00:00","2015-05-28 03:00:00","2015-05-28 04:00:00","2015-05-28 05:00:00","2015-05-28 06:00:00","2015-05-28 07:00:00","2015-05-28 08:00:00","2015-05-28 09:00:00","2015-05-28 10:00:00","2015-05-28 11:00:00","2015-05-28 12:00:00","2015-05-28 13:00:00","2015-05-28 14:00:00","2015-05-28 15:00:00","2015-05-28 16:00:00","2015-05-28 17:00:00","2015-05-28 18:00:00","2015-05-28 19:00:00","2015-05-28 20:00:00","2015-05-28 21:00:00","2015-05-28 22:00:00","2015-05-28 23:00:00","2015-05-29 00:00:00","2015-05-29 01:00:00","2015-05-29 02:00:00","2015-05-29 03:00:00","2015-05-29 04:00:00","2015-05-29 05:00:00","2015-05-29 06:00:00","2015-05-29 07:00:00","2015-05-29 08:00:00","2015-05-29 09:00:00","2015-05-29 10:00:00","2015-05-29 11:00:00","2015-05-29 12:00:00","2015-05-29 13:00:00","2015-05-29 14:00:00","2015-05-29 15:00:00","2015-05-29 16:00:00","2015-05-29 17:00:00","2015-05-29 18:00:00","2015-05-29 19:00:00","2015-05-29 20:00:00","2015-05-29 21:00:00","2015-05-29 22:00:00","2015-05-29 23:00:00","2015-05-30 00:00:00","2015-05-30 01:00:00","2015-05-30 02:00:00","2015-05-30 03:00:00","2015-05-30 04:00:00","2015-05-30 05:00:00","2015-05-30 06:00:00","2015-05-30 07:00:00","2015-05-30 08:00:00","2015-05-30 09:00:00","2015-05-30 10:00:00","2015-05-30 11:00:00","2015-05-30 12:00:00","2015-05-30 13:00:00","2015-05-30 14:00:00","2015-05-30 15:00:00","2015-05-30 16:00:00","2015-05-30 17:00:00","2015-05-30 18:00:00","2015-05-30 19:00:00","2015-05-30 20:00:00","2015-05-30 21:00:00","2015-05-30 22:00:00","2015-05-30 23:00:00"]
Salin selepas log masuk

这里写图片描述

请求数据content-length:2879

使用这种方式请求数据容量比较大,影响响应时间。

改进方法1:把DateTime格式时间转为时间戳再提交

前端代码修改如下:修改javascript fsubmit方法

  <script type="text/javascript">
    function fsubmit(){
        var timetable = [];
        $("#myform input[type=checkbox]").each(function(){
            if(this.checked){                // 把时间转为时间戳
                var time = $(this).val();                var timestamp = Date.parse(new Date(time));
                timestamp = timestamp / 1000;

                timetable.push(timestamp);
            }
        });        if(timetable.length==0){
            alert(&#39;请选择预约时间&#39;);            return false;
        }

        $.post("http://localhost/server.php",{timetable:timetable}).done(function(data){
            if(data[&#39;success&#39;]==true){
                alert(&#39;提交成功&#39;);                
            }else{
                alert(&#39;提交失败&#39;);
            }
        });

    }  </script>
Salin selepas log masuk

后端收到的请求数据如下:

["1432742400","1432746000","1432749600","1432753200","1432756800","1432760400","1432764000","1432767600","1432771200","1432774800","1432778400","1432782000","1432785600","1432789200","1432792800","1432796400","1432800000","1432803600","1432807200","1432810800","1432814400","1432818000","1432821600","1432825200","1432828800","1432832400","1432836000","1432839600","1432843200","1432846800","1432850400","1432854000","1432857600","1432861200","1432864800","1432868400","1432872000","1432879200","1432882800","1432886400","1432890000","1432893600","1432897200","1432900800","1432904400","1432908000","1432911600","1432915200","1432918800","1432922400","1432926000","1432929600","1432933200","1432936800","1432940400","1432944000","1432947600","1432951200","1432954800","1432958400","1432962000","1432965600","1432969200","1432972800","1432976400","1432980000","1432983600","1432987200","1432990800","1432994400","1432998000"]
Salin selepas log masuk

这里写图片描述

请求数据content-length:1916

后端收到后可把时间戳转为datetime格式使用

改进方法2:使用一个32位的整型变量,把每一小时作为32位整型的其中一位来存储

时段与32位整型的对应关系是
从右至左开始是00:00,01:00,02:00,03:00 以此类推,如果有选择的时段则为1,否则为0

例如:需要预约2016-05-28的 10:00,12:00,14:00,16:00,18:00

 0   0    0   0   0   0   0    0   0  0  0  0  0  1  0  1  0  1  0  1  0  1  0  0  0  0  0  0  0  0  0  0
忽略 忽略 忽略 忽略 忽略 忽略 忽略 忽略 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
Salin selepas log masuk

则用32位二进制表示为 1010101010000000000 即10进制349184 = 2的10次方 + 2的12次方 + 2的14次方 + 2的16次方 + 2的18次方
前端代码修改如下:修改javascript fsubmit方法

  <script type="text/javascript">
    function fsubmit(){
        var timetable = [];        var tmp = {};
        $("#myform input[type=checkbox]").each(function(){
            if(this.checked){                // 拆分日期与时间
                var datetime = $(this).val();                var datetime = datetime.split(&#39; &#39;);                var day = datetime[0];                var time = parseInt(datetime[1].substring(0,2));                // 创建日期与时间数组
                if(typeof(tmp[day])==&#39;undefined&#39;){
                    tmp[day] = [];
                }
                tmp[day].push(time);
            }
        });        // 合拼数据,转换格式
        for(day in tmp){            // 根据数据集合,合拼,创建10进制数据
            var time = tmp[day];            var timeint = 0;            for(var i=0; i<time.length; i++){
                timeint += Math.pow(2,time[i]);
            }

            timetable.push(day+&#39; &#39;+timeint);
        }        if(timetable.length==0){
            alert(&#39;请选择预约时间&#39;);            return false;
        }

        $.post("http://localhost/server.php",{timetable:timetable}).done(function(data){
            if(data[&#39;success&#39;]==true){
                alert(&#39;提交成功&#39;);
            }else{
                alert(&#39;提交失败&#39;);
            }
        });

    }  </script>
Salin selepas log masuk

后端收到的请求数据如下:

["2015-05-28 16777215","2015-05-29 16777215","2015-05-30 16777215"]
Salin selepas log masuk

这里写图片描述

请求数据content-length:107

使用这种方法,一天不管选了多少个预约时段,都只会有一条记录,大量减少提交的数据大小。
后端把10进制转换为时间的方法:
1.把10进制转为2进制,并反转
2.循环判断每一位,记录值为1的
3.记录保存
代码如下:

<?php$datetime = &#39;2015-05-28 1398016&#39;;list($day, $time) = explode(&#39; &#39;, $datetime);$bintime = decbin($time);$bintime = strrev($bintime);$result = array();for($i=0,$len=strlen($bintime); $i<$len; $i++){    if(substr($bintime, $i, 1)==1){        $result[] = $day.&#39; &#39;.str_pad($i, 2, &#39;0&#39;, STR_PAD_LEFT).&#39;:00:00&#39;;
    }
}
print_r($result);?>
Salin selepas log masuk

输出:

Array(
    [0] => 2015-05-28 08:00:00
    [1] => 2015-05-28 10:00:00
    [2] => 2015-05-28 12:00:00
    [3] => 2015-05-28 14:00:00
    [4] => 2015-05-28 16:00:00
    [5] => 2015-05-28 18:00:00
    [6] => 2015-05-28 20:00:00)
Salin selepas log masuk

总结:本文提供一种可以把大量数据转换为小容量数据传输的方法,但需要加入更多的运算。因此实际开发中需根据实际需求来判断是否适合用时间换空间,或空间换时间的算法。

本篇文章讲解了优化客户端调用服务端接口减少请求数据容量,更多相关内容请关注php中文网。

相关推荐:

mysql order by rand() 效率优化方法

php 获取开始日期与结束日期之间所有日期

php 从指定数字中获取随机组合的方法

Atas ialah kandungan terperinci 优化客户端调用服务端接口减少请求数据容量. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1670
14
Tutorial PHP
1276
29
Tutorial C#
1256
24
PHP vs Python: Memahami Perbezaan PHP vs Python: Memahami Perbezaan Apr 11, 2025 am 12:15 AM

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

PHP: Bahasa utama untuk pembangunan web PHP: Bahasa utama untuk pembangunan web Apr 13, 2025 am 12:08 AM

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular Apr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

PHP dalam Tindakan: Contoh dan aplikasi dunia nyata PHP dalam Tindakan: Contoh dan aplikasi dunia nyata Apr 14, 2025 am 12:19 AM

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

Relevannya PHP: Adakah ia masih hidup? Relevannya PHP: Adakah ia masih hidup? Apr 14, 2025 am 12:12 AM

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.

PHP dan Python: Paradigma yang berbeza dijelaskan PHP dan Python: Paradigma yang berbeza dijelaskan Apr 18, 2025 am 12:26 AM

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP vs Bahasa Lain: Perbandingan PHP vs Bahasa Lain: Perbandingan Apr 13, 2025 am 12:19 AM

PHP sesuai untuk pembangunan web, terutamanya dalam pembangunan pesat dan memproses kandungan dinamik, tetapi tidak baik pada sains data dan aplikasi peringkat perusahaan. Berbanding dengan Python, PHP mempunyai lebih banyak kelebihan dalam pembangunan web, tetapi tidak sebaik python dalam bidang sains data; Berbanding dengan Java, PHP melakukan lebih buruk dalam aplikasi peringkat perusahaan, tetapi lebih fleksibel dalam pembangunan web; Berbanding dengan JavaScript, PHP lebih ringkas dalam pembangunan back-end, tetapi tidak sebaik JavaScript dalam pembangunan front-end.

PHP dan Python: Contoh dan perbandingan kod PHP dan Python: Contoh dan perbandingan kod Apr 15, 2025 am 12:07 AM

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

See all articles