Daily Archives: 2011-11-01

nginx+tomcat+memcached+iphash 实现负载、容灾

2011-11-01 by Jinyang | No Comments | Filed in 工作认真

nginx+tomcat+memcached+iphash 实现负载、容灾 很成熟的方案,Session统一放在memcache,可以实现用户无感知的停机发布等,平滑切换节点

Tags:

使用memcached实现集群业务的用户业务锁

2011-11-01 by Jinyang | No Comments | Filed in 工作认真

为保证业务数据的一致性,防止出现脏数据,某个做了集群部署的业务需要控制某一个业务同一时刻只能有一个节点进行业务处理,刚好项目也使用了memcached,于是用memcached实现一个用户业务锁机制就是最简单的解决方案。

用Hg(Mercurial)做发布版本控制

2011-11-01 by Jinyang | No Comments | Filed in Uncategorized

以前在linux下用了rsync做文件改动监控和同步,现在的某项目在windows下,(虽然也有windows的rsync,没做测试,没敢用),想要实现文件的增量发布,文件夹变更监测,版本管理回退,综合这3个需求,Hg比较合适。

Tomcat、JAVA、Iframe、P3P跨域

2011-11-01 by Jinyang | No Comments | Filed in 工作认真

项目使用iframe来组织页面内容,之前因为虽然业务发布在不同的服务,但是也都是一个大域名的不同子域名,最近新增了一个外部的域名就出现了SSO登录总是提示不成功退出。 解决的过程: 1. 首先是确定只有IE下有问题,Chrome下完全正常,就把精力从代码逻辑转移到浏览器兼容上来 2.发现只要是使用ie右键新窗口打开页面,就可以成功的SSO,直接点击在iframe中则必然失败,怀疑到iframe上 3. 输出SessionID发现有多个不同的SessionID,搜“iframe Session不一致”发现很多提到跨域的SSO遇到此类问题,解决方案为增加P3P头 4. 直接在一个测试的JSP页面里增加P3P测试后无效,用  http://www.w3.org/P3P/validator.html  http://www.w3.org/P3P/  检测发现页面并没有输出P3P 5. 增加过滤器为页面设置P3P,测试,通过 以下为过滤器代码: 来源: http://blog.csdn.net/wdh226/article/details/6045337 import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class TransNameFilter extends HttpServlet implements Filter { private static Log logWriter = […]

订单安全控制

2011-11-01 by Jinyang | No Comments | Filed in 工作认真

1. 订单表的时间戳字段应使用 systimestamp timestamp 的秒片段(fractional seconds),就是秒向下的精度划分,默认为6,最大为9 ,设置字段类型为: timestamp(9)  即可 ,高精度的时间戳可以满足顺序记录订单的需求,毕竟一秒的订单数量大于1亿的可能性还是很小的 。 Timestamp(precision)的precision是指timestamp的精度 ,取值0-9,默认为6,而timestamp的精度达到billion(十亿)分之一秒,是以11个字节存储 取值时测试了: select systimestamp from dual; select CURRENT_TIMESTAMP(9) from dual ; select systimestamp(9) from dual; systimestamp  得到的精度是6位, CURRENT_TIMESTAMP虽然可以指定到9位,但是最后3位一直是000,所以虽然数据库是9位,但是取值好像达不到这么高精度,不过6位也可以满足业务。 systimestamp(9) 和  CURRENT_TIMESTAMP(9) 一样的最后3位都是000 官方文档显示: These are features in Oracl9i or later version.CURRENT_TIMESTAMP and CURRENT_DATE give session timestamp/date.SYSTIMESTAMP and SYSDATE give databse date.The two obviously may be in different timezones. […]

返回顶部