码农翻身杂记

  1. JDBC的介绍一节体现了:面向接口、工厂方法、反射等;

  2. 分布式事务:
    2.1 两阶段提交(需要一个全局的事务管理器,第一阶段准备,第二阶段提交或放弃);
    2.2 Base模型,即降低实时一致性,而考虑最终一致性,将操作写在消息队列中

  3. 消息队列
    应用系统间做异步
    生产者-消息队列-消费者
    订阅-发布
    配置和代码分开

  4. Java 动态代理:
    声明式编程,在运行期对类进行“修改”–在运行时动态得创建新的类。
    jdk代理是对接口进行代理。
    在调用方看来,是调用接口,并不会意识到是动态创建的代理类。需要添加的行为需要实现InvocationHandler接口,相当于在运行时进行拦截,从而创建新的类。
    Proxy.newProxyInstance,就是动态生成一个类。
    应用:Spring AOP

  5. 注解,也可以说meatdata就是描述数据的数据;元注解,就是注解的注解。
    基于注解和XML各有千秋,灵活应用。
    需要集中配置的用xml

  6. 泛型和继承
    ArrayList<? extends Fruit>

  7. 日志系统,现在一般用slf4j(抽象层,其下层可以用各种日志系统)+logback。
    logger
    appender
    formatter

  8. ComapareandSwap是一条硬件指令,操作系统和硬件能保证院子执行。
    Atomatic类
    AtomaticReference可能会有什么ABA问题

  9. 在使用AtomaticXXXX类实现非阻塞算法之前,先看看有没有提供现成的Concurrentxxx类。

  10. Spring 装饰者模式,动态代理

  11. 多个资源加锁要牢记,一定要从最大的开始加锁。

  12. 虚拟地址,物理地址

  13. 中断的方式其实是一种异步的、事件驱动的处理思想

  14. DMA进行IO设备和内存之间的直接数据传输

  15. 内存只是一个个可以读写的格子,CPU简单到只能做4件事情–对寄存器读取数据,写入数据,数学运算和逻辑运算,根据条件进行跳转

  16. 检测和设置锁的操作是一个不可分割的原子操作

  17. 自旋锁虽然能实现互斥的访问,但是不能通信进入同一个函数(递归),简称不可重入。
    增加计数器

  18. 信号量用来解决互斥锁在消费者生产者同步问题的互相等待问题
    信号量就是一个整数,基于这个证书有两个操作,wait和signal。

对于生产者-消费者问题,可以直接使用BlockingQueue
19. 尾递归:
当递归调用时函数体重最后执行的语句,并且它的返回值不属于表达式的一部分时,叫做尾递归。不会存在栈溢出的问题。

显示 Gitment 评论