重拾Dagger2-组织
回顾在上一篇中, 我们从源码的角度分析了Dagger的工作原理, 在这一篇中, 我们来重点讲解Dagger2依赖组织的方式, 在讲解之前, 我们先来理解Component dependencies和SubComponent Component dependencies VS SubComponent为了提高一个Component中代码的复用度, 我们可以利用 Component dependenc
回顾在上一篇中, 我们从源码的角度分析了Dagger的工作原理, 在这一篇中, 我们来重点讲解Dagger2依赖组织的方式, 在讲解之前, 我们先来理解Component dependencies和SubComponent Component dependencies VS SubComponent为了提高一个Component中代码的复用度, 我们可以利用 Component dependenc
字符串使用+连接字符串 使用+连接字符串每次都会构建一个新的对象,在需要频繁拼接字符串的场景时,会比较耗时和浪费空间,因为String创建后就不可以再改变,因此+ 操作是线程安全的 StringBuilder 该类可以解决String拼接字符串时出现的问题,但是StringBuilder线程不安全。 StringBuffer StringBuilder可以保证线程安全,但是也因此效率变得低 总结 如果只需要简单的拼接字符串的话,可以直接使用+号拼接 如果需要频繁拼接而且无需考虑线程安全的,可以使用StringBuilder 如果需要频繁拼接但要考虑到线程安全的话,可以使用StringBuffer
与HTTP协作的Web服务器通信数据转发程序:代理、网关、隧道 在HTTP通信时,代理、网关和隧道是用于通信数据的转发的应用程序,他们可以配合服务器进行工作 代理就像一个中介,他接收客户端发来的信息继而转发给服务器,同时也可以接受服务器的信息转发给客户端 网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关。 隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。 代理
内存分配与回收策略目录 对象优先在Eden分配 大对象直接进入老年代 长期存活对象将进入老年代 动态对象年龄判定 空间分配担保 对象优先在Eden分配 大多数情况下, 对象主要分配在新生代的Eden区上. 当Eden区没有足够的空间进行分配时, 虚拟机将进行一次 Minor GC 大对象直接进入老年代 大对象指的是需要大量连续内存空间的Java对象,最典型的大对象就是那种很长的字符串以及数组.