首页 文章 精选 留言 我的

精选列表

搜索[quick],共1096篇文章
优秀的个人博客,低调大师

阿里云蚂蚁合约体验链 Quick Start

概述 阿里云蚂蚁区块链提供合约体验链,方便用户快速体验区块链,可以免费快速测试体验区块链的功能。下面分别从门户创建及相关配置获取、依赖包安装和测试代码的配置三个方面介绍逐步介绍合约体验了的使用。 Step By Step 1、服务申请,门户地址 下载申请证书的时候生成的证书等信息到本地,记住配置SSL证书时设置的密码。 2、创建账户 下载user.key到本地。 3、全部下载的信息 4、依赖包安装 sdk解压,在解压的路径下运行如下指令安装jar包到本地仓库 //安装 SDK 到本地仓库 mvn install:install-file -Dfile=mychainx-sdk-0.10.2.6.jar -DgroupId=com.alipay.mychainx -DartifactId=mychainx-sdk -Dversion=0.10.2.6 -Dpackaging=jar -DpomFile=pom.xml //安装 Netty 依赖到本地仓库,注意选择对应平台 netty-tcnative-openssl-static 版本,注意修改 classifier,macOS :osx-x86_64、linux:linux-x86_64、windows:windows-x86_64 mvn install:install-file -Dfile=netty-tcnative-openssl-static-2.0.17-Final-mychain-windows-x86_64.jar -DgroupId=io.netty -DartifactId=netty-tcnative-openssl-static -Dversion=2.0.17-Final-mychain -Dpackaging=jar -Dclassifier=windows-x86_64 5、Code Sample 5.1 DemoSample.java下载地址 5.2 pom.xml <dependencies> <dependency> <groupId>com.alipay.mychainx</groupId> <artifactId>mychainx-sdk</artifactId> <!--请使用最新 SDK 版本 --> <version>0.10.2.6</version> </dependency> </dependencies> <build> <extensions> <extension> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.6.1</version> </extension> </extensions> </build> 5.3 相关配置文件拷贝到项目resources路径下 5.4 Code相关参数的配置 5.5 Result create testAccount1 success. create testAccount2 success. deploy contract success. issue success. transfer success. check account balance success. 如果项目提示找不到方法或包的情况,可以Update Maven或Reimport一下,重新加载包后再运行一下。 参考链接 试用合约体验链Java SDK 说明Java SDK 快速开始

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

浅谈3D Touch(1) -- Home screen quick action

