#Java内存区域
下面从概念上介绍Java虚拟机内存的各个区域,讲解这些区域的作用、服务对象以及其中可能产生的问题,这是翻越虚拟机内存管理这堵围墙的第一步。
运行时数据区域
Java虚拟机在执行Java程序的过程中会把她所管理的内存划分为若干个不同的数据区域,包含以下几个运行时数据区域。
BlankCat
#Java内存区域
下面从概念上介绍Java虚拟机内存的各个区域,讲解这些区域的作用、服务对象以及其中可能产生的问题,这是翻越虚拟机内存管理这堵围墙的第一步。
Java虚拟机在执行Java程序的过程中会把她所管理的内存划分为若干个不同的数据区域,包含以下几个运行时数据区域。
今天开写JVM系列的学习笔记,书籍为周志明的《深入理解Java虚拟机》
Sun官方所定义的技术体系包括以下几个组成部分。
我们把Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK
,JDK是用于支持Java程序开发的最小环境。Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE
,JRE是支持Java程序运行的标准环境。下图展示了Java技术体系所包含的内容,以及JDK和JRE所覆盖的范围。
最近遇到一个需求需要在获取URL字符串上的kv键值对,我们都知道Java Web在请求是直接用request来获取值的。如果是字符串呢,就需要正则表达式来自己截取了。
自己写代码是比较麻烦的,下面推荐用Guava工具包,2行代码就可以解决这个需求了。
|
|
先截取到?后面的字符串,然后再用Splitter.on("&").withKeyValueSeparator("=").split(params);
就轻松的解决了~
Spring Cloud oauth2 开启客户端功能,并启用LoadBalanced
如果不添加以下配置,只添加@EnableOAuth2Client
注解,spring cloud默认是在web环境下使用的AuthorizationCodeResourceDetails
。
具体代码在OAuth2RestOperationsConfiguration
类中。
|
|
在项目中访问另一个微服务的时候我们可以这样用RestTemplate来调用其他服务:
|
|
在spring cloud环境下,这个注入的restTemplate是具备了客户端负载均衡功能的,也会用到eureka服务发现功能,user-service
就是服务的名称。
我的项目启用了oauth2认证。spring cloud也提供了一个OAuth2RestTemplate
来很方便的调用其他服务。但是在我测试的时候一直报错UnknownHost
,我猜测他肯定是没有用到loadBalanced和eureka的服务发现功能。我翻遍了官方文档也没有找到相关的说明。
Google搜了大半天后,看了作者在git也讨论过这个类loadBalanced功能之类的,还翻到一个没有什么用 @LoadBalanced注解,翻了半天源码后终于在OAuth2LoadBalancerClientAutoConfiguration
这样一个类中发现了一点蛛丝马迹。
在spring cloud项目环境中配置oauth2.0认证。
我花了不少时间才把这个调通,spring cloud的版本和文档也存在不一致的地方。
以下所有的操作都基于Brixton.RC1搭建,须保持所有相关项目都引用此parent。否则会出现各种莫名其妙的错误。
|
|
配置jenkins构建项目,自动build出docker镜像,发布到docker私库中,或者从目标服务器中启动容器。
http://www.cnblogs.com/skyblog/p/5163691.html 有讲到如何用Dockerfile构建,下面是采用Maven插件的方式构建,插件的文档在这里
我们先把配置中心和服务注册中心跑起来,这个先照着之前的教程做,很简单没什么变动。
就是git仓库需要密码的话加入下面的配置就好。
|
|
这里的${config.host:192.168.99.100}
表示没有读到config.host就用192.168.99.100这个值。
|
|
这个用法就很灵活了,后面配合Dockerfile可以根据不同的环境来启动不同的配置。
最近看了一篇文章,了解到微服务架构的组成部分和概念,以前有看过一点dubbo,文章里介绍到Netflix这么一个公司:
Netflix是一家成功实践微服务架构的互联网公司,几年前,Netflix就把它的几乎整个微服务框架栈开源贡献给了社区,这些框架和组件包括
Netflix的开源框架组件已经在Netflix的大规模分布式微服务环境中经过多年的生产实战验证,正逐步被社区接受为构造微服务框架的标准组件。Pivotal去年推出的Spring Cloud开源产品,主要是基于对Netflix开源组件的进一步封装,方便Spring开发人员构建微服务基础框架。对于一些打算构建微服务框架体系的公司来说,充分利用或参考借鉴Netflix的开源微服务组件(或Spring Cloud),在此基础上进行必要的企业定制,无疑是通向微服务架构的捷径。
Spring Cloud是微服务工具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包。
觉得挺不错的,就找找资料尝试实战一下。
在此记录和回顾一下过程中遇到的问题和实际项目中需要解决的一些问题。
我这里用docker来做持续集成的思路和jenkins和tomcat的持续集成是一样的。都是用jenkins拉取git的代码然后打war包,只不过重启tomcat步骤换成了docker的重启。
直接展示一下docker的脚本吧。