java
文章平均质量分 62
quick刀斩乱麻
follow for more
展开
-
JAVA的PCES
可以add()添加,但只能添加Apple对象或其任何子类(如RedApple对象),不能添加Apple的父类 (编译器无法确定List中所保存的是Apple的哪个父类型)。(编译器认为Apple的父类不一定能转成Fruit或Apple,因为编译器无法确定List中的Apple超类具体是哪一个);的List,所以编译器无法确定List中所保存的是Fruit的哪个子类型,就无法安全地向其中添加对象);Scala一个函数类型的子类,如何保证在里氏替换原则下类型安全:参数要逆变(-),返回值要协变(+).原创 2023-01-21 15:37:31 · 1887 阅读 · 0 评论 -
Java的Escape Analysis和锁优化
Java 程序运行时,JVM 会将.class字节码文件解释成机器能够识别的指令,逐条解释再执行的过程导致执行速度比可执行的二进制文件慢很多。为了解决这种问题出现了JIT(即时编译)技术。而在 JIT 的代码优化过程中,最重要的就是逃逸分析(Escape Analysis)。...原创 2022-08-15 13:12:29 · 182 阅读 · 0 评论 -
Java的多线程
当变量在线程a中被修改后,其它线程工作内存中该变量的值可以立即得知改变(使得变量的修改被安全地同步到主内存中,同时使得其他线程的工作内存中对该变量的缓存失效;这样的话,其它线程必须重新去主内存中获取变量的最新值,即表现为对其它线程立即可见)线程b已完成读取操作(不会再去主内存中取值),也在执行+1操作,等线程b执行完并回写到主内存后,i的值仍然是1。volatile关键字修饰的变量,生成字节码后会在变量前后生成内存屏障,指令重排时,不能把内存屏障后面的代码排到前面执行。1.保证线程间变量的可见性。...原创 2022-07-20 10:49:54 · 169 阅读 · 0 评论 -
Java的NIO
Linux的五种IO模型 阻塞IO:应用进程从发起IO系统调用,至内核空间中的数据就绪,这个期间处于阻塞状态。 非阻塞IO:应用进程发起IO系统调用后立刻返回。应用进程可以不断(轮询)发起IO系统调用,直至数据就绪,再将数据从内核空间拷贝到用户空间进行数据处理。(在拷贝数据的过程,进程仍然属于阻塞状态)。优点是进程发起I/O操作时,不会因为数据还没就绪而阻塞。缺点是增大了响应延迟,因为每过一段时间才会发起系统调用检查数据是否就绪,而任务可能在两次轮询之间的时间完成,这会导致整体数据吞吐量的降低;尤其是在原创 2022-02-04 15:23:59 · 630 阅读 · 0 评论 -
Java的设计模式
结构型模式 代理模式 代理模式是为其他类提供一种代理以控制对这个类的访问。我们不直接接触目标类,而是操作代理类,代理类再去操作目标类。因为不直接接触目标类,因此我们可以在代理类的同名方法中添加或删除功能模块,而不用去修改目标类的原方法。代理模式按使用场景又分为:远程代理,虚拟代理(lazyinitialization of memory rich or heavy objects)等。 静态代理: 需要提前实现接口编写代理类,在编译完成后代码运行前,代理类的.class文件就已经存在; 只能..原创 2021-11-08 16:17:11 · 251 阅读 · 0 评论 -
Spring的IOC和AOP
IOC Inversion of Control 是一种设计思想,Dependency Injection 是实现IoC的一种方法;没有IoC的程序中,我们使用面向对象编程,对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后对象的创建移交给第三方。在Spring中,对象由Spring来创建、管理和装配,程序本身不创建对象,只是被动地接收对象。 对象创建:默认使用对象的无参构造器,也可使用有参构造;配置文件加载时,容器中管理的对象就已经初始化了。 依赖注入: 利用对象原创 2021-11-02 20:48:07 · 122 阅读 · 0 评论