云优采集接口

云优采集接口

阿里云大数据接口经纬度地址转换数据接口的优缺点是什么?

采集交流优采云 发表了文章 • 0 个评论 • 177 次浏览 • 2020-08-07 06:24 • 来自相关话题

  有关整个网络上的最新活动,请参阅下面的内容或右边的内容!
  ---------------
  点击查看最新的阿里云促销活动
  阿里云大数据接口经纬度地址转换数据接口有哪些优缺点?阿里云API接口推广活动.
  当我们实际建立网站,制作应用或制作微信小程序时,我们将需要一些大数据支持,例如电子商务需要快速的物流查询,而酒店则需要身份验证和肖像识别. 财务需要识别票据,财务管理需要财务或股票价格数据. 在阿里云的云市场中,我们可以看到有一个专用的api,它是各种数据的检索和使用. 编辑信任并推荐由阿里云直接运营的大数据,而阿里云则不时这样做. 活动:
  1. 阿里云大数据api数据通常会打折吗?
  (1)限时折扣35%,例如身份证明,银行卡身份证明,营业执照证明,账单等.
  (2)大促销将打折. 通常,某些数据被打折,而某些数据不被打折. 例如,当编辑者查看股市数据,天气预报数据和面部识别服务时,没有折扣. (当然,有免费试用的经验,虽然次数非常有限,但是您也可以先尝试然后购买)
  2. 阿里云的大数据API是免费的吗?
  在阿里云的特价促销或最新活动中,我们可以看到海量api数据的官方发布是免费的. 实际上,其中大多数是免费的,有些是象征性的费用.
  但是,阿里云的免费大数据与免费服务器相同. 有很多条件. 例如,前500次免费提供酒店,银行和付款网站所要求的ID身份证,如果超出该数目,则会收取费用. 上
  我们可以有两种选择: (其他免费的api数据也适用)
  (1)首先免费试用500次,使用后感觉良好,然后继续购买. (这里存在风险,特别是对于人流相对较大的系统,例如碰巧遇到的酒店前台注册,而客人在那儿等,但是验证不能等,这会带来负面影响)
  (2)由于对阿里云的信任,您一次可以购买更多产品. 以身份识别为例,单价低至0.018元/次.
  3. 阿里云的大数据API购买入口在哪里?
  有两种方法
  (1)如果您不确定需要什么并希望查看折扣促销信息,则可以在阿里云的“最新活动”或“特殊促销”中进行检查,或直接打开api促销页面(复制并粘贴)进入您的浏览器))
  (2)确定所需内容,登录到阿里云,在导航栏上单击“云市场”,进入云市场后,单击上方的导航栏(轮播的上一行),然后单击api. 输入后,您会看到有很多可供购买的api. 我建议,如果数据相似,请购买官方的阿里云. 也就是说,在产品说明的右侧有一个公司名称: 服务提供商阿里云计算有限公司(如图所示)
  4. 如何更经济地购买阿里云API数据?
  (1)制定计划和预算,并估算使用次数,例如快递数据,身份证识别数据,并大致知道一年中需要多少.
  (2)如果有促销,则购买,因为api扣除基于实际使用,因此,如果有促销,请先购买.
  (3)您要先免费试用吗?如果您需要的数据同时具有免费试用版和折扣,那么最好的方法是购买免费试用版并立即购买促销. 因为我们实际上会忘记事情,如果试用是好的,那就买. 没有折扣;如果您需要免费试用,如果超过免费试用期限,则可以先试用,然后在看到促销时购买.
  关于网站的优化和改善,如果您已经是阿里云的用户,则可以根据自己的情况使用某些功能来改善您的网站. (如果您不是阿里云的用户,您还可以查看以下建议. 毕竟,阿里云的技术非常强大. 例如,阿里的MySQL是世界上最强大的MySQL,而阿里有一些MySQL世界上的核心团队). 小编小站编辑建议您尝试优化组合,降低运营成本,并将网站优化到更理想的状态. 以下产品是常见且值得尝试的产品:
  1. 激活阿里云CDN以减少对服务器的直接访问并提高网页加载和用户访问速度:
  如果您的服务器当前未配置CDN服务,则强烈建议您了解CDN服务的打开情况. CDN内容分发网络服务在加速访问方面非常有效,可以最大化网页的加载速度并改善用户访问体验. 同时,由于大大减少了对服务器的直接访问请求,因此大大减少了服务器上的负载. 具有相同配置的服务器可以支持更多的并发访问请求用户,或者当用户数量相对稳定时,可以相应地减少服务器的硬件配置.
  2. 购买对象存储OSS服务来解决您大量的图形存储需求:
  如果您的网站或应用程序涉及大量文件存储,涉及大量图片或文件,那么我们强烈建议您购买对象存储OSS服务. 文件读写是消耗服务器最大CPU资源的IO操作,对服务器的性能影响很大. 通过OSS服务,将文件的上传,下载和存储过程部署到云中,从而减轻了WEB服务器的IO读写负载,可以有效地提高服务器的性能. 阿里云OSS提供大规模,安全,低成本和高度可靠的云存储服务,可提供99.999999999%的数据可靠性. RESTful API可以在Internet上的任何位置存储和访问,并且可以灵活地扩展容量和处理能力. 有多种存储类型可供选择,以充分优化存储成本. 使用OSS存储服务时,可以相应地调整WEB服务器的存储空间和带宽.
  3. 购买并使用阿里云数据库来实现网站服务器和数据库服务器的分离:
  如果当前网站和数据库配置在同一服务器上,则您会感到一些性能瓶颈开始出现. 然后,我们建议您购买一个单独的阿里云数据库来分离网站服务器和数据库服务器. 阿里云数据库的Redis版本支持常见的数据库类型,例如MySql. 它采用高度可靠的双机热备架构和无缝可伸缩的群集架构,以满足高读写性能方案和灵活的容量更改的业务需求. 具有以下优点:
  高稳定性架构: 双系统热备份架构可确保自动故障迁移以及数据安全性和可靠性
  灵活的性能扩展: 可以自定义连接数和网络吞吐量,并且灵活的群集版本规范适用于高并发情况
  源级别的护送: 阿里云高级专家的深度优化,修复内核安全漏洞并提高服务稳定性
  智能运维: 提供全链接的智能监控分析和可视化管理平台,省却了运维烦恼
  4. 购买,使用或升级阿里云服务器ecs的配置:
  如果您仍在使用VPS虚拟主机或托管的独立服务器,则升级到阿里云ECS服务器可以完美满足您的业务需求,同时最大程度地减少服务器操作和维护上的人工和时间投资成本.
  阿里云服务器集群支持自动故障迁移. 如果云服务器发生故障,其上的应用程序将自动迁移到群集中的其他云服务器以继续服务.
  阿里云ECS服务器支持弹性扩展,并自动适应用户数量和业务规模的快速扩展需求. 您可以在线和实时添加自己的配置,并根据需要自定义它. 阿里云服务器具有针对ARP攻击和MAC欺骗,快照备份以及永久数据不丢失,安全可靠的天然保护.
  5. 为您的网站购买并配置阿里云Shield SSL证书,以防止出现访问风险提示或停止访问:
  在云上颁发的阿里云Cloud Shield证书易于部署,防监控和防劫持. 现代浏览器对HTTPS的要求越来越高. Google Chrome,Firefox等已开始向未配置SSL证书的网站发出安全警告,甚至有些网站甚至直接停止访问并提示访问风险. 如果您的网站是电子商务类型或收录在线付款,则非常有必要尽快购买和部署SSL证书. 通过部署SSL证书来提高网站的信誉并防止攻击,可以有效保护用户和网站本身的合法权益. 购买并配置阿里云SSL证书,在云上发布各种品牌的数字证书,实现网站的HTTPS,使网站可信,防劫持,防篡改和防监控. 一键执行统一的生命周期管理,简化证书部署,并分发到云上的产品.
  -----遵循微信公众号“情侣站” -----
  -----获取最新的事件信息-----
  单击链接以加入组[活动专用组],组号: 496508661
  
  
  天猫618活动时间表日历: 掌握活动的每一天! :
  京东618总指南-情侣站摘要和更新
  从天猫超市免费收到优惠券[实时更新]:
  淘宝天猫双十一攻略详解!双11活动摘要! :
  淘宝双十二的策略是什么?双12新玩法! :
  元旦元旦活动指南!这就是您如何使用“元旦攻略”购物补贴的方法! :
  JD Double 11 Global Goods Festival:
  JD家电元旦购物有折扣吗?京东元旦的总体策略! 查看全部

  有关整个网络上的最新活动,请参阅下面的内容或右边的内容!
  ---------------
  点击查看最新的阿里云促销活动
  阿里云大数据接口经纬度地址转换数据接口有哪些优缺点?阿里云API接口推广活动.
  当我们实际建立网站,制作应用或制作微信小程序时,我们将需要一些大数据支持,例如电子商务需要快速的物流查询,而酒店则需要身份验证和肖像识别. 财务需要识别票据,财务管理需要财务或股票价格数据. 在阿里云的云市场中,我们可以看到有一个专用的api,它是各种数据的检索和使用. 编辑信任并推荐由阿里云直接运营的大数据,而阿里云则不时这样做. 活动:
  1. 阿里云大数据api数据通常会打折吗?
  (1)限时折扣35%,例如身份证明,银行卡身份证明,营业执照证明,账单等.
  (2)大促销将打折. 通常,某些数据被打折,而某些数据不被打折. 例如,当编辑者查看股市数据,天气预报数据和面部识别服务时,没有折扣. (当然,有免费试用的经验,虽然次数非常有限,但是您也可以先尝试然后购买)
  2. 阿里云的大数据API是免费的吗?
  在阿里云的特价促销或最新活动中,我们可以看到海量api数据的官方发布是免费的. 实际上,其中大多数是免费的,有些是象征性的费用.
  但是,阿里云的免费大数据与免费服务器相同. 有很多条件. 例如,前500次免费提供酒店,银行和付款网站所要求的ID身份证,如果超出该数目,则会收取费用. 上
  我们可以有两种选择: (其他免费的api数据也适用)
  (1)首先免费试用500次,使用后感觉良好,然后继续购买. (这里存在风险,特别是对于人流相对较大的系统,例如碰巧遇到的酒店前台注册,而客人在那儿等,但是验证不能等,这会带来负面影响)
  (2)由于对阿里云的信任,您一次可以购买更多产品. 以身份识别为例,单价低至0.018元/次.
  3. 阿里云的大数据API购买入口在哪里?
  有两种方法
  (1)如果您不确定需要什么并希望查看折扣促销信息,则可以在阿里云的“最新活动”或“特殊促销”中进行检查,或直接打开api促销页面(复制并粘贴)进入您的浏览器))
  (2)确定所需内容,登录到阿里云,在导航栏上单击“云市场”,进入云市场后,单击上方的导航栏(轮播的上一行),然后单击api. 输入后,您会看到有很多可供购买的api. 我建议,如果数据相似,请购买官方的阿里云. 也就是说,在产品说明的右侧有一个公司名称: 服务提供商阿里云计算有限公司(如图所示)
  4. 如何更经济地购买阿里云API数据?
  (1)制定计划和预算,并估算使用次数,例如快递数据,身份证识别数据,并大致知道一年中需要多少.
  (2)如果有促销,则购买,因为api扣除基于实际使用,因此,如果有促销,请先购买.
  (3)您要先免费试用吗?如果您需要的数据同时具有免费试用版和折扣,那么最好的方法是购买免费试用版并立即购买促销. 因为我们实际上会忘记事情,如果试用是好的,那就买. 没有折扣;如果您需要免费试用,如果超过免费试用期限,则可以先试用,然后在看到促销时购买.
  关于网站的优化和改善,如果您已经是阿里云的用户,则可以根据自己的情况使用某些功能来改善您的网站. (如果您不是阿里云的用户,您还可以查看以下建议. 毕竟,阿里云的技术非常强大. 例如,阿里的MySQL是世界上最强大的MySQL,而阿里有一些MySQL世界上的核心团队). 小编小站编辑建议您尝试优化组合,降低运营成本,并将网站优化到更理想的状态. 以下产品是常见且值得尝试的产品:
  1. 激活阿里云CDN以减少对服务器的直接访问并提高网页加载和用户访问速度:
  如果您的服务器当前未配置CDN服务,则强烈建议您了解CDN服务的打开情况. CDN内容分发网络服务在加速访问方面非常有效,可以最大化网页的加载速度并改善用户访问体验. 同时,由于大大减少了对服务器的直接访问请求,因此大大减少了服务器上的负载. 具有相同配置的服务器可以支持更多的并发访问请求用户,或者当用户数量相对稳定时,可以相应地减少服务器的硬件配置.
  2. 购买对象存储OSS服务来解决您大量的图形存储需求:
  如果您的网站或应用程序涉及大量文件存储,涉及大量图片或文件,那么我们强烈建议您购买对象存储OSS服务. 文件读写是消耗服务器最大CPU资源的IO操作,对服务器的性能影响很大. 通过OSS服务,将文件的上传,下载和存储过程部署到云中,从而减轻了WEB服务器的IO读写负载,可以有效地提高服务器的性能. 阿里云OSS提供大规模,安全,低成本和高度可靠的云存储服务,可提供99.999999999%的数据可靠性. RESTful API可以在Internet上的任何位置存储和访问,并且可以灵活地扩展容量和处理能力. 有多种存储类型可供选择,以充分优化存储成本. 使用OSS存储服务时,可以相应地调整WEB服务器的存储空间和带宽.
  3. 购买并使用阿里云数据库来实现网站服务器和数据库服务器的分离:
  如果当前网站和数据库配置在同一服务器上,则您会感到一些性能瓶颈开始出现. 然后,我们建议您购买一个单独的阿里云数据库来分离网站服务器和数据库服务器. 阿里云数据库的Redis版本支持常见的数据库类型,例如MySql. 它采用高度可靠的双机热备架构和无缝可伸缩的群集架构,以满足高读写性能方案和灵活的容量更改的业务需求. 具有以下优点:
  高稳定性架构: 双系统热备份架构可确保自动故障迁移以及数据安全性和可靠性
  灵活的性能扩展: 可以自定义连接数和网络吞吐量,并且灵活的群集版本规范适用于高并发情况
  源级别的护送: 阿里云高级专家的深度优化,修复内核安全漏洞并提高服务稳定性
  智能运维: 提供全链接的智能监控分析和可视化管理平台,省却了运维烦恼
  4. 购买,使用或升级阿里云服务器ecs的配置:
  如果您仍在使用VPS虚拟主机或托管的独立服务器,则升级到阿里云ECS服务器可以完美满足您的业务需求,同时最大程度地减少服务器操作和维护上的人工和时间投资成本.
  阿里云服务器集群支持自动故障迁移. 如果云服务器发生故障,其上的应用程序将自动迁移到群集中的其他云服务器以继续服务.
  阿里云ECS服务器支持弹性扩展,并自动适应用户数量和业务规模的快速扩展需求. 您可以在线和实时添加自己的配置,并根据需要自定义它. 阿里云服务器具有针对ARP攻击和MAC欺骗,快照备份以及永久数据不丢失,安全可靠的天然保护.
  5. 为您的网站购买并配置阿里云Shield SSL证书,以防止出现访问风险提示或停止访问:
  在云上颁发的阿里云Cloud Shield证书易于部署,防监控和防劫持. 现代浏览器对HTTPS的要求越来越高. Google Chrome,Firefox等已开始向未配置SSL证书的网站发出安全警告,甚至有些网站甚至直接停止访问并提示访问风险. 如果您的网站是电子商务类型或收录在线付款,则非常有必要尽快购买和部署SSL证书. 通过部署SSL证书来提高网站的信誉并防止攻击,可以有效保护用户和网站本身的合法权益. 购买并配置阿里云SSL证书,在云上发布各种品牌的数字证书,实现网站的HTTPS,使网站可信,防劫持,防篡改和防监控. 一键执行统一的生命周期管理,简化证书部署,并分发到云上的产品.
  -----遵循微信公众号“情侣站” -----
  -----获取最新的事件信息-----
  单击链接以加入组[活动专用组],组号: 496508661
  
  
  天猫618活动时间表日历: 掌握活动的每一天! :
  京东618总指南-情侣站摘要和更新
  从天猫超市免费收到优惠券[实时更新]:
  淘宝天猫双十一攻略详解!双11活动摘要! :
  淘宝双十二的策略是什么?双12新玩法! :
  元旦元旦活动指南!这就是您如何使用“元旦攻略”购物补贴的方法! :
  JD Double 11 Global Goods Festival:
  JD家电元旦购物有折扣吗?京东元旦的总体策略!

