首页 文章 精选 留言 我的

精选列表

搜索[vnc客户端],共10000篇文章
优秀的个人博客,低调大师

华为帐号服务学习笔记(三):10分钟完成Authorization Code模式客户端Demo开发

Demo开发准备 1、 安装Android Studio 3.5及以上版本;2、 安装JDK 1.8 及以上;3、 使用Android SDK Platform 19及以上;4、 使用Gradle 4.6及以上;5、 在华为开发者联盟注册成为华为开发者,如已注册,请跳过此步骤; 运行环境配置 之前按照华为帐号的官方指导试过demo开发,发现前期接入华为开发者联盟的各种步骤有点繁琐,各种界面来回切换,后来在Android Studio上发现HMS提供了一个IDE插件,可以帮忙快速集成。本次文章主要就介绍通过这个IDE插件来快速创建一个华为帐号demo。如果想自己手动按照步骤创建帐号的demo,可以直接查看这个官方指导:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/dev-process-0000001050443773IDE插件安装 这个工具叫HMS Toolkit,后来发现华为官方也有介绍,大家有兴趣的可以去它们主页了解下:https://developer.huawei.com/consumer/cn/huawei-toolkit/安装插件,直接在Android Studio里面,点击“File > Settings > Plugins” ,搜索“HMS”找到HMS Toolkit就可以了,点击安装然后重启Android Studio。创建android项目 在开发应用前,你得本地有一个Android项目,已有Android项目的可忽略。 步骤 1 打开Android Studio软件,点击“File > New > New Project” ,按自己需求选择,我这里选择的“Empty Activity”,点击“Next”。 步骤 2 在“Configure Your Project”界面填入项目名称、包名、项目存储位置、项目语言以及最低SDK版本,然后点击“Finish”完成项目创建。配置AppGallery Connect 为了接入华为,我们还需要在AppGallery Connect中创建应用,并做些基本设置。步骤 1 使用华为帐号登录AppGallery Connect(https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)。要是没注册,直接按照页面指导完成帐号注册就行,然后选择“我的项目”。步骤 2 在我的项目页面点击“添加项目”。步骤 3 输入个名字作为项目名称,点击“确定”。步骤 4 项目创建成功后会自动进入“项目设置”页面,在这里找到“添加应用”并点击。 如果你本来就有项目并且已经有应用了,直接展开页面顶部的应用选择区域,选择“添加应用”。步骤 5 在“添加应用”页面中填写应用信息,特别注意平台和包名的,尤其是包名要和前面创建的android项目的包名一致。  选择平台:选择“Android”。  应用包名:需要与您正在开发的应用的包名保持一致。 配置完成后,后面的一些操作都可以忽略了,直接去Android Studio操作就行,安装的IDE插件可以帮忙进行设置。在Android Studio上为项目配置华为AGC和华为帐号 步骤 1 在Android Studio中,菜单栏选择“HMS > Configuration Wizard”。如果你没登录AppGallery Connect,这个工具会帮忙自动打开浏览器并提示登录。 步骤 2 登录后,在Configuration Wizard界面可以选择团队名称、对应的工程模块、Integrated Kits(选择Account Kit)和证书类型,点击“Generate”生成SHA256证书指纹,然后点击“Next”。选择团队名称和对应的工程模块之后,Toolkit会自动检测AGC上是否有对应的应用。若有报错,根据界面点击“Link”到AGC上检查是否已创建应用。如果没有,就创建个新的应用(这个就是前面“配置AppGallery Connect”那步),然后点击“Retry”。 关于证书类型说明如下:  Use your certificate:直接使用你自己创建的证书生成SHA256证书指纹,这种是用来应用发布的时候。关于证书的指导可参见Android证书签名(https://developer.android.com/studio/publish/app-signing#generate-key)。  Use Android debug certificate:选择Android自带的调试证书生成SHA256证书指纹,这种方式仅用于应用调试场景。我们这就是个Demo,为了简单我直接选的这个。 点击“Generate”可自动生成证书指纹,如果生成失败,检查证书信息是否正确,确保证书信息和指纹相匹配,或者根据生成证书指纹指导手工生成指纹,然后填写到指纹信息框内。 插件会自动对Account Kit的使用环境进行环境配置检查,我暂时还没遇到过失败的情况。全部检查项通过后直接点击“Go to coding assistant”按钮,就可以进入Account Kit的页面去选择调用的接口了。通过Coding Assistant集成Authorization Code模式登录帐号 步骤 1 在Android Studio中,选择“HMS > Coding Assistant”,然后在Kit列表中点击“Account Kit”。 步骤 2 鼠标放到“Signing In With an ID(Authorization Code)”这个行上,拖拽下,把这行拖放到代码区域。鼠标释放后,会弹出新增代码片段的选择框,直接点击“OK”,可以看到会生成Authorization Code登录的相关Activity文件和xml布局文件,并且AndroidManifest.xml、工程build.gradle和模块build.gradle都有一些新增信息。具体文件有哪些变化看后面的登录详解。 步骤 3 打开“AndroiManifest.xml”文件,将应用初始调用的Activity替换成步骤2生成的Activity,这样我们的APP就可以主动调用新加的Activity了。 这样,一个帐号登录的Demo就完成了。 Demo的运行调试,可以在自己的设备或远程真机里运行查看。 编译、调试 使用远程真机运行步骤 1 在Android Studio的菜单栏中选择“HMS > Cloud Debugging”或者在工具栏点击如下图标。步骤 2 远程真机界面,可以根据分辨率、Android版本那些来筛选要远程调试的真机。这里有个坑,深圳地域的真机不知道什么原因,是不能进入“设置”的,这导致帐号的Demo跑起来后无法拉起登录页面。强烈建议使用非深圳地域的真机进行测试。步骤 3 在菜单栏中点击 (Run按钮)或 (Debug按钮),在远程真机中运行或调试App。步骤 4 进入运行的项目,点击“AUTHORIZATIONCODE MODE SIGNIN”按钮,拉起华为帐号登录页面,这个页面就是通过Authorization Code方式登录的华为帐号。 使用本地真机运行 在菜单栏中点击 (Run按钮)或 (Debug按钮),在本地真机中运行或调试App。 真机运行结果示意如下:

优秀的个人博客,低调大师

HBase编程 API入门系列之delete.deleteColumn和delete.deleteColumns区别(客户端而言)(4)

心得,写在前面的话,也许,中间会要多次执行,连接超时,多试试就好了。 delete.deleteColumn和delete.deleteColumns区别是: deleteColumn是删除某一个列簇里的最新时间戳版本。 delete.deleteColumns是删除某个列簇里的所有时间戳版本。 hbase(main):020:0>desc 'test_table' Table test_table is ENABLED test_table COLUMN FAMILIES DESCRIPTION {NAME => 'f', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'} 1 row(s) in 0.2190 seconds hbase(main):021:0>scan 'test_table' ROW COLUMN+CELL row_01 column=f:col, timestamp=1478102698687, value=maizi row_01 column=f:name, timestamp=1478104345828, value=Andy row_02 column=f:name, timestamp=1478104477628, value=Andy2 row_03 column=f:name, timestamp=1478104823358, value=Andy3 3 row(s) in 0.2270 seconds hbase(main):022:0>scan 'test_table' ROW COLUMN+CELL row_01 column=f:col, timestamp=1478102698687, value=maizi row_01 column=f:name, timestamp=1478104345828, value=Andy row_02 column=f:name, timestamp=1478104477628, value=Andy2 row_03 column=f:name, timestamp=1478104823358, value=Andy3 3 row(s) in 0.1480 seconds hbase(main):023:0>scan 'test_table',{VERSIONS=>3} ROW COLUMN+CELL row_01 column=f:col, timestamp=1478102698687, value=maizi row_01 column=f:name, timestamp=1478104345828, value=Andy row_02 column=f:name, timestamp=1478104477628, value=Andy2 row_03 column=f:name, timestamp=1478104823358, value=Andy3 3 row(s) in 0.1670 seconds hbase(main):024:0> 1 package zhouls.bigdata.HbaseProject.Test1; 2 3 import javax.xml.transform.Result; 4 5 import org.apache.hadoop.conf.Configuration; 6 import org.apache.hadoop.hbase.HBaseConfiguration; 7 import org.apache.hadoop.hbase.TableName; 8 import org.apache.hadoop.hbase.client.Delete; 9 import org.apache.hadoop.hbase.client.Get; 10 import org.apache.hadoop.hbase.client.HTable; 11 import org.apache.hadoop.hbase.client.Put; 12 import org.apache.hadoop.hbase.util.Bytes; 13 14 public class HBaseTest { 15 public static void main(String[] args) throws Exception { 16 HTable table = new HTable(getConfig(),TableName.valueOf("test_table"));//表名是test_table 17 Put put = new Put(Bytes.toBytes("row_04"));//行键是row_04 18 put.add(Bytes.toBytes("f"),Bytes.toBytes("name"),Bytes.toBytes("Andy0"));//列簇是f,列修饰符是name,值是Andy0 19 // put.add(Bytes.toBytes("f2"),Bytes.toBytes("name"),Bytes.toBytes("Andy3"));//列簇是f2,列修饰符是name,值是Andy3 20 table.put(put); 21 table.close(); 22 23 // Get get = new Get(Bytes.toBytes("row_04")); 24 // get.addColumn(Bytes.toBytes("f1"), Bytes.toBytes("age"));如现在这样,不指定,默认把所有的全拿出来 25 // org.apache.hadoop.hbase.client.Result rest = table.get(get); 26 // System.out.println(rest.toString()); 27 // table.close(); 28 29 // Delete delete = new Delete(Bytes.toBytes("row_2")); 30 // delete.deleteColumn(Bytes.toBytes("f1"), Bytes.toBytes("email")); 31 // delete.deleteColumn(Bytes.toBytes("f1"), Bytes.toBytes("name")); 32 // table.delete(delete); 33 // table.close(); 34 35 36 // Delete delete = new Delete(Bytes.toBytes("row_03")); 37 // delete.deleteColumn(Bytes.toBytes("f"), Bytes.toBytes("name")); 38 // delete.deleteColumns(Bytes.toBytes("f"), Bytes.toBytes("name")); 39 // table.delete(delete); 40 // table.close(); 41 } 42 43 public static Configuration getConfig(){ 44 Configuration configuration = new Configuration(); 45 // conf.set("hbase.rootdir","hdfs:HadoopMaster:9000/hbase"); 46 configuration.set("hbase.zookeeper.quorum", "HadoopMaster:2181,HadoopSlave1:2181,HadoopSlave2:2181"); 47 return configuration; 48 } 49 } hbase(main):038:0>scan 'test_table' ROW COLUMN+CELL row_01 column=f:col, timestamp=1478102698687, value=maizi row_01 column=f:name, timestamp=1478104345828, value=Andy row_02 column=f:name, timestamp=1478104477628, value=Andy2 row_03 column=f:name, timestamp=1478123664884, value=Andy3 3 row(s) in 0.1910 seconds hbase(main):039:0>scan 'test_table' ROW COLUMN+CELL row_01 column=f:col, timestamp=1478102698687, value=maizi row_01 column=f:name, timestamp=1478104345828, value=Andy row_02 column=f:name, timestamp=1478104477628, value=Andy2 row_03 column=f:name, timestamp=1478123664884, value=Andy3 row_04 column=f:name, timestamp=1478123917775, value=Andy0 4 row(s) in 0.1310 seconds delete.deleteColumn和delete.deleteColumns区别是: deleteColumn是删除某一个列簇里的最新时间戳版本。 delete.deleteColumns是删除某个列簇里的所有时间戳版本。 1 package zhouls.bigdata.HbaseProject.Test1; 2 3 import javax.xml.transform.Result; 4 5 import org.apache.hadoop.conf.Configuration; 6 import org.apache.hadoop.hbase.HBaseConfiguration; 7 import org.apache.hadoop.hbase.TableName; 8 import org.apache.hadoop.hbase.client.Delete; 9 import org.apache.hadoop.hbase.client.Get; 10 import org.apache.hadoop.hbase.client.HTable; 11 import org.apache.hadoop.hbase.client.Put; 12 import org.apache.hadoop.hbase.util.Bytes; 13 14 public class HBaseTest { 15 public static void main(String[] args) throws Exception { 16 HTable table = new HTable(getConfig(),TableName.valueOf("test_table"));//表名是test_table 17 Put put = new Put(Bytes.toBytes("row_04"));//行键是row_04 18 put.add(Bytes.toBytes("f"),Bytes.toBytes("name"),Bytes.toBytes("Andy1"));//列簇是f,列修饰符是name,值是Andy0 19 // put.add(Bytes.toBytes("f2"),Bytes.toBytes("name"),Bytes.toBytes("Andy3"));//列簇是f2,列修饰符是name,值是Andy3 20 table.put(put); 21 table.close(); 22 23 // Get get = new Get(Bytes.toBytes("row_04")); 24 // get.addColumn(Bytes.toBytes("f1"), Bytes.toBytes("age"));如现在这样,不指定,默认把所有的全拿出来 25 // org.apache.hadoop.hbase.client.Result rest = table.get(get); 26 // System.out.println(rest.toString()); 27 // table.close(); 28 29 // Delete delete = new Delete(Bytes.toBytes("row_2")); 30 // delete.deleteColumn(Bytes.toBytes("f1"), Bytes.toBytes("email")); 31 // delete.deleteColumn(Bytes.toBytes("f1"), Bytes.toBytes("name")); 32 // table.delete(delete); 33 // table.close(); 34 35 36 // Delete delete = new Delete(Bytes.toBytes("row_03")); 37 // delete.deleteColumn(Bytes.toBytes("f"), Bytes.toBytes("name")); 38 // delete.deleteColumns(Bytes.toBytes("f"), Bytes.toBytes("name")); 39 // table.delete(delete); 40 // table.close(); 41 } 42 43 public static Configuration getConfig(){ 44 Configuration configuration = new Configuration(); 45 // conf.set("hbase.rootdir","hdfs:HadoopMaster:9000/hbase"); 46 configuration.set("hbase.zookeeper.quorum", "HadoopMaster:2181,HadoopSlave1:2181,HadoopSlave2:2181"); 47 return configuration; 48 } 49 } delete.deleteColumn和delete.deleteColumns区别是: deleteColumn是删除某一个列簇里的最新时间戳版本。 delete.deleteColumns是删除某个列簇里的所有时间戳版本。 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6156265.html,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册