首页 文章 精选 留言 我的

精选列表

搜索[打包工具],共10000篇文章
优秀的个人博客,低调大师

Spring Cloud Alibaba 新版本发布:众多期待内容整合打包加入!

在Nacos 1.0.0 Release之后,Spring Cloud Alibaba也终于发布了最新的版本。该版本距离上一次发布,过去了整整4个月!下面就随我一起看看,这个大家期待已久的版本都有哪些内容值得我们关注。 版本变化 之前在《Spring Cloud Alibaba与Spring Boot、Spring Cloud之间不得不说的版本关系》一文中,我有提到过当前版本的Spring Cloud Alibaba还处于孵化器中,没有纳入Spring Cloud的主线版本。所以,我们在使用的时候需要明确Spring Boot、Spring Cloud主版本以及Spring Cloud Alibaba之间的版本关系。 这次的更新,在版本上与我之前文章中说的0.2.2来支持Greenwich有所区别。这里纠正一下,对于Greenwich版本的支持采用了0.9.x的版本号来对应,所以Spring Boot 、Spring Cloud、Spring Cloud Alibaba三者之间的准确关系如下表所示: Spring Boot Spring Cloud Spring Cloud Alibaba 2.1.x Greenwich 0.9.x 2.0.x Finchley 0.2.x 1.5.x Edgware 0.1.x 1.5.x Dalston 0.1.x 模块新增 这次新版本中,最值得关注的应该就是下面这几个新模块的加入了。之前我说过非常看好Spring Cloud Alibaba,下面新增的几个模块就是主要原因之一。 spring-cloud-alibaba-dubbo 对于Dubbo的支持,我觉得对于国内用户来说,是非常有意义的。由于Dubbo在过去一段时间对国内行业的渗透非常广,至今依然有很多团队在使用着这个老牌RPC。但是,由于Dubbo只是一个单纯的RPC框架,它不像Spring Cloud这样,拥有不错的生态,在外围设施的对接支持上做了非常多的努力,使得我们在使用Spring Cloud的时候,可以很快的体系化我们的基础设施。 现在,Spring Cloud Alibaba将Dubbo融入Spring Cloud体系,可以让其一起享受Spring Cloud生态的各种便利。对于原来的Dubbo用户来说,该模块的加入为原Dubbo用户拥抱Spring Cloud生态提供了非常好的支持,可以大大减少用户自己融入需要做的扩展工作量。 为什么说这个模块好呢?看看下面几个与Spring Cloud生态融合的重要功能: 支持所有Spring Cloud的注册中心实现,包括Spring Cloud Alibaba中整合的Nacos。也就是说,以前我们自己在整合Spring Cloud和Dubbo来使用的时候,如果不去为Dubbo扩展注册中心,那么就不得不采用Eureka + Zookeeper同时存在的复杂架构。现在,在这个模块的帮助下,注册中心就可以得到统一。 支持RestTemplate,开发者只需要在定义RestTemplate的@Bean注解上搭配使用@DubboTransported注解,就能将这个客户端直接支持Dubbo调用。 支持Feign,开发者只需要在@FeignClient注解上搭配使用@DubboTransported,就能将Feign客户端变成Dubbo的客户端。这样的设计,对于传统Spring Cloud用户来说,是不是也非常容易接受呢? 如果您的团队还在坚持使用Dubbo,又很想引入Spring Cloud,那么不妨移步来尝试一下Spring Cloud Alibaba的最新版本吧! 注意:该模块没有发布到0.1.2中,所以只有0.2.2和0.9.0中才拥有。也就是说,仅支持Spring Boot 2.x和Spring Cloud Finchley版和Greenwich版。 spring-cloud-alibaba-seata Seata是Alibaba与蚂蚁金融共建的一个开源分布式事务解决方案。通过该模块的加入,可以非常方便的在Spring MVC、RestTemplate、FeignClient的调用中传递事务上下文,同时也支持与Hystrix、Sentinel的联合使用。全方面的打通Spring Cloud生态的分布式事务场景。 这个框架我还没有深入的研究过,后续我也会将这部分内容的学习写到《Spring Cloud Alibaba基础教程》中与大家分享心得与经验。如果对这个感兴趣的,记得关注我哟。 spring-cloud-alibaba-sentinel-zuul 在该模块中定义了一些为Zuul定制的过滤器:SentinelPreFilter、SentinelPostFilter、SentinelErrorFilter。通过它们来为Zuul实现网关层的请求流量控制。用户可以通过spring.cloud.sentinel.zuul.参数来配置这些Sentinel过滤器。 spring-cloud-alibaba-sms SMS是阿里云的商业化产品。所以该模块类之前的SchedulerX模块,OSS模块类似,主要为了更方便的整合使用而存在。如果是Spring Cloud用户,同时也是阿里云这些产品的用户,那么直接使用还是非常方便的。但是如果这两个条件都不满足,那么可以忽略之。 模块升级 在该版本中对于一些重要的基础设施模块也做了大幅度的版本升级,包括: Nacos:从0.6.2升级到1.0.0 Sentinel:从1.4.0升级到1.5.2 对于模块功能升级主要与模块整合对象的自身版本有关,所以对于这部分的内容读者可以查阅Nacos 1.0.0的文档以及Sentinel 1.5.2的文档来进一步新增功能。 而对于Spring Cloud Alibaba对其整合新增的配置或注解使用,可以见本文参考资料链接看看更新了什么内容,这里就不做具体介绍了。 最后欢迎留言参与讨论,说说您对Spring Cloud Alibaba新版本的看法吧! 参考资料 Preview releases of Spring Cloud Alibaba are available: 0.9.0, 0.2.2, and 0.1.2 专题推荐 Spring Boot基础教程 Spring Cloud基础教程(含Spring Cloud Alibaba)

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