SpringBoot动态代理|反射|注释| AOP优化代码(1)

采集交流优采云 发表了文章 • 0 个评论 • 301 次浏览 • 2020-08-06 17:18 • 来自相关话题

  I. 背景
  在项目中,您需要调用一个外部接口,因为您需要在不同的环境(生产,测试,开发)中调用相同的接口(例如: 将相同的APP发送到生产,测试和测试中的设备)开发环境).
  1.生产环境由SpringCloud注册中心,通过Feign调用,
2.其它环境直接通过OKHttp直接通过Url调用。
  因此,有必要根据传入环境选择不同的调用方法.
  优化前的代码结构
  以下是添加和删除设备接口的示例(都很简单,它不代表真实的业务代码):
  public interface DeviceHandler {

void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue);

void remoteDeleteBatch(Integer envValue, List snsList);
}
  好的实现方式:
  @Component
@Slf4j
public class DeviceHandlerFeignImpl implements DeviceHandler {
@Autowired
private DeviceFeignClient deviceFeignClient;
@Override
public void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue) {
RestResult restResult = deviceFeignClient.create(remoteAddDeviceParam);
...
}
@Override
public void remoteDeleteBatch(Integer envValue, List snsList) {
RestResult restResult = deviceFeignClient.deleteBySnList(snsList);
...
}

}
  网址模式实现
  @Component
