Dubbo系列笔记之服务引用过程,不服不行,华为笔试Java编程题

// 是否为泛化接口

if (!ProtocolUtils.isGeneric(generic)) {

String revision = Version.getVersion(interfaceClass, version); if (revision != null && revision.length() > 0) {

map.put(REVISION_KEY, revision); } // 获取接口的方法列表,加入 map

String[] methods = Wrapper.getWrapper(interfaceClass).getMethodNames(); if (methods.length == 0) {

logger.warn("No method found in service interface " + interfaceClass.getName());

map.put(METHODS_KEY, ANY_VALUE); } else {

map.put(METHODS_KEY, StringUtils.join(new HashSet(Arrays.asList(methods)), COMMA_SEPARATOR)); } } map.put(INTERFACE_KEY, interfaceName); // 将 ApplicationConfig、ConsumerConfig、ReferenceConfig 等对象的字段信息添加到 map 中

AbstractConfig.appendParameters(map, getMetrics());

AbstractConfig.appendParameters(map, getApplication());

AbstractConfig.appendParameters(map, getModule());

AbstractConfig.appendParameters(map, consumer);

AbstractConfig.appendParameters(map, this);

Map<String, AsyncMethodInfo> attributes = null; if (CollectionUtils.isNotEmpty(getMethods())) {

attributes = new HashMap<>(); for (MethodConfig methodConfig : getMethods()) {

AbstractConfig.appendParameters(map, methodConfig, methodConfig.getName());

String retryKey = methodConfig.getName() + “.retry”;

if (map.containsKey(retryKey)) {

String retryValue = map.remove(retryKey); if (“false”.equals(retryValue)) {

map.put(methodConfig.getName() + “.retries”, “0”);

} } AsyncMethodInfo asyncMethodInfo = AbstractConfig.convertMethodConfig2AsyncInfo(methodConfig); if (asyncMethodInfo != null) {

attributes.put(methodConfig.getName(), asyncMethodInfo); } } } // 从系统变量中获取服务消费者 ip String hostToRegistry = ConfigUtils.getSystemProperty(DUBBO_IP_TO_REGISTRY); if (StringUtils.isEmpty(hostToRegistry)) {

hostToRegistry = NetUtils.getLocalHost(); } else if (isInvalidLocalHost(hostToRegistry)) {

throw new IllegalArgumentException(“Specified invalid registry ip from property:” + DUBBO_IP_TO_REGISTRY + “, value:” + hostToRegistry);

} map.put(REGISTER_IP_KEY, hostToRegistry); // 存储配置数据

serviceMetadata.getAttachments().putAll(map);

// 创建代理

ref = createProxy(map);

serviceMetadata.setTarget(ref);

serviceMetadata.addAttribute(PROXY_CLASS_REF, ref);

ConsumerModel consumerModel = repository.lookupReferredService(serviceMetadata.getServiceKey()); consumerModel.setProxyObject(ref

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 国内有很多著名企业开源了他们的项目源码,其中一些著名的有: 1. 阿里巴巴:开源了高性能分布式框架Dubbo、数据库连接池Druid、分布式服务框架SOFARPC等。 2. 百度:开源了大数据平台BD-MS、人工智能框架PaddlePaddle、深度学习框架EasyDL等。 3. 字节跳动:开源了深度学习框架TensorFlow Lite for Microcontrollers、基于Rust语言的高性能服务器框架tikv等。 4. 腾讯:开源了大数据平台TensorFlowOnSpark、高性能机器学习框架Angel、高性能服务器框架Tars等。 5. 小米:开源了高性能服务器框架Miliao、高性能日志框架Mi-log、高性能机器学习框架Xiaomi-DL等。 这些仅是其中一部分,国内其它企业也有很多优秀的开源项目,还有很多优秀的企业在不断地开源他们的项目。 ### 回答2: 国内有很多著名企业开源了他们的项目源码,以下是其中一些: 1. 百度:百度开源了很多项目,包括大数据处理框架PaddlePaddle、深度学习框架PaddleLite等。 2. 腾讯:腾讯开源了一些项目,如微信小程序开发框架Taro、自研的分布式文件系统TFS等。 3. 阿里巴巴:阿里巴巴开源了很多项目,其中最为著名的是分布式数据库中间件OceanBase、分布式事务框架Seata等。 4. 华为华为开源了一些项目,包括自研的分布式计算框架Flink、分布式文件系统FusionStorage等。 5. 小米:小米开源了一些项目,其中最为著名的是Android系统的一个分支开源项目MIUI。 6. 京东:京东开源了很多项目,如分布式数据库中间件ShardingSphere、分布式任务调度框架Saturn等。 这只是一些著名企业开源项目的例子,还有很多其他的企业也在积极开源他们的项目源码,由此可见,国内开源风潮逐渐提升,对于促进技术共享与创新起到了积极作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值