首页 文章 精选 留言 我的

精选列表

搜索[AI功能],共10000篇文章
优秀的个人博客,低调大师

SparkSQL ThriftServer 安全相关功能的现状分析

SparkSQL Thrift Server SparkSQL Thrift Server 是 Spark SQL基于 Apache Hive的 HiveServer2开发的,通过SparkSQL Thrift Server 可以使 Spark SQL支持 JDBC/ODBC 的连接方式,用户可以通过 JDBC and ODBC 协议,在Spark上执行 SQL. ThriftServer的安全 HiveServer2 和 SparkSQL 的Thrift Server的安全主要包含以下两方面内容: 认证(Authentication):认证就是验证用户的身份,就是我们通常说的登录 授权(Authorization):授权就是验证用户是否有权限进行特定的操作,有时也叫鉴权。 ThriftServer 认证 Apache Hive HiveSe

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

AutoScaling 支持虚拟服务器组功能

AutoScaling 伸缩组可以通过配置负载均衡实例,在伸缩组扩容时,自动将扩容出来的 ECS 实例添加到负载均衡默认服务器组中,在伸缩组缩容时,自动将待移除的 ECS 实例从负载均衡默认服务器组中移除。 现在,AutoScaling 伸缩组支持配置虚拟服务器组,在伸缩组扩容时,自动将扩容出来的 ECS 实例添加到对应的负载均衡实例虚拟服务器组中,在伸缩组缩容时,自动将待移除的 ECS 实例从对应的负载均衡实例虚拟服务器组中移除。通过使用弹性伸缩组新上线的虚拟服务器组特性,您可以对伸缩组内 ECS 实例的请求转发实现更加精细化的管理。您还可以通过 AttachVServerGroups 和 DetachVServerGroups 接口,随时增加或者减少伸缩组内的虚拟服务器组。 本文将为您介绍如何通过 JAVA SDK 的方式创建带有虚拟服务器组的伸缩组,以及如何使用 AttachVServerGroups 和 DetachVServerGroups 接口来管理伸缩组内的虚拟服务器组。 负载均衡(SLB)虚拟服务器组 虚拟服务器组 (VServer group)是一组 ECS 实例的集合。虚拟服务器组允许您在监听维度上个性化定义服务器组,即负载均衡实例下的不同监听可使用不同的虚拟服务器组,可以满足域名和 URL 转发的个性化需求。 如果您没有创建虚拟服务器组,负载均衡实例会将请求按照您设置的权重和监听规则转发给所有添加到默认服务器组的后端服务器 (ECS 实例);如果您创建了虚拟服务器组,负载均衡实例会将请求按照您设置的监听规则转发给关联的虚拟服务器组,负载均衡实例对应的默认服务器组添加的后端服务器(ECS 实例)不再接收请求。 使用限制 虚拟服务器组只能添加监听所在地域的后端服务器。 一个后端服务器可以属于多个虚拟服务器组。 一个实例可以通过不同的端口号在同一个虚拟服务器组绑定多次。 弹性伸缩服务伸缩组中的虚拟服务器组的唯一性由负载均衡ID+虚拟服务器组ID+端口号确定。 关于虚拟服务器组的更多信息,您可以通过 管理虚拟服务器组 进行了解。 创建带有虚拟服务器组的伸缩组 本章将向您介绍如何使用 JAVA SDK 和 ESS控制台 来创建带有虚拟服务器组的伸缩组。 通过 ESS 控制台 首先登陆 ESS控制台 ,点击创建伸缩组按钮,弹出如下伸缩组创建界面: 选择负载均衡实例,控制台会自动为您配置当前负载均衡实例的默认服务器组,通过点击虚拟服务器组按钮,可以将负载均衡下的虚拟服务器组配置到当前伸缩组,配置虚拟服务器组时需要填写端口号(即弹性伸缩创建出来的ECS实例添加到虚拟服务器组使用的端口号)、权重(即弹性伸缩创建出来的ECS实例添加到虚拟服务器组使用的权重)信息,配置好以后点击确定即可。 伸缩组创建好以后,可以查看当前伸缩组对应的虚拟服务器组信息,如下图所示: 至此,配置有虚拟服务器组的伸缩组创建好了。 通过 JAVA SDK 导入 ESS Java SDK 首先,您需要下载 aliyun-java-sdk-core、aliyun-java-sdk-ess 两个依赖,您可以查看 maven-central 界面,搜索并下载相应的 jar 包,aliyun-java-sdk-ess 对应的 jar 包的版本号需要是 2.2.8 及以上版本才能使用虚拟服务器组特性,aliyun-java-sdk-core 推荐使用最新的版本。 您可以选择使用 maven 来管理您 Java 项目的依赖库,在您的项目对应的 pom.xml 文件中加入下面的依赖项即可: <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-ess</artifactId> <version>2.2.8</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.5.0</version> </dependency> 使用 JAVA SDK 创建带有虚拟服务器组的伸缩组 导入 ESS Java SDK 到您的 Java 工程以后,您就可以创建带有虚拟服务器组的伸缩组了,代码如下: import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.ess.model.v20140828.CreateScalingGroupRequest; import com.aliyuncs.ess.model.v20140828.CreateScalingGroupResponse; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import java.util.ArrayList; import java.util.List; public class EssSdkDemo { public static final String REGION_ID = "cn-hangzhou"; public static final String AK = "xxxxxxxxxxxxxx"; public static final String AKS = "xxxxxxxxxxxxxx"; public static void main(String[] args) throws Exception { IClientProfile clientProfile = DefaultProfile.getProfile(REGION_ID, AK, AKS); IAcsClient client = new DefaultAcsClient(clientProfile); createScalingGroupWithVServerGroup(client); } public static void createScalingGroupWithVServerGroup(IAcsClient client) throws Exception { CreateScalingGroupRequest request = new CreateScalingGroupRequest(); request.setScalingGroupName("测试虚拟服务器组"); request.setMinSize(0); request.setMaxSize(100); //伸缩组配置的交换机列表,推荐配置不同可用区下的交换机,提高伸缩组扩容成功率 List<String> vSwitchIds = new ArrayList<String>(); vSwitchIds.add("vsw-aaaaaaa"); vSwitchIds.add("vsw-bbbbbbb"); request.setVSwitchIds(vSwitchIds); //虚拟服务器组参数列表 List<CreateScalingGroupRequest.VServerGroup> vServerGroups = new ArrayList<CreateScalingGroupRequest.VServerGroup>(); //负载均衡实例 lb-aaaaaaaa 对应的虚拟服务器组列表 CreateScalingGroupRequest.VServerGroup vServerGroupA = new CreateScalingGroupRequest.VServerGroup(); vServerGroupA.setLoadBalancerId("lb-aaaaaaaa"); //虚拟服务器组属性列表参数 List<CreateScalingGroupRequest.VServerGroup.VServerGroupAttribute> vServerGroupAttributesA = new ArrayList<CreateScalingGroupRequest.VServerGroup.VServerGroupAttribute>(); //添加虚拟服务器组rsp-aaaaa,指定实例添加到虚拟服务器组的端口号为20,权重不设置,选择默认值50 CreateScalingGroupRequest.VServerGroup.VServerGroupAttribute vServerGroupAttribute1 = new CreateScalingGroupRequest.VServerGroup.VServerGroupAttribute(); vServerGroupAttribute1.setVServerGroupId("rsp-aaaaa"); vServerGroupAttribute1.setPort(20); vServerGroupAttributesA.add(vServerGroupAttribute1); //添加虚拟服务器组rsp-bbbbb,指定实例添加到虚拟服务器组的端口号为30,权重设置为100 CreateScalingGroupRequest.VServerGroup.VServerGroupAttribute vServerGroupAttribute2 = new CreateScalingGroupRequest.VServerGroup.VServerGroupAttribute(); vServerGroupAttribute2.setVServerGroupId("rsp-bbbbb"); vServerGroupAttribute2.setPort(30); vServerGroupAttribute2.setWeight(100); vServerGroupAttributesA.add(vServerGroupAttribute2); //设置虚拟服务器组属性列表 vServerGroupA.setVServerGroupAttributes(vServerGroupAttributesA); vServerGroups.add(vServerGroupA); //负载均衡实例 lb-bbbbbbbb 对应的虚拟服务器组列表 CreateScalingGroupRequest.VServerGroup vServerGroupB = new CreateScalingGroupRequest.VServerGroup(); vServerGroupB.setLoadBalancerId("lb-bbbbbbbb"); //虚拟服务器组属性列表参数 List<CreateScalingGroupRequest.VServerGroup.VServerGroupAttribute> vServerGroupAttributesB = new ArrayList<CreateScalingGroupRequest.VServerGroup.VServerGroupAttribute>(); //添加虚拟服务器组rsp-cccccc,指定实例添加到虚拟服务器组的端口号为40,权重不设置,选择默认值50 CreateScalingGroupRequest.VServerGroup.VServerGroupAttribute vServerGroupAttribute3 = new CreateScalingGroupRequest.VServerGroup.VServerGroupAttribute(); vServerGroupAttribute3.setVServerGroupId("rsp-cccccc"); vServerGroupAttribute3.setPort(40); vServerGroupAttributesB.add(vServerGroupAttribute3); //添加虚拟服务器组rsp-dddddd,指定实例添加到虚拟服务器组的端口号为50,权重不设置,选择默认值50 CreateScalingGroupRequest.VServerGroup.VServerGroupAttribute vServerGroupAttribute4 = new CreateScalingGroupRequest.VServerGroup.VServerGroupAttribute(); vServerGroupAttribute4.setVServerGroupId("rsp-dddddd"); vServerGroupAttribute4.setPort(50); vServerGroupAttributesB.add(vServerGroupAttribute4); //设置虚拟服务器组属性列表 vServerGroupB.setVServerGroupAttributes(vServerGroupAttributesB); vServerGroups.add(vServerGroupB); request.setVServerGroups(vServerGroups); CreateScalingGroupResponse response = client.getAcsResponse(request); System.out.println(response.getScalingGroupId()); } } 使用上述代码,可以创建配置了四个虚拟服务器组的伸缩组。伸缩组配置的虚拟服务器组信息如下: 负载均衡实例 lb-aaaaaaaa 下的虚拟服务器组 虚拟服务器组 rsp-aaaaa,使用的端口号为 20,权重为 50 虚拟服务器组 rsp-bbbbb,使用的端口号为 30,权重为 100 负载均衡实例 lb-bbbbbbbb 下的虚拟服务器组 虚拟服务器组 rsp-cccccc,使用的端口号为 40,权重为 50 虚拟服务器组 rsp-dddddd,使用的端口号为 50,权重为 50 当伸缩组发生扩容伸缩活动时,扩容创建出来的 ECS 实例自动添加到上述四个虚拟服务器组中,并按照伸缩组中对应的虚拟服务器组设置的端口号和权重添加 ECS 实例;当伸缩组发生缩容伸缩活动时(移出伸缩组并释放),待移出伸缩组并释放的 ECS 实例会自动从上述四个虚拟服务器组中移除。 注意: 上述代码中,AK、AKS、虚拟服务器组ID、负载均衡ID等参数需要您根据实际情况进行设置。 每个伸缩组目前支持配置 5 个虚拟服务器组(负载均衡实例ID+虚拟服务器组ID+端口号相同视为一个虚拟服务器组),如果同一个虚拟服务器组设置了不同的端口号配置到伸缩组中,则视为添加了多个虚拟服务器组 如果参数中同一个虚拟服务器相同的端口号设置了多次,则只取参数中最先设置的,接口会自动进行去重处理,不报错 伸缩组添加虚拟服务器组 如果伸缩组创建完成以后,您想添加虚拟服务器组到伸缩组中,可以通过使用 AttachVServerGroups 接口 或者 登陆 ESS控制台 通过修改伸缩组来实现。 通过 ESS 控制台向伸缩组添加虚拟服务器组 登录 ESS控制台,找到对应的伸缩组,点击修改伸缩组,弹出如下伸缩组修改对话框: 修改虚拟服务器组,点击确定即可。 通过 AttachVServerGroups 接口向伸缩组添加虚拟服务器组 通过 AttachVServerGroups 接口向伸缩组添加虚拟服务器组,对应的 JAVA 代码如下: import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.ess.model.v20140828.AttachVServerGroupsRequest; import com.aliyuncs.ess.model.v20140828.AttachVServerGroupsResponse; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import java.util.ArrayList; import java.util.List; public class EssSdkDemo { public static final String REGION_ID = "cn-hangzhou"; public static final String AK = "xxxxxxxxxxxxxx"; public static final String AKS = "xxxxxxxxxxxxxx"; public static void main(String[] args) throws Exception { IClientProfile clientProfile = DefaultProfile.getProfile(REGION_ID, AK, AKS); IAcsClient client = new DefaultAcsClient(clientProfile); attachVServerGroups(client); } public static void attachVServerGroups(IAcsClient client) throws Exception { AttachVServerGroupsRequest request = new AttachVServerGroupsRequest(); request.setScalingGroupId("asg-xxxxxxxx"); request.setRegionId(REGION_ID); //待添加的虚拟服务器组列表 List<AttachVServerGroupsRequest.VServerGroup> vServerGroups = new ArrayList<AttachVServerGroupsRequest.VServerGroup>(); //负载均衡实例 lb-aaaaaa 对应的虚拟服务器组列表 AttachVServerGroupsRequest.VServerGroup vServerGroup = new AttachVServerGroupsRequest.VServerGroup(); vServerGroup.setLoadBalancerId("lb-aaaaaa"); List<AttachVServerGroupsRequest.VServerGroup.VServerGroupAttribute> vServerGroupAttributes = new ArrayList<AttachVServerGroupsRequest.VServerGroup.VServerGroupAttribute>(); AttachVServerGroupsRequest.VServerGroup.VServerGroupAttribute vServerGroupAttribute = new AttachVServerGroupsRequest.VServerGroup.VServerGroupAttribute(); vServerGroupAttribute.setVServerGroupId("rsp-aaaaaaa"); vServerGroupAttribute.setWeight(60); vServerGroupAttribute.setPort(100); vServerGroupAttributes.add(vServerGroupAttribute); vServerGroup.setVServerGroupAttributes(vServerGroupAttributes); vServerGroups.add(vServerGroup); request.setVServerGroups(vServerGroups); //true 表示将伸缩组内的ECS实例添加到虚拟服务器组中,false 表示不添加 request.setForceAttach(false); AttachVServerGroupsResponse response = client.getAcsResponse(request); System.out.println(response.getRequestId()); } } 使用上述代码,可以实现向伸缩组 asg-xxxxxxxx 内添加虚拟服务器组 rsp-aaaaaaa,虚拟服务器组使用的端口号为 60,权重为 100,虚拟服务器组所属的负载均衡实例为 lb-aaaaaa。如果 ForceAttach 参数设置为 true,表示需要将组内现存的 ECS 实例按照设置的端口号(60)和权重(100)全部添加到虚拟服务器组 rsp-aaaaaaa 后端;如果 ForceAttach 参数设置为 false,则表示不添加。 注意: 上述代码中,AK、AKS、虚拟服务器组ID、负载均衡ID等参数需要您根据实际情况进行设置。 如果请求参数中的虚拟服务器组已经在伸缩组中存在(负载均衡ID+虚拟服务器组ID+端口号都相同则认为存在),则忽略对应的虚拟服务器组+端口号,并且接口不报错 如果请求参数中的虚拟服务器组重复(负载均衡ID+虚拟服务器组ID+端口号都相同则认为重复),则只取参数中最先设置的,接口自动去重,并且不报错 伸缩组移除虚拟服务器组 如果伸缩组创建完成以后,您想移除伸缩组中已经配置好的虚拟服务器组,可以通过使用 DetachVServerGroups 接口 或者 登陆 ESS控制台 通过修改伸缩组来实现。 通过 ESS 控制台将虚拟服务器组从伸缩组中移除 登录 ESS控制台,找到对应的伸缩组,点击修改伸缩组,弹出如下伸缩组修改对话框: 修改虚拟服务器组,点击确定即可。 通过 DetachVServerGroups 接口将虚拟服务器组从伸缩组中移除 通过 DetachVServerGroups 接口将虚拟服务器组从伸缩组中移除,对应的 JAVA 代码如下: import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.ess.model.v20140828.DetachVServerGroupsRequest; import com.aliyuncs.ess.model.v20140828.DetachVServerGroupsResponse; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import java.util.ArrayList; import java.util.List; public class EssSdk2Demo { public static final String REGION_ID = "cn-hangzhou"; public static final String AK = "xxxxxxxxxxxxxx"; public static final String AKS = "xxxxxxxxxxxxxx"; public static void main(String[] args) throws Exception { IClientProfile clientProfile = DefaultProfile.getProfile(REGION_ID, AK, AKS); IAcsClient client = new DefaultAcsClient(clientProfile); detachVServerGroups(client); } public static void detachVServerGroups(IAcsClient client) throws Exception { DetachVServerGroupsRequest request = new DetachVServerGroupsRequest(); request.setScalingGroupId("asg-xxxxxxxx"); request.setRegionId(REGION_ID); //待添加的虚拟服务器组列表 List<DetachVServerGroupsRequest.VServerGroup> vServerGroups = new ArrayList<DetachVServerGroupsRequest.VServerGroup>(); //负载均衡实例 lb-aaaaaa 对应的虚拟服务器组列表 DetachVServerGroupsRequest.VServerGroup vServerGroup = new DetachVServerGroupsRequest.VServerGroup(); vServerGroup.setLoadBalancerId("lb-aaaaaa"); List<DetachVServerGroupsRequest.VServerGroup.VServerGroupAttribute> vServerGroupAttributes = new ArrayList<DetachVServerGroupsRequest.VServerGroup.VServerGroupAttribute>(); DetachVServerGroupsRequest.VServerGroup.VServerGroupAttribute vServerGroupAttribute = new DetachVServerGroupsRequest.VServerGroup.VServerGroupAttribute(); vServerGroupAttribute.setVServerGroupId("rsp-aaaaaaa"); vServerGroupAttribute.setWeight(60); vServerGroupAttributes.add(vServerGroupAttribute); vServerGroup.setVServerGroupAttributes(vServerGroupAttributes); vServerGroups.add(vServerGroup); request.setVServerGroups(vServerGroups); //true 表示将伸缩组内的ECS实例从虚拟服务器组移除,false 表示不移除 request.setForceDetach(false); DetachVServerGroupsResponse response = client.getAcsResponse(request); System.out.println(response.getRequestId()); } } 使用上述代码,可以实现将伸缩组 asg-xxxxxxxx 中已经存在的端口号为 60 的虚拟服务器组 rsp-aaaaaaa 移除,虚拟服务器组所属的负载均衡实例为 lb-aaaaaa。如果 ForceDetach 参数设置为 true,表示需要将伸缩组内现存且在虚拟服务器组 rsp-aaaaaaa 中添加了的端口号为 60 的 ECS 实例从虚拟服务器组中移除;如果 ForceAttach 参数设置为 false,则表示不移除。 注意: 上述代码中,AK、AKS、虚拟服务器组ID、负载均衡ID等参数需要您根据实际情况进行设置。 如果请求参数中的虚拟服务器组在伸缩组中不存在(负载均衡ID+虚拟服务器组ID+端口号都相同则认为存在,反之为不存在),则忽略,并且接口不报错 写在最后 您可以在伸缩组中配置虚拟服务器组,对伸缩组内的 ECS 实例实现灵活的请求转发管理,并且通过 AttachVServerGroups 和 DetachVServerGroups 接口,您可以随时增加或者减少伸缩组内的虚拟服务器组,降低了虚拟服务器组与伸缩组的耦合程度,大大增加了您使用上的灵活性与实用性。

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

App Inspector-iOS真机功能详解

前言: App Inspector:浏览器端的移动设备 UI 查看器,使用树状态结构查看 UI 布局,自动生成 XPaths。官网:https://macacajs.github.io/app-inspector/cn/ 本次教程仅支持iOS,Mac 一、环境安装: 1、安装Node.js brew install node 2、安装macaca npm i -g macaca-cli 3、安装 ideviceinstaller brew install ideviceinstaller 4、安装 usbmuxd brew install usbmuxd 5、安装iOS驱动 npm i macaca-ios -g 6、安装App Inspector npm install app-inspector -g 二、安装XCTestWD 1、进入App Inspector安装目录下XCTestWD文件夹,具体路径参照自己的路径,可以通过find命令查找。 cd /usr/local/lib/node_modules/app-inspector/node_modules/xctestwd/XCTestWD 2、用xcode打开XCTestWD.xcodeproj文件 image.png 3、每个文件修改Bundle id和添加Team,请按下图操作步骤更改。Bundle id可自定义。 image.png image.png image.png image.png image.png 4、项目文件直接编译,test结尾的文件build for Testing。编译成功即可。 三、将 TEAM_ID 通过环境变量传入覆盖安装App Inspector、iOS驱动 1、获取你的TEAM_ID ,见下图。 image.png 2、覆盖安装iOS驱动 DEVELOPMENT_TEAM_ID=TEAM_ID npm i macaca-ios -g 3 、覆盖安装App Inspector DEVELOPMENT_TEAM_ID=TEAM_ID npm install app-inspector -g 四、使用App Inspector 1、获取测试机uuid,并执行以下命令: app-inspector -u DEVICE-ID 2、chrome浏览器自动打开地址:http://192.168.21.101:5678/ (推荐用 Chrome 浏览器) image.png 3、点击页面元素,即可获取元素xpath,name 4、若切换页面,需现在手机上切换,然后刷新浏览器,则获取手机的最新页面。 以上~

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册