@Slf4j
public class DeviceHandlerUrlImpl implements DeviceHandler {
@Override
public void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue) {
String url = getAddUrlByEnvValue(envValue);
String response = OkHttpUtils.httpPostSyn(url, JSON.toJSONString(snsList), false);
RestResult restResult = JSON.parseObject(response, RestResult.class);
...
}
@Override
public void remoteDeleteBatch(Integer envValue, List snsList) {
String url = getDelUrlByEnvValue(envValue);
String response = OkHttpUtils.httpPostSyn(url, JSON.toJSONString(snsList), false);
RestResult restResult = JSON.parseObject(response, RestResult.class);
...
}
}
  DeviceHandlerRouter扮演路由的角色(实际上类似于代理),选择要调用的实现,并将DeviceHandlerRouter公开给上层服务.
  @Component
public class DeviceHandlerRouter implements DeviceHandler {
...
@Autowired
private DeviceHandlerUrlImpl deviceHandlerUrlImpl;
@Autowired
private DeviceHandlerUrlImpl deviceHandlerUrlImpl;
@Override
public void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue) {
getDeviceHandler(envValue).remoteAddBatch(remoteAddDeviceParam,envValue);
}
@Override
public void remoteDeleteBatch(Integer envValue, List snsList) {
getDeviceHandler(envValue).remoteDeleteBatch(envValue,snsList);
}
private DeviceHandler getDeviceHandler(Integer envValue) {
//根据传入的环境返回DeviceHandlerUrlImpl 或 DeviceHandlerUrlImpl
}
}
  上层服务调用DeviceHandlerRouter来添加和删除设备.
  有问题
  如果添加一个常量接口调用,则需要实现xxxRouter,但是代码基本相同. 有什么方法可以在不编写代码的情况下提供默认实现?
  动态代理提供默认实现
  @Slf4j
public class DynamicProxyBeanFactory implements InvocationHandler {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//各位客官别急,这里只是简单打印一下,真正的代码在下一篇
log.info("DynamicProxyBeanFactory------------------>invoke")
//正儿八经的随便创建一个DeviceHandlerUrlImpl
return new DeviceHandlerUrlImpl();
}
public static T newMapperProxy(Class mapperInterface) {
ClassLoader classLoader = mapperInterface.getClassLoader();
Class[] interfaces = new Class[]{mapperInterface};
DynamicProxyBeanFactory proxy = new DynamicProxyBeanFactory();
return (T) Proxy.newProxyInstance(classLoader, interfaces, proxy);
}
}
  致电:
  DeviceHandler deviceHandler = DynamicProxyBeanFactory.newMapperProxy(DeviceHandler.class);
  deviceHandler.remoteAddBatch(...);
  参考链接: 动态代理提供接口的默认实现
  摘要
  以上我们只是抛出了实际开发中遇到的问题,并找到了解决问题的第一种方法. 当然,动态代理提供的接口的默认实现只是一个演示,而没有实际内容. 查看全部

  I. 背景
  在项目中,您需要调用一个外部接口,因为您需要在不同的环境(生产,测试,开发)中调用相同的接口(例如: 将相同的APP发送到生产,测试和测试中的设备)开发环境).
  1.生产环境由SpringCloud注册中心,通过Feign调用,
2.其它环境直接通过OKHttp直接通过Url调用。
  因此,有必要根据传入环境选择不同的调用方法.
  优化前的代码结构
  以下是添加和删除设备接口的示例(都很简单,它不代表真实的业务代码):
  public interface DeviceHandler {

void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue);

