自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 问答 (1)
  • 收藏
  • 关注

转载 粗糙集理论应用的实例

在了解infobright时,其查询优化器的一个核心是使用粗糙集理论来做书数据节点的筛选,于是在网上查到一个广为流传的粗糙集应用实例,蛮有意思的 考虑一个数据库中的二维表如下:元素 颜色 形状 大小 稳定性 x1 红 三角 大 稳定 x2 红 三角 大 稳定 x3 黄 圆 小 不稳定 x4 黄 圆 小 不稳定 x5 兰 方块 大 稳定 x6 红 圆 中 不稳定

2013-07-26 07:03:36 3923 3

原创 Rolap的数据存储模式

常见三种数据存储模式:星型模式、雪花模式、宽表模式其中雪花模式很少用,个人认为,这种模式基本是以oltp的规范来做olap的设计,实际使用过程中存在诸多问题,实用性不强。宽表模式是目前我用的比较多的,即所有的维度都是退化维。整个cube转化成为一张宽表,维度表可有可无。这种方式在以前是无法实现的,因为表太大太宽(行数可能达到亿级,列数可以达到几百列),即便以oracle这样强大的数据库管理

2013-07-09 07:34:08 1138

原创 使用hashmap实现简单内存cache

下面这个基于map的简单内存cache是在去年一个项目中编写的,主要参考了ibatis的cacheModel源码,不过最终没有采用。缓存的策略选择和应用的负载情况息息相关,当时根据应用系统jvm的full gc频率和用户访问频次较低的特点,采用了SoftReference+LRU的缓存策略。    import java.lang.ref.SoftReference;import ja

2013-06-03 11:43:13 633

原创 chapter10 避免活跃性危险

1、死锁   JVM在解决死锁方面没有数据库那样强大,无法自动检测和处理死锁。往往只能通过中止并重启才能彻底恢复。   1)顺序死锁      public class LeftRightDeadLock {    final Object left = new Object();    final Object right = new Object();

2013-06-03 07:21:16 416

原创 chapter7 取消与关闭2

1、“毒丸”对象   一种关闭生产者-消费者服务的方式就是使用毒丸对象。毒丸是指一个放在队列上的对象,其含义是:“当得到这个对象时,立即停止”。在FIFO队列中,毒丸对象将保证在关闭之前完成队列中的所有工作。   毒丸模式,也可以扩展为接收到N个毒丸之后才停止。   public class IndexingService { private static final

2013-05-31 07:04:43 416

原创 chapter7 取消与关闭1

java没有提供任何一种机制来安全的终止线程。但它提供了中断,这是一种协作机制,能够使一个线程终止另一个线程的当前工作。    这种协作机制是必要的,我们很少希望某个任务、线程或者服务立即停止,因为这种立即停止或使共享的数据结构处于不一致的状态。当需要停止时,应该首先清除当前正在执行的工作,然后再结束。    1、使用volatile来保存取消状态@ThreadSafe

2013-05-29 07:34:56 544

原创 chapter6 任务执行(Task execution)

1、Executor框架  基于executor来构建线程池替代硬编码的线程创建过程。  newFixedThreadPool:固定长度线程池。  newCachedThreadPool:可缓存的线程池,如果线程规模超过处理需求时,那么将回收空闲的线程,而当需求增加时,则可以添加新的线程,线程池的规模没有限制。  newSingleThreadPool:单线程的线程池。

2013-05-28 07:26:29 423

原创 同步容器类和工具类4——闭锁

1、闭锁  闭锁可以确保某些活动可以直到其他活动都完成之后才继续执行。  countDownLatch是一种灵活的闭锁实现。可以使一个或者多个线程等待一组事件的发生。public class TestHarness { public long timeTasks(int nThreads, final Runnable task) thr

2013-05-24 07:06:32 401

原创 同步容器类和工具类3——双端队列与工作密取

java6增加了2种容器类型,Qeque和BlockingQueue,它们分别对Queue和BlockingQueue进行了扩展。Qeque是一个双端队列,实现了在队列头和队列尾的高效插入和移除。具体实现包括ArrayDeque和LinkedBlockingDeque。     正如阻塞队列适用于生产者-消费者模式,双端队列适用于工作密取(work stealing)。在工作密取的设计中,每个

2013-05-23 07:15:38 1100

原创 同步同容器类和工具类2——阻塞队列和生产者-消费者模式

阻塞队列和生产者-消费者模式    阻塞队列提供可阻塞的put和take方法,以及支持定时的offer和poll方法,如果队列已经满了,那么put方法将阻塞直到有可用空间。如果队列为空,那么take方法将会阻塞直到有元素可用。队列可以是有界的也可以是无界的。   BlockingQueue简化了生产者-消费者设计的实现过程。它支持任意数量的生产者和消费者。一种常见的shench

2013-05-23 07:12:34 490

原创 同步容器类和工具类

1、同步容器类    vector和hashtable是jdk早期出现的两个线程安全的容器类。它们实现线程安全的方式是,将状态封装起来,并对每个公共方法都进行同步。    同步容器类虽然是线程安全的,但是在多个线程进行复合操作时,也会出现不安全的情况。例如同时执行getLast和delLast,可能会抛出索引越界异常,需要手工加锁。    public static object ge

2013-05-22 07:25:30 512

原创 阻塞队列和生产者-消费者模式

阻塞队列和生产者-消费者模式    阻塞队列提供可阻塞的put和take方法,以及支持定时的offer和poll方法,如果队列已经满了,那么put方法将阻塞直到有可用空间。如果队列为空,那么take方法将会阻塞直到有元素可用。队列可以是有界的也可以是无界的。   BlockingQueue简化了生产者-消费者设计的实现过程。它支持任意数量的生产者和消费者。一种常见的shench

2013-05-22 07:23:34 423

原创 《java并发编程》读书笔记--线程基础

线程的优势:1、发挥多处理器的强大能力,也可以提高单个处理器的吞吐能力(IO等待时并发处理任务)2、建模的简单性,复杂任务拆解成简单任务,通过框架解决线程管理的细节。3、异步事件的简化处理,例如非阻塞IO4、响应更灵敏的用户界面,事件处理独立线程执行,避免界面失去响应。线程带来的风险:1、安全性问题。即线程安全2、活跃性问题。死锁、饥饿、活锁3、性能问题。线

2013-05-21 06:48:39 578

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除