JVM内存模型
根据《Java虚拟机规范(Java SE 7 版)》的规定,Java虚拟机所管理的内存包括几下几个运行时数据数据:
在使用@value注解之后,字段总是为空。后来发现是因为字段使用了static修饰。1
2
3
4
5
6
7
8
9@Component
public class TestValue {
@Value("${appEnv}")
private static String appenv; //null
public String test() {
return appenv;
}
}
spring的依赖注入不支持为static变量注入。spring 依赖注入的底层原理还是利用反射来创建对象。而static变量,在jvm加载类的时候便已经创建,存在于方法区,被所有实例共享,属于类的属性而不是对象的属性。spring是基于对象层面的依赖注入。
这两天抽空用hexo搭建了一个静态博客,并且使用travis+github pages做持续集成。后来对github pages的响应速度不是很满意,便将博客换成了hexo+travis+oss。
实现的效果是只需要提交代码,便自动将博客更新到github pages 和oss上面。
使用hexo+travis+github pages 完成持续部署的过程不在赘述,网上有很多教程,不过质量参差不齐,这里推荐一篇:
使用Travis CI自动部署Hexo博客
创建BigDecimal对象常用的方式有2种:1
2BigDecimal a = new Bigdecimal(1);
BigDecimal a1 = BigDecimal.valueOf(1);
不推荐使用new 关键字创建Bigdecimal对象。原因是当new 的值是一个小数的时候,其真实的值并不是我们想要的值1
2
3
4BigDecimal b = new BigDecimal(1.1);
BigDecimal b1 = BigDecimal.valueOf(1.1);
System.out.println("new的值b: "+b);
System.out.println("valueOf()的值b1: "+b1);
输出:1
21.100000000000000088817841970012523233890533447265625
valueOf()的值b1: 1.1
这在比较大小的时候,很可能出现意想不到的结果。