代码改变世界

.net 大型分布式电子商务架构说明

2015-10-28 10:08 by stulife, 7767 阅读, 8 推荐, 收藏, 编辑
摘要:背景构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控。架构演变 基础框架剥离 -> 分库分表 -> 基础服务建设 -> 私有云建设 ->分布式操作系统基础框架 整个公司无论有多少... 阅读全文

为什么要在服务层设计读写分离

2014-11-12 11:02 by stulife, 901 阅读, 1 推荐, 收藏, 编辑
摘要:先对上一篇比较erlang与go语言的话题作一个补充,我的一个架构师同事写了一段简单的累加代码测试erlang密集计算的性能,测下来erlang的计算性能大概是c#的1/10,这个符合我的预期,动态类型语言和静态类型语言的性能,差不多就是差10倍,所以,go语言还是大有可为的(go语言比python... 阅读全文

lambda表达式

2013-04-09 21:43 by stulife, 361 阅读, 0 推荐, 收藏, 编辑
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;namespace Test{ class Program { static void Main(string[] args) { DataTable table = new DataTable(); table.Columns.Add("DateTime"); table.Columns.A... 阅读全文

js时间操作扩展方法

2013-04-08 13:49 by stulife, 544 阅读, 0 推荐, 收藏, 编辑
摘要://时间操作Date.prototype.addYears = function (y) { var m = this.getMonth(); this.setFullYear(this.getFullYear() + y); if (m < this.getMonth()) { this.setDate(0); }};Date.prototype.addMonths = function (m) { var d = this.getDate(); this.setMonth(this.getMonth() + m); if (this.... 阅读全文

switch代码的进化 重构,至策略模式 工厂模式 插件模式 表驱动

2012-07-04 16:53 by stulife, 1363 阅读, 0 推荐, 收藏, 编辑
摘要:编程中经常遇到很多条件,以及条件套条件的情况,以至于一个方法会写得非常地长。有多种方法可以规避这个问题。比如反射,策略模式,表驱动等等。先抛开这些方法不讲,从根本需求来探索这个过程。一个switch结构可能是这样:swicth(case) case 1: //do1 break; case 2: //do2 break; .....这里注释的do部分代码可能会是很多很多行,以及嵌套switch,if结构。进一步,这个模型演化成swicth(case) case 1: do1(); break; case 2: do2(); break;... 阅读全文

C#委托的异步调用

2012-01-13 15:21 by stulife, 842 阅读, 0 推荐, 收藏, 编辑
摘要:本文将主要通过“同步调用”、“异步调用”、“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊。首先,通过代码定义一个委托和下面三个示例将要调用的方法:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/*添加的命名空间usingSystem.Threading;usingSystem.Runtime.Remoting.Messaging;*/ publicdelegateintAddHandler(inta,intb); 阅读全文

C#异步调用与线程总结

2012-01-12 10:26 by stulife, 1708 阅读, 0 推荐, 收藏, 编辑
摘要:委托调用、子线程程调用、与线程池调用1,委托调用(1),同步委托:委托的Invoke方法用来进行同步调用。同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。从下面的例子中可以看到,同步委托的执行是在主线程main中执行的,所以当执行委托时,当前工作会处于等待状态,开始执行委托,当委托执行完后在继续执行“当前工作”Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->publicdelegateint AddHand 阅读全文

设计模式之抽象工厂(AbstractFactory)

2011-11-27 20:14 by stulife, 482 阅读, 0 推荐, 收藏, 编辑
摘要:抽象工厂主要用来解决多个系列的对象实例问题。问题的应用场景(来源于李建忠老师的webcast讲座):如果有一款游戏,里面有"道路,房屋,隧道,丛林"这四类基本设施,而且不同的地图(比如中国区,印度区,欧美区)这些设施的风格各有特色,比如中国区应该是中国风格,印度区可能是古典风格,欧美区可能是现代风格...并且这些基本设施的风格还有可能会一直不断增加,作为程序员/架构师,您想如何让以后的维护/升级变得更轻松,比如新增加一种风格时,最好只要改改配置,顺便发个新的dll复制到安装目录就完事,而不是把原来的类似xxx = new ChineseStyleRoad(),全部改成xxx 阅读全文

Windows服务发布WCF服务

2011-04-14 15:44 by stulife, 11801 阅读, 2 推荐, 收藏, 编辑
摘要:第一步:建立Windows服务程序WindowsServiceHost第二步:向ConsoleBookServiceHost程序中添加两个引用:一个是WCF服务库Services项目的引用,另一个是System.ServiceModel引用。第三步:修改Service1的属性在Service1的设计界面中右击,选择“属性”,把其中的(Name)和ServiceName都改为BookServiceHost第四步:在Service1中编写代码如下第五步:配置App.Config。在这里我们不再详细说明如何配置了,我们直接把上一次SelfHostBookService项目中的App.Config复制 阅读全文

用DataTable 递归生成目录树

2011-03-03 12:25 by stulife, 3811 阅读, 0 推荐, 收藏, 编辑
摘要:static DataColumn column = new DataColumn(); static DataTable table = new DataTable(); static DataRow MyRow; ublic static DataTable GetCategoryTree(WebInfoBase info) { DataTable dt = info.List(_DefaultDB, "", "[ID],[Title],[ParentID],[ChildNum],[Depth],[OrderNo]", "&vers 阅读全文