随笔分类 - [20]DesignAnalysis设计分析
-
异步服务器框架设计
摘要:异步服务器框架设计2012-07-17 12:53 by zhenjing, 255 阅读,0评论,收藏,编辑缘起在网络编程中,经常出现如下场景:编写特定逻辑服务器,该逻辑服务器依赖于后端的N种服务器。比如需要获取N种服务数据,或者需要N个步骤。对于这样的应用,同步调用将导致逻辑服务器的性能极低,异步调用是首选。问题:如何抽象通用的异步服务器网络框架,降低编写特定逻辑服务器的工作量?分析要抽象这样的异步服务器网络框架,需要处理如下问题:1)session管理(通讯管理和数据管理);2)超时处理;3)异常处理;4)状态管理(流程抽象)。为了简化分析,从依赖单个后端服务器的情景开始分析。对于只需一 阅读全文
-
saas系统的三大要素
摘要:saas系统的三大要素saas的由来saas现在可能还是一个比较新的概念,或者说还不是那么普及,那么现在我们就来看一下saas的由来并且来看一下saas是不是以后软件发展的趋势。从做项目说起 软件公司从做项目开始,针对某个行业会针对性的做不同的项目,项目中包含的内容可能相当,也可能不相同,以XX公司为例,假设XX公司做办公自动化业务。这也就是传统的项目型结构,在项目型结构中,如下图:在图中可以看到,每个项目都会有不同的需求,其中很多是相同的,很多是不同的。比如功能1,功能3和功能5,这些是相同的。当这样的项目非常多的时候,我们就会从中发现很多相同的部分,于是就有了产品。软件产品 还是上面的公司 阅读全文
-
IRepository
摘要:最近有一个项目采用了EntityFramework,对于基本的增删改查操作,我们采用了传统的仓储模式(IRepository),但对于项目中的仓储接口的定义及实现上我认为存在部分缺陷。这个创建模式是以前同事编写好的,然后我们在新项目中利用它。 分页查询接口。 接口定义: IEnumerable<T>QueryByPage(Func<T,bool>FunWhere,Func<T,string>FunOrder,intPageSize,intPageIndex,outintrecordsCount); 接口实现: publicIEnumerable<T&g 阅读全文
-
Nginx反向代理IIS
摘要:最近服务器老是挂起,IIS莫名崩溃。事后看日志,发现是应用程序在写的时候很多异常,抛出未被接住,伤不起啊。想想每次服务器崩溃之后,被催到恢复的感觉,不爽。于是,想到了改变。前不久看到一技术贴,说可以用nginx反向代理IIS。好东东,nginx的轻量、稳定、灵活给我留下了相当好的印象。话不多说,直接开整吧。我的大体思路如下: domain0(Linux,nginx) | xen | | |domain1(IIS) domain2..... domainXdomain0:CETNOS、xen、nginx(部署地... 阅读全文
-
BtxCMS@B.T.X 项目及界面展示 [下载]
摘要:最近因为工作需要制作了一个系统 Spring.NET1.3.2+NHibernate3.2+MVC3,后台以easyui作为框架界面,个人感觉还是不错的,所以打算制作一个专题将自己这段时间以来的技术进行一个总结!欢迎大家互相交流热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给力。由于原先一直受Ext JS框架的licence所苦恼,于是痛下决心寻找一个完全免费的js框架——easyUI。它有完整的demo和强大AIP手册,使我在开发过程中得心应手。项目框架介绍:Spring.NET-1.3.2NHibernate-3.2MVC-3.0后台框架 使用jqu. 阅读全文
-
Google 图片下载工具
摘要:毕设做实验需要从网上下几万张图片,以前用师兄做的Flickr下载器,用Flickr的API完成的。但是Flickr上的图片是用户分享居多,通过指定的关键词去搜索,很多时候无法得到满意的图片。在Google、Bing上虽然能得到比较好的搜索结果,但是Google早早地停用了搜索的SDK,CodeProject上的例子是N年前的,试过都不能用了;Bing虽然现在还有SDK,但是看官方的通告,大约是8月份也要停用了,而且现在提供的下载限制每天一张,木有办法,只能自己想招了。 在查看Google图片搜索页面的源码时,发现在<a>的href属性里面包含了图片原始的url,所以就想到解析搜索结 阅读全文
-
多数据操作
摘要:设计模式--多数据操作一、前言 现在市场上的数据比较多,日常开发中也可能是需要使用多中类型的数据,开发中也许碰到换另外一种数据库,开发完了,还是会碰到客户说要换个数据库。这都是我们程序员经常碰到的坑爹的事情。虽然坑,但是客户是老大啊。我们还是需要改的。所以嘛,这个数据库访问上要考虑的严密些。二、思路 1、这个不管是Oracle、mssql、access啊,这都是有数据库连接、关闭、查询、修改啥的,这是都是公共的嘛,就都放在DBBase里了。 2、但是还有啊,你想啊,Oracle的参数是“:fieldName”mssql是“@fieldName”,Oracle我要用OracleConnec... 阅读全文
-
varnish反向代理
摘要:ports安装varnish, 在/usr/local/etc/rc.d/下有启动脚本,只要在/etc/rc.conf中加入varnishd_enable="YES"即可实现开机启动,可以修改下varnishd脚本符合自己的需要.man 7 vcl //显示varnish配置语言The VCL language is a small domain-specific language designed to be used to define request handling and document caching policies for the Varnish HTTP 阅读全文
-
RUP--迭代模型
摘要:迭代模型百科名片迭代模型思想示意图早在20世纪50年代末期,软件领域中就出现了迭代模型。最早的迭代过程可能被描述为“分段模型(stagewise model)”。迭代模型是RUP推荐的周期模型。被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求、分析设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。目录编辑本段什么是迭代模型 在现代过程方法XP(eXtrem. 阅读全文
-
WebKit
摘要:jz1108Webkit是如何加载网页的原文:How WebKit Loads a Web Page在WebKit渲染网页之前,它需要将页面和所有引用的资源加载完毕。其中会涉及到不同层面的工作。在本文中,我将重点关注WebCore(WebKit中主要渲染组件)是如何在加载过程中发挥作用的。WebKit包含两条加载流水线,其中一条负责将文档加载到frames当中,另一条负责加载其他资源(比如图片、脚本一类)。下图描述了两条流水线中涉及的主要对象。加载FramesFrameLoader负责将文档加载到frames当中,当点击链接时,FrameLoader会创建一个新的DocumentLoader对 阅读全文
-
WebCore
摘要:jz1108WebCore渲染之一:基础原文地址:http://www.webkit.org/blog/114/webcore-rendering-i-the-basics/不少人都对WebCore的渲染系统感兴趣,于是我准备了一系列的文章进行讲解,本文是该系列文章的第一篇。文档树网页会被解析成一个包含若干结点的树形结构,即文档对象模型(DOM)。树中所有结点的基类为Node。Node.h结点被划分为若干类型。与渲染代码相关的结点类型包括:Document(文档类):树的根节点总为文档。有三个文档相关的类:Document、HTMLDocument和SVGDocument。第一个用来表示除SV 阅读全文
-
常用的数据分页技术及比较
摘要:1.数据分页概述 • 通常在Web页面中,在数据量比较大时,无法在一个页面中显示所有数据 • 在某些特定场景下,并不需要返回所有满足条件的数据 • 从数据的角度看,需要返回指定范围内的数据2.数据层分页技术 • 在数据库查询时,只查询特定页面的数据 • 主要由T -SQL来完成 • 适用于比较大的数据表 • 优点:返回的结果集小,查询速度快 • 缺点:需要多次查询数据库3.数据层分页技术-使用临时表 • 在查询数据前,创建一个临时表 • 表的列比要返回的结果集多一个标识列 • 按照特定列排序,将结果插入到临时表中 • 此时,可以按照标识列返回特定页面4.数据层分页技术-... 阅读全文
-
HBase Shell
摘要:1.进入HBase Shell 命令:$ ${HBASE_HOME}/bin/hbase shell2.获得命令列表:hbase> help3.alter:1)表't1'中,增加或修改一个column family=> 'f1'并保持其最大版本数为5:hbase> alter 't1', {NAME => 'f1', VERSIONS => 5}2)删除表't1'中值为'f1'的column family:hbase> alter 't1', {N 阅读全文
-
MVC3+Spring.net+NHibernate+ExtJs的简单架构
摘要:对于MVC3、Spring.net、NHibernate、ExtJs等单个的技术点使用起来,并不是很复杂,出问题比较多的还是配置相关的问题;下面我们来一步一步的实现4个框架的融合配置;首先我们来谈谈4个框架的各自负责的事情:MVC3:最开始是用MVC2搭建框架,后来用VS12后,只支持MVC3的模板,就改为MVC3搭建了,MVC3兼容MVC2并且多加入了一种Razor视图引擎,但我们这个框架还是用ASPX视图引擎,言归正传;MVC的概念我个人的理解就是一种约定俗成,更深层次的理解还得各位看其他文章和多做练习来加深理解,在这个框架中,我们主要是用到Controller去后台取数,然后呈现到Vie 阅读全文
-
系统过载保护
摘要:前言:前段时间在网上看到腾讯后台开发总监bison分享的一篇文章《浅谈过载保护》,读来受益匪浅。刚好自己也在处理系统请求过载的问题,把自己的一些心得体会总结出来拿来与大家一起探讨。在bison的文章中谈到:对于延时敏感的服务,当外部请求超过系统处理能力,如果系统没有做相应保护,可能导致历史累计的超时请求达到一定的规模,像雪球一样形成恶性循环,由于系统处理的每个请求都因为超时而无效,系统对外呈现的服务能力为0,且这种情况不能自动恢复。我们的系统就是要尽量避免这种情况的出现,下面将详细来分析一个现实中的案例。一 有过载问题的系统数据处理流程: 1) 前端将请求发送给数据解析及转发系统, 2)数据解 阅读全文
-
浅谈如何利用配置方式配置SMTP发送邮件
摘要:浅谈如何利用配置方式配置SMTP发送邮件做多了网站平台,系统的人,都会或多或少遇到需要发送邮件这样的需求.前几天在做一个企业黄页平台,也用到了邮件发送这一块.但是担心有分站,又不想把SMTP直接写进code里,这样,修改起来太麻烦了有的都是放在数据库里但是,数据库里配置SMTP又有一点大材小用了有多少人的网站会有多个SMTP服务器呢?后来用了web.config里面的自定义配置节.分享一下我的实现方式首先,在web.config\configuration\configSections增加一个自定义配置节的声明。1<sectionname="Smtp"type=&qu 阅读全文
-
多平台适配的代码设计
摘要:一个成功的软件系统,往往需要根据需求在不同的系统平台上运行,为了解决系统在多个平台的移植带来的风险,业务架构往往会设计相应的平台适配层来隔离不同平台的差异,如何设计一个易于扩展的平台适配层,是软件设计人员需要考虑的问题。设计1:1: 提供平台接口文件os.h2:定义如下:#ifdef OS1#define OS_Fun OS1_Fun#endif#ifdef OS2#define OS_Fun OS2_Fun#endifvoid OS_Fun();3:通过定义不同的系统宏,这个头文件展开后也就成了对应的平台的接口层。4:业务代码直接调用OS_Fun()这个统一的接口即可。5:该设计只需要一个通 阅读全文
-
基于EF 4.3.1 Code First的领域驱动设计实践案例
摘要:EntityFramework之领域驱动设计实践【后续篇】:基于EF 4.3.1 Code First的领域驱动设计实践案例两年前我在博客中发布了《EntityFramework之领域驱动设计实践》系列文章,也得到了广大读者朋友的关注,在完成了系列文章的总结之后,也一直没有这部分内容的更新了。现在,Entity Framework的稳定版(就是那个Stable的版本,不是Entity Framework 5的beta版本)4.3.1已经逐步应用到各种.NET项目中,为了演示Entity Framework 4.3.1 Code First编程模式以及其它的一些.NET技术在领域驱动设计实践上的 阅读全文
-
浅谈缓存管理
摘要:缓存这个东西可大可小,小到一个静态的字段,大到将整个数据库Cache起来。项目开发过程中缓存的应用到处可见,在这篇博文中笔者就来谈谈自己的项目中关于缓存实现。 最常见的缓存功能,如C#语言中的Dictionary对象,应该至少包含以下几个功能:Init():缓存的初始化;如:Dictionary<int, object> dic = new Dictioinary<int, object>();Add():增加缓存;如:dic.Add(1, new object());Set():设置缓存 ;这里的Set()和Add()是有一点区别的,Add()的时候发现已存在的缓存, 阅读全文
-
nopcommerce计划任务分析
摘要:对比了一下nopcommerce和orchard的计划任务,orchard的复杂的不是一点点,如果想拆下来自己用难度很大,搜索拆了orchard的lucene处理模块,邮件队列拆的discuznt和nopcommerce的结合,计划任务就拆nopcommerce的了,discuznt计划任务设计的没nopcommerce的好。1.nopcommerce的tasks结构如下:IScheduleTaskService.cs 接口,这个主要是获取数据库里的任务信息,ScheduleTaskService.cs去实现它就可以了,当然需要在容器里注入一下。ITask 这个接口比较特别但是很重要,所有的任 阅读全文