JDBC的介绍一节体现了:面向接口、工厂方法、反射等;
分布式事务:
2.1 两阶段提交(需要一个全局的事务管理器,第一阶段准备,第二阶段提交或放弃);
2.2 Base模型,即降低实时一致性,而考虑最终一致性,将操作写在消息队列中消息队列
应用系统间做异步
生产者-消息队列-消费者
订阅-发布
配置和代码分开Java 动态代理:
声明式编程,在运行期对类进行“修改”–在运行时动态得创建新的类。
jdk代理是对接口进行代理。
在调用方看来,是调用接口,并不会意识到是动态创建的代理类。需要添加的行为需要实现InvocationHandler接口,相当于在运行时进行拦截,从而创建新的类。
Proxy.newProxyInstance,就是动态生成一个类。
应用:Spring AOP注解,也可以说meatdata就是描述数据的数据;元注解,就是注解的注解。
基于注解和XML各有千秋,灵活应用。
需要集中配置的用xml泛型和继承
ArrayList<? extends Fruit>日志系统,现在一般用slf4j(抽象层,其下层可以用各种日志系统)+logback。
logger
appender
formatterComapareandSwap是一条硬件指令,操作系统和硬件能保证院子执行。
Atomatic类
AtomaticReference可能会有什么ABA问题在使用AtomaticXXXX类实现非阻塞算法之前,先看看有没有提供现成的Concurrentxxx类。
Spring 装饰者模式,动态代理
多个资源加锁要牢记,一定要从最大的开始加锁。
虚拟地址,物理地址
中断的方式其实是一种异步的、事件驱动的处理思想
DMA进行IO设备和内存之间的直接数据传输
内存只是一个个可以读写的格子,CPU简单到只能做4件事情–对寄存器读取数据,写入数据,数学运算和逻辑运算,根据条件进行跳转
检测和设置锁的操作是一个不可分割的原子操作
自旋锁虽然能实现互斥的访问,但是不能通信进入同一个函数(递归),简称不可重入。
增加计数器信号量用来解决互斥锁在消费者生产者同步问题的互相等待问题
信号量就是一个整数,基于这个证书有两个操作,wait和signal。
对于生产者-消费者问题,可以直接使用BlockingQueue
19. 尾递归:
当递归调用时函数体重最后执行的语句,并且它的返回值不属于表达式的一部分时,叫做尾递归。不会存在栈溢出的问题。