1. 背景: 随着iOS9 和 iPhone 6s的普及,苹果官方提供的3D Touch将带给我们更好玩,更便捷的操作习惯,桌面快捷菜单可谓是3D Touch功能中最实用的一个,有了它,用户不再需要进入app后做额外的操作,便能快速进入指定的页面。 2. 前期工作: 由于手头“并(wo)没(xiang)有(yao)”iPhone 6s 的设备,很多人说,那我怎么开发这个功能呢?不怕,github上早有大神写好了模拟器的解决方案。按照这个文档上的方法依次执行,你的模拟器也能唤出快捷菜单。 3. 正式接入 ①.创建UIApplicationShortcutItem 我们先来看一下每个UIApplicationShortcutItem中能够包含哪些信息 key Description required UIApplicationShortcutItemType 事件的唯一标识,可以通过这个标识来辨别你具体点击了哪个事件 Y UIApplicationShortcutItemTitle 标题,在没有子标题的情况下如果标题太长能自动换行 Y UIApplicationShortcutItemSubtitle 子标题,在标题的下方 N UIApplicationShortcutItemIconType 枚举选取系统中的一个图标类型 N UIApplicationShortcutItemIconFile 自定义一个图标,以单一颜色35x35的大小展示,如果设置这个,UIApplicationShortcutItemIconType将不起作用 N UIApplicationShortcutItemUserInfo 字典,里面可以添加各种key、value对 N UIApplicationShortcutItem 的创建有2种方式 第一种是在info.plist里面静态添加: <key>UIApplicationShortcutItems</key> <array> <dict> <key>UIApplicationShortcutItemType</key> <string>3dtouch.homePage</string> <key>UIApplicationShortcutItemTitle</key> <string>首页</string> <key>UIApplicationShortcutItemSubtitle</key> <string>这是首页</string> <key>UIApplicationShortcutItemIconFile</key> <string>shouye.png</string> <key>UIApplicationShortcutItemUserInfo</key> <dict> <key>url</key> <string>index</string> </dict> </dict> <dict> <key>UIApplicationShortcutItemType</key> <string>3dtouch.guanzhupage</string> <key>UIApplicationShortcutItemTitle</key> <string>关注</string> <key>UIApplicationShortcutItemSubtitle</key> <string>这是关注</string> <key>UIApplicationShortcutItemIconFile</key> <string>guanzhu.png</string> <key>UIApplicationShortcutItemUserInfo</key> <dict> <key>url</key> <string>guanzhu</string> </dict> </dict> </array> 第二种是在程序初始化的时候用代码动态添加: 我们先看一下UIApplicationShortcutItem.h,发现它的使用非常简单,习惯完全符合官方API固有方式,而且和之前那种方式所构建的包含的信息是一一对应的,其中有3个@interface分别是: UIApplicationShortcutIcon UIApplicationShortcutItem UIMutableApplicationShortcutItem //创建快捷item的icon 即UIApplicationShortcutItemIconFile UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"money"]; UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"gouwuche"]; UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"wode"]; //创建快捷item的userinfo 即UIApplicationShortcutItemUserInfo NSDictionary *info1 = @{@"url":@"money"}; NSDictionary *info2 = @{@"url":@"gouWuche"}; NSDictionary *info3 = @{@"url":@"wode"}; //创建ShortcutItem UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"3dtouch.moneyPage" localizedTitle:@"资产" localizedSubtitle:@"这是资产" icon:icon1 userInfo:info1]; UIMutableApplicationShortcutItem *item2 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"3dtouch.shopPage" localizedTitle:@"购物车" localizedSubtitle:@"这是购物车" icon:icon2 userInfo:info2]; UIMutableApplicationShortcutItem *item3 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"3dtouch.mypage" localizedTitle:@"我的" localizedSubtitle:@"这是我的" icon:icon3 userInfo:info3]; //把原有的shortcutItems拿出来,把动态的放进去 NSArray *items = @[item1, item2, item3]; NSArray *existingItems = [UIApplication sharedApplication].shortcutItems; NSArray *updatedItems = [existingItems arrayByAddingObjectsFromArray:items]; //塞回去 [UIApplication sharedApplication].shortcutItems = updatedItems; 最后我们来看一下效果: 看上去是不是非常和谐?其实我告诉你,我们已经踩到了坑里了 我在运行中发现: NSArray *existingItems = [UIApplication sharedApplication].shortcutItems; 所获得的existingItems并不是我们之前设置在info.plist里面的,而是上一次 [UIApplication sharedApplication].shortcutItems = updatedItems; 赋值给他的,又因为我自作聪明的做了一次 NSArray *updatedItems = [existingItems arrayByAddingObjectsFromArray:items]; 所以我们每运行一次,shortcutItems中的元素个数就会多3个, 那为什么展示出来没有问题呢? 仔细看刚刚发的那张效果图,我擦,只有4个,对了,这个就是表象上不出错的原因,在API上并没有写shortcutItems有任何个数限制,也没有写快捷窗口的个数,但是实际上,最多只能显示4个,而且shortcutItems这个里面的对象恐怕是早已被系统默默的存到了某个plist里了,每当程序启动时,会向系统要app的Bundle Identifier对应的shortcutItems,并非我们事先想要的info.plist中的items,当然以上只是我从现象做出的合理猜测,我们并不需要关心info.plist中的那些静态item,只需要动态创建的item直接打包赋值过去 [UIApplication sharedApplication].shortcutItems = @[item1, item2, item3]; 至于只展示4个的问题,这个我们无能为力了,系统做了限制。 ②.Item点击回调 当app在后台的时候UIApplication提供了一个回调方法 - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler NS_AVAILABLE_IOS(9_0); 我们依据这个回调中的shortcutItem的type和userinfo来做出不同的事件处理,而最后的completionHandler在API的说明中我们看到当应用并非在后台,而是直接重新开进程的时候,直接返回No,那么这个时候,我们的回调会放在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions UIApplication又给我们一个从launchOptions中获取这个shortcutItem的key–UIApplicationLaunchOptionsShortcutItemKey,所以在这2个都进行对shortcutItem的操作后,我们这个功能算是完成了 在didFinishLaunchingWithOptions中,由于某些客户端会有启动动画,所以这边加了3秒,具体因程序而异 UIApplicationShortcutItem *item = [launchOptions valueForKey:UIApplicationLaunchOptionsShortcutItemKey]; __weak typeof(self) weakSelf = self; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ __strong typeof(weakSelf) strongSelf = weakSelf; if (strongSelf) { [strongSelf actionWithShortcutItem:item]; } }); 在performActionForShortcutItem回调中 - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler { if (shortcutItem) { [self actionWithShortcutItem:shortcutItem]; } if (completionHandler) { completionHandler(YES); } } 最后就是统一处理actionWithShortcutItem的地方,由于我这个demo中所有的type对应的行为都一样的,所以我这边没有对type做区分,甚至所以的item可以用同一个type -(void)actionWithShortcutItem:(UIApplicationShortcutItem *)item { if (item.userInfo) { NSLog(@"%@",item.userInfo[@"url"]); } } 好了,3D Touch的第一个功能就介绍到这里Demo。

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

