理解JavaScript原型模式
理解原型模式原型模式简单点说就是各个实例共享一个原型对象。JavaScript实现原型模式非常简单,直接用个prototype就实现了。新建实例里面保存了指针指向同一个原型对象,而与构造函数没有关系,参考原型图:
理解原型模式原型模式简单点说就是各个实例共享一个原型对象。JavaScript实现原型模式非常简单,直接用个prototype就实现了。新建实例里面保存了指针指向同一个原型对象,而与构造函数没有关系,参考原型图:
为什么使用executor框架 线程生命周期的开销:线程比较少的情况使用new Thread(task)无多大影响,但是如果涉及到线程比较多的情况,应用的性能就会受到影响,如果jdbc创建连接一样,new Thead创建线程也会耗资源、耗时间的。 资源的消耗量:活动线程会消耗系统
现在这个工作年限了,不会一点concurrent包中的东西都不好意思出去面试了,这也算是刺激学习concurrent包最大原因了。其实从java的发展历史来看,和collection包一样,concurrent包同样对JDK都产生了里程碑式的影响,Doug Lea设计的concu
理解设计模式的最好方法就是在实际框架代码中去学习,看别人是怎么实现的,以及在哪种场景中使用这种模式。mybatis源码中也使用了一些设计模式,把目前发现的模式做个记录:
官方文档介绍ResultMap标签时,用了比较大的篇幅说明这个属性的强大与重要性,但也是最复杂的: The resultMap element is the most important and powerful element in MyBatis. It’s what al
最开始学习mybatis的时候对这两个表达式有疑惑,但一直没有深入去研究,直到最近的一个项目,测试安全的同学测试到有SQL入侵的问题,那时心里就下决心一定要把这个问题搞明白,虽然看似非常初级的一个小问题,但作为一个互联网项目却是致命的错误。记得以前在W公司工作的时候,有个同事因为
mybatis解析xml时完成参数对象或者结果集对象等初始化,在执行流程中又要去动态修改这些对象的属性,所以单独设计了一套反射工具包,这些类封装在reflection包中,mybatis处理SQL参数或者结果集的时候几乎都有反射包的身影,这些主要类之间的依赖关系如下:
创建动态SQL动态SQL作为mybatis最强大的功能之一,比起其他数据层的框架可以在开发中少很多麻烦,再也不用纠结多条件查询等问题了。在最新的mybatis版本,动态标签只有if、choose(when、otherwise)、trim(where、set)、foreach,同时
不管mybatis还是其他开源项目,只要了解到它的执行流程,再分步骤看代码,思路就变得清晰多了。因为查询要稍微复杂点,就已查询流程为例进行分析。mybatis其实就分两大步骤,第一初始化解析XML,第二执行SQL, 执行器的整个执行的步骤大概如下:SqlSessionFactor
以初始化xml为例进行分析,SqlSessionFactoryBuilder在执行builder方法的时候,就完成所有的初始化工作,由于初始化阶段,依赖的类很多,还是用类图来描述,初始化配置文件主要的类图如下: