- 博客(13)
- 问答 (1)
- 收藏
- 关注
转载 粗糙集理论应用的实例
在了解infobright时,其查询优化器的一个核心是使用粗糙集理论来做书数据节点的筛选,于是在网上查到一个广为流传的粗糙集应用实例,蛮有意思的 考虑一个数据库中的二维表如下:元素 颜色 形状 大小 稳定性 x1 红 三角 大 稳定 x2 红 三角 大 稳定 x3 黄 圆 小 不稳定 x4 黄 圆 小 不稳定 x5 兰 方块 大 稳定 x6 红 圆 中 不稳定
2013-07-26 07:03:36 4027 3
原创 Rolap的数据存储模式
常见三种数据存储模式:星型模式、雪花模式、宽表模式其中雪花模式很少用,个人认为,这种模式基本是以oltp的规范来做olap的设计,实际使用过程中存在诸多问题,实用性不强。宽表模式是目前我用的比较多的,即所有的维度都是退化维。整个cube转化成为一张宽表,维度表可有可无。这种方式在以前是无法实现的,因为表太大太宽(行数可能达到亿级,列数可以达到几百列),即便以oracle这样强大的数据库管理
2013-07-09 07:34:08 1153
原创 使用hashmap实现简单内存cache
下面这个基于map的简单内存cache是在去年一个项目中编写的,主要参考了ibatis的cacheModel源码,不过最终没有采用。缓存的策略选择和应用的负载情况息息相关,当时根据应用系统jvm的full gc频率和用户访问频次较低的特点,采用了SoftReference+LRU的缓存策略。 import java.lang.ref.SoftReference;import ja
2013-06-03 11:43:13 648
原创 chapter10 避免活跃性危险
1、死锁 JVM在解决死锁方面没有数据库那样强大,无法自动检测和处理死锁。往往只能通过中止并重启才能彻底恢复。 1)顺序死锁 public class LeftRightDeadLock { final Object left = new Object(); final Object right = new Object();
2013-06-03 07:21:16 428
原创 chapter7 取消与关闭2
1、“毒丸”对象 一种关闭生产者-消费者服务的方式就是使用毒丸对象。毒丸是指一个放在队列上的对象,其含义是:“当得到这个对象时,立即停止”。在FIFO队列中,毒丸对象将保证在关闭之前完成队列中的所有工作。 毒丸模式,也可以扩展为接收到N个毒丸之后才停止。 public class IndexingService { private static final
2013-05-31 07:04:43 429
原创 chapter7 取消与关闭1
java没有提供任何一种机制来安全的终止线程。但它提供了中断,这是一种协作机制,能够使一个线程终止另一个线程的当前工作。 这种协作机制是必要的,我们很少希望某个任务、线程或者服务立即停止,因为这种立即停止或使共享的数据结构处于不一致的状态。当需要停止时,应该首先清除当前正在执行的工作,然后再结束。 1、使用volatile来保存取消状态@ThreadSafe
2013-05-29 07:34:56 564
原创 chapter6 任务执行(Task execution)
1、Executor框架 基于executor来构建线程池替代硬编码的线程创建过程。 newFixedThreadPool:固定长度线程池。 newCachedThreadPool:可缓存的线程池,如果线程规模超过处理需求时,那么将回收空闲的线程,而当需求增加时,则可以添加新的线程,线程池的规模没有限制。 newSingleThreadPool:单线程的线程池。
2013-05-28 07:26:29 439
原创 同步容器类和工具类4——闭锁
1、闭锁 闭锁可以确保某些活动可以直到其他活动都完成之后才继续执行。 countDownLatch是一种灵活的闭锁实现。可以使一个或者多个线程等待一组事件的发生。public class TestHarness { public long timeTasks(int nThreads, final Runnable task) thr
2013-05-24 07:06:32 414
原创 同步容器类和工具类3——双端队列与工作密取
java6增加了2种容器类型,Qeque和BlockingQueue,它们分别对Queue和BlockingQueue进行了扩展。Qeque是一个双端队列,实现了在队列头和队列尾的高效插入和移除。具体实现包括ArrayDeque和LinkedBlockingDeque。 正如阻塞队列适用于生产者-消费者模式,双端队列适用于工作密取(work stealing)。在工作密取的设计中,每个
2013-05-23 07:15:38 1116
原创 同步同容器类和工具类2——阻塞队列和生产者-消费者模式
阻塞队列和生产者-消费者模式 阻塞队列提供可阻塞的put和take方法,以及支持定时的offer和poll方法,如果队列已经满了,那么put方法将阻塞直到有可用空间。如果队列为空,那么take方法将会阻塞直到有元素可用。队列可以是有界的也可以是无界的。 BlockingQueue简化了生产者-消费者设计的实现过程。它支持任意数量的生产者和消费者。一种常见的shench
2013-05-23 07:12:34 505
原创 同步容器类和工具类
1、同步容器类 vector和hashtable是jdk早期出现的两个线程安全的容器类。它们实现线程安全的方式是,将状态封装起来,并对每个公共方法都进行同步。 同步容器类虽然是线程安全的,但是在多个线程进行复合操作时,也会出现不安全的情况。例如同时执行getLast和delLast,可能会抛出索引越界异常,需要手工加锁。 public static object ge
2013-05-22 07:25:30 522
原创 阻塞队列和生产者-消费者模式
阻塞队列和生产者-消费者模式 阻塞队列提供可阻塞的put和take方法,以及支持定时的offer和poll方法,如果队列已经满了,那么put方法将阻塞直到有可用空间。如果队列为空,那么take方法将会阻塞直到有元素可用。队列可以是有界的也可以是无界的。 BlockingQueue简化了生产者-消费者设计的实现过程。它支持任意数量的生产者和消费者。一种常见的shench
2013-05-22 07:23:34 437
原创 《java并发编程》读书笔记--线程基础
线程的优势:1、发挥多处理器的强大能力,也可以提高单个处理器的吞吐能力(IO等待时并发处理任务)2、建模的简单性,复杂任务拆解成简单任务,通过框架解决线程管理的细节。3、异步事件的简化处理,例如非阻塞IO4、响应更灵敏的用户界面,事件处理独立线程执行,避免界面失去响应。线程带来的风险:1、安全性问题。即线程安全2、活跃性问题。死锁、饥饿、活锁3、性能问题。线
2013-05-21 06:48:39 589
空空如也
关于spring框架下po的初始化
2009-10-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人