Mybatis
基本概念MyBatis是个什么东西在使用MyBatis的项目里,日志中往往会出现很多拼接SQL语句的log,这其实说明了MyBatis底层还是使用JDBC来实现的。在JDBC的基础上,为了性能考虑,所有的语句都是基于SqlSession。顾名思义,维护这个类的实例其实就是维护了一
基本概念MyBatis是个什么东西在使用MyBatis的项目里,日志中往往会出现很多拼接SQL语句的log,这其实说明了MyBatis底层还是使用JDBC来实现的。在JDBC的基础上,为了性能考虑,所有的语句都是基于SqlSession。顾名思义,维护这个类的实例其实就是维护了一
SOLID原则是为了写出可复用、可扩展、高内聚、低耦合的代码。 单一职责原则(The Single Responsibility Principle,SRP) 开放关闭原则(The Open Closed Principle,OCP) 里氏替换原则(The Liskov Sub
JavaScript http://bonsaiden.github.io/JavaScript-Garden/zh/ google https://g2.wen.lu/ http://jgoproxy.tk/ https://www.guge.xxx/ https://g.l
Spring自动注入模型 No(Spring 默认模式) Bean引用需通过 来指明 byName byType 如果找到多个符合条件,抛出异常;如果没有找到,该属性值不会被设置。 constructor 和 byType 类似,应用在构造参数;如果没有找
pom.xml12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758<?xml version="1.0" enc
4种关键策略:为了降低Java开发复杂性,Spring采取了以下4中关键策略: 基于POJO的轻量级和最小侵入性编程; 通过DI和面向接口实现松耦合; 基于切面和惯例进行声明式编程; 通过切面和模板减少样板式代码。 Spring优点 低侵入式设计,代码污染低; 独立于各种应用
多线程间并发控制 内部锁 重入锁 读写锁 信号量 Volatile 保证有序性 当前线程对volatile变量的修改,可被其他线程所见 ReentrantlockReentrantlock称为重入锁。它比synchronized拥有更加强大的功能,它可以中断、可定时。在高并发
观察者模式(发布/订阅模式)定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 观察者模式解除了主题和具体观察者的耦合,让耦合的双方都依赖于抽象,而不是依赖具体。 适用场景 当一个对象的
优点 方便开发,开发者可以对生产者和消费者进行单独编码,它们仅仅通过共享对象通信。 生产者无需关心消费者是谁,有多少消费者;消费者同理; 生产者和消费者可以各自已不同速度工作,不会发生生产者还没生产完成该物品,消费者就去消费的bug; 将生产者和消费者功能上分开更利于写出
竞态条件多线程对一些资源的竞争的时候就会产生竞态条件,如果首先要执行的程序竞争失败排到后面执行了,那么整个程序就会出现一些不确定的bugs。这种bugs很难发现而且会重复出现,因为线程间的随机竞争。一个例子就是无序处理。 竞态条件是并发产生的 Bug,这些Bug 是多线程在同一时