void remoteDeleteBatch(Integer envValue, List snsList);
}
  好的实现方式:
  @Component
@Slf4j
public class DeviceHandlerFeignImpl implements DeviceHandler {
@Autowired
private DeviceFeignClient deviceFeignClient;
@Override
public void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue) {
RestResult restResult = deviceFeignClient.create(remoteAddDeviceParam);
...
}
@Override
public void remoteDeleteBatch(Integer envValue, List snsList) {
RestResult restResult = deviceFeignClient.deleteBySnList(snsList);
...
}

}
  网址模式实现
  @Component
@Slf4j
public class DeviceHandlerUrlImpl implements DeviceHandler {
@Override
public void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue) {
String url = getAddUrlByEnvValue(envValue);
String response = OkHttpUtils.httpPostSyn(url, JSON.toJSONString(snsList), false);
RestResult restResult = JSON.parseObject(response, RestResult.class);
...
}
@Override
public void remoteDeleteBatch(Integer envValue, List snsList) {
String url = getDelUrlByEnvValue(envValue);
String response = OkHttpUtils.httpPostSyn(url, JSON.toJSONString(snsList), false);
RestResult restResult = JSON.parseObject(response, RestResult.class);
...
}
}
  DeviceHandlerRouter扮演路由的角色(实际上类似于代理),选择要调用的实现,并将DeviceHandlerRouter公开给上层服务.
  @Component
public class DeviceHandlerRouter implements DeviceHandler {
...
@Autowired
private DeviceHandlerUrlImpl deviceHandlerUrlImpl;
@Autowired
private DeviceHandlerUrlImpl deviceHandlerUrlImpl;
@Override
public void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue) {
getDeviceHandler(envValue).remoteAddBatch(remoteAddDeviceParam,envValue);
}
@Override
public void remoteDeleteBatch(Integer envValue, List snsList) {
getDeviceHandler(envValue).remoteDeleteBatch(envValue,snsList);
}
private DeviceHandler getDeviceHandler(Integer envValue) {
//根据传入的环境返回DeviceHandlerUrlImpl 或 DeviceHandlerUrlImpl
}
}
  上层服务调用DeviceHandlerRouter来添加和删除设备.
  有问题
  如果添加一个常量接口调用,则需要实现xxxRouter,但是代码基本相同. 有什么方法可以在不编写代码的情况下提供默认实现?
  动态代理提供默认实现
  @Slf4j
public class DynamicProxyBeanFactory implements InvocationHandler {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//各位客官别急,这里只是简单打印一下,真正的代码在下一篇
log.info("DynamicProxyBeanFactory------------------>invoke")
//正儿八经的随便创建一个DeviceHandlerUrlImpl
return new DeviceHandlerUrlImpl();
}
public static T newMapperProxy(Class mapperInterface) {
ClassLoader classLoader = mapperInterface.getClassLoader();
Class[] interfaces = new Class[]{mapperInterface};
DynamicProxyBeanFactory proxy = new DynamicProxyBeanFactory();
return (T) Proxy.newProxyInstance(classLoader, interfaces, proxy);
}
}
  致电:
  DeviceHandler deviceHandler = DynamicProxyBeanFactory.newMapperProxy(DeviceHandler.class);
  deviceHandler.remoteAddBatch(...);
  参考链接: 动态代理提供接口的默认实现
  摘要
  以上我们只是抛出了实际开发中遇到的问题,并找到了解决问题的第一种方法. 当然,动态代理提供的接口的默认实现只是一个演示,而没有实际内容.

云优CMS企业网站管理系统

采集交流优采云 发表了文章 • 0 个评论 • 297 次浏览 • 2020-08-04 10:01 • 来自相关话题

  云优CMS是一款基于TP5.0框架为核心开发的一套免费+开源的城市分站内容管理系统。云优CMS前身为远航CMS,团队自2013年起自主研制城市分站内容管理系统,5年来,修复升级上千个功能性问题。
  云优CMS于2017年9月上线全新版本,二级域名分站,内容分站独立,七牛云存储,自定义数组,自定义表单,自定义栏目权限,自定义管理权限等诸多功能受到用户追捧,上线短短3个月云优采集接口,下载次数已超过5万次。云优CMS深信没有排行的网站不是“好网站”,我们将致力于为用户构建全手动SEO解决方案。
  千城千站支持二级域名
  云优CMS后台外置全省3000多个城市,通过一键开启即可诠释您的分站,独有的调用模式使权重传递愈发灵活
  自定义模型
  云优CMS内置自定义模型,提供单行文本、多行文本、简约编辑器、富文本编辑器,附件,单图上传,多图上传,日期,数字,单选,复选,下拉多种数组
  组合筛选
  云优CMS按照设置好的单选或下拉数组进行组合筛选,丰富应用到装潢、婚庆、二手车等网站场景
  七牛云存储
  云优CMS和第三方七牛云存储平台对接云优采集接口,只需填写插口即可大幅度提高网站资源访问速率因而实现秒开利于百度蜘蛛抓取
  API管理
  云优官网关键词生成系统和排行查询系统免费提供个授权用户使用,通过简易的操作即可一键查询网站排名报表,并在最新的版本集成到CMS后台
  采集接口
  云优CMS提供优采云采集及信息推送平台(目前仅限代理使用)实现全手动无人值守网站更新
  排名报表
  云优CMS提供多台云服务器实现在线排行查询并手动生成报表
  微信小程序订购授权 查看全部

  云优CMS是一款基于TP5.0框架为核心开发的一套免费+开源的城市分站内容管理系统。云优CMS前身为远航CMS,团队自2013年起自主研制城市分站内容管理系统,5年来,修复升级上千个功能性问题。
  云优CMS于2017年9月上线全新版本,二级域名分站,内容分站独立,七牛云存储,自定义数组,自定义表单,自定义栏目权限,自定义管理权限等诸多功能受到用户追捧,上线短短3个月云优采集接口,下载次数已超过5万次。云优CMS深信没有排行的网站不是“好网站”,我们将致力于为用户构建全手动SEO解决方案。
  千城千站支持二级域名
  云优CMS后台外置全省3000多个城市,通过一键开启即可诠释您的分站,独有的调用模式使权重传递愈发灵活
  自定义模型
  云优CMS内置自定义模型,提供单行文本、多行文本、简约编辑器、富文本编辑器,附件,单图上传,多图上传,日期,数字,单选,复选,下拉多种数组
  组合筛选
  云优CMS按照设置好的单选或下拉数组进行组合筛选,丰富应用到装潢、婚庆、二手车等网站场景
  七牛云存储
  云优CMS和第三方七牛云存储平台对接云优采集接口,只需填写插口即可大幅度提高网站资源访问速率因而实现秒开利于百度蜘蛛抓取
  API管理
  云优官网关键词生成系统和排行查询系统免费提供个授权用户使用,通过简易的操作即可一键查询网站排名报表,并在最新的版本集成到CMS后台
  采集接口
  云优CMS提供优采云采集及信息推送平台(目前仅限代理使用)实现全手动无人值守网站更新
  排名报表
  云优CMS提供多台云服务器实现在线排行查询并手动生成报表
  微信小程序订购授权

阿里云大数据接口经纬度地址转换数据接口的优缺点是什么?

