- 博客(9)
- 收藏
- 关注
多个数据库实体与另一实体使用一张表关联的问题 – 分析篇
最近在工作中遇到这样一个问题:多个数据库实体(以下简称“左侧实体”)要同另一实体关联。关于关联表的设计有如下两种方案。(业务背景是,多种实体有同样的权限控制模型)。 方案1:为每个左侧的实体建立一张与另一实体的关联表。方案2:只建立一个关联表,完成多个实体对另一实体的关联。需要使用额外的字段存储左侧实体类型。 乍一看,两种方式各有优缺点:某一方案的优点即另一方案的缺点,这里只列...
2011-02-09 08:06:54 660
可动态扩展的分库分表策略浅谈
一般的系统总是由小到大发展的。一开始使用一个数据库,而后逐渐扩展。在分库过程中经常使用对特定的键值进行hash的办法进行分库分表。但是使用hash来进行分库分表,在具体的应用中可能不能满足需求。比如,在SAAS平台下,不同租户的数据量是千差万别的,根据二八现象,20%的租户可能占用了80%的存储资源。如果使用hash算法,很可能导致数据分布不均匀。这里提出一个分库分表算法,解决SAAS平台...
2011-01-23 09:54:03 764
Eclipse的Dynamic Web Project与Maven的的整合
Eclipse的Dynamic Web Project支持直接热部署。通过部署到Eclipse内嵌的Server,可以立即看到修改后的效果,非常好用。Maven提供的依赖管理,便利的打war包命令,也非常好用。现在已经有很多如何让Maven支持热部署的方式,但是貌似我还没有找到让Eclipse的Dynamic Web Project结合Maven的资料。如果贸然将一个pom.xml丢进工程...
2010-12-14 09:37:58 311
Tomcat Session未过期导致的内存泄漏假象
在对Tomcat的多次压力测试中,在配置-Xmx512m情况下,发送25万多条,就会导致内存耗尽,频繁Full GC(最后几乎不能再响应任何请求,一直在Full GC),说明内存没有释放。尝试了Tomat 6.0.20和7.0.5,行为一致。开始猜测如下两种可能1. 内存泄漏2. 每次请求都消耗了一定资源(约2.5k),需要等待session过期才能释放。第一种可能性只是猜测,...
2010-12-07 20:23:42 534
TortoiseSVN与Win7索引服务冲突导致更新失败
在Win7下,用tortoiseSVN,update时,几乎每次都报如下错误 Cant’ move xxx\.svn\tmp\entries to xxx\.svn\entries 尝试了1. 清空整个目录,重试2. clean up3. 升级TortoiseSVN到最新版4. 关闭360文件实施监控 问题依旧。最后发现了篇博文http://hi.baidu.com...
2010-12-06 12:21:32 159
Spring RMI不支持返回参数的的引用传递
最近在做一个基于RMI的可扩展框架。由于Spring很是方便,便打算用Spring的RMI特性。但是在实现如下场景时,出现了问题:程序客户端希望通过RMI获取远程服务Master的Stub,而且要以远程调用的方式使用Master提供的Service。 public class Client { Master master; // 由Spring RmiProxyFactor...
2010-05-03 18:35:42 201
你所不知道的细节 - RollingFileAppender文件切换的确切时机
日志滚动是log4j简单好用的功能,只需要简单配置一个RollingFileAppender就可以了。在使用RollingFileAppender的时候,大家都会以为,日志将在临晨零时作日志切换,原来的日志文件被改名,新的日志文件被创建。这是个很合理的“想当然”推断。 但是事实不是这样的。日志的切换并不一定发生在零点,而是发生在:次日第一条日志写入的时候。网上几乎查不到RollingFileApp...
2010-03-24 22:28:53 312
原创 简单好用的任务队列溢出控制工具类
在实际的系统中,常常有这样的场景:把一个任务丢到一个任务队列(Task Queue)中,由另一个或多个线程异步执行。此时又想控制队列的大小(防止内存溢出或是业务逻辑需要);丢弃最老的任务,保护系统。 一般的做法是:[code="java"]ExecutorService threadPool = new ThreadPoolExecutor(corePoolSize, maxPoolS...
2010-02-15 08:09:35 165
原创 Calendar的clear的陷阱
今天在写一个流量控制的模块,要做一个根据输入的时间,获得下一天0点0分0秒的时间戳。[code="java"] public long caculateResetTimestamp(long currentTimestamp) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(currentTimest...
2010-01-30 17:32:42 1072
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人