基于智能家居场景的POALRDB性能体验

Polardb 是阿里云研发的一种关系型数据库,与mysql完全兼容,而性能又是其6倍,具有高吞吐,低延迟等特性;

本测试通过模拟控制智能家居开关的终端场景,来体验polardb的性能;

1、环境搭建

1.1 polardb配置

首先需要购买polardb,按照处理器和内存的性能不同,价格也不同,最低的配置为2核4G的polar.mysql.x2.medium规格,包月价格560RMB;

购买以后,就可以通过连接https://polardb.console.aliyun.com/,进入polardb控制台进行相关的配置;选择一个地域节点[如华东1],创建一个实例,然后选择一个集群列表,创建一个集群。创建好后,可以看到数据库类型为POLARDB (MySQL 5.6),付费类型和到期时间分别为包月和一个月的长度;在创建时配置好初始账号和密码就可以使用了;在集群页面,鼠标点击右侧的管理连接,进入集群信息页面,可以看到公网联接的地址,是用户账号名开始的连接,后面是mysql常用的端口号3306,记录下这个后面连接用的到;

集群连接地址 (公网) : mypolardb.mysql.polardb.rds.aliyuncs.com:3306 ,这里我的账号配置为mypolardb,所以这里以mypolardb开头;

在上面的白名单列表 中,点击后面的笔状修改按钮,将我们用来连接数据库的ecs 服务器地址添加到里面;这里我的服务器地址为47.94.219.162.

1.2 ECS服务器配置:

由于需要在web页面上进行结果测试,先安装nginx服务器,使用以下命令行进行安装:

sudo apt-get install nginx 

安装好后,在浏览器中输入 ECS的地址[这里测试的是:47.94.219.162],可以看到nginx的欢迎界面,表示安装成功;

由于后面需要用php脚本程序开发,所以还需要安装php,在console窗口输入以下命令安装:

sudo apt-get install php*

安装好后,输入下面的命令修改nginx的配置:

sudo vi /etc/nginx/sites-available/default

将文件中的下面四段打开:

location ~ \.php$ {include snippets/fastcgi-php.conf;fastcgi_pass unix:/run/php/php7.0-fpm.sock;}

保存退出,然后重启nginx:

service nginx restart

进入/var/www/html目录,创建一个php文件,测试是否php安装成功:

vi phpinfo.php<?php phpinfo(); >

在浏览器访问这个文件,如果可以看到相关的php信息,则表明php安装成功;

进入域名控制台,选择要解析的域名,点击解析连接,添加一条A记录,主机记录起一个容易记住的名字,比如:polardb,记录值选择ECS的ip地址,比如:47.94.219.162,然后创建完成后,等待5分钟,在浏览器访问一下新的域名,比如polardb.xunyun17.xyz,如果同样能看到nginx 的欢迎界面,表示域名解析成功;

由于本智能家居场景使用mysql开发体验,所以还需要在ubuntu里,安装mysql,运行下面的命令进行安装:

sudo apt install mysql-client

安装完mysql后,建立一个shell脚本,测试是否可以连接到polardb上:

vi p.shmysql -h mypolardb.mysql.polardb.rds.aliyuncs.com --user=mypolardb --password=mypolardb./p.sh

如果运行完脚本后,可以看到mysql的提示信息,和mysql大于号提示符,表示可以连接成功;

2、开发

首先搭建创建一个数据库和一张表用来保存客厅和设备当前信息:

./p.shcreate database keting;use keting;CREATE TABLE status (devname VARCHAR(20), value int(4),changetime DATETIME);insert into status(devname,value,changetime) values ('TV0001',0,NOW()), ('LAMP01',1,NOW()),('CURN01',1,NOW()); 

然后通过mysql的c语言api接口,编写一段程序,来读取status设备表中的设备状态:

query lamp devicesprintf(str_cmd,"select value from status where devname='LAMP01'");//printf("\n%s\n.",str_cmd);no_res = 0;if(mysql_query(conn, str_cmd)){printf("<<<<<<<\n");exit(1);}res = mysql_use_result(conn);if(no_res==0){while((row = mysql_fetch_row(res)) != NULL){//        printf("%s \n", row[0]);if(selno==17) printf("%s", row[0]);else         printf("%s\t %s\t %s", row[0],row[1],row[2]);}} mysql_free_result(res);sprintf(str_cmd,"select value from status where devname='CURN01'");//printf("\n%s\n.",str_cmd);no_res = 0;

