公告 公告:  祝大家在虎年里,虎虎生威!生意红火,事业有成!当然,还有爱情大丰收 *__*
CSBlogV2.11问题收集与信息反馈   ;   CSCMSV1正式上线公测
CSWave系列官方QQ群:24301472(最新版的一般都先发布在共享里哟) 。
[ 一线风 | 2009-10-23 12:00:07 | 阅读: 693 | 分类: 项目文档 ]

转自:http://www.infoq.com/cn/articles/ebay-scalability-best-practices

在eBay,可伸缩性是我们每天奋力抵抗的一大架构压力。我们所做的每一项架构及设计决策,身前身后都能看到它的踪影。当我们面对的是全世界数以亿计的用户,每天的页面浏览量超过10亿,系统中的数据量要用皮字节(1015或250)来计算——可伸缩性是生死交关的问题。

在一个可伸缩的架构中,资源的消耗应该随负载线性(或更佳)上升,负载可由用户流量、数据量等测量。如果说性能衡量的是每一工作单元所需的资源消 耗,可伸缩性则是衡量当工作单元的数量或尺寸增加时,资源消耗的变化情况。换句话说,可伸缩性是整个价格-性能曲线的形状,而不是曲线上某一点的取值。

可伸缩性有很多侧面——事务的方面、运营的方面、还有开发的方面。我们在改善一个Web系统的事务吞吐量的过程中学到了很多经验,本文总结了其中若 干关键的最佳实践。可能很多最佳实践你会觉得似曾相识,也可能有素未谋面的。这些都是开发和运营eBay网站的众人的集体经验结晶。

新窗口 阅读全文及评论...

[ 一线风 | 2009-6-25 13:54:23 | 阅读: 847 | 分类: 项目文档 ]

权限系统里要有一些枚举和Int之间的转换,现测试一下,看看情况.呵~ 情况还是不错的!

1000000次测试结果:
4 <第三代权限判断方法>
255 
4 <第二代权限判断方法>
28 <第一代权限判断方法>


看来枚举与int之间的转换消耗可以忽略呀.

新窗口 阅读全文及评论...

[ 一线风 | 2009-6-8 13:49:29 | 阅读: 1942 | 分类: 项目文档 ]

一直在想,可是进度不是很尽人意呀.
目前的想法是:
1. 具体模块的权限设定写在配置文件里.通过类似于反射或是反序列化来映射到不同的模块上(可动太增加,这样多少插件来了也不怕)
2. 权限验证要灵活,不能像现在这样写死在方法里了(典型的面向过程编程呀).初步想到可能要用到工厂方法模式[目前本人这方面欠缺,正在学习中]

-----------无奈的分割线---------------

今天[2009-6-8]想到,为什么我们要把权限绑定到角色上呢? 如果反过来呢? 比如某一方法(或是模块)用的权限,我给一个资源Id(Gid) 然后将这个Gid和角色映射起来(应该也能用到OO里面的重载来实现)! 这样,新的模块出来了,只需要分配新的Gid和新的角色映射即可,而不是再预先想到某些模块可能用到什么权限.

可能说的不是很清楚,不过大家有什么好点子,欢迎提出来呀!

 

新窗口 阅读全文及评论...

[ 一线风 | 2009-4-21 17:22:06 | 阅读: 2615 | 分类: 项目文档 ]

Xhtml设计文档采用的是UTF-8编码,而Js则是直接创建的文本文件(默认ANSI)编码的. 结果折腾了好久,老是在IE下提示有一行缺少"}" ,而在FF下是正常的. 把Js编码改为UTF-8 结果正常. 哎~~~ 折腾.

新窗口 阅读全文及评论...

[ 一线风 | 2009-4-20 14:33:35 | 阅读: 753 | 分类: 项目文档 ]

CSCMS正式开工了, 里面有用到样式的切换,看到动网的办法是直接写的javascript, 因为最近看了一下JQuery发现真的是小巧精悍,比较喜欢.就用上了.先放出来,嘿嘿,最学乍练的.有啥不对的提出来.

