随笔分类 - [20]DesignAnalysis设计分析
-
实战最简单的CQRS
摘要:实战最简单的CQRS背景有些刚接触CQRS的朋友容易被Event Sourcing带到沟里去,其实CQRS和Event Sourcing没有直接的关系,本篇文章我就介绍一种不用Event Sourcing的CQRS。最简单的CQRS架构架构图关键思路一、Comamnd和Query采用完全不同的组织思路。二、Command执行后如果希望返回数据给UI,同步的使用Query进行查询。三、Command和Query采用一个数据库。代码示例下载地址:http://yunpan.cn/Q5bkD3wmVXBpv(访问密码:9c16)。运行效果主要代码TestDynamicQueryController. 阅读全文
-
zuitu团购模板引擎浅析
摘要:zuitu团购模板引擎浅析接触过最土的朋友应该很熟悉 最土模板解析功能主要由 include/function/template.php文件完成 ,就是通过正则的替换,捕获来完成而已,与smarty的原理类似。下面分析下他的正则替换。 在template.php文件中有这段代码 1 function __parse($tFile,$cFile) { 2 3 $fileContent = false; 4 5 if(!($fileContent = file_get_contents($tFile))) 6 return false; 7 8 ... 阅读全文
-
谈谈代码健壮性之极限值处理
摘要:谈谈代码健壮性之极限值处理我们知道,web开发的数据不断在数据库端、服务器端、客户端进行传递。 我们为了防止脏数据,我们需要对每个数据项的极限值进行特殊的处理;或者,换个角度来讲,为了我们的代码更加的健壮,我们不得不考虑所有与业务相关的极限值的处理。 这里的”极限值处理“的定义比较宽泛,如 1> 处理空值(如null/undefined/''等) 2> 处理数据类型 3> 处理数据范围 4> 其他与业务相关的特殊值或范围的处理 在这里,我仅仅说说有关前端方面的极限值的处理情况。主要包含两点: 1> 页面显示的极限值处理 2> JavaScri 阅读全文
-
CQRS + DDD + MDP 实现快速应用程序开发
摘要:CQRS + DDD + MDP 实现快速应用程序开发背景企业需要“快速的”和“高质量的”交付应用,采用传统的三层架构+数据驱动开发可以带来快速交付,但是高质量视乎无从保证,这篇文章我谈谈我准备如何应对这种需求。思路CQRS + DDD + MDP(元数据驱动编程)看图解说从读和写的角度思考一些问题。UI层的编码量占据了整体的50%-80%(我自己的经验)之间。UI层的主要目的是展示,即读取。UI层团队的开发人数比例不符合他们的编码量(企业应该加大对UI层人才的投资和引进)。UI层团队的编码水平相对较差(我自己的经验,我见过好的UI人员,月薪2W)。UI层在代码级别相对容易抽象和重用(企业应用 阅读全文
-
数据结构之栈(Stack)与队列(Queue)
摘要:数据结构之栈(Stack)与队列(Queue)(本文为个人学习数据结构课程和三年磨一剑的<<大话数据结构>>后的笔记,如有侵权,请直接联系我,立即删除)(杯具了,昨天写的保存的时候,着急了没看,早上来看没有发布成果,只有从头再写一遍了)一.栈(Stack) 1.定义:仅在表尾进行插入和删除操作的线性表 2.栈的抽象数据类型: ADT栈(Stack) Data 同线性表.元素具有相同的类型,相邻元素具有前驱和后继关系. Operation InitStack(*S): 初始化操作,建立一个空的栈. DestoryStack(*S):... 阅读全文
-
千万级并发连接的秘密
摘要:千万级并发连接的秘密既然我们已经解决了过万并发连接(C10K concurrent connection problem)的问题,现在如何升级到支持千万级的并发连接?你会说:“不可能”。不,现在,一些系统通过使用一些不广为人知的先进技术,已经能够提供千万级的并发连接。为了明白这是如何实现,我们找到了Errata Security的CEO——Robert Graham和他在Shmoocon 2013上精彩绝伦的演讲——C10M Defending The Internet At Scale(译者注:FQ的同学可以去看看)。Robert解决这个问题的方法如此技艺高超,此前我从未听说过。他首先讲了一 阅读全文
-
元数据驱动界面,支持三级配置
摘要:元数据驱动界面,支持三级配置背景信息系统开发中,配置表格、树和表单的过程占据了开发的近一半的时间(可能更多),如果要支持运行期间修改配置,如:修改表格布局、表单布局、查询面板,就会更加花费时间。这篇文章我就介绍一下如何使用元数据驱动UI的开发。思路支持三级元数据配置:生成期配置:使用代码生成器生成,只能由生成器修改。运行期配置:使用配置修改器修改,运行期由维护或实施人员修改。开发期配置:由开发人员维护。三级配置,由上到下优先级越来越高,下级继承上级同时覆盖上级。如下图所示:实现配置 + 代码生成器生成器项目结构generated/Metadata.ejs生成后的应用项目结构user/app/v 阅读全文
-
CQRS:CQRS+AJAX架构 之 查询(Q)模型设计
摘要:CQRS:CQRS+AJAX架构 之 查询(Q)模型设计背景准备采用CQRS架构,之前也简单的应用过(只是把读和写在程序级别进行了分离),这篇文章是我最近几天的思考,写下来希望大家多提意见。这篇文章不会涉及Command端的设计,重点关注如何设计查询。真心的希望大家看完后能给出你们的意见和想法。什么是CQRSCQRS:Command Query Responsibility Separation。我喜欢职责分离,这也是我采用这种架构的原因,确实能带来单一职责的优点。简单的CQRS复杂的CQRSCQRS的常见查询需求下面是系统的一些查询需求:查询面板高级查询数据行级别的权限如:个人、部门、分公司 阅读全文
-
2013 北京 QCon热点分享
摘要:这是第二次参加在北京的 QCon 会议了,有了上次的美好回忆,对今年的各项主题也都有了更高的期许,今年还是一如既往的紧贴当下最热的技术,如新锐语言Go、Erlang,以及移动领域,从敏捷到团队,从编程语法到架构设计,再加上今年新加入的用户体验与产品设计,涵盖的内容相当广泛,总让人感到分身乏术,下面就我参加的几个有价值的专题做一个简单的介绍:# Programming Style and Your Brain -- Douglas Crockford这是整个会议的开篇,看到Douglas Crockford这个名字,我想大概学过 Javascript 的人都知道何等之牛气了,他是JSON、JSL 阅读全文
-
发布订阅模式 之 同步订阅、异步订阅和离线订阅
摘要:发布订阅模式 之 同步订阅、异步订阅和离线订阅背景事件驱动解除了发布者和订阅者之间的耦合,在UI层面,我明经常采用这种编程理念。服务器端最近也开始流行起来了,我也一直小范围的在采用。今天就跟大家分享一下我写的一个小框架。框架原理一张图片胜过前言万语。代码示例下载地址:http://yunpan.cn/Q5SUcWdiA2mmk。项目结构关键代码TestEvent.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threa 阅读全文
-
推荐系统算法
摘要:推荐系统算法Netflix在网上举办了一个挑战赛,奖励100万美元向全世界选手提出一套电影的推荐系统,RMSE比当前系统小10%的最优秀的那支队伍将获得该奖项。 但是如何评价一个更好的推荐系统?What do we mean by better? 在Netflix Prize,对系统的性能评价使用了用户对电影的实际评分与推荐系统对每部电影预测评分之间的RMSE。如果说我们希望向人们展示他们可能对某部电影会有多喜欢,那RMSE越小自然越好。然而,这很可能不是我们想要的。用户实际关注的很可能是他们最喜欢的top-K部电影,至于他们不喜欢的电影,误差大一些无所谓。 chen_1st在他的博客中举了个 阅读全文
-
优化网站设计系列文章总结和导读
摘要:优化网站设计系列文章总结和导读概述其实想写这方面的文章由来已久,这个系列文章的想法是参照雅虎团队提供的35条性能优化的最佳实践(其实最早的时候是14条),再结合我自己多年的实际工作经验,结合具体的开发平台(ASP.NET),为读者提供既有理论知识、又有实践指导的参考资料,对于优化而言,本身是一个长期细致的工作(没有所谓的银弹),并且重在权衡利弊,选择最适合自己项目情况的解决方案。而要达到这样的目标,就需要对网站设计优化有较为系统的认识,知其然、也知其所以然,然后才可以熟练地运用它们。我从4月30日开始写这个系列,到今天(5月20日)已经全部写完,主要利用了假日、周末以及晚上的时间),虽然比较辛 阅读全文
-
总体设计
摘要:总体设计系列目录MVC实用架构设计(〇)——总体设计MVC实用架构设计(一)——项目结构搭建、使用MEF实用IOCMVC实用架构设计(二)——EntityFramework-Code First(1):UnitOfWorkMVC实用架构设计(二)——EntityFramework-Code First(2):RepositoryMVC实用架构设计(二)——EntityFramework-Code First(3):实体关系MVC实用架构设计(二)——EntityFramework-Code First(4):实体仓储MVC实用架构设计(二)——EntityFramework-Code Firs 阅读全文
-
Design Thinking -- 设计思维
摘要:Design Thinking -- 设计思维Know what Design Thinking is about/什么是设计思维“Design thinking is a human-centered approach to innovation that draws from the designer's toolkit to integrate the needs of people, the possibilities of technology, and the requirements for business success.” —Tim Brown, president 阅读全文
-
我的网站之一(搭建网站架构)
摘要:我的网站之一(搭建网站架构)前言 自己在博客园也游历了一年左右,对博客园中博友们发的博文每天也是多多少少也看了不少,自己也从中获益不少。因为自己现在是在做.net网站的,所以对网站也是多多宜善。也看到许多大神们自己的开源网站、开源架构,当然了其中有太多都没看懂,自己几斤几两自己也很清楚。有时候也经常写几个简单的小demo,但是做整个网站,还真是没有过。这几天自己也一直在想,要自己也做一个网站,肯定能从中获得更多的乐趣和知识。先不说自己做什么样的网站,自己这两天花了一点时间,在想自己网站的一个简单的架构吧。因为自己懂得毕竟还少,所以设计能力肯定还是很有限度的,当然要尽我所能了,同时更是希望广大. 阅读全文
-
优化网站设计(十九):减少DOM元素的数量
摘要:优化网站设计(十九):减少DOM元素的数量前言网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议。这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题。作为通用的原则,雅虎的工程师团队曾经给出过35个最佳实践。这个列表请参考 Best Practices for Speeding Up Your Web Sitehttp://developer.yahoo.com/performance/rules.html,同时,他们还发布了一个相应的测试工具Yslowhttp://developer.yahoo.com/yslow/我强烈推荐所有的网站开发人员都应该学 阅读全文
-
优化网站设计(十八):预加载内容
摘要:优化网站设计(十八):预加载内容前言网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议。这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题。作为通用的原则,雅虎的工程师团队曾经给出过35个最佳实践。这个列表请参考 Best Practices for Speeding Up Your Web Sitehttp://developer.yahoo.com/performance/rules.html,同时,他们还发布了一个相应的测试工具Yslowhttp://developer.yahoo.com/yslow/我强烈推荐所有的网站开发人员都应该学习这些最佳 阅读全文
-
领域驱动(DDD)实战1
摘要:领域驱动(DDD)实战---月份类YearMonthNet中有一个DateTime结构类,涉及时间和日期,这个类大量使用。可是,他的名称已经显著的表明他是表达某个具体的时刻。当我们不需要每天的具体时间时,如:我的程序逻辑仅仅需要年月(发工资的周期?),这个DateTime显得有些累赘,甚至不合用。一般人们解决的方式,仍然使用DateTime而从数据上,设置hour,mintue等等为0。 然而,这与DDD的理念相背,名称有与含义有偏差,另外,数据一致性的维护,散布在各个角落,如,保证日期始终为1,小时,分钟为0。另外,与月份相关的功能,如:得到下一个月份,要么用DateTime本身的功能(Ad 阅读全文
-
小网站架构优化:从100并发抗到4000并发
摘要:小网站架构优化:从100并发抗到4000并发前言:很久前,在512M内存+Access的VPS里,写过了一个经典的秋色园技术原理解析系列。后来的某一天,换上了1G内存+MSSQL2000,秋色园又跑过了一个多年头。之后,秋色园和CYQ.Data,也在一直默默的优化和改进,只是没写什么文章分享分享。秋色园的架构,基本上从简单到复杂最后又回归简单,不断做着减法,去掉了好多以前用于减轻负载的算法,包括AOP+SQLite分压和文本分压等机制,还有一些缓存式算法。好多时候,硬件不给力,这时候就会被逼着把整个系统架构复杂化。一当硬件给力时,系统轻装上阵,架构可以更简单。因为本质就是请求+返回(硬件能加速 阅读全文
-
对.NET系统架构改造的一点经验和教训
摘要:对.NET系统架构改造的一点经验和教训投递人itwriter发布于 2013-05-12 19:45评论(2)有248人阅读原文链接[收藏]«» 文/范凯 在互联网行业,基于 Unix/Linux 的网站系统架构毫无疑问是当今主流的架构解决方案,这不仅仅是因为 Linux 本身足够的开放性,更因为围绕传统 Unix/Linux 社区有大量的成熟开源解决方案,覆盖了网站应用扩展的方方面面。 我记得十几年前第一波互联网浪潮的时代,采用 Windows/.NET 架构的大型网站是非常普及的,而如今采用 .NET 架构的知名网站已经凤毛麟角了。特别是除了微软自身旗下的网站 MSN 阅读全文