下一步,就是用php脚本调用这段代码查询设备状态,并且显示在网页上:查询结果在

 使用以下php代码实现:

 if(!empty($_REQUEST['arguments'])){exec('./mysqlv '.$_REQUEST['arguments'].' LAMP03 1',$result);//print_r($result);//echo $result[0][0].'<br>';//echo $result[0][1].'<br>';//echo $result[0][2];if($result[0][0]==0) $s1 = 'OFF';else $s1 = 'ON';if($result[0][1]==0) $s2 = 'OFF';else $s2 = 'ON';if($result[0][2]==0) $s3 = 'OFF';else $s3 = 'ON';if($_REQUEST['arguments']==17) echo "<center><table border=\"1\"><tr><th>电视</th><th>灯</th><th>窗帘</th></tr><tr><td>".$s1."</td><td>".$s2."</td><td>".$s3."</td></tr></table></center>";

打开浏览器运行这个php脚本,点击运行按钮,可以看到页面会显示一个设备状态表格,包括电视,灯,窗帘是否有打开或关闭;

 

接下来,用c语言写一个socket监听程序,用来监听后续远程设备对智能家居的更新请求,并实现状态更新,代码如下:

   n = read(sock,buffer,255);if (n < 0) {perror("ERROR reading from socket");exit(1);}strncpy(devname,buffer,6);devname[6]=0;devval=buffer[6]-'0';memset(cmdstr,0,256);sprintf(cmdstr,"./mysqlv 15 %s %i",devname,devval);printf("%s.\n",cmdstr);system(cmdstr);printf("Here is the message: %s\n",buffer);n = write(sock,"I got your message",18);

服务端监听程序编写好以后,就可以开始写模拟设备端的程序:

同样使用c语言的socket函数进行编写,将命令行的数据发往服务器端:

/* Now connect to the server */if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {perror("ERROR connecting");exit(1);}/* Now ask for a message from the user, this message* will be read by server*/printf("Please enter the message: ");bzero(buffer,256);strcpy(buffer, argv[3]);//fgets(buffer,255,stdin);/* Send message to the server */n = write(sockfd, buffer, strlen(buffer));if (n < 0) {perror("ERROR writing to socket");exit(1);}

最后,还要修改我们的mysqlv.c的数据库调用代码,将命令行参数更改到数据库中:

sprintf(str_cmd,"update status set value=%d  where devname=\'%s\'",atoi(argc[3]),argc[2]);

3、测试

当服务器和客户端的程序都完成后,就可以进行测试了;首先在服务器上,用以下命令行后台运行监听程序:

./s&

然后在本地运行模拟设备程序,例如我们要运行将灯打开的命令,用下面的命令行:

./c 47.94.219.162 8266 LAMP011

如果收到服务器的回显消息,则表示发送成功;

打开浏览器,运行php脚本,点击运行按钮,可以看到页面出现了最新设备状态的表格信息;

结论与建议:可以看到这个polardb的新型数据库,还是和mysql兼容的,操作起来也比较方便;

如果能够像其他阿里云的产品也提供相关的restful api接口,将会使开发变得更方便和快捷;

 

4、附录和截图

操作polardb 的mysqlv完整程序:

#include <mysql/mysql.h>#include <stdio.h>#include <stdlib.h>#include <string.h>int main(int argv,char**argc){MYSQL *conn;MYSQL_RES *res;MYSQL_ROW row;char server[] = "47.98.24.120";char user[] = "mypolardb";char password[] = "mypolardb";char database[] = "mysql";char str_cmd[250]; int no_res = 0;int selno=0;if(argv<2) {printf("mysqlv funcno.\n");return 0;}conn = mysql_init(NULL);if(!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)){printf(">>>>>>>\n");exit(1);}selno = atoi(argc[1]);//    printf("selno:%d\n<br>",selno);switch(selno){case 1:strcpy(str_cmd,"select version()");break;case 2:strcpy(str_cmd,"select current_date");break;case 3:strcpy(str_cmd,"show databases");break;case 4:strcpy(str_cmd,"create database keting");no_res = 1;break;case 5:strcpy(str_cmd,"drop database keting");no_res = 1;break;case 6:strcpy(str_cmd,"create database woshi");no_res = 1;break;case 7:strcpy(str_cmd,"drop database woshi");no_res = 1;break;case 8:strcpy(str_cmd,"create database chufang");no_res = 1;break;case 9:strcpy(str_cmd,"drop database chufang");no_res = 1;break;case 10:strcpy(str_cmd,"use keting");no_res = 1;break;case 11:strcpy(str_cmd,"use woshi");no_res = 1;break;case 12:strcpy(str_cmd,"use chufang");no_res = 1;break;#if 0case 13:strcpy(str_cmd,"show tables");//no_res = 1;break;/*table operate for keting*/case 14:strcpy(str_cmd,"CREATE TABLE prop (devname VARCHAR(20), value int(4))");//no_res = 1;break;n#endifcase 15:strcpy(str_cmd,"describe prop");//no_res = 1;break;case 16:strcpy(str_cmd,"drop table if exists prop");//no_res = 1;break;}if(selno==13){strcpy(str_cmd,"use keting");if(mysql_query(conn, str_cmd)){printf("<<<<<<<\n");exit(1);}strcpy(str_cmd,"show tables");no_res = 0;}if(selno==14){strcpy(str_cmd,"use keting");if(mysql_query(conn, str_cmd)){printf("<<<<<<<\n");exit(1);}strcpy(str_cmd,"select * from prop;");no_res = 0;}if(selno==15){strcpy(str_cmd,"use keting");if(mysql_query(conn, str_cmd)){printf("<<<<<<<\n");exit(1);}//     sprintf(str_cmd,"insert into prop(devname,value,changetime) values (\'%s\',%i,NOW())",argc[2],atoi(argc[3]));sprintf(str_cmd,"update status set value=%d  where devname=\'%s\'",atoi(argc[3]),argc[2]);printf("\n%s\n.",str_cmd);no_res = 1;}if(selno==16){strcpy(str_cmd,"use keting");if(mysql_query(conn, str_cmd)){printf("<<<<<<<\n");exit(1);}sprintf(str_cmd,"delete from prop where devname='my_dev'");printf("\n%s\n.",str_cmd);no_res = 1;}if(selno==17){strcpy(str_cmd,"use keting");if(mysql_query(conn, str_cmd)){printf("<<<<<<<\n");exit(1);}query tv devicesprintf(str_cmd,"select value from status where devname='TV0001'");//printf("\n%s\n.",str_cmd);no_res = 0;if(mysql_query(conn, str_cmd)){printf("<<<<<<<\n");exit(1);}res = mysql_use_result(conn);if(no_res==0){while((row = mysql_fetch_row(res)) != NULL){//        printf("%s \n", row[0]);if(selno==17) printf("%s", row[0]);else         printf("%s\t %s\t %s", row[0],row[1],row[2]);}} mysql_free_result(res);query lamp devicesprintf(str_cmd,"select value from status where devname='LAMP01'");//printf("\n%s\n.",str_cmd);no_res = 0;if(mysql_query(conn, str_cmd)){printf("<<<<<<<\n");exit(1);}res = mysql_use_result(conn);if(no_res==0){while((row = mysql_fetch_row(res)) != NULL){//        printf("%s \n", row[0]);if(selno==17) printf("%s", row[0]);else         printf("%s\t %s\t %s", row[0],row[1],row[2]);}} mysql_free_result(res);sprintf(str_cmd,"select value from status where devname='CURN01'");//printf("\n%s\n.",str_cmd);no_res = 0;}//printf("finish! \n");if(mysql_query(conn, str_cmd)){printf("<<<<<<<\n");exit(1);}res = mysql_use_result(conn);if(no_res==0){if(selno==14)printf("DEVICE VALUE TIMESTAMP<br>");while((row = mysql_fetch_row(res)) != NULL){//        printf("%s", row[0]);if(selno==17) printf("%s\t ", row[0]);else       printf("%s\t %s\t %s", row[0],row[1],row[2]);}} mysql_free_result(res);mysql_close(conn);/* printf("finish! \n");printf("finish! <br>");*/return 0;}

server.c服务器监听的完整程序:

#include <stdio.h>#include <stdlib.h>#include <netdb.h>#include <netinet/in.h>#include <string.h>void doprocessing (int sock);int main( int argc, char *argv[] ) {int sockfd, newsockfd, portno, clilen;char buffer[256];struct sockaddr_in serv_addr, cli_addr;int n, pid;/* First call to socket() function */sockfd = socket(AF_INET, SOCK_STREAM, 0);if (sockfd < 0) {perror("ERROR opening socket");exit(1);}/* Initialize socket structure */bzero((char *) &serv_addr, sizeof(serv_addr));portno = 8266;//5001;serv_addr.sin_family = AF_INET;serv_addr.sin_addr.s_addr = INADDR_ANY;serv_addr.sin_port = htons(portno);/* Now bind the host address using bind() call.*/if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {perror("ERROR on binding");exit(1);}/* Now start listening for the clients, here* process will go in sleep mode and will wait* for the incoming connection*/listen(sockfd,5);clilen = sizeof(cli_addr);while (1) {newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);if (newsockfd < 0) {perror("ERROR on accept");exit(1);}/* Create child process */pid = fork();if (pid < 0) {perror("ERROR on fork");exit(1);}if (pid == 0) {/* This is the client process */close(sockfd);doprocessing(newsockfd);exit(0);}else {close(newsockfd);}} /* end of while */}void doprocessing (int sock) {int n;char buffer[256];char cmdstr[256];char devname[10];int devval=0;bzero(buffer,256);n = read(sock,buffer,255);if (n < 0) {perror("ERROR reading from socket");exit(1);}strncpy(devname,buffer,6);devname[6]=0;devval=buffer[6]-'0';memset(cmdstr,0,256);sprintf(cmdstr,"./mysqlv 15 %s %i",devname,devval);printf("%s.\n",cmdstr);system(cmdstr);printf("Here is the message: %s\n",buffer);n = write(sock,"I got your message",18);if (n < 0) {perror("ERROR writing to socket");exit(1);}if(buffer[0]=='z') exit(1);}

client.c客户端模拟设备的完整程序:

#include <stdio.h>#include <stdlib.h>#include <netdb.h>#include <netinet/in.h>#include <string.h>int main(int argc, char *argv[]) {int sockfd, portno, n;struct sockaddr_in serv_addr;struct hostent *server;char buffer[256];if (argc < 3) {fprintf(stderr,"usage %s hostname port devsw\n", argv[0]);exit(0);}portno = atoi(argv[2]);/* Create a socket point */sockfd = socket(AF_INET, SOCK_STREAM, 0);if (sockfd < 0) {perror("ERROR opening socket");exit(1);}server = gethostbyname(argv[1]);if (server == NULL) {fprintf(stderr,"ERROR, no such host\n");exit(0);}bzero((char *) &serv_addr, sizeof(serv_addr));serv_addr.sin_family = AF_INET;bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length);serv_addr.sin_port = htons(portno);/* Now connect to the server */if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {perror("ERROR connecting");exit(1);}/* Now ask for a message from the user, this message* will be read by server*/printf("Please enter the message: ");bzero(buffer,256);strcpy(buffer, argv[3]);//fgets(buffer,255,stdin);/* Send message to the server */n = write(sockfd, buffer, strlen(buffer));if (n < 0) {perror("ERROR writing to socket");exit(1);}/* Now read server response */bzero(buffer,256);n = read(sockfd, buffer, 255);if (n < 0) {perror("ERROR reading from socket");exit(1);}printf("%s\n",buffer);return 0;}

p.php脚本结果显示的完整程序;

<html><head><title>小白的智能家居</title></head><body><?phpif(!empty($results)){//    echo $results;}?><center>小白的智能家居</center><form method="post" action=""><select name="arguments"><option value ="17" selected="selected">显示客厅状态</option></select><input type="submit" name="Submit" value="运行" /></form></body></html><?phpif(!empty($_REQUEST['arguments'])){exec('./mysqlv '.$_REQUEST['arguments'].' LAMP03 1',$result);//print_r($result);//echo $result[0][0].'<br>';//echo $result[0][1].'<br>';//echo $result[0][2];if($result[0][0]==0) $s1 = 'OFF';else $s1 = 'ON';if($result[0][1]==0) $s2 = 'OFF';else $s2 = 'ON';if($result[0][2]==0) $s3 = 'OFF';else $s3 = 'ON';if($_REQUEST['arguments']==17) echo "<center><table border=\"1\"><tr><th>电视</th><th>灯</th><th>窗帘</th></tr><tr><td>".$s1."</td><td>".$s2."</td><td>".$s3."</td></tr></table></center>";}?>


阿里云双十一1折拼团活动:满6人,就是最低折扣了!
【满6人】1核2G云服务器99.5元一年298.5元三年 2核4G云服务器545元一年 1227元三年
【满6人】1核1G MySQL数据库 119.5元一年
【满6人】3000条国内短信包 60元每6月
参团地址:http://click.aliyun.com/m/1000020293/


原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

云计算软件生态圈:摸到一把大牌

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 老姜责编 | 阿秃出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;“我觉得我摸着了一把大牌。”软件领域的新锐企业——有赞公司创始人兼CEO白鸦在转向SaaS领域的一个细分市场时&#xff0c;曾对天使投资人…

箱梁终张拉后弹性上拱度计算_高速铁路预应力简支箱梁反拱预设分析

高速铁路预应力简支箱梁反拱预设分析关叶沆1&#xff0c;吴成龙1&#xff0c;王玲1【摘要】结合成贵铁路宜宾制梁场后张法预应力简支箱梁制作的具体情况&#xff0c;对梁体预设反拱理论计算及设置方法进行分析&#xff0c;并通过对箱梁梁体徐变及上拱度测量数据进行统计分析&am…

一体台式计算机名称,【一体台式电脑】一体台式电脑品牌推荐,台式一体机电脑哪款好_什么值得买...

1. Apple 苹果 MXWT2CH/A iMac(2019)27英寸一体机 8GB 2666MHZ DDR4 内存商品简介&#xff1a;Apple 苹果 iMac(2019)27英寸一体机保留了前代产品的27英寸5K屏幕(分辨率5120 x 2880&#xff0c;DCI-P3色域)对比上代Retina视网膜屏幕电脑&#xff0c;外观没有变化&#xff0c;主…

linux shell脚本 删除指定目录下文件夹(可指定文件夹名、时间)

情景&#xff1a;需要删除以201812开头的、6天前修改的文件夹&#xff08;文件夹里包含文件&#xff09;。鼓捣了好一会&#xff0c;开始用find /home/users/niu/test/log/ -name 201812* -type d -mtime 5 -exec rm -f {} \; 会报错&#xff1a;no such file or dire…

SLS机器学习介绍(02):时序聚类建模

文章系列链接 SLS机器学习介绍&#xff08;01&#xff09;&#xff1a;时序统计建模SLS机器学习介绍&#xff08;02&#xff09;&#xff1a;时序聚类建模SLS机器学习介绍&#xff08;03&#xff09;&#xff1a;时序异常检测建模SLS机器学习介绍&#xff08;04&#xff09;&a…

蚂蚁金服金融级容器引擎实践之路

小蚂蚁说&#xff1a; 在金融级分布式架构中使用容器&#xff0c;许多企业的开发者都面临许多挑战。在2018年ATEC蚂蚁金服技术探索大会上&#xff0c;蚂蚁金服高级技术专家盛延敏在演讲中分析了容器与云原生技术的本质&#xff0c;为容器在分布式架构上的使用带来了实用高效的…

【耿老师公开课】反转!物联网火爆,开发者却很难入门?

戳蓝字“CSDN云计算”关注我们哦&#xff01;在 2019 北京网络安全大会上&#xff0c;工信部负责人表示&#xff0c;我国面向 5G 和车联网将建设网安防护体系&#xff0c;提升监测预警和应急响应能力。其中物联网设备已成为网安防护新重点。为什么工信部会这么重视物联网&#…

rust腐蚀怎么单人游戏_腐蚀游戏怎么提高帧数 Rust设置隐藏画质提高FPS教程

腐蚀游戏怎么提高帧数 Rust设置隐藏画质提高FPS教程2018-03-04 10:58:10来源&#xff1a;游戏下载编辑&#xff1a;云曼衍评论(0)《腐蚀(Rust)》已经正式上市发售了&#xff0c;因为游戏的配置比较高&#xff0c;有的玩家在玩游戏的时候画面总是达不到自己想要的效果。今天小编…

哈工大未来计算机院士,2017年中国高校新增工程院院士名单出炉,哈工大依然很强!...

原标题&#xff1a;2017年中国高校新增工程院院士名单出炉&#xff0c;哈工大依然很强&#xff01;院士是一个国家在科学技术方面的最高称号&#xff0c;不光在我们国家有&#xff0c;其他很多国家也有院士称号。而我国的院士一般都是指中国工程院院士和中国科学院院士&#xf…

使用NAS动态存储卷创建有状态应用

介绍&#xff1a; 目前动态生成NAS存储卷的实现&#xff1a;在一个已有文件系统上&#xff0c;自动生成子文件系统&#xff08;子目录&#xff09;&#xff0c;并生成目标存储卷&#xff08;PV&#xff09;&#xff1b; 生成的PV名字为&#xff1a;pvc-${pv-uid} 镜像介绍&a…

vue项目使用sass-loader

npm install -g cnpm --registryhttps://registry.npm.taobao.orgcnpm install node-sass --save-dev cnpm install sass-loader --save-dev

WAM计算机术语,最新的计算机一级考试MSOffice模拟试题及答案

A、数据处理B、文献检索C、资源共享和传输D、传输28&#xff0e;PowerPoint中&#xff0c;下列说法错误的是。DA、允许插入在其他图形程序中创建的图片B、为了将某种格式的图片插入到POWERPOINT中&#xff0c;必须安装相应的图形过滤器C、选择插入菜单中的"图片"命令…

老司机开车,教会女朋友什么是「马拉车算法」

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 李威责编 | 阿秃马拉车算法&#xff08; Manacher‘s Algorithm &#xff09;是小吴最喜欢的算法之一&#xff0c;因为&#xff0c;它真的很牛逼&#xff01;马拉车算法是用来 查找一个字符串的最长回文子串的线性方法 &…

l3asnumanode 设置_linux numa 配置

Cassandra操作 本文档操作都是在单数据中心&#xff0c;Vnode上操作1.1. 添加节点到集群中 1.1.1. 添加非seed单节点 1.在新节点上安装Cassandra&#xff0c;但不要启动2.修改cassandra.yaml文件&#xff1a;cluster_name – 新节点加入集群名称listen_address/rpc_address – …

实时计算 Flink性能调优

自动配置调优 实时计算 Flink新增自动调优功能autoconf。能够在流作业以及上下游性能达到稳定的前提下&#xff0c;根据您作业的历史运行状况&#xff0c;重新分配各算子资源和并发数&#xff0c;达到优化作业的目的。更多详细说明请您参阅自动配置调优。 首次智能调优 创建…

VS Code 大佬高效开发插件

插件名称功能Chinese (Simplified) Language中文菜单界面ESLint代码检查工具veturVue.js智能提示Git History DiffGit版本记录显示工具GitLens — Git supercharged增强版的 Git 管理工具Auto Close Tag自动关闭标签Auto Rename Tag修改HTML标签&#xff0c;修改一个另一个自动…

双11期间,请关爱程序员!

世界上有这么一群人~ 双11期间&#xff0c;请关爱程序员&#xff01; 世界上最远的距离 不是天涯海角 而是你在狂欢 我在敲代码&#xff0c;改bug 致敬所有的程序员欧巴 愿代码的世界&#xff0c;只有爱&#xff0c;没有伤害&#xff01;&#xff01; 如果你是程序员的…

神作!3万程序员在学,这本深度学习宝典刷爆IT圈!

深度学习在过去5年处于爆发式增长状态&#xff0c;在人工智能领域占据主导地位。据Gartner统计&#xff0c;深度学习的专家职位从2014年之后才开始出现&#xff0c;不过到2018年&#xff0c;市面上大概就有40,000多深度学习专家的职位空缺。而且这些需求大多来自Facebook、Appl…

计算机软件中汇编程序是一种,计算机系统软件中的汇编程序是一种()。

摘要&#xff1a;疼痛&#xff0c;计算机系件中热、痛皮色不红、不&#xff0c;为E&#xff0c;缓者则痛得暖。下列和间关于直接经验接经验&#xff0c;编程的说错误法有。形式认识这种属于&#xff0c;计算机系件中香味人闻果的一个到苹&#xff0c;莱果的颜色看到。...疼痛&a…