jquery.formStyle.js
  1. /**  
  2. * author : atwind  
  3. * url       : http://max.cszi.com  
  4. * use     : $(function(){$(".objClassName").formStyle({className:"button_on"});};  
  5. **/  
  6.   
  7. $.fn.formStyle = function(options) {   
  8.     var settings = {   
  9.         version             :   '0.10',    
  10.         onEvent             :   'hover'//focus,blur,hover is default   
  11.         className           :   ''  //事件发生时切换的样式   
  12.     };   
  13.     if(options) {   
  14.         $.extend(settings, options);   
  15.     }   
  16.        
  17.     var eStyle = settings['onEvent'] ;   
  18.     if(eStyle == 'hover')   
  19.         this.hover(function(){$(this).addClass(settings['className']);},function(){$(this).removeClass(settings['className']);});   
  20.   
  21.     if(eStyle == 'focus')   
  22.         this.bind(function(){$(this).addClass(settings['className']);});       
  23.            
  24.     if(eStyle == 'blur')   
  25.         this.bind(function(){$(this).removeClass(settings['className']);});   
  26.            
  27. };   
  28.   
  29.   
  30.   
  31.   

新窗口 阅读全文及评论...

[ 一线风 | 2009-3-5 15:18:34 | 阅读: 1079 | 分类: 项目文档 ]

还是权限部分的东东,因为要一个个的手选实在是太麻烦了,为什么不用JQuery呢?

JavaScript代码
  1. <script language="javascript" type="text/javascript" src="/Scripts/jquery-1.2.6.pack.js" ></script>   
  2. <script type="text/javascript">   
  3. <!--   
  4. //全部   
  5. function unCheckAll () {   
  6.     $("input:checkbox").attr('checked'false);   
  7. }   
  8.   
  9. //组选中   
  10. function unCheckGroup(clas,isCheck){   
  11.     $("."+clas).each(function(){    this.checked = isCheck;});   
  12. }   
  13. //-->   
  14. </script>  

新窗口 阅读全文及评论...

[ 一线风 | 2009-3-5 11:56:04 | 阅读: 819 | 分类: 项目文档 ]

这几天在写权限的时候,使用Xslt的转换过程中,因为要在Xpath表达式中用使用变量来进行路径筛选,想当然用的使用 <xsl:value-of select="$Permission/$Name" /> ($Name是在循环中已经获取值的变量) 当然,出错了.

网上查了一下,好像也没有这种类似的选择, 准备用choose来手动写的时候,早上问了一下slightboy,结果问题就解决了,嘿嘿~~~ $Permission/*[name()=$Name](这种是查找出Permission下一级的名字为变量$Name的) ,  $Permission/@*[name()=$name] (这种是查找出Permission下一级属性的名字为变量$Name的) 嘿嘿,简单的循环就搞定一大片.

plus:这些天真是郁闷,天天下雨,最近还晚上下雨,我的鞋子呀,已经一个多月了,还是湿的,昨天晚上还把被单给都淋湿了.哎~~~~

新窗口 阅读全文及评论...

[ 一线风 | 2009-3-2 11:18:52 | 阅读: 736 | 分类: 项目文档 ]

对象定义
数据对象 (Data Object)
数据存储对象 (Data Access Object)
业务对象 (Biz Object)
业务对象工厂 (Object Factory)
共用逻辑对象 (CommonLogic Object)
应用对象 (Application Object)

结果对象 (ResultObject) 
架构

新窗口 阅读全文及评论...

[ 一线风 | 2009-2-26 14:44:12 | 阅读: 793 | 分类: 项目文档 ]

在CSBlog中的配置文件里,保存的是序列化后的Xml文档格式的信息,这种方式的好处是意义明确,易于扩展,并且不需要不停的修改数据库的字段.只要改变了程序,就能自动的进行升级.

在XML文档与对象的互相转换过程是,CSBlogV2.11以前的版本都是在方法里手动处理的,这样做不利于复用并且也比较容易出错,所以在今后的版本中,所有的要序列化成XML数据保存的对象都继承一个XmlComponentBase类.

XmlComponentBase
  1. public abstract class XmlComponentBase   
  2.     {  
  3.         #region 与String类型的互相转换   
  4.   
  5.         /// <summary>   
  6.         /// 转换为标准的Xml文档   
  7.         /// </summary>   
  8.         /// <returns></returns>   
  9.         public string ToXml()   
  10.         {   
  11.             return Serializer.XmlSerializerToXml(this);   
  12.         }   
  13.            
  14.         /// <summary>   
  15.         /// 序列化成Xml的文本片断   
  16.         /// </summary>   
  17.         /// <returns></returns>   
  18.         public override string ToString()   
  19.         {   
  20.             return Serializer.XmlSerializerToText(this);   
  21.         }  
  22.  
  23.         #endregion   
  24.   
  25.        }  

此类有两个方法,一个是ToXml()生成标准的XML文档保存至数据库,ToString()方法是生成Xml的片断,以挂接在要输出的进行转换的XML中.

新窗口 阅读全文及评论...