采集交流优采云 发表了文章 • 0 个评论 • 177 次浏览 • 2020-08-07 06:24 • 来自相关话题

  有关整个网络上的最新活动,请参阅下面的内容或右边的内容!
  ---------------
  点击查看最新的阿里云促销活动
  阿里云大数据接口经纬度地址转换数据接口有哪些优缺点?阿里云API接口推广活动.
  当我们实际建立网站,制作应用或制作微信小程序时,我们将需要一些大数据支持,例如电子商务需要快速的物流查询,而酒店则需要身份验证和肖像识别. 财务需要识别票据,财务管理需要财务或股票价格数据. 在阿里云的云市场中,我们可以看到有一个专用的api,它是各种数据的检索和使用. 编辑信任并推荐由阿里云直接运营的大数据,而阿里云则不时这样做. 活动:
  1. 阿里云大数据api数据通常会打折吗?
  (1)限时折扣35%,例如身份证明,银行卡身份证明,营业执照证明,账单等.
  (2)大促销将打折. 通常,某些数据被打折,而某些数据不被打折. 例如,当编辑者查看股市数据,天气预报数据和面部识别服务时,没有折扣. (当然,有免费试用的经验,虽然次数非常有限,但是您也可以先尝试然后购买)
  2. 阿里云的大数据API是免费的吗?
  在阿里云的特价促销或最新活动中,我们可以看到海量api数据的官方发布是免费的. 实际上,其中大多数是免费的,有些是象征性的费用.
  但是,阿里云的免费大数据与免费服务器相同. 有很多条件. 例如,前500次免费提供酒店,银行和付款网站所要求的ID身份证,如果超出该数目,则会收取费用. 上
  我们可以有两种选择: (其他免费的api数据也适用)
  (1)首先免费试用500次,使用后感觉良好,然后继续购买. (这里存在风险,特别是对于人流相对较大的系统,例如碰巧遇到的酒店前台注册,而客人在那儿等,但是验证不能等,这会带来负面影响)
  (2)由于对阿里云的信任,您一次可以购买更多产品. 以身份识别为例,单价低至0.018元/次.
  3. 阿里云的大数据API购买入口在哪里?
  有两种方法
  (1)如果您不确定需要什么并希望查看折扣促销信息,则可以在阿里云的“最新活动”或“特殊促销”中进行检查,或直接打开api促销页面(复制并粘贴)进入您的浏览器))
  (2)确定所需内容,登录到阿里云,在导航栏上单击“云市场”,进入云市场后,单击上方的导航栏(轮播的上一行),然后单击api. 输入后,您会看到有很多可供购买的api. 我建议,如果数据相似,请购买官方的阿里云. 也就是说,在产品说明的右侧有一个公司名称: 服务提供商阿里云计算有限公司(如图所示)
  4. 如何更经济地购买阿里云API数据?
  (1)制定计划和预算,并估算使用次数,例如快递数据,身份证识别数据,并大致知道一年中需要多少.
  (2)如果有促销,则购买,因为api扣除基于实际使用,因此,如果有促销,请先购买.
  (3)您要先免费试用吗?如果您需要的数据同时具有免费试用版和折扣,那么最好的方法是购买免费试用版并立即购买促销. 因为我们实际上会忘记事情,如果试用是好的,那就买. 没有折扣;如果您需要免费试用,如果超过免费试用期限,则可以先试用,然后在看到促销时购买.
  关于网站的优化和改善,如果您已经是阿里云的用户,则可以根据自己的情况使用某些功能来改善您的网站. (如果您不是阿里云的用户,您还可以查看以下建议. 毕竟,阿里云的技术非常强大. 例如,阿里的MySQL是世界上最强大的MySQL,而阿里有一些MySQL世界上的核心团队). 小编小站编辑建议您尝试优化组合,降低运营成本,并将网站优化到更理想的状态. 以下产品是常见且值得尝试的产品:
  1. 激活阿里云CDN以减少对服务器的直接访问并提高网页加载和用户访问速度:
  如果您的服务器当前未配置CDN服务,则强烈建议您了解CDN服务的打开情况. CDN内容分发网络服务在加速访问方面非常有效,可以最大化网页的加载速度并改善用户访问体验. 同时,由于大大减少了对服务器的直接访问请求,因此大大减少了服务器上的负载. 具有相同配置的服务器可以支持更多的并发访问请求用户,或者当用户数量相对稳定时,可以相应地减少服务器的硬件配置.
  2. 购买对象存储OSS服务来解决您大量的图形存储需求:
  如果您的网站或应用程序涉及大量文件存储,涉及大量图片或文件,那么我们强烈建议您购买对象存储OSS服务. 文件读写是消耗服务器最大CPU资源的IO操作,对服务器的性能影响很大. 通过OSS服务,将文件的上传,下载和存储过程部署到云中,从而减轻了WEB服务器的IO读写负载,可以有效地提高服务器的性能. 阿里云OSS提供大规模,安全,低成本和高度可靠的云存储服务,可提供99.999999999%的数据可靠性. RESTful API可以在Internet上的任何位置存储和访问,并且可以灵活地扩展容量和处理能力. 有多种存储类型可供选择,以充分优化存储成本. 使用OSS存储服务时,可以相应地调整WEB服务器的存储空间和带宽.
  3. 购买并使用阿里云数据库来实现网站服务器和数据库服务器的分离:
  如果当前网站和数据库配置在同一服务器上,则您会感到一些性能瓶颈开始出现. 然后,我们建议您购买一个单独的阿里云数据库来分离网站服务器和数据库服务器. 阿里云数据库的Redis版本支持常见的数据库类型,例如MySql. 它采用高度可靠的双机热备架构和无缝可伸缩的群集架构,以满足高读写性能方案和灵活的容量更改的业务需求. 具有以下优点:
  高稳定性架构: 双系统热备份架构可确保自动故障迁移以及数据安全性和可靠性
  灵活的性能扩展: 可以自定义连接数和网络吞吐量,并且灵活的群集版本规范适用于高并发情况
  源级别的护送: 阿里云高级专家的深度优化,修复内核安全漏洞并提高服务稳定性
  智能运维: 提供全链接的智能监控分析和可视化管理平台,省却了运维烦恼
  4. 购买,使用或升级阿里云服务器ecs的配置:
  如果您仍在使用VPS虚拟主机或托管的独立服务器,则升级到阿里云ECS服务器可以完美满足您的业务需求,同时最大程度地减少服务器操作和维护上的人工和时间投资成本.
  阿里云服务器集群支持自动故障迁移. 如果云服务器发生故障,其上的应用程序将自动迁移到群集中的其他云服务器以继续服务.
  阿里云ECS服务器支持弹性扩展,并自动适应用户数量和业务规模的快速扩展需求. 您可以在线和实时添加自己的配置,并根据需要自定义它. 阿里云服务器具有针对ARP攻击和MAC欺骗,快照备份以及永久数据不丢失,安全可靠的天然保护.
  5. 为您的网站购买并配置阿里云Shield SSL证书,以防止出现访问风险提示或停止访问:
  在云上颁发的阿里云Cloud Shield证书易于部署,防监控和防劫持. 现代浏览器对HTTPS的要求越来越高. Google Chrome,Firefox等已开始向未配置SSL证书的网站发出安全警告,甚至有些网站甚至直接停止访问并提示访问风险. 如果您的网站是电子商务类型或收录在线付款,则非常有必要尽快购买和部署SSL证书. 通过部署SSL证书来提高网站的信誉并防止攻击,可以有效保护用户和网站本身的合法权益. 购买并配置阿里云SSL证书,在云上发布各种品牌的数字证书,实现网站的HTTPS,使网站可信,防劫持,防篡改和防监控. 一键执行统一的生命周期管理,简化证书部署,并分发到云上的产品.
  -----遵循微信公众号“情侣站” -----
  -----获取最新的事件信息-----
  单击链接以加入组[活动专用组],组号: 496508661
  
  
  天猫618活动时间表日历: 掌握活动的每一天! :
  京东618总指南-情侣站摘要和更新
  从天猫超市免费收到优惠券[实时更新]:
  淘宝天猫双十一攻略详解!双11活动摘要! :
  淘宝双十二的策略是什么?双12新玩法! :
  元旦元旦活动指南!这就是您如何使用“元旦攻略”购物补贴的方法! :
  JD Double 11 Global Goods Festival:
  JD家电元旦购物有折扣吗?京东元旦的总体策略! 查看全部

  有关整个网络上的最新活动,请参阅下面的内容或右边的内容!
  ---------------
  点击查看最新的阿里云促销活动
  阿里云大数据接口经纬度地址转换数据接口有哪些优缺点?阿里云API接口推广活动.
  当我们实际建立网站,制作应用或制作微信小程序时,我们将需要一些大数据支持,例如电子商务需要快速的物流查询,而酒店则需要身份验证和肖像识别. 财务需要识别票据,财务管理需要财务或股票价格数据. 在阿里云的云市场中,我们可以看到有一个专用的api,它是各种数据的检索和使用. 编辑信任并推荐由阿里云直接运营的大数据,而阿里云则不时这样做. 活动:
  1. 阿里云大数据api数据通常会打折吗?
  (1)限时折扣35%,例如身份证明,银行卡身份证明,营业执照证明,账单等.
  (2)大促销将打折. 通常,某些数据被打折,而某些数据不被打折. 例如,当编辑者查看股市数据,天气预报数据和面部识别服务时,没有折扣. (当然,有免费试用的经验,虽然次数非常有限,但是您也可以先尝试然后购买)
  2. 阿里云的大数据API是免费的吗?
  在阿里云的特价促销或最新活动中,我们可以看到海量api数据的官方发布是免费的. 实际上,其中大多数是免费的,有些是象征性的费用.
  但是,阿里云的免费大数据与免费服务器相同. 有很多条件. 例如,前500次免费提供酒店,银行和付款网站所要求的ID身份证,如果超出该数目,则会收取费用. 上
  我们可以有两种选择: (其他免费的api数据也适用)
  (1)首先免费试用500次,使用后感觉良好,然后继续购买. (这里存在风险,特别是对于人流相对较大的系统,例如碰巧遇到的酒店前台注册,而客人在那儿等,但是验证不能等,这会带来负面影响)
  (2)由于对阿里云的信任,您一次可以购买更多产品. 以身份识别为例,单价低至0.018元/次.
  3. 阿里云的大数据API购买入口在哪里?
  有两种方法
  (1)如果您不确定需要什么并希望查看折扣促销信息,则可以在阿里云的“最新活动”或“特殊促销”中进行检查,或直接打开api促销页面(复制并粘贴)进入您的浏览器))
  (2)确定所需内容,登录到阿里云,在导航栏上单击“云市场”,进入云市场后,单击上方的导航栏(轮播的上一行),然后单击api. 输入后,您会看到有很多可供购买的api. 我建议,如果数据相似,请购买官方的阿里云. 也就是说,在产品说明的右侧有一个公司名称: 服务提供商阿里云计算有限公司(如图所示)
  4. 如何更经济地购买阿里云API数据?
  (1)制定计划和预算,并估算使用次数,例如快递数据,身份证识别数据,并大致知道一年中需要多少.
  (2)如果有促销,则购买,因为api扣除基于实际使用,因此,如果有促销,请先购买.
  (3)您要先免费试用吗?如果您需要的数据同时具有免费试用版和折扣,那么最好的方法是购买免费试用版并立即购买促销. 因为我们实际上会忘记事情,如果试用是好的,那就买. 没有折扣;如果您需要免费试用,如果超过免费试用期限,则可以先试用,然后在看到促销时购买.
  关于网站的优化和改善,如果您已经是阿里云的用户,则可以根据自己的情况使用某些功能来改善您的网站. (如果您不是阿里云的用户,您还可以查看以下建议. 毕竟,阿里云的技术非常强大. 例如,阿里的MySQL是世界上最强大的MySQL,而阿里有一些MySQL世界上的核心团队). 小编小站编辑建议您尝试优化组合,降低运营成本,并将网站优化到更理想的状态. 以下产品是常见且值得尝试的产品:
  1. 激活阿里云CDN以减少对服务器的直接访问并提高网页加载和用户访问速度:
  如果您的服务器当前未配置CDN服务,则强烈建议您了解CDN服务的打开情况. CDN内容分发网络服务在加速访问方面非常有效,可以最大化网页的加载速度并改善用户访问体验. 同时,由于大大减少了对服务器的直接访问请求,因此大大减少了服务器上的负载. 具有相同配置的服务器可以支持更多的并发访问请求用户,或者当用户数量相对稳定时,可以相应地减少服务器的硬件配置.
  2. 购买对象存储OSS服务来解决您大量的图形存储需求:
  如果您的网站或应用程序涉及大量文件存储,涉及大量图片或文件,那么我们强烈建议您购买对象存储OSS服务. 文件读写是消耗服务器最大CPU资源的IO操作,对服务器的性能影响很大. 通过OSS服务,将文件的上传,下载和存储过程部署到云中,从而减轻了WEB服务器的IO读写负载,可以有效地提高服务器的性能. 阿里云OSS提供大规模,安全,低成本和高度可靠的云存储服务,可提供99.999999999%的数据可靠性. RESTful API可以在Internet上的任何位置存储和访问,并且可以灵活地扩展容量和处理能力. 有多种存储类型可供选择,以充分优化存储成本. 使用OSS存储服务时,可以相应地调整WEB服务器的存储空间和带宽.
  3. 购买并使用阿里云数据库来实现网站服务器和数据库服务器的分离:
  如果当前网站和数据库配置在同一服务器上,则您会感到一些性能瓶颈开始出现. 然后,我们建议您购买一个单独的阿里云数据库来分离网站服务器和数据库服务器. 阿里云数据库的Redis版本支持常见的数据库类型,例如MySql. 它采用高度可靠的双机热备架构和无缝可伸缩的群集架构,以满足高读写性能方案和灵活的容量更改的业务需求. 具有以下优点:
  高稳定性架构: 双系统热备份架构可确保自动故障迁移以及数据安全性和可靠性
  灵活的性能扩展: 可以自定义连接数和网络吞吐量,并且灵活的群集版本规范适用于高并发情况
  源级别的护送: 阿里云高级专家的深度优化,修复内核安全漏洞并提高服务稳定性
  智能运维: 提供全链接的智能监控分析和可视化管理平台,省却了运维烦恼
  4. 购买,使用或升级阿里云服务器ecs的配置:
  如果您仍在使用VPS虚拟主机或托管的独立服务器,则升级到阿里云ECS服务器可以完美满足您的业务需求,同时最大程度地减少服务器操作和维护上的人工和时间投资成本.
  阿里云服务器集群支持自动故障迁移. 如果云服务器发生故障,其上的应用程序将自动迁移到群集中的其他云服务器以继续服务.
  阿里云ECS服务器支持弹性扩展,并自动适应用户数量和业务规模的快速扩展需求. 您可以在线和实时添加自己的配置,并根据需要自定义它. 阿里云服务器具有针对ARP攻击和MAC欺骗,快照备份以及永久数据不丢失,安全可靠的天然保护.
  5. 为您的网站购买并配置阿里云Shield SSL证书,以防止出现访问风险提示或停止访问:
  在云上颁发的阿里云Cloud Shield证书易于部署,防监控和防劫持. 现代浏览器对HTTPS的要求越来越高. Google Chrome,Firefox等已开始向未配置SSL证书的网站发出安全警告,甚至有些网站甚至直接停止访问并提示访问风险. 如果您的网站是电子商务类型或收录在线付款,则非常有必要尽快购买和部署SSL证书. 通过部署SSL证书来提高网站的信誉并防止攻击,可以有效保护用户和网站本身的合法权益. 购买并配置阿里云SSL证书,在云上发布各种品牌的数字证书,实现网站的HTTPS,使网站可信,防劫持,防篡改和防监控. 一键执行统一的生命周期管理,简化证书部署,并分发到云上的产品.
  -----遵循微信公众号“情侣站” -----
  -----获取最新的事件信息-----
  单击链接以加入组[活动专用组],组号: 496508661
  
  
  天猫618活动时间表日历: 掌握活动的每一天! :
  京东618总指南-情侣站摘要和更新
  从天猫超市免费收到优惠券[实时更新]:
  淘宝天猫双十一攻略详解!双11活动摘要! :
  淘宝双十二的策略是什么?双12新玩法! :
  元旦元旦活动指南!这就是您如何使用“元旦攻略”购物补贴的方法! :
  JD Double 11 Global Goods Festival:
  JD家电元旦购物有折扣吗?京东元旦的总体策略!

SpringBoot动态代理|反射|注释| AOP优化代码(1)

采集交流优采云 发表了文章 • 0 个评论 • 301 次浏览 • 2020-08-06 17:18 • 来自相关话题

  I. 背景
  在项目中,您需要调用一个外部接口,因为您需要在不同的环境(生产,测试,开发)中调用相同的接口(例如: 将相同的APP发送到生产,测试和测试中的设备)开发环境).
  1.生产环境由SpringCloud注册中心,通过Feign调用,
2.其它环境直接通过OKHttp直接通过Url调用。
  因此,有必要根据传入环境选择不同的调用方法.
  优化前的代码结构
  以下是添加和删除设备接口的示例(都很简单,它不代表真实的业务代码):
  public interface DeviceHandler {

void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue);

void remoteDeleteBatch(Integer envValue, List snsList);
}
  好的实现方式:
  @Component
@Slf4j
public class DeviceHandlerFeignImpl implements DeviceHandler {
@Autowired
private DeviceFeignClient deviceFeignClient;
@Override
public void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue) {
RestResult restResult = deviceFeignClient.create(remoteAddDeviceParam);
...
}
@Override
public void remoteDeleteBatch(Integer envValue, List snsList) {
RestResult restResult = deviceFeignClient.deleteBySnList(snsList);
...
}

}
  网址模式实现
  @Component
