linux(centos) 搭建SVN服务器
安装步骤如下:
第一步:安装SVN
yum install subversion |
第二步:创建SVN版本库目录
mkdir -p /var/svn/svnrepos |
怎么让代码显得高大上呢,当然是多使用注解,那Android Support Annotation没新意了,有没有更高端的呢?
当然有了。Java 依赖注入标准(JSR-330)规范,主要应用在JavaEE中。在 javax.inject 包中提供了一个接口 Provider,和几个注解类型 @Scope、@Inject、@Named、@Qualifier
关于JSR-330标准可以看这篇文章:Java 依赖注入标准(JSR-330)
下面简单介绍下 javax.inject 中提供的注解类型。
本编文章是在阅读:Android架构思考(模块化、多进程)过程中,结合自己的理解,对Android开启多进程,会导致Application重复创建问题进行一个总结。
一般情况下,一个应用程序就一个进程,这个进程的名称就是应用程序包名。Android的四大组件在AndroidManifest文件中注册的时候,有个属性是android:process,这里可以指定组件的所处的进程。
一个进程情况下,Application的onCreate方法只会执行一次,但如果应用中采用多进程方式,onCreate方法会执行多次。
总结了两种实现方式:
之前写过一篇文章:《ThreadLocal、HandlerThread、Lopper区别》,其中简单提及了ThreadLocal的解释。本篇文章主要结合具体应用场景——SimpleDateFormat,和大家来一起学习ThreadLocal的原理,并对ThreadLocal进行一个详细的介绍。
下面是本文的参考资料:
java学习记录–ThreadLocal使用案例——SimpleDateFormat:
http://blog.csdn.net/u012706811/article/details/53231598
SimpleDateFormat的线程安全问题与解决方案:
http://www.cnblogs.com/zemliu/archive/2013/08/29/3290585.html
Thread这个类有一个变量:ThreadLocal.ThreadLocalMap threadLocals。
这是一个map的数据结构,里面的元素的key就是ThreadLocal,value就是我们自定义的一些目标类。
我们可以在自己的多线程类中定义好几个ThreadLocal,然后每一个ThreadLocal put一个特定的目标类,然后以后可以用ThreadLocal get到目标类(ThreadLocal用自己作为Thread里map的key),因为每个Thread有自己独自的map,所以这样可以实现每个线程有自己的LocalThread,并且一个Thread里可以有多个LocalThread。
ThreadLocal为变量在每个线程中都创建了一个副本,所以每个线程可以访问自己内部的副本变量,不同线程之间不会互相干扰。
本篇文章结合具体应用场景,来分析ThreadLocal为什么可以实现不同线程之间不会互相干扰。