BlankCat

BlankCat


  • Home

  • Archives

  • Categories

  • Tags

  • About

  • Search
close

JVM2-Java内存区域

Posted on 2016-10-28   |   In JVM

#Java内存区域

下面从概念上介绍Java虚拟机内存的各个区域,讲解这些区域的作用、服务对象以及其中可能产生的问题,这是翻越虚拟机内存管理这堵围墙的第一步。

运行时数据区域

Java虚拟机在执行Java程序的过程中会把她所管理的内存划分为若干个不同的数据区域,包含以下几个运行时数据区域。

Read more »

JVM1-Java介绍

Posted on 2016-10-28   |   In JVM

今天开写JVM系列的学习笔记,书籍为周志明的《深入理解Java虚拟机》

走进Java

Java技术体系

Sun官方所定义的技术体系包括以下几个组成部分。

  • Java程序设计语言
  • 各种硬件平台上的Java虚拟机
  • Class文件格式
  • Java API类库
  • 来自商业机构和开源社区的第三方Java类库

我们把Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK,JDK是用于支持Java程序开发的最小环境。Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE,JRE是支持Java程序运行的标准环境。下图展示了Java技术体系所包含的内容,以及JDK和JRE所覆盖的范围。

Read more »

Java获取URL上的参数

Posted on 2016-07-21   |   In Java

最近遇到一个需求需要在获取URL字符串上的kv键值对,我们都知道Java Web在请求是直接用request来获取值的。如果是字符串呢,就需要正则表达式来自己截取了。
自己写代码是比较麻烦的,下面推荐用Guava工具包,2行代码就可以解决这个需求了。

1
2
3
4
5
private String getPara(String url, String name) {
String params = url.substring(url.indexOf("?") + 1, url.length());
Map<String, String> split = Splitter.on("&").withKeyValueSeparator("=").split(params);
return split.get(name);
}

先截取到?后面的字符串,然后再用Splitter.on("&").withKeyValueSeparator("=").split(params);就轻松的解决了~

Spring cloud @EnableOAuth2Client

Posted on 2016-07-15   |   In spring

Spring Cloud oauth2 开启客户端功能,并启用LoadBalanced

如果不添加以下配置,只添加@EnableOAuth2Client注解,spring cloud默认是在web环境下使用的AuthorizationCodeResourceDetails。

具体代码在OAuth2RestOperationsConfiguration类中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@Configuration
@ConditionalOnBean(OAuth2ClientConfiguration.class)
@ConditionalOnWebApplication
protected static class SessionScopedConfiguration {
@Bean
@ConfigurationProperties("security.oauth2.client")
@Primary
public AuthorizationCodeResourceDetails oauth2RemoteResource() {
AuthorizationCodeResourceDetails details = new AuthorizationCodeResourceDetails();
return details;
}
@Bean
public FilterRegistrationBean oauth2ClientFilterRegistration(
OAuth2ClientContextFilter filter, SecurityProperties security) {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(filter);
registration.setOrder(security.getFilterOrder() - 10);
return registration;
}
@Configuration
protected static class ClientContextConfiguration {
@Resource
@Qualifier("accessTokenRequest")
protected AccessTokenRequest accessTokenRequest;
@Bean
@Scope(value = "session", proxyMode = ScopedProxyMode.INTERFACES)
public DefaultOAuth2ClientContext oauth2ClientContext() {
return new DefaultOAuth2ClientContext(this.accessTokenRequest);
}
}
}
Read more »

spring cloud OAuth2RestTemplate loadBalanced

Posted on 2016-04-21   |   In spring

在项目中访问另一个微服务的时候我们可以这样用RestTemplate来调用其他服务:

1
2
3
@Autowired
private RestTemplate restTemplate;
RestResponse response = restTemplate.postForObject("http://user-service/user/getUser", para, User.class);

在spring cloud环境下,这个注入的restTemplate是具备了客户端负载均衡功能的,也会用到eureka服务发现功能,user-service就是服务的名称。
我的项目启用了oauth2认证。spring cloud也提供了一个OAuth2RestTemplate来很方便的调用其他服务。但是在我测试的时候一直报错UnknownHost,我猜测他肯定是没有用到loadBalanced和eureka的服务发现功能。我翻遍了官方文档也没有找到相关的说明。

