策略

对象池common-pool2策略分析

人走茶凉 提交于 2019-12-17 20:28:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 上一篇: 对象池common-pool2分析 common-pool2策略 上一篇对象池common-pool2分析从三个主要的接口进行分析,这一篇将对源码进行详细的分析,力图找出对象池的管理策略.从之前的分析可以看出ObjectPool定义了对象池需要实现的功能,所以重点分析ObjectPool. GenericObjectPool:一般对象池 Generic KeyedObjectPool:可以根据key分组的对象池 SoftReferenceObjectPool:软引用对象池. GenericObjectPool public GenericObjectPool(PooledObjectFactory<T> factory, GenericObjectPoolConfig config) { super(config, ONAME_BASE, config.getJmxNamePrefix()); if (factory == null) { jmxUnregister(); // tidy up throw new IllegalArgumentException("factory may not be null"); } this.factory = factory; /

设计模式之行为型模式

Deadly 提交于 2019-12-17 19:19:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我们在前面已讨论了12种设计模式。其中涉及的是:变与不变,对变化如何处理,以及调用关系,对不可调用,如何方便实现成为可以调用。剩下的11个模式,都是与行为传递有关的,即不是变与不变的问题,也不是调用关系问题。而是调用流程控制的问题。这是因为,我们使用了类,使用了SOLID原则,调用流程不再是if else 或 switch case。 处理好这样的流程控制,则更易于我们的代码的简化。 Chain of Responsibility(责任链) :为解除请求的发送者和接受者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。 这样的做法,使得每一个类中的流程控制得以统一。并且,可以将这样的流程控制封装到对应的类中,而不是由调用者来处理,因而调用者不再需要了解这个链中有多少个程员,该按怎样的顺序调用。从而丢开了调用者与被调用者之间的紧密耦合。 实现方式:被调用者作为具体代码,其类中增加$next属性,保存下一个有责任的类。被调的方法中,判断,有没有$next,如果有,则调用$next中的同名方法。 总结:一次性同时调用多个类中的同一个方法。(类方法递归) 选择模式:通过类的链,实现方法选择的组合。 Command(命令) :将一个请求封装为一个对象

谈高考真题的使用(数学)

笑着哭i 提交于 2019-12-13 09:14:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在高三数学复习中,大家常说“以本为本,以纲为纲,高考真题当主粮”,就是以教材内容为根本,以“考试大纲”为准绳,以高考真题的训练为主线;抓住了本,把握了纲,训练有的放矢,我们的复习就会事半功倍。 高考数学试题难度相对稳定,考查形式的变化却是异彩纷呈,而变化中又有着一定的规律:全国试题与各省市试题的考试要求基本一致;题型除上海和江苏外,全国和其他各省市的试题模式是一样的;解答题中立体几何、解析几何、三角和概率题都是必有的,其他的主干内容时有时无。全国的几套试题大同小异,各省市的试题各有千秋。有的内容多卷共用,有的内容多年使用,如三角函数图象的平移和伸缩变换题,2008年有湖北卷第5题、天津卷第3题、安徽卷第5题,还有2007年山东卷第5题等。陈题新出也时常有之,如1998年全国卷第10题和2007年江西卷第8题就如出一辙。 那么,在高三数学复习中如何使用高考数学真题呢? 【暑假期间】刚刚结束新课进入复习的高三学生,对高考的了解还比较朦胧,这段时间,可以做2套本省市近3年的高考试题和1套全国或邻近地区当年的高考试题,多少分不重要,主要是体验高考氛围,感受高考试题模式和难度,初步了解自己的数学能力和水平,弄清自己的薄弱环节和解题缺点,为第一轮复习制订有针对性的复习计划。 【一轮复习

quartz在集群环境下解决方案

≯℡__Kan透↙ 提交于 2019-12-02 14:30:49
在集群环境下,大家会碰到一直困扰的问题,即多个 APP 下如何用 quartz 协调处理自动化 JOB 。 大家想象一下,现在有 A , B , C3 台机器同时作为集群服务器对外统一提供 SERVICE : A , B , C 3 台机器上各有一个 QUARTZ ,他们会按照即定的 SCHEDULE 自动执行各自的任务。 我们先不说实现什么功能,就说这样的架构其实有点像多线程。 那多线程里就会存在“资源竞争”的问题,即可能产生脏读,脏写,由于三台 APP SERVER 里都有 QUARTZ ,因此会存在重复处理 TASK 的现象。 一般外面的解决方案是只在一台 APP 上装 QUARTZ ,其它两台不装,这样集群就形同虚设了; 另一种解决方案是动代码,这样就要影响到原来已经写好的 QUARTZ JOB 的代码了,这对程序开发人员来说比较痛苦; 本人仔细看了一下 Spring 的结构和 QUARTZ 的文档,结合 Quartz 自身可以实例化进数据的特性找到了相关的解决方案。 本方案优点: 1. 每台作为集群点的 APP SERVER 上都可以布署 QUARTZ ; 2. QUARTZ 的 TASK ( 12 张表)实例化如数据库,基于数据库引擎及 High-Available 的策略(集群的一种策略)自动协调每个节点的 QUARTZ ,当任一一节点的 QUARTZ