- 博客(25)
- 资源 (15)
- 收藏
- 关注
转载 Java设计模式之访问者模式
访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定算法又易变化的系统。因为访问者模式使得算法操作增加变得容易。若系统数据结构对象易于变化,经常有新的数据对象增加进来,则不适合使用访问者模式。访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者。访问者模式将有关行为集中到一个访问者对象中,其改变不影响系统数据结构。其缺点就是增
2014-08-31 22:31:48 1130
转载 Java设计模式之适配器模式
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。首先,我们来看看类的适配器模式,先看类图:核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口时Targetable,通过Adapter类,将Source的功能扩展到Targetable里,看代码:
2014-08-31 21:29:05 937
转载 Java设计模式之工厂模式
一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 工厂模式在《Java与模式》中分为三类:1)简单工厂模式(Simple Factory):不利于产生系列产品;2)工厂方法模式(Factory Method):又称为多形性工厂;3)抽象工厂模式(Abstract Factory):又称为工具箱
2014-08-30 23:06:52 976
转载 【转】给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
题目:给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一样。现要求使用该函数构造函数rand7(),使函数rand7()可以随机等概率的生成1-7的整数。思路:很多人的第一反应是利用rand5() + rand()%3来实现rand7()函数,这个方法确实可以产生1-7之间的随机数,但是仔细想想可以发现数字生成的概率是不相等的。rand()%3 产生0
2014-08-26 21:58:31 1788
转载 sleep 和wait 的区别
1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。sleep不出让
2014-08-26 20:48:07 1012
转载 MySQL性能优化
优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。 2.降低 CPU 计算 除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了。order b
2014-08-24 21:56:28 1360
转载 Java实现定时调度的三种方法
1、TimerTimer myTimer = new Timer(); myTimer.schedule(new Worker(), 1000);//1秒后执行 // 2012-02-28 09:58:00执行 myTimer.schedule(new Worker(), new SimpleDateFormat("yyyy-MM-d
2014-08-24 17:48:59 35211 1
转载 JAVA类库中的设计模式
创建型设计模式抽象工厂模式特点:创建方法返回一个可以用来创建抽象类或接口的工厂类。javax.xml.parsers.DocumentBuilderFactory#newInstance()javax.xml.transform.TransformerFactory#newInstance()javax.xml.xpath.XPathFactory#newIns
2014-08-24 12:34:15 1804
原创 JUC中线程池的使用
ThreadPoolExecutorThreadPoolExecutor的完整构造方法的签名是:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, ThreadFactory threadFactory,
2014-08-23 23:42:01 3924 1
转载 ZooKeeper 节点类型
ZooKeeper 节点是有生命周期的,这取决于节点的类型。在 ZooKeeper 中,节点类型可以分为持久节点(PERSISTENT )、临时节点(EPHEMERAL),以及时序节点(SEQUENTIAL ),具体在节点创建过程中,一般是组合使用,可以生成以下 4 种节点类型。持久节点(PERSISTENT)所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动
2014-08-21 23:31:48 48259 1
原创 基数排序Java实现
public class RadixSort { public static void sort(int[] number, int d) {//d表示最大的数有多少位 int k=0; int n=1; int m=1;//控制键值排序依据在哪一位 int[][] temp = new int[10][number.leng
2014-08-19 21:45:38 1243
转载 CAP原理
1.CAP概述CAP理论是由EricBrewer教授提出的,在设计和部署分布式应用的时候,存在三个核心的系统需求,这个三个需求之间存在一定的特殊关系。三个需求如下:C: Consistency 一致性A: Availability 可用性P:Partition Tolerance分区容错性CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求
2014-08-11 22:36:29 1764
转载 设计模式
设计模式主要分三个类型:创建型、结构型和行为型。 其中创建型有: 一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。 三、Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化
2014-08-10 22:58:53 783
转载 java设计模式之模板方法模式
解释一下模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用,先看个关系图:就是在AbstractCalculator类中定义一个主方法calculate,calculate()调用spilt()等,Plus和Minus分别继承Abstract
2014-08-10 22:55:24 827
转载 java设计模式之责任链模式
责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。先看看关系图:Abstracthandler类提供了get和set方法,方便MyHandle类设置和修改引用对象,MyHandle类是核心
2014-08-10 22:51:59 781
转载 java设计模式之命令模式
意图:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作动机:将”发出请求的对象”和”接收与执行这些请求的对象”分隔开来。效果:1)、command模式将调用操作的对象和实现该操作的对象解耦2)、可以将多个命令装配成一个复合命令,复合命令是Composite模式的一个实例3)、增加新的command很容易,无需改变已有的类
2014-08-10 22:44:27 704
转载 java设计模式之迭代器模式
MyCollection中定义了集合的一些操作,MyIterator中定义了一系列迭代操作,且持有Collection实例,我们来看看实现代码:两个接口:[java] view plaincopypublic interface Collection { public Iterator iterator();
2014-08-10 22:27:39 773
转载 java设计模式之观察者模式
MySubject类就是我们的主对象,Observer1和Observer2是依赖于MySubject的对象,当MySubject变化时,Observer1和Observer2必然变化。AbstractSubject类中定义着需要监控的对象列表,可以对其进行修改:增加或删除被监控对象,且当MySubject变化时,负责通知在列表内存在的对象。我们看实现代码:一个Observer接口:
2014-08-10 22:16:48 594
转载 java5线程并发库学习之Semaphore
Semaphore的作用类似Lock的功能,不同的是Semaphore的构造函数中可以传入一个int型的参数,用来确定创建一个多大的通道。Lock一次只允许一个线程进入,解锁后才允许别的线程进入。而Semaphore可以允许多个线程同时进入,一旦有线程释放就会空出一个位置让另外的线程进入。相当与Lock是一个单车道,而Semaphore是一个多车道。
2014-08-07 22:11:02 939
原创 mahout bayes源码分析总结
最近在学习mahout,首先从最简单的bayes分类入手研究了一下源码,有谬误之处欢迎批评指正。一、贝叶斯分类条件概率P(A|B) 表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为P(A|B)= P(AB)/ P(B)。该公式说明了如何计算已知B发生的前提下A还要发生的概率。贝叶斯定理解决了现实生活里经常遇到的问题
2014-08-06 22:25:46 4279 1
转载 ConcurrentHashMap原理
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。 实现原理 锁分离 (Lock Stripping) ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些
2014-08-03 21:17:26 759
how to create my appids · XX-net_XX-Net Wiki · GitHub.pdf
2018-03-09
libevent源码深度剖析.pdf
2011-07-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人