Google搜了大半天后,看了作者在git也讨论过这个类loadBalanced功能之类的,还翻到一个没有什么用 @LoadBalanced注解,翻了半天源码后终于在OAuth2LoadBalancerClientAutoConfiguration这样一个类中发现了一点蛛丝马迹。

Read more »

Spring-cloud OAuth2.0配置

Posted on 2016-03-31   |   In spring

在spring cloud项目环境中配置oauth2.0认证。

http://callistaenterprise.se/blogg/teknik/2015/04/27/building-microservices-part-3-secure-APIs-with-OAuth/
可以先看看这篇文章。

我花了不少时间才把这个调通,spring cloud的版本和文档也存在不一致的地方。
以下所有的操作都基于Brixton.RC1搭建,须保持所有相关项目都引用此parent。否则会出现各种莫名其妙的错误。

1
2
3
4
5
6
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Brixton.RC1</version>
<relativePath/>
</parent>
Read more »

Spring cloud项目实践(三)

Posted on 2016-03-22   |   In spring

持续集成

配置jenkins构建项目,自动build出docker镜像,发布到docker私库中,或者从目标服务器中启动容器。

Maven的Docker插件

http://www.cnblogs.com/skyblog/p/5163691.html 有讲到如何用Dockerfile构建,下面是采用Maven插件的方式构建,插件的文档在这里

Read more »

Spring cloud项目实践(二)

Posted on 2016-03-21   |   In spring

配置中心和服务注册中心

我们先把配置中心和服务注册中心跑起来,这个先照着之前的教程做,很简单没什么变动。
就是git仓库需要密码的话加入下面的配置就好。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server:
port: 8888
eureka:
instance:
hostname: configserver
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://${config.host:192.168.99.100}:8761/eureka/
spring:
cloud:
config:
server:
git:
uri: yourgiturl
password: ****
username: ****

这里的${config.host:192.168.99.100}表示没有读到config.host就用192.168.99.100这个值。

1
java -jar cloud-simple-service-1.0.0.jar --config.host=localhost

这个用法就很灵活了,后面配合Dockerfile可以根据不同的环境来启动不同的配置。

Read more »

Spring cloud项目实践(一)

Posted on 2016-03-21   |   In spring

基本概念和重要组件

最近看了一篇文章,了解到微服务架构的组成部分和概念,以前有看过一点dubbo,文章里介绍到Netflix这么一个公司:

Netflix是一家成功实践微服务架构的互联网公司,几年前,Netflix就把它的几乎整个微服务框架栈开源贡献给了社区,这些框架和组件包括

  • Eureka: 服务注册发现框架
  • Zuul: 服务网关
  • Karyon: 服务端框架
  • Ribbon: 客户端框架
  • Hystrix: 服务容错组件
  • Archaius: 服务配置组件
  • Servo: Metrics组件
  • Blitz4j: 日志组件

Netflix的开源框架组件已经在Netflix的大规模分布式微服务环境中经过多年的生产实战验证,正逐步被社区接受为构造微服务框架的标准组件。Pivotal去年推出的Spring Cloud开源产品,主要是基于对Netflix开源组件的进一步封装,方便Spring开发人员构建微服务基础框架。对于一些打算构建微服务框架体系的公司来说,充分利用或参考借鉴Netflix的开源微服务组件(或Spring Cloud),在此基础上进行必要的企业定制,无疑是通向微服务架构的捷径。

Spring Cloud是微服务工具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包。

觉得挺不错的,就找找资料尝试实战一下。
在此记录和回顾一下过程中遇到的问题和实际项目中需要解决的一些问题。

Read more »

jenkins配合docker持续集成

Posted on 2015-12-15   |   In CI

我这里用docker来做持续集成的思路和jenkins和tomcat的持续集成是一样的。都是用jenkins拉取git的代码然后打war包,只不过重启tomcat步骤换成了docker的重启。
直接展示一下docker的脚本吧。

Read more »
1…6789
BlankCat

BlankCat

三岁学说话,一生学闭嘴!

84 posts
25 categories
46 tags
GitHub Weibo 开发导航 个人主页
© 2017 BlankCat
Powered by Hexo
Theme - NexT.Mist