Android Studio打包错误(Cannot merge new index 67578 into a non-jumbo instr...

今天在项目中加了个库然后就报了如下错误 Error:Execution failed for task ':app:transformDexWithDexForRelease'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: Cannot merge new index 67578 into a non-jumbo instruction! 原因 最新的ADT和SDK Tool在将jar转化成dex的时候,可能会合并类的代码,这将导致巨大的类;类中的每一个方法都分配有一个id,字节码中以id标识和调用方法;早期的Dalvik VM内部使用short类型变量来标识方法的id,最大值限制在65535。当方法数超过65535,则会报该错误。 解决方法 在build.gradle中dexOptions增加jumboMode true android { .... dexOptions{ jumboMode true } ...... }

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

思科“打包”Hadoop 与多家经销商建立合作伙伴关系

在未来的物联网趋势下,思科希望能够通过和气生财,而物联网将会是大量数据的来源,因此,思科与Cloudera、Hortonworks及MapR经销商签了协议。 这些协议可望为客户提供一个单一物联网数据源,同时将数据分析整合在一起,思科认为企业对数据分析有需求。单一物联网数据源旨在有效地利用大量的数据,而同时又能将网络流量保持在可管理的程度。 俗称“博格人”的思科还表示,旗下的UCS Director Express for Big Data产品现在已经全面上架。 另外,欲将Hadoop,无论是Cloudera版的、Hortonworks版的或MapR版的,安装到思科的统一计算系统(Unified Computing System,简称UCS)的机架和刀片服务器上。此外,思科于去年9月推出了新的具备云规模模块化服务器的统一计算系统。 思科的公告指出,Hadoop产品将被整合到思科的数据虚拟化环境中,因而使得客户可以在将数据置于Hadoop以前“对数据抽象化、访问数据和查询数据”。 新的合作伙伴目前已经被添加到思科的价格表里。思科还指出,单一源销售模式可使顾客一次性购买硬件和软件,可以“降低数据存储的总体成本”。 原文发布时间为:2015年3月5日 本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

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

MessagePack Java 0.6.X 使用一个消息打包(message-packable)类

使用注解@Message来让你可以序列化你自己类中对象的public 字段。 本代码可以在https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Object.java中下载到本地后进行编译测试。 package com.insight.demo.msgpack; import org.junit.Test;import org.msgpack.MessagePack;import org.msgpack.annotation.Message;import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java.util.UUID; import static org.junit.Assert.assertEquals; /** MessagePack6Objects* @author yhu*/ public class MessagePack6Object { final Logger logger = LoggerFactory.getLogger(MessagePack6Object.class); /** * MessageData Message Object */ @Message // Annotation public static class MessageData { // public fields are serialized. public String uuid; public String name; public double version; } /** * Test MessagePack6Objects */ @Test public void testMessagePack6Objects() { logger.debug("MessagePack6Objects for Objects"); String uuid = UUID.randomUUID().toString(); // INIT OBJ MessageData src = new MessageData(); src.uuid = uuid; src.name = "MessagePack6"; src.version = 0.6; try { MessagePack msgPack = new MessagePack(); // Serialization logger.debug("------ Serialization ------"); byte[] bytes = msgPack.write(src); logger.debug("Bytes Array Length: [{}]", bytes.length); // Deserialization logger.debug("------ Deserialization ------"); MessageData dst = msgPack.read(bytes, MessageData.class); logger.debug("Check Object for UUID: [{}]", dst.uuid); assertEquals(uuid, dst.uuid); } catch (Exception ex) { logger.error("MessagePack Serialization And Deserialization error", ex); } } } 如果你希望按照顺序序列化多个对象的话,你可以使用Packer和Unpacker多个对象。 这是因为MessagePack.write(Object)和read(byte[])实际上每次都调用创建了Packer和Unpacker对象。 为了使用Packer和Unpacker对象,请调用createPacker(OutputStream)和createUnpacker(InputStream)。 本代码可以https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Objects.java中查看。 package com.insight.demo.msgpack; import org.junit.Test;import org.msgpack.MessagePack;import org.msgpack.annotation.Message;import org.msgpack.packer.Packer;import org.msgpack.unpacker.Unpacker;import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.util.UUID; import static org.junit.Assert.assertEquals; /** MessagePack6Objects* @author yhu*/ public class MessagePack6Objects { final Logger logger = LoggerFactory.getLogger(MessagePack6Objects.class); /** * MessageData Message Objects */ @Message // Annotation public static class MessageData { // public fields are serialized. public String uuid; public String name; public double version; } /** * Test MessagePack6Objects */ @Test public void testMessagePack6Objects() { logger.debug("MessagePack6Objects for Objects"); String uuid = UUID.randomUUID().toString(); // INIT OBJ MessageData src1 = new MessageData(); src1.uuid = uuid; src1.name = "MessagePack6-src1"; src1.version = 0.6; MessageData src2 = new MessageData(); src2.uuid = uuid; src2.name = "MessagePack6-src2"; src2.version = 10.6; MessageData src3 = new MessageData(); src3.uuid = uuid; src3.name = "MessagePack6-src3"; src3.version = 1.6; try { MessagePack msgPack = new MessagePack(); // Serialization logger.debug("------ Serialization ------"); ByteArrayOutputStream out = new ByteArrayOutputStream(); Packer packer = msgPack.createPacker(out); packer.write(src1); packer.write(src2); packer.write(src3); byte[] bytes = out.toByteArray(); logger.debug("Bytes Array Length: [{}]", bytes.length); // Deserialization logger.debug("------ Deserialization ------"); ByteArrayInputStream in = new ByteArrayInputStream(bytes); Unpacker unpacker = msgPack.createUnpacker(in); MessageData dst1 = unpacker.read(MessageData.class); MessageData dst2 = unpacker.read(MessageData.class); MessageData dst3 = unpacker.read(MessageData.class); logger.debug("Check Object for UUID: [{}]", dst1.uuid); assertEquals(uuid, dst1.uuid); } catch (Exception ex) { logger.error("MessagePack Serialization And Deserialization error", ex); } } } https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

WebStorm

WebStorm

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

用户登录
用户注册