- 博客(6)
- 收藏
- 关注
原创 SNS用户关系网络合并
在线社交网络相关应用的基本实现思路是将用户通过关系连接成关系网络, 用数据结构中的图来对关系网络建模。 有句话叫一个人可以通过六个中间人认识世界上任一陌生人。所以社交网络 会随着参与者的增加而急速膨胀,最终所有用户将关联在一张超大图中。 当两个独立用户群组A和B产生交集时,如何才能快速,有效地将两个图合并为一? 假设A包含10个用户,B包含100个用户,那么将A图合并入B
2015-10-12 21:01:23 8011 1
原创 SNS关系分析系统
前段时间做了一个SNS用户关系分析系统,维护用户的人际关系,提供用户添加好友,删除好友,查询好友,推荐好友,和指定人关系查询,计算结果缓存等功能。 1、包含功能点 1.1好友查询 查询出和特定用户互相添加为好友的用户,按照姓名排序列表形式返回。 1.2好友推荐 查询出和特定用户不是好友,但是用户好友的好友,通过关系远近排序,关系远近相同时通过姓名排序。 1.3两人关系查询
2015-10-10 18:03:50 10389
原创 服务上下文建造者模式构造实践
系统服务处理过程通常会有很多透传参数,每次请求实际使用到的参数不尽相同。将透传参数以服务处理上下文的形式存储在Threadlocal中,可以简化代码内部逻辑,避免参数的显示传递。服务处理上下文包含所有需要的参数,通过建造者模式在每次请求处理前只需构造当次需要的参数。 public class ServiceProcessContext { /** requestId */ p
2015-10-02 12:25:08 5499
原创 线程池最优大小的估算方法实践
线程池的理想大小取决于被提交任务的类型以及所部署系统的特性。线程池应该避免设置的过大或过小,如果线程池过大,大量的线程将在相对很少的CPU和内存资源上发生竞争,这不仅会导致更高的内存使用量,而且还可能耗尽资源。如果线程池过小,那么将导致许多空闲处理器无法执行任务,降低了系统吞吐率。 要正确设置线程池的大小,必须分析计算环境、资源预算和任务特性。包括所部署系统的CPU个数、内存大小、任务类型(计算
2015-10-02 09:40:45 5011 2
原创 hessian和xfire序列化反序列化使用注意
1、hessian 1)序列化 hessian序列化一个对象时,默认的序列化类是com.caucho.hessian.io.JavaSerializer。JavaSerializer的writeObject方法代码片段如下: try { out.writeMapBegin(cl.getName()); for (int i = 0; i
2015-10-02 08:13:26 8947
原创 本地事务异步恢复机制实现多数据源最终一致性
在传统关系型数据库的事务模型中必须遵守ACID原则,在单数据库业务下,ACID模型有效保障了数据的完整性,但是在大规模分布式环境下,一个业务往往会跨越多个数据库,如何保证这多个数据库之间的数据一致性,在JavaEE规范中使用2PC两阶段提交来处理跨DB环境下的事务问题,这套规范叫JTA,但是2PC是反可伸缩模式,事务处理过程中,参与者需要一直持有资源直到整个分布式事务结束,当业务规模达到千万级,2
2015-10-01 09:17:46 11934
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人