@Slf4j
public class DeviceHandlerUrlImpl implements DeviceHandler {
@Override
public void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue) {
String url = getAddUrlByEnvValue(envValue);
String response = OkHttpUtils.httpPostSyn(url, JSON.toJSONString(snsList), false);
RestResult restResult = JSON.parseObject(response, RestResult.class);
...
}
@Override
public void remoteDeleteBatch(Integer envValue, List snsList) {
String url = getDelUrlByEnvValue(envValue);
String response = OkHttpUtils.httpPostSyn(url, JSON.toJSONString(snsList), false);
RestResult restResult = JSON.parseObject(response, RestResult.class);
...
}
}
  DeviceHandlerRouter扮演路由的角色(实际上类似于代理),选择要调用的实现,并将DeviceHandlerRouter公开给上层服务.
  @Component
public class DeviceHandlerRouter implements DeviceHandler {
...
@Autowired
private DeviceHandlerUrlImpl deviceHandlerUrlImpl;
@Autowired
private DeviceHandlerUrlImpl deviceHandlerUrlImpl;
@Override
public void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue) {
getDeviceHandler(envValue).remoteAddBatch(remoteAddDeviceParam,envValue);
}
@Override
public void remoteDeleteBatch(Integer envValue, List snsList) {
getDeviceHandler(envValue).remoteDeleteBatch(envValue,snsList);
}
private DeviceHandler getDeviceHandler(Integer envValue) {
//根据传入的环境返回DeviceHandlerUrlImpl 或 DeviceHandlerUrlImpl
}
}
  上层服务调用DeviceHandlerRouter来添加和删除设备.
  有问题
  如果添加一个常量接口调用,则需要实现xxxRouter,但是代码基本相同. 有什么方法可以在不编写代码的情况下提供默认实现?
  动态代理提供默认实现
  @Slf4j
public class DynamicProxyBeanFactory implements InvocationHandler {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//各位客官别急,这里只是简单打印一下,真正的代码在下一篇
log.info("DynamicProxyBeanFactory------------------>invoke")
//正儿八经的随便创建一个DeviceHandlerUrlImpl
return new DeviceHandlerUrlImpl();
}
public static T newMapperProxy(Class mapperInterface) {
ClassLoader classLoader = mapperInterface.getClassLoader();
Class[] interfaces = new Class[]{mapperInterface};
DynamicProxyBeanFactory proxy = new DynamicProxyBeanFactory();
return (T) Proxy.newProxyInstance(classLoader, interfaces, proxy);
}
}
  致电:
  DeviceHandler deviceHandler = DynamicProxyBeanFactory.newMapperProxy(DeviceHandler.class);
  deviceHandler.remoteAddBatch(...);
  参考链接: 动态代理提供接口的默认实现
  摘要
  以上我们只是抛出了实际开发中遇到的问题,并找到了解决问题的第一种方法. 当然,动态代理提供的接口的默认实现只是一个演示,而没有实际内容. 查看全部

  I. 背景
  在项目中,您需要调用一个外部接口,因为您需要在不同的环境(生产,测试,开发)中调用相同的接口(例如: 将相同的APP发送到生产,测试和测试中的设备)开发环境).
  1.生产环境由SpringCloud注册中心,通过Feign调用,
2.其它环境直接通过OKHttp直接通过Url调用。
  因此,有必要根据传入环境选择不同的调用方法.
  优化前的代码结构
  以下是添加和删除设备接口的示例(都很简单,它不代表真实的业务代码):
  public interface DeviceHandler {

void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue);

void remoteDeleteBatch(Integer envValue, List snsList);
}
  好的实现方式:
  @Component
