在C#中使用装饰器模式和扩展方法实现Fluent Interface
摘要:写在前面:之前,我有发布一篇题为《暂别博客园》的文章,在发布之后,得到了很多读者朋友的反馈意见,很多朋友希望我能够继续在博客园中撰写文章,综合考虑,我仍打算继续在博客园发表文章。同时会将文章收集到我的个人站点apworks.org上,欢迎读者朋友参阅。背景知识Fluent Interface是一种通过连续的方法调用以完成特定逻辑处理的API实现方式,在代码中引入Fluent Interface不仅能够提高开发效率,而且在提高代码可读性上也有很大的帮助。从C# 3.0开始,随着扩展方法的引入,Fluent Interface也更多地被开发人员熟悉和使用。例如,当我们希望从一个整数列表中找出所有的
阅读全文
接口继承中一个常见问题的思考
摘要:接口继承中一个常见问题的思考http://www.cnblogs.com/weiym/archive/2013/02/08/2909387.html以前在设计DirectUI界面库(该界面库现已开源, 可到这里下载)架构时,遇到一个接口继承相关的问题,当时没有太好的解决方案,却一直个耿耿于怀, 现在重新思考整理下。我们的DirectUI控件层次大概如下:其中, 类名以 I 开头的都是接口:IObject表示框架的基本接口, 要求实现类似COM里IUnknown的功能,IControl表示控件的基本接口, 所有控件都从该接口继承,IControlContainer表示容器类控件的基本接口,IBu
阅读全文
OOA/OOD 面向对象分析与设计
摘要:说到了框架、架构,就不得不先提分析与设计,谈到了DDD,又不得不谈OOA/OOD。我开始接触的时候,好像还没有那么多的名词了,至少是我不知道。我是从COM、COM+开始起步走客户服务器模型的。现在像我这个年龄还在Coding的人,估计在国内应该是越来越少了,说实话,我也累了,也想能够有新生的力量,一起把这条路一起走下去。还是切入正题一套框架,首先是一套方法论,离开理论支持的框架很难长久的发展下去,框架是长期积累的结晶。能够从需求沟通、流程方案、系统设计、快速开发、细调等各个环节,能够无缝的衔接起来,最好能够用同一种声音说话。BPM,我不知道在国内的项目里面,有多少个公司是真正的在用,当前都用到
阅读全文
DDD的模型选择
摘要:关于DDD的模型选择,应该是在05年的时候,从充血模型转换到贫血模型,那时候的资料太少,自己是通过项目体会出来的,架构经过这些年的升级改进,从模型方面这一块基本应该是不再有大的变化了。至少这些年的这么多项目,用起来非常顺手,从分析、设计、编码一路映射下来,现在又加个工作流、静态图,也只是对框架的完善。我说说自己的理解。//---------------------------------------说DDD,先上标准的图和解释: 1. 用户界面/展现层 负责向用户展现信息以及解释用户命令。更细的方面来讲就是: a) 请求应用层以获取用户所需要展现的数据; b) 发送命令给应用层要求其执行...
阅读全文
我的系统架构<数据库架构>
摘要:模块化分库1. 一个频道一个数据库:如商城库、公司库、分享库、团购库、优惠券库、问答库、活动库、论坛库、CMS库等。2. 一套大功能一个数据库:如核心库、历史库、统计库、队列库等。3. 一套子系统一个库:如OA库、仓储物流系统库等。大数据量分表如历史库中的表大多需要做分表处理(根据数据量大小按时间分表)。亦可利用SQL2008的分区表功能做分区表。提高扩展性如商城库根据需要可以分拆为商城基础库、商品库、订单库等。其他细节1. 主键使用数字ID,弃用GUID2. 除包含事务需要批量执行的SQL编写存储过程外,其他SQL均由程序维护。3. 尽量不做跨库查询,以降低个分库之间的耦合度提高扩展性。4.
阅读全文
LVS配置教程
摘要:LVS快速搭建教程LVS配置教程一、前言二、安装ipvs三、集群部署 1、使用VS/NAT调度 2、使用VS/TUN调度 3、使用VS/DR调度LVS配置教程作者:oldjiang一、前言相信专程来读此文的读者对LVS必然有一定的了解,首先看图:毋庸置疑,LoadBalancer是负载调度器,由它将网络请求无缝隙调度到真实服务器,至于此集群使用的是哪一种IP负载均衡技术(LVS有三种负载均衡技术,分别是VS/NAT、VS/TUN和VS/DR),暂时不用理会。观察此图,我们知道,LVS与其他基于应用层或基于IP层的负载均衡应用拥有类似的一点:一台及其以上的负载调度器和数台甚至成百上千台真实服务器
阅读全文
响应式设计专题
摘要:从去年开始,眼前就不断掠过到很多关于响应式设计(responsive design)的剪影,有响应式教程,响应式框架,响应式插件,响应式网站模板,响应式网站成品,真是帅的应接不暇。我们项目也收到了响应式设计的需求,然后,就在项目中用bootstrap跟Mr.Responsive(在下是小M,不好意思用了Mr)有了一次亲密接触,就愈发感觉Mr.Responsive的魅力,网站的质量一下子被拉高了一个层次,页面不再是一成不变了,而是看上去很通人性的,随着不同的环境,用最美的方式把页面展现给你。响应式设计赋予了页面生命力。(如果你对这位Mr.Response一无所知,可以先打开这个网站,smashi
阅读全文
浅淡Webservice、WSDL三种服务访问的方式(附案例)
摘要:WebserviceWebservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术。eg:站点提供访问的数据接口:新浪微博、淘宝。官方解释:它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。WebService是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问WebService,通过WebService内部执行得到所需结果.Web Service可以执行从简单的请求到复杂
阅读全文
数据类型
摘要:大多数程序设计语言都有数据类型的概念,数据类型指定义一组数据值以及在这些数据值上相关的一组操作。我们知道计算机通过操作数据来产生结果,决定计算机程序执行认为难易程度的一个重要原因是可提供的数据类型与真实世界问题空间的匹配程度。因此,一种语言能支持多样化的类型与结构就成为关键。数据类型的概念是从过去50年间发展过来的最早的语言仅支持少量的数据结构,如Fortran 90之前通常用数组来模拟链表及二叉树。COBOL允许程序员指定小树的精度,并通过记录提供一种结构化的数据类型,跨出了Fortran I模式的第一步。PL/I更是将精度说明的功能扩展到整数及浮点类型,该功能从此也被引进到了Ada和For
阅读全文
分库分表带来的完整性和一致性问题
摘要:在最近做的一个项目中,由于每天核算的数据量过于庞大,需要把数据库进行分库保存。当数据分散到各个库之后,带来的数据更新操作就会存在一个一致性和完整性的问题。下面是一个典型的场景假设目前存在三个物理库,现在有一个文件,里面有1W条数据,根据分库的规则,可以把文件里面的数据分到三个库中,现在需要保证这1W条数据要要完整的保存到这三个库里面,并且数据是一致性的,也就是说 三个库里面已导入的数据完全和文件里面的数据一致。正常情况下,我们先把文件里面的数据按照所属的数据库分成三份,然后针对每一份数据库进行保存,在单库的情况下,可以保证单库的数据完整性。但是三个库要保证一致性,就是非常复杂的一项工作,很有可
阅读全文
WEB站点性能优化实践(加载速度提升2s)
摘要:进行优化前,关键是剖析当前的web性能,找到性能瓶颈,从而确定最需改进的地方;如果精力有限,首先将精力放在能明显提升性能的改进点上;《高性能网站建设指南》提出了一个性能黄金法则:只有10%-20%的最终用户响应时间花在了下载HTML文档上;其余的80%-90%的时间花在了下载页面中的所有组件上。由于本文将实施一个完整的优化流程,所以,我们还是从后台开始;案例说明:优化之前的网站规模:2个js、一个页头、一个页脚;3个css;类型:博客类站点;后台逻辑简单;首页不到10个sql查询;首页html文档52kb;第一步:后台优化,启用页面缓存;实验站点首页后台逻辑并不复杂,不超过10个Sql查询,通
阅读全文
有效提高命中率的缓存设计
摘要:最近在做网站应用的优化那自然就涉及到缓存方面的处理,实际应用中不可能针对所有数据进行缓存,所以那些数据要优先缓存则变得非常重要.在.net提供一些缓存功能如缓存多长时间或依赖性缓存,但这种缓存方式都很有局限制,并不能达到缓存高命中率的数据.为了实现这点在开始设计缓存的时候采用了LRU算法.这种算法的主要作用是保存最近使用的数据,可以简单地使用一个双向链接结合哈希表来实现.当添加缓存或使用时候把对应的项移至链表头,通过一个计时器对链表尾进行扫描,把最后活动的数据进行清除.但这种设计似乎并不理想也很难达到缓存高命中率的数据,拿用户登陆为例实际上最后登陆的用户不一定就是非常活跃的用户,如小张是网站的
阅读全文
三层+临时表存储过程+巧用json+贱招图片加载+无刷新分页
摘要:三层+临时表存储过程+巧用json+贱招图片加载+无刷新分页1、加载数据 显示加载图片2、返回json数据以及分页字符串3、无刷新分页4、反射+泛型-->简单通用demo 之前有人质疑头脑风暴之 反射+泛型 构建 普通通用功能此文5、前台View Code6、后台View Code7、用到的存储过程和表?CREATETABLE[dbo].[userinfo]([id] [int] IDENTITY(1,1) NOTNULL,[username] [nvarchar](50) COLLATEChinese_PRC_CI_AS NULL,CONSTRAINT[PK_userinfo] PRI
阅读全文
实现SSO的一个初步想法
摘要:【自然框架之SSO】实现SSO的一个初步想法2013-01-21 09:02 by 金色海洋(jyk)阳光男孩, 1222 阅读,17评论,收藏,编辑单点登录呀单点登录。最近要做一个单点登录的功能,本来是不熟悉的,但是没办法硬着头皮上吧。好在有网络,有博客园。查找了好多资料,汇总一下得出了一种想法。基于cookies的一种sso的实现方式。先看图分为三块,用户的浏览器,网站应用和SSO登录验证。看过一些sso的资料,都是一个整体的流程,没有明显的显示,某个功能在哪一块实现的,看起来不是太方便。我觉得这个顺序图(时序图)能够更清晰一些,所以就采用了这种形式来表达我的想法。主要思路就是这样,这几天
阅读全文
QQ开放平台 OAUTH2.0 QqConnetSDK 登录,运行原理,附源码。
摘要:供大家研究使用,您可以对源代码进行修正编写。有很多不足,有很多缺点,在这里我只编写原理。您需要开放式站点,做为了解它,您需要编写补充很多,或者您可以按照我的使用提供下载,进行编写其余内容补充及修正。谢谢大家,让大家的站点也融合这玩意。开发环境:vs2005QqConnetSDK// 默认“Microsoft XML,v3.0”,其他版本也可以,只要能编译通过,步骤如下。// 添加引用 -> “COM” 选项卡 -> 找到组件名称为“Microsoft XML,v3.0”LoginToQQ.aspx 登录QQCallback.aspx 回调访问页面QqConnetSDK 项目sdk
阅读全文
前端开发框架
摘要:最近给公司的网站做了一套前端框架。公司的网站更像企业管理软件或者说是控制台,因此很多操作可以标准化,我借鉴了jQuery以及jqgrid的原理开发了一套适合于我们公司网站的前端框架,目前开发完了70%,基本的功能都已经实现,这里和大家分享下。 源程序下载地址: 由于博客园的文件上传有大小限制,我将源文件的压缩包放到了技术群的共享里了,群号是:262413025(我后面会找个容易下载的地址的~~~) 地址:http://pan.baidu.com/share/link?shareid=169939&uk=1342390306 编译好的war包地址: 由于博客园的文件上传有大小限制,我将.
阅读全文
构建一个前端库-做一个富客户端的基类
摘要:基类,我们需要一个基类。数据库访问我们通常有一个基类,用于操作的统一性。那么,我们现在需要一个富客户端的前端基类。为什么我们需要它。1.我们需要一个dom元素与javascript之间的桥梁。2.我们需要一个可伸缩布局的方案。3.它是可拖动的。4.它是可改变大小的。5.它是可参数化配置的。6.它是可绑定数据源的。7.它是可隐藏也可延迟加载的。我们需要这么一个基类,避免我们重复写很多相似的代码、我们一个一个来说它们的实现。1.构建桥梁通常我们都用document.getElementById来用javascript获取一个dom元素。但这里,我们富客户端的方案是用javascript生成dom对
阅读全文
企业级应用架构(NHibernater+Spring.Net+MVC3+WCF)_3.0
摘要:本架构在前一个版本的基础上进行了功能的升级,加上了常用的SOA应用部分,坚持将松散耦合、可扩展性、易维护性、可裁剪性进行到底。本架构依然站在福勒的肩膀上采用.Net技术实现其基本思想。系统在传统三层架构上新增了“传说中”的第四层,即“System Interaction(系统交互)”层. 较之前一个版本,本版本新增以下新亮点:1、新增架构对SOA应用的支持,使用WCF实现。2、Spring深度整合WCF。3、远程外观模式(Facade)应用。4、新增系统交互层。5、根据目标实际项目,架构可裁剪。6、数据传输对象模式(DTO)应用。代码:http://files.cnblogs.com/li..
阅读全文
12306购票之自动化提交初体验
摘要:12306购票之自动化提交初体验10年想自己建个网站练练手,于是上万网申请域名,为了找个稍微心仪的域名是伤透了脑筋。当时写了个很简单的自动提交表单的查询,是用webbrowser做的,分析表单数据累了个半死,倒也做出来个简单能用的,递归一直查询(a,b...z,az,ab...az...)单线程,并且万网有限制,查询间隔太快会被屏蔽,扫了很久也没扫到多少数据,然后就不了了之。12年南下深圳,在园子里看到各种对12306的思考及吐槽,打算做个简单的12306买票的小程序,也做过一些尝试,但由于自己太菜,遇到各种问题后停了下来。一晃晃过了世界末日,2013来了,买票的问题推到了眼前,硬着头皮开始编
阅读全文
一个非必现问题的定位和反思
摘要:系统背景:分布式消息架构,所有模块通过消息机制交互。问题现象:客户在界面执行业务的命令偶尔会失败。问题分析:1:表面看是消息无法发送,但经过消息平台定位,发现出错的时候消息内存被破坏。2:由于不是必现,没有什么错误日志,只有走读业务流程代码。问题定位:1:业务流程会申请一个消息包,结构大体如下:#define MAX_NUM 10struct { short userIns[MAX_NUM];//用户实例数组 short userNum; //有效用户数 };2:业务是实现一个用户监测功能,在一条消息中根据actionType取值不同表示启动和停止用户监测,代码流程如...
阅读全文