阿里云物联网平台独享实例使用Quick Start

Step By Step 1、创建实例 注意:整个实例的完整初始化大概需要10分钟左右。 2、切换实例(从共享实例切花到独享实例) 3、独享实例下面创建产品和设备(与共享实例操作方法一致) 4、获取连接参数 5、基于开源Java SDK上行数据 参考链接:基于开源JAVA MQTT Client连接阿里云IoT import com.alibaba.taro.AliyunIoTSignUtil; import com.google.common.util.concurrent.ThreadFactoryBuilder; import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class IoTDemo1 { public static String productKey = "g0fzs******"; public static String deviceName = "******"; public static String deviceSecret = "d2d447494a340499****************"; public static String regionId = "cn-shanghai"; public static String instanceId = "****************"; //物模型-属性上报topic private static String pubTopic = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post"; private static String subTopic = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post_reply"; private static MqttClient mqttClient; public static void main(String [] args) throws MqttException { initAliyunIoTClient(); ScheduledExecutorService scheduledThreadPool = new ScheduledThreadPoolExecutor(1, new ThreadFactoryBuilder().setNameFormat("thread-runner-%d").build()); scheduledThreadPool.scheduleAtFixedRate(()->postDeviceProperties(), 10,10, TimeUnit.SECONDS); mqttClient.subscribe(subTopic); mqttClient.setCallback(new MqttCallback() { @Override public void connectionLost(Throwable throwable) { } @Override public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { System.out.println("Topic : " + s); System.out.println("message ;" + mqttMessage.getPayload()); System.out.println(new String(mqttMessage.getPayload())); //打印输出消息payLoad } @Override public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { } }); } private static void initAliyunIoTClient() { try { String clientId = "java" + System.currentTimeMillis(); Map<String, String> params = new HashMap<>(16); params.put("productKey", productKey); // params.put("IotInstanceId", instanceId); params.put("deviceName", deviceName); params.put("clientId", clientId); String timestamp = String.valueOf(System.currentTimeMillis()); params.put("timestamp", timestamp); String targetServer = "tcp://" + instanceId + ".mqtt.iothub.aliyuncs.com:1883"; String mqttclientId = clientId + "|securemode=3,signmethod=hmacsha1,timestamp=" + timestamp + "|"; String mqttUsername = deviceName + "&" + productKey; String mqttPassword = AliyunIoTSignUtil.sign(params, deviceSecret, "hmacsha1"); connectMqtt(targetServer, mqttclientId, mqttUsername, mqttPassword); } catch (Exception e) { System.out.println("initAliyunIoTClient error " + e.getMessage()); } } public static void connectMqtt(String url, String clientId, String mqttUsername, String mqttPassword) throws Exception { MemoryPersistence persistence = new MemoryPersistence(); mqttClient = new MqttClient(url, clientId, persistence); MqttConnectOptions connOpts = new MqttConnectOptions(); // MQTT 3.1.1 connOpts.setMqttVersion(4); connOpts.setAutomaticReconnect(false); connOpts.setCleanSession(true); connOpts.setUserName(mqttUsername); connOpts.setPassword(mqttPassword.toCharArray()); connOpts.setKeepAliveInterval(60); mqttClient.connect(connOpts); } private static void postDeviceProperties() { try { //上报数据 //高级版 物模型-属性上报payload String payloadJson = "{\"params\":{\"DetectDistance\":13}}"; MqttMessage message = new MqttMessage(payloadJson.getBytes("utf-8")); message.setQos(1); mqttClient.publish(pubTopic, message); System.out.println("upload message demo"); } catch (Exception e) { System.out.println(e.getMessage()); } } } 6、数据转发到实例内的时序数据存储 7、设备上行消息,查询运行日志 可以基于日志,快速进行常见问题的排查定位。 8、使用SDK查看流转到TDSB的数据 8.1 pom.xml <dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>hitsdb-client</artifactId> <version>0.2.7</version> </dependency> </dependencies> 8.2 code sample import com.aliyun.hitsdb.client.TSDB; import com.aliyun.hitsdb.client.TSDBClientFactory; import com.aliyun.hitsdb.client.TSDBConfig; import com.aliyun.hitsdb.client.value.request.LastPointQuery; import com.aliyun.hitsdb.client.value.request.LastPointSubQuery; import com.aliyun.hitsdb.client.value.response.LastDataValue; import java.util.HashMap; import java.util.List; import java.util.Map; public class demo1 { public static void main(String[] args) { //实例详情页面中的连接地址、端口 String connectString = "************.hitsdb.rds.aliyuncs.com"; int port = 3242; //实例详情页面中的时序数据存储用户名、密码 String username = "iot*****"; String password = "********"; TSDBConfig config = TSDBConfig.address(connectString, port) .basicAuth(username, password) // 网络连接池大小,默认为64。 .httpConnectionPool(64) // HTTP 等待时间,单位为秒,默认为90秒。 .httpConnectTimeout(90) // IO 线程数,默认为1。 .ioThreadCount(1) .config(); TSDB tsdbClient = TSDBClientFactory.connect(config); //按标签筛选数据 Map<String, String> tags = new HashMap<>(); tags.put("deviceName","device1"); String metric = "detectDistance"; long now = System.currentTimeMillis(); LastPointQuery query = LastPointQuery.builder() .timestamp(now) .backScan(-1) .msResolution(true) .sub(LastPointSubQuery.builder(metric, tags).build()).build(); List<LastDataValue> lastDataValues = tsdbClient.queryLast(query); System.out.println(lastDataValues); } } 8.3 result [LastDPValue [metric=detectDistance, timestamp=1594622426000, value=13.0, tags={deviceName=device1}, tsuid=0C000000000002000003000000000098]] 更多参考 实例管理基于开源JAVA MQTT Client连接阿里云IoT阿里云物联网平台博客综述

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

Quick BI V2.2夯实数据处理能力,支持跨源查询复杂场景

信息摘要: 扩充数据源,数据库的跨源查询、自定义SQL的复杂SQL支持,新增图表 适用客户: 面向全网用户 版本/规格功能: 1. 支持数据源种类新增Hive及Oracle数据源 2.数据建模支持MaxCompute、MySQL、Oracle三种数据源之间的跨源数据库连接 3.自定义SQL支持同源跨库、子查询/UNION/长SQL的复杂场景。 4. 新增2个图表:LBS热力图和LBS飞线图 产品文档: https://help.aliyun.com/product/30343.html?spm=a2c0j.8190895.737583.btn3.2e927d6aV2spvK

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

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

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文件系统,支持十年生命周期更新。

用户登录
用户注册