- 浏览: 7048 次
- 来自: 上海
最新评论
云平台编程与开发(三):创建基于X5Cloud云平台的Hello World程序(运行在Android的手机、平板上)
- 博客分类:
- 云平台 云计算 Java Android
云平台编程与开发(三):创建基于X5Cloud云平台的Hello World程序(运行在Android的手机、平板上)
http://blog.sina.com.cn/s/blog_85e4309c0100u7mb.html
如何创建基于X5Cloud的Hello World程序(运行在Android的手机、平板上)
基于X5 SDK开发一个简单的Hello World程序,详细步骤如下:(1)下载X5 SDK包,并到X5Cloud首页(www.x5cloud.com)注册一个新用户账号。注册成功后,登录进入主控界面之个人资料,获得该用户账号对应的唯一用户编号(16位数字)。(2)准备Android开发环境,本测试基于【WindowsXp+MyEclipse8.5+Android SDK2.2+X5 SDK包】另:ADT(Android开发工具包)需要到MyEclipse8.5帮助里的软件工作环境中心去更新下载;Android的SDK2.2里的库文件以及开发工具包最好更新下载完整。
----------X5 SDK包 (官方下载地址)
----------MyEclipse8.5 (官方下载地址)
----------Android SDK2.2 (官方下载地址)(4)在本地打开eclipse,导入Hello World程序源代码(点此下载)。另:附上一个基于Android上的 x5应用小项目GoodsManagerSys程序源码下载 (点此下载)(5)参见如下Hello World源码部分截选,要运行Hello World程序,需将源代码中涉及到的用户唯一编号更改为自己所注册账号对应的用户编号;同时要注意将服务器域名确认设置为“service.x5cloud.com”(参见如下红色粗体代码部分)。【工程Hello world的结构图】 DataBase类:
package com.infobase; import java.util.ArrayList; import java.util.List; import x5.database.X5Persist; import x5.exception.X5Exception; public class DataBase { private static String userid="8888888888888888"; //userid唯一编号 private static int dbtype=1; //dbtype private static String dbname="android"; //dbname private static String serverip="service.x5cloud.com"; //serverip服务器域名 public boolean createDB(){ //实例化,把标志身份的userid传过去 X5Persist x5=new X5Persist(userid,dbtype,dbname,serverip); int count=-1; try { //调用方法,返回int值大于或等于零为创库成功 count=x5.createDB(); } catch (X5Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); return false; }finally{ if(count>=0){ System.out.println("创建数据库成功"); return true; } } return true; } public void createTable(){ //创建sqlserver表的sql语句 String sql="create table mytable" + "(user_id int not null," + "user_name varchar(20) not null," + "user_psw varchar(20) not null" + ")"; //实例化,把标志身份的userid传过去 X5Persist x5=new X5Persist(userid,dbtype,dbname,serverip); int count=-1; try { //调用方法,返回int值大于或等于零为创建表成功 count = x5.persist(sql); } catch (X5Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } if(count>=0){ System.out.println("成功!受影响行数为:"+count); } } public void insertData(){ String str1="insert into mytable(user_name,user_psw) values('android','admin')"; String str2="insert into mytable(user_name,user_psw) values('infobase','admin')"; List sql=new ArrayList(); sql.add(str1); sql.add(str2); int istransaction=1; //实例化,把标志身份的userid传过去 X5Persist x5=new X5Persist(userid,dbtype,dbname,serverip); boolean flag=false; try { //调用方法,返回boolean值标识是否执行成功 flag = x5.x5job(sql,istransaction); } catch (X5Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } if(flag){ System.out.println("成功!"); } } }
Initialize类:
package com.infobase; public class Initialize { public boolean Init(){ DataBase db=new DataBase(); if(db.createDB()){ // 数据库创建成功; db.insertData(); db.createTable(); return true; }else{ return false; } // 数据库已存在,使用存在的数据库 } }
SelectTable类:
package com.infobase; import x5.database.X5DBResult; import x5.database.X5Persist; import x5.exception.X5Exception; public class SelectTable { public static X5DBResult doGetResult() throws X5Exception { String sql="select * from mytable where user_id<?"; Object []objs=new Object[]{1000}; String userid="8888888888888888"; //userid int dbtype=1; //dbtype String dbname="android"; //dbname String serverip="service.x5cloud.com"; //serverip //实例化,把标志身份的userid传过去 X5Persist x5=new X5Persist(userid,dbtype,dbname,serverip); //带参数的查询,返回结果集 X5DBResult rs=x5.select(sql,objs); return rs; } }
User类:
package com.infobase; public class User{ private String username; private String password; public String getUsername(){ return username; } public void setUsername(String username){ this.username=username; } public String getPassword(){ return password; } public void setPassword(String password){ this.password=password; } }
Cache类:
package com.infobase; public class Cache{ private User User; private Cache(){ } private static class CacheHolder{ private static final Cache INSTANCE=new Cache(); } public static Cache getInstance(){ return CacheHolder.INSTANCE; } public User getUser(){ return User; } public void setUser(User User){ this.User=User; } }
LoginActivity类:
package com.infobase; import x5.database.X5DBResult; import x5.exception.X5Exception; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class LoginActivity extends Activity { //用户名及密码验证 private void checkedData() throws X5Exception{ String username=((EditText)findViewById(R.id.username)).getText().toString(); String password=((EditText)findViewById(R.id.password)).getText().toString(); User user=new User(); user.setUsername(username); user.setPassword(password); //判定登录与否的result boolean result=false; SelectTable st=new SelectTable(); //X5.database.X5DBResult类 //该类为查询数据库得到的结果集 X5DBResult rs=st.doGetResult(); //hasNext()方法返回Boolean值,判断是否还有下一行记录 while(rs.hasNext()){ if(rs.getObject(2).toString().equals(user.getUsername()) &rs.getObject(3).toString().equals(user.getPassword().toString())){ result=true; } } if(result){ Cache.getInstance().setUser(user); //输入正确提示框 Toast.makeText(getApplicationContext(),"登录成功",1000).show(); Intent intent=new Intent(); //正确后跳转到WelcomeActivity intent.setClass(LoginActivity.this,WelcomeActivity.class); startActivity(intent); }else{ //输入不正确提示框 Toast.makeText(LoginActivity.this,"密码或用户名不匹配,请重新输入!",1000).show(); } } //申明login_button_listener public Button.OnClickListener login_button_listener=new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub try { checkedData(); } catch (X5Exception e) { // TODO Auto-generated catch block e.printStackTrace(); Toast.makeText(getApplicationContext(),"数据库连接不上",1000).show(); } } }; //监听并响应按钮的‘单击’事件 public void find_and_modify_listener(){ Button login_button=(Button)findViewById(R.id.login); login_button.setOnClickListener(login_button_listener); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //主界面显示后数据源的初始化 Initialize initialize=new Initialize(); if(initialize.Init()){ Toast.makeText(getApplicationContext(),"数据初始化完成",1000).show(); }else{ Toast.makeText(getApplicationContext(),"数据源已存在或者数据库连接不上",1000).show(); } find_and_modify_listener(); } }
WelcomeActivity类:
package com.infobase; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class WelcomeActivity extends Activity{ public void onCreate(Bundle icesky){ super.onCreate(icesky); setContentView(R.layout.welcome); TextView tv=(TextView)findViewById(R.id.tv); tv.setText("Welcome "+Cache.getInstance().getUser().getUsername()+"!"); } }
main.xml文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:text="username" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/username" android:layout_height="wrap_content" android:layout_width="match_parent" /> <TextView android:text="password" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/password" android:layout_height="wrap_content" android:layout_width="match_parent" android:inputType="textPassword" /> <Button android:text="Login" android:id="@+id/login" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
主界面显示如下:welcome.xml类:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:text="Welcome!" android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
欢迎界面显示如下:AndroidManifest.xml文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.infobase" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".LoginActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".WelcomeActivity"></activity> </application> <!-- 访问internet权限 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 往SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 单元测试 --> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.changcheng.web.client" android:label="Tests for My App" /> </manifest>
http://blog.sina.com.cn/s/blog_85e4309c0100u7mb.html
如何创建基于X5Cloud的Hello World程序(运行在Android的手机、平板上)
基于X5 SDK开发一个简单的Hello World程序,详细步骤如下:(1)下载X5 SDK包,并到X5Cloud首页(www.x5cloud.com)注册一个新用户账号。注册成功后,登录进入主控界面之个人资料,获得该用户账号对应的唯一用户编号(16位数字)。(2)准备Android开发环境,本测试基于【WindowsXp+MyEclipse8.5+Android SDK2.2+X5 SDK包】另:ADT(Android开发工具包)需要到MyEclipse8.5帮助里的软件工作环境中心去更新下载;Android的SDK2.2里的库文件以及开发工具包最好更新下载完整。
----------X5 SDK包 (官方下载地址)
----------MyEclipse8.5 (官方下载地址)
----------Android SDK2.2 (官方下载地址)(4)在本地打开eclipse,导入Hello World程序源代码(点此下载)。另:附上一个基于Android上的 x5应用小项目GoodsManagerSys程序源码下载 (点此下载)(5)参见如下Hello World源码部分截选,要运行Hello World程序,需将源代码中涉及到的用户唯一编号更改为自己所注册账号对应的用户编号;同时要注意将服务器域名确认设置为“service.x5cloud.com”(参见如下红色粗体代码部分)。【工程Hello world的结构图】 DataBase类:
package com.infobase; import java.util.ArrayList; import java.util.List; import x5.database.X5Persist; import x5.exception.X5Exception; public class DataBase { private static String userid="8888888888888888"; //userid唯一编号 private static int dbtype=1; //dbtype private static String dbname="android"; //dbname private static String serverip="service.x5cloud.com"; //serverip服务器域名 public boolean createDB(){ //实例化,把标志身份的userid传过去 X5Persist x5=new X5Persist(userid,dbtype,dbname,serverip); int count=-1; try { //调用方法,返回int值大于或等于零为创库成功 count=x5.createDB(); } catch (X5Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); return false; }finally{ if(count>=0){ System.out.println("创建数据库成功"); return true; } } return true; } public void createTable(){ //创建sqlserver表的sql语句 String sql="create table mytable" + "(user_id int not null," + "user_name varchar(20) not null," + "user_psw varchar(20) not null" + ")"; //实例化,把标志身份的userid传过去 X5Persist x5=new X5Persist(userid,dbtype,dbname,serverip); int count=-1; try { //调用方法,返回int值大于或等于零为创建表成功 count = x5.persist(sql); } catch (X5Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } if(count>=0){ System.out.println("成功!受影响行数为:"+count); } } public void insertData(){ String str1="insert into mytable(user_name,user_psw) values('android','admin')"; String str2="insert into mytable(user_name,user_psw) values('infobase','admin')"; List sql=new ArrayList(); sql.add(str1); sql.add(str2); int istransaction=1; //实例化,把标志身份的userid传过去 X5Persist x5=new X5Persist(userid,dbtype,dbname,serverip); boolean flag=false; try { //调用方法,返回boolean值标识是否执行成功 flag = x5.x5job(sql,istransaction); } catch (X5Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } if(flag){ System.out.println("成功!"); } } }
Initialize类:
package com.infobase; public class Initialize { public boolean Init(){ DataBase db=new DataBase(); if(db.createDB()){ // 数据库创建成功; db.insertData(); db.createTable(); return true; }else{ return false; } // 数据库已存在,使用存在的数据库 } }
SelectTable类:
package com.infobase; import x5.database.X5DBResult; import x5.database.X5Persist; import x5.exception.X5Exception; public class SelectTable { public static X5DBResult doGetResult() throws X5Exception { String sql="select * from mytable where user_id<?"; Object []objs=new Object[]{1000}; String userid="8888888888888888"; //userid int dbtype=1; //dbtype String dbname="android"; //dbname String serverip="service.x5cloud.com"; //serverip //实例化,把标志身份的userid传过去 X5Persist x5=new X5Persist(userid,dbtype,dbname,serverip); //带参数的查询,返回结果集 X5DBResult rs=x5.select(sql,objs); return rs; } }
User类:
package com.infobase; public class User{ private String username; private String password; public String getUsername(){ return username; } public void setUsername(String username){ this.username=username; } public String getPassword(){ return password; } public void setPassword(String password){ this.password=password; } }
Cache类:
package com.infobase; public class Cache{ private User User; private Cache(){ } private static class CacheHolder{ private static final Cache INSTANCE=new Cache(); } public static Cache getInstance(){ return CacheHolder.INSTANCE; } public User getUser(){ return User; } public void setUser(User User){ this.User=User; } }
LoginActivity类:
package com.infobase; import x5.database.X5DBResult; import x5.exception.X5Exception; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class LoginActivity extends Activity { //用户名及密码验证 private void checkedData() throws X5Exception{ String username=((EditText)findViewById(R.id.username)).getText().toString(); String password=((EditText)findViewById(R.id.password)).getText().toString(); User user=new User(); user.setUsername(username); user.setPassword(password); //判定登录与否的result boolean result=false; SelectTable st=new SelectTable(); //X5.database.X5DBResult类 //该类为查询数据库得到的结果集 X5DBResult rs=st.doGetResult(); //hasNext()方法返回Boolean值,判断是否还有下一行记录 while(rs.hasNext()){ if(rs.getObject(2).toString().equals(user.getUsername()) &rs.getObject(3).toString().equals(user.getPassword().toString())){ result=true; } } if(result){ Cache.getInstance().setUser(user); //输入正确提示框 Toast.makeText(getApplicationContext(),"登录成功",1000).show(); Intent intent=new Intent(); //正确后跳转到WelcomeActivity intent.setClass(LoginActivity.this,WelcomeActivity.class); startActivity(intent); }else{ //输入不正确提示框 Toast.makeText(LoginActivity.this,"密码或用户名不匹配,请重新输入!",1000).show(); } } //申明login_button_listener public Button.OnClickListener login_button_listener=new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub try { checkedData(); } catch (X5Exception e) { // TODO Auto-generated catch block e.printStackTrace(); Toast.makeText(getApplicationContext(),"数据库连接不上",1000).show(); } } }; //监听并响应按钮的‘单击’事件 public void find_and_modify_listener(){ Button login_button=(Button)findViewById(R.id.login); login_button.setOnClickListener(login_button_listener); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //主界面显示后数据源的初始化 Initialize initialize=new Initialize(); if(initialize.Init()){ Toast.makeText(getApplicationContext(),"数据初始化完成",1000).show(); }else{ Toast.makeText(getApplicationContext(),"数据源已存在或者数据库连接不上",1000).show(); } find_and_modify_listener(); } }
WelcomeActivity类:
package com.infobase; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class WelcomeActivity extends Activity{ public void onCreate(Bundle icesky){ super.onCreate(icesky); setContentView(R.layout.welcome); TextView tv=(TextView)findViewById(R.id.tv); tv.setText("Welcome "+Cache.getInstance().getUser().getUsername()+"!"); } }
main.xml文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:text="username" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/username" android:layout_height="wrap_content" android:layout_width="match_parent" /> <TextView android:text="password" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/password" android:layout_height="wrap_content" android:layout_width="match_parent" android:inputType="textPassword" /> <Button android:text="Login" android:id="@+id/login" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
主界面显示如下:welcome.xml类:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:text="Welcome!" android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
欢迎界面显示如下:AndroidManifest.xml文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.infobase" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".LoginActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".WelcomeActivity"></activity> </application> <!-- 访问internet权限 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 往SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 单元测试 --> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.changcheng.web.client" android:label="Tests for My App" /> </manifest>
发表评论
-
云平台编程与开发(七)-使用X5Cloud云平台开发网络彩讯
2011-09-17 15:42 898网络彩讯定义以及工 ... -
云平台编程与开发(五):开发Android网络游戏的一点探讨
2011-08-23 11:46 891随着文明时代的进步,信息逐渐迈向云端化,以前花费很多时间开发一 ... -
云平台编程与开发(四):如何将java项目部署到云平台?
2011-08-23 11:42 1154X5Cloud“应用发布”提供 ... -
云平台编程与开发(二):X5Cloud云平台SDK包概述
2011-08-23 11:35 982API的概括 X5.database 2.1.1 X5.d ... -
云平台编程与开发(一):云平台服务商一览
2011-08-23 11:14 1121云计算是下一个IT产业趋势,Next Big Thing。许多 ...
相关推荐
[计算机][Java]X5Cloud云平台改变了什么?快速开发和部署Android手机平板和Java Web云端应用
一种基于Vue+SpringCloud的云平台.pdf一种基于Vue+SpringCloud的云平台.pdf一种基于Vue+SpringCloud的云平台.pdf一种基于Vue+SpringCloud的云平台.pdf一种基于Vue+SpringCloud的云平台.pdf一种基于Vue+SpringCloud的...
基于ThinkPHP+微信小程序的校园社团云平台的设计与实现.docx基于ThinkPHP+微信小程序的校园社团云平台的设计与实现.docx基于ThinkPHP+微信小程序的校园社团云平台的设计与实现.docx基于ThinkPHP+微信小程序的校园...
C++游戏编程:创建3D游戏依赖库 C++游戏编程:创建3D游戏依赖库 C++游戏编程:创建3D游戏依赖库
一种基于Vue+SpringCloud的云平台.docx一种基于Vue+SpringCloud的云平台.docx一种基于Vue+SpringCloud的云平台.docx一种基于Vue+SpringCloud的云平台.docx一种基于Vue+SpringCloud的云平台.docx一种基于Vue+Spring...
基于智慧教室的教学云平台的开发与设计.docx基于智慧教室的教学云平台的开发与设计.docx基于智慧教室的教学云平台的开发与设计.docx基于智慧教室的教学云平台的开发与设计.docx基于智慧教室的教学云平台的开发与设计...
通过知识点讲解、案例实战、理论概念讲解来学习基于AWS云平台实现云上数仓的构建和开发。 课程亮点 1,全程基于AWS云平台 2,对AWS相关技术进行深入学习 3,实操配合案例,更容易理解 4,包含BI开发的内容 适用...
【开源容器云OpenShift:构建基于Kubernetes的企业应用云平台】 正文.pdf
基于CloudFoundry的PaaS云平台的设计与实现,一分析CloudFoundry的技术架构及组件,二是PAAS云平台的构建。
基于新大陆云平台的嵌入式代码(ZigBeeBasicRF和上云代码)+android代码,能够实现手机安卓远程控制底层灯或者实时获取底层嵌入式上传至云平台的数据
内容概要:通过带着读者基于SpringCloud框架实现企业在线培训平台,将平台的应用服务 设计为以培训服务、微信服务、论坛服务为主,消息中心,数据检索,决策引 擎和文件服务为辅的结构体系。注重业务系统向分布式...
开源容器云OpenShift:构建基于Kubernetes的企业应用云平台
将 cloudfunctions 文件下的这四个文件上传云函数部署(右键点击,选择第三个选项“上传并部署:云端安装环境”)基于微信小程序云开发的校园生活圈小程序(也可做小程序毕业设计)源码基于微信小程序云开发的校园...
毕业设计,基于SpringBoot+AndroidStudio+百度云平台人脸识别开发的学生考勤签到系统,含完整源码、数据库脚本 基于AndroidStudio百度云平台人脸识别学生考勤签到系统设计 开发软件:Idea + Mysql + AndroidStudio...
可伸缩:水平可伸缩的平台,构建使用领先的 Spring Cloud 开源技术; 容错:没有单点故障弱,集群中的每个节点是相同的; 健壮和高效:单一服务器节点可以处理甚至数百成千上万的设备根据用例; 可定制:添加新的...
3、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32F103其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。 4、软件下载时,请注意keil选择项是jlink还是stlink. 5、硬件设计、软件开发、...
智慧消防云平台融合了无线烟感监测、可燃气体监测、电气火灾监测、防火门监测、消防用水监测、消防主机联网、消防电源监测、消防巡检、视频智能识别九大子系统,是城市级消防联网的全套解决方案。 该系统实现城市级...
内容概要:通过带着读者基于分布式、移动计算和微服务等技术,选择Spring Cloud 作为开发框架,在移动环境中组建云平台。设计数据库,开发各模块功能,实现移动安保系统, 提供实时数据采集、分析、存储等功能。具体...
分享课程——【2022】云原生Kubernetes全栈架构师:基于世界500强的k8s实战课程,2022年最新版,基于V1.23版本,完整版提供文档和软件下载! 课程适合人群: 1、准备学习k8s的运维、开发、测试、架构师; 2、k8s...