@Slf4j
public class DeviceHandlerFeignImpl implements DeviceHandler {
@Autowired
private DeviceFeignClient deviceFeignClient;
@Override
public void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue) {
RestResult restResult = deviceFeignClient.create(remoteAddDeviceParam);
...
}
@Override
public void remoteDeleteBatch(Integer envValue, List snsList) {
RestResult restResult = deviceFeignClient.deleteBySnList(snsList);
...
}

}
  网址模式实现
  @Component
@Slf4j
public class DeviceHandlerUrlImpl implements DeviceHandler {
@Override
public void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue) {
String url = getAddUrlByEnvValue(envValue);
String response = OkHttpUtils.httpPostSyn(url, JSON.toJSONString(snsList), false);
RestResult restResult = JSON.parseObject(response, RestResult.class);
...
}
@Override
public void remoteDeleteBatch(Integer envValue, List snsList) {
String url = getDelUrlByEnvValue(envValue);
String response = OkHttpUtils.httpPostSyn(url, JSON.toJSONString(snsList), false);
RestResult restResult = JSON.parseObject(response, RestResult.class);
...
}
}
  DeviceHandlerRouter扮演路由的角色(实际上类似于代理),选择要调用的实现,并将DeviceHandlerRouter公开给上层服务.
  @Component
public class DeviceHandlerRouter implements DeviceHandler {
...
@Autowired
private DeviceHandlerUrlImpl deviceHandlerUrlImpl;
@Autowired
private DeviceHandlerUrlImpl deviceHandlerUrlImpl;
@Override
public void remoteAddBatch(RemoteAddDeviceParam remoteAddDeviceParam, Integer envValue) {
getDeviceHandler(envValue).remoteAddBatch(remoteAddDeviceParam,envValue);
}
@Override
public void remoteDeleteBatch(Integer envValue, List snsList) {
getDeviceHandler(envValue).remoteDeleteBatch(envValue,snsList);
}
private DeviceHandler getDeviceHandler(Integer envValue) {
//根据传入的环境返回DeviceHandlerUrlImpl 或 DeviceHandlerUrlImpl
}
}
  上层服务调用DeviceHandlerRouter来添加和删除设备.
  有问题
  如果添加一个常量接口调用,则需要实现xxxRouter,但是代码基本相同. 有什么方法可以在不编写代码的情况下提供默认实现?
  动态代理提供默认实现
  @Slf4j
public class DynamicProxyBeanFactory implements InvocationHandler {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//各位客官别急,这里只是简单打印一下,真正的代码在下一篇
log.info("DynamicProxyBeanFactory------------------>invoke")
//正儿八经的随便创建一个DeviceHandlerUrlImpl
return new DeviceHandlerUrlImpl();
}
public static T newMapperProxy(Class mapperInterface) {
ClassLoader classLoader = mapperInterface.getClassLoader();
Class[] interfaces = new Class[]{mapperInterface};
DynamicProxyBeanFactory proxy = new DynamicProxyBeanFactory();
return (T) Proxy.newProxyInstance(classLoader, interfaces, proxy);
}
}
  致电:
  DeviceHandler deviceHandler = DynamicProxyBeanFactory.newMapperProxy(DeviceHandler.class);
  deviceHandler.remoteAddBatch(...);
  参考链接: 动态代理提供接口的默认实现
  摘要
  以上我们只是抛出了实际开发中遇到的问题,并找到了解决问题的第一种方法. 当然,动态代理提供的接口的默认实现只是一个演示,而没有实际内容.

云优CMS企业网站管理系统

采集交流优采云 发表了文章 • 0 个评论 • 297 次浏览 • 2020-08-04 10:01 • 来自相关话题

  云优CMS是一款基于TP5.0框架为核心开发的一套免费+开源的城市分站内容管理系统。云优CMS前身为远航CMS,团队自2013年起自主研制城市分站内容管理系统,5年来,修复升级上千个功能性问题。
  云优CMS于2017年9月上线全新版本,二级域名分站,内容分站独立,七牛云存储,自定义数组,自定义表单,自定义栏目权限,自定义管理权限等诸多功能受到用户追捧,上线短短3个月云优采集接口,下载次数已超过5万次。云优CMS深信没有排行的网站不是“好网站”,我们将致力于为用户构建全手动SEO解决方案。
  千城千站支持二级域名
  云优CMS后台外置全省3000多个城市,通过一键开启即可诠释您的分站,独有的调用模式使权重传递愈发灵活
  自定义模型
  云优CMS内置自定义模型,提供单行文本、多行文本、简约编辑器、富文本编辑器,附件,单图上传,多图上传,日期,数字,单选,复选,下拉多种数组
  组合筛选
  云优CMS按照设置好的单选或下拉数组进行组合筛选,丰富应用到装潢、婚庆、二手车等网站场景
  七牛云存储
  云优CMS和第三方七牛云存储平台对接云优采集接口,只需填写插口即可大幅度提高网站资源访问速率因而实现秒开利于百度蜘蛛抓取
  API管理
  云优官网关键词生成系统和排行查询系统免费提供个授权用户使用,通过简易的操作即可一键查询网站排名报表,并在最新的版本集成到CMS后台
  采集接口
  云优CMS提供优采云采集及信息推送平台(目前仅限代理使用)实现全手动无人值守网站更新
  排名报表
  云优CMS提供多台云服务器实现在线排行查询并手动生成报表
  微信小程序订购授权 查看全部

  云优CMS是一款基于TP5.0框架为核心开发的一套免费+开源的城市分站内容管理系统。云优CMS前身为远航CMS,团队自2013年起自主研制城市分站内容管理系统,5年来,修复升级上千个功能性问题。
  云优CMS于2017年9月上线全新版本,二级域名分站,内容分站独立,七牛云存储,自定义数组,自定义表单,自定义栏目权限,自定义管理权限等诸多功能受到用户追捧,上线短短3个月云优采集接口,下载次数已超过5万次。云优CMS深信没有排行的网站不是“好网站”,我们将致力于为用户构建全手动SEO解决方案。
  千城千站支持二级域名
  云优CMS后台外置全省3000多个城市,通过一键开启即可诠释您的分站,独有的调用模式使权重传递愈发灵活
  自定义模型
  云优CMS内置自定义模型,提供单行文本、多行文本、简约编辑器、富文本编辑器,附件,单图上传,多图上传,日期,数字,单选,复选,下拉多种数组
  组合筛选
  云优CMS按照设置好的单选或下拉数组进行组合筛选,丰富应用到装潢、婚庆、二手车等网站场景
  七牛云存储
  云优CMS和第三方七牛云存储平台对接云优采集接口,只需填写插口即可大幅度提高网站资源访问速率因而实现秒开利于百度蜘蛛抓取
  API管理
  云优官网关键词生成系统和排行查询系统免费提供个授权用户使用,通过简易的操作即可一键查询网站排名报表,并在最新的版本集成到CMS后台
  采集接口
  云优CMS提供优采云采集及信息推送平台(目前仅限代理使用)实现全手动无人值守网站更新
  排名报表
  云优CMS提供多台云服务器实现在线排行查询并手动生成报表
  微信小程序订购授权

官方客服QQ群

微信人工客服

QQ人工客服


线