10 2021 档案
摘要:IOC全称Inverse Of Control,中文释义为控制反转,常见的方式叫作依赖注入(Dependency Injection),IOC核心的思想和代理模式一样,使用者不必关心资源的具体获取,资源通过第三方来管理 之前有提到过注解是设计框架时常用的工具,利用注解可以在编译期(通过APT)或运行
阅读全文
摘要:代理模式是很常见的一种设计模式,如AppCompatActivity兼容方案,Java中代理模式分为静态代理和动态代理,动态代理是JVM帮助我们实现的 一、代理模式 1.代理模式场景 有一名员工A,他出于某些原因需要公司签字,老板和秘书都可以执行公司签字的职能,但是秘书没有直接签字的权力,真正签字的
阅读全文
摘要:Java中提供了一系列和锁相关的工具:synchronized、ReentrantLock、AtomicXXX类,它们都能帮助解决我们进行多线程操作时并发问题,之前我们也提到了内核线程模型,Hotspot虚拟机线程的创建都是通过内核线程提供的轻量级进程API创建的,反复的创建线程会不断的由OS线程调
阅读全文
摘要:上次通过三个例子,了解了Java并发三个特性,也分析了volatile不能解决原子性问题的原因,要解决原子性问题,就需要用到锁 一、轻量级锁与重量级锁 1.锁的概念 锁:一个线程对共享对象进行加锁,别的线程访问该对象时会处于等待状态,直到锁被释放,才能继续执行 补充:volatile底层也是通过lo
阅读全文
摘要:上次说到Java线程并不会直接操作共享内存,而是操作共享内存的副本,这种方式称作JMM模型,描述的是Java多线程和内存之间的通信。我们上次使用了HotSpot虚拟机的内存模型进行理解,但JMM模型并不是JVM的内存模型,两者都是一种规范,各个虚拟机都有不同的实现方式,JMM模型模仿的是CPU缓存模
阅读全文
摘要:线程是什么?在计算机设计初期,并没有线程的概念,只有进程,linux系统下没有真正意义的线程,只有进程,c语言中的fork函数可以开辟一个新的进程,新的进程将对父进程进行内存拷贝,相当于复制全新的一个父进程,全新的内存,进程间内存的独立使得进程间通信较为繁琐 由于进程间内存不共享,而我们做多进程操作
阅读全文
摘要:注解是设计框架时常用的工具,使用注解简洁明了,很多第三方框架都使用了它,如:Retrofit、EventBus等。注解的原理是编译期改变字节码,以配合APT来达到自动生成代码的目的 一、元注解 1.使用注解需要用到元注解,来指定注解的信息,一共有5个,主要使用的是下面两个: @Target:指定注解
阅读全文
摘要:JDK5提出了新特性:泛型。它允许我们在不知道变量类型的情况下,传入类型参数,在设计框架时,我们会大量的使用泛型,因为泛型的特性:动态,上下边界,编译检查等,特别适合架构设计 一、泛型上手 1.类属性使用泛型 定义泛型可以使用除关键字外的任意名字(遵循变量名的规则),使用"<泛型名>"来表示你需要使
阅读全文
摘要:对JVM的内存有了一定理解后,再来看JVM是如何加载类,以及Java的反射机制 一、类加载过程 有了前面的了解,我们知道Java文件先要编译成class文件,再由JVM加载class到方法区成为类元信息,最后实例化class对象,加载类的过程又可以细分为:加载、连接、初始化、使用、卸载 类加载生命周
阅读全文
浙公网安备 33010602011771号