色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Polardb數據庫模擬控制智能家居測試案例

電子設計 ? 2018-11-06 09:54 ? 次閱讀

Polardb 是阿里云研發的一種關系型數據庫,與mysql完全兼容,而性能又是其6倍,具有高吞吐,低延遲等特性; 本測試通過模擬控制智能家居開關的終端場景,來體驗polardb的性能;

本測試通過模擬控制智能家居開關的終端場景,來體驗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.sh

mysql -h mypolardb.mysql.polardb.rds.aliyuncs.com --user=mypolardb --password=mypolardb

。/p.sh

如果運行完腳本后,可以看到mysql的提示信息,和mysql大于號提示符,表示可以連接成功;

2、開發

首先搭建創建一個數據庫和一張表用來保存客廳和設備當前信息:

。/p.sh

create 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 device

sprintf(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]?!禸r》’;

//echo $result[0][1]?!禸r》’;

//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 0

case 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

#endif

case 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 device

sprintf(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 device

sprintf(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》

《?php

if(!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》

《?php

if(!empty($_REQUEST[‘arguments’])){

exec(‘。/mysqlv ’.$_REQUEST[‘arguments’]。‘ LAMP03 1’,$result);

//print_r($result);

//echo $result[0][0]?!禸r》’;

//echo $result[0][1]?!禸r》’;

//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》”;

}

?》

作者:云棲社區 tech君

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3845

    瀏覽量

    64614
  • 智能家居
    +關注

    關注

    1929

    文章

    9606

    瀏覽量

    186145
  • 阿里云
    +關注

    關注

    3

    文章

    971

    瀏覽量

    43198
收藏 人收藏

    評論

    相關推薦

    遠程智能家居控制:開啟智能生活新時代

    隨著物聯網技術的發展,遠程智能家居控制走進人們的生活,為大家開啟了智能生活的全新篇章。 遠程智能家居控制讓生活更加便捷。用戶無論身處何地,只
    的頭像 發表于 01-20 13:05 ?91次閱讀

    數據庫是哪種數據庫類型?

    數據庫是一種部署在虛擬計算環境中的數據庫,它融合了云計算的彈性和可擴展性,為用戶提供高效、靈活的數據庫服務。云數據庫主要分為兩大類:關系型數據庫
    的頭像 發表于 01-07 10:22 ?127次閱讀

    數據采集器在智能家居中的應用

    隨著科技的飛速發展,智能家居已經成為現代生活的一個重要組成部分。智能家居系統通過集成各種傳感器、控制器和執行器,實現了家庭環境的自動化和智能化管理。 一、
    的頭像 發表于 11-28 15:51 ?454次閱讀

    基于語音識別技術的智能家居控制系統

    于語音識別的智能控制系統是智能家居的重要組成部分,相比傳統的遙控或觸控方式,基于語音識別控制智能家居系統通過人機語音交互的方式,實現對
    的頭像 發表于 11-19 17:25 ?671次閱讀
    基于語音識別技術的<b class='flag-5'>智能家居</b><b class='flag-5'>控制</b>系統

    PWM在智能家居系統中的應用

    的數字輸出來控制模擬電路的技術。通過改變脈沖的寬度,PWM可以控制模擬信號的大小,從而實現對設備的精確控制。這種技術在電子領域有著廣泛的應用
    的頭像 發表于 11-18 18:09 ?610次閱讀

    數據庫數據恢復—通過拼接數據庫碎片恢復SQLserver數據庫

    一個運行在存儲上的SQLServer數據庫,有1000多個文件,大小幾十TB。數據庫每10天生成一個NDF文件,每個NDF幾百GB大小。數據庫包含兩個LDF文件。 存儲損壞,數據庫
    的頭像 發表于 10-31 13:21 ?303次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—通過拼接<b class='flag-5'>數據庫</b>碎片恢復SQLserver<b class='flag-5'>數據庫</b>

    數據庫數據恢復—SQL Server數據庫出現823錯誤的數據恢復案例

    SQL Server數據庫故障: SQL Server附加數據庫出現錯誤823,附加數據庫失敗。數據庫沒有備份,無法通過備份恢復數據庫。
    的頭像 發表于 09-20 11:46 ?395次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—SQL Server<b class='flag-5'>數據庫</b>出現823錯誤的<b class='flag-5'>數據</b>恢復案例

    智能家居控制系統如何設計

    智能家居控制系統設計是一個復雜而細致的過程,它涉及到多個方面的考慮,包括需求分析、設備選型、系統架構設計、網絡安全、用戶交互以及后期維護等。以下是對智能家居控制系統設計的詳細闡述,旨
    的頭像 發表于 07-23 14:45 ?1692次閱讀

    智能家居控制方式有哪些

    智能家居控制方式多種多樣,這些方式不僅提升了家居生活的便捷性,還使得家居環境更加智能化和個性化。以下是
    的頭像 發表于 07-23 14:30 ?1632次閱讀

    阿里云與中興通訊達成開源數據庫合作

    近日,阿里云與中興通訊宣布達成開源數據庫領域的深度合作。中興通訊正式加入PolarDB開源社區,并榮任首屆理事會成員單位,這一舉措標志著兩大科技巨頭在數據庫領域的合作邁向新的高度。
    的頭像 發表于 05-17 10:47 ?607次閱讀

    阿里云與中興通訊達成開源數據庫合作,助推國產數據庫發展

    據悉,阿里云與中興通訊于5月16日公布了開源數據庫合作事宜。中興通訊正式宣布加入PolarDB開源社區,并擔任首屆理事會成員單位。
    的頭像 發表于 05-16 16:34 ?506次閱讀

    ?通過Modbus讀寫數據庫中的數據

    用Modbus poll測試了,以下是智能網關的網絡參數和測試截圖: 通過智能網關的串口同樣可以讀寫數據庫。IGT-SER系列
    發表于 03-14 13:44

    智能家居控制方案功能與應用

    智能家居時代的到來,讓我們的家居生活更加豐富多彩,不管是在客廳,書房還是廚房以及臥室,整個智能家居都能在智能手機、PAD、電腦進行控制,實現
    的頭像 發表于 02-29 16:18 ?953次閱讀

    智能家居控制解決方案應用

    隨著物聯網和人工智能技術的發展,各個具有特色智能終端通過系統集成,實現了互聯互通互控,智能家居逐漸開始走進千家萬戶。 智能家居控制系統解決方
    的頭像 發表于 02-19 17:46 ?735次閱讀

    數據庫數據恢復】Oracle數據庫ASM實例無法掛載的數據恢復案例

    oracle數據庫ASM磁盤組掉線,ASM實例不能掛載。數據庫管理員嘗試修復數據庫,但是沒有成功。
    的頭像 發表于 02-01 17:39 ?560次閱讀
    【<b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復】Oracle<b class='flag-5'>數據庫</b>ASM實例無法掛載的<b class='flag-5'>數據</b>恢復案例
    主站蜘蛛池模板: 夜夜艹日日干 | 国产亚洲精品高清视频免费 | 色情www日本欧美 | 最近中文字幕2018MV高清在线 | 风情韵味人妻HD | 国产精品成人不卡在线观看 | 蝴蝶中文综合娱乐网2 | 久久视频这里只精品99热在线观看 | 俄罗斯美女破处 | 欧美国产精品久久久乱码 | 中文字幕天堂久久精品 | 国产精品久久久久久久久久久 | 青青青草免费 | 高清国产免费观看视频在线 | 97人人爽人人爽人人人片AV | 国产在线精彩亚洲久久 | 欧美Av无码高清在线 | 在野外被男人躁了一夜动图 | 成人伦理影院 | 成人精品视频在线观看 | 色噜噜色啪在线视频 | 99热国产这里只有精品9九 | 伊人久久大香线蕉综合电影网 | 嫩草伊人久久精品少妇AV网站 | 红尘影院在线观看 | 欧洲最大无人区免费高清完整版 | 扒开粉嫩的小缝末成年小美女 | 色欲天天天综合网免费 | yellow片在线观看免费观看动漫 | 女性性纵欲派对 | 免费看a视频 | 国产精品白浆精子流水合集 | 精品无码久久久久久国产百度 | 日本VA在线视频播放 | 午夜福利视频极品国产83 | 特级毛片s级全部免费 | 色偷拍自怕亚洲在线 | 桃色窝| 中文国产成人精品久久免费 | 色人格影院第四色 | 视频成人app永久在线观看 |