buukle 我梦寐以求 是真理和自由

设计模式(4) -单例模式

当实例的应用场景是单例,并且创建和销毁的开销比较大,长时间应用的实例,考虑用单例模式;① spring依赖注入时,其注入实例都是单例的源码 : protected Object getSingleton(String beanName, boolean allowEarlyReference) { Object singletonObject = this.singletonObjects.get(beanName); if (singletonObject == null && isSingletonCurrentlyInCreation(beanName)) { synchronized (this.singletonObjects) { singletonObject = this.earlySingletonObjects.get(beanName); if (singletonObject == null && allowEarlyReference) { ObjectFactory<?> singletonFactory = this.singletonFactori

administrator administrator Published on 2021-06-18

设计模式(3) - 建造者

3 . 实例化参数较多时,考虑使用建造者模式(Biulder).①当初始化实例参数过多,并且不同场景需要构建多个不同个数参数的实例时,如果用多参数构造方法的话,容易引起不必要的选择成本,但是用Biulder的话,通过不同的Biulder方法,开发者将很容易区分API调用,获取理想的实例;②还有,当参数过多时,利用javabean,先用无参构造new出实例,然后再一个个set属性值这样也是可行的,但是这将实例化过程拆分开了,细究的话是有线程安全问题的.

administrator administrator Published on 2021-06-18

设计模式(1) - 工厂

通过继承或实现java.sql包下的Driver,并编写内部的逻辑,用户可以自由选择应用不同的Driver子类实例,并用该实例获取不同的Connection子类实例,达到访问不同数据服务的目的;而对于这些Connection实例的管理,又可以用池化的思想提升其利用率,优化使用性能

administrator administrator Published on 2021-06-18

设计模式(2) - 模板

2. 高扩展性场景考虑使用模板设计模式例如 java中,jdbc连接不同的数据库服务的实现.sun公司在最初想要用java实现集成连接所有数据厂商的数据服务软件,不过后来发现这是一件庞大到几乎不可能完成的事情.于是sun公司和数据服务厂商联合会议制定了jdbc接口规范,java负责给出数据库连接的规范,而不同的厂商则负责实现连接自身数据服务软件的部分即可,后来这部分被称作"驱动".其大致思路是java 在java.sql包中,给出了 Driver 接口规范,同时实现了 DriverManager 类,用来负责数据库驱动的注册(registerDriver),数据库连接的获取(getConnection);而Driver和Connection本身是接口类,其具体实现则有不同的厂商自己去实现,他们只需要继承这两个接口类,那么我们就能够在我们的application中调用数据服务,而不用去关心其具体实现细节.(1)客户端部分java.sql.Driver 部分源码 :package java.sql;public interface Driver { // 获取连接 Connection connect(String url, java.util.Properties info) throws SQLException;}java.sql.DriverManager

administrator administrator Published on 2021-06-18

mysql(3) - 锁机制

悲观锁(排它锁: 表,间隙,行);半乐观锁: 共享锁 ;乐观锁(update version)

administrator administrator Published on 2021-06-18
administrator administrator Published on 2021-06-01

mysql(2) - 隔离级别

MVCC(Mutil-Version Concurrency Control),就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。

administrator administrator Published on 2021-06-01

mysql(0) - 索引结构

针对于实际情况,操作系统在磁盘中读取数据并不是要谁读谁的,而是以磁盘块为单位(block),每次最少读取一个磁盘块大小的数据,不同的数据库引擎可以规定"页", 即每次读取的最小单位,大部分引擎默认是16k,和系统读取磁盘的最小单位 --磁盘块(block)是一致的.我们也可以用相应的命令设置页的大小.

administrator administrator Published on 2021-03-16